M5UnitUnified 0.2.0 git rev:9e1ffe1
Loading...
Searching...
No Matches
adapter_uart.hpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
3 *
4 * SPDX-License-Identifier: MIT
5 */
11#ifndef M5_UNIT_COMPONENT_ADAPTER_UART_HPP
12#define M5_UNIT_COMPONENT_ADAPTER_UART_HPP
13
14#include "adapter_base.hpp"
15
16class HardwareSerial;
17
18namespace m5 {
19namespace unit {
20
25class AdapterUART : public Adapter {
26public:
27 class UARTImpl : public Adapter::Impl {
28 public:
29 UARTImpl() = default;
30 virtual ~UARTImpl() = default;
31 inline virtual HardwareSerial* getSerial()
32 {
33 return nullptr;
34 }
35 virtual void flush()
36 {
37 }
38 virtual void flushRX()
39 {
40 }
41 virtual void setTimeout(const uint32_t)
42 {
43 }
44 };
45
46 //
47#if defined(ARDUINO)
48 class SerialImpl : public UARTImpl {
49 public:
50 explicit SerialImpl(HardwareSerial& serial);
51 inline virtual HardwareSerial* getSerial() override
52 {
53 return _serial;
54 }
55 virtual void flush() override;
56 virtual void flushRX() override;
57 virtual void setTimeout(const uint32_t ms) override;
58 virtual m5::hal::error::error_t readWithTransaction(uint8_t* data, const size_t len) override;
59 virtual m5::hal::error::error_t writeWithTransaction(const uint8_t* data, const size_t len,
60 const uint32_t stop) override;
61
62 protected:
63 HardwareSerial* _serial{};
64 };
65#endif
66
67#if defined(ARDUINO)
68 AdapterUART(HardwareSerial& serial);
69#endif
70
71 inline void flush()
72 {
73 impl()->flush();
74 }
75 inline void flushRX()
76 {
77 impl()->flushRX();
78 }
79 inline void setTimeout(const uint32_t ms)
80 {
81 impl()->setTimeout(ms);
82 }
83
84 inline UARTImpl* impl()
85 {
86 return static_cast<UARTImpl*>(_impl.get());
87 }
88 inline const UARTImpl* impl() const
89 {
90 return static_cast<UARTImpl*>(_impl.get());
91 }
92
93protected:
94 AdapterUART() : Adapter(Adapter::Type::UART, new UARTImpl())
95 {
96 }
97
98protected:
99};
100
101} // namespace unit
102} // namespace m5
103#endif
Adapter base.
Definition adapter_base.hpp:35
Definition adapter_uart.hpp:27
Top level namespace of M5stack.
Definition test_helper.hpp:18
Unit-related namespace.