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 readAnalogMilliVoltsRX(uint32_t&)
89 return m5::hal::error::error_t::UNKNOWN_ERROR;
91 virtual m5::hal::error::error_t pulseInRX(uint32_t&,
const int,
const uint32_t)
93 return m5::hal::error::error_t::UNKNOWN_ERROR;
96 virtual m5::hal::error::error_t pinModeTX(
const gpio::Mode)
98 return m5::hal::error::error_t::UNKNOWN_ERROR;
100 virtual m5::hal::error::error_t writeDigitalTX(
const bool)
102 return m5::hal::error::error_t::UNKNOWN_ERROR;
104 virtual m5::hal::error::error_t readDigitalTX(
bool&)
106 return m5::hal::error::error_t::UNKNOWN_ERROR;
108 virtual m5::hal::error::error_t writeAnalogTX(
const uint16_t)
110 return m5::hal::error::error_t::UNKNOWN_ERROR;
112 virtual m5::hal::error::error_t readAnalogTX(uint16_t&)
114 return m5::hal::error::error_t::UNKNOWN_ERROR;
116 virtual m5::hal::error::error_t readAnalogMilliVoltsTX(uint32_t&)
118 return m5::hal::error::error_t::UNKNOWN_ERROR;
120 virtual m5::hal::error::error_t pulseInTX(uint32_t&,
const int,
const uint32_t)
122 return m5::hal::error::error_t::UNKNOWN_ERROR;
131 Adapter(
const Type t, Impl* impl) : _type{t}, _impl{impl}
136 Adapter(
const Adapter&) =
delete;
138 Adapter(Adapter&&) noexcept = default;
140 Adapter& operator=(const Adapter&) = delete;
142 Adapter& operator=(Adapter&&) noexcept = default;
144 virtual ~Adapter() = default;
146 inline Type type()
const
151 virtual Adapter* duplicate(
const uint8_t )
153 return new Adapter();
157 inline virtual void beginTransaction()
160 inline virtual void endTransaction()
165 inline m5::hal::error::error_t readWithTransaction(uint8_t* data,
const size_t len)
167 return _impl->readWithTransaction(data, len);
169 inline m5::hal::error::error_t writeWithTransaction(
const uint8_t* data,
const size_t len,
170 const uint32_t exparam = 1)
172 return _impl->writeWithTransaction(data, len, exparam);
174 inline m5::hal::error::error_t writeWithTransaction(
const uint8_t reg,
const uint8_t* data,
const size_t len,
175 const uint32_t exparam = 1)
177 return _impl->writeWithTransaction(reg, data, len, exparam);
179 inline m5::hal::error::error_t writeWithTransaction(
const uint16_t reg,
const uint8_t* data,
const size_t len,
180 const uint32_t exparam = 1)
182 return _impl->writeWithTransaction(reg, data, len, exparam);
184 inline m5::hal::error::error_t generalCall(
const uint8_t* data,
const size_t len)
186 return _impl->generalCall(data, len);
190 inline m5::hal::error::error_t pinModeRX(
const gpio::Mode m)
192 return _impl->pinModeRX(m);
194 inline m5::hal::error::error_t writeDigitalRX(
const bool high)
196 return _impl->writeDigitalRX(high);
198 inline m5::hal::error::error_t readDigitalRX(
bool& high)
200 return _impl->readDigitalRX(high);
202 inline m5::hal::error::error_t writeAnalogRX(
const uint16_t v)
204 return _impl->writeAnalogRX(v);
206 inline m5::hal::error::error_t readAnalogRX(uint16_t& v)
208 return _impl->readAnalogRX(v);
210 inline m5::hal::error::error_t readAnalogMilliVoltsRX(uint32_t& mv)
212 return _impl->readAnalogMilliVoltsRX(mv);
214 inline m5::hal::error::error_t pulseInRX(uint32_t& duration,
const int state,
const uint32_t timeout_us)
216 return _impl->pulseInRX(duration, state, timeout_us);
219 inline m5::hal::error::error_t pinModeTX(
const gpio::Mode m)
221 return _impl->pinModeTX(m);
223 inline m5::hal::error::error_t writeDigitalTX(
const bool high)
225 return _impl->writeDigitalTX(high);
227 inline m5::hal::error::error_t readDigitalTX(
bool& high)
229 return _impl->readDigitalTX(high);
231 inline m5::hal::error::error_t writeAnalogTX(
const uint16_t v)
233 return _impl->writeAnalogTX(v);
235 inline m5::hal::error::error_t readAnalogTX(uint16_t& v)
237 return _impl->readAnalogTX(v);
239 inline m5::hal::error::error_t readAnalogMilliVoltsTX(uint32_t& mv)
241 return _impl->readAnalogMilliVoltsTX(mv);
243 inline m5::hal::error::error_t pulseInTX(uint32_t& duration,
const int state,
const uint32_t timeout_us)
245 return _impl->pulseInTX(duration, state, timeout_us);
249 Type _type{Type::Unknown};
252 std::unique_ptr<Impl> _impl{};
258 _ad->beginTransaction();
262 _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:20
Definition adapter_base.hpp:255
Type and enumerator definitions.
Mode
Pin mode.
Definition types.hpp:61