eas

package
v0.593.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 7, 2026 License: AGPL-3.0 Imports: 3 Imported by: 0

Documentation

Overview

Package eas decodes EAS / SAME (Specific Area Message Encoding) headers — the AFSK digital header that prefixes every Emergency Alert System and NOAA Weather Radio alert (the ZCZC… burst at 520.83 baud on 162 MHz / broadcast EAS). Demodulators such as multimon-ng / rtl_fm recover the raw header string; this package interprets its fields — who issued the alert, what kind, for which areas, and when — which is the useful part for RF monitoring / broadcast forensics.

Wrap-vs-native judgement

Native. A SAME header is a fixed, fully-public ASCII structure
(NWS NWSI 10-1712 / FCC 47 CFR 11.31):
ZCZC-ORG-EEE-PSSCCC-PSSCCC…+TTTT-JJJHHMM-LLLLLLLL- . Decoding it
is deterministic string parsing plus three documented lookup
tables (originator codes, event codes, state FIPS codes). No DSP
(the demodulation to the ZCZC string is upstream), no crypto, no
new dependency — the field interpretation that multimon-ng leaves
to the operator is implemented here directly.

What this covers

  • Originator (ORG): PEP / CIV / WXR / EAS / EAN with meanings.
  • Event (EEE): the FCC/NWS event-code table (tests, weather warnings / watches / statements, civil/non-weather events), with the standard suffix fallback for unrecognised codes (…W = Warning, …A = Watch, …E = Emergency, …S = Statement, …T = Test).
  • Location codes (PSSCCC): the part-of-county digit, the state FIPS code (→ state/territory name) and the county FIPS code.
  • Purge / valid time (TTTT, hhmm duration) and the issue time (JJJHHMM: ordinal day-of-year + UTC hh:mm).
  • The 8-character originator callsign.

Deliberately deferred

County FIPS → county-name resolution (a ~3200-entry table) is not
included — the state name and the raw 5-digit FIPS are surfaced.
The calendar date is not derived from the ordinal day because the
SAME header carries no year. The message audio / EOM (NNNN) framing
is upstream of the header string.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Location

type Location struct {
	Raw        string `json:"raw"`
	PartCode   int    `json:"part_code"`
	PartName   string `json:"part_name"`
	StateFIPS  int    `json:"state_fips"`
	StateName  string `json:"state_name"`
	CountyFIPS int    `json:"county_fips"`
}

Location is one decoded PSSCCC location code.

type Result

type Result struct {
	Originator     string     `json:"originator"`
	OriginatorName string     `json:"originator_name"`
	Event          string     `json:"event"`
	EventName      string     `json:"event_name"`
	Locations      []Location `json:"locations"`
	ValidMinutes   int        `json:"valid_minutes"`
	ValidDuration  string     `json:"valid_duration"`
	IssueDayOfYear int        `json:"issue_day_of_year"`
	IssueTimeUTC   string     `json:"issue_time_utc"`
	Callsign       string     `json:"callsign"`
	Notes          []string   `json:"notes,omitempty"`
}

Result is the decoded SAME header.

func Decode

func Decode(s string) (*Result, error)

Decode parses a SAME header string (the ZCZC… line a demodulator emits). Leading preamble / surrounding text is tolerated — parsing starts at the "ZCZC" marker.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL