00001 #ifndef QRK_SERIAL_DEVICE_H 00002 #define QRK_SERIAL_DEVICE_H 00003 00013 #include "Connection.h" 00014 #include <memory> 00015 00016 00017 namespace qrk 00018 { 00022 class SerialDevice : public Connection 00023 { 00024 public: 00025 enum { 00026 DefaultBaudrate = 115200, 00027 }; 00028 SerialDevice(void); 00029 ~SerialDevice(void); 00030 00031 const char* what(void) const; 00032 00033 bool connect(const char* device, long baudrate = DefaultBaudrate); 00034 void disconnect(void); 00035 bool setBaudrate(long baudrate); 00036 long baudrate(void) const; 00037 bool isConnected(void) const; 00038 int send(const char* data, size_t count); 00039 int receive(char* data, size_t count, int timeout); 00040 size_t size(void) const; 00041 void flush(void); 00042 void clear(void); 00043 void ungetc(const char ch); 00044 00045 private: 00046 SerialDevice(const SerialDevice& rhs); 00047 SerialDevice& operator = (const SerialDevice& rhs); 00048 00049 struct pImpl; 00050 const std::auto_ptr<pImpl> pimpl; 00051 }; 00052 } 00053 00054 #endif /* !QRK_SERIAL_DEVICE_H */