/** * @brief Checks if a FELICA card is still in the field * @param void * @return ISO18092_SUCCESSCODE : the function is succesful * @return ISO18092_ERRORCODE_DEFAULT : No card in the RF field */ int8_t FELICA_CardTest( void ) { uint8_t DummyBuffer[MAX_BUFFER_SIZE]; if(PCD_CheckSendReceive(REQC, DummyBuffer)!= ISO18092_SUCCESSCODE) return ISO18092_ERRORCODE_DEFAULT; return ISO18092_SUCCESSCODE; }
/** * @brief Handles the REQC command * @param *pDataRead : Pointer on the response * @return TRUE (if CR95HF answered ATQB) / FALSE (No ISO14443B in Field) */ static int8_t FELICA_REQC( uint8_t *pDataRead ) { if(PCD_CheckSendReceive(REQC, pDataRead)!= ISO18092_SUCCESSCODE) return ISO18092_ERRORCODE_DEFAULT; if (pDataRead[2] != 0x01) // If the answer is not an answer to REQC return ISO18092_ERRORCODE_DEFAULT; else return ISO18092_SUCCESSCODE; }
/** * @brief Initializes the PCD device for the IS014443A protocol * @param *pDataRead : Pointer to the PCD response * @return ISO14443A_SUCCESSCODE the function is succesful * @return ISO14443A_ERRORCODE_DEFAULT : an error occured */ int8_t TOPAZ_ID( uint8_t *pDataRead) { uint8_t Tag_error_check; if(PCD_CheckSendReceive(TOPAZ, pDataRead) != ISO14443A_SUCCESSCODE) return ISO14443A_ERRORCODE_DEFAULT; Tag_error_check = pDataRead[RFTRANS_95HF_LENGTH_OFFSET]-1; if((pDataRead[Tag_error_check] & ISO14443A_CRCMASK) == ISO14443A_CRC_ERRORCODE_TYPEA) return ISO14443A_ERRORCODE_CRC; if(pDataRead[0] == SENDRECV_RESULTSCODE_OK && pDataRead[1] == 0x04) return ISO14443A_ERRORCODE_DEFAULT; st95mode = PCD; if (pDataRead[0] == 0x80) st95tagtype = TT1; else return ISO14443A_ERRORCODE_DEFAULT; return ISO14443A_SUCCESSCODE; }