Skip to content

Repository files navigation

CCSDS Protocol Viewer

Live version: https://openspacecode.github.io/CCSDS-Viewer/

Quick-reference viewer for a layered space link stack — Space Packet, TM / TC SDLP, SDLS and SDLS Extended Procedures — built from the CCSDS Blue Books. Frame diagrams, field reference pages, a Frame Builder, a Frame Decoder and printable one-page cheat sheets.

To use it offline, open CCSDS-protocol-viewer.html in a browser. It is a single self-contained file: no server and no network needed.

Development

The HTML file is generated — edit src/, then rebuild. Needs Node ≥ 21, no dependencies.

npm run build    # src/ + vendor/ → CCSDS-protocol-viewer.html
npm test         # decoder test vectors + smoke tests (also fails if the HTML is stale)
npm run site     # what GitHub Pages publishes → _site/: the viewer + a reference page per protocol
src/
  index.html          page template; pulls files in with <!--#include path -->
  summary.html        what the page says without JavaScript, for readers and search engines
  views/              markup per view (sidebar, diagrams, builder, decoder, field page, …)
  styles/             design-system CSS
  protocols/          per protocol: field reference pages, maps, builder + decoder specs
  lib/bits.js         octet/bit helpers for the decoder
  lib/bluebooks.js    revision of each Blue Book, and links to the page of a reference
  lib/bluebook-pages.js  generated: section → PDF page (tools/bluebook_pages.py)
  lib/search.js       field search (Ctrl+K): indexing, value matching, ranking
  lib/session.js      keeps the page across a refresh (sessionStorage)
  lib/profile.js      mission profile: schema, validation, JSON, layout (localStorage)
  component.js        state, navigation and renderVals() — the glue
vendor/               React, dc-runtime, fonts and the self-unpacking bundle shell (not edited)
tests/                node:test suites
build.mjs             the bundler
site.mjs              the published site: generates the reference pages from the viewer's field tables

Each protocol's cheat sheet (*_SHEET in src/protocols/) is curated text; npm test checks its fields and references, but not that it still fits one page. After changing a sheet or src/views/cheat.html, print the fullest case (TM with a mission profile that uses SDLS) and check the page count.

The scripts in src/ are plain scripts that share one scope (no modules), in the order listed at the bottom of src/index.html. Reference vendor files as asset:<path>, for example url("asset:fonts/barlow-400-latin.woff2").