The header was split into individual files to make it easier to manage. enums that were just a u8 or u16 with determinate values now are set in the definition instead of using const values. Errors were added. Some of these are just best guesses at what is needed at this time. Added a macro to the bits for checking buffer and mask length. This keeps the error generation consistent and makes the code easy to read. Started, but have not finished the packet stuff. I want it to have a view and a builder.
ccsds_spp
A no_std, heapless Rust implementation of the
CCSDS Space Packet Protocol, suitable for embedded and real-time
systems.
This library is intended for use in satellite software, space simulation, and telemetry/telecommand tooling. It is designed to be robust, portable, and usable in constrained environments. No allocator required.
Features
no_stdcompatible- Heapless: works in memory-constrained environments
- Bit-accurate parsing and encoding
FromBits/IntoBitstraits for masked operations- CCSDS-compliant
Version,PacketType,APIDsupport - Designed for integration into embedded systems or FFI-safe libraries
Example
use ccsds_space_packet::{PacketHeader, PacketType, Version, ApId};
let mut header = PacketHeader { data: [0u8; 6] };
header.set_version(Version::One);
header.set_packet_type(PacketType::Telemetry);
header.set_ap_id(ApId::from(42));
assert_eq!(header.get_version(), Version::One);
assert_eq!(header.get_packet_type(), PacketType::Telemetry);
assert_eq!(u16::from(header.get_ap_id()), 42);
Design Notes
This is a work in progress.
Focus is on correctness and portability over performance for now.
Library avoids panics where possible and returns Result<T, &str> for error handling.
References
Copyright & License
Copyright 2025 CyberMages LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this library except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS