11#ifndef M5_UNIT_COMPONENT_ADAPTER_UART_HPP
12#define M5_UNIT_COMPONENT_ADAPTER_UART_HPP
15#if defined(ESP_PLATFORM)
16#include <driver/uart.h>
28class AdapterUART :
public Adapter {
34 inline virtual HardwareSerial* getSerial()
41 virtual void flushRX()
44 virtual void setTimeout(
const uint32_t)
53 explicit SerialImpl(HardwareSerial& serial);
54 inline virtual HardwareSerial* getSerial()
override
58 virtual void flush()
override;
59 virtual void flushRX()
override;
60 virtual void setTimeout(
const uint32_t ms)
override;
61 virtual m5::hal::error::error_t readWithTransaction(uint8_t* data,
const size_t len)
override;
62 virtual m5::hal::error::error_t writeWithTransaction(
const uint8_t* data,
const size_t len,
63 const uint32_t stop)
override;
66 HardwareSerial* _serial{};
70#if defined(ESP_PLATFORM)
71 class ESPIDFImpl :
public UARTImpl {
73 explicit ESPIDFImpl(
const uart_port_t uart_num) : AdapterUART::UARTImpl(), _uart_num(uart_num)
76 virtual void flush()
override;
77 virtual void flushRX()
override;
78 virtual void setTimeout(
const uint32_t ms)
override;
79 virtual m5::hal::error::error_t readWithTransaction(uint8_t* data,
const size_t len)
override;
80 virtual m5::hal::error::error_t writeWithTransaction(
const uint8_t* data,
const size_t len,
81 const uint32_t stop)
override;
82 inline uart_port_t uartPort()
const
88 uart_port_t _uart_num{UART_NUM_1};
89 uint32_t _timeout_ms{1000};
94 explicit AdapterUART(HardwareSerial& serial);
97#if defined(ESP_PLATFORM)
98 explicit AdapterUART(
const uart_port_t uart_num);
105 inline void flushRX()
109 inline void setTimeout(
const uint32_t ms)
111 impl()->setTimeout(ms);
114 inline UARTImpl* impl()
116 return static_cast<UARTImpl*
>(_impl.get());
118 inline const UARTImpl* impl()
const
120 return static_cast<UARTImpl*
>(_impl.get());
Implementation base class (Pimpl pattern)
Definition adapter_base.hpp:37
Adapter()
Default constructor (creates Unknown type adapter)
Definition adapter_base.hpp:133
Type
Adapter type.
Definition adapter_base.hpp:28
Definition adapter_uart.hpp:30
Top level namespace of M5Stack.
Definition test_helper.hpp:20