#ifndef SAM9G20_COMIF_COOKIES_UART_COOKIE_H_ #define SAM9G20_COMIF_COOKIES_UART_COOKIE_H_ #include #include enum class Parity { NONE, EVEN, ODD }; enum class StopBits { ONE_STOP_BIT, TWO_STOP_BITS }; /** * @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 UartCookie: public CookieIF { public: /** * @brief Constructor for the uart cookie. * @param deviceFile The device file specifying the uart to use. E.g. "/dev/ttyPS1". * @param baudrate The baudrate to use for input and output. Possible Baudrates are: 50, * 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, B19200, * 38400, 57600, 115200, 230400, 460800 * @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 * * */ UartCookie(std::string deviceFile, uint32_t baudrate, size_t maxReplyLen); virtual ~UartCookie(); uint32_t getBaudrate() const; size_t getMaxReplyLen() const; std::string getDeviceFile() const; Parity getParity() const; uint8_t getBitsPerWord() const; StopBits getStopBits() const; /** * Functions two enable parity checking. */ void setParityOdd(); void setParityEven(); /** * Function two set number of bits per UART frame. */ void setBitsPerWord(uint8_t bitsPerWord_); /** * Function to specify the number of stopbits. */ void setTwoStopBits(); void setOneStopBit(); private: std::string deviceFile; uint32_t baudrate; size_t maxReplyLen = 0; Parity parity = Parity::NONE; uint8_t bitsPerWord = 8; StopBits stopBits = StopBits::ONE_STOP_BIT; }; #endif