Attention

Struct Attention 

Source
pub struct Attention { /* private fields */ }
Expand description

Display-attention state machine.

Pure logic driven by a monotonic millisecond clock: no timers, no hardware. Every method that can change state takes now_ms so the whole thing is testable with synthetic time.

Implementations§

Source§

impl Attention

Source

pub fn new(kind: DisplayKind, config: AttentionConfig, now_ms: u64) -> Self

Start in DisplayState::Active — boot is itself a wake event.

Source

pub fn kind(&self) -> DisplayKind

Source

pub fn state(&self) -> DisplayState

Source

pub fn config(&self) -> AttentionConfig

Source

pub fn set_config(&mut self, config: AttentionConfig)

Replace the timing policy. The new timeout is measured from the existing activity mark, so shortening it below the time already elapsed lapses at the next poll rather than retroactively.

Source

pub fn is_lapsed(&self) -> bool

True once attention has lapsed.

Source

pub fn accepts_redraw(&self) -> bool

Whether the panel can show a redraw right now.

False only for an emissive panel that has been powered off: pushing pixels at a dark panel wastes bus traffic and, on a board that samples its battery on a timer, would otherwise run forever. Persistent panels always accept a redraw — that is how their lapse is rendered.

Source

pub fn held(&self) -> bool

Whether any hold is currently pinning the display awake.

Source

pub fn wake(&mut self, now_ms: u64) -> Option<Transition>

Register user-driven activity.

Returns Transition::Woke when this actually brought the panel back, so the caller can order its redraw and power-on correctly; returns None when the display was already active and only the inactivity timer moved.

Source

pub fn set_hold( &mut self, reason: HoldReason, active: bool, now_ms: u64, ) -> Option<Transition>

Assert or release a hold.

Asserting one also counts as activity, so an event like a pairing window opening both wakes the panel and pins it. Releasing the last hold restarts the inactivity window from that moment, so the user gets a full timeout to read whatever the hold was showing.

Source

pub fn poll(&mut self, now_ms: u64) -> Option<Transition>

Advance time. Returns a transition when one becomes due.

Source

pub fn next_deadline(&self) -> Option<u64>

Absolute monotonic-millisecond deadline for the next poll, if any is pending.

Trait Implementations§

Source§

impl Clone for Attention

Source§

fn clone(&self) -> Attention

Returns a duplicate of the value. Read more
1.0.0§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Attention

Source§

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

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

impl Copy for Attention

Auto Trait Implementations§

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
Source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
§

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

§

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
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.