pub struct Info {Show 14 fields
pub token_id: Option<u64>,
pub device_type: Option<DeviceType>,
pub device_name: Option<String>,
pub manufacturer: Option<String>,
pub product: Option<String>,
pub unique_instance_id: Option<[u8; 16]>,
pub is_input: Option<bool>,
pub ring_buffer_format_sets: Option<Vec<ElementRingBufferFormatSet>>,
pub dai_format_sets: Option<Vec<ElementDaiFormatSet>>,
pub gain_caps: Option<GainCapabilities>,
pub plug_detect_caps: Option<PlugDetectCapabilities>,
pub clock_domain: Option<u32>,
pub signal_processing_elements: Option<Vec<Element>>,
pub signal_processing_topologies: Option<Vec<Topology>>,
/* private fields */
}
Expand description
When a device is detected (or added via Provider/AddDevice
), it is
queried for its properties and capabilities. Once this enumeration process
completes, it is announced to clients that are watching for device arrivals
via Registry/WatchDevicesAdded
.
An Info
table is returned for each audio device that has been added.
Fields§
§token_id: Option<u64>
A device identifier that is guaranteed unique for this boot session, but may change across reboots.
Required for all device types.
device_type: Option<DeviceType>
The protocol used by the driver, and (if StreamConfig) its directionality.
Required for all device types.
device_name: Option<String>
The device’s high-level name, as received from devfs or the Provider/AddDevice
caller.
This string must be non-empty.
Required for all device types.
manufacturer: Option<String>
The name of the device’s manufacturer. If present, this string must be non-empty.
Optional for all device types.
product: Option<String>
The device’s high-level product name. If present, this string must be non-empty.
Optional for all device types.
unique_instance_id: Option<[u8; 16]>
A 16-character ID provided by the driver that (if present) can be used to differentiate instances of the same device. This value should not change across system reboots.
Optional for all device types.
is_input: Option<bool>
Whether the device is a source (is_input TRUE) or destination (is_input FALSE) of audio.
Required for StreamConfig; optional for Codec; absent for Composite.
ring_buffer_format_sets: Option<Vec<ElementRingBufferFormatSet>>
The union of all formats the device can support, across all combinations of device configuration settings. If the device exposes one or more RingBuffer ENDPOINT elements, this field must be present and its vector must contain exactly one entry for each relevant ENDPOINT element. If the device exposes NO RingBuffer ENDPOINT elements, this field must be omitted (entirely absent, rather than populated with an empty vector). If present, must contain at least one element.
Required for StreamConfig; optional for Composite; absent for Codec.
dai_format_sets: Option<Vec<ElementDaiFormatSet>>
The union of all DAI formats the device can support, across all combinations of device configuration settings. If the device exposes one or more Dai ENDPOINT elements, this field must be present and its vector must contain exactly one entry for each relevant ENDPOINT element. If the device exposes NO Dai ENDPOINT elements, this field must be omitted (entirely absent, rather than populated with an empty vector). If present, must contain at least one element.
Required for Codec; optional for Composite; absent for StreamConfig.
gain_caps: Option<GainCapabilities>
The device’s gain/mute capabilities.
Required for StreamConfig; absent for Codec and Composite.
plug_detect_caps: Option<PlugDetectCapabilities>
The device’s hot-plug capabilities.
Required for Codec and StreamConfig; absent for Composite.
clock_domain: Option<u32>
An identifier for the clock domain in which the device’s clock hardware operates. Devices in the same clock domain remain perfectly synchronized. They may drift relative to some other clock domain, but all clocks in that domain will do so perfectly together. Although their clocks have the same rate, their positions may be offset by an arbitrary, fixed amount.
There are two special values for clock domain:
-
CLOCK_DOMAIN_MONOTONIC
means the hardware is driven by the system montonic clock and will always be synchronized with that timeline. -
CLOCK_DOMAIN_EXTERNAL
means the hardware is not synchronized with any other known clocks (even any other clocks inCLOCK_DOMAIN_EXTERNAL
).
Required for Composite and StreamConfig; absent for Codec.
signal_processing_elements: Option<Vec<Element>>
The vector of supported signal-processing elements. If present, must contain at least one element.
Required for Composite; optional for Codec and StreamConfig.
signal_processing_topologies: Option<Vec<Topology>>
The vector of supported signal-processing topologies. If present, must contain at least one element.
Required for Composite; optional for Codec and StreamConfig.
Trait Implementations§
Source§impl<D: ResourceDialect> Decode<Info, D> for Info
impl<D: ResourceDialect> Decode<Info, D> for Info
Source§impl TypeMarker for Info
impl TypeMarker for Info
Source§fn inline_align(_context: Context) -> usize
fn inline_align(_context: Context) -> usize
Source§fn inline_size(_context: Context) -> usize
fn inline_size(_context: Context) -> usize
inline_align
.§fn encode_is_copy() -> bool
fn encode_is_copy() -> bool
Self::Owned
matches the FIDL wire
format and encoding requires no validation. When true, we can optimize
encoding arrays and vectors of Self::Owned
to a single memcpy. Read more§fn decode_is_copy() -> bool
fn decode_is_copy() -> bool
Self::Owned
matches the FIDL wire
format and decoding requires no validation. When true, we can optimize
decoding arrays and vectors of Self::Owned
to a single memcpy.Source§impl ValueTypeMarker for Info
impl ValueTypeMarker for Info
impl Persistable for Info
impl StructuralPartialEq for Info
Auto Trait Implementations§
impl Freeze for Info
impl RefUnwindSafe for Info
impl Send for Info
impl Sync for Info
impl Unpin for Info
impl UnwindSafe for Info
Blanket Implementations§
§impl<T> Body for Twhere
T: Persistable,
impl<T> Body for Twhere
T: Persistable,
§type MarkerAtTopLevel = T
type MarkerAtTopLevel = T
§type MarkerInResultUnion = T
type MarkerInResultUnion = T
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)