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.
This commit is contained in:
50
README.md
50
README.md
@ -1,3 +1,51 @@
|
||||
# ccsds_spp
|
||||
|
||||
CCSDS Space Packet Protocol
|
||||
A `no_std`, heapless Rust implementation of the
|
||||
[CCSDS Space Packet Protocol][SPP], 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
|
||||
|
||||
```rust
|
||||
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
|
||||
[SPP]: https://ccsds.org/wp-content/uploads/gravity_forms/5-448e85c647331d9cbaf66c096458bdd5/2025/01//133x0b2e2.pdf "CCSDS Space Packet Protocol PDF"
|
||||
|
||||
Reference in New Issue
Block a user