00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef DI_SERIAL_IO_H
00027 #define DI_SERIAL_IO_H
00028
00029 #include <sys/termios.h>
00030 #include "../constants.h"
00031 #include <sys/types.h>
00032
00040
00041
00046 class di_serial_io
00047 {
00048 public:
00049 di_serial_io();
00050 ~di_serial_io();
00051
00053 const u_int16_t connect(const char *const dev_file, const u_int8_t device);
00055 const u_int16_t disconnect();
00057 const bool is_comm_open();
00059 const bool di_read(u_int8_t *data,
00060 u_int16_t &amount,
00061 const u_int8_t packet_len=2);
00063 const bool di_send(const u_int8_t *const data,
00064 u_int16_t &amount,
00065 const u_int8_t echo=2,
00066 const u_int8_t retry=4);
00068 const int16_t bytes_in_receive();
00070 void flush_receive();
00071
00072 private:
00074 const bool di_valid(const u_int8_t *const data, const u_int8_t packet_len);
00076 const bool di_synchronize(u_int8_t *data,
00077 const u_int8_t data_len,
00078 const u_int8_t packet_len);
00080 const bool di_echo(const u_int8_t *const expected,
00081 const u_int8_t amount);
00082
00083 unsigned int m_baudrate;
00084 int m_comm_fd;
00085 struct termios m_old_termios;
00086 int m_old_tiocm;
00087 u_int8_t m_timeout;
00088 };
00089
00090 #endif
00091