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>
49 lines
3.3 KiB
Markdown
49 lines
3.3 KiB
Markdown
usb-device
|
|
==========
|
|
|
|
USB stack for embedded devices in Rust.
|
|
|
|
The UsbDevice object represents a composite USB device and is the most important object for
|
|
application implementors. The UsbDevice combines a number of UsbClasses (either custom ones, or
|
|
pre-existing ones provided by other crates) and a UsbBus device driver to implement the USB device.
|
|
|
|
The UsbClass trait can be used to implement USB classes such as a HID device or a serial port. An
|
|
implementation may also use a custom class if the required functionality isn't covered by a standard
|
|
class.
|
|
|
|
The UsbBus trait is intended to be implemented by device-specific crates to provide a driver for
|
|
each device's USB peripheral.
|
|
|
|
Hardware driver crates
|
|
----------------------
|
|
|
|
* [atsam4](https://github.com/atsam-rs/atsam4-hal) - device-driver implementation for atsam4e & atsam4s microcontrollers (UDP). Examples can be found [here](https://github.com/atsam-rs/sam_xplained). While not expressly supported with this crate, atsam3s and atsam55g could also be supported with a similar code-base.
|
|
|
|
* [atsamd](https://github.com/atsamd-rs/atsamd) - device-driver implementation for samd21 & samd51 microcontrollers. An example for the
|
|
itsybitsy_m4 board from Adafruit can be found [here](https://github.com/atsamd-rs/atsamd/blob/master/boards/itsybitsy_m4/examples/usb_serial.rs).
|
|
|
|
* [imxrt-usbd](https://github.com/imxrt-rs/imxrt-usbd) - device-driver implementation for NXP i.MX RT microcontrollers. Examples for
|
|
i.MX RT boards, like the Teensy 4, are maintained with the driver.
|
|
|
|
* [stm32-usbd](https://github.com/stm32-rs/stm32-usbd) - device-driver implementation for multiple STM32 microcontroller families.
|
|
Examples can be found in each individual HAL crate that implements the USB peripheral.
|
|
|
|
* [rp2040-hal](https://github.com/rp-rs/rp-hal) - device-driver implementation for the raspberry pi RP2040 microcontroller. Examples can be found
|
|
in the various boards crates [here](https://github.com/rp-rs/rp-hal-boards).
|
|
|
|
Class crates
|
|
------------
|
|
|
|
* [usbd-hid](https://github.com/twitchyliquid64/usbd-hid) [](https://crates.io/crates/usbd-hid) - HID class
|
|
* [usbd-human-device-interface](https://github.com/dlkj/usbd-human-interface-device) [](https://crates.io/crates/usbd-human-device-interface) - HID class
|
|
* [usbd-serial](https://github.com/rust-embedded-community/usbd-serial) [](https://crates.io/crates/usbd-serial) - CDC-ACM serial port class
|
|
* [usbd-storage](https://github.com/apohrebniak/usbd-storage) [](https://crates.io/crates/usbd-storage) - (Experimental) Mass storage port class
|
|
* [usbd-dfu](https://github.com/vitalyvb/usbd-dfu) [](https://crates.io/crates/usbd-dfu) - Device Firmware Upgrade class
|
|
* [usbd-picotool-reset](https://github.com/ithinuel/usbd-picotool-reset) [](https://crates.io/crates/usbd-picotool-reset) - picotool-reset class
|
|
|
|
Others
|
|
------
|
|
|
|
Other implementations for USB in Rust
|
|
* The [Embassy](https://github.com/embassy-rs/embassy) project has an async USB stack, embassy-usb.
|