10 #include "DrvTypes.hpp"
11 #include "RtosInclude.hpp"
12 #include "RtosCfg.hpp"
13 #include "LibStreamOut.hpp"
14 #include "LibStreamIn.hpp"
15 #include "LibStringFormat.hpp"
17 class DrvUart:
public LibStreamIn,
public LibStreamOut {
18 friend class RtosInterrupt;
23 virtual void onRxInt(uint8_t value)=0;
24 virtual void onRxParityErrorInt()=0;
25 virtual bool onTxCompletedInt(uint8_t* value)=0;
31 static DrvUart* sInstances[];
38 IntCallbacks* mIntCallbacks;
40 inline void onInterrupt();
42 DrvUart(
size_t rxBufferSize,
size_t txBufferSize);
44 void init(DrvTypes::UART port,
int baudrate = 9600, DrvTypes::UART_PARITY parity = DrvTypes::DRV_UART_PARITY_NONE, DrvTypes::UART_STOP_BITS stopBits =
45 DrvTypes::DRV_UART_STOP_BITS_1);
46 void setBaudrate(
int baudrate);
47 void setParity(DrvTypes::UART_PARITY parity);
48 void setStopBits(DrvTypes::UART_STOP_BITS stopBits);
50 inline void setIntCallbacks(IntCallbacks* intCallbacks) {
52 mIntCallbacks = intCallbacks;
55 inline void enableRx() {
56 mUart->CR1 |= USART_CR1_RE;
58 inline void disableRx() {
59 mUart->CR1 &= ~USART_CR1_RE;
61 inline void enableTxCompletedInterrupt() {
62 mUart->CR1 |= USART_CR1_TCIE;
64 inline void disableTxCompletedInterrupt() {
65 mUart->CR1 &= ~USART_CR1_TCIE;
67 inline int getBaudrate() {