10#ifndef M5_UNIT_COMPONENT_ADAPTER_BASE_HPP
11#define M5_UNIT_COMPONENT_ADAPTER_BASE_HPP
28 enum class Type : uint8_t {
47 virtual m5::hal::error::error_t readWithTransaction(uint8_t*,
const size_t)
49 return m5::hal::error::error_t::UNKNOWN_ERROR;
51 virtual m5::hal::error::error_t writeWithTransaction(
const uint8_t*,
const size_t,
const uint32_t)
53 return m5::hal::error::error_t::UNKNOWN_ERROR;
55 virtual m5::hal::error::error_t writeWithTransaction(
const uint8_t,
const uint8_t*,
const size_t,
58 return m5::hal::error::error_t::UNKNOWN_ERROR;
60 virtual m5::hal::error::error_t writeWithTransaction(
const uint16_t,
const uint8_t*,
const size_t,
63 return m5::hal::error::error_t::UNKNOWN_ERROR;
65 virtual m5::hal::error::error_t generalCall(
const uint8_t*,
const size_t)
67 return m5::hal::error::error_t::UNKNOWN_ERROR;
72#if defined(ESP_PLATFORM)
73 virtual m5::hal::error::error_t pinModeRX(
const gpio::Mode)
75 return m5::hal::error::error_t::UNKNOWN_ERROR;
78 virtual m5::hal::error::error_t writeDigitalRX(
const bool)
80 return m5::hal::error::error_t::UNKNOWN_ERROR;
82 virtual m5::hal::error::error_t readDigitalRX(
bool&)
84 return m5::hal::error::error_t::UNKNOWN_ERROR;
86 virtual m5::hal::error::error_t writeAnalogRX(
const uint16_t)
88 return m5::hal::error::error_t::UNKNOWN_ERROR;
90 virtual m5::hal::error::error_t readAnalogRX(uint16_t&)
92 return m5::hal::error::error_t::UNKNOWN_ERROR;
94 virtual m5::hal::error::error_t readAnalogMilliVoltsRX(uint32_t&)
96 return m5::hal::error::error_t::UNKNOWN_ERROR;
98 virtual m5::hal::error::error_t pulseInRX(uint32_t&,
const int,
const uint32_t)
100 return m5::hal::error::error_t::UNKNOWN_ERROR;
103#if defined(ESP_PLATFORM)
104 virtual m5::hal::error::error_t pinModeTX(
const gpio::Mode)
106 return m5::hal::error::error_t::UNKNOWN_ERROR;
109 virtual m5::hal::error::error_t writeDigitalTX(
const bool)
111 return m5::hal::error::error_t::UNKNOWN_ERROR;
113 virtual m5::hal::error::error_t readDigitalTX(
bool&)
115 return m5::hal::error::error_t::UNKNOWN_ERROR;
117 virtual m5::hal::error::error_t writeAnalogTX(
const uint16_t)
119 return m5::hal::error::error_t::UNKNOWN_ERROR;
121 virtual m5::hal::error::error_t readAnalogTX(uint16_t&)
123 return m5::hal::error::error_t::UNKNOWN_ERROR;
125 virtual m5::hal::error::error_t readAnalogMilliVoltsTX(uint32_t&)
127 return m5::hal::error::error_t::UNKNOWN_ERROR;
129 virtual m5::hal::error::error_t pulseInTX(uint32_t&,
const int,
const uint32_t)
131 return m5::hal::error::error_t::UNKNOWN_ERROR;
142 Adapter(
const Type t, Impl* impl) : _type{t}, _impl{impl}
186 return _impl->readWithTransaction(data, len);
189 const uint32_t exparam = 1)
191 return _impl->writeWithTransaction(data, len, exparam);
194 const uint32_t exparam = 1)
196 return _impl->writeWithTransaction(reg, data, len, exparam);
199 const uint32_t exparam = 1)
201 return _impl->writeWithTransaction(reg, data, len, exparam);
204 inline m5::hal::error::error_t
generalCall(
const uint8_t* data,
const size_t len)
206 return _impl->generalCall(data, len);
212#if defined(ESP_PLATFORM)
213 inline m5::hal::error::error_t pinModeRX(
const gpio::Mode m)
215 return _impl->pinModeRX(m);
218 inline m5::hal::error::error_t writeDigitalRX(
const bool high)
220 return _impl->writeDigitalRX(high);
222 inline m5::hal::error::error_t readDigitalRX(
bool& high)
224 return _impl->readDigitalRX(high);
226 inline m5::hal::error::error_t writeAnalogRX(
const uint16_t v)
228 return _impl->writeAnalogRX(v);
230 inline m5::hal::error::error_t readAnalogRX(uint16_t& v)
232 return _impl->readAnalogRX(v);
234 inline m5::hal::error::error_t readAnalogMilliVoltsRX(uint32_t& mv)
236 return _impl->readAnalogMilliVoltsRX(mv);
238 inline m5::hal::error::error_t pulseInRX(uint32_t& duration,
const int state,
const uint32_t timeout_us)
240 return _impl->pulseInRX(duration, state, timeout_us);
246#if defined(ESP_PLATFORM)
247 inline m5::hal::error::error_t pinModeTX(
const gpio::Mode m)
249 return _impl->pinModeTX(m);
252 inline m5::hal::error::error_t writeDigitalTX(
const bool high)
254 return _impl->writeDigitalTX(high);
256 inline m5::hal::error::error_t readDigitalTX(
bool& high)
258 return _impl->readDigitalTX(high);
260 inline m5::hal::error::error_t writeAnalogTX(
const uint16_t v)
262 return _impl->writeAnalogTX(v);
264 inline m5::hal::error::error_t readAnalogTX(uint16_t& v)
266 return _impl->readAnalogTX(v);
268 inline m5::hal::error::error_t readAnalogMilliVoltsTX(uint32_t& mv)
270 return _impl->readAnalogMilliVoltsTX(mv);
272 inline m5::hal::error::error_t pulseInTX(uint32_t& duration,
const int state,
const uint32_t timeout_us)
274 return _impl->pulseInTX(duration, state, timeout_us);
283 std::unique_ptr<Impl> _impl{};
Implementation base class (Pimpl pattern)
Definition adapter_base.hpp:37
Adapter base class to treat M5HAL and TwoWire,GPIO,Serial,SPI... in the same way.
Adapter()
Default constructor (creates Unknown type adapter)
Definition adapter_base.hpp:137
m5::hal::error::error_t writeWithTransaction(const uint8_t reg, const uint8_t *data, const size_t len, const uint32_t exparam=1)
Read data within a transaction.
Definition adapter_base.hpp:193
m5::hal::error::error_t writeWithTransaction(const uint8_t *data, const size_t len, const uint32_t exparam=1)
Read data within a transaction.
Definition adapter_base.hpp:188
Type
Adapter type.
Definition adapter_base.hpp:28
@ Unknown
Not yet assigned.
Type type() const
Gets the adapter type.
Definition adapter_base.hpp:158
virtual void endTransaction()
End a bus transaction.
Definition adapter_base.hpp:176
virtual void beginTransaction()
Begin a bus transaction.
Definition adapter_base.hpp:172
m5::hal::error::error_t readWithTransaction(uint8_t *data, const size_t len)
Read data within a transaction.
Definition adapter_base.hpp:184
virtual Adapter * duplicate(const uint8_t)
Create a duplicate adapter with a different address.
Definition adapter_base.hpp:164
m5::hal::error::error_t writeWithTransaction(const uint16_t reg, const uint8_t *data, const size_t len, const uint32_t exparam=1)
Read data within a transaction.
Definition adapter_base.hpp:198
m5::hal::error::error_t generalCall(const uint8_t *data, const size_t len)
Send a general call on the I2C bus.
Definition adapter_base.hpp:204
Top level namespace of M5Stack.
Definition test_helper.hpp:20
RAII guard for adapter transactions.
Definition adapter_base.hpp:287
Type and enumerator definitions.