generate ccid dump from driver in test mode
[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 #ifndef RFID_BIG_ENDIAN_BITFIELD
24                 unsigned char protocol_type:4,
25                               max_frame_size:4;
26                 unsigned char fo:2,
27                               adc:2,
28                               fwi:4;
29 #else
30                 unsigned char max_frame_size:4,
31                               protocol_type:4;
32                 unsigned char fwi:4,
33                               adc:2,
34                               fo:2;
35 #endif
36         } __attribute__ ((packed)) protocol_info;
37 } __attribute__ ((packed));
38
39 struct iso14443b_attrib_hdr {
40         unsigned char one_d;
41         unsigned char identifier[4];
42         struct {
43 #ifndef RFID_BIG_ENDIAN_BITFIELD
44                 unsigned char rfu:2,
45                               sof:1,
46                               eof:1,
47                               min_tr1:2,
48                               min_tr0:2;
49 #else
50                 unsigned char min_tr0:2,
51                               min_tr1:1,
52                               eof:1,
53                               sof:1,
54                               rfu:2;
55 #endif
56         } __attribute__ ((packed)) param1;
57         struct {
58 #ifndef RFID_BIG_ENDIAN_BITFIELD
59                 unsigned char fsdi:4,
60                               spd_out:2,
61                               spd_in:2;
62 #else
63                 unsigned char spd_in:2,
64                               spd_out:2,
65                               fsdi:4;
66 #endif
67         } __attribute__ ((packed)) param2;
68         struct {
69 #ifndef RFID_BIG_ENDIAN_BITFIELD
70                 unsigned char protocol_type:4,
71                               rfu:4;
72 #else
73                 unsigned char rfu:4,
74                               protocol_type:4;
75 #endif
76         } __attribute__ ((packed)) param3;
77         struct {
78 #ifndef RFID_BIG_ENDIAN_BITFIELD
79                 unsigned char cid:4,
80                               rfu:4;
81 #else
82                 unsigned char rfu:4,
83                               cid:4;
84 #endif
85         } __attribute__ ((packed)) param4;
86 } __attribute__ ((packed));
87
88 struct iso14443b_handle {
89         unsigned int tcl_capable; /* do we support T=CL */
90
91         unsigned int cid;       /* Card ID */
92
93         unsigned int fsc;       /* max. frame size card */
94         unsigned int fsd;       /* max. frame size reader */
95
96         unsigned int fwt;       /* frame waiting time (in usec) */
97
98         unsigned int mbl;       /* maximum buffer length */
99
100         unsigned int tr0;       /* pcd-eof to picc-subcarrier-on */
101         unsigned int tr1;       /* picc-subcarrier-on to picc-sof */
102
103         unsigned int flags;
104         unsigned int state;
105 };
106
107 enum {
108         ISO14443B_CID_SUPPORTED = 0x01,
109         ISO14443B_NAD_SUPPORTED = 0x02,
110 };
111
112 enum {
113         ISO14443B_STATE_ERROR,
114         ISO14443B_STATE_NONE,
115         ISO14443B_STATE_REQB_SENT,
116         ISO14443B_STATE_ATQB_RCVD,
117         ISO14443B_STATE_ATTRIB_SENT,
118         ISO14443B_STATE_SELECTED,
119         ISO14443B_STATE_HLTB_SENT,
120         ISO14443B_STATE_HALTED,
121 };
122
123 #include <librfid/rfid_layer2.h>
124 extern const struct rfid_layer2 rfid_layer2_iso14443b;
125
126 #endif /* __LIBRFID__ */
127
128 #endif