umsh_app_ulcp_cli/
lib.rs

1#![no_std]
2
3//! CLI console app for tracker-class UMSH boards.
4//!
5//! This crate is **app-specific policy**: it decides which button
6//! event maps to which action, which CLI commands exist, and how the
7//! MAC layer integrates with the user-facing surface. Mechanism
8//! (button gesture FSM, LED heartbeat, buzzer melodies, low-battery
9//! detection, power intents) lives in
10//! [`umsh-ux-tracker`](../umsh_ux_tracker/index.html) and is shared
11//! with any other tracker-class app (e.g. a future repeater
12//! firmware).
13//!
14//! Typical use from a `firmware/<app>-<board>` binary crate:
15//!
16//! ```ignore
17//! #[embassy_executor::main]
18//! async fn main(spawner: Spawner) -> ! {
19//!     let board = umsh_bsp_t1000e::Board::init();
20//!     umsh_app_ulcp_cli::run(spawner, board).await
21//! }
22//! ```
23//!
24//! See `docs/firmware-architecture.md` for the BSP / UX / App /
25//! Binary layering.
26
27// TODO: implement.
28//
29// Planned modules:
30//   pub mod actions;          // button-event → action mapping.
31//   pub mod cli_io;          // USB-CDC adapter to CliInput / CliOutput.
32//   pub mod commands;        // CLI command dispatch (`dfu`, `poweroff`, …).
33//   pub mod app;              // `run<B>(spawner, board) -> !` entry point.