mirror of
https://github.com/n0mjs710/HBlink4.git
synced 2026-11-08 12:26:31 +00:00
Major Features Added: - Full DMR Link Control (LC) metadata extraction from voice frames - Complete Talker Alias extraction with multi-format support - Embedded LC framework for header recovery (bit extraction pending) - Smart optimization: only extract embedded LC when header missed Link Control (LC) Extraction: - Extract FLCO, FID, service options, src/dst IDs from sync frames - Detect call type (group/private), emergency, privacy status - DMRLC dataclass with convenience properties - Automatic extraction and storage in StreamState - 5 comprehensive tests (all passing) Talker Alias Extraction: - Support for 4 encoding formats: 7-bit ASCII, ISO-8859-1, UTF-8, UTF-16BE - Multi-frame collection (header + 3 blocks = 28 bytes max) - Automatic assembly and decoding - Smart block accumulation with incremental decode attempts - 13 comprehensive tests (all passing) Documentation: - docs/lc_extraction.md: Complete LC extraction reference - docs/talker_alias.md: Talker alias quick reference guide - docs/IMPLEMENTATION_SUMMARY.md: Updated with new features - readme.md: Added new features to feature list Tests: - tests/test_lc_extraction.py: 5 tests for LC decoding - tests/test_talker_alias.py: 13 tests for talker alias - tests/test_access_control.py: Fixed to use config_sample.json - All 31 tests passing (100%) Code Changes: - hblink4/hblink.py: Added LC/talker alias extraction functions - StreamState: Added lc, talker_alias, and collection fields - DMRLC: New dataclass with properties for call analysis - Smart embedded LC extraction (conditional on missed header) Benefits: - Rich metadata extraction for better call tracking - Human-readable names via talker alias - Emergency call detection - Privacy-aware logging - Multi-language support - Production ready with full test coverage