pub trait RegistersMemoryInterface {
type Register: TryFrom<u32>;
// Required methods
fn read32(
&mut self,
reg: Self::Register,
env: &mut Env,
) -> MemoryReadResult<u32>;
fn write32(
&mut self,
reg: Self::Register,
value: u32,
env: &mut Env,
) -> MemoryWriteResult;
fn size(&self) -> u32;
// Provided method
fn update(&mut self, _env: &mut Env) { ... }
}Expand description
Similair to MemoryInterface for peripherals that use an enumeration to identify registers.
A blanket implementation for MemoryInterface exists and manages the conversion from the u32 address to read/write into the register enumeration value. When the address is invalid this blanket implementation returns an MemoryAccessError::InvalidAddress error.
Required Associated Types§
Required Methods§
fn read32( &mut self, reg: Self::Register, env: &mut Env, ) -> MemoryReadResult<u32>
fn write32( &mut self, reg: Self::Register, value: u32, env: &mut Env, ) -> MemoryWriteResult
fn size(&self) -> u32
Provided Methods§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".