Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .claude/settings.local.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@
"Bash(git -C /Users/moritz/Documents/Projects/FPV/VX3.5_XIAO_LED_Controller/xiao_drone_led_controller log --oneline -3)",
"WebFetch(domain:docs.rs)",
"Bash(cargo tree:*)",
"Bash(cargo test:*)"
"Bash(cargo test:*)",
"Bash(cargo doc:*)",
"WebFetch(domain:raw.githubusercontent.com)",
"Bash(curl:*)"
]
}
}
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ and this project adheres to [Conventional Commits](https://www.conventionalcommi

### Added

- BLE Nordic UART Service (NUS) for app control via JSON protocol
- `ble` module (`src/ble.rs`): Command/Response types with serde, command handler, state snapshot builder, JSON serialization helpers — all `no_std`, no heap, unit-testable
- `ble_task`: async task advertising as "AirLED", serving NUS GATT service with chunked notifications
- Newline-delimited JSON protocol over BLE: externally-tagged command enums (`{"GetState":null}`, `{"SetBrightness":{"value":128}}`), flat `StateResponse` struct, plain `"ok\n"` / `"err:reason\n"` acks
- Auto-push state on BLE connect and on MSP flight mode change via `STATE_CHANGED` signal
- Chunked BLE notifications (20-byte MTU) for state responses (~250 bytes)
- MSP flight controller integration over UART1 (GPIO20 RX, GPIO21 TX, 115200 baud)
- `msp` module (`src/msp.rs`): MSPv1 frame builder, response parser state machine, BOXNAMES decoder, flight mode resolver — all `no_std`, no heap, fully unit-testable
- `msp_task`: async task polling MSP_STATUS at ~10 Hz, with BOXNAMES discovery at startup
Expand Down
27 changes: 27 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,10 @@ esp-radio = { version = "0.17.0", features = [
"wifi",
"unstable",
] }
heapless = { version = "0.8.0", default-features = false }
heapless = { version = "0.8.0", default-features = false, features = ["serde"] }
serde = { version = "1.0", default-features = false, features = ["derive"] }
futures = { version = "0.3", default-features = false, features = ["async-await"] }
serde-json-core = { version = "0.6", features = ["heapless"] }
static_cell = { version = "2.1.0", features = ["nightly"] }
smart-leds = "0.4.0"
ws2812-spi = "0.5.1"
Expand Down
Loading
Loading