[feat](trx-wxsat): rename trx-noaa to trx-wxsat with full NOAA APT decode

Rename the crate from trx-noaa to trx-wxsat (weather satellite) across
the entire workspace. Add full NOAA satellite decode support:

- Telemetry frame parsing: extract 16-wedge calibration data from the
  128-line telemetry frames embedded in APT lines
- Radiometric calibration: piecewise-linear LUT built from wedges 1-8
  to correct pixel values against known reference levels
- Channel identification: detect AVHRR sensor channels (VIS, NIR, MIR,
  TIR) from wedge 9 values per APT sub-channel
- Satellite identification: heuristic NOAA-15/18/19 detection from
  channel A/B sensor pairings
- Histogram equalisation: per-channel contrast enhancement for improved
  image output
- WxsatImage now carries satellite name and channel labels in decoded
  message broadcasts

https://claude.ai/code/session_01JA13DHuzuHUL4nSBBRU83f
Signed-off-by: Claude <noreply@anthropic.com>
This commit is contained in:
Claude
2026-03-28 06:37:17 +00:00
committed by Stan Grams
parent e0181c99da
commit d26ef6ca81
17 changed files with 591 additions and 99 deletions
@@ -2485,7 +2485,7 @@ async fn wait_for_view(mut rx: watch::Receiver<RigState>) -> Result<RigSnapshot,
ft4_decode_enabled: state.ft4_decode_enabled,
ft2_decode_enabled: state.ft2_decode_enabled,
wspr_decode_enabled: state.wspr_decode_enabled,
noaa_decode_enabled: state.noaa_decode_enabled,
wxsat_decode_enabled: state.wxsat_decode_enabled,
filter: state.filter.clone(),
spectrum: None,
vchan_rds: None,
@@ -554,7 +554,7 @@ pub fn start_decode_history_collector(context: Arc<FrontendRuntimeContext>) {
DecodedMessage::Ft4(msg) => record_ft4(&context, msg),
DecodedMessage::Ft2(msg) => record_ft2(&context, msg),
DecodedMessage::Wspr(msg) => record_wspr(&context, msg),
DecodedMessage::NoaaImage(_) => {}
DecodedMessage::WxsatImage(_) => {}
},
Err(broadcast::error::RecvError::Lagged(_)) => continue,
Err(broadcast::error::RecvError::Closed) => break,