Dev: preparation script added for code coverage.
[marnav.git] / src / marnav / io / serial.hpp
blob97e0bb6d560dfb37b141a175c74454c2f6550642
1 #ifndef __IO__SERIAL__HPP__
2 #define __IO__SERIAL__HPP__
4 #include <string>
5 #include <marnav/io/device.hpp>
7 namespace marnav
9 namespace io
11 /// This class is an abstraction for termios based serial
12 /// communication.
13 ///
14 /// Since this is termios based, it is platform dependent.
15 class serial : public device
17 public:
18 enum class baud {
19 baud_300,
20 baud_600,
21 baud_1200,
22 baud_2400,
23 baud_4800,
24 baud_9600,
25 baud_19200,
26 baud_38400,
27 baud_57600,
28 baud_115200,
29 baud_230400
32 enum class databits { bit_5, bit_6, bit_7, bit_8 };
34 enum class stopbits { bit_1, bit_2 };
36 enum class parity { none, even, odd, mark };
38 virtual ~serial();
40 serial() = delete;
41 serial(const std::string & dev, baud b, databits d, stopbits s, parity p);
42 serial(const serial &) = delete;
43 serial(serial &&) noexcept = default;
44 serial & operator=(const serial &) noexcept = delete;
45 serial & operator=(serial &&) = default;
47 virtual void open() override;
48 virtual void close() override;
49 virtual int read(char * buffer, uint32_t size) override;
50 virtual int write(const char * buffer, uint32_t size) override;
52 protected:
53 int fd; ///< File descriptor for serial device communication.
55 private:
56 std::string dev;
57 baud baud_rate;
58 databits data_bits;
59 stopbits stop_bits;
60 parity par;
65 #endif