Ret Folf 5346d66186 Improvements/Refactoring around AACH (#82)
* Add: Refactor AACH behaviour.

Main changes here are to split a lot of the integer typed fields out into enums and structs, and make invalid state of the AccessAssign PDU unrepresentable through typing.

Studied the BaseFrameLength behaviour and standardised on a sensible set of defaults throughout for that.

Other changes include advertising CLCH opportunities via BaseFrameLength::CLCHSubslot where expected and a relaxing of how often SYNC bursts are sent. Using Air Interface monitoring on a few radios indicated that SYNC bursts appearing in non-mandated slots caused decode errors and radio downlink counter decrements. 

* Fix: Indicate reserved uplink subslots in ACCESS-ASSIGN.

This caused issues with multi-fragment messages. Seems like some radios do indeed check the AACH during a multi-slot grant and if they don't see Reserved Subslots (00) abort and re-attempt random-access again.

* Refactor: One place to set the default access frame marker in bs_sched

* Add: Tests for reserved & CLCH sched subslots
2026-07-09 23:35:48 +02:00
2025-11-10 14:56:58 +01:00
2025-11-10 14:56:58 +01:00
2025-11-10 14:26:47 +01:00
2026-02-22 21:25:48 +01:00

░▀█▀░█▀▀░▀█▀░█▀▄░█▀█░░░░░█▀▄░█░░░█░█░█▀▀░█▀▀░▀█▀░█▀█░▀█▀░▀█▀░█▀█░█▀█
░░█░░█▀▀░░█░░█▀▄░█▀█░▄▄▄░█▀▄░█░░░█░█░█▀▀░▀▀█░░█░░█▀█░░█░░░█░░█░█░█░█
░░▀░░▀▀▀░░▀░░▀░▀░▀░▀░░░░░▀▀░░▀▀▀░▀▀▀░▀▀▀░▀▀▀░░▀░░▀░▀░░▀░░▀▀▀░▀▀▀░▀░▀

This is a FOSS TETRA stack aimed at providing an extensible basis for TETRA experimentation and research. At this point, it's alpha code. The stack serves a downlink base station signal, and a properly configured MS is able to receive the emitted downlink signal, connect to it, and attach to talkgroups. Voice calls are partially supported. Connectivity through Brew with the larger BrandMeister network is also optionally available. Lots of other functionality is currently not implemented, although parsing code for most TETRA protocol messages is already present.

Documentation

Project documentation for tetra-bluestation is maintained in a separate repository, as a wiki.

https://github.com/MidnightBlueLabs/tetra-bluestation-docs/wiki

The documentation repository contains:

  • Hardware and SDR considerations
  • Configuration file reference and examples
  • Build and runtime instructions
  • Practical notes

Contributions to the documentation follow the same pull-request-based workflow as the main codebase, see the appropriate "Contributions" chapter.

Acknowledgements

  • Thanks to Harald Welte and the osmocom crew for their amazing initial work on osmocom-tetra, without which this project would not have existed.
  • Many thanks to Tatu Peltola, who graciously augmented rust-soapysdr with the required timestamping functionality to facilitate robust rx/tx, and also provided a rust-native Viterbi encoder/decoder class used in the LMAC.
  • Many thanks to the awesome contributers helping to make BlueStation as stable, fancy and feature-rich as can be.
  • Thanks to Stichting NLnet, who agreed on allocating a part of the RETETRA3 project grant to the implementation of FOSS software for TETRA.
S
Description
No description provided
Readme Apache-2.0
8.2 MiB
Languages
Rust 99.7%
Shell 0.3%