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
70 inline virtual m5::hal::error::error_t pinModeRX(
const gpio::Mode m)
override
72 return pin_mode(rx_pin(), m);
74 inline virtual m5::hal::error::error_t writeDigitalRX(
const bool high)
override
76 return write_digital(rx_pin(), high);
78 inline virtual m5::hal::error::error_t readDigitalRX(
bool& high)
override
80 return read_digital(rx_pin(), high);
82 inline virtual m5::hal::error::error_t writeAnalogRX(
const uint16_t v)
override
84 return write_analog(rx_pin(), v);
86 inline virtual m5::hal::error::error_t readAnalogRX(uint16_t& v)
88 return read_analog(v, rx_pin());
90 inline virtual m5::hal::error::error_t readAnalogMilliVoltsRX(uint32_t& mv)
override
92 return read_analog_millivolts(mv, rx_pin());
95 inline virtual m5::hal::error::error_t pulseInRX(uint32_t& duration,
const int state,
96 const uint32_t timeout_us = 30000)
override
98 return pulse_in(duration, rx_pin(), state, timeout_us);
102 inline virtual m5::hal::error::error_t pinModeTX(
const gpio::Mode m)
override
104 return pin_mode(tx_pin(), m);
106 inline virtual m5::hal::error::error_t writeDigitalTX(
const bool high)
override
108 return write_digital(tx_pin(), high);
110 inline virtual m5::hal::error::error_t readDigitalTX(
bool& high)
override
112 return read_digital(tx_pin(), high);
114 inline virtual m5::hal::error::error_t writeAnalogTX(
const uint16_t v)
override
116 return write_analog(tx_pin(), v);
118 inline virtual m5::hal::error::error_t readAnalogTX(uint16_t& v)
120 return read_analog(v, tx_pin());
122 inline virtual m5::hal::error::error_t readAnalogMilliVoltsTX(uint32_t& mv)
override
124 return read_analog_millivolts(mv, tx_pin());
126 inline virtual m5::hal::error::error_t pulseInTX(uint32_t& duration,
const int state,
127 const uint32_t timeout_us = 30000)
override
129 return pulse_in(duration, tx_pin(), state, timeout_us);
133 m5::hal::error::error_t pin_mode(
const gpio_num_t pin,
const gpio::Mode m);
134 m5::hal::error::error_t write_digital(
const gpio_num_t pin,
const bool high);
135 m5::hal::error::error_t read_digital(
const gpio_num_t pin,
bool& high);
136 m5::hal::error::error_t write_analog(
const gpio_num_t pin,
const uint16_t value);
137 m5::hal::error::error_t read_analog(uint16_t& value,
const gpio_num_t pin);
138 m5::hal::error::error_t read_analog_millivolts(uint32_t& millivolts,
const gpio_num_t pin);
139 m5::hal::error::error_t pulse_in(uint32_t& duration,
const gpio_num_t pin,
const int state,
140 const uint32_t timeout_us);
143 m5::hal::error::error_t ensure_adc_handle(
const gpio_num_t pin);
144 void release_adc_resources();
146 gpio_num_t _rx_pin{(gpio_num_t)-1}, _tx_pin{(gpio_num_t)-1};
149#if defined(M5_UNIT_UNIFIED_USING_ADC_ONESHOT)
151 void* _cali_handle{};
152 int8_t _cached_adc_unit{-1};
153 int8_t _cached_cali_channel{-1};