pub struct DeviceProxy { /* private fields */ }Implementations§
Source§impl DeviceProxy
impl DeviceProxy
Sourcepub fn take_event_stream(&self) -> DeviceEventStream
pub fn take_event_stream(&self) -> DeviceEventStream
Get a Stream of events from the remote end of the protocol.
§Panics
Panics if the event stream was already taken.
Sourcepub fn get_device_info(
&self,
) -> QueryResponseFut<DeviceInfo, DefaultFuchsiaResourceDialect> ⓘ
pub fn get_device_info( &self, ) -> QueryResponseFut<DeviceInfo, DefaultFuchsiaResourceDialect> ⓘ
Returns a structure containing device information from the configuration header.
Sourcepub fn get_bar(
&self,
bar_id: u32,
) -> QueryResponseFut<DeviceGetBarResult, DefaultFuchsiaResourceDialect> ⓘ
pub fn get_bar( &self, bar_id: u32, ) -> QueryResponseFut<DeviceGetBarResult, DefaultFuchsiaResourceDialect> ⓘ
Retrieves information for a specified Base Address Register (BAR). If the BAR contains MSI-X capability tables then an attempt will be made to return an MMIO region excluding those tables, if possible. Otherwise, an error will be returned.
Parameters: |bar_id|: The id of the BAR being requested. Valid range is [0, 6).
Errors: |ZX_ERR_ACCESS_DENIED|: The specified BAR does not have a driver-accessible region due to the presence of MSI-X tables. To use MSI-X see the |SetInterruptMode| method. |ZX_ERR_INTERNAL|: A bus driver error has occurred. |ZX_ERR_INVALID_ARGS|: The |bar_id| specified is outside of the acceptable range. |ZX_ERR_NOT_FOUND|: The specified |bar_id| does not exist for this device.
Sourcepub fn set_bus_mastering(
&self,
enabled: bool,
) -> QueryResponseFut<DeviceSetBusMasteringResult, DefaultFuchsiaResourceDialect> ⓘ
pub fn set_bus_mastering( &self, enabled: bool, ) -> QueryResponseFut<DeviceSetBusMasteringResult, DefaultFuchsiaResourceDialect> ⓘ
Enables or disables the bus mastering capability for the device.
Parameters: |enable|: true to enable bus mastering, false to disable.
Errors: |ZX_ERR_BAD_STATE|: Method was called while the device is disabled.
Sourcepub fn reset_device(
&self,
) -> QueryResponseFut<DeviceResetDeviceResult, DefaultFuchsiaResourceDialect> ⓘ
pub fn reset_device( &self, ) -> QueryResponseFut<DeviceResetDeviceResult, DefaultFuchsiaResourceDialect> ⓘ
Initiates a function level reset for the device. This is a synchronous operation that will not return ontil the reset is complete. Interrupt operation of the device must be disabled before initiating a reset.
Errors: |ZX_ERR_BAD_STATE|: Interrupts were not disabled before calling |ResetDevice|. |ZX_ERR_NOT_SUPPORTED|: The device does not support reset. |ZX_ERR_TIMED_OUT|: The device did not complete its reset in the expected amount of time and is presumed to no longer be operating properly.
Sourcepub fn ack_interrupt(
&self,
) -> QueryResponseFut<DeviceAckInterruptResult, DefaultFuchsiaResourceDialect> ⓘ
pub fn ack_interrupt( &self, ) -> QueryResponseFut<DeviceAckInterruptResult, DefaultFuchsiaResourceDialect> ⓘ
Alerts the bus driver to deassert the raised legacy interrupt so that it may be waited on again. Only used if |SetInterruptMode| was called with |PCI_INTERRUPT_MODE_LEGACY|.
Errors: |ZX_ERR_BAD_STATE|: device is not configured to use the Legacy interrupt mode.
Sourcepub fn map_interrupt(
&self,
which_irq: u32,
) -> QueryResponseFut<DeviceMapInterruptResult, DefaultFuchsiaResourceDialect> ⓘ
pub fn map_interrupt( &self, which_irq: u32, ) -> QueryResponseFut<DeviceMapInterruptResult, DefaultFuchsiaResourceDialect> ⓘ
Maps a device’s interrupt to a zx:interrupt. The device’s interrupt mode must already be configured with |SetInterruptMode|, and |which_irq| must be >= to the number of interrupts reported for that interrupt mode by |GetInterruptModes|. A Legacy interrupt may be mapped multiple times, but the handles will point to the same interrupt object. MSI & MSI-X interrupts may only have one outstanding mapping at a time per interrupt. Outstanding MSI & MSI-X interrupt handles must be closed before attempting to change the interrupt mode in a subsequent call to |SetInterruptMode|.
Parameters: |which_irq|: The id of the interrupt to map.
Errors: |ZX_ERR_ALREADY_BOUND|: The interrupt specified by |which_irq| is already mapped to a valid handle. |ZX_ERR_BAD_STATE|: interrupts are currently disabled for the device. |ZX_ERR_INVALID_ARGS|: |which_irq| is invalid for the mode.
Sourcepub fn get_interrupt_modes(
&self,
) -> QueryResponseFut<InterruptModes, DefaultFuchsiaResourceDialect> ⓘ
pub fn get_interrupt_modes( &self, ) -> QueryResponseFut<InterruptModes, DefaultFuchsiaResourceDialect> ⓘ
Returns the supported interrupt modes for a device.
Sourcepub fn set_interrupt_mode(
&self,
mode: InterruptMode,
requested_irq_count: u32,
) -> QueryResponseFut<DeviceSetInterruptModeResult, DefaultFuchsiaResourceDialect> ⓘ
pub fn set_interrupt_mode( &self, mode: InterruptMode, requested_irq_count: u32, ) -> QueryResponseFut<DeviceSetInterruptModeResult, DefaultFuchsiaResourceDialect> ⓘ
Configures the interrupt mode for a device. When changing from one interrupt mode to another the driver must ensure existing interrupt handles are closed beforehand.
Parameters: |mode|: The |InterruptMode| to request from the bus driver. |requested_irq_count|: The number of interrupts requested.
Errors: |ZX_ERR_BAD_STATE|: The driver attempted to change interrupt mode while existing handles to mapped MSIs exist. |ZX_ERR_INVALID_ARGS|: |requested_irq_count| is 0. |ZX_ERR_NOT_SUPPORTED|: The provided |mode| is not supported, or invalid.
Sourcepub fn read_config8(
&self,
offset: u16,
) -> QueryResponseFut<DeviceReadConfig8Result, DefaultFuchsiaResourceDialect> ⓘ
pub fn read_config8( &self, offset: u16, ) -> QueryResponseFut<DeviceReadConfig8Result, DefaultFuchsiaResourceDialect> ⓘ
Reads a byte from the device’s configuration space. |Offset| must be within [0x0, 0xFF] if PCI, or [0x0, 0xFFF) if PCIe. In most cases a device will be PCIe.
Parameters: |offset|: The offset into the device’s configuration space to read.
Errors: |ZX_ERR_OUT_OF_RANGE|: |offset| is an invalid address.
Sourcepub fn read_config16(
&self,
offset: u16,
) -> QueryResponseFut<DeviceReadConfig16Result, DefaultFuchsiaResourceDialect> ⓘ
pub fn read_config16( &self, offset: u16, ) -> QueryResponseFut<DeviceReadConfig16Result, DefaultFuchsiaResourceDialect> ⓘ
Reads two bytes from the device’s configuration space. |Offset| must be within [0x0, 0xFE] if PCI, or [0x0, 0xFFE] if PCIe. In most cases a device will be PCIe.
Parameters: |offset|: The offset into the device’s configuration space to read.
Errors: |ZX_ERR_OUT_OF_RANGE|: |offset| is an invalid address.
Sourcepub fn read_config32(
&self,
offset: u16,
) -> QueryResponseFut<DeviceReadConfig32Result, DefaultFuchsiaResourceDialect> ⓘ
pub fn read_config32( &self, offset: u16, ) -> QueryResponseFut<DeviceReadConfig32Result, DefaultFuchsiaResourceDialect> ⓘ
Reads four bytes from the device’s configuration space. |Offset| must be within [0x0, 0xFC] if PCI, or [0x0, 0xFFC] if PCIe. In most cases a device will be PCIe.
Parameters: |offset|: The offset into the device’s configuration space to read.
Errors: |ZX_ERR_OUT_OF_RANGE|: |offset| is an invalid address.
Sourcepub fn write_config8(
&self,
offset: u16,
value: u8,
) -> QueryResponseFut<DeviceWriteConfig8Result, DefaultFuchsiaResourceDialect> ⓘ
pub fn write_config8( &self, offset: u16, value: u8, ) -> QueryResponseFut<DeviceWriteConfig8Result, DefaultFuchsiaResourceDialect> ⓘ
Writes a byte to the device’s configuration space. The acceptable ranges of |offset| for writes are [0x40, 0xFF] if PCI, or [0x40, 0xFFF] if PCIe. For most purposes a device will be PCIe.
Parameters |offset|: The offset into the device’s configuration space to read. |value|: The value to write.
Errors: |ZX_ERR_ACCESS_DENIED|: |offset| is within the device’s configuration header. |ZX_ERR_OUT_OF_RANGE|: |offset| is an invalid address.
Sourcepub fn write_config16(
&self,
offset: u16,
value: u16,
) -> QueryResponseFut<DeviceWriteConfig16Result, DefaultFuchsiaResourceDialect> ⓘ
pub fn write_config16( &self, offset: u16, value: u16, ) -> QueryResponseFut<DeviceWriteConfig16Result, DefaultFuchsiaResourceDialect> ⓘ
Writes two bytes to the device’s configuration space. The acceptable ranges of |offset| for writes are [0x40, 0xFE] if PCI, or [0x40, 0xFFE] if PCIe. For most purposes a device will be PCIe.
Parameters |offset|: The offset into the device’s configuration space to read. |value|: The value to write.
Errors: |ZX_ERR_ACCESS_DENIED|: |offset| is within the device’s configuration header. |ZX_ERR_OUT_OF_RANGE|: |offset| is an invalid address.
Sourcepub fn write_config32(
&self,
offset: u16,
value: u32,
) -> QueryResponseFut<DeviceWriteConfig32Result, DefaultFuchsiaResourceDialect> ⓘ
pub fn write_config32( &self, offset: u16, value: u32, ) -> QueryResponseFut<DeviceWriteConfig32Result, DefaultFuchsiaResourceDialect> ⓘ
Writes four bytes to the device’s configuration space. The acceptable ranges of |offset| for writes are [0x40, 0xFC] if PCI, or [0x40, 0xFFC] if PCIe. For most purposes a device will be PCIe.
Parameters |offset|: The offset into the device’s configuration space to read. |value|: The value to write.
Errors: |ZX_ERR_ACCESS_DENIED|: |offset| is within the device’s configuration header. |ZX_ERR_OUT_OF_RANGE|: |offset| is an invalid address.
Sourcepub fn get_capabilities(
&self,
id: CapabilityId,
) -> QueryResponseFut<Vec<u8>, DefaultFuchsiaResourceDialect> ⓘ
pub fn get_capabilities( &self, id: CapabilityId, ) -> QueryResponseFut<Vec<u8>, DefaultFuchsiaResourceDialect> ⓘ
Returns a vector of offsets in configuration space corresponding to capabilities matching the provided capability |id|. If no corresponding match is found then the vector will be empty.
Parameters: |id|: the capability id to search for.
Sourcepub fn get_extended_capabilities(
&self,
id: ExtendedCapabilityId,
) -> QueryResponseFut<Vec<u16>, DefaultFuchsiaResourceDialect> ⓘ
pub fn get_extended_capabilities( &self, id: ExtendedCapabilityId, ) -> QueryResponseFut<Vec<u16>, DefaultFuchsiaResourceDialect> ⓘ
Returns a vector of offsets in configuration space corresponding to extended capabilities matching the provided extended capability |id|. If no corresponding match is found then the vector will be empty.
Parameters: |id|: the capability id to search for
Sourcepub fn get_bti(
&self,
index: u32,
) -> QueryResponseFut<DeviceGetBtiResult, DefaultFuchsiaResourceDialect> ⓘ
pub fn get_bti( &self, index: u32, ) -> QueryResponseFut<DeviceGetBtiResult, DefaultFuchsiaResourceDialect> ⓘ
Returns the Bus Transaction Intiator (BTI) at a given index for the device.
Parameters: |index|: the BTI to request.
Errors: |ZX_ERR_OUT_OF_RANGE|: |index| was not 0.
Trait Implementations§
Source§impl Clone for DeviceProxy
impl Clone for DeviceProxy
Source§impl Debug for DeviceProxy
impl Debug for DeviceProxy
Source§impl DeviceProxyInterface for DeviceProxy
impl DeviceProxyInterface for DeviceProxy
type GetDeviceInfoResponseFut = QueryResponseFut<DeviceInfo>
type GetBarResponseFut = QueryResponseFut<Result<Bar, i32>>
type SetBusMasteringResponseFut = QueryResponseFut<Result<(), i32>>
type ResetDeviceResponseFut = QueryResponseFut<Result<(), i32>>
type AckInterruptResponseFut = QueryResponseFut<Result<(), i32>>
type MapInterruptResponseFut = QueryResponseFut<Result<Interrupt, i32>>
type GetInterruptModesResponseFut = QueryResponseFut<InterruptModes>
type SetInterruptModeResponseFut = QueryResponseFut<Result<(), i32>>
type ReadConfig8ResponseFut = QueryResponseFut<Result<u8, i32>>
type ReadConfig16ResponseFut = QueryResponseFut<Result<u16, i32>>
type ReadConfig32ResponseFut = QueryResponseFut<Result<u32, i32>>
type WriteConfig8ResponseFut = QueryResponseFut<Result<(), i32>>
type WriteConfig16ResponseFut = QueryResponseFut<Result<(), i32>>
type WriteConfig32ResponseFut = QueryResponseFut<Result<(), i32>>
type GetCapabilitiesResponseFut = QueryResponseFut<Vec<u8>>
type GetExtendedCapabilitiesResponseFut = QueryResponseFut<Vec<u16>>
type GetBtiResponseFut = QueryResponseFut<Result<Bti, i32>>
fn get_device_info(&self) -> Self::GetDeviceInfoResponseFut
fn get_bar(&self, bar_id: u32) -> Self::GetBarResponseFut
fn set_bus_mastering(&self, enabled: bool) -> Self::SetBusMasteringResponseFut
fn reset_device(&self) -> Self::ResetDeviceResponseFut
fn ack_interrupt(&self) -> Self::AckInterruptResponseFut
fn map_interrupt(&self, which_irq: u32) -> Self::MapInterruptResponseFut
fn get_interrupt_modes(&self) -> Self::GetInterruptModesResponseFut
fn set_interrupt_mode( &self, mode: InterruptMode, requested_irq_count: u32, ) -> Self::SetInterruptModeResponseFut
fn read_config8(&self, offset: u16) -> Self::ReadConfig8ResponseFut
fn read_config16(&self, offset: u16) -> Self::ReadConfig16ResponseFut
fn read_config32(&self, offset: u16) -> Self::ReadConfig32ResponseFut
fn write_config8(&self, offset: u16, value: u8) -> Self::WriteConfig8ResponseFut
fn write_config16( &self, offset: u16, value: u16, ) -> Self::WriteConfig16ResponseFut
fn write_config32( &self, offset: u16, value: u32, ) -> Self::WriteConfig32ResponseFut
fn get_capabilities(&self, id: CapabilityId) -> Self::GetCapabilitiesResponseFut
fn get_extended_capabilities( &self, id: ExtendedCapabilityId, ) -> Self::GetExtendedCapabilitiesResponseFut
fn get_bti(&self, index: u32) -> Self::GetBtiResponseFut
Source§impl Proxy for DeviceProxy
impl Proxy for DeviceProxy
Source§type Protocol = DeviceMarker
type Protocol = DeviceMarker
Proxy controls.