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 small display plus a button — optionally with a D-pad — and no keyboard: T-Echo, Heltec LoRa32 V3, Wio Tracker L1, T-Beam Supreme. 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, or the panel is mid-refresh.
  • screen — what a frame looks like: the rows, what they say, and the battery indicator every frame carries. 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.
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.

Functions§

button_timings
The gesture timing shared by every display tracker.