Reviewed-on: #183
ECSS and CCSDS Spacepackets
This package contains generic implementations for various CCSDS (Consultative Committee for Space Data Systems) and ECSS (European Cooperation for Space Standardization) packet standards.
Currently, this includes the following components:
- Space Packet implementation according to CCSDS Blue Book 133.0-B-2
- CCSDS File Delivery Protocol (CFDP) packet implementations according to CCSDS Blue Book 727.0-B-5
- PUS Telecommand and PUS Telemetry implementation according to the ECSS-E-ST-70-41C standard.
- CUC (CCSDS Unsegmented Time Code) implementation according to CCSDS 301.0-B-4 3.2
- CDS (CCSDS Day Segmented Time Code) implementation according to CCSDS 301.0-B-4 3.3
- Some helper types to support ASCII timecodes as specified in CCSDS 301.0-B-4 3.5
Features
spacepackets supports various runtime environments and is also suitable for no_std environments.
Default features
std: Enables functionality relying on the standard library.alloc: Enables features which operate on containers likealloc::vec::Vec. Enabled by thestdfeature.
Optional Features
serde: Addsserdesupport for most types by addingSerializeandDeserializederiveschrono: Add basic support for thechronotime library.timelib: Add basic support for thetimetime library.defmt: Add support for thedefmtby adding thedefmt::Formatderive on many types.portable-atomic: Basic support forportable-atomiccrate in addition to the support for core atomic types. This support requires atomic CAS support enabled in the portable atomic crate.
Examples
You can check the documentation of individual modules for various usage examples.
Coverage
Coverage can be generated using llvm-cov. If you have not done so
already, install the tool:
cargo +stable install cargo-llvm-cov --locked
After this, you can run cargo llvm-cov nextest to run all the tests and display coverage.
Miri
You can run the miri tool on this library to check for
undefined behaviour (UB). This library does not use use any unsafe code blocks, but miri could
still catch UB from used libraries.
cargo +nightly miri nextest run --all-features