2 unstable releases
0.3.0 | Jul 5, 2024 |
---|---|
0.2.4 | Jul 3, 2024 |
0.1.4 |
|
#1982 in Parser implementations
30 downloads per month
24KB
327 lines
wte-mt-rx-parser
This Rust crate aims to provide functionality for parsing messages generated by the WTE MT-RX-3 AIS, 406 + 121.5 alerting receivers. These receivers are designed to decode various types of emergency and maritime communication signals, including:
- 406MHz EPIRBs, PLBs and ELT beacons operating across the frequencies 406.020 to 406.045 MHz.
- AIS based SART alerting devices operating on both 161.975MHz and 162.025MHz.
- 121.5MHz or 243MHz man-overboard devices and emergency homing transmitters with the use of directional antennas.
Features
Provides simple parsing utilities for:
- 406 Message Serial Output
- MT protocol structured messages (
MT1UUUNNNTFHHHHHHHHHHHHHHHSS112233N4445566WYYYY
) - MT protocol raw messages (
MT6UUUNNNRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRYYYY
)
- MT protocol structured messages (
- Received Signal Strength (RSS) frequency / alerts (
SS,1,NNN<CR>
/SS,A,NNN<CR>
)
Notes:
- For parsing AIS messages (NMEA format), refer to other crates, such as nmea-parser.
- Refer to MT-RX-3 user manual for more information (#references).
Usage
[dependencies]
wte-mt-rx-parser = "0.1.4"
fn main() {
let samples = vec![
"MT1001000AL400C592753572B323433212S1723756E4706",
"MT6001001FFFE2FA00E0000CBAB959DB0903788C71B79F84B",
"SS,A,123",
"SS,1,123",
];
for s in samples {
println!("{:?}", wte_mt_rx_parser::parse(s));
}
}
result:
Ok(MtStructured(MtStructured {
header: "MT1",
id: "001",
sequence_number: 0,
message_type: Alert,
format_flag: 'L',
beacon: "400C592753572B3",
signal_strength: "23",
lat_degrees: Some(43),
lat_minutes: Some(32),
lat_seconds: Some(12),
lat_direction: South,
long_degrees: Some(172),
long_minutes: Some(37),
long_seconds: Some(56),
long_direction: East,
checksum: 18182
}))
Ok(MtRaw(MtRaw {
header: "MT6",
id: "001",
sequence_number: 1,
data: "FFFE2FA00E0000CBAB959DB0903788C71B79",
checksum: 63563
}))
Ok(Rss(Rss {
rss_type: Alert,
nnn: 123
}))
Ok(Rss(Rss {
rss_type: Frequency,
nnn: 123
}))
Contributing
If you find any issues or have suggestions for improvement, please feel free to open an issue.
References
Dependencies
~240–700KB
~16K SLoC