Myrddin Dundragon 46c02a152f This is the initial go at the library.
This is the initial pass. It sets some things up and lets me get
some ideas out of my head.
2025-06-20 20:49:51 -04:00
2025-05-31 15:08:30 -04:00
2025-05-31 15:08:30 -04:00
2025-05-31 15:08:30 -04:00
2025-05-31 15:08:30 -04:00

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.

References

Description
CCSDS Space Packet Protocol
Readme 35 KiB
Languages
Rust 100%