7 个版本

0.3.0 2021年2月20日
0.2.4 2021年1月23日
0.2.3 2020年8月1日
0.2.2 2020年7月25日
0.1.0 2019年3月10日

#1986 in 解析器实现


2 crates 中使用

MIT/Apache

38KB
993

adsb

Crate Documentation Build Status

ADS-B/Mode-S 消息的 Rust 解析器。

支持以下下行链路格式 (DF) 的消息

  • DF 5: 监视身份(应答码)
  • DF 17/18: 自动相关监视 - 广播 (ADS-B)
    • TC 1-4: 飞机识别和类别
    • TC 9-18: 机载位置
    • TC 19: 机载速度

使用方法

解析 AVR 格式的消息

let avr = "*8D4840D6202CC371C32CE0576098;";
let (message, _) = parse_avr(&avr).unwrap();
if let Message {
    kind:
        MessageKind::ADSBMessage {
            kind: ADSBMessageKind::AircraftIdentification { callsign, .. },
            ..
        },
    ..
} = message
{
    println!("callsign: {}", callsign);
}

解析二进制格式的消息

let bin = b"\x8D\x40\x62\x1D\x58\xC3\x82\xD6\x90\xC8\xAC\x28\x63\xA7";
let (message, _) = parse_binary(bin).unwrap();
if let Message {
    kind:
        MessageKind::ADSBMessage {
            kind: ADSBMessageKind::AirbornePosition { altitude, .. },
            ..
        },
    ..
} = message
{
    println!("altitude: {}", altitude);
}

依赖项

~2MB
~45K SLoC