00001
00028
00029
00030 #ifndef CANSERIAL_ESD_H_
00031 #define CANSERIAL_ESD_H_
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #include "sdhexception.h"
00043 #include "serialbase.h"
00044 #include "basisdef.h"
00045
00046
00047
00048 #define NOMINMAX
00049 #include "ntcan.h"
00050 #include "sdhlibrary_settings.h"
00051
00052
00053
00054
00055
00056 NAMESPACE_SDH_START
00057
00058
00059
00060
00061
00062
00063
00064 #ifdef OSNAME_LINUX
00065
00066
00067 # include <errno.h>
00068
00069
00070
00071
00072
00073
00074
00075
00076 # ifndef NTCAN_BAUD_1000
00077
00078
00079 # define NTCAN_BAUD_1000 0
00080 # define NTCAN_BAUD_800 14
00081 # define NTCAN_BAUD_500 2
00082 # define NTCAN_BAUD_250 4
00083 # define NTCAN_BAUD_125 6
00084 # define NTCAN_BAUD_100 7
00085 # define NTCAN_BAUD_50 9
00086 # define NTCAN_BAUD_20 11
00087 # define NTCAN_BAUD_10 13
00088 # endif
00089 #endif
00090
00091
00093 #define CAN_ESD_TXQUEUESIZE 32
00094
00096 #define CAN_ESD_RXQUEUESIZE 512
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00114 class cCANSerial_ESDException: public cSerialBaseException
00115 {
00116 public:
00117 cCANSerial_ESDException( cMsg const & _msg )
00118 : cSerialBaseException( "cCANSerial_ESDException", _msg )
00119 {}
00120 };
00121
00122
00123
00127 class cCANSerial_ESD : public cSerialBase
00128 {
00129
00130 protected:
00131
00133 int net;
00134
00136 unsigned long baudrate;
00137
00139 Int32 id_read;
00140
00142 Int32 id_write;
00143
00145 NTCAN_HANDLE ntcan_handle;
00146
00147
00148
00149
00150
00151
00152
00154 UInt32 BaudrateToBaudrateCode( unsigned long baudrate )
00155 throw (cCANSerial_ESDException*);
00156
00157 int status;
00158
00159 private:
00160 UInt32 timeout_ms;
00161
00168 CMSG m_cmsg;
00170 int m_cmsg_next;
00171
00172 public:
00183 cCANSerial_ESD( int _net, unsigned long _baudrate, double _timeout, Int32 _id_read, Int32 _id_write )
00184 throw (cCANSerial_ESDException*);
00185
00195 cCANSerial_ESD( NTCAN_HANDLE _ntcan_handle, double _timeout, Int32 _id_read, Int32 _id_write )
00196 throw (cCANSerial_ESDException*);
00197
00201 void Open( void )
00202 throw (cCANSerial_ESDException*);
00203
00205 bool IsOpen( void )
00206 throw();
00207
00209 void Close( void )
00210 throw (cCANSerial_ESDException*);
00211
00213
00221 int write( char const *ptr, int len=0 )
00222 throw (cCANSerial_ESDException*);
00223
00232 ssize_t Read( void *data, ssize_t size, long timeout_us, bool return_on_less_data )
00233 throw (cCANSerial_ESDException*);
00234
00236 void SetTimeout( double _timeout )
00237 throw (cSerialBaseException*);
00238 };
00239
00240
00241 NAMESPACE_SDH_END
00242
00243 #endif
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256