![]() |
STM8L libraries for CR95HF 1.0
|
00001 00023 #ifndef __M24LRXX_COMMAND_H 00024 #define __M24LRXX_COMMAND_H 00025 00026 /* Includes ----------------------------------------------*/ 00027 #include "iso15693_command.h" 00028 00029 00030 /* 00031 Uncomment the line below to access all the specific commands linked to energy harvesting products (M14LRXX-E) 00032 */ 00033 #define USE_ENERGY_HARVESTING_COMMANDS 00034 00035 00036 // Custom commands code 00037 #define M24LRXX_CMD_GET_MULTIPLE_BLOCK_SECURITY_STATUS 0x2C 00038 #define M24LRXX_CMD_WRITE_SECTOR_PASSWORD 0xB1 00039 #define M24LRXX_CMD_LOCK_SECTOR_PASSWORD 0xB2 00040 #define M24LRXX_CMD_PRESENT_SECTOR_PASSWORD 0xB3 00041 #define M24LRXX_CMD_FAST_READ_SINGLE_BLOCK 0xC0 00042 #define M24LRXX_CMD_FAST_INVENTORY_INITIATED 0xC1 00043 #define M24LRXX_CMD_FAST_INITIATE 0xC2 00044 #define M24LRXX_CMD_FAST_READ_MULTIPLE_BLOCKS 0xC3 00045 #define M24LRXX_CMD_INVENTORY_INITIATED 0xD1 00046 #define M24LRXX_CMD_INITIATE 0xD2 00047 // specific to energy harvesting devices 00048 #define M24LRXX_CMD_READ_CFG 0xA0 00049 #define M24LRXX_CMD_WRITE_EH_CFG 0xA1 00050 #define M24LRXX_CMD_SET_RST_EH_EN 0xA2 00051 #define M24LRXX_CMD_CHECK_EH_EN 0xA3 00052 #define M24LRXX_CMD_WRITE_DO_CFG 0xA4 00053 00054 // Constants for returning value 00055 #define M24LRXX_SUCCESS_CODE 0x00 00056 #define M24LRXX_ERROR_PARAMETERS_REQUEST_FLAGS 0x02 00057 #define M24LRXX_ERROR_CODE 0x01 00058 #define M24LRXX_BLOCK_SIZE_ERROR 0x00 00059 #define M24LRXX_ERROR_CRC 0xCC // arbritrary defined constant 00060 00061 00062 00063 00064 // Command error Code specific to M24LRXX family 00065 #define M24LRXX_SPECIFIED_BLOCK_READ_PROTECTED 0x15 00066 00067 00068 // others constants for commands specific to M24LRXX family 00069 #define M24LRXX_DEFAULT_BLOCK_SIZE 0x04 00070 #define M24LRXX_DEFAULT_SECTOR_SIZE 0x20 // in blocks 00071 // Mask for request flags 00072 // in order to force protocol extension flag and option flag to 0 00073 #define M24LRXX_MASK_REQUEST_FLAGS_NO_OPTION_EXTENSION_FLAG 0x48 00074 #define M24LRXX_MASK_REQUEST_FLAGS_NO_EXTENSION_INVENTORY_FLAG 0x0C 00075 #define M24LRXX_MASK_REQUEST_FLAGS_NO_OPTION_INVENTORY_FLAG 0x44 00076 #define M24LRXX_MASK_REQUEST_FLAGS_NO_OPTION_EXTENSION_INVENTORY_FLAG 0x4C 00077 #define M24LRXX_MASK_REQUEST_FLAGS_NO_OPTION_EXTENSION_INVENTORY_SELECT_FLAG 0x5C 00078 #define M24LRXX_MASK_REQUEST_FLAGS_NO_EXTENSION_FLAG 0x08 00079 #define M24LRXX_MASK_REQUEST_FLAGS_CMD_INITIATE 0x7C 00080 00081 00082 00083 // Constant for Security Status --------------------------------------- 00084 00085 #define M24LRXX_SECURITY_STATUS_BLOCK_LOCKED 0x01 00086 00087 // Constants for PASSWORD 00088 #define M24LRXX_SECURITY_STATUS_MASK_PASSWORD_CTRL 0x18 00089 // Password control bits 00090 #define M24LRXX_SECURITY_STATUS_NO_PASSWORD 0x00 00091 #define M24LRXX_SECURITY_STATUS_PASSWORD_1 0x08 00092 #define M24LRXX_SECURITY_STATUS_PASSWORD_2 0x10 00093 #define M24LRXX_SECURITY_STATUS_PASSWORD_3 0x18 00094 00095 // constants for read write protection 00096 #define M24LRXX_SECURITY_STATUS_MASK_READ_WRITE_PROTECTION 0x06 00097 // presenting password 00098 #define M24LRXX_SECURITY_STATUS_WITH_PASSWORD_READ_WRITE 0x00 00099 // others configuration 01 10 are also read write 00100 #define M24LRXX_SECURITY_STATUS_WITH_PASSWORD_READ_ONLY 0x06 00101 // without password 00102 #define M24LRXX_SECURITY_STATUS_WITHOUT_PASSWORD_READ_ONLY 0x00 00103 #define M24LRXX_SECURITY_STATUS_WITHOUT_PASSWORD_READ_WRITE 0x02 00104 #define M24LRXX_SECURITY_STATUS_WITHOUT_PASSWORD_NO_READ_NO_WRITE 0x04 00105 // 11 is also a no read no write configuration 00106 00107 // For energy harvesting -------------------------------------------------- 00108 // configuration byte 00109 #define M24LRXX_CONFIGURATION_BYTE_CURSOR 0x01 // into the tag structure 00110 00111 // Range 00112 #define M24LRXX_CONFIGURATION_BYTE_MASK_RANGE 0x03 00113 #define M24LRXX_CONFIGURATION_BYTE_RANGE_6_MA 0x00 00114 #define M24LRXX_CONFIGURATION_BYTE_RANGE_3_MA 0x01 00115 #define M24LRXX_CONFIGURATION_BYTE_RANGE_1_MA 0x02 00116 #define M24LRXX_CONFIGURATION_BYTE_RANGE_300_UA 0x03 00117 00118 //RF busy Write in progress 00119 #define M24LRXX_CONFIGURATION_BYTE_MASK_RF_WIP_BUSY 0x08 00120 #define M24LRXX_CONFIGURATION_BYTE_RF_BUSY 0x00 00121 #define M24LRXX_CONFIGURATION_BYTE_RF_WIP 0x08 00122 00123 //EH mode 00124 #define M24LRXX_CONFIGURATION_BYTE_MASK_EH_MODE 0x04 00125 #define M24LRXX_CONFIGURATION_BYTE_EH_ENABLED 0x00 00126 #define M24LRXX_CONFIGURATION_BYTE_EH_DISABLED 0x04 00127 00128 // Control Register 00129 #define M24LRXX_CONTROL_REGISTER_CURSOR 0x01 // into the tag structure 00130 #define M24LRXX_CONTROL_REGISTER_EH_ENABLE 0x01 00131 #define M24LRXX_CONTROL_REGISTER_EH_DISABLE 0x00 00132 //------------------------------------------------------------------------ 00133 00134 00135 u8 M24LRXX_Inventory(ISO15693_Tag* MyTag, const u8 Request_flags, const u8 Tag_AFI, 00136 const u8 MaskLength,const u8* Mask, u8* Inventory_16_slots_Nb_UID_Retrieved); 00137 00138 u8 M24LRXX_Stay_Quiet(const u8 Request_flags,const u8* Tag_UID); 00139 00140 u8 M24LRXX_Read_Single_Block(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID, const u16 Block_number); 00141 00142 u8 M24LRXX_Write_Single_Block(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID, const u16 Block_number, const u8* Data); 00143 00144 u8 M24LRXX_Read_Multiple_Block(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID, const u16 First_Block_number, const u8 Number_of_Blocks); 00145 00146 u8 M24LRXX_Select(ISO15693_Tag* MyTag,const u8 Request_flags, const u8* Tag_UID); 00147 00148 u8 M24LRXX_Reset_to_Ready(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID); 00149 00150 u8 M24LRXX_Write_AFI(ISO15693_Tag* MyTag, const u8 Request_flags,const u8* Tag_UID,const u8 Tag_AFI); 00151 00152 u8 M24LRXX_Lock_AFI(ISO15693_Tag* MyTag, const u8 Request_flags,const u8* Tag_UID); 00153 00154 u8 M24LRXX_Write_DSFID(ISO15693_Tag* MyTag, const u8 Request_flags,const u8* Tag_UID,const u8 Tag_DSFID); 00155 00156 u8 M24LRXX_Lock_DSFID(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID); 00157 00158 u8 M24LRXX_Get_System_Info(ISO15693_Tag* MyTag, const u8 Request_flags,const u8* Tag_UID); 00159 00160 00161 // Custom code command ------------------------------------------------------------- 00162 00163 u8 M24LRXX_Get_Multiple_Blocks_Security_Status(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID, const u16 First_Block_number, const u8 Number_of_Blocks); 00164 00165 u8 M24LRXX_Write_Sector_Password(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID,const u8 Password_Number ,const u8* Password); 00166 00167 u8 M24LRXX_Lock_Sector_Password(ISO15693_Tag* MyTag, u8 Request_flags, const u8* Tag_UID, u16 Sector_Number, u8 Sector_Security_Status); 00168 00169 u8 M24LRXX_Present_Sector_Password(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID,const u8 Password_Number ,const u8* Password); 00170 00171 u8 M24LRXX_Fast_Read_Single_Block(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID, const u16 Block_number); 00172 00173 u8 M24LRXX_Fast_Inventory_Initiated(ISO15693_Tag* MyTag,const u8 Request_flags, const u8 Tag_AFI, const u8 MaskLength, const u8* Mask, u8* Inventory_16_slots_Nb_UID_Retrieved); 00174 00175 u8 M24LRXX_Fast_Initiate(ISO15693_Tag* MyTag, const u8 Request_flags); 00176 00177 u8 M24LRXX_Fast_Read_Multiple_Block(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID, const u8 First_Block_number, const u8 Number_of_Blocks); 00178 00179 u8 M24LRXX_Inventory_Initiated(ISO15693_Tag* MyTag, const u8 Request_flags, const u8 Tag_AFI, const u8 MaskLength, const u8* Mask, u8* Inventory_16_slots_Nb_UID_Retrieved); 00180 00181 u8 M24LRXX_Initiate(ISO15693_Tag* MyTag, const u8 Request_flags); 00182 00183 00184 // Energy harvesting commands 00185 00186 00187 #ifdef USE_ENERGY_HARVESTING_COMMANDS 00188 00189 u8 M24LRXX_ReadCfg(ISO15693_Tag* MyTag, const u8 Request_flags,const u8* Tag_UID) ; 00190 00191 u8 M24LRXX_Write_EH_Cfg(ISO15693_Tag* MyTag, const u8 Request_flags,const u8* Tag_UID, u8 Configuration_Byte) ; 00192 00193 u8 M24LRXX_Write_DO_Cfg(ISO15693_Tag* MyTag, const u8 Request_flags,const u8* Tag_UID, u8 Configuration_Byte) ; 00194 00195 u8 M24LRXX_SetRst_EH_en(ISO15693_Tag* MyTag, const u8 Request_flags,const u8* Tag_UID, u8 Set_Reset) ; 00196 00197 u8 M24LRXX_Check_EH_En(ISO15693_Tag* MyTag, const u8 Request_flags,const u8* Tag_UID) ; 00198 00199 #endif 00200 00201 // ----------------------------------------------------------------------------- 00202 // Support functions ----------------------------------------------------------- 00203 00204 // Is test functions ----------------------------------------------------------- 00205 00206 u8 M24LRXX_Is_Request_Flags_ok(const u8 Request_flags, const u8 M24LRXX_cmd_code); 00207 00208 u8 M24LRXX_Is_Memory_programming_function(const u8 M24LRXX_cmd_code); 00209 00210 u8 M24LRXX_Is_Fast_Datarate_ok(const u8 Request_flags,const CR95HF_Protocol_Config* Protocol_Settings); 00211 00212 u8 M24LRXX_Is_Fast_Command(const u8 M24LRXX_cmd_code); 00213 00214 // Get parameters functions ---------------------------------------------------- 00215 00216 u8 M24LRXX_Get_Block_Security_Password_number(u8 Byte_Status); 00217 00218 u8 M24LRXX_Get_Block_Security_Read_Write_Protection_with_Password(u8 Byte_Status); 00219 00220 // Energy harvesting ----------------------------------------------------- 00221 00222 #ifdef USE_ENERGY_HARVESTING_COMMANDS 00223 u8 M24LRXX_Get_Energy_Harvesting_Range( u8 Configuration_Byte); 00224 00225 u8 M24LRXX_Get_RF_BUSY_WIP(u8 Configuration_Byte); 00226 00227 u8 M24LRXX_Get_EH_mode_Configuration_Byte(u8 Configuration_Byte); 00228 00229 u8 M24LRXX_Get_EH_mode_Control_Register(u8 Control_Register); 00230 #endif 00231 00232 //------------------------------------------------------------------------------ 00233 00234 u8 M24LRXX_Compute_Security_Status_byte(u8 Password_Number, u8 Read_Write_Protection_Password, u8 Read_Write_Protection_No_Password); 00235 00236 #ifdef USE_ENERGY_HARVESTING_COMMANDS 00237 u8 M24LRXX_Compute_Configuration_Byte(u8 RF_WIP_BUSY,u8 EH_Enable,u8 EH_Range); 00238 #endif 00239 00240 00241 #endif /*__M24LRXX_COMMAND_H */ 00242 00243 00244 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/