pub trait Device: Send + Sync + Debug {
fn address_range(&self) -> &Range<usize>;
fn name(&self) -> &str;
fn is_read_only(&self) -> bool;
fn read_byte(
&mut self,
address: usize,
access: AccessCode
) -> Result<u8, BusError>;
fn read_half(
&mut self,
address: usize,
access: AccessCode
) -> Result<u16, BusError>;
fn read_word(
&mut self,
address: usize,
access: AccessCode
) -> Result<u32, BusError>;
fn write_byte(
&mut self,
address: usize,
val: u8,
access: AccessCode
) -> Result<(), BusError>;
fn write_half(
&mut self,
address: usize,
val: u16,
access: AccessCode
) -> Result<(), BusError>;
fn write_word(
&mut self,
address: usize,
val: u32,
access: AccessCode
) -> Result<(), BusError>;
fn load(&mut self, address: usize, data: &[u8]) -> Result<(), BusError>;
}
Expand description
A virtual device on the bus.