pub trait RegisterBus {
type Error;
// Required methods
fn read_registers(
&mut self,
first: u8,
buffer: &mut [u8],
) -> Result<(), Self::Error>;
fn write_register(
&mut self,
register: u8,
value: u8,
) -> Result<(), Self::Error>;
// Provided method
fn read_register(&mut self, register: u8) -> Result<u8, Self::Error> { ... }
}Expand description
A part’s register map reached over some bus.
§Examples
use pamoja_hal::script::{I2cScript, I2cStep};
use pamoja_sensors::bme280::{register, CHIP_ID, I2C_ADDRESS_PRIMARY, RESET_WORD};
use pamoja_sensors::driver::{I2cRegisters, RegisterBus};
// A BME280 answers its chip id, then takes the word that resets it.
const PART: u8 = I2C_ADDRESS_PRIMARY;
let script = I2cScript::new([
I2cStep::write_read(PART, [register::CHIP_ID], [CHIP_ID]),
I2cStep::write(PART, [register::RESET, RESET_WORD]),
]);
let mut part = I2cRegisters::new(script, PART);
assert_eq!(part.read_register(register::CHIP_ID)?, CHIP_ID);
part.write_register(register::RESET, RESET_WORD)?;
assert!(part.release().done());Required Associated Types§
Required Methods§
Provided Methods§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".