Files
Shmingo-HAL/SHAL/Include/Peripheral/UART/SHAL_UART.h
2025-10-17 02:23:56 -07:00

59 lines
1.2 KiB
C++

/**
******************************************************************************
* @file SHAL_TIM.h
* @author Luca Lizaranzu
* @brief Relating to SHAL_UART and USART object abstractions
******************************************************************************
*/
#ifndef SHMINGO_HAL_SHAL_UART_H
#define SHMINGO_HAL_SHAL_UART_H
#include "SHAL_UART_REG.h"
#include "SHAL_UART_TYPES.h"
class SHAL_UART{
friend class UARTManager;
public:
void init(UART_Pair_Key pair);
//begins Tx and Usart TODO either modify this function or add a new one that supports Rx
void begin(uint32_t baudRate) volatile;
//Sends a string
void sendString(const char* s) volatile;
//Sends a char
void sendChar(char c) volatile;
private:
SHAL_UART() = default; //Initializer for array
//Creates a SHAL_UART based on a pair of two valid U(S)ART pins
UART_Pair_Key m_key = UART_Pair_Key::INVALID;
};
#define UART(num) UARTManager::get(num)
class UARTManager{
public:
static SHAL_UART& get(uint8_t uart);
UARTManager() = delete;
private:
inline static SHAL_UART m_UARTs[NUM_USART_LINES] = {};
};
#endif //SHMINGO_HAL_SHAL_UART_H