Skip to content

Releases: ravisuhag/astro

Release list

v0.2.0

Choose a tag to compare

@ravisuhag ravisuhag released this 19 Mar 17:03

Astro v0.2.0

This release completes the bidirectional CCSDS space communication stack — adding TC (telecommand) uplink protocols alongside the existing TM (telemetry) downlink, plus comprehensive documentation and conformance statements across all packages.

New Packages

  • pkg/tcdl — TC Space Data Link Protocol (CCSDS 232.0-B-4)

    • TC Transfer Frames with variable length (up to 1024 bytes)
    • MAP sublayer with packet segmentation and reassembly
    • 64 Virtual Channels, Master Channel multiplexing, Physical Channel
    • Type-A (sequence-controlled) and Type-B (bypass/expedited) frame support
    • Frame Sequence Number N(S) for COP-1 integration
  • pkg/cop — Communications Operation Procedure-1 (CCSDS 232.1-B-2)

    • FOP-1 (ground side): sliding window frame transmission with retransmission
    • FARM-1 (spacecraft side): window-based frame acceptance with lockout detection
    • CLCW encode/decode for return-link status reporting via TM OCF
  • pkg/sdl — Shared Data Link Primitives

    • Generic channel buffers, multiplexers, and service interfaces
    • Eliminates code duplication between TM and TC implementations
  • pkg/tcf — Time Code Formats (CCSDS 301.0-B-4)

    • CUC, CDS, CCS, and ASCII time code formats
    • CCSDS reference epoch (1958-01-01 TAI) with configurable custom epochs
    • Full encode/decode with Go time.Time integration

Enhancements

  • pkg/tmsc — Reed-Solomon error correction

    • RS(255,223) and RS(255,239) codes over GF(2^8)
    • Berlekamp-Massey, Chien search, and Forney algorithm for full decode pipeline
    • Symbol interleaving at depths 1, 2, 3, 4, 5, and 8
  • pkg/tmdl — TM Data Link improvements

    • Native multi-packet packing with FHP-based reassembly and loss resync
    • PhysicalChannel with weighted round-robin MC multiplexing
    • Frame gap detection via MC/VC count tracking
    • Thread safety, input validation, and robustness improvements
  • pkg/spp — Space Packet Protocol improvements

    • Service type with Packet and Octet String services over io.ReadWriter
    • Per-APID sequence counting
    • CRC validation on decode and auto-compute on encode

Documentation

Every implemented package now has three documentation tiers:

Package Guide Reference PICS Proforma
spp Guide Reference PICS
tmdl Guide Reference PICS
tmsc Guide Reference PICS
tcdl Guide Reference PICS
cop Guide Reference PICS
tcf Guide

Examples

  • examples/downlink — TM downlink simulation (spacecraft to ground)
  • examples/lossy-link — Packet transmission with frame loss and FHP-based recovery

Other Changes

  • Refactored TMDL and TCDL to use shared sdl generic primitives
  • Reorganized package files to align with protocol components
  • Resolved all golangci-lint issues (errcheck, staticcheck, unused)
  • Upgraded CI to golangci-lint v2.1

Full Changelog

v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@ravisuhag ravisuhag released this 26 Jan 16:32

Astro v0.1.0

Initial release of Astro — a Go library for CCSDS space communication standards.

Packages

  • pkg/spp — Space Packet Protocol (CCSDS 133.0-B-2)
    • SpacePacket struct with Encode() / Decode() round-trip support
    • Primary Header with APID, version, sequence flags, and packet length
    • Optional Secondary Header with SecondaryHeaderFlag
    • Packet Assembly and Extraction per CCSDS 4.2/4.3
    • Maximum packet length enforcement
    • TM and TC packet type support

Full Changelog

https://github.com/ravisuhag/astro/commits/v0.1.0