46 GPIOImpl(
const int8_t rx_pin,
const int8_t tx_pin) : _rx_pin{(gpio_num_t)rx_pin}, _tx_pin{(gpio_num_t)tx_pin}
51 inline gpio_num_t rx_pin()
const
55 inline gpio_num_t tx_pin()
const
91 inline virtual m5::hal::error::error_t pinModeRX(
const gpio::Mode m)
override
93 return pin_mode(rx_pin(), m);
95 inline virtual m5::hal::error::error_t writeDigitalRX(
const bool high)
override
97 return write_digital(rx_pin(), high);
99 inline virtual m5::hal::error::error_t readDigitalRX(
bool& high)
override
101 return read_digital(rx_pin(), high);
103 inline virtual m5::hal::error::error_t writeAnalogRX(
const uint16_t v)
override
105 return write_analog(rx_pin(), v);
107 inline virtual m5::hal::error::error_t readAnalogRX(uint16_t& v)
override
109 return read_analog(v, rx_pin());
111 inline virtual m5::hal::error::error_t readAnalogMilliVoltsRX(uint32_t& mv)
override
113 return read_analog_millivolts(mv, rx_pin());
116 inline virtual m5::hal::error::error_t pulseInRX(uint32_t& duration,
const int state,
117 const uint32_t timeout_us = 30000)
override
119 return pulse_in(duration, rx_pin(), state, timeout_us);
123 inline virtual m5::hal::error::error_t pinModeTX(
const gpio::Mode m)
override
125 return pin_mode(tx_pin(), m);
127 inline virtual m5::hal::error::error_t writeDigitalTX(
const bool high)
override
129 return write_digital(tx_pin(), high);
131 inline virtual m5::hal::error::error_t readDigitalTX(
bool& high)
override
133 return read_digital(tx_pin(), high);
135 inline virtual m5::hal::error::error_t writeAnalogTX(
const uint16_t v)
override
137 return write_analog(tx_pin(), v);
139 inline virtual m5::hal::error::error_t readAnalogTX(uint16_t& v)
override
141 return read_analog(v, tx_pin());
143 inline virtual m5::hal::error::error_t readAnalogMilliVoltsTX(uint32_t& mv)
override
145 return read_analog_millivolts(mv, tx_pin());
147 inline virtual m5::hal::error::error_t pulseInTX(uint32_t& duration,
const int state,
148 const uint32_t timeout_us = 30000)
override
150 return pulse_in(duration, tx_pin(), state, timeout_us);
154 m5::hal::error::error_t pin_mode(
const gpio_num_t pin,
const gpio::Mode m);
155 m5::hal::error::error_t write_digital(
const gpio_num_t pin,
const bool high);
156 m5::hal::error::error_t read_digital(
const gpio_num_t pin,
bool& high);
157 m5::hal::error::error_t write_analog(
const gpio_num_t pin,
const uint16_t value);
158 m5::hal::error::error_t read_analog(uint16_t& value,
const gpio_num_t pin);
159 m5::hal::error::error_t read_analog_millivolts(uint32_t& millivolts,
const gpio_num_t pin);
160 m5::hal::error::error_t pulse_in(uint32_t& duration,
const gpio_num_t pin,
const int state,
161 const uint32_t timeout_us);
164 m5::hal::error::error_t ensure_adc_handle(
const gpio_num_t pin);
165 void release_adc_resources();
167 gpio_num_t _rx_pin{(gpio_num_t)-1}, _tx_pin{(gpio_num_t)-1};
168 gpio::adapter_config_t _adapter_cfg{};
170#if defined(M5_UNIT_UNIFIED_USING_ADC_ONESHOT)
172 void* _cali_handle{};
173 int8_t _cached_adc_unit{-1};
174 int8_t _cached_cali_channel{-1};