Expand description
§sameplace: A SAME/EAS Message Parser
This crate provides a text parser for Specific Area Message Encoding (SAME). It provides machine- and human-friendly representations of these messages, with event codes and significance levels.
For a complete CLI binary, see
samedec.
§Anatomy of a SAME message
SAME/EAS messages contain:
- A digital header which provides machine-readable information
- An audio voice message, for human consumption
- A digital trailer which denotes the end of message.
The actual “message” part of a SAME message is the audio itself, which describes the event and provides instructions to the listener. The digital headers do not contain all the information as the voice message.
-
For analog→digital decoding, see our companion library
sameold. -
For a complete program, which can also handle the voice message, see our companion binary crate
samedec.
§Interpreting Messages
The MessageHeader type decodes a SAME header, like:
ZCZC-WXR-RWT-012345-567890-888990+0015-0321115-KLOX/NWS-use sameplace::{MessageHeader, Originator, Phenomenon, SignificanceLevel};
// decode the header string
let hdr = MessageHeader::new(
"ZCZC-WXR-RWT-012345-567890-888990+0015-0321115-KLOX/NWS-"
).expect("fail to parse");
// what organization originated the message?
assert_eq!(Originator::NationalWeatherService, hdr.originator());
// parse SAME event code `RWT`
let evt = hdr.event();
// the Phenomenon describes what is occurring
assert_eq!(Phenomenon::RequiredWeeklyTest, evt.phenomenon());
// the SignificanceLevel indicates the overall severity and/or
// how intrusive or noisy the alert should be
assert_eq!(SignificanceLevel::Test, evt.significance());
assert!(SignificanceLevel::Test < SignificanceLevel::Warning);
// Display to the user
assert_eq!("Required Weekly Test", &format!("{}", evt));
// location codes are accessed by iterator
let first_location = hdr.location_str_iter().next();
assert_eq!(Some("012345"), first_location);§Crate features
chrono: Use chrono to calculate message issuance times and other fields as true UTC timestamps. If enabled,chronobecomes part of this crate’s public API.
§MSRV Policy
A minimum supported rust version (MSRV) increase will be treated as a minor version bump.
§Contributing
Please read our contributing guidelines before opening any issues or PRs.
Modules§
- eventcodes
- List of SAME Events Codes Known to
sameplace
Structs§
- Event
Code - Decoded SAME event code
- Invalid
Date Err - An invalid issuance time
- Message
Header - Event, area, time, and originator information
Enums§
- Message
- A fully-decoded SAME/EAS message
- Message
Decode Err - Error decoding a
MessageHeader - Originator
- SAME message originator code
- Phenomenon
- SAME message phenomenon
- Significance
Level - SAME message significance level
Type Aliases§
- Message
Result - The result of parsing a message