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
|
<!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: driver.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>driver.h</h1><a href="driver_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00008"></a>00008 <span class="preprocessor">#ifndef OPENCT_DRIVER_H</span>
<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define OPENCT_DRIVER_H</span>
<a name="l00010"></a>00010 <span class="preprocessor"></span>
<a name="l00011"></a>00011 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00012"></a>00012 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
<a name="l00013"></a>00013 <span class="preprocessor">#endif</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <openct/device.h></span>
<a name="l00016"></a>00016
<a name="l00020"></a><a class="code" href="structifd__driver__ops.html">00020</a> <span class="keyword">struct </span><a class="code" href="structifd__driver__ops.html">ifd_driver_ops</a> {
<a name="l00021"></a><a class="code" href="structifd__driver__ops.html#7fe78704cccb77cfb74b777ca715728d">00021</a> <span class="keywordtype">int</span> <a class="code" href="structifd__driver__ops.html#7fe78704cccb77cfb74b777ca715728d">default_protocol</a>;
<a name="l00022"></a>00022
<a name="l00034"></a>00034 int (*<a class="code" href="structifd__driver__ops.html#e7c3cc074db9e78318de2b3724e615b0">open</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader, <span class="keyword">const</span> <span class="keywordtype">char</span> *name);
<a name="l00049"></a>00049 int (*<a class="code" href="structifd__driver__ops.html#0878891a6e17298e3e7e1410ee9745c9">close</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> * reader);
<a name="l00076"></a>00076 int (*<a class="code" href="structifd__driver__ops.html#f2de522962059a3a56ab968027e91c24">change_parity</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader, <span class="keywordtype">int</span> parity);
<a name="l00087"></a>00087 int (*<a class="code" href="structifd__driver__ops.html#ef6ea1368322c8cfd288117d473d8c3a">change_speed</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> speed);
<a name="l00102"></a>00102 int (*<a class="code" href="structifd__driver__ops.html#fd159b180342da11b01872f7cb0020bf">activate</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader);
<a name="l00113"></a>00113 int (*<a class="code" href="structifd__driver__ops.html#4fdec0e01964a5d4e1c46037088cf535">deactivate</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader);
<a name="l00138"></a>00138 int (*<a class="code" href="structifd__driver__ops.html#afa7094557da072235700f64923c72e1">card_status</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader, <span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> *status);
<a name="l00154"></a>00154 int (*<a class="code" href="structifd__driver__ops.html#712ea960720966070212c0721e0c48fc">card_reset</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader, <span class="keywordtype">int</span> slot, <span class="keywordtype">void</span> *atr, size_t atr_len);
<a name="l00169"></a>00169 int (*<a class="code" href="structifd__driver__ops.html#0f225a09bb2372e3d6ce3a1d426fb43a">card_request</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader, <span class="keywordtype">int</span> slot,
<a name="l00170"></a>00170 time_t timeout, <span class="keyword">const</span> <span class="keywordtype">char</span> *message,
<a name="l00171"></a>00171 <span class="keywordtype">void</span> *atr, size_t atr_len);
<a name="l00185"></a>00185 int (*<a class="code" href="structifd__driver__ops.html#aa13167aeabc61ed8af1d6ea58787dcd">card_eject</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader, <span class="keywordtype">int</span> slot,
<a name="l00186"></a>00186 time_t timeout, <span class="keyword">const</span> <span class="keywordtype">char</span> *message);
<a name="l00193"></a>00193 int (*<a class="code" href="structifd__driver__ops.html#38edbb0abab013180c965157d86e178f">output</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader, <span class="keyword">const</span> <span class="keywordtype">char</span> *message);
<a name="l00209"></a>00209 int (*<a class="code" href="structifd__driver__ops.html#2a89a4cd60cf1250550972b68997a097">perform_verify</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader,
<a name="l00210"></a>00210 <span class="keywordtype">int</span> slot, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> timeout, <span class="keyword">const</span> <span class="keywordtype">char</span> *prompt,
<a name="l00211"></a>00211 <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *data, size_t data_len,
<a name="l00212"></a>00212 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *resp, size_t resp_len);
<a name="l00230"></a>00230 int (*<a class="code" href="structifd__driver__ops.html#eff6dffc6f9ea7fe59a412b4a192f09d">send</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader,
<a name="l00231"></a>00231 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dad,
<a name="l00232"></a>00232 <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buffer,
<a name="l00233"></a>00233 size_t len);
<a name="l00247"></a>00247 int (*<a class="code" href="structifd__driver__ops.html#7b255459833f5882809694993f86a6c3">recv</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader,
<a name="l00248"></a>00248 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dad,
<a name="l00249"></a>00249 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buffer,
<a name="l00250"></a>00250 size_t len,
<a name="l00251"></a>00251 <span class="keywordtype">long</span> timeout);
<a name="l00274"></a>00274 int (*<a class="code" href="structifd__driver__ops.html#027a7ead30c7dfb7355119bf011b77cd">set_protocol</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader, <span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> protocol);
<a name="l00290"></a>00290 int (*<a class="code" href="structifd__driver__ops.html#5fa95fb08ef2d77bfacf0815a3e0e55d">transparent</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader, <span class="keywordtype">int</span> slot,
<a name="l00291"></a>00291 <span class="keyword">const</span> <span class="keywordtype">void</span> *sbuf, size_t slen,
<a name="l00292"></a>00292 <span class="keywordtype">void</span> *rbuf, size_t rlen);
<a name="l00304"></a>00304 int (*<a class="code" href="structifd__driver__ops.html#19af854b15071a7b68fc1552d63c35f5">sync_read</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader, <span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> proto,
<a name="l00305"></a>00305 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> addr,
<a name="l00306"></a>00306 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *rbuf, size_t rlen);
<a name="l00318"></a>00318 int (*<a class="code" href="structifd__driver__ops.html#718169f8db482fbaa7e993053ab1e370">sync_write</a>)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader, <span class="keywordtype">int</span> slot, <span class="keywordtype">int</span> proto,
<a name="l00319"></a>00319 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> addr,
<a name="l00320"></a>00320 <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *sbuf, size_t slen);
<a name="l00321"></a>00321
<a name="l00322"></a>00322 <span class="comment">/*Support for transparent access to "escape" */</span>
<a name="l00323"></a>00323 int (*escape)(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *reader, <span class="keywordtype">int</span> slot,
<a name="l00324"></a>00324 <span class="keyword">const</span> <span class="keywordtype">void</span> *sbuf, <span class="keyword">const</span> size_t slen,
<a name="l00325"></a>00325 <span class="keywordtype">void</span> *rbuf, size_t rlen);
<a name="l00326"></a>00326 };
<a name="l00327"></a>00327
<a name="l00328"></a>00328 <span class="keyword">extern</span> <span class="keywordtype">void</span> ifd_driver_register(<span class="keyword">const</span> <span class="keywordtype">char</span> *,
<a name="l00329"></a>00329 <span class="keyword">struct</span> <a class="code" href="structifd__driver__ops.html">ifd_driver_ops</a> *);
<a name="l00330"></a>00330 <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structifd__driver.html">ifd_driver_t</a> *ifd_driver_get(<span class="keyword">const</span> <span class="keywordtype">char</span> *);
<a name="l00331"></a>00331 <span class="keyword">extern</span> <span class="keywordtype">int</span> ifd_driver_add_id(<span class="keyword">const</span> <span class="keywordtype">char</span> *, <span class="keyword">const</span> <span class="keywordtype">char</span> *);
<a name="l00332"></a>00332 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * ifd_driver_for_id(<a class="code" href="structifd__devid.html">ifd_devid_t</a> *);
<a name="l00333"></a>00333
<a name="l00334"></a>00334 <span class="comment">/*</span>
<a name="l00335"></a>00335 <span class="comment"> * Protocol handling for card terminal drivers</span>
<a name="l00336"></a>00336 <span class="comment"> */</span>
<a name="l00337"></a>00337 <span class="keyword">extern</span> ifd_protocol_t * ifd_protocol_select(<a class="code" href="structifd__reader.html">ifd_reader_t</a> *, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>);
<a name="l00338"></a>00338 <span class="keyword">extern</span> <span class="keywordtype">int</span> ifd_protocol_transceive(ifd_protocol_t *proto,
<a name="l00339"></a>00339 <span class="keywordtype">int</span> dad,
<a name="l00340"></a>00340 <span class="keyword">const</span> <span class="keywordtype">void</span> *, size_t,
<a name="l00341"></a>00341 <span class="keywordtype">void</span> *, size_t);
<a name="l00342"></a>00342 <span class="keyword">extern</span> <span class="keywordtype">int</span> ifd_protocol_resynchronize(ifd_protocol_t *, <span class="keywordtype">int</span>);
<a name="l00343"></a>00343
<a name="l00344"></a>00344 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00345"></a>00345 <span class="preprocessor"></span>}
<a name="l00346"></a>00346 <span class="preprocessor">#endif</span>
<a name="l00347"></a>00347 <span class="preprocessor"></span>
<a name="l00348"></a>00348 <span class="preprocessor">#endif </span><span class="comment">/* OPENCT_DRIVER_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>
|