Implement full SSD1306 OLED display support: - Splash screen on boot (1.5s) with project name, version, board - Dashboard showing radio state, config, counters, RSSI/SNR - RSSI history sparkline (64-sample ring buffer, 2px-wide bars) - DisplayOn/DisplayOff host commands routed via dedicated channel - Pure render functions against generic DrawTarget (no hardware coupling) - Display on/off control bypasses radio task entirely Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
63 lines
2.0 KiB
Rust
63 lines
2.0 KiB
Rust
//! Low level access to RISC-V processors
|
|
//!
|
|
//! # Minimum Supported Rust Version (MSRV)
|
|
//!
|
|
//! This crate is guaranteed to compile on stable Rust 1.60 and up. It *might*
|
|
//! compile with older versions but that may change in any new patch release.
|
|
//!
|
|
//! # Features
|
|
//!
|
|
//! This crate provides:
|
|
//!
|
|
//! - Access to core registers like `mstatus` or `mcause`.
|
|
//! - Interrupt manipulation mechanisms.
|
|
//! - Wrappers around assembly instructions like `WFI`.
|
|
//!
|
|
//! # Optional features
|
|
//!
|
|
//! ## `s-mode`
|
|
//!
|
|
//! This feature re-exports in `interrupt` S-mode interrupt functions defined in `interrupt::supervisor`.
|
|
//! By default, the crate assumes that the target is running in M-mode.
|
|
//! Thus, `interrupt` re-exports the M-mode functions defined in `interrupt::machine`.
|
|
//!
|
|
//! ## `critical-section-single-hart`
|
|
//!
|
|
//! This feature enables a [`critical-section`](https://github.com/rust-embedded/critical-section)
|
|
//! implementation suitable for single-hart targets, based on disabling interrupts globally.
|
|
//! This feature uses S-mode interrupt handling if the `s-mode` feature is enabled, and M-mode otherwise.
|
|
//!
|
|
//! It is **unsound** to enable it on multi-hart targets,
|
|
//! and may cause functional problems in systems where some interrupts must NOT be disabled
|
|
//! or critical sections are managed as part of an RTOS. In these cases, you should use
|
|
//! a target-specific implementation instead, typically provided by a HAL or RTOS crate.
|
|
|
|
#![no_std]
|
|
#![allow(clippy::missing_safety_doc)]
|
|
|
|
pub use paste::paste;
|
|
|
|
pub mod asm;
|
|
pub mod bits;
|
|
pub mod delay;
|
|
pub mod interrupt;
|
|
pub mod register;
|
|
|
|
// Re-export crates of the RISC-V ecosystem
|
|
#[cfg(feature = "riscv-macros")]
|
|
pub use riscv_macros::*;
|
|
pub use riscv_pac::*;
|
|
|
|
#[macro_use]
|
|
mod macros;
|
|
|
|
#[cfg(all(riscv, feature = "critical-section-single-hart"))]
|
|
mod critical_section;
|
|
|
|
/// Used to reexport items for use in macros. Do not use directly.
|
|
/// Not covered by semver guarantees.
|
|
#[doc(hidden)]
|
|
pub mod _export {
|
|
pub use critical_section;
|
|
}
|