OpenCT  0.6.20
device.h
1 /*
2  * Device functions of the IFD handler library
3  *
4  * Copyright (C) 2003, Olaf Kirch <okir@suse.de>
5  */
6 
7 #ifndef OPENCT_DEVICE_H
8 #define OPENCT_DEVICE_H
9 
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 #include <openct/ifd.h>
15 
16 struct pollfd; /* for poll_presence */
17 
18 /* Types of devices supported by libifd */
19 enum {
20  IFD_DEVICE_TYPE_SERIAL = 0,
21  IFD_DEVICE_TYPE_USB,
22  IFD_DEVICE_TYPE_PS2,
23  IFD_DEVICE_TYPE_PCMCIA,
24  IFD_DEVICE_TYPE_PCMCIA_BLOCK,
25  IFD_DEVICE_TYPE_OTHER
26 };
27 
29  struct {
30  unsigned int speed;
31  int bits;
32  int stopbits;
33  int parity;
34  int check_parity;
35  unsigned int rts : 1,
36  dtr : 1;
37  } serial;
38  struct {
39  int configuration;
40  int interface;
41  int altsetting;
42  int ep_o;
43  int ep_i;
44  int ep_intr;
45  } usb;
46 };
47 
48 enum {
49  IFD_SERIAL_PARITY_NONE = 0,
50  IFD_SERIAL_PARITY_ODD = 1,
51  IFD_SERIAL_PARITY_EVEN = 2
52 };
53 #define IFD_SERIAL_PARITY_TOGGLE(n) ((n)? ((n) ^ 3) : 0)
54 
55 #define IFD_MAX_DEVID_PARTS 5
56 typedef struct ifd_devid {
57  int type;
58  unsigned int num;
59  unsigned int val[IFD_MAX_DEVID_PARTS];
60 } ifd_devid_t;
61 
62 /*
63  * Control messages to be sent through
64  * ifd_device_control must always have a guard word
65  * that contains the device type.
66  */
67 enum {
68  IFD_USB_URB_TYPE_ISO = 0,
69  IFD_USB_URB_TYPE_INTERRUPT = 1,
70  IFD_USB_URB_TYPE_CONTROL = 2,
71  IFD_USB_URB_TYPE_BULK = 3
72 };
73 typedef struct ifd_usb_capture ifd_usb_capture_t;
74 
75 extern ifd_device_t * ifd_device_open(const char *);
76 extern void ifd_device_close(ifd_device_t *);
77 extern int ifd_device_type(ifd_device_t *);
78 extern int ifd_device_reset(ifd_device_t *);
79 extern void ifd_device_flush(ifd_device_t *);
80 extern void ifd_device_send_break(ifd_device_t *, unsigned int);
81 extern int ifd_device_identify(const char *, char *, size_t);
82 extern int ifd_device_get_parameters(ifd_device_t *,
84 extern int ifd_device_set_parameters(ifd_device_t *,
85  const ifd_device_params_t *);
86 extern int ifd_device_transceive(ifd_device_t *,
87  const void *, size_t,
88  void *, size_t, long);
89 extern int ifd_device_send(ifd_device_t *, const unsigned char *, size_t);
90 extern int ifd_device_recv(ifd_device_t *, unsigned char *, size_t, long);
91 extern int ifd_device_control(ifd_device_t *, void *, size_t);
92 extern void ifd_device_set_hotplug(ifd_device_t *, int);
93 extern int ifd_device_get_eventfd(ifd_device_t *, short *events);
94 extern int ifd_device_poll_presence(ifd_device_t *,
95  struct pollfd *);
96 
97 extern int ifd_device_id_parse(const char *, ifd_devid_t *);
98 extern int ifd_device_id_match(const ifd_devid_t *,
99  const ifd_devid_t *);
100 
101 extern int ifd_usb_control(ifd_device_t *,
102  unsigned int requesttype,
103  unsigned int request,
104  unsigned int value,
105  unsigned int index,
106  void *data, size_t len,
107  long timeout);
108 extern int ifd_usb_begin_capture(ifd_device_t *,
109  int type, int endpoint,
110  size_t maxpacket,
111  ifd_usb_capture_t **);
112 extern int ifd_usb_capture_event(ifd_device_t *,
113  ifd_usb_capture_t *,
114  void *buffer, size_t len);
115 extern int ifd_usb_capture(ifd_device_t *,
116  ifd_usb_capture_t *,
117  void *buffer, size_t len,
118  long timeout);
119 extern int ifd_usb_end_capture(ifd_device_t *,
120  ifd_usb_capture_t *);
121 
122 extern void ifd_serial_send_break(ifd_device_t *, unsigned int usec);
123 extern int ifd_serial_get_cts(ifd_device_t *);
124 extern int ifd_serial_get_dsr(ifd_device_t *);
125 extern int ifd_serial_get_dtr(ifd_device_t *);
126 
127 #ifdef __cplusplus
128 }
129 #endif
130 
131 #endif /* OPENCT_DEVICE_H */

libp11, Copyright (C) 2005 Olaf Kirch <okir@lst.de>OpenSC-Project.org Logo