10#ifndef M5_UNIT_COMPONENT_ADAPTER_BASE_HPP
11#define M5_UNIT_COMPONENT_ADAPTER_BASE_HPP
27 enum class Type : uint8_t {
44 virtual m5::hal::error::error_t readWithTransaction(uint8_t*,
const size_t)
46 return m5::hal::error::error_t::UNKNOWN_ERROR;
48 virtual m5::hal::error::error_t writeWithTransaction(
const uint8_t*,
const size_t,
const uint32_t)
50 return m5::hal::error::error_t::UNKNOWN_ERROR;
52 virtual m5::hal::error::error_t writeWithTransaction(
const uint8_t,
const uint8_t*,
const size_t,
55 return m5::hal::error::error_t::UNKNOWN_ERROR;
57 virtual m5::hal::error::error_t writeWithTransaction(
const uint16_t,
const uint8_t*,
const size_t,
60 return m5::hal::error::error_t::UNKNOWN_ERROR;
62 virtual m5::hal::error::error_t generalCall(
const uint8_t*,
const size_t)
64 return m5::hal::error::error_t::UNKNOWN_ERROR;
67 virtual m5::hal::error::error_t pinModeRX(
const gpio::Mode)
69 return m5::hal::error::error_t::UNKNOWN_ERROR;
71 virtual m5::hal::error::error_t writeDigitalRX(
const bool)
73 return m5::hal::error::error_t::UNKNOWN_ERROR;
75 virtual m5::hal::error::error_t readDigitalRX(
bool&)
77 return m5::hal::error::error_t::UNKNOWN_ERROR;
79 virtual m5::hal::error::error_t writeAnalogRX(
const uint16_t)
81 return m5::hal::error::error_t::UNKNOWN_ERROR;
83 virtual m5::hal::error::error_t readAnalogRX(uint16_t&)
85 return m5::hal::error::error_t::UNKNOWN_ERROR;
87 virtual m5::hal::error::error_t pulseInRX(uint32_t&,
const int,
const uint32_t)
89 return m5::hal::error::error_t::UNKNOWN_ERROR;
92 virtual m5::hal::error::error_t pinModeTX(
const gpio::Mode)
94 return m5::hal::error::error_t::UNKNOWN_ERROR;
96 virtual m5::hal::error::error_t writeDigitalTX(
const bool)
98 return m5::hal::error::error_t::UNKNOWN_ERROR;
100 virtual m5::hal::error::error_t readDigitalTX(
bool&)
102 return m5::hal::error::error_t::UNKNOWN_ERROR;
104 virtual m5::hal::error::error_t writeAnalogTX(
const uint16_t)
106 return m5::hal::error::error_t::UNKNOWN_ERROR;
108 virtual m5::hal::error::error_t readAnalogTX(uint16_t&)
110 return m5::hal::error::error_t::UNKNOWN_ERROR;
112 virtual m5::hal::error::error_t pulseInTX(uint32_t&,
const int,
const uint32_t)
114 return m5::hal::error::error_t::UNKNOWN_ERROR;
123 Adapter(
const Type t, Impl* impl) : _type{t}, _impl{impl}
128 Adapter(
const Adapter&) =
delete;
130 Adapter(Adapter&&) noexcept = default;
132 Adapter& operator=(const Adapter&) = delete;
134 Adapter& operator=(Adapter&&) noexcept = default;
136 virtual ~Adapter() = default;
138 inline Type type()
const
143 virtual Adapter* duplicate(
const uint8_t )
145 return new Adapter();
149 inline virtual void beginTransaction()
152 inline virtual void endTransaction()
157 inline m5::hal::error::error_t readWithTransaction(uint8_t* data,
const size_t len)
159 return _impl->readWithTransaction(data, len);
161 inline m5::hal::error::error_t writeWithTransaction(
const uint8_t* data,
const size_t len,
162 const uint32_t exparam = 1)
164 return _impl->writeWithTransaction(data, len, exparam);
166 inline m5::hal::error::error_t writeWithTransaction(
const uint8_t reg,
const uint8_t* data,
const size_t len,
167 const uint32_t exparam = 1)
169 return _impl->writeWithTransaction(reg, data, len, exparam);
171 inline m5::hal::error::error_t writeWithTransaction(
const uint16_t reg,
const uint8_t* data,
const size_t len,
172 const uint32_t exparam = 1)
174 return _impl->writeWithTransaction(reg, data, len, exparam);
176 inline m5::hal::error::error_t generalCall(
const uint8_t* data,
const size_t len)
178 return _impl->generalCall(data, len);
182 inline m5::hal::error::error_t pinModeRX(
const gpio::Mode m)
184 return _impl->pinModeRX(m);
186 inline m5::hal::error::error_t writeDigitalRX(
const bool high)
188 return _impl->writeDigitalRX(high);
190 inline m5::hal::error::error_t readDigitalRX(
bool& high)
192 return _impl->readDigitalRX(high);
194 inline m5::hal::error::error_t writeAnalogRX(
const uint16_t v)
196 return _impl->writeAnalogRX(v);
198 inline m5::hal::error::error_t readAnalogRX(uint16_t& v)
200 return _impl->readAnalogRX(v);
202 inline m5::hal::error::error_t pulseInRX(uint32_t& duration,
const int state,
const uint32_t timeout_us)
204 return _impl->pulseInRX(duration, state, timeout_us);
207 inline m5::hal::error::error_t pinModeTX(
const gpio::Mode m)
209 return _impl->pinModeTX(m);
211 inline m5::hal::error::error_t writeDigitalTX(
const bool high)
213 return _impl->writeDigitalTX(high);
215 inline m5::hal::error::error_t readDigitalTX(
bool& high)
217 return _impl->readDigitalTX(high);
219 inline m5::hal::error::error_t writeAnalogTX(
const uint16_t v)
221 return _impl->writeAnalogTX(v);
223 inline m5::hal::error::error_t readAnalogTX(uint16_t& v)
225 return _impl->readAnalogTX(v);
227 inline m5::hal::error::error_t pulseInTX(uint32_t& duration,
const int state,
const uint32_t timeout_us)
229 return _impl->pulseInTX(duration, state, timeout_us);
233 Type _type{Type::Unknown};
236 std::unique_ptr<Impl> _impl{};
242 _ad->beginTransaction();
246 _ad->endTransaction();
Definition adapter_base.hpp:35
Adapter base class to treat M5HAL and TwoWire,GPIO,Serial,SPI... in the same way.
Top level namespace of M5stack.
Definition test_helper.hpp:18
Definition adapter_base.hpp:239
Type and enumerator definitions.
Mode
Pin mode.
Definition types.hpp:61