feat: add display UI with splash screen, dashboard, and RSSI sparkline
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>
This commit is contained in:
17624 files changed
+4564928
-38
No files matched your search
Vendored
+50
@@ -0,0 +1,50 @@
|
||||
# embassy-usb
|
||||
|
||||
Async USB device stack for embedded devices in Rust.
|
||||
|
||||
## Features
|
||||
|
||||
- Native async.
|
||||
- Fully lock-free: endpoints are separate objects that can be used independently without needing a central mutex. If the driver supports it, they can even be used from different priority levels.
|
||||
- Suspend/resume, remote wakeup.
|
||||
- USB composite devices.
|
||||
- Ergonomic descriptor builder.
|
||||
- Ready-to-use implementations for a few USB classes (note you can still implement any class yourself outside the crate).
|
||||
- Serial ports (CDC ACM)
|
||||
- Ethernet (CDC NCM)
|
||||
- Human Interface Devices (HID)
|
||||
- MIDI
|
||||
|
||||
## Adding support for new hardware
|
||||
|
||||
To add `embassy-usb` support for new hardware (i.e. a new MCU chip), you have to write a driver that implements
|
||||
the [`embassy-usb-driver`](https://crates.io/crates/embassy-usb-driver) traits.
|
||||
|
||||
Driver crates should depend only on `embassy-usb-driver`, not on the main `embassy-usb` crate.
|
||||
This allows existing drivers to continue working for newer `embassy-usb` major versions, without needing an update, if the driver
|
||||
trait has not had breaking changes.
|
||||
|
||||
## Configuration
|
||||
|
||||
`embassy-usb` has some configuration settings that are set at compile time, affecting sizes
|
||||
and counts of buffers.
|
||||
|
||||
They can be set in two ways:
|
||||
|
||||
- Via Cargo features: enable a feature like `<name>-<value>`. `name` must be in lowercase and
|
||||
use dashes instead of underscores. For example. `max-interface-count-3`. Only a selection of values
|
||||
is available, check `Cargo.toml` for the list.
|
||||
- Via environment variables at build time: set the variable named `EMBASSY_USB_<value>`. For example
|
||||
`EMBASSY_USB_MAX_INTERFACE_COUNT=3 cargo build`. You can also set them in the `[env]` section of `.cargo/config.toml`.
|
||||
Any value can be set, unlike with Cargo features.
|
||||
|
||||
Environment variables take precedence over Cargo features. If two Cargo features are enabled for the same setting
|
||||
with different values, compilation fails.
|
||||
|
||||
### `MAX_INTERFACE_COUNT`
|
||||
|
||||
Max amount of interfaces that can be created in one device. Default: 4.
|
||||
|
||||
## Interoperability
|
||||
|
||||
This crate can run on any executor.
|
||||
Reference in new issue
Block a user