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
+268
@@ -0,0 +1,268 @@
|
||||
# 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 = "2018"
|
||||
rust-version = "1.34"
|
||||
name = "portable-atomic"
|
||||
version = "1.13.1"
|
||||
build = "build.rs"
|
||||
exclude = [
|
||||
"/.*",
|
||||
"/tools",
|
||||
"/target-specs",
|
||||
"/DEVELOPMENT.md",
|
||||
]
|
||||
autolib = false
|
||||
autobins = false
|
||||
autoexamples = false
|
||||
autotests = false
|
||||
autobenches = false
|
||||
description = """
|
||||
Portable atomic types including support for 128-bit atomics, atomic float, etc.
|
||||
"""
|
||||
readme = "README.md"
|
||||
keywords = ["atomic"]
|
||||
categories = [
|
||||
"concurrency",
|
||||
"embedded",
|
||||
"hardware-support",
|
||||
"no-std",
|
||||
"no-std::no-alloc",
|
||||
]
|
||||
license = "Apache-2.0 OR MIT"
|
||||
repository = "https://github.com/taiki-e/portable-atomic"
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
features = [
|
||||
"float",
|
||||
"std",
|
||||
"serde",
|
||||
"critical-section",
|
||||
]
|
||||
rustdoc-args = [
|
||||
"--extend-css",
|
||||
"src/rustdoc.css",
|
||||
"--cfg",
|
||||
"portable_atomic_unstable_f16",
|
||||
"--cfg",
|
||||
"portable_atomic_unstable_f128",
|
||||
]
|
||||
targets = ["x86_64-unknown-linux-gnu"]
|
||||
|
||||
[package.metadata.cargo_check_external_types]
|
||||
allowed_external_types = ["serde_core::*"]
|
||||
|
||||
[features]
|
||||
default = ["fallback"]
|
||||
disable-fiq = []
|
||||
fallback = []
|
||||
float = []
|
||||
force-amo = []
|
||||
require-cas = []
|
||||
s-mode = []
|
||||
std = []
|
||||
unsafe-assume-privileged = []
|
||||
unsafe-assume-single-core = []
|
||||
|
||||
[lib]
|
||||
name = "portable_atomic"
|
||||
path = "src/lib.rs"
|
||||
doc-scrape-examples = false
|
||||
|
||||
[dependencies.critical-section]
|
||||
version = "1"
|
||||
optional = true
|
||||
|
||||
[dependencies.serde]
|
||||
version = "1.0.60"
|
||||
optional = true
|
||||
default-features = false
|
||||
|
||||
[dev-dependencies.build-context]
|
||||
version = "0.1"
|
||||
|
||||
[dev-dependencies.crossbeam-utils]
|
||||
version = "=0.8.16"
|
||||
|
||||
[dev-dependencies.fastrand]
|
||||
version = "2"
|
||||
|
||||
[dev-dependencies.paste]
|
||||
version = "1"
|
||||
|
||||
[dev-dependencies.quickcheck]
|
||||
version = "1"
|
||||
default-features = false
|
||||
|
||||
[dev-dependencies.rustversion]
|
||||
version = "1"
|
||||
|
||||
[dev-dependencies.sptr]
|
||||
version = "0.3"
|
||||
|
||||
[dev-dependencies.static_assertions]
|
||||
version = "1"
|
||||
|
||||
[target."cfg(unix)".dev-dependencies.libc]
|
||||
version = "=0.2.163"
|
||||
|
||||
[target."cfg(valgrind)".dev-dependencies.crabgrind]
|
||||
version = "0.1"
|
||||
|
||||
[target."cfg(windows)".dev-dependencies.windows-sys]
|
||||
version = "0.61"
|
||||
features = [
|
||||
"Win32_Foundation",
|
||||
"Win32_System_Threading",
|
||||
]
|
||||
|
||||
[lints.clippy]
|
||||
all = "warn"
|
||||
as_ptr_cast_mut = "warn"
|
||||
as_underscore = "warn"
|
||||
default_union_representation = "warn"
|
||||
inline_asm_x86_att_syntax = "warn"
|
||||
pedantic = "warn"
|
||||
trailing_empty_array = "warn"
|
||||
transmute_undefined_repr = "warn"
|
||||
undocumented_unsafe_blocks = "warn"
|
||||
unused_trait_names = "warn"
|
||||
|
||||
[lints.clippy.bool_assert_comparison]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.borrow_as_ptr]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.cast_lossless]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.declare_interior_mutable_const]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.doc_markdown]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.float_cmp]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.incompatible_msrv]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.lint_groups_priority]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.manual_assert]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.manual_range_contains]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.missing_errors_doc]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.module_name_repetitions]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.naive_bytecount]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.nonminimal_bool]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.range_plus_one]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.similar_names]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.single_match]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.single_match_else]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.struct_excessive_bools]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.struct_field_names]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.too_many_arguments]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.too_many_lines]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.type_complexity]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.clippy.unreadable_literal]
|
||||
level = "allow"
|
||||
priority = 1
|
||||
|
||||
[lints.rust]
|
||||
deprecated_safe = "warn"
|
||||
improper_ctypes = "warn"
|
||||
improper_ctypes_definitions = "warn"
|
||||
non_ascii_idents = "warn"
|
||||
rust_2018_idioms = "warn"
|
||||
single_use_lifetimes = "warn"
|
||||
unnameable_types = "warn"
|
||||
unreachable_pub = "warn"
|
||||
|
||||
[lints.rust.unexpected_cfgs]
|
||||
level = "warn"
|
||||
priority = 0
|
||||
check-cfg = [
|
||||
'cfg(target_arch,values("xtensa"))',
|
||||
'cfg(target_arch,values("amdgpu"))',
|
||||
'cfg(target_arch,values("loongarch32"))',
|
||||
'cfg(target_os,values("trusty"))',
|
||||
'cfg(target_os,values("psx"))',
|
||||
'cfg(target_env,values("psx"))',
|
||||
'cfg(target_feature,values("lse2","lse128","rcpc3"))',
|
||||
'cfg(target_feature,values("quadword-atomics"))',
|
||||
'cfg(target_feature,values("zaamo","zabha"))',
|
||||
'cfg(target_feature,values("zacas"))',
|
||||
'cfg(target_feature,values("miscellaneous-extensions-3"))',
|
||||
'cfg(target_pointer_width,values("128"))',
|
||||
"cfg(portable_atomic_no_outline_atomics,portable_atomic_outline_atomics,portable_atomic_unstable_f16,portable_atomic_unstable_f128)",
|
||||
"cfg(portable_atomic_unstable_coerce_unsized)",
|
||||
"cfg(portable_atomic_test_detect_false,portable_atomic_test_no_std_static_assert_ffi,qemu,valgrind)",
|
||||
]
|
||||
|
||||
[profile.release]
|
||||
debug = 2
|
||||
Reference in new issue
Block a user