/[pcsclite]/trunk/Drivers/ccid/src/ccid.h
ViewVC logotype

Contents of /trunk/Drivers/ccid/src/ccid.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2041 - (hide annotations) (download)
Wed May 10 20:53:49 2006 UTC (7 years, 1 month ago) by rousseau
File MIME type: text/plain
File size: 4692 byte(s)
correct a typo in a comment
1 rousseau 413 /*
2     ccid.h: CCID structures
3     Copyright (C) 2003 Ludovic Rousseau
4    
5 rousseau 1399 This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Lesser General Public
7     License as published by the Free Software Foundation; either
8     version 2.1 of the License, or (at your option) any later version.
9 rousseau 413
10 rousseau 1399 This library is distributed in the hope that it will be useful,
11 rousseau 413 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 rousseau 1399 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13     Lesser General Public License for more details.
14 rousseau 413
15 rousseau 1399 You should have received a copy of the GNU Lesser General Public
16     License along with this library; if not, write to the Free Software
17     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 rousseau 413 */
19    
20     /*
21     * $Id$
22     */
23    
24     typedef struct
25     {
26     /*
27     * CCID Sequence number
28     */
29 rousseau 1148 unsigned char *pbSeq;
30     unsigned char real_bSeq;
31 rousseau 413
32     /*
33     * VendorID << 16 + ProductID
34     */
35     int readerID;
36    
37     /*
38     * Maximum message length
39     */
40 rousseau 1567 unsigned int dwMaxCCIDMessageLength;
41 rousseau 413
42     /*
43 rousseau 672 * Maximum IFSD
44     */
45     int dwMaxIFSD;
46    
47     /*
48 rousseau 900 * Features supported by the reader (directly from Class Descriptor)
49 rousseau 413 */
50     int dwFeatures;
51    
52 rousseau 693 /*
53 rousseau 900 * PIN support of the reader (directly from Class Descriptor)
54     */
55     char bPINSupport;
56    
57     /*
58 rousseau 693 * Default Clock
59     */
60     int dwDefaultClock;
61    
62     /*
63 rousseau 1484 * Max Data Rate
64     */
65 rousseau 1568 unsigned int dwMaxDataRate;
66 rousseau 1484
67     /*
68 rousseau 1088 * Number of available slots
69     */
70     char bMaxSlotIndex;
71    
72     /*
73     * Slot in use
74     */
75     char bCurrentSlotIndex;
76    
77 rousseau 1445 /*
78     * The array of data rates supported by the reader
79     */
80     unsigned int *arrayOfSupportedDataRates;
81 rousseau 1449
82     /*
83     * Read communication port timeout
84 rousseau 1674 * value is seconds
85 rousseau 1449 * this value can evolve dynamically if card request it (time processing).
86     */
87     unsigned int readTimeout;
88 rousseau 1445
89 rousseau 1854 /*
90     * Card protocol
91     */
92     int cardProtocol;
93 rousseau 413 } _ccid_descriptor;
94    
95 rousseau 900 /* Features from dwFeatures */
96 rousseau 685 #define CCID_CLASS_AUTO_CONF_ATR 0x00000002
97 rousseau 413 #define CCID_CLASS_AUTO_VOLTAGE 0x00000008
98 rousseau 691 #define CCID_CLASS_AUTO_BAUD 0x00000020
99 rousseau 1353 #define CCID_CLASS_AUTO_PPS_PROP 0x00000040
100 rousseau 672 #define CCID_CLASS_AUTO_PPS_CUR 0x00000080
101 rousseau 691 #define CCID_CLASS_AUTO_IFSD 0x00000400
102 rousseau 1260 #define CCID_CLASS_CHARACTER 0x00000000
103 rousseau 413 #define CCID_CLASS_TPDU 0x00010000
104     #define CCID_CLASS_SHORT_APDU 0x00020000
105     #define CCID_CLASS_EXTENDED_APDU 0x00040000
106 rousseau 672 #define CCID_CLASS_EXCHANGE_MASK 0x00070000
107 rousseau 413
108 rousseau 900 /* Features from bPINSupport */
109     #define CCID_CLASS_PIN_VERIFY 0x01
110     #define CCID_CLASS_PIN_MODIFY 0x02
111    
112 rousseau 413 /* See CCID specs ch. 4.2.1 */
113 rousseau 1258 #define CCID_ICC_PRESENT_ACTIVE 0x00 /* 00 0000 00 */
114     #define CCID_ICC_PRESENT_INACTIVE 0x01 /* 00 0000 01 */
115 rousseau 2041 #define CCID_ICC_ABSENT 0x02 /* 00 0000 10 */
116 rousseau 1258 #define CCID_ICC_STATUS_MASK 0x03 /* 00 0000 11 */
117    
118 rousseau 413 #define CCID_COMMAND_FAILED 0x40 /* 01 0000 00 */
119     #define CCID_TIME_EXTENSION 0x80 /* 10 0000 00 */
120    
121     /* Product identification for special treatments */
122     #define GEMPC433 0x08E64433
123     #define GEMPCKEY 0x08E63438
124     #define GEMPCTWIN 0x08E63437
125 rousseau 1794 #define GEMPCPINPAD 0x08E63478
126 rousseau 1808 #define GEMCORESIMPRO 0x08E63480
127     #define GEMCOREPOSPRO 0x08E63479
128 rousseau 413 #define CARDMAN3121 0x076B3021
129 rousseau 693 #define LTC31 0x07830003
130 rousseau 1089 #define SCR331DI 0x04E65111
131 rousseau 1504 #define SCR331DINTTCOM 0x04E65120
132 rousseau 1950 #define SDI010 0x04E65121
133 rousseau 1225 #define CHERRYXX33 0x046A0005
134 rousseau 1699 #define CHERRYST2000 0x046A003E
135 rousseau 1259 #define OZ776 0x0B977762
136 rousseau 1309 #define SPR532 0x04E6E003
137 rousseau 1832 #define MYSMARTPAD 0x09BE0002
138 rousseau 1981 #define CHERRYXX44 0x046a0010
139 rousseau 413
140     /* Escape sequence codes */
141     #define ESC_GEMPC_SET_ISO_MODE 1
142     #define ESC_GEMPC_SET_APDU_MODE 2
143    
144 rousseau 1790 /*
145     * Possible values :
146     * 3 -> 1.8V, 3V, 5V
147     * 2 -> 3V, 5V
148     * 1 -> 5V only
149     * 0 -> automatic (selection made by the reader)
150     */
151     /*
152     * To be safe we default to 5V
153     * otherwise we would have to parse the ATR and get the value of TAi (i>2) when
154     * in T=15
155     */
156     #define VOLTAGE_AUTO 0
157     #define VOLTAGE_5V 1
158     #define VOLTAGE_3V 2
159     #define VOLTAGE_1_8V 3
160 rousseau 413
161 rousseau 1106 int ccid_open_hack(unsigned int reader_index);
162 rousseau 1494 void ccid_error(int error, char *file, int line, const char *function);
163 rousseau 1106 _ccid_descriptor *get_ccid_descriptor(unsigned int reader_index);
164 rousseau 413
165     /* convert a 4 byte integer in USB format into an int */
166     #define dw2i(a, x) ((((((a[x+3] << 8) + a[x+2]) << 8) + a[x+1]) << 8) + a[x])
167    
168 rousseau 1808 /* all the data rates specified by ISO 7816-3 Fi/Di tables */
169     #define ISO_DATA_RATES 10753, 14337, 15625, 17204, \
170     20833, 21505, 23438, 25806, 28674, \
171     31250, 32258, 34409, 39063, 41667, \
172     43011, 46875, 52083, 53763, 57348, \
173     62500, 64516, 68817, 71685, 78125, \
174     83333, 86022, 93750, 104167, 107527, \
175     114695, 125000, 129032, 143369, 156250, \
176     166667, 172043, 215054, 229391, 250000, \
177     344086
178    
179     /* data rates supported by the secondary slots on the GemCore Pos Pro & SIM Pro */
180     #define GEMPLUS_CUSTOM_DATA_RATES 10753, 21505, 43011, 125000
181    

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.5