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