00001
00028
00029
00030 #ifndef SERIALBASE_H_
00031 #define SERIALBASE_H_
00032
00033 #include "sdhlibrary_settings.h"
00034
00035 #if SDH_USE_VCC
00036 # pragma warning(disable : 4290)
00037 #endif
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #include "sdhexception.h"
00048 #include "dbg.h"
00049 #include "sdhbase.h"
00050
00051
00052
00053
00054
00055 NAMESPACE_SDH_START
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00074 class cSerialBaseException: public cSDHErrorCommunication
00075 {
00076 public:
00077 cSerialBaseException( cMsg const & _msg )
00078 : cSDHErrorCommunication( "cSerialBaseException", _msg )
00079 {}
00080
00081 cSerialBaseException( char const* _type, cMsg const & _msg )
00082 : cSDHErrorCommunication( _type, _msg )
00083 {}
00084 };
00085
00086
00087
00093 class cSerialBase
00094 {
00095 protected:
00096
00098 char ungetch;
00099
00101 bool ungetch_valid;
00102
00104 double timeout;
00105
00106 public:
00108 cSerialBase()
00109 :
00110 ungetch('\0'),
00111 ungetch_valid(false),
00112
00113 dbg( false, "yellow", g_sdh_debug_log )
00114 {
00115
00116 }
00117
00119 virtual ~cSerialBase( void )
00120 {
00121
00122 }
00123
00125
00128 virtual void Open( void )
00129 throw (cSerialBaseException*) = 0;
00130
00132 virtual bool IsOpen( void )
00133 throw() = 0;
00134
00136 virtual void Close( void )
00137 throw (cSerialBaseException*) = 0;
00138
00140 virtual void SetTimeout( double _timeout )
00141 throw (cSerialBaseException*)
00142 {
00143 timeout = _timeout;
00144 }
00145
00147 virtual double GetTimeout()
00148 {
00149 return timeout;
00150 }
00151
00153
00161 virtual int write( char const *ptr, int len=0 )
00162 throw (cSerialBaseException*) = 0;
00163
00172 virtual ssize_t Read( void *data, ssize_t size, long timeout_us, bool return_on_less_data )
00173 throw (cSerialBaseException*) = 0;
00174
00176
00191 virtual char* readline( char* line, int size, char const* eol = "\n", bool return_on_less_data = false )
00192 throw (cSerialBaseException*);
00193
00195 cDBG dbg;
00196 };
00197
00198
00199 NAMESPACE_SDH_END
00200
00201 #endif
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215