82 lines
2.1 KiB
C++
82 lines
2.1 KiB
C++
#ifndef SAM9G20_COMIF_COOKIES_UART_COOKIE_H_
|
|
#define SAM9G20_COMIF_COOKIES_UART_COOKIE_H_
|
|
|
|
#include <fsfw/devicehandlers/CookieIF.h>
|
|
#include <string>
|
|
|
|
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
|