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
+368
@@ -0,0 +1,368 @@
|
||||
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
|
||||
#
|
||||
# When uploading crates to the registry Cargo will automatically
|
||||
# "normalize" Cargo.toml files for maximal compatibility
|
||||
# with all versions of Cargo and also rewrite `path` dependencies
|
||||
# to registry (e.g., crates.io) dependencies.
|
||||
#
|
||||
# If you are reading this file be aware that the original Cargo.toml
|
||||
# will likely look very different (and much more reasonable).
|
||||
# See Cargo.toml.orig for the original contents.
|
||||
|
||||
[package]
|
||||
edition = "2021"
|
||||
rust-version = "1.56.0"
|
||||
name = "zerocopy"
|
||||
version = "0.8.47"
|
||||
authors = [
|
||||
"Joshua Liebow-Feeser <joshlf@google.com>",
|
||||
"Jack Wrenn <jswrenn@amazon.com>",
|
||||
]
|
||||
build = "build.rs"
|
||||
exclude = [".*"]
|
||||
autolib = false
|
||||
autobins = false
|
||||
autoexamples = false
|
||||
autotests = false
|
||||
autobenches = false
|
||||
description = """Zerocopy makes zero-cost memory manipulation effortless. We write "unsafe" so you don't have to."""
|
||||
readme = "README.md"
|
||||
keywords = [
|
||||
"cast",
|
||||
"convert",
|
||||
"transmute",
|
||||
"transmutation",
|
||||
"type-punning",
|
||||
]
|
||||
categories = [
|
||||
"embedded",
|
||||
"encoding",
|
||||
"no-std::no-alloc",
|
||||
"parsing",
|
||||
"rust-patterns",
|
||||
]
|
||||
license = "BSD-2-Clause OR Apache-2.0 OR MIT"
|
||||
repository = "https://github.com/google/zerocopy"
|
||||
|
||||
[package.metadata.build-rs]
|
||||
no-zerocopy-simd-x86-avx12-1-89-0 = "1.89.0"
|
||||
no-zerocopy-core-error-1-81-0 = "1.81.0"
|
||||
no-zerocopy-diagnostic-on-unimplemented-1-78-0 = "1.78.0"
|
||||
no-zerocopy-generic-bounds-in-const-fn-1-61-0 = "1.61.0"
|
||||
no-zerocopy-target-has-atomics-1-60-0 = "1.60.0"
|
||||
no-zerocopy-aarch64-simd-1-59-0 = "1.59.0"
|
||||
no-zerocopy-panic-in-const-and-vec-try-reserve-1-57-0 = "1.57.0"
|
||||
|
||||
[package.metadata.ci]
|
||||
pinned-stable = "1.93.1"
|
||||
pinned-nightly = "nightly-2026-01-25"
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
all-features = true
|
||||
rustdoc-args = [
|
||||
"--cfg",
|
||||
"doc_cfg",
|
||||
"--generate-link-to-definition",
|
||||
"--extend-css",
|
||||
"rustdoc/style.css",
|
||||
]
|
||||
|
||||
[package.metadata.playground]
|
||||
features = ["__internal_use_only_features_that_work_on_stable"]
|
||||
|
||||
[features]
|
||||
__internal_use_only_features_that_work_on_stable = [
|
||||
"alloc",
|
||||
"derive",
|
||||
"simd",
|
||||
"std",
|
||||
]
|
||||
alloc = []
|
||||
derive = ["zerocopy-derive"]
|
||||
float-nightly = []
|
||||
simd = []
|
||||
simd-nightly = ["simd"]
|
||||
std = ["alloc"]
|
||||
|
||||
[lib]
|
||||
name = "zerocopy"
|
||||
path = "src/lib.rs"
|
||||
|
||||
[[test]]
|
||||
name = "codegen"
|
||||
path = "tests/codegen.rs"
|
||||
|
||||
[[test]]
|
||||
name = "include"
|
||||
path = "tests/include.rs"
|
||||
|
||||
[[test]]
|
||||
name = "ui"
|
||||
path = "tests/ui.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "as_bytes_dynamic_size"
|
||||
path = "benches/as_bytes_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "as_bytes_static_size"
|
||||
path = "benches/as_bytes_static_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "read_from_bytes"
|
||||
path = "benches/read_from_bytes.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "read_from_prefix"
|
||||
path = "benches/read_from_prefix.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "read_from_suffix"
|
||||
path = "benches/read_from_suffix.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_bytes_dynamic_padding"
|
||||
path = "benches/ref_from_bytes_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_bytes_dynamic_size"
|
||||
path = "benches/ref_from_bytes_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_bytes_static_size"
|
||||
path = "benches/ref_from_bytes_static_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_bytes_with_elems_dynamic_padding"
|
||||
path = "benches/ref_from_bytes_with_elems_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_bytes_with_elems_dynamic_size"
|
||||
path = "benches/ref_from_bytes_with_elems_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_prefix_dynamic_padding"
|
||||
path = "benches/ref_from_prefix_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_prefix_dynamic_size"
|
||||
path = "benches/ref_from_prefix_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_prefix_static_size"
|
||||
path = "benches/ref_from_prefix_static_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_prefix_with_elems_dynamic_padding"
|
||||
path = "benches/ref_from_prefix_with_elems_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_prefix_with_elems_dynamic_size"
|
||||
path = "benches/ref_from_prefix_with_elems_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_suffix_dynamic_padding"
|
||||
path = "benches/ref_from_suffix_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_suffix_dynamic_size"
|
||||
path = "benches/ref_from_suffix_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_suffix_static_size"
|
||||
path = "benches/ref_from_suffix_static_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_suffix_with_elems_dynamic_padding"
|
||||
path = "benches/ref_from_suffix_with_elems_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "ref_from_suffix_with_elems_dynamic_size"
|
||||
path = "benches/ref_from_suffix_with_elems_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "split_at_dynamic_padding"
|
||||
path = "benches/split_at_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "split_at_dynamic_size"
|
||||
path = "benches/split_at_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "split_at_unchecked_dynamic_padding"
|
||||
path = "benches/split_at_unchecked_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "split_at_unchecked_dynamic_size"
|
||||
path = "benches/split_at_unchecked_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "split_via_immutable_dynamic_padding"
|
||||
path = "benches/split_via_immutable_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "split_via_immutable_dynamic_size"
|
||||
path = "benches/split_via_immutable_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "split_via_runtime_check_dynamic_padding"
|
||||
path = "benches/split_via_runtime_check_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "split_via_runtime_check_dynamic_size"
|
||||
path = "benches/split_via_runtime_check_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "split_via_unchecked_dynamic_padding"
|
||||
path = "benches/split_via_unchecked_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "split_via_unchecked_dynamic_size"
|
||||
path = "benches/split_via_unchecked_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "transmute"
|
||||
path = "benches/transmute.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "transmute_ref_dynamic_size"
|
||||
path = "benches/transmute_ref_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "transmute_ref_static_size"
|
||||
path = "benches/transmute_ref_static_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_read_from_bytes"
|
||||
path = "benches/try_read_from_bytes.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_read_from_prefix"
|
||||
path = "benches/try_read_from_prefix.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_read_from_suffix"
|
||||
path = "benches/try_read_from_suffix.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_bytes_dynamic_padding"
|
||||
path = "benches/try_ref_from_bytes_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_bytes_dynamic_size"
|
||||
path = "benches/try_ref_from_bytes_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_bytes_static_size"
|
||||
path = "benches/try_ref_from_bytes_static_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_bytes_with_elems_dynamic_padding"
|
||||
path = "benches/try_ref_from_bytes_with_elems_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_bytes_with_elems_dynamic_size"
|
||||
path = "benches/try_ref_from_bytes_with_elems_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_prefix_dynamic_padding"
|
||||
path = "benches/try_ref_from_prefix_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_prefix_dynamic_size"
|
||||
path = "benches/try_ref_from_prefix_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_prefix_static_size"
|
||||
path = "benches/try_ref_from_prefix_static_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_prefix_with_elems_dynamic_padding"
|
||||
path = "benches/try_ref_from_prefix_with_elems_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_prefix_with_elems_dynamic_size"
|
||||
path = "benches/try_ref_from_prefix_with_elems_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_suffix_dynamic_padding"
|
||||
path = "benches/try_ref_from_suffix_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_suffix_dynamic_size"
|
||||
path = "benches/try_ref_from_suffix_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_suffix_static_size"
|
||||
path = "benches/try_ref_from_suffix_static_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_suffix_with_elems_dynamic_padding"
|
||||
path = "benches/try_ref_from_suffix_with_elems_dynamic_padding.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_ref_from_suffix_with_elems_dynamic_size"
|
||||
path = "benches/try_ref_from_suffix_with_elems_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_transmute"
|
||||
path = "benches/try_transmute.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_transmute_ref_dynamic_size"
|
||||
path = "benches/try_transmute_ref_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "try_transmute_ref_static_size"
|
||||
path = "benches/try_transmute_ref_static_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "write_to_dynamic_size"
|
||||
path = "benches/write_to_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "write_to_prefix_dynamic_size"
|
||||
path = "benches/write_to_prefix_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "write_to_prefix_static_size"
|
||||
path = "benches/write_to_prefix_static_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "write_to_static_size"
|
||||
path = "benches/write_to_static_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "write_to_suffix_dynamic_size"
|
||||
path = "benches/write_to_suffix_dynamic_size.rs"
|
||||
|
||||
[[bench]]
|
||||
name = "write_to_suffix_static_size"
|
||||
path = "benches/write_to_suffix_static_size.rs"
|
||||
|
||||
[dependencies.zerocopy-derive]
|
||||
version = "=0.8.47"
|
||||
optional = true
|
||||
|
||||
[dev-dependencies.elain]
|
||||
version = "0.3.0"
|
||||
|
||||
[dev-dependencies.itertools]
|
||||
version = "0.11"
|
||||
|
||||
[dev-dependencies.rand]
|
||||
version = "0.8.5"
|
||||
features = ["small_rng"]
|
||||
default-features = false
|
||||
|
||||
[dev-dependencies.rustversion]
|
||||
version = "1.0"
|
||||
|
||||
[dev-dependencies.static_assertions]
|
||||
version = "1.1"
|
||||
|
||||
[dev-dependencies.zerocopy-derive]
|
||||
version = "=0.8.47"
|
||||
|
||||
[target."cfg(any())".dependencies.zerocopy-derive]
|
||||
version = "=0.8.47"
|
||||
Reference in new issue
Block a user