Files
trx-rs/Cargo.toml
T
Claude daa31fb6e5 [feat](trx-wefax): implement WEFAX decoder with full server and frontend integration
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>
2026-04-03 06:50:42 +02:00

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"