feat(firmware): validate configuration and migrate sensor-driven flight APIs

Validate configuration through its owning schemas and keep board
declarations separate from shared F722 resource ownership. Bound USB
transitions, isolate transport failures and retain restart-only activation.

Migrate navigation and flight consumers with the sensor and schema
contracts. Require explicit installation data and synchronous output
authority; board motor outputs remain inhibited.

Validation: assembled-prefix host tests, strict Clippy, platform/USB tests
and both ARM release builds. Final-source coverage and scoped Miri/Kani
evidence are retained separately from hardware qualification.
This commit is contained in:
Onur Özkan committed 2026-11-07 18:12:11 +03:00
1 parent fb1b8af2d1
commit f9a61a086f
211 files changed
+45657 -12740

No files matched your search

+23 -37
View File
@@ -52,6 +52,7 @@ checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9"
dependencies = [
"bare-metal",
"bitfield",
"critical-section",
"embedded-hal",
"volatile-register",
]
@@ -222,6 +223,7 @@ dependencies = [
name = "kaptan-data-channel"
version = "0.1.0"
dependencies = [
"critical-section",
"kaptan-err-reportable",
"kaptan-mavlink",
"kaptan-sensor",
@@ -239,10 +241,6 @@ dependencies = [
"kaptan-mavlink",
]
[[package]]
name = "kaptan-dma"
version = "0.1.0"
[[package]]
name = "kaptan-drivers"
version = "0.1.0"
@@ -283,9 +281,9 @@ name = "kaptan-flight-config"
version = "0.1.0"
dependencies = [
"kaptan-config",
"kaptan-err-reportable",
"kaptan-log",
"minicbor",
"kaptan-control",
"kaptan-math",
"kaptan-navigation",
]
[[package]]
@@ -293,15 +291,18 @@ name = "kaptan-flight-runtime"
version = "0.1.0"
dependencies = [
"kaptan-config",
"kaptan-control",
"kaptan-flight-config",
"kaptan-log",
"kaptan-math",
"kaptan-navigation",
"kaptan-safety",
"kaptan-time",
]
[[package]]
name = "kaptan-geprc-f722-v2"
version = "0.1.0"
dependencies = [
"kaptan-config",
"platform-stm32f7",
"rtic",
]
@@ -309,12 +310,14 @@ dependencies = [
[[package]]
name = "kaptan-i2c"
version = "0.1.0"
dependencies = [
"kaptan-time",
]
[[package]]
name = "kaptan-kakute-f7-mini-v3"
version = "0.1.0"
dependencies = [
"kaptan-config",
"platform-stm32f7",
"rtic",
]
@@ -338,11 +341,8 @@ name = "kaptan-mavlink"
version = "0.1.0"
dependencies = [
"bitflags",
"kaptan-dma",
"kaptan-err-reportable",
"kaptan-sensor",
"kaptan-time",
"kaptan-tx",
"mavlink-bindgen",
"mavlink-core",
"num-derive",
@@ -353,12 +353,18 @@ dependencies = [
name = "kaptan-navigation"
version = "0.1.0"
dependencies = [
"kaptan-err-reportable",
"kaptan-math",
"kaptan-sensor",
"kaptan-time",
]
[[package]]
name = "kaptan-ports"
version = "0.1.0"
dependencies = [
"kaptan-config",
]
[[package]]
name = "kaptan-safety"
version = "0.1.0"
@@ -424,26 +430,6 @@ version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
[[package]]
name = "minicbor"
version = "0.25.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0452a60c1863c1f50b5f77cd295e8d2786849f35883f0b9e18e7e6e1b5691b0"
dependencies = [
"minicbor-derive",
]
[[package]]
name = "minicbor-derive"
version = "0.15.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd2209fff77f705b00c737016a48e73733d7fbccb8b007194db148f03561fb70"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.119",
]
[[package]]
name = "nb"
version = "0.1.3"
@@ -491,16 +477,17 @@ version = "0.1.0"
dependencies = [
"cortex-m",
"cortex-m-rt",
"critical-section",
"kaptan-config",
"kaptan-data-channel",
"kaptan-diagnostics-mavlink",
"kaptan-dma",
"kaptan-drivers",
"kaptan-err-reportable",
"kaptan-file-mavlink",
"kaptan-i2c",
"kaptan-log",
"kaptan-mavlink",
"kaptan-ports",
"kaptan-sensor",
"kaptan-spi",
"kaptan-time",
@@ -724,10 +711,9 @@ dependencies = [
[[package]]
name = "synopsys-usb-otg"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e948d523b316939545d8b21a48c27aef150ce25321b9f95ff7978647a806a6fe"
dependencies = [
"cortex-m",
"critical-section",
"embedded-hal",
"usb-device",
"vcell",