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 Page</span></a></li>
<li><a href="annotated.html"><span>Data 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> » <a class="el" href="dir_877fe36415f52529fd2e180217ad90f9.html">include</a> » <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 <okir@suse.de></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 <openct/ifd.h></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
<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>
|