This is the initial pass. It sets some things up and lets me get some ideas out of my head.
1.4 KiB
1.4 KiB
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_std
compatible- Heapless: works in memory-constrained environments
- Bit-accurate parsing and encoding
FromBits
/IntoBits
traits for masked operations- CCSDS-compliant
Version
,PacketType
,APID
support - 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.