BeeeOn Gateway  v2020.3.1-2-g6f737dc
Platform to interconnect the IoT world
SerialPort.h
1 #pragma once
2 
3 #include <string>
4 
5 #include <Poco/Timespan.h>
6 
7 namespace BeeeOn {
8 
9 class SerialPort {
10 public:
11  enum StopBits {
12  STOPBITS_1,
13  STOPBITS_2,
14  };
15 
16  enum Parity {
17  PARITY_NONE,
18  PARITY_EVEN,
19  PARITY_ODD,
20  };
21 
22  enum DataBits {
23  DATABITS_5,
24  DATABITS_6,
25  DATABITS_7,
26  DATABITS_8,
27  };
28 
29  SerialPort(const std::string &devicePath = "");
30  ~SerialPort();
31 
32  void setDevicePath(const std::string &devicePath);
33  std::string devicePath() const;
34 
35  void setBaudRate(int baudRate);
36  void setStopBits(StopBits stopBits);
37  void setParity(Parity parity);
38  void setDataBits(DataBits dataBits);
39  void setNonBlocking(bool nonBlocking);
40 
41  void open();
42  std::string read(const Poco::Timespan &timeout);
43  size_t write(const char* buffer, size_t size);
44  size_t write(const std::string &data);
45  void close();
46  void flush();
47 
48  bool isOpen();
49 
50 private:
51  static std::string readDirect(int fd);
52  void installNonBlocking();
53  void installBlocking();
54 
55 private:
56  int m_fd;
57 
58  std::string m_devicePath;
59  int m_baudRate;
60  StopBits m_stopBits;
61  Parity m_parity;
62  DataBits m_dataBits;
63  bool m_nonBlocking;
64 };
65 
66 }
void open()
Definition: SerialPort.cpp:165
Definition: SerialPort.h:9