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>
42 lines
1.4 KiB
Rust
42 lines
1.4 KiB
Rust
use usb_device::endpoint::{EndpointAddress, EndpointType};
|
|
|
|
/// USB endpoint descriptor information.
|
|
pub struct EndpointDescriptor {
|
|
/// Endpoint address.
|
|
pub address: EndpointAddress,
|
|
|
|
/// Endpoint transfer type.
|
|
pub ep_type: EndpointType,
|
|
|
|
/// Maximum packet size.
|
|
pub max_packet_size: u16,
|
|
|
|
/// Poll interval for interrupt endpoints.
|
|
pub interval: u8,
|
|
}
|
|
|
|
/// Configuration for an endpoint allocation.
|
|
pub struct EndpointConfig {
|
|
/// The transfer type of the endpoint to be allocated.
|
|
pub ep_type: EndpointType,
|
|
|
|
/// Maximum packet size for the endpoint to be allocated.
|
|
pub max_packet_size: u16,
|
|
|
|
/// Poll interval for interrupt endpoints.
|
|
pub interval: u8,
|
|
|
|
/// Requests a specific endpoint number. Allocation shall fail if the number is not available.
|
|
pub number: Option<u8>,
|
|
|
|
/// Specifies that the endpoint is the "pair" of another endpoint.
|
|
///
|
|
/// If `ep` is an endpoint in the opposite direction, this means that the endpoint to be
|
|
/// allocated uses the same transfer type as `ep` but in the opposite direction in all alternate
|
|
/// settings for the interface.
|
|
///
|
|
/// If `ep` is an endpoint in the same direction, this means that the two endpoints belong to
|
|
/// different alternate settings for the interface and may never be enabled at the same time.
|
|
pub pair_of: Option<EndpointAddress>,
|
|
}
|