Generic implementations for various CCSDS and ECSS packet standards in Rust
Robin Mueller
8001938507
All checks were successful
Rust/spacepackets/pipeline/head This commit looks good
|
||
---|---|---|
.github/workflows | ||
.idea/runConfigurations | ||
automation | ||
src | ||
.gitignore | ||
Cargo.toml | ||
CHANGELOG.md | ||
coverage.py | ||
LICENSE-APACHE | ||
NOTICE | ||
README.md | ||
release-checklist.md |
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 thestd
feature.
Optional Features
serde
: Addsserde
support for most types by addingSerialize
andDeserialize
derive
schrono
: Add basic support for thechrono
time library.timelib
: Add basic support for thetime
time library.defmt
: Add support for thedefmt
by adding thedefmt::Format
derive on many types.
Examples
You can check the documentation of individual modules for various usage examples.
Coverage
Coverage was generated using grcov
. If you have not done so
already, install the llvm-tools-preview
:
rustup component add llvm-tools-preview
cargo install grcov --locked
After that, you can simply run coverage.py
to test the project with coverage. You can optionally
supply the --open
flag to open the coverage report in your webbrowser.