Skip to content

Conversation

@dbehnke
Copy link
Contributor

@dbehnke dbehnke commented Jan 4, 2026

Fixes TG routing for generic DMRGateway packets by parsing actual Destination TG from header (ignoring RPT2 suffix) and supporting custom reverse TG-to-Module maps in DmrDstIdToModule.

- Added CImrsProtocol and CImrsClient for IMRS protocol handling.
- Updated CPacket to include IMRS-specific fields.
- Integrated IMRS into CReflector and CProtocols.
- Added IMRS configuration options to urfd.ini.
- Resolves nostar#13
- Added M17Parrot.h/cpp for multi-threaded voice and packet echo.
- Integrated Parrot routing and cleanup in M17Protocol.
- Added LSTN (Listen-only) mode support for M17 nodes.
- Added M17P (Packet Mode) routing support.
- Fixed M17 keep-alive validation bug.
- Improved protocol architecture by inheriting SM17Protocol from CSEProtocol.
- Replace TCP sockets with NNG pair protocol
- Support IPC connections via file paths
- Add thread-safe packet queues
- Fix YSFProtocol header signature mismatch
Implemented M17LegacyCompat flag (default true). Added dual-mode receiver for 54/56-byte frames. Updated transmitter and Parrot to respect compat flag.
fix(audio): Thread-safe AudioRecorder UUIDs to prevent 0-byte recordings
* docs: Add Mini DMR architecture documentation

* Feat: Implement Flexible DMR (Mini DMR) mode

* Fix: Audio routing and Egress TG ID for Mini DMR mode

* Fix: Set client reflector module in Mini DMR mode to enable OpenStream

* Fix: Options parsing and TG 4000 Disconnect logic

* Fix: Add Ip argument to IsValidOptionPacket to fix compilation error

* Fix: Sync visual module from options and improve calling logging

* Fix: Strict module/timeslot routing logic and documentation updates

* Fix: Multi-module dashboard display, DMR protocol rename, and detailed subscriptions in JSON

* Fix: Add missing JsonReport declaration to DMRMMDVMClient.h

* Fix: Make CClient::JsonReport virtual

* Fix: Enable simultaneous dual-slot operation by tracking per-slot scanner hold timers

* Fix: Enable simultaneous dual-slot operation in OnDvHeaderPacketIn

* Fix: Add missing slot argument to CheckAccess declaration

* Fix: Define DMRScanner state members as arrays

* Fix: Update GetCurrentScanTG to accept slot argument

* Fix: Update DMRScanner implementation to handle m_CurrentScanTG as array

* Debug: Log outgoing Talkgroup ID to console

* Fix: Propagate dynamic Destination ID to all MMDVM encode functions

* Feat: Implement Static vs Dynamic Subscriptions and Single Mode Logic

* Fix: Clear client from module list on subscription timeout

* Docs: Fix Mermaid syntax error in DMR_Mini_Mode.md

* Fix: Improve MMDVM debug logging to accurately reflect sent packets

* Fix: Ensure SetReflectorModule is called on every valid DMR Header to prevent Orphaned Frames

* Debug: Fix callsign logging and add PTT subscription tracing

* Fix: Fallback to default DMR ID for analog sources (e.g. ALLSTAR) with ID 0

* Fix: Handle slot=0 in CheckAccess to support unspecified-slot checking

* Fix: Callsign fallback for unknown DMR IDs and Extended SSID support

* Cleanup: Remove debug logs

* Fix: Module Assignment Regression + Dashboard Backend Support

* Tmp: Add debug logs for DMR Dashboard

* Fix: Deduplicate DMR client reporting

* Feat: Include DMRID in JSON Report

* Feat: Renew dynamic subscription on PTT (and cleanup debug logs)

* Docs: Update DMR Mini Mode guide with Dashboard and Renewal info

* Feat: Rename MMDVM DMR to DMR in logs/dashboard

* fix(dmr): preserve raw destination ID in header to support flexible TGs

* fix(dmr): report Talkgroup as Target in dashboard events instead of Gateway ID

* fix(dmr): revert egress TG propagation to fix timeouts, keep ingress tracking

* fix(dmr): revert UR modification to prevent protocol timeouts, fix dashboard display manually

* fix(dmr): resolve compiler errors - variable scope and constructor args

* fix(dmr): restore working protocol state from last good commit, apply dashboard target display fix

* fix(dmr): resolve uiDstId scope error in dashboard fix by recovering TG from module

* fix(core): update ModuleToDmrDestId to respect configured mappings (MapA=...) with XLX fallback

* fix(dmr): prevent null pointer dereference of moved Header in OpenStream flow

* fix(dmr): correct 24-bit DestID encoding in Link Control (prevents TG 90 truncation)
* debug: add DMR burst logging (Header+6 frames)

* feat: add raw packet logging and header detection for counter reset

* fix(dmr): remove hardcoded Slot 2 restriction allowing TS1 RX

* fix(dmr): correctly propagate and use TS slot for subscriptions

* fix(dmr): pass uiSlot to OnDvHeaderPacketIn call in IsValidDvFramePacket

* fix(protocols): sanitize source callsigns to strip suffixes/modules for Dashboard reporting
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