use span in uart interface

This commit is contained in:
Amar Mahmutbegovic
2024-10-27 01:24:37 +02:00
parent d497339a54
commit 4400c3532f
22 changed files with 41 additions and 58 deletions

View File

@@ -10,11 +10,6 @@ class uart
{
public:
virtual void init(std::uint32_t baudrate) = 0;
virtual void write_array(const char * ptr, std::size_t len) = 0;
virtual void write(std::span<const char> data)
{
write_array(data.data(), data.size());
}
virtual void write(std::span<const char> data) = 0;
};
}; // namespace hal

View File

@@ -18,7 +18,7 @@ class uart_stm32 : public uart
void init(std::uint32_t baudrate = c_baudrate_default) override;
void write_array(const char * ptr, std::size_t len) override;
void write(std::span<const char> data) override;
private:
UART_HandleTypeDef huart_;

View File

@@ -22,10 +22,10 @@ void hal::uart_stm32::init(std::uint32_t baudrate)
HAL_UART_Init(&huart_);
}
void hal::uart_stm32::write_array(const char * ptr, std::size_t len)
void hal::uart_stm32::write(std::span<const char> data)
{
// we must cast away costness due to ST HAL's API
char * data_ptr = const_cast<char *>(ptr);
HAL_UART_Transmit(&huart_, reinterpret_cast<uint8_t *>(data_ptr), len,
char * data_ptr = const_cast<char *>(data.data());
HAL_UART_Transmit(&huart_, reinterpret_cast<uint8_t *>(data_ptr), data.size(),
HAL_MAX_DELAY);
}