libcadu

January 17, 2023 ยท View on GitHub

This is a header-only C++ library for en/decoding CADU frames, as used in the Terra/Aqua satellite missions. These files are sometimes called "Level 0" data, and can be found at the NASA archives such as LAADS DAAC.

Also contained are the following command-line tools:

  • caduinfo - Displays the header contents of a CADU stream from stdin.
  • cadupack - Pack bytes from stdin into a CADU stream on stdout.
  • caduunpack - Unpack a CADU stream from stdin to stdout.
  • caduhead - Output the first part of a CADU stream from stdin, in whole CADUs, up to a given index.
  • cadutail - Output the last part of a CADU stream from stdin, in whole CADUs, from a given index.

The available command line options are available from each program with the -h flag.

Building

Dependencies:

Building:

make
make install

Further ideas

Detection of whether CADU is a "fill" CADU (as used in gov/nasa/gsfc/drl/rtstps/core/ccsds/CaduService.java) l202

Packet routing system to replace RT-STPS

NASA have decoders for Level 0 data already implemented in the IPOPP MODISL1DB algorithm available at the Direct Readout Laboratory website.

This wraps the ocssw tools from the OceanColor Data software repositories.

A description of the protocol in found in this document. Note that the checksum, although documented as an XOR, is actually implemented as addition in the official NASA data decoders - we therefore implemented addition as well.

Thanks

Many thanks to Jonathan Tanner for his help in writing this library.