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.