12个版本 (6个破坏性版本)
| 0.7.0 | 2023年11月23日 |
|---|---|
| 0.6.3 | 2023年2月4日 |
| 0.6.2 | 2022年12月30日 |
| 0.6.1 | 2022年9月11日 |
| 0.3.0 | 2021年10月31日 |
#536 in 解析器实现
每月274次下载
在rsadsb_common中使用
1MB
2K SLoC
adsb_deku库
最低要求的rust版本:1.64。
将以下行添加到您的Cargo.toml文件中
adsb_deku = "0.7.0"
支持
下链格式支持
| DF | 名称 | 部分 |
|---|---|---|
| 0 | 短程空对空监视 | 3.1.2.8.2 |
| 4 | 监视高度应答 | 3.1.2.6.5 |
| 5 | 监视身份应答 | 3.1.2.6.7 |
| 11 | 所有呼叫应答 | 2.1.2.5.2.2 |
| 16 | 长程空对空监视 | 3.1.2.8.3 |
| 17 | 扩展squitter(ADS-B) | 3.1.2.8.6 |
| 18 | 扩展squitter(TIS-B) | 3.1.2.8.7 |
| 19 | 扩展squitter(军事) | 3.1.2.8.8 |
| 20 | Comm-B高度应答 | 3.1.2.6.6 |
| 21 | Comm-B身份应答 | 3.1.2.6.8 |
| 24 | Comm-D | 3.1.2.7.3 |
Comm-B支持
| BDS | 名称 | 表格 |
|---|---|---|
| (0,0) | 空 | |
| (1,0) | 数据链路能力 | A-2-16 |
| (2,0) | 飞机识别 | A-2-32 |
ADS-B消息的ME支持
| ME(类型代码) | 名称 |
|---|---|
| 0 | 无位置 |
| 1..=4 | 飞机识别 |
| 5..=8 | 表面位置 |
| 9..=18 | 机载位置巴洛高度 |
| 19 | 机载速度 |
| 20..=22 | 机载位置GNSS高度 |
| 23 | 保留0 |
| 24 | 表面系统状态 |
| 25..=27 | 保留1 |
| 28 | 飞机状态 |
| 29 | 目标状态和状态信息 |
| 30 | 飞机操作协调 |
| 31 | 飞机操作状态 |
示例
以下示例展示了从解调服务器读取ADS-B字节到我们的Frame结构体,然后执行fmt::Display特性以显示信息。
use hexlit::hex;
use adsb_deku::Frame;
use adsb_deku::deku::DekuContainerRead;
let bytes = hex!("8da2c1bd587ba2adb31799cb802b");
let frame = Frame::from_bytes((&bytes, 0)).unwrap().1;
assert_eq!(
r#" Extended Squitter Airborne position (barometric altitude)
Address: a2c1bd (Mode S / ADS-B)
Air/Ground: airborne
Altitude: 23650 ft barometric
CPR type: Airborne
CPR odd flag: even
CPR latitude: (87769)
CPR longitude: (71577)
"#,
frame.to_string()
);
构建文档(> cargo doc),或查看docs.rs以获取完整的公共API文档。
贡献
测试
测试数据使用具有dump1090-fa的rtl-sdr生成。
> cargo test
为了测试此库,您可以使用以下选项运行我们的应用程序1090以退出程序:在缺少fmt::Display或字节协议解码时。
> cd ../apps
> cargo r --release --bin 1090 -- --debug --disable-airplanes --panic-decode --panic-display
此库也已进行模糊测试,确保在解析解调字节时不会崩溃。
> cargo fuzz run fuzz_target_1
fmt
> cargo +nightly fmt
基准
基准测试是针对包含 215606 条 ADS-B 消息的文件进行的: lax-messages.txt。快速计算 (215606 / 692.80) 得出平均解码速度为每条消息 ~311.21 毫秒。通过使用 RUSTFLAGS="-C target-cpu=native",某些系统可以提升约 ~3% 的速度。
> cargo bench
lax_messsages time: [680.70 ms 692.82 ms 704.99 ms]
推导
源自第五版《航空电信卷 IV:监视与避碰系统》和 ICAO 9871。
no_std 支持
要将以下内容添加到您的 Cargo.toml 文件中,以仅启用 no_std 代码
default-features = false
features = ["alloc"]
依赖项
~3.5MB
~84K SLoC