3 releases
0.1.2 | Jan 23, 2023 |
---|---|
0.1.1 | Jan 2, 2023 |
0.1.0 | Jan 2, 2023 |
#911 in Parser implementations
22 downloads per month
32KB
749 lines
nom-teltonika, easily parse the teltonika protocol
This package makes use of the nom crate to parse the binary packets.
Further documentation about the nom crate
can be found at the docs.rs page
and at the official github page.
Capabilities
It parses Codec 8, 8-Extended and 16 (aka TCP/UDP Protocol).
It DOES NOT parse Codec 12, 13 and 14 (aka GPRS Protocol), it MAY in the future.
It fails parsing if any of the following checks fail:
- Preamble MUST BE 0x00000000
- CRCs DOES NOT match
- Record Counts DOES NOT match
- UDP Un-usable byte MUST BE 0x01
Features
The following opt-in features are available:
- serde (ser/deser-ialization using the serde crate)
[dependencies]
nom-teltonika = { version = "*", features = ["serde"] }
Examples
Imei parsing
let imei_buffer = [0x00, 0x0F, 0x33, 0x35,
0x36, 0x33, 0x30, 0x37,
0x30, 0x34, 0x32, 0x34,
0x34, 0x31, 0x30, 0x31,
0x33
];
let (rest, imei) = nom_teltonika::parser::imei(&imei_buffer).unwrap();
assert_eq!(rest, &[]);
assert_eq!(imei, String::from("356307042441013"));
Tcp Packet parsing
let buffer = [0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x36,
0x08, 0x01, 0x00, 0x00,
0x01, 0x6B, 0x40, 0xD8,
0xEA, 0x30, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x05,
0x02, 0x15, 0x03, 0x01,
0x01, 0x01, 0x42, 0x5E,
0x0F, 0x01, 0xF1, 0x00,
0x00, 0x60, 0x1A, 0x01,
0x4E, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00,
0xC7, 0xCF
];
let (rest, packet) = nom_teltonika::parser::tcp_packet(&buffer).unwrap();
assert_eq!(rest, &[]);
println!("{packet:#?}");
Dependencies
~1.6–2.2MB
~40K SLoC