#include #ifdef STA_STM32_UART_ENABLED #include #include namespace sta { STM32UART::STM32UART(UART_HandleTypeDef * handle, UARTSettings & settings, Mutex * mutex) : UART{settings, mutex}, handle_{handle} { STA_ASSERT(handle != nullptr); } void STM32UART::transfer(uint8_t value) { HAL_UART_Transmit(handle_, &value, 1, HAL_MAX_DELAY); } void STM32UART::transfer16(uint16_t value) { HAL_UART_Transmit(handle_, reinterpret_cast(&value), 2, HAL_MAX_DELAY); } void STM32UART::transfer(const uint8_t * buffer, size_t size) { STA_ASSERT(buffer != nullptr); HAL_UART_Transmit(handle_, const_cast(buffer), size, HAL_MAX_DELAY); } void STM32UART::receive(uint8_t * buffer, size_t size) { STA_ASSERT(buffer != nullptr); HAL_UART_Receive(handle_, buffer, size, HAL_MAX_DELAY); } void STM32UART::fill(uint8_t value, size_t count) { // Initialize a buffer of size count and fill it with the value. uint8_t *buffer = new uint8_t[count]; memset(buffer, value, count); // Transfer the buffer via the bus. transfer(buffer, count); delete [] buffer; } } // namespace sta #endif // STA_STM32_UART_ENABLED