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