11 个版本
0.1.0-beta.10 | 2024年7月1日 |
---|---|
0.1.0-beta.7 | 2024年6月14日 |
0.1.0-beta.4 | 2024年4月2日 |
0.1.0-beta.1 | 2024年3月30日 |
0.1.0-alpha.5 | 2024年1月29日 |
#191 in 科学
在 rdr 中使用
3.5MB
2K SLoC
ccsds
CCSDS 航天器数据流解码
该项目提供了解码符合CCSDS
推荐规范(蓝皮书)的航天器下传遥测流的工具TM 同步和信道编码
和空间数据包协议
。
支持
- 帧结构
- 流同步
- 伪噪声消除
- 里德-所罗门FEC
- 空间数据包解码
- 遥测数据包,即类型为0的数据包
- 排序
- 数据包组
- 对二级头部时间码的支持有限
- CCSDS 日分段时间码
- 用于Aqua和Terra航天器的NASA EOS时间码
- 提供但不直接使用
示例
以下示例演示了如何解码Suomi-NPP航天器的CADU未同步字节流。此示例代码应适用于符合CCSDS TM 同步和信道编码
和空间数据包协议
文件的任何航天器数据流。
use std::fs::File;
use std::io::BufReader;
use ccsds::{ASM, FrameDecoderBuilder, Synchronizer, decode_framed_packets, collect_packet_groups, PacketGroup};
// 1. Synchronize stream and extract blocks (CADUs w/o ASM)
let file = BufReader::new(File::open("snpp.dat")
.expect("failed to open data file"));
let blocks = Synchronizer::new(file, &ASM.to_vec(), 1020)
.into_iter()
.filter_map(Result::ok);
// 2. Decode those blocks into Frames
let frames = FrameDecoderBuilder::default()
.reed_solomon_interleave(4)
.build(blocks);
// 3. Extract packets from Frames
// Suomi-NPP has 0 length izone and trailer
let packets = decode_framed_packets(157, frames, 0, 0);
参考文献
相关
- spacecraftsdb:JSON航天器元数据库
- spacecrafts-rs:为
spacecraftsdb
创建的Rust库 - ccsdspy:为
ccsds-rs
提供的Python绑定
许可
GNU 通用公共许可证 v3.0
依赖
~4–5MB
~101K SLoC