31template <
typename Derived>
34 void write(
const uint8_t* data, std::size_t length)
noexcept {
35 static_cast<Derived*
>(
this)->
write(data, length);
38 std::size_t
read(uint8_t* out, std::size_t max, uint32_t timeout_ms)
noexcept {
39 return static_cast<Derived*
>(
this)->
read(out, max, timeout_ms);
45 if constexpr (HasDelay<Derived>::value) {
46 static_cast<Derived*
>(
this)->delay_ms_impl(ms);
53 template <
typename,
typename =
void>
54 struct HasDelay : std::false_type {};
56 struct HasDelay<T, std::void_t<decltype(std::declval<T>().delay_ms_impl(0U))>>
CRTP base for PSUP serial transport.
Definition fdo2_uart_interface.hpp:32
void write(const uint8_t *data, std::size_t length) noexcept
Definition fdo2_uart_interface.hpp:34
void flush_rx() noexcept
Definition fdo2_uart_interface.hpp:42
void delay_ms(uint32_t ms) noexcept
Definition fdo2_uart_interface.hpp:44
std::size_t read(uint8_t *out, std::size_t max, uint32_t timeout_ms) noexcept
Definition fdo2_uart_interface.hpp:38