daa31fb6e5
Pure Rust WEFAX (Weather Facsimile) decoder supporting 60/90/120/240 LPM, IOC 288 and 576, with automatic APT tone detection and phase alignment. Core DSP pipeline: - Polyphase rational resampler (48k→11025 Hz) - FM discriminator (Hilbert FIR + instantaneous frequency) - Goertzel tone detector (300/450/675 Hz APT tones) - Phase alignment via cross-correlation on phasing signal - Line slicer with linear interpolation pixel clock recovery - Image assembler with PNG encoding State machine: Idle→StartDetected→Phasing→Receiving→Stopping Server integration: - WefaxMessage/WefaxProgress in trx-core DecodedMessage - DecoderConfig, DecoderResetSeqs, RigCommand wefax variants - DECODER_REGISTRY entry in trx-protocol - DecoderHistories/DecoderLoggers wefax support - run_wefax_decoder() async task in trx-server audio.rs - History persistence in pickledb store Frontend integration: - wefax.js plugin with live canvas rendering and gallery - HTML sub-tab with canvas, gallery, toggle/clear controls - SSE dispatch for wefax/wefax_progress events - Decode history worker and restore support - Toggle/clear API endpoints 19 unit tests covering resampler, FM discriminator, tone detection, phasing, line slicing, image encoding, and decoder state machine. https://claude.ai/code/session_019eyxgx3LuhcFZ7T5tr2Trm Signed-off-by: Claude <noreply@anthropic.com>
49 lines
1.2 KiB
TOML
49 lines
1.2 KiB
TOML
# SPDX-FileCopyrightText: 2026 Stan Grams <sjg@haxx.space>
|
|
#
|
|
# SPDX-License-Identifier: BSD-2-Clause
|
|
|
|
[workspace]
|
|
members = [
|
|
"src/decoders/trx-ais",
|
|
"src/decoders/trx-wxsat",
|
|
"src/decoders/trx-aprs",
|
|
"src/decoders/trx-cw",
|
|
"src/decoders/trx-decode-log",
|
|
"src/decoders/trx-ftx",
|
|
"src/decoders/trx-rds",
|
|
"src/decoders/trx-vdes",
|
|
"src/decoders/trx-wefax",
|
|
"src/decoders/trx-wspr",
|
|
"src/trx-core",
|
|
"src/trx-protocol",
|
|
"src/trx-app",
|
|
"src/trx-reporting",
|
|
"src/trx-server",
|
|
"src/trx-server/trx-backend",
|
|
"src/trx-server/trx-backend/trx-backend-ft817",
|
|
"src/trx-server/trx-backend/trx-backend-ft450d",
|
|
"src/trx-server/trx-backend/trx-backend-soapysdr",
|
|
"src/trx-client",
|
|
"src/trx-client/trx-frontend",
|
|
"src/trx-client/trx-frontend/trx-frontend-http",
|
|
"src/trx-client/trx-frontend/trx-frontend-http-json",
|
|
"src/trx-client/trx-frontend/trx-frontend-rigctl",
|
|
"src/trx-configurator",
|
|
]
|
|
resolver = "2"
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
|
|
[workspace.dependencies]
|
|
flate2 = "1"
|
|
tokio = "1"
|
|
uuid = { version = "1", features = ["v4", "serde"] }
|
|
tokio-serial = "5"
|
|
serde = "1"
|
|
serde_json = "1"
|
|
toml = "0.8"
|
|
tracing = "0.1"
|
|
tracing-subscriber = "0.3"
|
|
clap = "4"
|