1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<html>
3  <head>
4    <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
5    <title>File Index</title>
6    <link href="doxygen.css" rel="stylesheet" type="text/css">
7  </head>
8  <body>
9<!-- Generated by Doxygen 1.7.4 -->
10  <div id="navrow1" class="tabs">
11    <ul class="tablist">
12      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
13      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
14      <li class="current"><a href="files.html"><span>Files</span></a></li>
15    </ul>
16  </div>
17  <div id="navrow2" class="tabs2">
18    <ul class="tablist">
19      <li><a href="files.html"><span>File&#160;List</span></a></li>
20      <li><a href="globals.html"><span>Globals</span></a></li>
21    </ul>
22  </div>
23</div>
24<div id="side-nav" class="ui-resizable side-nav-resizable">
25  <div id="nav-tree">
26    <div id="nav-tree-contents">
27    </div>
28  </div>
29  <div id="splitbar" style="-moz-user-select:none;" 
30       class="ui-resizable-handle">
31  </div>
32</div>
33<script type="text/javascript">
34  initNavTree('usb-common_8c.html','');
35</script>
36<div id="doc-content">
37<div class="header">
38  <div class="summary">
39<a href="#define-members">Defines</a> &#124;
40<a href="#func-members">Functions</a>  </div>
41  <div class="headertitle">
42<div class="title">usb-common.c File Reference</div>  </div>
43</div>
44<div class="contents">
45<div class="textblock"><code>#include &quot;<a class="el" href="usb-private_8h_source.html">usb-private.h</a>&quot;</code><br/>
46<code>#include &quot;<a class="el" href="usb-mouse_8h_source.html">usb-mouse.h</a>&quot;</code><br/>
47</div><table class="memberdecls">
48<tr><td colspan="2"><h2><a name="define-members"></a>
49Defines</h2></td></tr>
50<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a4745b9c19ea1cc480dc2b58e59d1e9bb">USB_COMMON_DEBUG</a>&#160;&#160;&#160;1</td></tr>
51<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#aacf069d346230dd96812d5395728eef2">GETPRIV</a></td></tr>
52<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a5340233a04762d00a2fc39e922489cbd">GETNAME</a></td></tr>
53<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a837722a322e811d5e42242655f277b87">LOG0</a>(f)&#160;&#160;&#160;dmxLog(dmxDebug,f)</td></tr>
54<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#aab4b3434c36117a2ecdddec40716d97a">LOG1</a>(f, a)&#160;&#160;&#160;dmxLog(dmxDebug,f,a)</td></tr>
55<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a16da5d597d9bfb9e569a9bfb6996382c">LOG2</a>(f, a, b)&#160;&#160;&#160;dmxLog(dmxDebug,f,a,b)</td></tr>
56<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a8247f0bca25789d2ac27674eb26e223f">LOG3</a>(f, a, b, c)&#160;&#160;&#160;dmxLog(dmxDebug,f,a,b,c)</td></tr>
57<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a362570e9b2c9ac295638be490c81d1fb">LOG1INPUT</a>(p, f, a)&#160;&#160;&#160;dmxLogInput(p-&gt;dmxInput,f,a)</td></tr>
58<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#ab34476eaeb97ba2e10bab547085c22b8">LOG3INPUT</a>(p, f, a, b, c)&#160;&#160;&#160;dmxLogInput(p-&gt;dmxInput,f,a,b,c)</td></tr>
59<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#aa9a2c0ce5f5776ac17b498dc1d90ce1f">LOG5INPUT</a>(p, f, a, b, c, d, e)&#160;&#160;&#160;dmxLogInput(p-&gt;dmxInput,f,a,b,c,d,e)</td></tr>
60<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a6bce6020b913db8afe5d94bc63d1b355">FATAL0</a>(f)&#160;&#160;&#160;dmxLog(dmxFatal,f)</td></tr>
61<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a11bcea7c6bc7dbe400a3855f5b8676ce">FATAL1</a>(f, a)&#160;&#160;&#160;dmxLog(dmxFatal,f,a)</td></tr>
62<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a7952c9e9fe9c75be4964fc53a4299183">FATAL2</a>(f, a, b)&#160;&#160;&#160;dmxLog(dmxFatal,f,a,b)</td></tr>
63<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a11a17082bee3b1b8217ce8a12adcf814">MOTIONPROC</a>&#160;&#160;&#160;<a class="el" href="dmxinputinit_8h.html#a1279820425966adabf5c77357e4a289c">dmxMotionProcPtr</a></td></tr>
64<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a017080ce5e42667a6582cf858e7185cd">ENQUEUEPROC</a>&#160;&#160;&#160;<a class="el" href="dmxinputinit_8h.html#adbd955b9ddbc5ffe38ff65e3f068f205">dmxEnqueueProcPtr</a></td></tr>
65<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#aa35a985e998ad5e2187e13434dca118a">CHECKPROC</a>&#160;&#160;&#160;<a class="el" href="dmxinputinit_8h.html#a838cb45fd92d5cf506e4179b601f7dbc">dmxCheckSpecialProcPtr</a></td></tr>
66<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a52220397ecea855b3a99746e451426e1">BLOCK</a>&#160;&#160;&#160;<a class="el" href="dmxinput_8h.html#a3a7195ab3516c5354bac4ca80b2eedb7">DMXBlockType</a></td></tr>
67<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a7581da9bfd7ebf4fe3703352df521931">PRESS</a>(b)</td></tr>
68<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a2b4d2480737f9eb52f80998518486f01">RELEASE</a>(b)</td></tr>
69<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a36b621e66020a8ee4641d56c73c4226b">test_bit</a>(bit)&#160;&#160;&#160;(priv-&gt;mask[(bit)/8] &amp; (1 &lt;&lt; ((bit)%8)))</td></tr>
70<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a228e7b7d6adf81ad78bc848896044085">test_bits</a>(bit)&#160;&#160;&#160;(bits[(bit)/8] &amp; (1 &lt;&lt; ((bit)%8)))</td></tr>
71<tr><td colspan="2"><h2><a name="func-members"></a>
72Functions</h2></td></tr>
73<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#ae20f3b14463c8e288041f9970e388950">usbRead</a> (DevicePtr pDev, MOTIONPROC motion, ENQUEUEPROC enqueue, int minButton, BLOCK block)</td></tr>
74<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a01c83154e667f74a79fac7b951208646">usbPrint</a> (<a class="el" href="struct__myPrivate.html">myPrivate</a> *priv, const char *filename, const char *devname, int fd)</td></tr>
75<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a7f9b3a6d320a9ddbed689f4e12acb443">usbInit</a> (DevicePtr pDev, <a class="el" href="usb-common_8h.html#a5e4410bf95babe73bcecc612691fc2d0">usbType</a> type)</td></tr>
76<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#aa86d87cabbc0971c51452970b7dc879f">usbOff</a> (DevicePtr pDev)</td></tr>
77<tr><td class="memItemLeft" align="right" valign="top">pointer&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a580f9f4ac56071b925cbf63d8b9dc706">usbCreatePrivate</a> (DeviceIntPtr pDevice)</td></tr>
78<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="usb-common_8c.html#a0eca0051ed4a3a117d504d6a82c65313">usbDestroyPrivate</a> (pointer priv)</td></tr>
79</table>
80<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
81<div class="textblock"><p>Routines that are common between <em><a class="el" href="usb-keyboard_8c.html">usb-keyboard.c</a></em>, <em><a class="el" href="usb-mouse_8c.html">usb-mouse.c</a></em>, and <em><a class="el" href="usb-other_8c.html">usb-other.c</a></em> </p>
82</div><hr/><h2>Define Documentation</h2>
83<a class="anchor" id="a52220397ecea855b3a99746e451426e1"></a><!-- doxytag: member="usb&#45;common.c::BLOCK" ref="a52220397ecea855b3a99746e451426e1" args="" -->
84<div class="memitem">
85<div class="memproto">
86      <table class="memname">
87        <tr>
88          <td class="memname">#define BLOCK&#160;&#160;&#160;<a class="el" href="dmxinput_8h.html#a3a7195ab3516c5354bac4ca80b2eedb7">DMXBlockType</a></td>
89        </tr>
90      </table>
91</div>
92<div class="memdoc">
93
94</div>
95</div>
96<a class="anchor" id="aa35a985e998ad5e2187e13434dca118a"></a><!-- doxytag: member="usb&#45;common.c::CHECKPROC" ref="aa35a985e998ad5e2187e13434dca118a" args="" -->
97<div class="memitem">
98<div class="memproto">
99      <table class="memname">
100        <tr>
101          <td class="memname">#define CHECKPROC&#160;&#160;&#160;<a class="el" href="dmxinputinit_8h.html#a838cb45fd92d5cf506e4179b601f7dbc">dmxCheckSpecialProcPtr</a></td>
102        </tr>
103      </table>
104</div>
105<div class="memdoc">
106
107</div>
108</div>
109<a class="anchor" id="a017080ce5e42667a6582cf858e7185cd"></a><!-- doxytag: member="usb&#45;common.c::ENQUEUEPROC" ref="a017080ce5e42667a6582cf858e7185cd" args="" -->
110<div class="memitem">
111<div class="memproto">
112      <table class="memname">
113        <tr>
114          <td class="memname">#define ENQUEUEPROC&#160;&#160;&#160;<a class="el" href="dmxinputinit_8h.html#adbd955b9ddbc5ffe38ff65e3f068f205">dmxEnqueueProcPtr</a></td>
115        </tr>
116      </table>
117</div>
118<div class="memdoc">
119
120</div>
121</div>
122<a class="anchor" id="a6bce6020b913db8afe5d94bc63d1b355"></a><!-- doxytag: member="usb&#45;common.c::FATAL0" ref="a6bce6020b913db8afe5d94bc63d1b355" args="(f)" -->
123<div class="memitem">
124<div class="memproto">
125      <table class="memname">
126        <tr>
127          <td class="memname">#define FATAL0</td>
128          <td>(</td>
129          <td class="paramtype">&#160;</td>
130          <td class="paramname">f</td><td>)</td>
131          <td>&#160;&#160;&#160;dmxLog(dmxFatal,f)</td>
132        </tr>
133      </table>
134</div>
135<div class="memdoc">
136
137</div>
138</div>
139<a class="anchor" id="a11bcea7c6bc7dbe400a3855f5b8676ce"></a><!-- doxytag: member="usb&#45;common.c::FATAL1" ref="a11bcea7c6bc7dbe400a3855f5b8676ce" args="(f, a)" -->
140<div class="memitem">
141<div class="memproto">
142      <table class="memname">
143        <tr>
144          <td class="memname">#define FATAL1</td>
145          <td>(</td>
146          <td class="paramtype">&#160;</td>
147          <td class="paramname">f, </td>
148        </tr>
149        <tr>
150          <td class="paramkey"></td>
151          <td></td>
152          <td class="paramtype">&#160;</td>
153          <td class="paramname">a&#160;</td>
154        </tr>
155        <tr>
156          <td></td>
157          <td>)</td>
158          <td></td><td>&#160;&#160;&#160;dmxLog(dmxFatal,f,a)</td>
159        </tr>
160      </table>
161</div>
162<div class="memdoc">
163
164<p>Referenced by <a class="el" href="usb-common_8h.html#a7f9b3a6d320a9ddbed689f4e12acb443">usbInit()</a>.</p>
165
166</div>
167</div>
168<a class="anchor" id="a7952c9e9fe9c75be4964fc53a4299183"></a><!-- doxytag: member="usb&#45;common.c::FATAL2" ref="a7952c9e9fe9c75be4964fc53a4299183" args="(f, a, b)" -->
169<div class="memitem">
170<div class="memproto">
171      <table class="memname">
172        <tr>
173          <td class="memname">#define FATAL2</td>
174          <td>(</td>
175          <td class="paramtype">&#160;</td>
176          <td class="paramname">f, </td>
177        </tr>
178        <tr>
179          <td class="paramkey"></td>
180          <td></td>
181          <td class="paramtype">&#160;</td>
182          <td class="paramname">a, </td>
183        </tr>
184        <tr>
185          <td class="paramkey"></td>
186          <td></td>
187          <td class="paramtype">&#160;</td>
188          <td class="paramname">b&#160;</td>
189        </tr>
190        <tr>
191          <td></td>
192          <td>)</td>
193          <td></td><td>&#160;&#160;&#160;dmxLog(dmxFatal,f,a,b)</td>
194        </tr>
195      </table>
196</div>
197<div class="memdoc">
198
199</div>
200</div>
201<a class="anchor" id="a5340233a04762d00a2fc39e922489cbd"></a><!-- doxytag: member="usb&#45;common.c::GETNAME" ref="a5340233a04762d00a2fc39e922489cbd" args="" -->
202<div class="memitem">
203<div class="memproto">
204      <table class="memname">
205        <tr>
206          <td class="memname">#define GETNAME</td>
207        </tr>
208      </table>
209</div>
210<div class="memdoc">
211<b>Value:</b><div class="fragment"><pre class="fragment">((<a class="code" href="dmxinput_8h.html#adb148db00fe0adf1938b815b9b934d26">DMXLocalInputInfoPtr</a>)(pDevice-&gt;public.devicePrivate)) \
212                      -&gt;name
213</pre></div>
214<p>Referenced by <a class="el" href="usb-common_8c.html#a01c83154e667f74a79fac7b951208646">usbPrint()</a>.</p>
215
216</div>
217</div>
218<a class="anchor" id="aacf069d346230dd96812d5395728eef2"></a><!-- doxytag: member="usb&#45;common.c::GETPRIV" ref="aacf069d346230dd96812d5395728eef2" args="" -->
219<div class="memitem">
220<div class="memproto">
221      <table class="memname">
222        <tr>
223          <td class="memname">#define GETPRIV</td>
224        </tr>
225      </table>
226</div>
227<div class="memdoc">
228<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="struct__myPrivate.html">myPrivate</a> *priv                                         \
229                      = ((<a class="code" href="dmxinput_8h.html#adb148db00fe0adf1938b815b9b934d26">DMXLocalInputInfoPtr</a>)(pDev-&gt;devicePrivate))-&gt;private
230</pre></div>
231<p>Referenced by <a class="el" href="usb-common_8h.html#a7f9b3a6d320a9ddbed689f4e12acb443">usbInit()</a>, <a class="el" href="usb-common_8h.html#aa86d87cabbc0971c51452970b7dc879f">usbOff()</a>, and <a class="el" href="usb-common_8c.html#ae20f3b14463c8e288041f9970e388950">usbRead()</a>.</p>
232
233</div>
234</div>
235<a class="anchor" id="a837722a322e811d5e42242655f277b87"></a><!-- doxytag: member="usb&#45;common.c::LOG0" ref="a837722a322e811d5e42242655f277b87" args="(f)" -->
236<div class="memitem">
237<div class="memproto">
238      <table class="memname">
239        <tr>
240          <td class="memname">#define LOG0</td>
241          <td>(</td>
242          <td class="paramtype">&#160;</td>
243          <td class="paramname">f</td><td>)</td>
244          <td>&#160;&#160;&#160;dmxLog(dmxDebug,f)</td>
245        </tr>
246      </table>
247</div>
248<div class="memdoc">
249
250</div>
251</div>
252<a class="anchor" id="aab4b3434c36117a2ecdddec40716d97a"></a><!-- doxytag: member="usb&#45;common.c::LOG1" ref="aab4b3434c36117a2ecdddec40716d97a" args="(f, a)" -->
253<div class="memitem">
254<div class="memproto">
255      <table class="memname">
256        <tr>
257          <td class="memname">#define LOG1</td>
258          <td>(</td>
259          <td class="paramtype">&#160;</td>
260          <td class="paramname">f, </td>
261        </tr>
262        <tr>
263          <td class="paramkey"></td>
264          <td></td>
265          <td class="paramtype">&#160;</td>
266          <td class="paramname">a&#160;</td>
267        </tr>
268        <tr>
269          <td></td>
270          <td>)</td>
271          <td></td><td>&#160;&#160;&#160;dmxLog(dmxDebug,f,a)</td>
272        </tr>
273      </table>
274</div>
275<div class="memdoc">
276
277</div>
278</div>
279<a class="anchor" id="a362570e9b2c9ac295638be490c81d1fb"></a><!-- doxytag: member="usb&#45;common.c::LOG1INPUT" ref="a362570e9b2c9ac295638be490c81d1fb" args="(p, f, a)" -->
280<div class="memitem">
281<div class="memproto">
282      <table class="memname">
283        <tr>
284          <td class="memname">#define LOG1INPUT</td>
285          <td>(</td>
286          <td class="paramtype">&#160;</td>
287          <td class="paramname">p, </td>
288        </tr>
289        <tr>
290          <td class="paramkey"></td>
291          <td></td>
292          <td class="paramtype">&#160;</td>
293          <td class="paramname">f, </td>
294        </tr>
295        <tr>
296          <td class="paramkey"></td>
297          <td></td>
298          <td class="paramtype">&#160;</td>
299          <td class="paramname">a&#160;</td>
300        </tr>
301        <tr>
302          <td></td>
303          <td>)</td>
304          <td></td><td>&#160;&#160;&#160;dmxLogInput(p-&gt;dmxInput,f,a)</td>
305        </tr>
306      </table>
307</div>
308<div class="memdoc">
309
310<p>Referenced by <a class="el" href="usb-common_8c.html#a01c83154e667f74a79fac7b951208646">usbPrint()</a>.</p>
311
312</div>
313</div>
314<a class="anchor" id="a16da5d597d9bfb9e569a9bfb6996382c"></a><!-- doxytag: member="usb&#45;common.c::LOG2" ref="a16da5d597d9bfb9e569a9bfb6996382c" args="(f, a, b)" -->
315<div class="memitem">
316<div class="memproto">
317      <table class="memname">
318        <tr>
319          <td class="memname">#define LOG2</td>
320          <td>(</td>
321          <td class="paramtype">&#160;</td>
322          <td class="paramname">f, </td>
323        </tr>
324        <tr>
325          <td class="paramkey"></td>
326          <td></td>
327          <td class="paramtype">&#160;</td>
328          <td class="paramname">a, </td>
329        </tr>
330        <tr>
331          <td class="paramkey"></td>
332          <td></td>
333          <td class="paramtype">&#160;</td>
334          <td class="paramname">b&#160;</td>
335        </tr>
336        <tr>
337          <td></td>
338          <td>)</td>
339          <td></td><td>&#160;&#160;&#160;dmxLog(dmxDebug,f,a,b)</td>
340        </tr>
341      </table>
342</div>
343<div class="memdoc">
344
345</div>
346</div>
347<a class="anchor" id="a8247f0bca25789d2ac27674eb26e223f"></a><!-- doxytag: member="usb&#45;common.c::LOG3" ref="a8247f0bca25789d2ac27674eb26e223f" args="(f, a, b, c)" -->
348<div class="memitem">
349<div class="memproto">
350      <table class="memname">
351        <tr>
352          <td class="memname">#define LOG3</td>
353          <td>(</td>
354          <td class="paramtype">&#160;</td>
355          <td class="paramname">f, </td>
356        </tr>
357        <tr>
358          <td class="paramkey"></td>
359          <td></td>
360          <td class="paramtype">&#160;</td>
361          <td class="paramname">a, </td>
362        </tr>
363        <tr>
364          <td class="paramkey"></td>
365          <td></td>
366          <td class="paramtype">&#160;</td>
367          <td class="paramname">b, </td>
368        </tr>
369        <tr>
370          <td class="paramkey"></td>
371          <td></td>
372          <td class="paramtype">&#160;</td>
373          <td class="paramname">c&#160;</td>
374        </tr>
375        <tr>
376          <td></td>
377          <td>)</td>
378          <td></td><td>&#160;&#160;&#160;dmxLog(dmxDebug,f,a,b,c)</td>
379        </tr>
380      </table>
381</div>
382<div class="memdoc">
383
384<p>Referenced by <a class="el" href="usb-common_8c.html#ae20f3b14463c8e288041f9970e388950">usbRead()</a>.</p>
385
386</div>
387</div>
388<a class="anchor" id="ab34476eaeb97ba2e10bab547085c22b8"></a><!-- doxytag: member="usb&#45;common.c::LOG3INPUT" ref="ab34476eaeb97ba2e10bab547085c22b8" args="(p, f, a, b, c)" -->
389<div class="memitem">
390<div class="memproto">
391      <table class="memname">
392        <tr>
393          <td class="memname">#define LOG3INPUT</td>
394          <td>(</td>
395          <td class="paramtype">&#160;</td>
396          <td class="paramname">p, </td>
397        </tr>
398        <tr>
399          <td class="paramkey"></td>
400          <td></td>
401          <td class="paramtype">&#160;</td>
402          <td class="paramname">f, </td>
403        </tr>
404        <tr>
405          <td class="paramkey"></td>
406          <td></td>
407          <td class="paramtype">&#160;</td>
408          <td class="paramname">a, </td>
409        </tr>
410        <tr>
411          <td class="paramkey"></td>
412          <td></td>
413          <td class="paramtype">&#160;</td>
414          <td class="paramname">b, </td>
415        </tr>
416        <tr>
417          <td class="paramkey"></td>
418          <td></td>
419          <td class="paramtype">&#160;</td>
420          <td class="paramname">c&#160;</td>
421        </tr>
422        <tr>
423          <td></td>
424          <td>)</td>
425          <td></td><td>&#160;&#160;&#160;dmxLogInput(p-&gt;dmxInput,f,a,b,c)</td>
426        </tr>
427      </table>
428</div>
429<div class="memdoc">
430
431<p>Referenced by <a class="el" href="usb-common_8c.html#a01c83154e667f74a79fac7b951208646">usbPrint()</a>.</p>
432
433</div>
434</div>
435<a class="anchor" id="aa9a2c0ce5f5776ac17b498dc1d90ce1f"></a><!-- doxytag: member="usb&#45;common.c::LOG5INPUT" ref="aa9a2c0ce5f5776ac17b498dc1d90ce1f" args="(p, f, a, b, c, d, e)" -->
436<div class="memitem">
437<div class="memproto">
438      <table class="memname">
439        <tr>
440          <td class="memname">#define LOG5INPUT</td>
441          <td>(</td>
442          <td class="paramtype">&#160;</td>
443          <td class="paramname">p, </td>
444        </tr>
445        <tr>
446          <td class="paramkey"></td>
447          <td></td>
448          <td class="paramtype">&#160;</td>
449          <td class="paramname">f, </td>
450        </tr>
451        <tr>
452          <td class="paramkey"></td>
453          <td></td>
454          <td class="paramtype">&#160;</td>
455          <td class="paramname">a, </td>
456        </tr>
457        <tr>
458          <td class="paramkey"></td>
459          <td></td>
460          <td class="paramtype">&#160;</td>
461          <td class="paramname">b, </td>
462        </tr>
463        <tr>
464          <td class="paramkey"></td>
465          <td></td>
466          <td class="paramtype">&#160;</td>
467          <td class="paramname">c, </td>
468        </tr>
469        <tr>
470          <td class="paramkey"></td>
471          <td></td>
472          <td class="paramtype">&#160;</td>
473          <td class="paramname">d, </td>
474        </tr>
475        <tr>
476          <td class="paramkey"></td>
477          <td></td>
478          <td class="paramtype">&#160;</td>
479          <td class="paramname">e&#160;</td>
480        </tr>
481        <tr>
482          <td></td>
483          <td>)</td>
484          <td></td><td>&#160;&#160;&#160;dmxLogInput(p-&gt;dmxInput,f,a,b,c,d,e)</td>
485        </tr>
486      </table>
487</div>
488<div class="memdoc">
489
490<p>Referenced by <a class="el" href="usb-common_8c.html#a01c83154e667f74a79fac7b951208646">usbPrint()</a>.</p>
491
492</div>
493</div>
494<a class="anchor" id="a11a17082bee3b1b8217ce8a12adcf814"></a><!-- doxytag: member="usb&#45;common.c::MOTIONPROC" ref="a11a17082bee3b1b8217ce8a12adcf814" args="" -->
495<div class="memitem">
496<div class="memproto">
497      <table class="memname">
498        <tr>
499          <td class="memname">#define MOTIONPROC&#160;&#160;&#160;<a class="el" href="dmxinputinit_8h.html#a1279820425966adabf5c77357e4a289c">dmxMotionProcPtr</a></td>
500        </tr>
501      </table>
502</div>
503<div class="memdoc">
504
505</div>
506</div>
507<a class="anchor" id="a7581da9bfd7ebf4fe3703352df521931"></a><!-- doxytag: member="usb&#45;common.c::PRESS" ref="a7581da9bfd7ebf4fe3703352df521931" args="(b)" -->
508<div class="memitem">
509<div class="memproto">
510      <table class="memname">
511        <tr>
512          <td class="memname">#define PRESS</td>
513          <td>(</td>
514          <td class="paramtype">&#160;</td>
515          <td class="paramname">b</td><td>)</td>
516          <td></td>
517        </tr>
518      </table>
519</div>
520<div class="memdoc">
521<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                                                 \
522        enqueue(pDev, ButtonPress, 0, 0, NULL, block);   \
523    } <span class="keywordflow">while</span> (0)
524</pre></div>
525</div>
526</div>
527<a class="anchor" id="a2b4d2480737f9eb52f80998518486f01"></a><!-- doxytag: member="usb&#45;common.c::RELEASE" ref="a2b4d2480737f9eb52f80998518486f01" args="(b)" -->
528<div class="memitem">
529<div class="memproto">
530      <table class="memname">
531        <tr>
532          <td class="memname">#define RELEASE</td>
533          <td>(</td>
534          <td class="paramtype">&#160;</td>
535          <td class="paramname">b</td><td>)</td>
536          <td></td>
537        </tr>
538      </table>
539</div>
540<div class="memdoc">
541<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                                                 \
542        enqueue(pDev, ButtonRelease, 0, 0, NULL, block); \
543    } <span class="keywordflow">while</span> (0)
544</pre></div>
545</div>
546</div>
547<a class="anchor" id="a36b621e66020a8ee4641d56c73c4226b"></a><!-- doxytag: member="usb&#45;common.c::test_bit" ref="a36b621e66020a8ee4641d56c73c4226b" args="(bit)" -->
548<div class="memitem">
549<div class="memproto">
550      <table class="memname">
551        <tr>
552          <td class="memname">#define test_bit</td>
553          <td>(</td>
554          <td class="paramtype">&#160;</td>
555          <td class="paramname">bit</td><td>)</td>
556          <td>&#160;&#160;&#160;(priv-&gt;mask[(bit)/8] &amp; (1 &lt;&lt; ((bit)%8)))</td>
557        </tr>
558      </table>
559</div>
560<div class="memdoc">
561
562<p>Referenced by <a class="el" href="usb-other_8h.html#a35a421bfc49015d8ed37cac84746ba78">othUSBGetInfo()</a>, <a class="el" href="usb-common_8h.html#a7f9b3a6d320a9ddbed689f4e12acb443">usbInit()</a>, and <a class="el" href="usb-common_8c.html#a01c83154e667f74a79fac7b951208646">usbPrint()</a>.</p>
563
564</div>
565</div>
566<a class="anchor" id="a228e7b7d6adf81ad78bc848896044085"></a><!-- doxytag: member="usb&#45;common.c::test_bits" ref="a228e7b7d6adf81ad78bc848896044085" args="(bit)" -->
567<div class="memitem">
568<div class="memproto">
569      <table class="memname">
570        <tr>
571          <td class="memname">#define test_bits</td>
572          <td>(</td>
573          <td class="paramtype">&#160;</td>
574          <td class="paramname">bit</td><td>)</td>
575          <td>&#160;&#160;&#160;(bits[(bit)/8] &amp; (1 &lt;&lt; ((bit)%8)))</td>
576        </tr>
577      </table>
578</div>
579<div class="memdoc">
580
581<p>Referenced by <a class="el" href="usb-common_8h.html#a7f9b3a6d320a9ddbed689f4e12acb443">usbInit()</a>, and <a class="el" href="usb-common_8c.html#a01c83154e667f74a79fac7b951208646">usbPrint()</a>.</p>
582
583</div>
584</div>
585<a class="anchor" id="a4745b9c19ea1cc480dc2b58e59d1e9bb"></a><!-- doxytag: member="usb&#45;common.c::USB_COMMON_DEBUG" ref="a4745b9c19ea1cc480dc2b58e59d1e9bb" args="" -->
586<div class="memitem">
587<div class="memproto">
588      <table class="memname">
589        <tr>
590          <td class="memname">#define USB_COMMON_DEBUG&#160;&#160;&#160;1</td>
591        </tr>
592      </table>
593</div>
594<div class="memdoc">
595
596</div>
597</div>
598<hr/><h2>Function Documentation</h2>
599<a class="anchor" id="a580f9f4ac56071b925cbf63d8b9dc706"></a><!-- doxytag: member="usb&#45;common.c::usbCreatePrivate" ref="a580f9f4ac56071b925cbf63d8b9dc706" args="(DeviceIntPtr pDevice)" -->
600<div class="memitem">
601<div class="memproto">
602      <table class="memname">
603        <tr>
604          <td class="memname">pointer usbCreatePrivate </td>
605          <td>(</td>
606          <td class="paramtype">DeviceIntPtr&#160;</td>
607          <td class="paramname"><em>pDevice</em></td><td>)</td>
608          <td></td>
609        </tr>
610      </table>
611</div>
612<div class="memdoc">
613<p>Create a private structure for use within this file. </p>
614
615<p>References <a class="el" href="struct__myPrivate.html#a6b26eb0acc0b932c8dee8277501e6273">_myPrivate::fd</a>, and <a class="el" href="struct__myPrivate.html#ae08ddb2f15fe104faf25f51f05c26033">_myPrivate::pDevice</a>.</p>
616
617</div>
618</div>
619<a class="anchor" id="a0eca0051ed4a3a117d504d6a82c65313"></a><!-- doxytag: member="usb&#45;common.c::usbDestroyPrivate" ref="a0eca0051ed4a3a117d504d6a82c65313" args="(pointer priv)" -->
620<div class="memitem">
621<div class="memproto">
622      <table class="memname">
623        <tr>
624          <td class="memname">void usbDestroyPrivate </td>
625          <td>(</td>
626          <td class="paramtype">pointer&#160;</td>
627          <td class="paramname"><em>priv</em></td><td>)</td>
628          <td></td>
629        </tr>
630      </table>
631</div>
632<div class="memdoc">
633<p>Destroy a private structure. </p>
634
635</div>
636</div>
637<a class="anchor" id="a7f9b3a6d320a9ddbed689f4e12acb443"></a><!-- doxytag: member="usb&#45;common.c::usbInit" ref="a7f9b3a6d320a9ddbed689f4e12acb443" args="(DevicePtr pDev, usbType type)" -->
638<div class="memitem">
639<div class="memproto">
640      <table class="memname">
641        <tr>
642          <td class="memname">void usbInit </td>
643          <td>(</td>
644          <td class="paramtype">DevicePtr&#160;</td>
645          <td class="paramname"><em>pDev</em>, </td>
646        </tr>
647        <tr>
648          <td class="paramkey"></td>
649          <td></td>
650          <td class="paramtype"><a class="el" href="usb-common_8h.html#a5e4410bf95babe73bcecc612691fc2d0">usbType</a>&#160;</td>
651          <td class="paramname"><em>type</em>&#160;</td>
652        </tr>
653        <tr>
654          <td></td>
655          <td>)</td>
656          <td></td><td></td>
657        </tr>
658      </table>
659</div>
660<div class="memdoc">
661<p>Initialized <em>pDev</em> as a <em>usbMouse</em>, <em>usbKeyboard</em>, or <em>usbOther</em> device. </p>
662
663<p>References <a class="el" href="usb-common_8c.html#a11bcea7c6bc7dbe400a3855f5b8676ce">FATAL1</a>, <a class="el" href="usb-common_8c.html#aacf069d346230dd96812d5395728eef2">GETPRIV</a>, <a class="el" href="dmxsigio_8c.html#a39d33ce33804efd4d52606d59071c6d8">O_NONBLOCK</a>, <a class="el" href="usb-common_8c.html#a36b621e66020a8ee4641d56c73c4226b">test_bit</a>, <a class="el" href="usb-common_8c.html#a228e7b7d6adf81ad78bc848896044085">test_bits</a>, <a class="el" href="usb-common_8h.html#a5e4410bf95babe73bcecc612691fc2d0ac0ee79f0c48b61dfd08fff502a2752a3">usbKeyboard</a>, <a class="el" href="usb-common_8h.html#a5e4410bf95babe73bcecc612691fc2d0a6bd9e53b1b5835e304e54ba13a227de7">usbMouse</a>, <a class="el" href="usb-common_8h.html#a5e4410bf95babe73bcecc612691fc2d0acf68ef2e5cae37647c412e73c93960fb">usbOther</a>, and <a class="el" href="usb-common_8c.html#a01c83154e667f74a79fac7b951208646">usbPrint()</a>.</p>
664
665<p>Referenced by <a class="el" href="usb-keyboard_8h.html#a294cdaa0f31f5f463562c72107b569f2">kbdUSBInit()</a>, <a class="el" href="usb-mouse_8h.html#a6c0a19ce4ec02df96f781152a8cc5d36">mouUSBInit()</a>, and <a class="el" href="usb-other_8h.html#ad1b551c84928693ea1b2edebf6c4fcff">othUSBInit()</a>.</p>
666
667</div>
668</div>
669<a class="anchor" id="aa86d87cabbc0971c51452970b7dc879f"></a><!-- doxytag: member="usb&#45;common.c::usbOff" ref="aa86d87cabbc0971c51452970b7dc879f" args="(DevicePtr pDev)" -->
670<div class="memitem">
671<div class="memproto">
672      <table class="memname">
673        <tr>
674          <td class="memname">void usbOff </td>
675          <td>(</td>
676          <td class="paramtype">DevicePtr&#160;</td>
677          <td class="paramname"><em>pDev</em></td><td>)</td>
678          <td></td>
679        </tr>
680      </table>
681</div>
682<div class="memdoc">
683<p>Turn <em>pDev</em> off (i.e., stop taking input from <em>pDev</em>). </p>
684
685<p>References <a class="el" href="usb-common_8c.html#aacf069d346230dd96812d5395728eef2">GETPRIV</a>.</p>
686
687</div>
688</div>
689<a class="anchor" id="a01c83154e667f74a79fac7b951208646"></a><!-- doxytag: member="usb&#45;common.c::usbPrint" ref="a01c83154e667f74a79fac7b951208646" args="(myPrivate *priv, const char *filename, const char *devname, int fd)" -->
690<div class="memitem">
691<div class="memproto">
692      <table class="memname">
693        <tr>
694          <td class="memname">static void usbPrint </td>
695          <td>(</td>
696          <td class="paramtype"><a class="el" href="struct__myPrivate.html">myPrivate</a> *&#160;</td>
697          <td class="paramname"><em>priv</em>, </td>
698        </tr>
699        <tr>
700          <td class="paramkey"></td>
701          <td></td>
702          <td class="paramtype">const char *&#160;</td>
703          <td class="paramname"><em>filename</em>, </td>
704        </tr>
705        <tr>
706          <td class="paramkey"></td>
707          <td></td>
708          <td class="paramtype">const char *&#160;</td>
709          <td class="paramname"><em>devname</em>, </td>
710        </tr>
711        <tr>
712          <td class="paramkey"></td>
713          <td></td>
714          <td class="paramtype">int&#160;</td>
715          <td class="paramname"><em>fd</em>&#160;</td>
716        </tr>
717        <tr>
718          <td></td>
719          <td>)</td>
720          <td></td><td><code> [static]</code></td>
721        </tr>
722      </table>
723</div>
724<div class="memdoc">
725
726<p>References <a class="el" href="usb-private_8h.html#a28f782ce9e5d1e3cff987901a7bf6823">ABS_BRAKE</a>, <a class="el" href="usb-private_8h.html#acf2960996b3a73cfa447e18a655690c5">ABS_GAS</a>, <a class="el" href="usb-private_8h.html#abc57d88f908f35bd3c82ba7dff0d97e7">ABS_WHEEL</a>, <a class="el" href="usb-private_8h.html#a97886fd107ad9e34bf130fe2e8a5799a">EV_FF</a>, <a class="el" href="usb-private_8h.html#af2e56f461a160409ab75afaa916beebf">EV_MSC</a>, <a class="el" href="struct__myPrivate.html#a6b26eb0acc0b932c8dee8277501e6273">_myPrivate::fd</a>, <a class="el" href="usb-common_8c.html#a5340233a04762d00a2fc39e922489cbd">GETNAME</a>, <a class="el" href="usb-private_8h.html#acc1dccaea09503c64e9dfb635e19b29a">LED_MISC</a>, <a class="el" href="usb-private_8h.html#a06e2b597089e33458df03d81fa441995">LED_MUTE</a>, <a class="el" href="usb-private_8h.html#ad578ee0c4ea73206378c55bba1135e84">LED_SLEEP</a>, <a class="el" href="usb-private_8h.html#a59fd9fe6c0cd23e8154bc7578d3676a5">LED_SUSPEND</a>, <a class="el" href="usb-common_8c.html#a362570e9b2c9ac295638be490c81d1fb">LOG1INPUT</a>, <a class="el" href="usb-common_8c.html#ab34476eaeb97ba2e10bab547085c22b8">LOG3INPUT</a>, <a class="el" href="usb-common_8c.html#aa9a2c0ce5f5776ac17b498dc1d90ce1f">LOG5INPUT</a>, <a class="el" href="struct__myPrivate.html#ae08ddb2f15fe104faf25f51f05c26033">_myPrivate::pDevice</a>, <a class="el" href="usb-common_8c.html#a36b621e66020a8ee4641d56c73c4226b">test_bit</a>, and <a class="el" href="usb-common_8c.html#a228e7b7d6adf81ad78bc848896044085">test_bits</a>.</p>
727
728<p>Referenced by <a class="el" href="usb-common_8h.html#a7f9b3a6d320a9ddbed689f4e12acb443">usbInit()</a>.</p>
729
730</div>
731</div>
732<a class="anchor" id="ae20f3b14463c8e288041f9970e388950"></a><!-- doxytag: member="usb&#45;common.c::usbRead" ref="ae20f3b14463c8e288041f9970e388950" args="(DevicePtr pDev, MOTIONPROC motion, ENQUEUEPROC enqueue, int minButton, BLOCK block)" -->
733<div class="memitem">
734<div class="memproto">
735      <table class="memname">
736        <tr>
737          <td class="memname">void usbRead </td>
738          <td>(</td>
739          <td class="paramtype">DevicePtr&#160;</td>
740          <td class="paramname"><em>pDev</em>, </td>
741        </tr>
742        <tr>
743          <td class="paramkey"></td>
744          <td></td>
745          <td class="paramtype">MOTIONPROC&#160;</td>
746          <td class="paramname"><em>motion</em>, </td>
747        </tr>
748        <tr>
749          <td class="paramkey"></td>
750          <td></td>
751          <td class="paramtype">ENQUEUEPROC&#160;</td>
752          <td class="paramname"><em>enqueue</em>, </td>
753        </tr>
754        <tr>
755          <td class="paramkey"></td>
756          <td></td>
757          <td class="paramtype">int&#160;</td>
758          <td class="paramname"><em>minButton</em>, </td>
759        </tr>
760        <tr>
761          <td class="paramkey"></td>
762          <td></td>
763          <td class="paramtype">BLOCK&#160;</td>
764          <td class="paramname"><em>block</em>&#160;</td>
765        </tr>
766        <tr>
767          <td></td>
768          <td>)</td>
769          <td></td><td></td>
770        </tr>
771      </table>
772</div>
773<div class="memdoc">
774<p>Read an event from the <em>pDev</em> device. If the event is a motion event, enqueue it with the <em>motion</em> function. Otherwise, enqueue the event with the <em>enqueue</em> function. The <em>block</em> type is passed to the functions so that they may block SIGIO handling as appropriate to the caller of this function.</p>
775<p>Since USB devices return EV_KEY events for buttons and keys, <em>minButton</em> is used to decide if a Button or Key event should be queued. </p>
776
777<p>References <a class="el" href="dmxinputinit_8h.html#a009c1c06db97e0347237f11a701db349a3f6f623d8a62c69c55ec94d33d29af06">DMX_ABSOLUTE</a>, <a class="el" href="dmxevents_8c.html#a144e2f1a618a0d14e2c9ce4fda50104a">DMX_MAX_AXES</a>, <a class="el" href="dmxinputinit_8h.html#a009c1c06db97e0347237f11a701db349a065d85ca14ad2eb8f7bae4eaffac6412">DMX_RELATIVE</a>, <a class="el" href="usb-common_8c.html#aacf069d346230dd96812d5395728eef2">GETPRIV</a>, <a class="el" href="usb-common_8c.html#a8247f0bca25789d2ac27674eb26e223f">LOG3</a>, <a class="el" href="lnx-ms_8c.html#a7581da9bfd7ebf4fe3703352df521931">PRESS</a>, and <a class="el" href="lnx-ms_8c.html#a2b4d2480737f9eb52f80998518486f01">RELEASE</a>.</p>
778
779<p>Referenced by <a class="el" href="usb-mouse_8c.html#ae823cb66bf7678148ffadf3202034921">mouUSBRead()</a>, and <a class="el" href="usb-other_8c.html#a3c2a6d36c58f4372068d019364831151">othUSBRead()</a>.</p>
780
781</div>
782</div>
783</div>
784</div>
785  <div id="nav-path" class="navpath">
786    <ul>
787      <li class="navelem"><a class="el" href="usb-common_8c.html">usb-common.c</a>      </li>
788    <hr>
789    <address>
790      <small>
791        Generated June 29, 2004 for <a
792        href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
793        <a href="http://www.doxygen.org/index.html">doxygen</a>
794        1.3.4.
795      </small>
796    </addres>
797    </hr>
798  </body>
799</html>
800