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 virtual m5::hal::error::error_t pinModeRX(
const gpio::Mode)
74 return m5::hal::error::error_t::UNKNOWN_ERROR;
76 virtual m5::hal::error::error_t writeDigitalRX(
const bool)
78 return m5::hal::error::error_t::UNKNOWN_ERROR;
80 virtual m5::hal::error::error_t readDigitalRX(
bool&)
82 return m5::hal::error::error_t::UNKNOWN_ERROR;
84 virtual m5::hal::error::error_t writeAnalogRX(
const uint16_t)
86 return m5::hal::error::error_t::UNKNOWN_ERROR;
88 virtual m5::hal::error::error_t readAnalogRX(uint16_t&)
90 return m5::hal::error::error_t::UNKNOWN_ERROR;
92 virtual m5::hal::error::error_t readAnalogMilliVoltsRX(uint32_t&)
94 return m5::hal::error::error_t::UNKNOWN_ERROR;
96 virtual m5::hal::error::error_t pulseInRX(uint32_t&,
const int,
const uint32_t)
98 return m5::hal::error::error_t::UNKNOWN_ERROR;
101 virtual m5::hal::error::error_t pinModeTX(
const gpio::Mode)
103 return m5::hal::error::error_t::UNKNOWN_ERROR;
105 virtual m5::hal::error::error_t writeDigitalTX(
const bool)
107 return m5::hal::error::error_t::UNKNOWN_ERROR;
109 virtual m5::hal::error::error_t readDigitalTX(
bool&)
111 return m5::hal::error::error_t::UNKNOWN_ERROR;
113 virtual m5::hal::error::error_t writeAnalogTX(
const uint16_t)
115 return m5::hal::error::error_t::UNKNOWN_ERROR;
117 virtual m5::hal::error::error_t readAnalogTX(uint16_t&)
119 return m5::hal::error::error_t::UNKNOWN_ERROR;
121 virtual m5::hal::error::error_t readAnalogMilliVoltsTX(uint32_t&)
123 return m5::hal::error::error_t::UNKNOWN_ERROR;
125 virtual m5::hal::error::error_t pulseInTX(uint32_t&,
const int,
const uint32_t)
127 return m5::hal::error::error_t::UNKNOWN_ERROR;
138 Adapter(
const Type t, Impl* impl) : _type{t}, _impl{impl}
182 return _impl->readWithTransaction(data, len);
185 const uint32_t exparam = 1)
187 return _impl->writeWithTransaction(data, len, exparam);
190 const uint32_t exparam = 1)
192 return _impl->writeWithTransaction(reg, data, len, exparam);
195 const uint32_t exparam = 1)
197 return _impl->writeWithTransaction(reg, data, len, exparam);
200 inline m5::hal::error::error_t
generalCall(
const uint8_t* data,
const size_t len)
202 return _impl->generalCall(data, len);
208 inline m5::hal::error::error_t pinModeRX(
const gpio::Mode m)
210 return _impl->pinModeRX(m);
212 inline m5::hal::error::error_t writeDigitalRX(
const bool high)
214 return _impl->writeDigitalRX(high);
216 inline m5::hal::error::error_t readDigitalRX(
bool& high)
218 return _impl->readDigitalRX(high);
220 inline m5::hal::error::error_t writeAnalogRX(
const uint16_t v)
222 return _impl->writeAnalogRX(v);
224 inline m5::hal::error::error_t readAnalogRX(uint16_t& v)
226 return _impl->readAnalogRX(v);
228 inline m5::hal::error::error_t readAnalogMilliVoltsRX(uint32_t& mv)
230 return _impl->readAnalogMilliVoltsRX(mv);
232 inline m5::hal::error::error_t pulseInRX(uint32_t& duration,
const int state,
const uint32_t timeout_us)
234 return _impl->pulseInRX(duration, state, timeout_us);
240 inline m5::hal::error::error_t pinModeTX(
const gpio::Mode m)
242 return _impl->pinModeTX(m);
244 inline m5::hal::error::error_t writeDigitalTX(
const bool high)
246 return _impl->writeDigitalTX(high);
248 inline m5::hal::error::error_t readDigitalTX(
bool& high)
250 return _impl->readDigitalTX(high);
252 inline m5::hal::error::error_t writeAnalogTX(
const uint16_t v)
254 return _impl->writeAnalogTX(v);
256 inline m5::hal::error::error_t readAnalogTX(uint16_t& v)
258 return _impl->readAnalogTX(v);
260 inline m5::hal::error::error_t readAnalogMilliVoltsTX(uint32_t& mv)
262 return _impl->readAnalogMilliVoltsTX(mv);
264 inline m5::hal::error::error_t pulseInTX(uint32_t& duration,
const int state,
const uint32_t timeout_us)
266 return _impl->pulseInTX(duration, state, timeout_us);
275 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:133
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:189
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:184
Type
Adapter type.
Definition adapter_base.hpp:28
@ Unknown
Not yet assigned.
Type type() const
Gets the adapter type.
Definition adapter_base.hpp:154
virtual void endTransaction()
End a bus transaction.
Definition adapter_base.hpp:172
virtual void beginTransaction()
Begin a bus transaction.
Definition adapter_base.hpp:168
m5::hal::error::error_t readWithTransaction(uint8_t *data, const size_t len)
Read data within a transaction.
Definition adapter_base.hpp:180
virtual Adapter * duplicate(const uint8_t)
Create a duplicate adapter with a different address.
Definition adapter_base.hpp:160
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:194
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:200
Top level namespace of M5Stack.
Definition test_helper.hpp:20
RAII guard for adapter transactions.
Definition adapter_base.hpp:279
Type and enumerator definitions.
Mode
Pin mode.
Definition types.hpp:61