Robin Mueller
aa2bfb7d0e
All checks were successful
EIVE/eive-obsw/pipeline/pr-main This commit looks good
71 lines
2.5 KiB
C++
71 lines
2.5 KiB
C++
#pragma once
|
|
|
|
#include <fsfw/devicehandlers/CookieIF.h>
|
|
#include <fsfw/objectmanager/SystemObjectIF.h>
|
|
#include <fsfw_hal/linux/serial/helper.h>
|
|
|
|
#include <string>
|
|
|
|
/**
|
|
* @brief Cookie for the UartComIF. There are many options available to configure the UART driver.
|
|
* The constructor only requests for common options like the baudrate. Other options can
|
|
* be set by member functions.
|
|
*
|
|
* @author J. Meier
|
|
*/
|
|
class SerialConfig : public CookieIF {
|
|
public:
|
|
/**
|
|
* @brief Constructor for the uart cookie.
|
|
* @param deviceFile The device file specifying the uart to use, e.g. "/dev/ttyPS1"
|
|
* @param uartMode Specify the UART mode. The canonical mode should be used if the
|
|
* messages are separated by a delimited character like '\n'. See the
|
|
* termios documentation for more information
|
|
* @param baudrate The baudrate to use for input and output.
|
|
* @param maxReplyLen The maximum size an object using this cookie expects
|
|
* @details
|
|
* Default configuration: No parity
|
|
* 8 databits (number of bits transfered with one uart frame)
|
|
* One stop bit
|
|
*/
|
|
SerialConfig(std::string deviceFile, UartBaudRate baudrate, size_t maxReplyLen,
|
|
UartModes uartMode = UartModes::NON_CANONICAL)
|
|
: deviceFile(deviceFile), baudrate(baudrate), maxReplyLen(maxReplyLen), uartMode(uartMode) {}
|
|
|
|
virtual ~SerialConfig() = default;
|
|
|
|
UartBaudRate getBaudrate() const { return baudrate; }
|
|
size_t getMaxReplyLen() const { return maxReplyLen; }
|
|
std::string getDeviceFile() const { return deviceFile; }
|
|
Parity getParity() const { return parity; }
|
|
BitsPerWord getBitsPerWord() const { return bitsPerWord; }
|
|
StopBits getStopBits() const { return stopBits; }
|
|
UartModes getUartMode() const { return uartMode; }
|
|
|
|
/**
|
|
* Functions two enable parity checking.
|
|
*/
|
|
void setParityOdd() { parity = Parity::ODD; }
|
|
void setParityEven() { parity = Parity::EVEN; }
|
|
|
|
/**
|
|
* Function two set number of bits per UART frame.
|
|
*/
|
|
void setBitsPerWord(BitsPerWord bitsPerWord_) { bitsPerWord = bitsPerWord_; }
|
|
|
|
/**
|
|
* Function to specify the number of stopbits.
|
|
*/
|
|
void setTwoStopBits() { stopBits = StopBits::TWO_STOP_BITS; }
|
|
void setOneStopBit() { stopBits = StopBits::ONE_STOP_BIT; }
|
|
|
|
private:
|
|
std::string deviceFile;
|
|
UartBaudRate baudrate;
|
|
size_t maxReplyLen = 0;
|
|
const UartModes uartMode;
|
|
Parity parity = Parity::NONE;
|
|
BitsPerWord bitsPerWord = BitsPerWord::BITS_8;
|
|
StopBits stopBits = StopBits::ONE_STOP_BIT;
|
|
};
|