From 2d11808a9156e39d576534998c158e7e8f838745 Mon Sep 17 00:00:00 2001 From: Zac Wilson Date: Mon, 22 Dec 2025 17:19:15 +0000 Subject: [PATCH] Added new and init functions for TCA8418 --- src/lib.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index f515bcc..3be75a6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -82,3 +82,28 @@ impl InterruptConfig { } } + +impl TCA8418 { + 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]); + } +} +