STM8L libraries for CR95HF 1.0
ISO15693/Products/inc/m24lrxx_command.h
Go to the documentation of this file.
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****/
 All Data Structures Files Functions Variables Defines