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 m5::hal::error::error_t readWithTransaction(uint8_t* data,
const size_t len)
151 return _impl->readWithTransaction(data, len);
153 inline m5::hal::error::error_t writeWithTransaction(
const uint8_t* data,
const size_t len,
154 const uint32_t exparam = 1)
156 return _impl->writeWithTransaction(data, len, exparam);
158 inline m5::hal::error::error_t writeWithTransaction(
const uint8_t reg,
const uint8_t* data,
const size_t len,
159 const uint32_t exparam = 1)
161 return _impl->writeWithTransaction(reg, data, len, exparam);
163 inline m5::hal::error::error_t writeWithTransaction(
const uint16_t reg,
const uint8_t* data,
const size_t len,
164 const uint32_t exparam = 1)
166 return _impl->writeWithTransaction(reg, data, len, exparam);
168 inline m5::hal::error::error_t generalCall(
const uint8_t* data,
const size_t len)
170 return _impl->generalCall(data, len);
174 inline m5::hal::error::error_t pinModeRX(
const gpio::Mode m)
176 return _impl->pinModeRX(m);
178 inline m5::hal::error::error_t writeDigitalRX(
const bool high)
180 return _impl->writeDigitalRX(high);
182 inline m5::hal::error::error_t readDigitalRX(
bool& high)
184 return _impl->readDigitalRX(high);
186 inline m5::hal::error::error_t writeAnalogRX(
const uint16_t v)
188 return _impl->writeAnalogRX(v);
190 inline m5::hal::error::error_t readAnalogRX(uint16_t& v)
192 return _impl->readAnalogRX(v);
194 inline m5::hal::error::error_t pulseInRX(uint32_t& duration,
const int state,
const uint32_t timeout_us)
196 return _impl->pulseInRX(duration, state, timeout_us);
199 inline m5::hal::error::error_t pinModeTX(
const gpio::Mode m)
201 return _impl->pinModeTX(m);
203 inline m5::hal::error::error_t writeDigitalTX(
const bool high)
205 return _impl->writeDigitalTX(high);
207 inline m5::hal::error::error_t readDigitalTX(
bool& high)
209 return _impl->readDigitalTX(high);
211 inline m5::hal::error::error_t writeAnalogTX(
const uint16_t v)
213 return _impl->writeAnalogTX(v);
215 inline m5::hal::error::error_t readAnalogTX(uint16_t& v)
217 return _impl->readAnalogTX(v);
219 inline m5::hal::error::error_t pulseInTX(uint32_t& duration,
const int state,
const uint32_t timeout_us)
221 return _impl->pulseInTX(duration, state, timeout_us);
229 [[deprecated(
"Patches for old units")]]
230 uint32_t clock()
const;
231 [[deprecated(
"Patches for old units")]]
232 void setClock(
const uint32_t);
234 [[deprecated(
"Patches for old units")]]
236 [[deprecated(
"Patches for old units")]]
238 [[deprecated(
"Patches for old units")]]
239 void pinMode(
const uint8_t pin,
const uint8_t mode);
240 [[deprecated(
"Patches for old units")]]
241 void digitalWrite(
const uint8_t pin,
const uint8_t high);
242 [[deprecated(
"Patches for old units")]]
244 [[deprecated(
"Patches for old units")]]
250 Type _type{Type::Unknown};
253 std::unique_ptr<Impl> _impl{};
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
Type and enumerator definitions.
Mode
Pin mode.
Definition types.hpp:50