#pragma once #include #include #include #include /** * @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; };