Skip to content

Releases: hyperized/modes

v0.1.0 — initial release

05 May 01:20

Choose a tag to compare

First tagged release of the pure-Go Mode S / ADS-B decoder.

What's in v0.1.0

Working coverage of every Downlink Format defined in ICAO Annex 10 Vol IV:

  • DF 0 — Air-to-air ACAS short reply (DecodeACASShortReply)
  • DF 4 — Surveillance altitude reply (DecodeSurveillanceAltitude)
  • DF 5 — Surveillance identity / squawk reply (DecodeSurveillanceIdentity)
  • DF 11 — All-call reply (DecodeAllCallReply)
  • DF 16 — Air-to-air ACAS long reply (DecodeACASLongReply)
  • DF 17 / 18 — ADS-B Extended Squitter (DecodeExtendedSquitter)
  • DF 20 / 21 — Comm-B altitude / identity (DecodeCommBAltitude / DecodeCommBIdentity)
  • DF 24..31 — Comm-D Extended Length Message (DecodeCommDExtendedLength)

ADS-B ME Type Codes (DF 17 / 18):

  • TC 1..4 — Aircraft Identification (callsign + emitter category set), full
  • TC 5..8 — Surface Position (movement / heading / CPR), full structure
  • TC 9..18 — Airborne Position (barometric), full structure
  • TC 19 — Airborne Velocity, subtype 1 (subsonic ground-speed) full; other subtypes structural
  • TC 20..22 — Airborne Position (GNSS), structure
  • TC 28 — Aircraft Status (Emergency / Priority Status full; TCAS RA raw)
  • TC 29 — Target State and Status, structural
  • TC 31 — Aircraft Operational Status, structural

Standalone helpers:

  • CRC24 / AppendCRC24 / CRCResidual — Mode S CRC-24 (polynomial 0xFFF409)
  • AltitudeFeet — 13-bit AC field decoder, Q=1 binary path
  • SquawkFromIdentityCode — Mode 3/A squawk decoder
  • DecodeCPRGlobal / DecodeCPRLocal — Compact Position Reporting math with the spec's NL lookup table
  • DecodeBDS20Callsign — first BDS register decoder; reusable for callsign extraction from Comm-B replies

Quality:

  • 100 % statement coverage
  • Lint clean against golangci-lint v2.12 with default: all and revive enable-all-rules
  • Pure stdlib, zero third-party dependencies
  • Allocation-free decode hot path for fixed-size payloads

See pkg.go.dev for the full reference and runnable examples, and README.md for the architecture diagram + errors table.

License

Business Source License 1.1. Free for non-commercial use; commercial integration requires a paid license. Converts to Apache-2.0 on 2036-05-05.