Skip to content

Developer docs

HamBench is a set of TypeScript packages plus JSON radio modules. The desktop app interprets those modules; you do not write a per-radio driver in TypeScript.

PackageRole
@springfield/ham-radio-apiTypes and schemas (protocol DSL, memory map, serial config)
@springfield/ham-radio-utilsMemory-map codec, band plan, license mapping, validation
@springfield/ham-radio-driverSerial driver that executes protocol steps
@springfield/ham-radio-registryLoad and validate radio configs; official catalog types
ham-radio-uiHamBench desktop app
ham-radio-snifferHeadless serial bridge
radio-module-baofeng / radio-module-kenwoodJSON radio modules

Official modules are JSON zips on GitHub Releases, listed in radio-module-catalog. They are not published to npm.

Start here

  1. Architecture
  2. Create a radio module
  3. Protocol DSL and Memory-map DSL
  4. Publish a module
typescript
import { RadioDriver } from '@springfield/ham-radio-driver';

const driver = new RadioDriver(radioConfig, logger);
const memory = await driver.readRadio('/dev/ttyUSB0', progressIndicator);