linux_serial_device.hpp
Go to the documentation of this file.
1 
36 #ifndef LINUXSERIALDEVICE_H
37 #define LINUXSERIALDEVICE_H
38 
39 #include <cstring>
40 #include <fcntl.h>
41 #include <termios.h>
42 #include <unistd.h>
43 #include <sys/select.h>
44 
45 #include "dji_hard_driver.hpp"
46 
47 namespace DJI
48 {
49 
50 namespace OSDK
51 {
52 
56 class LinuxSerialDevice : public HardDriver
57 {
58 public:
59  static const int BUFFER_SIZE = 2048;
60 
61 public:
62  LinuxSerialDevice(const char* device, uint32_t baudrate);
64 
65  void init();
66  bool getDeviceStatus();
67 
68  void setBaudrate(uint32_t baudrate);
69  void setDevice(const char* device);
70 
73  int checkBaudRate(uint8_t (&buf)[BUFFER_SIZE])
74  {
75  return _checkBaudRate(buf);
76  }
77  int setSerialPureTimedRead();
78  int unsetSerialPureTimedRead();
79  int serialRead(uint8_t* buf, int len);
80 
82  size_t send(const uint8_t* buf, size_t len);
83  size_t readall(uint8_t* buf, size_t maxlen);
84 
86  DJI::OSDK::time_ms getTimeStamp();
87 
88  void delay_nms(uint16_t time)
89  {
90  ;
91  }
92 
93 private:
94  const char* m_device;
95  uint32_t m_baudrate;
96 
97  int m_serial_fd;
98  fd_set m_serial_fd_set;
99  bool deviceStatus;
100 
101  bool _serialOpen(const char* dev);
102  bool _serialClose();
103  bool _serialFlush();
104  bool _serialConfig(int baudrate, char data_bits, char parity_bits,
105  char stop_bits, bool testForData = false);
106 
107  int _serialStart(const char* dev_name, int baud_rate);
108  int _serialWrite(const uint8_t* buf, int len);
109  int _serialRead(uint8_t* buf, int len);
110 
111  int _checkBaudRate(uint8_t (&buf)[BUFFER_SIZE]);
112 };
113 }
114 }
115 
116 #endif // LINUXSERIALDEVICE_H
int checkBaudRate(uint8_t(&buf)[BUFFER_SIZE])
Definition: linux_serial_device.hpp:73
LinuxSerialDevice(const char *device, uint32_t baudrate)
Definition: linux_serial_device.cpp:42
void setBaudrate(uint32_t baudrate)
Definition: linux_serial_device.cpp:108
size_t send(const uint8_t *buf, size_t len)
Start of DJI_HardDriver virtual function implementations.
Definition: linux_serial_device.cpp:89
POSIX-Compatible Serial Driver for *NIX platforms.
Definition: linux_serial_device.hpp:56
Definition: dji_ack.cpp:39
DJI::OSDK::time_ms getTimeStamp()
Implemented here because ..
Definition: linux_serial_device.cpp:78