Compare commits

...

1 Commits

Author SHA1 Message Date
occheung f5d8ee3fef io_expander: check I2C (n)ack on write 2024-09-06 16:25:55 +08:00
1 changed files with 9 additions and 3 deletions

View File

@ -111,9 +111,15 @@ impl IoExpander {
fn write(&self, i2c: &mut i2c::I2c, addr: u8, value: u8) -> Result<(), &'static str> {
i2c.start()?;
i2c.write(self.address)?;
i2c.write(addr)?;
i2c.write(value)?;
if !i2c.write(self.address)? {
return Err("io expander failed to ack control byte (read)");
}
if !i2c.write(addr)? {
return Err("io expander failed to ack register address");
}
if !i2c.write(value)? {
return Err("io expander failed to ack value");
}
i2c.stop()?;
Ok(())
}