| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
rc.serial issues `dshot telemetry` right after `dshot start`, and the first Run() usually handles it before the mixer has reported the outputs. initSettingsHandlers() then latches with an empty motor mask, so no ESC settings handler is ever created and the EEPROM is never read. Co-authored-by: danielbuleandra <daniel.buleandra@auterion.com> Assisted-by: Claude:claude-fable-5-1 Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>
The raw dump is logged through the existing queued esc_eeprom_read topic. The layout depends on the ESC firmware and its EEPROM revision, so decoding happens offline in Tools/esc_eeprom_decode.py against the schema the ESC vendor publishes. A subscriber that joins after the first publish only sees the newest queued entry. The logger subscribes on a sweep that can lag a new topic by half a second while all ESCs answer within milliseconds of each other, so the topic is advertised when the settings handlers are created, well before the first request goes out at ESC_INIT_TELEM_DELAY. Co-authored-by: danielbuleandra <daniel.buleandra@auterion.com> Assisted-by: Claude:claude-fable-5-1 Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>
🔎 Flash and RAM Analysis
VM SIZE
--------------
+0.0% +488 .text
[NEW] +116 DShotTelemetry::getSettingsRequest()
+54% +70 DShot::update_motor_commands()
[NEW] +64 DShotTelemetry::publishSettings()
[NEW] +64 DShotTelemetry::resetCommandResponse()
[NEW] +48 DShotTelemetry::invalidateSettings()
+16% +44 DShot::handle_configure_actuator()
-100.0% +30 [10 Others]
[NEW] +24 CSWTCH.154
+29% +20 DShotTelemetry::printStatus()
+0.5% +20 px4::logger::LoggedTopics::add_default_topics()
+57% +16 AM32Settings::AM32Settings()
+1.9% +16 DShot::DShot()
+5.9% +12 DShot::Run()
+2.4% +12 DShot::process_serial_telemetry()
+11% +12 DShotTelemetry::initSettingsHandlers()
[NEW] +12 DShotTelemetry::requestSettings()
[NEW] +9 CSWTCH.155
[DEL] -9 CSWTCH.146
-2.5% -20 DShot::print_status()
[DEL] -24 CSWTCH.145
-6.4% -48 DShot::select_next_command()
+0.0% +488 TOTAL
VM SIZE
--------------
+0.0% +488 .text
[NEW] +116 DShotTelemetry::getSettingsRequest()
+54% +70 DShot::update_motor_commands()
[NEW] +64 DShotTelemetry::publishSettings()
[NEW] +64 DShotTelemetry::resetCommandResponse()
[NEW] +48 DShotTelemetry::invalidateSettings()
+16% +44 DShot::handle_configure_actuator()
-100.0% +30 [10 Others]
[NEW] +24 CSWTCH.154
+29% +20 DShotTelemetry::printStatus()
+0.5% +20 px4::logger::LoggedTopics::add_default_topics()
+57% +16 AM32Settings::AM32Settings()
+1.9% +16 DShot::DShot()
+5.9% +12 DShot::Run()
+2.4% +12 DShot::process_serial_telemetry()
+11% +12 DShotTelemetry::initSettingsHandlers()
[NEW] +12 DShotTelemetry::requestSettings()
[NEW] +9 CSWTCH.155
[DEL] -9 CSWTCH.146
-2.5% -20 DShot::print_status()
[DEL] -24 CSWTCH.145
-6.4% -48 DShot::select_next_command()
+0.0% +488 TOTAL
Updated: 2026-09-23T02:46:09 |
Sorry, something went wrong.
Logs can start after boot or during flight, so cached settings must be published independently of arming. The queue must retain a complete set of ESC dumps for the logger and MAVLink stream. Keep programming uninterrupted and cached data valid across saves and reconnects. Failed reads remain pending with spaced retries so one unresponsive ESC cannot starve the rest. Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com> Assisted-by: Codex
Logs contain repeated dumps and may mix EEPROM layouts. Collapse unchanged samples, apply the schema's version bounds and disabled values, and keep overlays immutable so one ESC cannot change another's decoding. Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com> Assisted-by: Codex
| Back | FazBrowse Home | New Git URL |
Summary
Supersedes #28639, recording ESC settings in flight logs with schema-driven decoding. The original DShot initialization fix and decoder are @danielbuleandra's work; both commits retain co-author credit.
Problem
Telemetry can initialize before the motor mask exists, preventing EEPROM reads. Boot-only dumps are absent from later logs, and concurrent DShot commands can interrupt EEPROM programming or leave cached settings stale.
Solution
Wait for the motor mask before initializing telemetry. Publish valid cached settings once per second while armed or disarmed, allowing logs started later to capture every ESC. Read hardware while disarmed on boot, confirmed reconnect, GCS request, or after a settings save. Invalidate before changes and on confirmed disconnect; retry failed reads without starving other ESCs. Keep programming uninterrupted and forward updates through enabled MAVLink streams.
Decode version bounds and disabled values from vendor schemas without mutating shared definitions across ESCs, and collapse repeated dumps. Firmware build, host checks, and decoder regressions passed; hardware testing remains outstanding.