![]() |
STM8L libraries for CR95HF 1.0
|
00001 00023 #ifndef __ISO15693_COMMAND_H 00024 #define __ISO15693_COMMAND_H 00025 00026 00027 /* Includes ------------------------------------------------------------------*/ 00028 00029 00030 00031 //#define USE_FULL_ISO15693_COMMANDS // uncomment to access the write multiple blocks commands, as a few contactless tag support this command, it's not compiled to save memory space 00032 00033 00034 // Lower level 00035 #include "iso15693_structure.h" 00036 #include "cr95hf_command.h" 00037 00038 00039 00040 // Constants for iso15693 layer 00041 // Note that ICRef constants related to the product identification are gathered in miscellaneous.h 00042 00043 // COnstants for tag command code 00044 #define ISO15693_CMD_INVENTORY 0x01 00045 #define ISO15693_CMD_STAY_QUIET 0x02 00046 #define ISO15693_CMD_READ_SINGLE_BLOCK 0x20 00047 #define ISO15693_CMD_WRITE_SINGLE_BLOCK 0x21 00048 #define ISO15693_CMD_LOCK_BLOCK 0x22 00049 #define ISO15693_CMD_READ_MULTIPLE_BLOCKS 0x23 00050 #define ISO15693_CMD_WRITE_MULTIPLE_BLOCKS 0x24 00051 #define ISO15693_CMD_SELECT 0x25 00052 #define ISO15693_CMD_RESET_TO_READY 0x26 00053 #define ISO15693_CMD_WRITE_AFI 0x27 00054 #define ISO15693_CMD_LOCK_AFI 0x28 00055 #define ISO15693_CMD_WRITE_DSFID 0x29 00056 #define ISO15693_CMD_LOCK_DSFID 0x2A 00057 #define ISO15693_CMD_GET_SYSTEM_INFO 0x2B 00058 #define ISO15693_CMD_GET_MULTIPLE_BLOCKS_STATUS 0x2C 00059 00060 //Constants for counters length and cursors 00061 #define ISO15693_ICREF_SHIFT 0x02 00062 #define ISO15693_ICREF_CURSOR_IN_UID 0x05 00063 00064 #define ISO15693_UID_CURSOR_CR95HF_RESPONSE_DATA 0x02 00065 #define ISO15693_INVENTORY_16_SLOTS_COUNTER 0x0F// equal to 15 because first slot is right after the command sending 00066 #define ISO15693_DEFAULT_BLOCK_SIZE 0x04 00067 #define ISO15693_DEFAULT_BLOCK_PLUS_STATUS_SIZE 0x05 00068 #define ISO15693_MAX_SIZE_BLOCK_WRITE_CMD 0x1F // for write multiple blocks limited to 32 blocks (31 after the first one -> 1024 bits with 4 bytes per block 00069 #define ISO15693_MAX_SIZE_BLOCK_READ_CMD 0x1F // limited to 32 block (31 after the first one) 00070 #define ISO15693_UID_SIZE_BITS 0x40 // UID sizes 64 bits 00071 00072 #define ISO15693_MANUFACTURER_CURSOR 0x06 00073 #define ISO15693_ERROR_CODE_CURSOR 0x01 00074 #define ISO15693_INFORMATION_FLAG_CURSOR 0x01 00075 #define ISO15693_MEMSIZE_3BYTES_BLOCK_SIZE_CURSOR 0x02 00076 #define ISO15693_MEMSIZE_2BYTES_BLOCK_SIZE_CURSOR 0x01 00077 00078 // Length of information parameters in read commands (response flags, CRC , CRC check) 00079 #define ISO15693_LENGTH_PARAMETERS_READ_RESPONSE 0x04 00080 // Length of mandatory information received for a get system info command 00081 #define ISO15693_LENGTH_FIX_PARAMETERS_GET_SYS_INFO_RESPONSE 0x0D 00082 // Response flags (1byte), Information flags (1) 00083 // UID (8), CRC (2), Ctrl byte added by the CR95HF (1) 00084 00085 // Size of a read multiple Block with ISO15693_MAX_SIZE_BLOCK_READ_CMD and status 00086 // the size contains frame data response flags, CRC, control byte + number of byte read (here 32 block of 4 bytes ie. 128bytes + the status if expected 32 bytes 00087 #define ISO15693_READ_MULITPLE_BLOCK_SIZE_ISO15693_MAX_SIZE_BLOCK_READ_CMD (SIZE_1KBITS_BYTES+ISO15693_LENGTH_PARAMETERS_READ_RESPONSE+ISO15693_MAX_SIZE_BLOCK_READ_CMD+1) 00088 00089 00090 #define ISO15693_ERROR_FRAME_SIZE 0x05 // contactless tag answer when an error occured (CRC, and CRC checked addred by CR95HF included) 00091 00092 // Particular values 00093 00094 // STMicroelectronics MANUFACTURER CODE 00095 #define ISO15693_STMICROELECTRONICS_MANUFACTURER_CODE 0x02 00096 00097 00098 // Constants for mask 00099 #define ISO15693_CRC_MASK 0x02 00100 #define ISO15693_COLLISION_DETECTION_MASK 0x01 00101 #define ISO15693_REQUEST_FLAGS_BITS_SELECT_ADDRESS_MASK 0x30 00102 00103 00104 // Constants for returning value 00105 #define ISO15693_SUCCESS_CODE 0x00 00106 #define ISO15693_ERROR_PARAMETERS_REQUEST_FLAGS 0x02 00107 #define ISO15693_ERROR_CODE 0x01 00108 #define ISO15693_BLOCK_SIZE_ERROR 0x00 00109 #define ISO15693_ERROR_CRC 0xCC // arbritrary defined constant 00110 #define ISO15693_ERROR_COLLISION_DETECTED 0xCD // arbritrary defined constant 00111 #define ISO15693_ERROR_COLLISION_CRC 0xCF // arbritrary defined constant 00112 00113 // error code 00114 /* Informative uncomment to use the constants 00115 #define ISO15693_ERROR_COMMAND_NOT_SUPPORTED 0x01 00116 #define ISO15693_ERROR_COMMAND_NOT_RECOGNISED 0x02 00117 #define ISO15693_ERROR_COMMAND_OPTION_NOT_SUPPORTED 0x03 00118 #define ISO15693_ERROR_NO_INFORMATION_OR_CODE_NOT_SUPPORTED 0x0F 00119 #define ISO15693_ERROR_SPECIFIED_BLOCK_NOT_AVAILABLE 0x10 00120 #define ISO15693_ERROR_SPECIFIED_BLOCK_ALREADY_LOCKED 0x11 00121 #define ISO15693_ERROR_SPECIFIED_BLOCK_LOCKED 0x12 00122 #define ISO15693_ERROR_SPECIFIED_BLOCK_UNSUCCESSFULLY_PROGRAMMED 0x13 00123 #define ISO15693_ERROR_SPECIFIED_BLOCK_UNSUCCESSFULLY_LOCKED 0x14 00124 */ 00125 00126 // CRC 16 constants 00127 #define ISO15693_PRELOADCRC16 0xFFFF 00128 #define ISO15693_POLYCRC16 0x8408 00129 #define ISO15693_MASKCRC16 0x0001 00130 #define ISO15693_RESIDUECRC16 0xF0B8 00131 #define ISO15693_RESULTOKCRC16 0x00 00132 #define ISO15693_ERRORCODE_GENERICCRC16 0x01 00133 00134 00135 //RequestFlag------------------------------------------------------------- 00136 00137 #define ISO15693_FLAG_TEST_BIT3 0x04 00138 #define ISO15693_AFI_TEST_BIT5 0x10 00139 00140 #define ISO15693_BIT1_SINGLE_SUBCARRIER 0x00 00141 #define ISO15693_BIT1_DUAL_SUBCARRIERS 0x01 00142 #define ISO15693_BIT2_LOW_DATARATE 0x00 00143 #define ISO15693_BIT2_HIGH_DATARATE 0x02 00144 #define ISO15693_BIT3_INVENTORY_FLAG_RESET 0x00 00145 #define ISO15693_BIT3_INVENTORY_FLAG_SET 0x04 00146 #define ISO15693_BIT4_NO_PROTOCOL_EXTENSION 0x00 00147 #define ISO15693_BIT4_PROTOCOL_EXTENSION 0x08 00148 00149 // BIT3 (INVENTORY FLAG) IS RESET 00150 #define ISO15693_BIT3RESET_BIT5_REQUEST_TAG_NOT_SELECTED 0x00 00151 #define ISO15693_BIT3RESET_BIT5_REQUEST_TAG_SELECTED 0x10 00152 #define ISO15693_BIT3RESET_BIT6_REQUEST_NOT_ADDRESSED 0x00 00153 #define ISO15693_BIT3RESET_BIT6_REQUEST_ADDRESSED 0x20 00154 #define ISO15693_BIT3RESET_BIT7_OPTIONFLAG_RESET 0x00 00155 #define ISO15693_BIT3RESET_BIT7_OPTIONFLAG_SET 0x40 00156 #define ISO15693_BIT3RESET_BIT8_RFU 0x00 00157 00158 // INVENTORY FLAG IS SET 00159 #define ISO15693_BIT3SET_BIT5_AFI_NOT_PRESENT 0x00 00160 #define ISO15693_BIT3SET_BIT5_AFI_PRESENT 0x10 00161 #define ISO15693_BIT3SET_BIT6_16_SLOTS 0x00 00162 #define ISO15693_BIT3SET_BIT6_1_SLOT 0x20 00163 #define ISO15693_BIT3SET_BIT7_OPTIONFLAG_RESET 0x00 00164 #define ISO15693_BIT3SET_BIT7_OPTIONFLAG_SET 0x40 00165 #define ISO15693_BIT3SET_BIT8_RFU 0x00 00166 00167 #define ISO15693_BIT8_RFU_SET_MASK 0x80 00168 00169 // Parameters value for getting info functions 00170 #define ISO15693_SINGLE_SUBCARRIER 0x00 00171 #define ISO15693_DUAL_SUBCARRIERS 0x01 00172 #define ISO15693_LOW_DATARATE 0x00 00173 #define ISO15693_HIGH_DATARATE 0x02 00174 #define ISO15693_INVENTORY_FLAG_RESET 0x00 00175 #define ISO15693_INVENTORY_FLAG_SET 0x04 00176 #define ISO15693_NO_PROTOCOL_EXTENSION 0x00 00177 #define ISO15693_PROTOCOL_EXTENSION 0x08 00178 00179 // INVENTRORYFLAG=0 00180 #define ISO15693_SELECT_FLAG_RESET 0x00 00181 #define ISO15693_SELECT_FLAG_SET 0x10 00182 #define ISO15693_ADDRESS_FLAG_RESET 0x00 00183 #define ISO15693_ADDRESS_FLAG_SET 0x20 00184 00185 // INVENTRORYFLAG=1 00186 #define ISO15693_AFI_NOT_PRESENT 0x00 00187 #define ISO15693_AFI_PRESENT 0x01 00188 #define ISO15693_16_SLOTS 0x00 00189 #define ISO15693_1_SLOT 0x01 00190 00191 #define ISO15693_OPTION_FLAG_SET 0x40 00192 #define ISO15693_OPTION_FLAG_RESET 0x00 00193 #define ISO15693_BIT8_RFU_RESET 0x00 00194 #define ISO15693_BIT8_RFU_SET 0x80 00195 #define ISO15693_ERROR_INVALID_FLAG 0xFF 00196 00197 //------------------------------------------------------------------- 00198 //Response Flag 00199 #define ISO15693_RESPONSE_FLAGS_ERRORFLAG_MASK 0x01 00200 00201 //------------------------------------------------------------------- 00202 // Information Flag 00203 #define ISO15693_INFORMATION_FLAGS_DSFID_MASK 0x01 00204 #define ISO15693_INFORMATION_FLAGS_AFI_MASK 0x02 00205 #define ISO15693_INFORMATION_FLAGS_MEMSIZE_MASK 0x04 00206 #define ISO15693_INFORMATION_FLAGS_ICREF_MASK 0x08 00207 00208 //UID MSB 00209 #define ISO15693_UID_MSB 0xE0 // To check MSB into EEPROM 00210 00211 /* Exported macro functions --------------------------------------------------------*/ 00212 00213 00214 00215 u8 Scan15693Tag (void); 00216 00217 00218 // Command functions -------------------------------------------------------- 00219 00220 u8 ISO15693_Inventory(ISO15693_Tag* MyTag,const u8 Request_flags,const u8 Tag_AFI, 00221 const u8 MaskLength,const u8* Mask, 00222 u8* Inventory_16_slots_Nb_UID_Retrieved); 00223 00224 u8 ISO15693_Stay_Quiet(const u8 Request_flags,const u8* Tag_UID); 00225 00226 u8 ISO15693_Read_Single_Block(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID, const u8 Block_number); 00227 00228 u8 ISO15693_Write_Single_Block(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID, const u8 Block_number,const u8 Block_Length, const u8* Data); 00229 00230 u8 ISO15693_Lock_Block(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID, const u8 Block_number); 00231 00232 u8 ISO15693_Read_Multiple_Block(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID, const u8 First_Block_number, const u8 Number_of_Blocks); 00233 00234 #ifdef USE_FULL_ISO15693_COMMANDS 00235 u8 ISO15693_Write_Multiple_Block(ISO15693_Tag* MyTag, const u8 Request_flags,const u8* Tag_UID, const u8 First_Block_number, const u8 Number_of_Blocks, const u8 Block_Length); 00236 #endif 00237 00238 u8 ISO15693_Select(ISO15693_Tag* MyTag,const u8 Request_flags, const u8* Tag_UID); 00239 00240 u8 ISO15693_Reset_to_Ready(ISO15693_Tag* MyTag,const u8 Request_flags, const u8* Tag_UID); 00241 00242 u8 ISO15693_Write_AFI(ISO15693_Tag* MyTag, const u8 Request_flags,const u8* Tag_UID, const u8 Tag_AFI); 00243 00244 u8 ISO15693_Lock_AFI(ISO15693_Tag* MyTag, const u8 Request_flags,const u8* Tag_UID); 00245 00246 u8 ISO15693_Write_DSFID(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID, const u8 Tag_DSFID); 00247 00248 u8 ISO15693_Lock_DSFID(ISO15693_Tag* MyTag,const u8 Request_flags,const u8* Tag_UID); 00249 00250 u8 ISO15693_Get_System_Info(ISO15693_Tag* MyTag, const u8 Request_flags,const u8* Tag_UID); 00251 00252 u8 ISO15693_Get_Multiple_Blocks_Security_Status(ISO15693_Tag* MyTag, const u8 Request_flags, const u8* Tag_UID, const u8 First_Block_number, const u8 Number_of_Blocks); 00253 00254 u8 ISO15693_Custom_Commands(ISO15693_Tag* MyTag, u8 Request_flags, u8 Custom, u8 IC_Mfg_Code, u8 Parameters_Length, u8* parameters); 00255 00256 // Advanced functions ------------------------------------------------------- 00257 #ifdef USE_EXTERN_EEPROM_FUNCTION 00258 u8 ISO15693_Read_Blocks_Write_in_Ext_EEPROM(ISO15693_Tag* MyTag,const u8 Request_flags,const u8* Tag_UID,const u16 First_Block_Number, const u16 Number_of_Blocks); 00259 #endif 00260 00261 //-------------------------------------------------------------------- 00262 // Support functions --------------------------------- 00263 // Structure initialization functions ---------------- 00264 00265 static void ISO15693_Init_TagStructure_Generic(ISO15693_Tag* MyTag); 00266 00267 static void ISO15693_Init_TagStructure_Inventory_cmd(ISO15693_Tag* MyTag); 00268 00269 static void ISO15693_Init_TagStructure_GetSysInfo_cmd(ISO15693_Tag* MyTag); 00270 00271 static void ISO15693_Init_TagStructure_Read_Multiple_Blocks_cmd(ISO15693_Tag* MyTag); 00272 00273 static void ISO15693_Init_TagStructure_Get_Multiple_Block_Status_cmd(ISO15693_Tag* MyTag); 00274 00275 static void ISO15693_Init_TagStructure_MemSize(ISO15693_Tag* MyTag); 00276 00277 00278 //---------------------------------------------------- 00279 //Add data to command -------------------------------- 00280 00281 void ISO15693_Add_Request_Flags_Command_code_to_command(CR95HF_CommandSending* Cmd, 00282 u8* Cptr_ToIncrement, const u8 Request_flags ,const u8 Command_Code); 00283 00284 void ISO15693_Add_Mask_to_command(CR95HF_CommandSending* Cmd, 00285 u8* Cptr_ToIncrement,const u8 MaskLength, const u8* Mask); 00286 00287 void ISO15693_Add_UID_to_command(CR95HF_CommandSending* Cmd, 00288 u8* Cptr_ToIncrement, const u8* Tag_UID ,const u8 Request_flags); 00289 00290 //------------------------------------------------------- 00291 // Is ? functions---------------------------------------- 00292 00293 u8 ISO15693_Is_ResponseFlags_noError_Detected(const u8 ISO15693_Response_flags); 00294 00295 u8 ISO15693_Is_Request_Flags_ok(const u8 Request_flags, const u8 ISO15693_cmd_code); 00296 00297 u8 ISO15693_Is_Collision_Flag_Set( CR95HF_ResponseReceiving* Response); 00298 00299 u8 ISO15693_Is_CRC_Flag_Set(CR95HF_ResponseReceiving* Response); 00300 00301 u8 ISO15693_Is_CorrectCRC16_Check( CR95HF_ResponseReceiving* Response); 00302 00303 u8 ISO15693_Is_TagConstructor_STM(const ISO15693_Tag* MyTag); 00304 00305 u8 ISO15693_Is_Memory_programming_function(const u8 ISO15693_cmd_code); 00306 00307 u8 ISO15693_Is_DSFID_Present_Infoflag( const u8 Information_flags); 00308 00309 u8 ISO15693_Is_AFI_Present_Infoflag(const u8 Information_flags); 00310 00311 u8 ISO15693_Is_MemSize_Present_Infoflag( const u8 Information_flags); 00312 00313 u8 ISO15693_Is_ICRef_Present_Infoflag( const u8 Information_flags); 00314 00315 //------------------------------------------------------- 00316 // Get parameter functions------------------------------- 00317 00318 u8 ISO15693_Get_Subcarrier_Flag(const u8 Request_flags); 00319 00320 u8 ISO15693_Get_DataRate_Flag(const u8 Request_flags); 00321 00322 u8 ISO15693_Get_Inventory_Flag(const u8 Request_flags); 00323 00324 u8 ISO15693_Get_ProtocolExtension_Flag(const u8 Request_flags); 00325 00326 u8 ISO15693_Get_Select_Flag(const u8 Request_flags); 00327 00328 u8 ISO15693_Get_Address_Flag(const u8 Request_flags); 00329 00330 u8 ISO15693_Get_AFI_Flag(const u8 Request_flags); 00331 00332 u8 ISO15693_Get_Slots_Flag(const u8 Request_flags); 00333 00334 u8 ISO15693_Get_Option_Flag(const u8 Request_flags); 00335 00336 u8 ISO15693_Get_RFU_Flag(const u8 Request_flags); 00337 00338 u8 ISO15693_Get_SubCarrier_parameter_CR95HF(const CR95HF_Protocol_Config* Protocol_Settings); 00339 00340 u8 ISO15693_Get_Modulation_parameter_CR95HF(const CR95HF_Protocol_Config* Protocol_Settings); 00341 00342 u8 ISO15693_Get_Delay_parameter_CR95HF(const CR95HF_Protocol_Config* Protocol_Settings); 00343 00344 u8 ISO15693_Get_DataRate_parameter_CR95HF(const CR95HF_Protocol_Config* Protocol_Settings); 00345 00346 u8 ISO15693_Get_NumberofByte_MemSize_using_ICREF(const u8 ICRef); 00347 00348 u8 ISO15693_Get_Size_of_Block_using_ICRef(const u8 ICRef); 00349 00350 u8 ISO15693_Get_Size_of_Block_using_MemSize(const ISO15693_Tag* MyTag); 00351 00352 u16 ISO15693_Get_MemSize_kbits(const u8* MemSize, const u8 Number_of_bytes_MemSize); 00353 00354 u32 ISO15693_Get_MemSize_bits(const u8* MemSize, const u8 Number_of_bytes_MemSize); 00355 00356 u8 ISO15693_Get_UID_from_EEPROM(u8* UID_Tag, u8 UID_number); 00357 00358 //------------------------------------------------------- 00359 // CRC functions----------------------------------------- 00360 00361 int16_t ISO15693_CRC16 (const u8* DataIn,const u8 NbByte) ; 00362 00363 u8 ISO15693_IsCorrectCRC16Residue (const u8 *DataIn,const u8 Length); 00364 00365 int16_t ISO15693_CRC16_EEPROM (const u8 NbByte) ; 00366 00367 u8 ISO15693_IsCorrectCRC16Residue_EEPROM (const u8 Length); 00368 00369 //------------------------------------------------------- 00370 // Interpretation functions------------------------------ 00371 00372 u8 ISO156693_Check_Data_Received_Start_Process(ISO15693_Tag* MyTag,const CR95HF_ResponseReceiving *Response, u8* Cursor_in_response_data ); 00373 00374 void ISO15693_Fill_in_Tag_Structure_ErrorFlag_set(ISO15693_Tag* MyTag,CR95HF_ResponseReceiving *Response); 00375 00376 u8 ISO15693_Read_Answer_Format_Response_Flags(ISO15693_Tag* MyTag,CR95HF_ResponseReceiving *Response,const u8 Status_cr95hf); 00377 //------------------------------------------------------- 00378 // Command support functions----------------------------- 00379 00380 u8 ISO15693_Send_Receive_Inventory_cmd(ISO15693_Tag* MyTag, CR95HF_ResponseReceiving* Response,CR95HF_CommandSending* Cmd, u8 Request_flags, u8* status_cr95hf, u8* Inventory_16_slots_Nb_UID_Retrieved); 00381 00382 static u8 ISO15693_Send_Receive_Inventory_16_slots(CR95HF_ResponseReceiving* Response,CR95HF_CommandSending* Cmd, u8* Inventory_16_slots_Nb_UID_Retrieved); 00383 00384 u8 ISO15693_Send_Receive_Single_Block_Memory_Programming_cmd(CR95HF_ResponseReceiving* Response,CR95HF_CommandSending* Cmd, const u8 Request_flags); 00385 00386 //#ifdef USE_FULL_ISO15693_COMMANDS 00387 static u8 ISO15693_Send_Multiple_Blocks_cmd(CR95HF_ResponseReceiving* Response,CR95HF_CommandSending* Cmd, const u8 Request_flags, const u8 Number_of_Bytes_to_Transmit); 00388 00389 static void ISO15693_Send_Multiple_Blocks_CR95HF_level(CR95HF_CommandSending* Cmd, u8 Number_of_Bytes_to_Transmit); 00390 //#endif 00391 00392 static u8 ISO15693_SendEOF(CR95HF_ResponseReceiving* Response); 00393 00394 u8 ISO15693_Receive_Multiple_Blocks_cmd(CR95HF_ResponseReceiving* Response); 00395 00396 static ISO15693_Receive_Multiple_Blocks_Store_into_EEPROM(CR95HF_ResponseReceiving* Response); 00397 00398 //------------------------------------------------------- 00399 // Fill in tag structure functions ---------------------- 00400 00401 u8 ISO156693_Fill_in_TagStructure_Inventory_cmd(ISO15693_Tag* MyTag,CR95HF_ResponseReceiving* Response, u8 CR95HF_command_status ); 00402 00403 static void ISO156693_Fill_in_UID_Array_Inventory_16_slots_cmd( 00404 u8* Inventory_16_slots_Nb_UID_Retrieved,CR95HF_ResponseReceiving* Response); 00405 00406 u8 ISO156693_Fill_in_TagStructure_Read_Single_Block_cmd(ISO15693_Tag* MyTag,CR95HF_ResponseReceiving* Response, const u8 CR95HF_command_status, const u8 Request_flags ); 00407 00408 u8 ISO156693_Fill_in_TagStructure_Read_Multiple_Blocks_cmd(ISO15693_Tag* MyTag,CR95HF_ResponseReceiving* Response, const u8 CR95HF_command_status, const u8 Number_of_Blocks ); 00409 00410 static u8 ISO156693_Fill_in_TagStructure_GetSysInfo_cmd(ISO15693_Tag* MyTag,CR95HF_ResponseReceiving* Response, const u8 CR95HF_command_status ); 00411 00412 u8 ISO156693_Fill_in_TagStructure_Get_Multiple_Block_Status_cmd(ISO15693_Tag* MyTag,CR95HF_ResponseReceiving* Response, const u8 CR95HF_command_status,const u8 Number_of_Blocks ); 00413 00414 static u8 ISO156693_Fill_in_TagStructure_Custom_cmd(ISO15693_Tag* MyTag,CR95HF_ResponseReceiving* Response, const u8 CR95HF_command_status ); 00415 00416 00417 //-------------------------------------------------------------------- 00418 // For data ---------------------------------------------------------- 00419 00420 void ISO15693_Retrieve_UID(ISO15693_Tag* MyTag,CR95HF_ResponseReceiving* Response, u8* Cursor_in_response_data); 00421 00422 static void ISO15693_Retrieve_UID_16_slots(u8 Inventory_16_slots_Nb_UID_Retrieved ,CR95HF_ResponseReceiving* Response); 00423 00424 void ISO15693_Retrieve_ICRef(ISO15693_Tag* MyTag); 00425 00426 static void ISO15693_Retrieve_Data_With_Information_Flags(ISO15693_Tag* MyTag,CR95HF_ResponseReceiving* Response, const u8 Information_flags, u8* Cursor_in_response_data); 00427 00428 //-------------------------------------------------------------------- 00429 // Others ------------------------------------------------------------ 00430 00431 static u8 ISO15693_Compute_Number_of_bytes_MemSize_using_GetSysInfo_Frame(const u8 Information_Flags,const u8 Response_data_length); 00432 00433 #endif /*__ISO15693_COMMAND_H */ 00434 00435 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/