41 AD_LOGI(
"TCA9555 not configured in DriverDeviceInfo");
52 return bus !=
nullptr;
73 if (pin >= 1000) pin -= 1000;
74 AD_LOGI(
"TCA9555::digitalWrite %d: %d", pin, value);
75 if (pin > 15 ||
bus ==
nullptr) {
76 AD_LOGE(
"TCA9555 invalid pin: %d", pin);
79 uint8_t port = pin / 8;
80 uint8_t bit = pin % 8;
81 uint8_t reg = 0x02 + port;
84 AD_LOGE(
"TCA9555 read failed for pin: %d", pin);
93 AD_LOGE(
"TCA9555 write failed for pin: %d", pin);
104 if (pin >= 1000) pin -= 1000;
105 AD_LOGI(
"TCA9555::digitalRead %d", pin);
106 if (pin > 15 ||
bus ==
nullptr)
return false;
107 uint8_t port = pin / 8;
108 uint8_t bit = pin % 8;
109 uint8_t reg = 0x00 + port;
112 return (in & (1 << bit)) != 0;
122 if (pin >= 1000) pin -= 1000;
123 AD_LOGI(
"TCA9555::pinMode: %d", pin);
124 if (pin > 15 ||
bus ==
nullptr) {
125 AD_LOGE(
"TCA9555 pinMode: invalid pin: %d", pin);
129 uint8_t port = pin / 8;
130 uint8_t bit = pin % 8;
131 uint8_t reg = 0x06 + port;
134 AD_LOGE(
"TCA9555 read failed for pin: %d", pin);
146 AD_LOGE(
"TCA9555 analogRead() not supported");
165 bool i2c_read(uint8_t addr, uint8_t reg, uint8_t* data,
size_t len) {
166 if (
bus ==
nullptr) {
167 AD_LOGE(
"TCA9555 bus is null");
170 return i2c_bus_read_bytes(
bus, addr, ®, 1, data, len) == 0;
176 bool i2c_write(uint8_t addr, uint8_t reg, uint8_t* data,
size_t len) {
177 if (
bus ==
nullptr) {
178 AD_LOGE(
"TCA9555 bus is null");
181 return i2c_bus_write_bytes(
bus, addr, ®, 1, data, len) == 0;
#define INPUT
Definition DriverCommon.h:41
#define INPUT_PULLUP
Definition DriverCommon.h:47
#define AD_LOGI(...)
Definition Logger.h:13
#define AD_LOGE(...)
Definition Logger.h:15
Definition IDriverDeviceInfo.h:171
virtual audio_driver_local::Optional< InfoI2C > getI2CPins(PinFunction function)=0
Driver for the TCA9555 I2C I/O expander (header-only).
Definition TCA9555.h:25
bool i2c_write(uint8_t addr, uint8_t reg, uint8_t *data, size_t len)
Helper to write bytes to the TCA9555 using the platform I2C abstraction.
Definition TCA9555.h:176
bool digitalWrite(GpioPin pin, bool value) override
Set the output state of a pin.
Definition TCA9555.h:72
uint8_t i2c_default_address
Definition TCA9555.h:158
void end() override
Deinitialize the TCA9555 and delete the I2C bus.
Definition TCA9555.h:59
TCA9555()
Construct a new TCA9555 object with default I2C address 0x20.
Definition TCA9555.h:30
bool digitalRead(GpioPin pin) override
Read the input state of a pin.
Definition TCA9555.h:103
int analogRead(ADCPin pin)
Not supported.
Definition TCA9555.h:145
void pinMode(GpioPin pin, int mode) override
Set the direction of a pin.
Definition TCA9555.h:121
bool i2c_read(uint8_t addr, uint8_t reg, uint8_t *data, size_t len)
Helper to read bytes from the TCA9555 using the platform I2C abstraction.
Definition TCA9555.h:165
void setI2CAddress(uint8_t address)
Set the I2C address for the TCA9555.
Definition TCA9555.h:155
bool begin(IDriverDeviceInfo &pins) override
Initialize the TCA9555 and create the I2C bus.
Definition TCA9555.h:37
i2c_bus_handle_t bus
Definition TCA9555.h:159
Namespace for audio driver components.
Definition AudioBoard.h:5
int16_t GpioPin
Definition DriverCommon.h:153
int16_t ADCPin
Definition DriverCommon.h:154
void * i2c_bus_handle_t
Definition DriverCommon.h:155
int address
Definition API_I2C.h:27
i2c_bus_handle_t p_wire
Definition API_I2C.h:24