initial checkin of harald welte's original librfid project
[rfid/librfid.git] / include / librfid / rfid_layer2_iso14443b.h
1 #ifndef _RFID_LAYER2_ISO14443B_H
2 #define _RFID_LAYER2_ISO14443B_H
3
4 #ifdef __LIBRFID__
5
6 struct iso14443b_atqb {
7         unsigned char fifty;
8         unsigned char pupi[4];
9         unsigned char app_data[4];
10         struct {
11                 unsigned char bit_rate_capability;
12                 unsigned char protocol_type:4,
13                               max_frame_size:4;
14                 unsigned char fo:2,
15                               adc:2,
16                               fwi:4;
17         } protocol_info;
18 };
19
20 struct iso14443b_attrib_hdr {
21         unsigned char one_d;
22         unsigned char identifier[4];
23         struct {
24                 unsigned char rfu:2,
25                               sof:1,
26                               eof:1,
27                               min_tr1:2,
28                               min_tr0:2;
29         } param1;
30         struct {
31                 unsigned char fsdi:4,
32                               spd_out:2,
33                               spd_in:2;
34         } param2;
35         struct {
36                 unsigned char protocol_type:4,
37                               rfu:4;
38         } param3;
39         struct {
40                 unsigned char cid:4,
41                               rfu:4;
42         } param4;
43 };
44
45 struct iso14443b_handle {
46         unsigned int tcl_capable; /* do we support T=CL */
47
48         unsigned int cid;       /* Card ID */
49
50         unsigned int fsc;       /* max. frame size card */
51         unsigned int fsd;       /* max. frame size reader */
52
53         unsigned int fwt;       /* frame waiting time (in usec) */
54
55         unsigned int mbl;       /* maximum buffer length */
56
57         unsigned int tr0;       /* pcd-eof to picc-subcarrier-on */
58         unsigned int tr1;       /* picc-subcarrier-on to picc-sof */
59
60         unsigned int flags;
61         unsigned int state;
62 };
63
64 enum {
65         ISO14443B_CID_SUPPORTED = 0x01,
66         ISO14443B_NAD_SUPPORTED = 0x02,
67 };
68
69 enum {
70         ISO14443B_STATE_ERROR,
71         ISO14443B_STATE_NONE,
72         ISO14443B_STATE_REQB_SENT,
73         ISO14443B_STATE_ATQB_RCVD,
74         ISO14443B_STATE_ATTRIB_SENT,
75         ISO14443B_STATE_SELECTED,
76         ISO14443B_STATE_HLTB_SENT,
77         ISO14443B_STATE_HALTED,
78 };
79
80 #include <librfid/rfid_layer2.h>
81 struct rfid_layer2 rfid_layer2_iso14443b;
82
83 #endif /* __LIBRFID__ */
84
85 #endif