pub struct Chip {
pub inner: Box<dyn ChipImpl>,
}
Expand description
A wrapper around a chip that implements ChipImpl
.
This allows us to create and use chips without knowing their type,
but we can still downcast to the concrete type if we need to.
Fields§
§inner: Box<dyn ChipImpl>
Implementations§
Source§impl Chip
impl Chip
pub fn gs_open<T: Clone + Send + Sync + 'static>( arch: Arch, backend: CallbackStorage<T>, ) -> Result<Grayskull, PlatformError>
pub fn wh_open<T: Clone + Send + Sync + 'static>( arch: Arch, backend: CallbackStorage<T>, ) -> Result<Wormhole, PlatformError>
pub fn open<T: Clone + Send + Sync + 'static>( arch: Arch, backend: CallbackStorage<T>, ) -> Result<Chip, PlatformError>
Trait Implementations§
Source§impl ChipImpl for Chip
impl ChipImpl for Chip
Source§fn update_init_state(
&mut self,
status: &mut InitStatus,
) -> Result<ChipInitResult, PlatformError>
fn update_init_state( &mut self, status: &mut InitStatus, ) -> Result<ChipInitResult, PlatformError>
Update the initialization state of the chip.
The primary purpose of this function is to tell the caller when it is safe to starting interacting with the chip. Read more
Source§fn get_arch(&self) -> Arch
fn get_arch(&self) -> Arch
Returns the current arch of the chip, can be used to avoid
needing to ducktype when downcasting.
Source§fn arc_msg(&self, msg: ArcMsgOptions) -> Result<ArcMsgOk, PlatformError>
fn arc_msg(&self, msg: ArcMsgOptions) -> Result<ArcMsgOk, PlatformError>
Send an arc_msg to the underlying chip.
Source§fn get_neighbouring_chips(&self) -> Result<Vec<NeighbouringChip>, PlatformError>
fn get_neighbouring_chips(&self) -> Result<Vec<NeighbouringChip>, PlatformError>
Get a list of neighbouring chips.
Will return an empty list for gs and up to four chips for wh.
Source§fn get_telemetry(&self) -> Result<Telemetry, PlatformError>
fn get_telemetry(&self) -> Result<Telemetry, PlatformError>
Get telemetry information from the chip.
The information is not cached, so should not be called repeatedly.
Source§fn get_device_info(&self) -> Result<Option<DeviceInfo>, PlatformError>
fn get_device_info(&self) -> Result<Option<DeviceInfo>, PlatformError>
Get information about the underlying chip transport.
This is a hack to get the physical id of the chip.
Source§impl HlComms for Chip
impl HlComms for Chip
fn comms_obj(&self) -> (&dyn ChipComms, &dyn ChipInterface)
fn noc_read( &self, noc_id: u8, x: u8, y: u8, addr: u64, data: &mut [u8], ) -> Result<(), Box<dyn Error>>
fn noc_write( &self, noc_id: u8, x: u8, y: u8, addr: u64, data: &[u8], ) -> Result<(), Box<dyn Error>>
fn noc_broadcast( &self, noc_id: u8, addr: u64, data: &[u8], ) -> Result<(), Box<dyn Error>>
fn noc_read32( &self, noc_id: u8, x: u8, y: u8, addr: u64, ) -> Result<u32, Box<dyn Error>>
fn noc_write32( &self, noc_id: u8, x: u8, y: u8, addr: u64, value: u32, ) -> Result<(), Box<dyn Error>>
fn noc_broadcast32( &self, noc_id: u8, addr: u64, value: u32, ) -> Result<(), Box<dyn Error>>
fn axi_read(&self, addr: u64, data: &mut [u8]) -> Result<(), Box<dyn Error>>
fn axi_write(&self, addr: u64, data: &[u8]) -> Result<(), Box<dyn Error>>
fn axi_read32(&self, addr: u64) -> Result<u32, Box<dyn Error>>
fn axi_write32(&self, addr: u64, value: u32) -> Result<(), Box<dyn Error>>
Auto Trait Implementations§
impl Freeze for Chip
impl !RefUnwindSafe for Chip
impl Send for Chip
impl Sync for Chip
impl Unpin for Chip
impl !UnwindSafe for Chip
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more