pub struct PacketStreamControlSynchronousProxy { /* private fields */ }Implementations§
Source§impl PacketStreamControlSynchronousProxy
impl PacketStreamControlSynchronousProxy
pub fn new(channel: Channel) -> Self
pub fn into_channel(self) -> Channel
Sourcepub fn wait_for_event(
&self,
deadline: MonotonicInstant,
) -> Result<PacketStreamControlEvent, Error>
pub fn wait_for_event( &self, deadline: MonotonicInstant, ) -> Result<PacketStreamControlEvent, Error>
Waits until an event arrives and returns it. It is safe for other threads to make concurrent requests while waiting for an event.
Sourcepub fn get_properties(
&self,
___deadline: MonotonicInstant,
) -> Result<PacketStreamProperties, Error>
pub fn get_properties( &self, ___deadline: MonotonicInstant, ) -> Result<PacketStreamProperties, Error>
Accessor for top level static properties.
Sourcepub fn allocate_vmos(
&self,
payload: &AllocateVmosConfig,
___deadline: MonotonicInstant,
) -> Result<PacketStreamControlAllocateVmosResult, Error>
pub fn allocate_vmos( &self, payload: &AllocateVmosConfig, ___deadline: MonotonicInstant, ) -> Result<PacketStreamControlAllocateVmosResult, Error>
Request the driver to allocate VMOs for data transfer. Returns the allocated VMOs and their assigned IDs.
The returned VMO handle must include ZX_RIGHT_TRANSFER, ZX_RIGHT_READ and ZX_RIGHT_MAP. If the packet stream is an output stream, then the handle must also include ZX_RIGHT_WRITE.
Returns ZX_ERR_INVALID_ARGS if min_vmo_size is zero or vmo_count is zero.
Returns ZX_ERR_NO_MEMORY if the driver cannot allocate the requested VMOs.
Returns ZX_ERR_BAD_STATE if VMOs are already allocated or registered, or if the
stream is already started. Call DeallocateVmos or UnregisterVmos first to
reconfigure.
Sourcepub fn deallocate_vmos(
&self,
___deadline: MonotonicInstant,
) -> Result<PacketStreamControlDeallocateVmosResult, Error>
pub fn deallocate_vmos( &self, ___deadline: MonotonicInstant, ) -> Result<PacketStreamControlDeallocateVmosResult, Error>
Releases all VMOs previously allocated via AllocateVmos.
This also occurs automatically when the PacketStreamControl channel is closed.
Returns ZX_ERR_BAD_STATE if VMOs are not currently allocated, or if the stream is
not stopped.
Sourcepub fn register_vmos(
&self,
payload: RegisterVmosConfig,
___deadline: MonotonicInstant,
) -> Result<PacketStreamControlRegisterVmosResult, Error>
pub fn register_vmos( &self, payload: RegisterVmosConfig, ___deadline: MonotonicInstant, ) -> Result<PacketStreamControlRegisterVmosResult, Error>
Registers client-allocated VMOs with the driver.
The registered VMO handle must include ZX_RIGHT_TRANSFER, ZX_RIGHT_READ and ZX_RIGHT_MAP. If the packet stream is an input stream, then the handle must also include ZX_RIGHT_WRITE.
Returns ZX_ERR_INVALID_ARGS if vmo_infos is empty, or if any VMO handle is invalid,
or if duplicate vmo_ids are found.
Returns ZX_ERR_ACCESS_DENIED if any VMO does not have the required rights.
Returns ZX_ERR_BAD_STATE if VMOs are already registered or allocated, or if the
stream is already started. Call UnregisterVmos or DeallocateVmos first to
reconfigure.
Sourcepub fn unregister_vmos(
&self,
___deadline: MonotonicInstant,
) -> Result<PacketStreamControlUnregisterVmosResult, Error>
pub fn unregister_vmos( &self, ___deadline: MonotonicInstant, ) -> Result<PacketStreamControlUnregisterVmosResult, Error>
Unregisters all VMOs previously registered via RegisterVmos.
This also occurs automatically when the PacketStreamControl channel is closed.
Returns ZX_ERR_BAD_STATE if VMOs are not currently registered, or if the stream is
not stopped.
Sourcepub fn get_packet_stream_sink(
&self,
___deadline: MonotonicInstant,
) -> Result<PacketStreamControlGetPacketStreamSinkResult, Error>
pub fn get_packet_stream_sink( &self, ___deadline: MonotonicInstant, ) -> Result<PacketStreamControlGetPacketStreamSinkResult, Error>
Connects to the data sink implemented by the driver. This is used for audio Output where the driver consumes data.
Flow:
- App writes audio data to a registered VMO.
- App flushes the cache for the written region (if
needs_cache_flush_or_invalidateis true). - App calls
PacketStreamSink.PutPacketwith the location of the data. - Driver consumes the data.
If this method is called multiple times, the previous PacketStreamSink channel is closed,
and any pending requests on that channel are discarded. The new channel replaces the old
one.
Returns ZX_ERR_NOT_SUPPORTED if the stream is an input stream, or if the driver does
not support this method.
Sourcepub fn set_packet_stream_sink(
&self,
payload: PacketStreamControlSetPacketStreamSinkRequest,
___deadline: MonotonicInstant,
) -> Result<PacketStreamControlSetPacketStreamSinkResult, Error>
pub fn set_packet_stream_sink( &self, payload: PacketStreamControlSetPacketStreamSinkRequest, ___deadline: MonotonicInstant, ) -> Result<PacketStreamControlSetPacketStreamSinkResult, Error>
Provides a data sink to the driver. This is used for audio Input where the driver produces data.
Flow:
- Driver writes audio data to a registered VMO.
- Driver calls
PacketStreamSink.PutPacketwith the location of the data. - App receives
PutPacket. - App invalidates the cache for the region (if
needs_cache_flush_or_invalidateis true). - App reads the data.
If this method is called multiple times, the driver closes the previous PacketStreamSink
channel. The new channel replaces the old one.
Returns ZX_ERR_NOT_SUPPORTED if the stream is an output stream, or if the driver does
not support this method.
Sourcepub fn start(
&self,
___deadline: MonotonicInstant,
) -> Result<PacketStreamControlStartResult, Error>
pub fn start( &self, ___deadline: MonotonicInstant, ) -> Result<PacketStreamControlStartResult, Error>
Start the packet-stream.
Returns ZX_ERR_BAD_STATE if:
- Buffers have not been allocated (if
DRIVER_OWNEDwas specified) and/or registered (ifCLIENT_OWNEDwas specified). This is not applicable ifINLINEis supported. - The stream is already started.
Sourcepub fn stop(
&self,
___deadline: MonotonicInstant,
) -> Result<PacketStreamControlStopResult, Error>
pub fn stop( &self, ___deadline: MonotonicInstant, ) -> Result<PacketStreamControlStopResult, Error>
Stop the packet-stream.
Once the response is received, the stream is halted.
Behavior depends on the stream direction:
- Output: The driver stops consuming packets. Any pending
PacketStreamSink.PutPacketrequests will remain pending untilStartis called again. Clients may callPacketStreamSink.FlushPacketsafterStopto discard these pending packets. - Input: The driver stops producing packets. No further
PacketStreamSink.PutPacketcalls will be made by the driver untilStartis called again.
Note that since PacketStreamSink uses a separate channel, there is no strict ordering
guarantee between Stop and PacketStreamSink.PutPacket:
- For Output, some in-flight
PacketStreamSink.PutPacketcalls may complete successfully afterStophas returned. - For Input, some in-flight
PacketStreamSink.PutPacketcalls may arrive at the client afterStophas returned.
Returns ZX_ERR_BAD_STATE if the stream is not started.
Trait Implementations§
Source§impl From<Channel> for PacketStreamControlSynchronousProxy
Available on Fuchsia only.
impl From<Channel> for PacketStreamControlSynchronousProxy
Source§impl From<PacketStreamControlSynchronousProxy> for NullableHandle
Available on Fuchsia only.
impl From<PacketStreamControlSynchronousProxy> for NullableHandle
Source§fn from(value: PacketStreamControlSynchronousProxy) -> Self
fn from(value: PacketStreamControlSynchronousProxy) -> Self
Source§impl FromClient for PacketStreamControlSynchronousProxy
Available on Fuchsia only.
impl FromClient for PacketStreamControlSynchronousProxy
Source§type Protocol = PacketStreamControlMarker
type Protocol = PacketStreamControlMarker
Source§fn from_client(value: ClientEnd<PacketStreamControlMarker>) -> Self
fn from_client(value: ClientEnd<PacketStreamControlMarker>) -> Self
Source§impl SynchronousProxy for PacketStreamControlSynchronousProxy
Available on Fuchsia only.
impl SynchronousProxy for PacketStreamControlSynchronousProxy
Source§type Proxy = PacketStreamControlProxy
type Proxy = PacketStreamControlProxy
Source§type Protocol = PacketStreamControlMarker
type Protocol = PacketStreamControlMarker
Proxy controls.