<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta name="robots" content="noindex"> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>serial.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body bgcolor="#ffffff"> <!-- Generated by Doxygen 1.2.5 on Thu Oct 4 15:32:58 2001 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> </center> <hr><h1>serial.h</h1><a href="serial_h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <font class="comment">// Copyright (C) 1999-2001 Open Source Telecom Corporation.</font> 00002 <font class="comment">// </font> 00003 <font class="comment">// This program is free software; you can redistribute it and/or modify</font> 00004 <font class="comment">// it under the terms of the GNU General Public License as published by</font> 00005 <font class="comment">// the Free Software Foundation; either version 2 of the License, or</font> 00006 <font class="comment">// (at your option) any later version.</font> 00007 <font class="comment">// </font> 00008 <font class="comment">// This program is distributed in the hope that it will be useful,</font> 00009 <font class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</font> 00010 <font class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</font> 00011 <font class="comment">// GNU General Public License for more details.</font> 00012 <font class="comment">// </font> 00013 <font class="comment">// You should have received a copy of the GNU General Public License</font> 00014 <font class="comment">// along with this program; if not, write to the Free Software </font> 00015 <font class="comment">// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</font> 00016 <font class="comment">// </font> 00017 <font class="comment">// As a special exception to the GNU General Public License, permission is </font> 00018 <font class="comment">// granted for additional uses of the text contained in its release </font> 00019 <font class="comment">// of APE.</font> 00020 <font class="comment">// </font> 00021 <font class="comment">// The exception is that, if you link the APE library with other files</font> 00022 <font class="comment">// to produce an executable, this does not by itself cause the</font> 00023 <font class="comment">// resulting executable to be covered by the GNU General Public License.</font> 00024 <font class="comment">// Your use of that executable is in no way restricted on account of</font> 00025 <font class="comment">// linking the APE library code into it.</font> 00026 <font class="comment">//</font> 00027 <font class="comment">// This exception does not however invalidate any other reasons why</font> 00028 <font class="comment">// the executable file might be covered by the GNU General Public License.</font> 00029 <font class="comment">//</font> 00030 <font class="comment">// This exception applies only to the code released under the </font> 00031 <font class="comment">// name APE. If you copy code from other releases into a copy of</font> 00032 <font class="comment">// APE, as the General Public License permits, the exception does</font> 00033 <font class="comment">// not apply to the code that you add in this way. To avoid misleading</font> 00034 <font class="comment">// anyone as to the status of such modified files, you must delete</font> 00035 <font class="comment">// this exception notice from them.</font> 00036 <font class="comment">// </font> 00037 <font class="comment">// If you write modifications of your own for APE, it is your choice</font> 00038 <font class="comment">// whether to permit this exception to apply to your modifications.</font> 00039 <font class="comment">// If you do not wish that, delete this exception notice. </font> 00040 00041 <font class="preprocessor">#ifndef __CCXX_SERIAL_H__</font> 00042 <font class="preprocessor"></font><font class="preprocessor">#define __CCXX_SERIAL_H__</font> 00043 <font class="preprocessor"></font> 00044 <font class="preprocessor">#ifndef __CCXX_THREAD_H__</font> 00045 <font class="preprocessor"></font><font class="preprocessor">#include <cc++/<a class="code" href="thread_h.html">thread.h</a>></font> 00046 <font class="preprocessor">#else</font> 00047 <font class="preprocessor"></font><font class="preprocessor">#ifdef __CCXX_NAMESPACE_H__</font> 00048 <font class="preprocessor"></font><font class="preprocessor">#include <cc++/<a class="code" href="macros_h.html">macros.h</a>></font> 00049 <font class="preprocessor">#endif</font> 00050 <font class="preprocessor"></font><font class="preprocessor">#endif</font> 00051 <font class="preprocessor"></font> 00052 <font class="preprocessor">#include <iostream></font> 00053 <a name="l00054"></a><a class="code" href="serial_h.html#a24">00054</a> <font class="keyword">typedef</font> <font class="keyword">enum</font> 00055 { 00056 SERIAL_SUCCESS = 0, 00057 SERIAL_OPEN_NOTTY, 00058 SERIAL_OPEN_FAILED, 00059 SERIAL_SPEED_INVALID, 00060 SERIAL_FLOW_INVALID, 00061 SERIAL_PARITY_INVALID, 00062 SERIAL_CHARSIZE_INVALID, 00063 SERIAL_STOPBITS_INVALID, 00064 SERIAL_OPTION_INVALID, 00065 SERIAL_RESOURCE_FAILURE, 00066 SERIAL_OUTPUT_ERROR, 00067 SERIAL_INPUT_ERROR, 00068 SERIAL_TIMEOUT_ERROR, 00069 SERIAL_EXTENDED_ERROR 00070 } sioerror_t; 00071 <a name="l00072"></a><a class="code" href="serial_h.html#a25">00072</a> <font class="keyword">typedef</font> <font class="keyword">enum</font> 00073 { 00074 SERIAL_FLOW_NONE, 00075 SERIAL_FLOW_SOFT, 00076 SERIAL_FLOW_HARD, 00077 SERIAL_FLOW_BOTH 00078 } sioflow_t; 00079 <a name="l00080"></a><a class="code" href="serial_h.html#a26">00080</a> <font class="keyword">typedef</font> <font class="keyword">enum</font> 00081 { 00082 SERIAL_PARITY_NONE, 00083 SERIAL_PARITY_ODD, 00084 SERIAL_PARITY_EVEN 00085 } sioparity_t; 00086 <a name="l00087"></a><a class="code" href="serial_h.html#a27">00087</a> <font class="keyword">typedef</font> <font class="keyword">enum</font> 00088 { 00089 SERIAL_PENDING_INPUT, 00090 SERIAL_PENDING_OUTPUT, 00091 SERIAL_PENDING_ERROR 00092 } siopend_t; 00093 <a name="l00125"></a><a class="code" href="class_serial.html">00125</a> <font class="keyword">class </font><a class="code" href="class_serial.html">Serial</a> 00126 { 00127 <font class="keyword">private</font>: 00128 sioerror_t errid; 00129 <font class="keywordtype">char</font> *errstr; 00130 00131 <font class="keyword">struct</font> 00132 <font class="keyword"> </font>{ 00133 <font class="keywordtype">bool</font> thrown: 1; 00134 <font class="keywordtype">bool</font> linebuf: 1; 00135 } flags; 00136 00137 <font class="keywordtype">void</font> *original, *current; 00138 00142 <font class="keywordtype">void</font> initSerial(<font class="keywordtype">void</font>); 00143 00144 <font class="keyword">protected</font>: <a name="l00145"></a><a class="code" href="class_serial.html#n0">00145</a> <font class="keywordtype">int</font> dev; <a name="l00146"></a><a class="code" href="class_serial.html#n1">00146</a> <font class="keywordtype">int</font> bufsize; 00147 00155 sioerror_t <a class="code" href="class_serial.html#b0">Error</a>(sioerror_t error, <font class="keywordtype">char</font> *errstr = NULL); 00156 <a name="l00163"></a><a class="code" href="class_serial.html#b1">00163</a> <font class="keyword">inline</font> <font class="keywordtype">void</font> <a class="code" href="class_serial.html#b0">Error</a>(<font class="keywordtype">char</font> *errstr)<font class="keyword"></font> 00164 <font class="keyword"> </font>{<a class="code" href="class_serial.html#b0">Error</a>(SERIAL_EXTENDED_ERROR, errstr);}; 00165 00166 <a name="l00173"></a><a class="code" href="class_serial.html#b2">00173</a> <font class="keyword">inline</font> <font class="keywordtype">void</font> <a class="code" href="class_serial.html#b2">setError</a>(<font class="keywordtype">bool</font> enable)<font class="keyword"></font> 00174 <font class="keyword"> </font>{flags.thrown = !enable;}; 00175 00186 <font class="keywordtype">int</font> <a class="code" href="class_serial.html#b3">setPacketInput</a>(<font class="keywordtype">int</font> size, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> btimer = 0); 00187 00196 <font class="keywordtype">int</font> <a class="code" href="class_serial.html#b4">setLineInput</a>(<font class="keywordtype">char</font> newline = 13, <font class="keywordtype">char</font> nl1 = 0); 00197 00201 <font class="keywordtype">void</font> <a class="code" href="class_serial.html#b5">Restore</a>(<font class="keywordtype">void</font>); 00202 00206 <font class="keywordtype">void</font> <a class="code" href="class_serial.html#b6">flushInput</a>(<font class="keywordtype">void</font>); 00207 00211 <font class="keywordtype">void</font> <a class="code" href="class_serial.html#b7">flushOutput</a>(<font class="keywordtype">void</font>); 00212 00216 <font class="keywordtype">void</font> <a class="code" href="class_serial.html#b8">waitOutput</a>(<font class="keywordtype">void</font>); 00217 00222 <font class="keywordtype">void</font> <a class="code" href="class_serial.html#b9">endSerial</a>(<font class="keywordtype">void</font>); 00223 00229 <font class="keywordtype">void</font> <a class="code" href="class_serial.html#b10">initConfig</a>(<font class="keywordtype">void</font>); 00230 00237 <a class="code" href="class_serial.html#b12">Serial</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *name); 00238 <a name="l00243"></a><a class="code" href="class_serial.html#b12">00243</a> <a class="code" href="class_serial.html#b12">Serial</a>()<font class="keyword"></font> 00244 <font class="keyword"> </font>{initSerial();}; 00245 00246 <font class="keyword">public</font>: <a name="l00253"></a><a class="code" href="class_serial.html#a0">00253</a> <font class="keyword">virtual</font> <a class="code" href="class_serial.html#a0">~Serial</a>()<font class="keyword"></font> 00254 <font class="keyword"> </font>{<a class="code" href="class_serial.html#b9">endSerial</a>();}; 00255 00260 <a class="code" href="class_serial.html">Serial</a> &<a class="code" href="class_serial.html#a1">operator=</a>(<font class="keyword">const</font> <a class="code" href="class_serial.html">Serial</a> &from); 00261 00268 sioerror_t <a class="code" href="class_serial.html#a2">setSpeed</a>(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> speed); 00269 00276 sioerror_t <a class="code" href="class_serial.html#a3">setCharBits</a>(<font class="keywordtype">int</font> bits); 00277 00284 sioerror_t <a class="code" href="class_serial.html#a4">setParity</a>(sioparity_t parity); 00285 00292 sioerror_t <a class="code" href="class_serial.html#a5">setStopBits</a>(<font class="keywordtype">int</font> bits); 00293 00300 sioerror_t <a class="code" href="class_serial.html#a6">setFlowControl</a>(sioflow_t flow); 00301 00307 <font class="keywordtype">void</font> <a class="code" href="class_serial.html#a7">toggleDTR</a>(timeout_t millisec); 00308 00312 <font class="keywordtype">void</font> <a class="code" href="class_serial.html#a8">sendBreak</a>(<font class="keywordtype">void</font>); 00313 <a name="l00320"></a><a class="code" href="class_serial.html#a9">00320</a> <font class="keyword">inline</font> sioerror_t <a class="code" href="class_serial.html#a9">getErrorNumber</a>(<font class="keywordtype">void</font>)<font class="keyword"></font> 00321 <font class="keyword"> </font>{<font class="keywordflow">return</font> errid;}; 00322 <a name="l00329"></a><a class="code" href="class_serial.html#a10">00329</a> <font class="keyword">inline</font> <font class="keywordtype">char</font> *<a class="code" href="class_serial.html#a10">getErrorString</a>(<font class="keywordtype">void</font>)<font class="keyword"></font> 00330 <font class="keyword"> </font>{<font class="keywordflow">return</font> errstr;}; 00331 <a name="l00339"></a><a class="code" href="class_serial.html#a11">00339</a> <font class="keyword">inline</font> <font class="keywordtype">int</font> <a class="code" href="class_serial.html#a11">getBufferSize</a>(<font class="keywordtype">void</font>)<font class="keyword"></font> 00340 <font class="keyword"> </font>{<font class="keywordflow">return</font> bufsize;}; 00341 00351 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="class_serial.html#a12">isPending</a>(siopend_t pend, timeout_t timeout = TIMEOUT_INF); 00352 }; 00353 00376 <font class="preprocessor">#if defined(STLPORT) || defined(__KCC)</font> 00377 <font class="preprocessor"></font><font class="preprocessor">#define iostream iostream_withassign</font> 00378 <font class="preprocessor"></font><font class="preprocessor">#endif</font> <a name="l00379"></a><a class="code" href="class_ttystream.html">00379</a> <font class="preprocessor"></font><font class="keyword">class </font><a class="code" href="class_ttystream.html">TTYStream</a> : <font class="keyword">public</font> std::streambuf, <font class="keyword">public</font> std::iostream, <font class="keyword">public</font> 00380 <a class="code" href="class_serial.html">Serial</a> 00381 { 00382 <font class="keyword">private</font>: 00383 <font class="keywordtype">int</font> doallocate(); 00384 00385 <font class="keyword">friend</font> <a class="code" href="class_ttystream.html">TTYStream</a>& <a class="code" href="class_ttystream.html#l0">crlf</a>(<a class="code" href="class_ttystream.html">TTYStream</a>&); 00386 <font class="keyword">friend</font> <a class="code" href="class_ttystream.html">TTYStream</a>& <a class="code" href="class_ttystream.html#l1">lfcr</a>(<a class="code" href="class_ttystream.html">TTYStream</a>&); 00387 00388 <font class="keyword">protected</font>: <a name="l00389"></a><a class="code" href="class_ttystream.html#n1">00389</a> <font class="keywordtype">char</font> *gbuf, *pbuf; <a name="l00390"></a><a class="code" href="class_ttystream.html#n2">00390</a> timeout_t timeout; 00391 00396 <a class="code" href="class_ttystream.html#b0">TTYStream</a>(); 00397 00402 <font class="keywordtype">void</font> <a class="code" href="class_ttystream.html#b1">Allocate</a>(<font class="keywordtype">void</font>); 00403 00408 <font class="keywordtype">void</font> <a class="code" href="class_ttystream.html#b2">endStream</a>(<font class="keywordtype">void</font>); 00409 00416 <font class="keywordtype">int</font> <a class="code" href="class_ttystream.html#b3">underflow</a>(<font class="keywordtype">void</font>); 00417 00426 <font class="keywordtype">int</font> <a class="code" href="class_ttystream.html#b4">uflow</a>(<font class="keywordtype">void</font>); 00427 00435 <font class="keywordtype">int</font> <a class="code" href="class_ttystream.html#b5">overflow</a>(<font class="keywordtype">int</font> ch); 00436 00437 <font class="keyword">public</font>: 00443 <a class="code" href="class_ttystream.html#b0">TTYStream</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *filename); 00444 00448 <a class="code" href="class_ttystream.html#a1">~TTYStream</a>(); 00449 <a name="l00455"></a><a class="code" href="class_ttystream.html#a2">00455</a> <font class="keyword">inline</font> <font class="keywordtype">void</font> <a class="code" href="class_ttystream.html#a2">setTimeout</a>(timeout_t to)<font class="keyword"></font> 00456 <font class="keyword"> </font>{timeout = to;}; 00457 00465 <font class="keywordtype">void</font> <a class="code" href="class_ttystream.html#a3">Interactive</a>(<font class="keywordtype">bool</font> flag); 00466 00473 <font class="keywordtype">int</font> <a class="code" href="class_ttystream.html#a4">sync</a>(<font class="keywordtype">void</font>); 00474 00486 <font class="keywordtype">bool</font> <a class="code" href="class_serial.html#a12">isPending</a>(siopend_t pend, timeout_t timeout = TIMEOUT_INF); 00487 }; 00488 <a name="l00498"></a><a class="code" href="class_ttystream.html">00498</a> <font class="keyword">class </font><a class="code" href="class_ttystream.html">ttystream</a> : <font class="keyword">public</font> <a class="code" href="class_ttystream.html">TTYStream</a> 00499 { 00500 <font class="keyword">public</font>: 00504 <a class="code" href="class_ttystream.html#a0">ttystream</a>(); 00505 00513 <a class="code" href="class_ttystream.html#a0">ttystream</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *name); 00514 00520 <font class="keywordtype">void</font> <a class="code" href="class_ttystream.html#a2">open</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *name); 00521 00525 <font class="keywordtype">void</font> <a class="code" href="class_ttystream.html#a3">close</a>(<font class="keywordtype">void</font>); 00526 <a name="l00530"></a><a class="code" href="class_ttystream.html#a4">00530</a> <font class="keyword">inline</font> <font class="keywordtype">bool</font> <a class="code" href="class_ttystream.html#a4">operator!</a>()<font class="keyword"></font> 00531 <font class="keyword"> </font>{<font class="keywordflow">return</font> (dev < 0);}; 00532 }; 00533 <a name="l00544"></a><a class="code" href="class_ttysession.html">00544</a> <font class="keyword">class </font><a class="code" href="class_ttysession.html">TTYSession</a> : <font class="keyword">public</font> <a class="code" href="class_ttystream.html">TTYStream</a>, <font class="keyword">public</font> <a class="code" href="class_thread.html">Thread</a> 00545 { 00546 <font class="keyword">public</font>: 00555 <a class="code" href="class_ttysession.html#a0">TTYSession</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *name, <a class="code" href="class_semaphore.html">Semaphore</a> *start = NULL, <font class="keywordtype">int</font> pri = 0, <font class="keywordtype">int</font> stack = 0); 00556 }; 00557 00558 <font class="keyword">class </font><a class="code" href="class_serialport.html">SerialPort</a>; 00559 <font class="keyword">class </font><a class="code" href="class_serialservice.html">SerialService</a>; 00560 <a name="l00582"></a><a class="code" href="class_serialport.html">00582</a> <font class="keyword">class </font><a class="code" href="class_serialport.html">SerialPort</a>: <font class="keyword">public</font> <a class="code" href="class_serial.html">Serial</a>, <font class="keyword">public</font> <a class="code" href="class_timerport.html">TimerPort</a> 00583 { 00584 <font class="keyword">private</font>: 00585 <a class="code" href="class_serialport.html">SerialPort</a> *next, *prev; 00586 <a class="code" href="class_serialservice.html">SerialService</a> *service; 00587 <font class="preprocessor">#ifdef __CCXX_USE_POLL</font> 00588 <font class="preprocessor"></font> <font class="keyword">struct </font>pollfd *ufd; 00589 <font class="preprocessor">#endif</font> 00590 <font class="preprocessor"></font> <font class="keywordtype">bool</font> detect_pending; 00591 <font class="keywordtype">bool</font> detect_output; 00592 <font class="keywordtype">bool</font> detect_disconnect; 00593 <a name="l00594"></a><a class="code" href="class_serialport.html#l0">00594</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_serialservice.html">SerialService</a>; 00595 00596 <font class="keyword">protected</font>: 00603 <a class="code" href="class_serialport.html#b0">SerialPort</a>(<a class="code" href="class_serialservice.html">SerialService</a> *svc, <font class="keyword">const</font> <font class="keywordtype">char</font> *name); 00604 00609 <font class="keyword">virtual</font> <a class="code" href="class_serialport.html#b1">~SerialPort</a>(); 00610 00615 <font class="keywordtype">void</font> <a class="code" href="class_serialport.html#b2">setDetectPending</a>( <font class="keywordtype">bool</font> ); 00616 <a name="l00620"></a><a class="code" href="class_serialport.html#b3">00620</a> <font class="keywordtype">bool</font> <a class="code" href="class_serialport.html#b3">getDetectPending</a>( <font class="keywordtype">void</font> )<font class="keyword"> const</font> 00621 <font class="keyword"> </font>{ <font class="keywordflow">return</font> detect_pending; } 00622 00627 <font class="keywordtype">void</font> <a class="code" href="class_serialport.html#b4">setDetectOutput</a>( <font class="keywordtype">bool</font> ); 00628 <a name="l00632"></a><a class="code" href="class_serialport.html#b5">00632</a> <font class="keywordtype">bool</font> <a class="code" href="class_serialport.html#b5">getDetectOutput</a>( <font class="keywordtype">void</font> )<font class="keyword"> const</font> 00633 <font class="keyword"> </font>{ <font class="keywordflow">return</font> detect_output; } 00634 <a name="l00639"></a><a class="code" href="class_serialport.html#b6">00639</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_serialport.html#b6">Expired</a>(<font class="keywordtype">void</font>)<font class="keyword"></font> 00640 <font class="keyword"> </font>{<font class="keywordflow">return</font>;}; 00641 <a name="l00647"></a><a class="code" href="class_serialport.html#b7">00647</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_serialport.html#b7">Pending</a>(<font class="keywordtype">void</font>)<font class="keyword"></font> 00648 <font class="keyword"> </font>{<font class="keywordflow">return</font>;}; 00649 <a name="l00654"></a><a class="code" href="class_serialport.html#b8">00654</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_serialport.html#b8">Disconnect</a>(<font class="keywordtype">void</font>)<font class="keyword"></font> 00655 <font class="keyword"> </font>{<font class="keywordflow">return</font>;}; 00656 <a name="l00666"></a><a class="code" href="class_serialport.html#b9">00666</a> <font class="keyword">inline</font> <font class="keywordtype">int</font> <a class="code" href="class_serialport.html#b10">Output</a>(<font class="keywordtype">void</font> *buf, <font class="keywordtype">int</font> len)<font class="keyword"></font> 00667 <font class="keyword"> </font>{return ::write(dev, (<font class="keywordtype">char</font> *)buf, len);}; 00668 <a name="l00672"></a><a class="code" href="class_serialport.html#b10">00672</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_serialport.html#b10">Output</a>(<font class="keywordtype">void</font>)<font class="keyword"></font> 00673 <font class="keyword"> </font>{<font class="keywordflow">return</font>;}; 00674 <a name="l00684"></a><a class="code" href="class_serialport.html#b11">00684</a> <font class="keyword">inline</font> <font class="keywordtype">int</font> <a class="code" href="class_serialport.html#b11">Input</a>(<font class="keywordtype">void</font> *buf, <font class="keywordtype">int</font> len)<font class="keyword"></font> 00685 <font class="keyword"> </font>{return ::read(dev, (<font class="keywordtype">char</font> *)buf, len);}; 00686 00687 <font class="keyword">public</font>: 00695 <font class="keywordtype">void</font> <a class="code" href="class_thread.html#b16">setTimer</a>(timeout_t timeout = 0); 00696 00702 <font class="keywordtype">void</font> <a class="code" href="class_timerport.html#a2">incTimer</a>(timeout_t timeout); 00703 }; 00704 <a name="l00727"></a><a class="code" href="class_serialservice.html">00727</a> <font class="keyword">class </font><a class="code" href="class_serialservice.html">SerialService</a> : <font class="keyword">public</font> <a class="code" href="class_thread.html">Thread</a>, <font class="keyword">private</font> <a class="code" href="class_mutex.html">Mutex</a> 00728 { 00729 <font class="keyword">private</font>: 00730 fd_set connect; 00731 <font class="keywordtype">int</font> iosync[2]; 00732 <font class="keywordtype">int</font> hiwater; 00733 <font class="keywordtype">int</font> count; 00734 <a class="code" href="class_serialport.html">SerialPort</a> *first, *last; 00735 00741 <font class="keywordtype">void</font> Attach(<a class="code" href="class_serialport.html">SerialPort</a> *port); 00742 00748 <font class="keywordtype">void</font> <a class="code" href="class_thread.html#a5">Detach</a>(<a class="code" href="class_serialport.html">SerialPort</a> *port); 00749 00753 <font class="keywordtype">void</font> <a class="code" href="class_thread.html#b0">Run</a>(<font class="keywordtype">void</font>); 00754 <a name="l00755"></a><a class="code" href="class_serialservice.html#l0">00755</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_serialport.html">SerialPort</a>; 00756 00757 <font class="keyword">protected</font>: <a name="l00764"></a><a class="code" href="class_serialservice.html#b0">00764</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_serialservice.html#b0">OnUpdate</a>(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> flag)<font class="keyword"></font> 00765 <font class="keyword"> </font>{<font class="keywordflow">return</font>;}; 00766 <a name="l00771"></a><a class="code" href="class_serialservice.html#b1">00771</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_serialservice.html#b1">OnEvent</a>(<font class="keywordtype">void</font>)<font class="keyword"></font> 00772 <font class="keyword"> </font>{<font class="keywordflow">return</font>;}; 00773 <a name="l00780"></a><a class="code" href="class_serialservice.html#b2">00780</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_serialservice.html#b2">OnCallback</a>(<a class="code" href="class_serialport.html">SerialPort</a> *port)<font class="keyword"></font> 00781 <font class="keyword"> </font>{<font class="keywordflow">return</font>;}; 00782 00783 <font class="keyword">public</font>: 00793 <font class="keywordtype">void</font> <a class="code" href="class_serialservice.html#a0">Update</a>(<font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> flag = 0xff); 00794 00801 <a class="code" href="class_serialservice.html#a1">SerialService</a>(<font class="keywordtype">int</font> pri = 0); 00802 00806 <a class="code" href="class_serialservice.html#a2">~SerialService</a>(); 00807 <a name="l00814"></a><a class="code" href="class_serialservice.html#a3">00814</a> <font class="keyword">inline</font> <font class="keywordtype">int</font> <a class="code" href="class_serialservice.html#a3">getCount</a>(<font class="keywordtype">void</font>)<font class="keyword"></font> 00815 <font class="keyword"> </font>{<font class="keywordflow">return</font> count;}; 00816 }; 00817 00818 <font class="preprocessor">#ifdef __CCXX_NAMESPACE_H__</font> 00819 <font class="preprocessor"></font><font class="preprocessor">#undef __CCXX_NAMESPACE_H__</font> 00820 <font class="preprocessor"></font><font class="preprocessor">#include <cc++/<a class="code" href="namespace_h.html">namespace.h</a>></font> 00821 <font class="preprocessor">#endif</font> 00822 <font class="preprocessor"></font><font class="preprocessor">#endif</font> 00823 <font class="preprocessor"></font> </div></pre><hr><address><small>Generated at Thu Oct 4 15:32:58 2001 for CommonC++ by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.gif" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.5 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>, © 1997-2001</small></address> </body> </html>