Add control telemetry, log stream, setpoint override and fix debug sl…#28
Open
Add control telemetry, log stream, setpoint override and fix debug sl…#28
Conversation
…iders - Add control loop telemetry receiver (port 5005) with history and charts - Add Zephyr log stream receiver (port 5006) for live MCU logs - Add setpoint override client (port 5007) for attitude hold experiments - Add shared CRC-32 and UDP transport modules - Wire up attitude setpoint override card with send/clear handlers - Fix setpoint override CRC byte order (big-endian to little-endian) - Change debug sliders to send raw joystick input via bitmask (port 12345) instead of setpoint overrides (port 5007) - Clear endpoint now resets both bitmask and setpoint override paths Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SlimNinjaRuu
reviewed
Apr 8, 2026
Collaborator
SlimNinjaRuu
left a comment
There was a problem hiding this comment.
Claude is never wrong :D
SlimNinjaRuu
approved these changes
Apr 8, 2026
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.
This pull request introduces a new, unified UDP networking architecture for the project, centralizing socket management and packet handling for all topside modules. It replaces ad-hoc socket code with reusable helpers, adds robust CRC-32 utilities, and implements new background receivers for control telemetry and Zephyr log streaming. The
BitmaskClientis refactored to use the new transport and CRC code, and now supports uplink watchdog and status reporting.Networking infrastructure and CRC utilities:
lib/net_transport.pywith reusable UDP socket, listener, and sender classes, plus a centralized sequence number helper, to standardize all UDP networking across modules. (lib/net_transport.py)lib/crc.pyimplementing IEEE 802.3 CRC-32 with both stateless and streaming interfaces, used by all UDP packet modules for data integrity. (lib/crc.py)New background receivers:
lib/control_telemetry.pyfor receiving, parsing, and logging control loop telemetry packets, including setpoint/output/error histories for all axes. (lib/control_telemetry.py)lib/log_udp_receiver.pyfor receiving and storing Zephyr firmware log messages broadcast over UDP, with in-memory buffer and disk logging. (lib/log_udp_receiver.py)BitmaskClient refactor and uplink reliability:
lib/bitmask.pyto use the new UDP transport and CRC modules, added a watchdog thread for uplink reliability, status reporting, and integration with the resource monitor for ACK tracking. (lib/bitmask.py) [1] [2] [3] [4]Integration and shutdown handling:
Updated
app.pyto initialize and cleanly shut down all new background receivers, and to connect the bitmask client with the resource monitor for ACK tracking. (app.py) [1] [2] [3]…idersAdd control loop telemetry receiver (port 5005) with history and charts
Add Zephyr log stream receiver (port 5006) for live MCU logs
Add setpoint override client (port 5007) for attitude hold experiments
Add shared CRC-32 and UDP transport modules
Wire up attitude setpoint override card with send/clear handlers
Fix setpoint override CRC byte order (big-endian to little-endian)
Change debug sliders to send raw joystick input via bitmask (port 12345) instead of setpoint overrides (port 5007)
Clear endpoint now resets both bitmask and setpoint override paths