Initial commit
This commit is contained in:
66
src/platform/f7-disco-gcc/mcu/hal/uart.h
Normal file
66
src/platform/f7-disco-gcc/mcu/hal/uart.h
Normal file
@ -0,0 +1,66 @@
|
||||
#ifndef HAL_UART_H
|
||||
#define HAL_UART_H
|
||||
|
||||
#include "config/uart-config.h"
|
||||
#include "cassert"
|
||||
|
||||
#ifndef UART_TX_DMA_BUFFER_SIZE
|
||||
#define UART_TX_DMA_BUFFER_SIZE 128
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Provides general access to the microcontrollers UART peripheral.
|
||||
*/
|
||||
class Uart
|
||||
{
|
||||
friend class Factory;
|
||||
|
||||
public:
|
||||
Uart(const unsigned char uartNbr, UART_HandleTypeDef * uartHandle, bool bTxDMA = false);
|
||||
virtual ~Uart();
|
||||
|
||||
bool initialize();
|
||||
|
||||
bool enable();
|
||||
bool disable();
|
||||
|
||||
void write(const char * str, unsigned int length = 0);
|
||||
|
||||
|
||||
/**
|
||||
* Static accessor to the instances of UART. Used by the factory.
|
||||
* You should not use this method directly. Use the factory to
|
||||
* access an UART instead.
|
||||
*/
|
||||
static inline Uart & uart(const unsigned char uartNbr)
|
||||
{
|
||||
assert(uartNbr < UART_COUNT);
|
||||
return *_sUart[uartNbr];
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if UART is present and initialized
|
||||
*/
|
||||
static inline bool present(const unsigned char uartNbr)
|
||||
{
|
||||
return (uartNbr < UART_COUNT &&
|
||||
_sInitialized[uartNbr]) ? true : false;
|
||||
}
|
||||
|
||||
protected:
|
||||
void writeUsingDMA(const uint8_t * str, uint32_t length);
|
||||
|
||||
protected:
|
||||
static const unsigned char UART_COUNT = 3; ///< Constant indicating how many USART the MCU has
|
||||
|
||||
unsigned char _uartNbr; ///< Number of UART. Index starting at 0
|
||||
UART_HandleTypeDef * _pUartHandle; ///< Reference to the USART structure
|
||||
|
||||
static Uart * _sUart[UART_COUNT]; ///< Array to check if USB device was created already
|
||||
static bool _sInitialized[UART_COUNT]; ///< Indicates if the UART has been initialized
|
||||
|
||||
const bool _bTxDMA; ///< Use DMA for transmission
|
||||
uint8_t _pTxDmaBuffer[UART_TX_DMA_BUFFER_SIZE]; ///< Buffer used by DMA for transmission
|
||||
};
|
||||
|
||||
#endif // HAL_UART_H
|
Reference in New Issue
Block a user