Added new and init functions for TCA8418

This commit is contained in:
Zac Wilson 2025-12-22 17:19:15 +00:00
parent 0e697b48f1
commit 2d11808a91

View file

@ -82,3 +82,28 @@ impl InterruptConfig {
}
}
impl<I2C: embedded_hal::i2c::I2c> TCA8418<I2C> {
pub fn new(
i2c: I2C,
matrix_config: MatrixConfig,
interrupt_config: InterruptConfig,
) -> Self {
let mut self_ = Self { i2c };
self_.init(matrix_config, interrupt_config);
self_
}
fn init(&mut self, matrix_config: MatrixConfig, interrupt_config: InterruptConfig) {
self.i2c.write(I2C_ADDR, &[0x1D, matrix_config.rows]);
self.i2c
.write(I2C_ADDR, &[0x1E, matrix_config.columns as u8]);
self.i2c
.write(I2C_ADDR, &[0x1F, (matrix_config.columns >> 8) as u8]);
self.i2c.write(I2C_ADDR, &[0x01, interrupt_config.0]);
self.i2c.write(I2C_ADDR, &[0x0F, 0]);
self.i2c.write(I2C_ADDR, &[0x10, 0]);
self.i2c.write(I2C_ADDR, &[0x0E, 0]);
}
}