1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
/*
* 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_ */
|