#byte-array #json #define #generic #output #send #parsed

营普

通用字节解析器函数,您可以在 JSON 中定义字节的结构/树,发送字节序列并获取解析后的 JSON 输出

10 个版本

新版本 0.1.11 2024 年 8 月 13 日
0.1.10 2024 年 8 月 7 日

#670解析器实现

Download history 667/week @ 2024-08-03 150/week @ 2024-08-10

每月 817 次下载

Apache-2.0

30KB
634

营普

通用字节解析器函数,您可以在 JSON 中定义字节的结构/树,发送字节序列并获取解析后的 JSON 输出。

'营普' 是泰国常见的大树名称,其树枝非常粗大,可以象征着该解析器旨在处理的复杂的比特/字节/循环/匹配。

用法

请参阅 tests 文件夹中的示例,以下是一个简单的示例

fn test_simple_packet() {
    const tree_id:u64 = 1;
    let data = hex_to_bin("01 00 E8 03");
    plant_tree(
        tree_id,
        json!({
                "branches": [
                    { "name": "fix_status", "type": "u8" },
                    { "name": "rcr", "type": "u8" },
                    { "name": "millisecond", "type": "u16_le" }
                ]
            })
    );
    let parsed_json = parse_tree(tree_id, &data);
    assert_eq!(parsed_json, json!({
            "fix_status": 1,
            "rcr": 0,
            "millisecond": 1000
        }));
}

历史

libqmi 的 'data' 文件夹及其 Python 脚本生成匹配的 C 代码的启发。一些 GNSS 设备制造商发送了新的 GNSS 设备,其中包含他们自己的数据包结构,需要添加到 bluetooth_gnss 应用中。手动编写这些解析器和更复杂的协议似乎需要一个通用的解析器工具,它可以以简单的方式在 JSON 中定义结构,并具有 Rust 的安全性和性能。GPT 帮助起草了此仓库中大部分初始代码,并有望对其他常见协议分析工作也有所帮助。

依赖项

~1.8–2.9MB
~54K SLoC