pub fn read_word<I2C: I2c>(
bus: &mut I2C,
address: u8,
register: u8,
) -> Result<u16, I2C::Error>Expand description
Reads a 16-bit register that travels most significant byte first.
§Arguments
bus- the I2C bus.address- the part’s 7-bit address.register- the register address, or pointer value, to read.
§Returns
The register’s value.
§Errors
Returns the bus error if the part does not answer.
§Examples
use pamoja_hal::script::{I2cScript, I2cStep};
use pamoja_sensors::driver::read_word;
use pamoja_sensors::tmp117::{address, register, DEVICE_ID};
// A TMP117 reads its device id register as one word, high byte first.
const PART: u8 = address::ADD0_GND;
let answer = DEVICE_ID.to_be_bytes();
let mut bus = I2cScript::new([I2cStep::write_read(PART, [register::DEVICE_ID], answer)]);
assert_eq!(read_word(&mut bus, PART, register::DEVICE_ID)?, DEVICE_ID);