fix(ble): parse Self-ID messages and feed them to the tracker - #2
Open
wnagele wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
ble_feeder.pysilently drops Self-ID messages (ODID type 0x3): the BLE decoder has no parser for the type and no route into the tracker, so drones detected over BLE never surface their free-text purpose of flight. This adds the missing parser and wires it end-to-end.Why
Self-ID is one of the four core ASTM F3411 broadcast messages and the only way a drone tells observers what it is doing ("Photography Lesson", "Search and Rescue", …). dump3411 already surfaces it everywhere — journal, JSON feed (
self_id/self_id_seen), MQTT per-drone state, dashboard Description column — but only for WiFi-carried detections, sincewifi_feeder.pyalready parses the type. For BLE-carried detections the tracker was never told; at best--verboselogged an emptyType=Self IDline.How
parse_self_id()inble_feeder.pydecodes the 25-byte ODID Self-ID message per ASTM F3411-22a:description_type(byte 1) and the NUL-padded ASCIIdescription(bytes 2–25). Mirrorswifi_feeder.parse_self_id, which holds the full byte-layout commentary.decode_rid_message()now dispatches message type0x3to it.BLEFeeder._update_tracker()routes decodedSelf IDmessages toTracker.update_self_id(...)withrid_source="ble", matching the existing Basic ID / Location / System / Operator-ID routes.No feed or schema changes — the
self_idfields already existed; this populates them from BLE.