/* * NFC.h * * Created on: Jan 19, 2020 * Author: avi */ #ifndef DRIVERS_I2C_COMMUNICATION_RFID_NFC_NFC_H_ #define DRIVERS_I2C_COMMUNICATION_RFID_NFC_NFC_H_ #define TAG_NOT_VALID 0 #define TAG_VALID 1 #define TAG_NOT_BLOCKED 0 #define TAG_BLOCKED 1 typedef enum { Tag_Idle, Tag_PrepareForDiscovery, Tag_Indetification, Tag_GetUid, Tag_CheckPwd, Tag_CheckValidity, Tag_CheckUpdateCounter, Tag_CheckHashValue, Tag_CheckUpdateBlocked,//blacklist Tag_ReadValue, Tag_WriteValue, Tag_CheckCRC, Tag_UpdateCheckSum, Tag_UpdateValue, Tag_Update_Ink_Fill, Tag_Update_Ink_Used, Tag_Update_Ink_Empty, Tag_UpdateInkMachineID, Tag_Update_Waste_Fill, Tag_Update_Waste_Full, Tag_Update_Waste_Empty, Tag_UpdateWasteMachineID, Tag_UpdateWCounter, Tag_UpdateCRC, Tag_DisconnectComm, MAX_TAG_State_Machine, }RFID_TAG_State_Machine; /* typedef struct { //STATUS_ENUM: 0 - S_NA, 1 - S_SUCCEEDED, 2 - S_FAILED STATUS_ENUM ReaderAvailability : 2; //0-1 STATUS_ENUM ReaderInit : 2; //2-3 STATUS_ENUM ReaderPreDiscovery : 2; //4-5 STATUS_ENUM TagDiscovery : 2; //6-7 STATUS_ENUM TagGetUID : 2; //8-9 STATUS_ENUM TagCheckPassword : 2; //10-11 //temporary - TagUpdateBlokedField STATUS_ENUM TagReadData : 2; //12-13 STATUS_ENUM TAgCheckDataCRC : 2; //14-15 STATUS_ENUM TagCheckHash : 2; //16-17 STATUS_ENUM TagValidity : 2; //18-19 STATUS_ENUM TagCounterLimit : 2; //20-21 STATUS_ENUM TagUpdateCounters : 2; //22-23 STATUS_ENUM TAgCheckBlockedField : 2; //24-25 STATUS_ENUM TagwriteData : 2; //26-27 STATUS_ENUM TagUpdateCRC : 2; //28-29 STATUS_ENUM TagDisconnect : 2; //30-31 }RFID_Errors; //RFID_Status_Word typedef union { RFID_Errors errors; uint32_t uint; }RFID_STATUS; */ typedef struct { //STATUS_ENUM: 0 - S_NA, 1 - S_SUCCEEDED, 2 - S_FAILED STATUS_ENUM ReaderAvailability : 2; //0-1 STATUS_ENUM ReaderInit : 2; //2-3 STATUS_ENUM ReaderPreDiscovery : 2; //4-5 STATUS_ENUM TagDiscovery : 2; //6-7 STATUS_ENUM TagGetUID : 2; //8-9 STATUS_ENUM TagCheckPassword : 2; //10-11 STATUS_ENUM TagReadData : 2; //12-13 STATUS_ENUM TAgCheckDataCRC : 2; //14-15 STATUS_ENUM TagCheckHash : 2; //16-17 STATUS_ENUM TagCheckValidity : 2; //18-19 STATUS_ENUM TagCheckCounterLimit : 2; //20-21 ---- STATUS_ENUM TagUpdateCounters : 2; //22-23 ---- STATUS_ENUM TAgCheckBlockedField : 2; //24-25 STATUS_ENUM TagwriteData : 2; //26-27 ---- STATUS_ENUM TagUpdateCRC : 2; //28-29 STATUS_ENUM TagDisconnect : 2; //30-31 STATUS_ENUM TagUpdateInkFill : 2; //32-31 STATUS_ENUM TagUpdateInkUsed : 2; //34-35 STATUS_ENUM TagUpdateInkEmpty : 2; //36-37 STATUS_ENUM TagUpdateInkMachineID : 2; //38-39 STATUS_ENUM TagUpdateWasteFill : 2; //40-41 STATUS_ENUM TagUpdateWasteFull : 2; //42-43 STATUS_ENUM TagUpdateWasteEmpty : 2; //44-45 STATUS_ENUM TagUpdateWasteMachineID : 2; //46-47 STATUS_ENUM TagUpdateBlockedField : 2; //48-49 STATUS_ENUM TagUpdateValidity : 2; //50-51 STATUS_ENUM TagUpdateWriteCounter : 2; //52-53 STATUS_ENUM TagLockFields : 2; //54-55 STATUS_ENUM TagEOL : 2; //56-57 STATUS_ENUM TagUpdateWasteFillDate : 2; //58-59 STATUS_ENUM TagSpare6061 : 2; //60-61 STATUS_ENUM TagSpare6232 : 2; //62-63 }RFID_Errors; //RFID_Status_Word typedef union { RFID_Errors errors; uint64_t uint64bit; }RFID_STATUS; extern RFID_STATUS RFID_Status_Words[Max_Readers]; extern RFID_TAG_State_Machine TagStage[3]; bool Init_RFID_Reader(RFID_READER_ID Reader_ID); uint8_t Connect_to_RFID_Reder(uint8_t readerID); uint32_t RFIDTagComm_StateMachine(RFID_READER_ID readerID, StateMachineMode Mode); RFID_RETURN_CODE WriteCRCValue(RFID_READER_ID readerID); void RFIDCycleEvery1Sec(); void RFIDCallEvery100mSec(RFID_READER_ID readerID); void UpdateWCounterCRC(RFID_READER_ID readerID);//Call after any change in the tag - to call from WriteValue function extern uint8_t uid[7]; extern RFID_RETURN_CODE RFID_Status; extern NFC_Tag NFC_Tag_R[Max_Readers]; extern NFC_Tag NFC_Tag_W[Max_Readers]; extern NFC_Tag NFC_Tag_U[Max_Readers]; extern NxpNci_RfIntf_t tagInfo; extern bool RequestForDiscovery[3];//request from WHS logic extern bool DiscoverRFIDTagEvery100mSec[3]; #endif /* DRIVERS_I2C_COMMUNICATION_RFID_NFC_NFC_H_ */