umsh_bsp_techo/
lib.rs

1#![no_std]
2
3//! Board support for the LilyGO T-Echo (nRF52840).
4//!
5//! Composes [`umsh-bsp-nrf52840`](../umsh_bsp_nrf52840/index.html) with
6//! the T-Echo's pinout and on-board peripherals.
7//!
8//! Initial scope is *bringup only*:
9//!
10//! - peripheral power switch (P0.12, active-high)
11//! - USB-CDC handles (over the nRF native USB peripheral)
12//! - blue LED (P0.14, active-low)
13//! - e-paper SPI bus + control pins for the SSD1681 display
14//! - battery voltage / charge state (SAADC on AIN2/P0.04)
15//! - GNSS power sequencing for the Quectel L76K
16//!
17//! Future expansion (LoRa, I²C peripherals, QSPI flash, buttons,
18//! Plus-only back-panel) is welcome but is not yet implemented. The
19//! T-Echo is not a tracker-class device — when a "real" T-Echo firmware
20//! arrives, it should be designed against a new `umsh-ux-handheld` (or
21//! similar) class rather than `umsh-ux-tracker`.
22//!
23//! See `docs/hardware/lilygo-techo-hardware.md` for the firmware-derived
24//! hardware reference.
25
26#[cfg(all(target_os = "none", feature = "display"))]
27pub mod display;
28
29#[cfg(all(target_os = "none", feature = "gnss"))]
30pub mod gnss;
31
32#[cfg(all(target_os = "none", feature = "platform"))]
33pub mod platform;
34
35#[cfg(all(target_os = "none", feature = "power"))]
36pub mod power;
37
38#[cfg(all(target_os = "none", feature = "platform"))]
39pub use platform::{TechoMac, TechoPlatform};
40#[cfg(all(target_os = "none", feature = "power"))]
41pub use power::{PowerSignaler, SHUTDOWN_SIGNAL};
42
43// TODO: implement:
44//   pub mod pins;          // typed pin handles per lilygo-techo-hardware.md.
45//   pub mod board;          // `Board::init()` and the composed Platform impl.
46//   pub mod power;          // P0.12 peripheral-rail switch.
47//   pub mod indicators;      // blue LED (P0.14, active-low).
48//   pub mod usb;            // USB-CDC plumbing on top of umsh-bsp-nrf52840.