Crate umsh_ux_display_tracker

Crate umsh_ux_display_tracker 

Source
Expand description

UX mechanism for display-tracker-class UMSH boards.

This crate is the user-experience layer for boards whose physical UX is a display plus navigation controls: T-Echo, Heltec LoRa32 V3, Wio Tracker L1, T-Beam Supreme, and T-LoRa Pager in tracker mode. The Pager uses its wheel, wheel press, and Backspace; this class does not provide text entry. They differ in panel technology and input richness, but a user who learns one should already know the others, so the interaction model lives here rather than in each firmware.

Like [umsh_ux_tracker], this crate provides only mechanism:

  • menu—the on-screen menu: a wrapping item list narrowed per-board, with confirmation in front of the destructive entries.
  • attention—when to stop assuming the user is looking, and what that means for an emissive panel (power it off) versus a persistent one (send the menu home).
  • gate—what a gesture means when the screen is dark, an alert is running, the boot splash is visible, or the panel is mid-refresh.
  • boot—the boot splash’s two seconds of visible time, independent of the About page that shares its artwork.
  • screen—what a frame looks like: the rows, what they say, and the battery indicator ordinary frames carry. Boot and About share a header-free logo and firmware version. Behind the screen feature, since two boards in this family have no panel.

Button gestures themselves come from [umsh_ux_tracker::button::ButtonFsm]; this crate adds only the shared timing policy, button_timings. Policy that depends on the board—which effects the menu items map to, what shutting down entails—belongs in the firmware.

Rendering used to belong there too, on the theory that a 128×64 OLED and a 200×200 e-paper have too little in common to share a layout. They have more in common than they have pixels: screen takes a per-board screen::Layout and draws the rest once, so the class agrees on what a status page is rather than on how tall it is.

See docs/ux/ for the user-facing rules these modules encode and docs/firmware-architecture.md for the BSP / UX / App / Binary layering.

Modules§

attention
Display-attention policy: when the device should stop assuming the user is looking at it.
boot
One boot splash, timed from when the panel finishes displaying it.
gate
Input gating: when a button gesture means something other than what it would normally mean.
menu
On-screen menu policy shared by every display tracker.
screen
Frame rendering shared by every display tracker.
wifi
Credential-free WiFi state for the display and its saved-network picker.

Functions§

button_timings
The gesture timing shared by every display tracker.