1#ifndef SERIAL_COMMUNICATION_H
2#define SERIAL_COMMUNICATION_H
8#include <asm/termbits.h>
9#include "./communication_layer.h"
10#include "./packet_buffer.h"
18 static const int cErrorCode{-1};
19 static const int cSignal{SIGUSR1};
20 static const size_t cSingalFdIndex{0};
21 static const size_t cCommunicationFdIndex{1};
22 static const size_t cNumberOfFileDescriptors{2};
24 static const size_t cReadBufferSize{30};
26 const std::string mSerialPort;
27 const speed_t mBaudrate;
30 struct pollfd mFileDescriptors[cNumberOfFileDescriptors];
32 std::promise<bool> mPromise;
33 std::future<bool> mFuture;
34 std::thread mPollingThread;
36 bool trySetupCommunication(
int &fileDescriptor)
noexcept;
48 std::string serialPort, speed_t baudrate,
int timeout = 1);
52 bool TryStart(std::vector<uint8_t> &&configuration)
override;
Communication medium abstraction layer to send and receive data.
Definition: communication_layer.h:12
Thread-safe queue for buffering packet data bytes.
Definition: packet_buffer.h:13
Serial port communication layer.
Definition: serial_communication.h:16
bool TryStop() override
Try to stop the communication.
SerialCommunication(std::string serialPort, speed_t baudrate, int timeout=1)
Constructor.
bool TrySendAsync(std::vector< uint8_t > &&data) override
Try to buffer data for sending.
bool TryStart(std::vector< uint8_t > &&configuration) override
Try to start the communication.