initial checkin of harald welte's original librfid project
[rfid/librfid.git] / include / librfid / rfid_layer2_iso14443a.h
1 #ifndef _RFID_ISO14443A_H
2 #define _RFID_ISO14443A_H
3
4 enum rfid_14443a_opt {
5         RFID_OPT_14443A_SPEED_RX        = 0x00000001,
6         RFID_OPT_14443A_SPEED_TX        = 0x00000002,
7 };
8
9 enum rfid_14443_opt_speed {
10         RFID_14443A_SPEED_106K  = 0x01,
11         RFID_14443A_SPEED_212K  = 0x02,
12         RFID_14443A_SPEED_424K  = 0x04,
13         RFID_14443A_SPEED_848K  = 0x08,
14 };
15
16 #ifdef __LIBRFID__
17
18 #include <sys/types.h>
19
20 /* protocol definitions */
21
22 /* ISO 14443-3, Chapter 6.3.1 */
23 enum iso14443a_sf_cmd {
24         ISO14443A_SF_CMD_REQA           = 0x26,
25         ISO14443A_SF_CMD_WUPA           = 0x52,
26         ISO14443A_SF_CMD_OPT_TIMESLOT   = 0x35,         /* Annex C */
27         /* 40 to 4f and 78 to 7f: proprietary */
28 };
29
30 struct iso14443a_atqa {
31         u_int8_t bf_anticol:5,
32                  rfu1:1,
33                  uid_size:2;
34         u_int8_t proprietary:4,
35                  rfu2:4;
36 };
37
38 #define ISO14443A_HLTA          0x5000
39
40 /* ISO 14443-3, Chapter 6.3.2 */
41 struct iso14443a_anticol_cmd {
42         unsigned char           sel_code;
43         unsigned char           nvb;
44         unsigned char           uid_bits[5];
45 };
46
47 enum iso14443a_anticol_sel_code {
48         ISO14443A_AC_SEL_CODE_CL1       = 0x93,
49         ISO14443A_AC_SEL_CODE_CL2       = 0x95,
50         ISO14443A_AC_SEL_CODE_CL3       = 0x97,
51 };
52
53 #define ISO14443A_BITOFCOL_NONE         0xffffffff
54
55 struct iso14443a_handle {
56         unsigned int state;
57         unsigned int level;
58         unsigned int tcl_capable;
59 };
60
61 enum iso14443a_level {
62         ISO14443A_LEVEL_NONE,
63         ISO14443A_LEVEL_CL1,
64         ISO14443A_LEVEL_CL2,
65         ISO14443A_LEVEL_CL3,
66 };
67
68 enum iso14443a_state {
69         ISO14443A_STATE_ERROR,
70         ISO14443A_STATE_NONE,
71         ISO14443A_STATE_REQA_SENT,
72         ISO14443A_STATE_ATQA_RCVD,
73         ISO14443A_STATE_NO_BITFRAME_ANTICOL,
74         ISO14443A_STATE_ANTICOL_RUNNING,
75         ISO14443A_STATE_SELECTED,
76 };
77
78 #include <librfid/rfid_layer2.h>
79 struct rfid_layer2 rfid_layer2_iso14443a;
80
81 #endif /* __LIBRFID__ */
82
83
84 #endif /* _ISO14443A_H */