1#ifndef IV_SRC_COMMS_SERIAL_SERIALPORT_HPP_
2#define IV_SRC_COMMS_SERIAL_SERIALPORT_HPP_
47 const std::string &eol =
"\n")
const;
91 void setPort(
const std::string &port);
98 void setTimeout(uint32_t interByteTimeout, uint32_t readTimeoutConstant, uint32_t readTimeoutMultiplier,
99 uint32_t writeTimeoutConstant, uint32_t writeTimeoutMultiplier);
103 void setBreak(
bool level =
true)
const;
108 void setRTS(
bool level =
true)
const;
113 void setDTR(
bool level =
true)
const;
126 [[nodiscard]] std::string
getPort()
const;
133 [[nodiscard]]
bool getCTS()
const;
134 [[nodiscard]]
bool getDSR()
const;
135 [[nodiscard]]
bool getRI()
const;
136 [[nodiscard]]
bool getCD()
const;
137 [[nodiscard]]
bool isOpen()
const;
Class that provides a serial port interface.
Definition SerialPort.hpp:18
void waitByteTimes(iv::comms::serial::size_t count) const
Block for a period of time corresponding to the transmission time of count characters at present seri...
Definition SerialPort.cpp:340
size_t readLine(std::string &buffer, iv::comms::serial::size_t size=65536, const std::string &eol="\n") const
Definition SerialPort.cpp:182
bool getCTS() const
Definition SerialPort.cpp:626
bool isOpen() const
Definition SerialPort.cpp:710
SerialPort(const SerialPort &other)=delete
iv::comms::serial::Timeout m_timeout
Definition SerialPort.hpp:157
iv::comms::serial::size_t read(uint8_t *buffer, iv::comms::serial::size_t size) const
Definition SerialPort.cpp:127
uint64_t available() const
Definition SerialPort.cpp:54
iv::comms::serial::size_t _read(uint8_t *buffer, iv::comms::serial::size_t size) const
Definition SerialPort.cpp:715
iv::comms::serial::Timeout getTimeout() const
Definition SerialPort.cpp:621
std::mutex m_readMutex
Definition SerialPort.hpp:162
void setByteSize(iv::model::comms::serial::eDataBits byteSize)
Definition SerialPort.cpp:413
void setParity(iv::model::comms::serial::eParity parity)
Definition SerialPort.cpp:423
void setPort(const std::string &port)
Definition SerialPort.cpp:386
void setTimeout(const iv::comms::serial::Timeout &timeout)
Definition SerialPort.cpp:453
void writeLock()
Definition SerialPort.cpp:1236
std::mutex m_writeMutex
Definition SerialPort.hpp:163
iv::model::comms::serial::PortSettings m_settings
Definition SerialPort.hpp:158
std::vector< std::string > readLines(iv::comms::serial::size_t size=65536, const std::string &eol="\n") const
Definition SerialPort.cpp:231
void close()
Definition SerialPort.cpp:71
void flush() const
Definition SerialPort.cpp:346
void sendBreak(uint32_t duration) const
Definition SerialPort.cpp:376
iv::model::comms::serial::eDataBits getByteSize() const
Definition SerialPort.cpp:601
bool waitReadable(uint32_t timeout) const
Block until there is serial data to read or read_timeout_constant number of milliseconds have elapsed...
Definition SerialPort.cpp:302
bool m_xOnXOff
Definition SerialPort.hpp:154
bool getRI() const
Definition SerialPort.cpp:668
void setBreak(bool level=true) const
Definition SerialPort.cpp:466
SerialPort & operator=(const SerialPort &other)=delete
iv::model::comms::serial::eStopBits getStopBits() const
Definition SerialPort.cpp:611
bool m_isOpen
Definition SerialPort.hpp:153
void setRTS(bool level=true) const
Definition SerialPort.cpp:493
void setDTR(bool level=true) const
Definition SerialPort.cpp:522
static timespec timespecFromMs(const uint32_t &millis)
Definition SerialPort.cpp:1210
bool m_rtsCts
Definition SerialPort.hpp:155
iv::model::comms::serial::eBaudRate getBaudRate() const
Definition SerialPort.cpp:596
iv::model::comms::serial::eFlowControl getFlowControl() const
Definition SerialPort.cpp:616
std::string getPort() const
Definition SerialPort.cpp:591
iv::comms::serial::size_t write(const uint8_t *data, iv::comms::serial::size_t size) const
Definition SerialPort.cpp:282
void readLock()
Definition SerialPort.cpp:1220
void readUnlock()
Definition SerialPort.cpp:1228
void flushOutput() const
Definition SerialPort.cpp:366
bool getCD() const
Definition SerialPort.cpp:689
void writeUnlock()
Definition SerialPort.cpp:1244
uint32_t byteTimeNs
Definition SerialPort.hpp:160
iv::comms::serial::size_t _write(const uint8_t *data, iv::comms::serial::size_t size) const
Definition SerialPort.cpp:814
void setFlowControl(iv::model::comms::serial::eFlowControl flowControl)
Definition SerialPort.cpp:443
iv::model::comms::serial::eParity getParity() const
Definition SerialPort.cpp:606
std::string m_port
Definition SerialPort.hpp:150
void open()
Definition SerialPort.cpp:91
SerialPort & operator=(SerialPort &&other) noexcept=delete
void flushInput() const
Definition SerialPort.cpp:356
void setBaudRate(iv::model::comms::serial::eBaudRate baudRate)
Definition SerialPort.cpp:403
void reconfigurePort() const
Definition SerialPort.cpp:936
int32_t m_fd
Definition SerialPort.hpp:151
bool waitForChange() const
Definition SerialPort.cpp:551
void setStopBits(iv::model::comms::serial::eStopBits stopBits)
Definition SerialPort.cpp:433
bool getDSR() const
Definition SerialPort.cpp:647
~SerialPort()
Definition SerialPort.cpp:48
SerialPort(SerialPort &&other) noexcept=delete
uint64_t size_t
Definition SerialPort.hpp:12
eFlowControl
Definition SerialPortSettings.hpp:83
eBaudRate
Definition SerialPortSettings.hpp:13
eParity
Definition SerialPortSettings.hpp:64
eStopBits
Definition SerialPortSettings.hpp:75
eDataBits
Definition SerialPortSettings.hpp:54
Definition structs.hpp:17
Definition SerialPortSettings.hpp:92