Skip to main content

SourceProxy

Struct SourceProxy 

Source
pub struct SourceProxy { /* private fields */ }

Implementations§

Source§

impl SourceProxy

Source

pub fn new(channel: AsyncChannel) -> Self

Create a new Proxy for fuchsia.hardware.power.source/Source.

Source

pub fn take_event_stream(&self) -> SourceEventStream

Get a Stream of events from the remote end of the protocol.

§Panics

Panics if the event stream was already taken.

Source

pub fn get_spec( &self, ) -> QueryResponseFut<SourceGetSpecResult, DefaultFuchsiaResourceDialect>

Returns static hardware characteristics that do not change during operation.

Source

pub fn get_status( &self, ) -> QueryResponseFut<SourceGetStatusResult, DefaultFuchsiaResourceDialect>

Returns dynamic status of the source immediately.

Source

pub fn set_role( &self, role: &Role, ) -> QueryResponseFut<SourceSetRoleResult, DefaultFuchsiaResourceDialect>

Set the role of this specific node.

Errors:

  • INVALID_ARGS: If the provided role is invalid.
  • NOT_SUPPORTED: If the requested role is not supported by the hardware.
  • INTERNAL: If an unexpected error occurred.
Source

pub fn watch( &self, interest: &Status, wake_on: &Status, lease: Option<EventPair>, ) -> QueryResponseFut<(Status, Option<EventPair>), DefaultFuchsiaResourceDialect>

Change notification for power source state using a “hanging-get” pattern.

The first call to this method returns the current hardware state immediately. Subsequent calls block until a change occurs that matches the provided masks.

At most one Watch call may be outstanding at a time per connection. Completing a call acknowledges that the client has received the previous update.

§Power Management and Suspend

To prevent lost wakeups, the server (driver) must ensure that the Watch call remains active (and hardware interrupts armed) while the system is suspended.

  • Interest Triggers: If a change in the interest mask occurs while the system is suspended, the server MUST NOT complete the Watch call until the system wakes for another reason (e.g., a wake_on event or external trigger). This ensures the CPU remains asleep for non-critical updates.
  • Wake-On Triggers: If a change in the wake_on mask occurs, the server MUST wake the system and complete the call immediately with a wake_lease.

As a result of this queuing behavior, if multiple changes occur while the system is suspended, they may be merged into a single returned status table, and intermediate state transitions may be lost.

  • interest: The client wants to be notified if any of the fields present in this table change. If any field in interest changes, the method returns.
  • wake_on: Similar to interest, but if a change occurs in these fields, the server will attempt to keep the system awake using the provided lease (or by returning a wake_lease) until the client acknowledges the update.
  • lease: A power lease token used to coordinate handoff between the server and client, ensuring the system does not suspend before the client can process a critical power event.

Returns:

  • status: The updated status table containing the fields that changed.
  • wake_lease: An optional lease token provided if the change triggered a wake_on condition and the server is maintaining system state.

Trait Implementations§

Source§

impl Clone for SourceProxy

Source§

fn clone(&self) -> SourceProxy

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SourceProxy

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Proxy for SourceProxy

Source§

type Protocol = SourceMarker

The protocol which this Proxy controls.
Source§

fn from_channel(inner: AsyncChannel) -> Self

Create a proxy over the given channel.
Source§

fn into_channel(self) -> Result<AsyncChannel, Self>

Attempt to convert the proxy back into a channel. Read more
Source§

fn as_channel(&self) -> &AsyncChannel

Get a reference to the proxy’s underlying channel. Read more
Source§

fn into_client_end(self) -> Result<ClientEnd<Self::Protocol>, Self>

Attempt to convert the proxy back into a client end. Read more
Source§

fn is_closed(&self) -> bool

Returns true if the proxy has received the PEER_CLOSED signal.
Source§

fn on_closed(&self) -> OnSignals<'_, Unowned<'_, NullableHandle>>

Returns a future that completes when the proxy receives the PEER_CLOSED signal.
Source§

impl SourceProxyInterface for SourceProxy

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromClient for T
where T: Proxy,

Source§

type Protocol = <T as Proxy>::Protocol

The protocol.
Source§

fn from_client(value: ClientEnd<<T as FromClient>::Protocol>) -> T

Converts from a client.
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ProxyHasDomain for T
where T: Proxy,

Source§

fn domain(&self) -> ZirconClient

Get a “client” for this proxy. This is just an object which has methods for a few common handle creation operations.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.