Device

Trait Device 

Source
pub trait Device:
    Send
    + Sync
    + Debug {
    // Required methods
    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.

Required Methods§

Source

fn address_range(&self) -> &Range<usize>

Source

fn name(&self) -> &str

Source

fn is_read_only(&self) -> bool

Source

fn read_byte( &mut self, address: usize, access: AccessCode, ) -> Result<u8, BusError>

Source

fn read_half( &mut self, address: usize, access: AccessCode, ) -> Result<u16, BusError>

Source

fn read_word( &mut self, address: usize, access: AccessCode, ) -> Result<u32, BusError>

Source

fn write_byte( &mut self, address: usize, val: u8, access: AccessCode, ) -> Result<(), BusError>

Source

fn write_half( &mut self, address: usize, val: u16, access: AccessCode, ) -> Result<(), BusError>

Source

fn write_word( &mut self, address: usize, val: u32, access: AccessCode, ) -> Result<(), BusError>

Source

fn load(&mut self, address: usize, data: &[u8]) -> Result<(), BusError>

Implementors§