use span in uart interface
This commit is contained in:
@@ -11,7 +11,7 @@ set(CMAKE_SIZE "arm-none-eabi-size")
|
||||
set(RENODE "renode" CACHE STRING "Path to Renode executable")
|
||||
|
||||
set(MAIN_CPP_PATH "${CMAKE_SOURCE_DIR}/app/src/")
|
||||
set(MAIN_CPP_FILE_NAME "main_integer_promotion.cpp" CACHE STRING "main file")
|
||||
set(MAIN_CPP_FILE_NAME "main_usual_arithmetic_conversion.cpp" CACHE STRING "main file")
|
||||
list(APPEND LIB_SPECS "-specs=nosys.specs")
|
||||
list(APPEND LIB_SPECS "-specs=nano.specs")
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include <span>
|
||||
|
||||
namespace
|
||||
{
|
||||
hal::uart *uart_stdio;
|
||||
@@ -26,7 +28,7 @@ extern "C" int _write(int fd, char * ptr, int len)
|
||||
{
|
||||
if(fd == STDOUT_FILENO || fd == STDERR_FILENO)
|
||||
{
|
||||
uart_stdio->write_array(ptr, len);
|
||||
uart_stdio->write(std::span<const char>(ptr, len));
|
||||
}
|
||||
|
||||
return len;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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_;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user