- Now prints detected SDR driver and device
- Also prints the final soapy configuration that's used
- Updated default print level to show Phy info messages
- MLE now sends TL-UNITDATA for certain unacknowledged frames
- LLC now implements handling of TL-UNITDATA for sending BL-UDATA
- MLE broadcast functionality to separate file
- Various other fixes, cleanups and improvement
The stack will now detect an SDS is too long to be transmitted over the air, and instead issue a warning on the console output and drop the offending sds.
* Add D-NWRK-BROADCAST time broadcasting
- Broadcast UTC time and local offset once per hyperframe (~61s)
- Add configurable timezone setting to cell config
- Use GSSI 0xFFFFFF broadcast address per clause 23.4.1.2.1
- Include number_of_ca_neighbour_cells field with value 0
- Skip first broadcast at startup before any radios have registered
- Remove incorrect trailing M-bit from D-NWRK-BROADCAST PDU (MLE PDUs don't use M-bits, per Annex E.2.1)
- Validate timezone at config parse and offset D-NWRK-BROADCAST timing
* Fix downlink signaling scheduled on wrong timeslot for Brew SDS
* Forward U-STATUS to Brew when destination is not locally registered
* Zero-fill SHORT_TRANSFER number field instead of duplicating destination ISSI
* Use REREGISTER instead of REGISTER for already-registered subscribers on Brew
* Convert SDS-TL short report to Type4 for Brew and improve SDS_REPORT comment and logging
* SDS implementation: bug fixes, group delivery, U-STATUS forwarding, tests
- Fix D-SDS-DATA CPTI extension condition to match ETSI 14.7.1.10
- Add registration check in rx_sds_from_brew to drop SDS for unregistered ISSIs
- Add SubscriberRegistry with has_group_members() for group SDS routing
- Add group-addressed SDS delivery (single GSSI-addressed D-SDS-DATA PDU)
- Route U-STATUS to SDS subentity; forward as D-STATUS to local destination
- Brew→local SDS always uses SDTI=3 (Brew sends SDS Type 4 per protocol spec)
- Never forward group SDS to Brew, only individually-addressed SDS
- Add TetraPack SDS service ISSI whitelist (200999, 262993)
- Add PDU round-trip tests for D-SDS-DATA, U-SDS-DATA (8 tests)
- Add Brew protocol tests for SHORT_TRANSFER/SDS_TRANSFER (3 tests)
- Add SubscriberRegistry unit tests (4 tests)
- Add SDS integration tests: local delivery, Brew forward, group, U-STATUS (7 tests)
* LLC: ETSI-compliant BL-DATA retransmission for reliable SDS delivery
- Register expected ACK for BL-DATA (was missing — only BL-ADATA tracked)
- Store retransmission buffer to allow re-sending the same PDU on timeout
- Retransmit up to 3 times (N.252=3) with 48-timeslot timeout (T.251)
- Fix process_incoming_ack: two-pass scan — exact N(R) match first,
then mismatch handling per ETSI 22.3.2.3(k)
- Fix process_incoming_ack: match by SSI only (not timeslot) so ACKs
for retransmitted PDUs are matched correctly
- Clean up stale BL-ADATA entries on timeout (previously leaked forever)
- Fix tick_end return value to reflect retransmission activity
* Per-radio ISSIs with TetraPack safety filtering; MM improvements
- Version to 0.4.9
- Send per-radio REGISTER/DEREGISTER/AFFILIATE/DEAFFILIATE with individual ISSIs
- Add TetraPack ISSI filter: only exactly 7-digit ISSIs sent over WS
- Restrict GSSI <= 90 filter to TetraPack only
- Filter GROUP_TX forwarding for non-routable source ISSIs
- Remove Brew ISSI config field and initial BTS registration
- Rename is_brew_routable to is_brew_gssi_routable
- MM: auto-register unknown MS on group attach
- MM: send D-LOCATION UPDATE COMMAND to returning radios for group report
- MM: fix group_identity_attachment_lifetime to ETSI default
- MM: rename TemporaryRegistration to MigratingLocationUpdating
Replace mcch_queue_depth heuristic with per-message TxReceipt tracking.
CMCE checks is_in_final_state() before queuing re-sends, avoiding MCCH
flooding without mutex overhead of polling StackState every tick.
- Store Option<TxReceipt> alongside cached D-SETUPs per call_id
- Initial send stores None receipt to avoid throttling ETSI backup send
- Fresh receipt/reporter pair created for each re-send in tick_start
- Remove mcch_queue_depth from StackState/UMAC, fix interval to 5s
Known limitations (outside CMCE scope):
- mark_discarded() is never called in UMAC, so Discarded state is
unreachable. A Drop impl for TxReporter would close this gap.
- Reporter dropped without transitioning leaves receipt Pending forever,
blocking re-sends until circuit expiry. Not practical today since
circuit close also drops the receipt.
Bring in the 5s late-entry D-SETUP interval fix and return->continue
bug fix from the feature branch. Drop the mcch_queue_depth heuristic
throttle (StackState field, UMAC publish, CMCE check, dl_queue_depth)
in favor of the tx_receipt-based approach on this branch.