Trunking Engine is a 12-part deep dive into the “brain” of GopherTrunk — the component that turns a stream of control-channel grants into tuned, recorded calls. The SDR Internals series gave this engine a single survey episode and flagged it as “worth its own series.” This is that series.
Each part explains what the engine does with one class of event — a grant, a
priority conflict, an affiliation, a patch, an encrypted call — how it’s built
in pure Go around a single-writer select loop and an in-process event bus, and
the software-design principle that keeps the core testable without a radio.
Several parts carry a “problem we hit” war story from real field captures
(the source-RID recovery work behind issue #915, encrypted-mode tuner
starvation).
Every post reads three ways: a TL;DR + cheat-sheet for skimmers, bold headers, tables, and diagrams for the medium read, and full prose with real code for the deep read.
New to trunked radio first? Start with the Digital Trunking path, then come back for the implementation.<ol class="post-list series-list"><li class="post-card"> <h2 class="post-card__title">Trunking Engine, Part 1: From Grant to Recorded Call</h2> <p class="post-card__meta"> Deep dives </p><p class="post-card__desc">A tour of GopherTrunk’s trunking engine — the single-goroutine state machine that subscribes to control-channel grants, allocates a voice SDR, starts a call, and publishes events, without ever importing the code that records or displays them.</p></li></ol><p class="blog-feed-link"> See all deep dives or subscribe via RSS. </p>