v3.5.0: Protocol Drift Detection and Compatibility Pinning
What's New
Protocol Drift Detection Tooling
- scripts/sync_types.py: Code-generates ka9q/types.py from ka9q-radio C headers (status.h, rtp.h)
--check: exits non-zero if drift detected (for CI/tests)--apply: regenerates types.py and updates compatibility pin--diff: dry-run showing what would change
- ka9q_radio_compat: Plain-text pin recording the ka9q-radio commit hash that types.py was validated against
- ka9q/compat.py: Importable
KA9Q_RADIO_COMMITconstant for ka9q-update deployment tooling - tests/test_protocol_compat.py: Pytest drift test — auto-skips when ka9q-radio source is absent, fails on mismatch when present
Protocol Resync (ka9q-radio 6b0fec7)
- StatusType: MINPACKET→MAXDELAY, GAINSTEP→UNUSED4, CONVERTER_OFFSET→UNUSED3, COHERENT_BIN_SPACING→UNUSED2, BLOCKS_SINCE_POLL→UNUSED; added SPECTRUM_OVERLAP (116)
- Encoding: added MULAW (10), ALAW (11); UNUSED_ENCODING shifted to 12
- control.py:
set_max_delay()replacesset_packet_buffering()(old name kept as backward-compat alias)
Cleanup
- Removed ad-hoc compare_encodings.py and compare_status_types.py (replaced by unified sync script)
Backward Compatibility
All changes are backward compatible. Existing code continues to work without modification.
Install / Upgrade
pip install --upgrade ka9q-python