File: device_8h-source.html

package info (click to toggle)
openct 0.6.14-3
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 3,796 kB
  • ctags: 3,437
  • sloc: ansic: 19,575; sh: 9,107; makefile: 168
file content (148 lines) | stat: -rw-r--r-- 17,337 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>OpenCT: device.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.1 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li id="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="dirs.html"><span>Directories</span></a></li>
  </ul></div>
<div class="nav">
<a class="el" href="dir_48ff4d8e84c7d8bdad9110a7da283b5f.html">src</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_877fe36415f52529fd2e180217ad90f9.html">include</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_be5e542b2ca1305501268904b0410904.html">openct</a></div>
<h1>device.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Device functions of the IFD handler library</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Copyright (C) 2003, Olaf Kirch &lt;okir@suse.de&gt;</span>
<a name="l00005"></a>00005 <span class="comment"> */</span>
<a name="l00006"></a>00006 
<a name="l00007"></a>00007 <span class="preprocessor">#ifndef OPENCT_DEVICE_H</span>
<a name="l00008"></a>00008 <span class="preprocessor"></span><span class="preprocessor">#define OPENCT_DEVICE_H</span>
<a name="l00009"></a>00009 <span class="preprocessor"></span>
<a name="l00010"></a>00010 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00011"></a>00011 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
<a name="l00012"></a>00012 <span class="preprocessor">#endif</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;openct/ifd.h&gt;</span>
<a name="l00015"></a>00015 
<a name="l00016"></a>00016 <span class="keyword">struct </span>pollfd; <span class="comment">/* for poll_presence */</span>
<a name="l00017"></a>00017 
<a name="l00018"></a>00018 <span class="comment">/* Types of devices supported by libifd */</span>
<a name="l00019"></a>00019 <span class="keyword">enum</span> {
<a name="l00020"></a>00020         IFD_DEVICE_TYPE_SERIAL = 0,
<a name="l00021"></a>00021         IFD_DEVICE_TYPE_USB,
<a name="l00022"></a>00022         IFD_DEVICE_TYPE_PS2,
<a name="l00023"></a>00023         IFD_DEVICE_TYPE_PCMCIA,
<a name="l00024"></a>00024         IFD_DEVICE_TYPE_PCMCIA_BLOCK,
<a name="l00025"></a>00025         IFD_DEVICE_TYPE_OTHER
<a name="l00026"></a>00026 };
<a name="l00027"></a>00027 
<a name="l00028"></a><a class="code" href="unionifd__device__params.html">00028</a> <span class="keyword">union </span><a class="code" href="unionifd__device__params.html">ifd_device_params</a> {
<a name="l00029"></a>00029         <span class="keyword">struct </span>{
<a name="l00030"></a><a class="code" href="unionifd__device__params.html#b89443fa4cb5a95f06e0140ac4442e82">00030</a>                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    <a class="code" href="unionifd__device__params.html#b89443fa4cb5a95f06e0140ac4442e82">speed</a>;
<a name="l00031"></a><a class="code" href="unionifd__device__params.html#4d75079e1d5398dd8074d6a65324e2e2">00031</a>                 <span class="keywordtype">int</span>             <a class="code" href="unionifd__device__params.html#4d75079e1d5398dd8074d6a65324e2e2">bits</a>;
<a name="l00032"></a><a class="code" href="unionifd__device__params.html#024217d28a5be345c3cd71ffda72fc7a">00032</a>                 <span class="keywordtype">int</span>             <a class="code" href="unionifd__device__params.html#024217d28a5be345c3cd71ffda72fc7a">stopbits</a>;
<a name="l00033"></a><a class="code" href="unionifd__device__params.html#0cc4cf76dc8e03611e1121b2f8afb18b">00033</a>                 <span class="keywordtype">int</span>             <a class="code" href="unionifd__device__params.html#0cc4cf76dc8e03611e1121b2f8afb18b">parity</a>;
<a name="l00034"></a><a class="code" href="unionifd__device__params.html#9dc7d35d541018ccfe4d067d7af0aefe">00034</a>                 <span class="keywordtype">int</span>             <a class="code" href="unionifd__device__params.html#9dc7d35d541018ccfe4d067d7af0aefe">check_parity</a>;
<a name="l00035"></a><a class="code" href="unionifd__device__params.html#b1c171ef3d77609326df5644cae5de8e">00035</a>                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    <a class="code" href="unionifd__device__params.html#b1c171ef3d77609326df5644cae5de8e">rts</a> : 1,
<a name="l00036"></a>00036                                 <a class="code" href="unionifd__device__params.html#450c67058710f23b704edf6d41bc7f29">dtr</a> : 1;
<a name="l00037"></a>00037         } serial;
<a name="l00038"></a>00038         <span class="keyword">struct </span>{
<a name="l00039"></a><a class="code" href="unionifd__device__params.html#d71abee2d8c131b4426d40ef854bda6e">00039</a>                 <span class="keywordtype">int</span> <a class="code" href="unionifd__device__params.html#d71abee2d8c131b4426d40ef854bda6e">configuration</a>;
<a name="l00040"></a><a class="code" href="unionifd__device__params.html#7f046bc76a750346f4f50ff077ddb707">00040</a>                 <span class="keywordtype">int</span> <a class="code" href="unionifd__device__params.html#7f046bc76a750346f4f50ff077ddb707">interface</a>;
<a name="l00041"></a><a class="code" href="unionifd__device__params.html#1c0578fd5ed2229a665c29964f2fc55d">00041</a>                 <span class="keywordtype">int</span> <a class="code" href="unionifd__device__params.html#1c0578fd5ed2229a665c29964f2fc55d">altsetting</a>;
<a name="l00042"></a><a class="code" href="unionifd__device__params.html#b9338d6ba958b3bb1018e18cdd376914">00042</a>                 <span class="keywordtype">int</span> <a class="code" href="unionifd__device__params.html#b9338d6ba958b3bb1018e18cdd376914">ep_o</a>;
<a name="l00043"></a><a class="code" href="unionifd__device__params.html#352ece73d21bc12320737e642d44f9db">00043</a>                 <span class="keywordtype">int</span> <a class="code" href="unionifd__device__params.html#352ece73d21bc12320737e642d44f9db">ep_i</a>;
<a name="l00044"></a><a class="code" href="unionifd__device__params.html#815aaee4e556563e5d3f9efdfe801777">00044</a>                 <span class="keywordtype">int</span> <a class="code" href="unionifd__device__params.html#815aaee4e556563e5d3f9efdfe801777">ep_intr</a>;
<a name="l00045"></a>00045         } usb;
<a name="l00046"></a>00046 };
<a name="l00047"></a>00047 
<a name="l00048"></a>00048 <span class="keyword">enum</span> {
<a name="l00049"></a>00049         IFD_SERIAL_PARITY_NONE = 0,
<a name="l00050"></a>00050         IFD_SERIAL_PARITY_ODD  = 1,
<a name="l00051"></a>00051         IFD_SERIAL_PARITY_EVEN = 2
<a name="l00052"></a>00052 };
<a name="l00053"></a>00053 <span class="preprocessor">#define IFD_SERIAL_PARITY_TOGGLE(n)     ((n)? ((n) ^ 3) : 0)</span>
<a name="l00054"></a>00054 <span class="preprocessor"></span>
<a name="l00055"></a>00055 <span class="preprocessor">#define IFD_MAX_DEVID_PARTS     5</span>
<a name="l00056"></a><a class="code" href="structifd__devid.html">00056</a> <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structifd__devid.html">ifd_devid</a> {
<a name="l00057"></a><a class="code" href="structifd__devid.html#d01840ec39b188dae6668c9b87360c23">00057</a>         <span class="keywordtype">int</span>             <a class="code" href="structifd__devid.html#d01840ec39b188dae6668c9b87360c23">type</a>;
<a name="l00058"></a><a class="code" href="structifd__devid.html#38949879293cfec8aeb80c99bb237522">00058</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    <a class="code" href="structifd__devid.html#38949879293cfec8aeb80c99bb237522">num</a>;
<a name="l00059"></a><a class="code" href="structifd__devid.html#1e123109ddfadec6370e2b14991a1ee4">00059</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    <a class="code" href="structifd__devid.html#1e123109ddfadec6370e2b14991a1ee4">val</a>[IFD_MAX_DEVID_PARTS];
<a name="l00060"></a>00060 } <a class="code" href="structifd__devid.html">ifd_devid_t</a>;
<a name="l00061"></a>00061 
<a name="l00062"></a>00062 <span class="comment">/*</span>
<a name="l00063"></a>00063 <span class="comment"> * Control messages to be sent through</span>
<a name="l00064"></a>00064 <span class="comment"> * ifd_device_control must always have a guard word</span>
<a name="l00065"></a>00065 <span class="comment"> * that contains the device type.</span>
<a name="l00066"></a>00066 <span class="comment"> */</span>
<a name="l00067"></a>00067 <span class="keyword">enum</span> {
<a name="l00068"></a>00068         IFD_USB_URB_TYPE_ISO = 0,
<a name="l00069"></a>00069         IFD_USB_URB_TYPE_INTERRUPT = 1,
<a name="l00070"></a>00070         IFD_USB_URB_TYPE_CONTROL = 2,
<a name="l00071"></a>00071         IFD_USB_URB_TYPE_BULK = 3
<a name="l00072"></a>00072 };
<a name="l00073"></a>00073 <span class="keyword">typedef</span> <span class="keyword">struct </span>ifd_usb_capture ifd_usb_capture_t;
<a name="l00074"></a>00074 
<a name="l00075"></a>00075 <span class="keyword">extern</span> ifd_device_t *   ifd_device_open(<span class="keyword">const</span> <span class="keywordtype">char</span> *);
<a name="l00076"></a>00076 <span class="keyword">extern</span> <span class="keywordtype">void</span>             ifd_device_close(ifd_device_t *);
<a name="l00077"></a>00077 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_device_type(ifd_device_t *);
<a name="l00078"></a>00078 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_device_reset(ifd_device_t *);
<a name="l00079"></a>00079 <span class="keyword">extern</span> <span class="keywordtype">void</span>             ifd_device_flush(ifd_device_t *);
<a name="l00080"></a>00080 <span class="keyword">extern</span> <span class="keywordtype">void</span>             ifd_device_send_break(ifd_device_t *, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>);
<a name="l00081"></a>00081 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_device_identify(<span class="keyword">const</span> <span class="keywordtype">char</span> *, <span class="keywordtype">char</span> *, size_t);
<a name="l00082"></a>00082 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_device_get_parameters(ifd_device_t *,
<a name="l00083"></a>00083                                 <a class="code" href="unionifd__device__params.html">ifd_device_params_t</a> *);
<a name="l00084"></a>00084 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_device_set_parameters(ifd_device_t *,
<a name="l00085"></a>00085                                 <span class="keyword">const</span> <a class="code" href="unionifd__device__params.html">ifd_device_params_t</a> *);
<a name="l00086"></a>00086 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_device_transceive(ifd_device_t *,
<a name="l00087"></a>00087                                 <span class="keyword">const</span> <span class="keywordtype">void</span> *, size_t,
<a name="l00088"></a>00088                                 <span class="keywordtype">void</span> *, size_t, <span class="keywordtype">long</span>);
<a name="l00089"></a>00089 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_device_send(ifd_device_t *, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *, size_t);
<a name="l00090"></a>00090 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_device_recv(ifd_device_t *, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *, size_t, <span class="keywordtype">long</span>);
<a name="l00091"></a>00091 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_device_control(ifd_device_t *, <span class="keywordtype">void</span> *, size_t);
<a name="l00092"></a>00092 <span class="keyword">extern</span> <span class="keywordtype">void</span>             ifd_device_set_hotplug(ifd_device_t *, <span class="keywordtype">int</span>);
<a name="l00093"></a>00093 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_device_poll_presence(ifd_device_t *,
<a name="l00094"></a>00094                                 <span class="keyword">struct</span> pollfd *);
<a name="l00095"></a>00095 
<a name="l00096"></a>00096 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_device_id_parse(<span class="keyword">const</span> <span class="keywordtype">char</span> *, <a class="code" href="structifd__devid.html">ifd_devid_t</a> *);
<a name="l00097"></a>00097 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_device_id_match(<span class="keyword">const</span> <a class="code" href="structifd__devid.html">ifd_devid_t</a> *,
<a name="l00098"></a>00098                                 <span class="keyword">const</span> <a class="code" href="structifd__devid.html">ifd_devid_t</a> *);
<a name="l00099"></a>00099 
<a name="l00100"></a>00100 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_usb_control(ifd_device_t *,
<a name="l00101"></a>00101                                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> requesttype,
<a name="l00102"></a>00102                                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> request,
<a name="l00103"></a>00103                                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> value,
<a name="l00104"></a>00104                                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index,
<a name="l00105"></a>00105                                 <span class="keywordtype">void</span> *data, size_t len,
<a name="l00106"></a>00106                                 <span class="keywordtype">long</span> timeout);
<a name="l00107"></a>00107 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_usb_begin_capture(ifd_device_t *,
<a name="l00108"></a>00108                                 <span class="keywordtype">int</span> type, <span class="keywordtype">int</span> endpoint,
<a name="l00109"></a>00109                                 size_t maxpacket,
<a name="l00110"></a>00110                                 ifd_usb_capture_t **);
<a name="l00111"></a>00111 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_usb_capture(ifd_device_t *,
<a name="l00112"></a>00112                                 ifd_usb_capture_t *,
<a name="l00113"></a>00113                                 <span class="keywordtype">void</span> *buffer, size_t len,
<a name="l00114"></a>00114                                 <span class="keywordtype">long</span> timeout);
<a name="l00115"></a>00115 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_usb_end_capture(ifd_device_t *,
<a name="l00116"></a>00116                                 ifd_usb_capture_t *);
<a name="l00117"></a>00117 
<a name="l00118"></a>00118 <span class="keyword">extern</span> <span class="keywordtype">void</span>             ifd_serial_send_break(ifd_device_t *, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> usec);
<a name="l00119"></a>00119 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_serial_get_cts(ifd_device_t *);
<a name="l00120"></a>00120 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_serial_get_dsr(ifd_device_t *);
<a name="l00121"></a>00121 <span class="keyword">extern</span> <span class="keywordtype">int</span>              ifd_serial_get_dtr(ifd_device_t *);
<a name="l00122"></a>00122 
<a name="l00123"></a>00123 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00124"></a>00124 <span class="preprocessor"></span>}
<a name="l00125"></a>00125 <span class="preprocessor">#endif</span>
<a name="l00126"></a>00126 <span class="preprocessor"></span>
<a name="l00127"></a>00127 <span class="preprocessor">#endif </span><span class="comment">/* OPENCT_DEVICE_H */</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Aug 30 20:21:19 2007 for OpenCT by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
</body>
</html>