Tizen 2.1 base
[sdk/emulator/qemu.git] / libcacard / vcardt.h
1 /*
2  * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
3  * See the COPYING.LIB file in the top-level directory.
4  */
5 #ifndef VCARDT_H
6 #define VCARDT_H 1
7
8 /*
9  * these should come from some common spice header file
10  */
11 #include <assert.h>
12 #ifndef MIN
13 #define MIN(x, y) ((x) > (y) ? (y) : (x))
14 #define MAX(x, y) ((x) > (y) ? (x) : (y))
15 #endif
16
17 typedef struct VCardStruct VCard;
18 typedef struct VCardAPDUStruct VCardAPDU;
19 typedef struct VCardResponseStruct VCardResponse;
20 typedef struct VCardBufferResponseStruct VCardBufferResponse;
21 typedef struct VCardAppletStruct VCardApplet;
22 typedef struct VCardAppletPrivateStruct VCardAppletPrivate;
23 typedef struct VCardKeyStruct VCardKey;  /* opaque */
24 typedef struct VCardEmulStruct VCardEmul;
25
26 #define MAX_CHANNEL 4
27
28 /* create an ATR with appropriate historical bytes */
29 #define VCARD_ATR_PREFIX(size) 0x3b, 0x68+(size), 0x00, 0xff, \
30                                'V', 'C', 'A', 'R', 'D', '_'
31
32
33 typedef enum {
34     VCARD_DONE,
35     VCARD_NEXT,
36     VCARD_FAIL
37 } VCardStatus;
38
39 typedef enum {
40     VCARD_FILE_SYSTEM,
41     VCARD_VM,
42     VCARD_DIRECT
43 } VCardType;
44
45 typedef enum {
46     VCARD_POWER_ON,
47     VCARD_POWER_OFF
48 } VCardPower;
49
50 typedef VCardStatus (*VCardProcessAPDU)(VCard *card, VCardAPDU *apdu,
51                                         VCardResponse **response);
52 typedef VCardStatus (*VCardResetApplet)(VCard *card, int channel);
53 typedef void (*VCardAppletPrivateFree) (VCardAppletPrivate *);
54 typedef void (*VCardEmulFree) (VCardEmul *);
55 typedef void (*VCardGetAtr) (VCard *, unsigned char *atr, int *atr_len);
56
57 struct VCardBufferResponseStruct {
58     unsigned char *buffer;
59     int buffer_len;
60     unsigned char *current;
61     int len;
62 };
63
64 #endif