1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// SPDX-License-Identifier: GPL-3.0-only
//! CR1140 SDK — app-building conveniences layered on top of `cr1140-hal`.
//!
//! This crate is deliberately UI-framework agnostic (no Slint, no rendering): it
//! provides the "batteries" a native CR1140 application needs regardless of how
//! it draws — keypad LED effects, system telemetry, and device/network info.
//!
//! - [`led`] — RGB keypad-LED animation modes and a [`led::LedDriver`].
//! - [`metrics`] — generic Linux telemetry (CPU, memory, load, uptime) plus a
//! [`metrics::Telemetry`] collector returning an aggregated [`metrics::Snapshot`].
//! - [`device`] — device & OS identity and network state.
//! - [`guard`] — [`guard::ShutdownGuard`]: restore backlight/LED on exit (RAII),
//! with opt-in SIGINT/SIGTERM handling for standalone binaries.
//! - [`config`] — atomic [`config::Store`] persistence for the p2 overlay
//! (`/home/cds-apps`); enabled by the default `config` feature.
//! - [`retain`] — reflash-surviving [`retain::Store`] on the SPI EEPROM (A/B +
//! CRC32, `postcard`); enabled by the default `retain` feature.
//! - [`net`] — host network-config apply via `nmcli` ([`net::apply`]); off by
//! default behind the `net` feature.
//!
//! Errors from fallible operations surface as [`SdkError`]. This crate is a guest
//! under host executors (ROS 2 / Apex / Taktora): it logs through the `tracing`
//! facade without installing a subscriber, and never grabs signals by default.
pub use ;
pub use ;
pub use ;
pub use ;
pub use Store as RetainStore;