Skip to content

00 Introduction

Manoel edited this page Feb 14, 2026 · 7 revisions

State of the project

What works

  • Base station configuration (freqs, network identifiers, etc) supplied as TOML file
  • Demodulation and modulation of most burst types
  • Will broadcast SYNC/SYSINFO and is identifiable as a proper TETRA network
  • Phy, Lmac, Umac, Llc are mostly complete for BS use, although there be bugs, certain messages are not implemented / not implemented in a future-proof way
  • Parsing/building code for mostly all core TETRA PDUs across all OSI layers are present and can be used as desired (currently unused types need sanity checking)
  • Registration of an MS on the running BS stack and group attachment works

Not functional / not implemented

  • MS (Mobile Station, radio) and monitoring implementation not fully functional
  • Mle and everything above is a skeleton implementation that has to be extended where needed
  • Voice codec, call setup and calling is not implemented

General TETRA design

We closely follow the TETRA standard and adopt a modular message passing framework. Messages can flow between the TETRA entities through well-defined SAPs, interfaces connecting the components. An outline of the entities and their connecting saps is shown below.

osi_layers

For each SAP, message types are defined, called primitives or prim in short. These carry the actual encoded TETRA messages, called PDUs.

A component will receive a prim on a specific SAP. It will unpack the prim, and depending on the prim, handle the contents of the PDU (air interface bits). If after parsing and processing, the PDU contains further data for next layers of the protocol (subpart of the PDU called SDU, basically the PDU for the next layer), the component creates a new prim (suitable for the SAP to which the message is now passed) and embeds the SDU.

Clone this wiki locally