Skip to content

fix(ble): parse Self-ID messages and feed them to the tracker - #2

Open
wnagele wants to merge 1 commit into
ifnull:mainfrom
wnagele:ble-self-id
Open

fix(ble): parse Self-ID messages and feed them to the tracker#2
wnagele wants to merge 1 commit into
ifnull:mainfrom
wnagele:ble-self-id

Conversation

@wnagele

@wnagele wnagele commented Aug 28, 2026

Copy link
Copy Markdown

What

ble_feeder.py silently 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, since wifi_feeder.py already parses the type. For BLE-carried detections the tracker was never told; at best --verbose logged an empty Type=Self ID line.

How

  • parse_self_id() in ble_feeder.py decodes the 25-byte ODID Self-ID message per ASTM F3411-22a: description_type (byte 1) and the NUL-padded ASCII description (bytes 2–25). Mirrors wifi_feeder.parse_self_id, which holds the full byte-layout commentary.
  • decode_rid_message() now dispatches message type 0x3 to it.
  • BLEFeeder._update_tracker() routes decoded Self ID messages to Tracker.update_self_id(...) with rid_source="ble", matching the existing Basic ID / Location / System / Operator-ID routes.

No feed or schema changes — the self_id fields already existed; this populates them from BLE.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant