From ba48de2d30f6376397d1a6f37c4d666099d16d11 Mon Sep 17 00:00:00 2001 From: Stan Grams Date: Sun, 17 May 2026 23:25:14 +0200 Subject: [PATCH] Initial commit Signed-off-by: Stan Grams --- .cargo/config.toml | 11 + .gitattributes | 24 + .github/workflows/wiki.yml | 39 + .gitignore | 32 + CLAUDE.md | 131 + CONTRIBUTING.md | 41 + Cargo.lock | 4193 ++++++++ Cargo.lock.license | 3 + Cargo.toml | 48 + LICENSES/BSD-2-Clause.txt | 9 + LICENSES/GPL-2.0-or-later.txt | 338 + README.md | 147 + assets/trx-logo.png | Bin 0 -> 1571326 bytes docs/Architecture.md | 1087 ++ docs/Home.md | 14 + docs/Improvement-Areas.md | 211 + docs/Optimization-Guidelines.md | 175 + docs/Planned-Features.md | 324 + docs/RDS-Tuning-Notes.md | 95 + docs/Settings-Menu-UX-Analysis.md | 163 + docs/UX_Guidelines.md | 390 + docs/User-Manual.md | 546 + docs/Wxsat-Map-Overlay.md | 152 + docs/frontend_improvements.md | 361 + docs/scheduler_improvements.md | 234 + docs/wefax_plan.md | 837 ++ script/dummy-server.sh | 17 + src/decoders/trx-ais/Cargo.toml | 11 + src/decoders/trx-ais/src/lib.rs | 472 + src/decoders/trx-aprs/Cargo.toml | 11 + src/decoders/trx-aprs/src/lib.rs | 923 ++ src/decoders/trx-cw/Cargo.toml | 11 + src/decoders/trx-cw/src/lib.rs | 502 + src/decoders/trx-decode-log/Cargo.toml | 19 + src/decoders/trx-decode-log/src/lib.rs | 355 + src/decoders/trx-ftx/Cargo.toml | 20 + src/decoders/trx-ftx/README.md | 107 + .../trx-ftx/src/common/callsign_hash.rs | 459 + src/decoders/trx-ftx/src/common/constants.rs | 548 ++ src/decoders/trx-ftx/src/common/crc.rs | 92 + src/decoders/trx-ftx/src/common/decode.rs | 363 + src/decoders/trx-ftx/src/common/encode.rs | 146 + src/decoders/trx-ftx/src/common/ldpc.rs | 291 + src/decoders/trx-ftx/src/common/message.rs | 1674 ++++ src/decoders/trx-ftx/src/common/mod.rs | 17 + src/decoders/trx-ftx/src/common/monitor.rs | 284 + src/decoders/trx-ftx/src/common/osd.rs | 922 ++ src/decoders/trx-ftx/src/common/protocol.rs | 184 + src/decoders/trx-ftx/src/common/text.rs | 434 + src/decoders/trx-ftx/src/decoder.rs | 343 + src/decoders/trx-ftx/src/ft2/bitmetrics.rs | 298 + src/decoders/trx-ftx/src/ft2/decode.rs | 167 + src/decoders/trx-ftx/src/ft2/downsample.rs | 306 + src/decoders/trx-ftx/src/ft2/mod.rs | 846 ++ src/decoders/trx-ftx/src/ft2/sync.rs | 308 + src/decoders/trx-ftx/src/ft4/mod.rs | 240 + src/decoders/trx-ftx/src/ft8/mod.rs | 240 + src/decoders/trx-ftx/src/lib.rs | 12 + src/decoders/trx-rds/Cargo.toml | 12 + src/decoders/trx-rds/src/lib.rs | 2042 ++++ src/decoders/trx-vdes/Cargo.toml | 12 + src/decoders/trx-vdes/src/crc.rs | 153 + src/decoders/trx-vdes/src/lib.rs | 1538 +++ src/decoders/trx-vdes/src/link_layer.rs | 450 + src/decoders/trx-vdes/src/turbo.rs | 571 ++ src/decoders/trx-wefax/Cargo.toml | 14 + src/decoders/trx-wefax/src/config.rs | 52 + src/decoders/trx-wefax/src/decoder.rs | 599 ++ src/decoders/trx-wefax/src/demod.rs | 196 + src/decoders/trx-wefax/src/image.rs | 382 + src/decoders/trx-wefax/src/lib.rs | 20 + src/decoders/trx-wefax/src/line_slicer.rs | 148 + src/decoders/trx-wefax/src/phase.rs | 187 + src/decoders/trx-wefax/src/resampler.rs | 208 + src/decoders/trx-wefax/src/tone_detect.rs | 268 + src/decoders/trx-wspr/Cargo.toml | 10 + src/decoders/trx-wspr/src/decoder.rs | 510 + src/decoders/trx-wspr/src/lib.rs | 8 + src/decoders/trx-wspr/src/protocol.rs | 578 ++ src/decoders/trx-wxsat/Cargo.toml | 14 + src/decoders/trx-wxsat/README.md | 135 + src/decoders/trx-wxsat/src/image_enc.rs | 37 + src/decoders/trx-wxsat/src/lib.rs | 20 + src/decoders/trx-wxsat/src/lrpt/cadu.rs | 248 + src/decoders/trx-wxsat/src/lrpt/demod.rs | 117 + src/decoders/trx-wxsat/src/lrpt/mcu.rs | 758 ++ src/decoders/trx-wxsat/src/lrpt/mod.rs | 151 + src/trx-app/Cargo.toml | 17 + src/trx-app/src/config.rs | 88 + src/trx-app/src/lib.rs | 13 + src/trx-app/src/logging.rs | 19 + src/trx-app/src/shared_config.rs | 95 + src/trx-app/src/util.rs | 23 + src/trx-client/Cargo.toml | 32 + src/trx-client/src/audio_bridge.rs | 318 + src/trx-client/src/audio_client.rs | 769 ++ src/trx-client/src/config.rs | 1212 +++ src/trx-client/src/main.rs | 685 ++ src/trx-client/src/remote_client.rs | 1734 ++++ src/trx-client/trx-frontend/Cargo.toml | 16 + src/trx-client/trx-frontend/src/lib.rs | 546 + .../trx-frontend-http-json/Cargo.toml | 16 + .../trx-frontend-http-json/src/lib.rs | 10 + .../trx-frontend-http-json/src/server.rs | 504 + .../trx-frontend/trx-frontend-http/Cargo.toml | 31 + .../trx-frontend-http/assets/trx-favicon.png | Bin 0 -> 6408 bytes .../trx-frontend-http/assets/trx-logo.png | Bin 0 -> 63667 bytes .../trx-frontend-http/assets/web/app.js | 8760 +++++++++++++++++ .../assets/web/bandplan.json | 493 + .../assets/web/decode-history-worker.js | 180 + .../trx-frontend-http/assets/web/index.html | 1672 ++++ .../assets/web/leaflet-ais-tracksymbol.js | 120 + .../trx-frontend-http/assets/web/map-core.js | 3515 +++++++ .../assets/web/plugins/ais.js | 407 + .../assets/web/plugins/aprs.js | 498 + .../assets/web/plugins/background-decode.js | 410 + .../assets/web/plugins/bookmarks.js | 792 ++ .../assets/web/plugins/cw.js | 451 + .../assets/web/plugins/ft2.js | 207 + .../assets/web/plugins/ft4.js | 207 + .../assets/web/plugins/ft8.js | 486 + .../assets/web/plugins/hf-aprs.js | 444 + .../assets/web/plugins/sat-scheduler.js | 321 + .../assets/web/plugins/sat.js | 546 + .../assets/web/plugins/scheduler.js | 1526 +++ .../assets/web/plugins/vchan.js | 565 ++ .../assets/web/plugins/vdes.js | 352 + .../assets/web/plugins/wefax.js | 386 + .../assets/web/plugins/wspr.js | 292 + .../assets/web/screenshot.js | 265 + .../trx-frontend-http/assets/web/style.css | 4947 ++++++++++ .../trx-frontend-http/assets/web/themes.css | 478 + .../dseg14-classic-latin-400-normal.woff2 | Bin 0 -> 5804 bytes .../assets/web/vendor/layers-2x.png | Bin 0 -> 1259 bytes .../assets/web/vendor/layers.png | Bin 0 -> 696 bytes .../assets/web/vendor/leaflet.css | 661 ++ .../assets/web/vendor/leaflet.js | 5 + .../assets/web/vendor/marker-icon-2x.png | Bin 0 -> 2464 bytes .../assets/web/vendor/marker-icon.png | Bin 0 -> 1466 bytes .../assets/web/vendor/marker-shadow.png | Bin 0 -> 618 bytes .../assets/web/webgl-renderer.js | 535 + .../trx-frontend/trx-frontend-http/build.rs | 29 + .../trx-frontend-http/src/api/assets.rs | 398 + .../trx-frontend-http/src/api/bookmarks.rs | 287 + .../trx-frontend-http/src/api/decoder.rs | 603 ++ .../trx-frontend-http/src/api/mod.rs | 1170 +++ .../trx-frontend-http/src/api/recorder.rs | 245 + .../trx-frontend-http/src/api/rig.rs | 535 + .../trx-frontend-http/src/api/sse.rs | 450 + .../trx-frontend-http/src/api/vchan.rs | 270 + .../trx-frontend-http/src/audio.rs | 856 ++ .../trx-frontend-http/src/auth.rs | 831 ++ .../src/background_decode.rs | 895 ++ .../trx-frontend-http/src/bookmarks.rs | 185 + .../trx-frontend/trx-frontend-http/src/lib.rs | 10 + .../trx-frontend-http/src/recorder.rs | 589 ++ .../trx-frontend-http/src/scheduler.rs | 1585 +++ .../trx-frontend-http/src/server.rs | 295 + .../trx-frontend-http/src/status.rs | 70 + .../trx-frontend-http/src/vchan.rs | 829 ++ .../trx-frontend-rigctl/Cargo.toml | 15 + .../trx-frontend-rigctl/src/lib.rs | 10 + .../trx-frontend-rigctl/src/server.rs | 719 ++ src/trx-configurator/Cargo.toml | 21 + src/trx-configurator/src/check.rs | 556 ++ src/trx-configurator/src/detect.rs | 52 + src/trx-configurator/src/main.rs | 130 + src/trx-configurator/src/prompts.rs | 370 + src/trx-configurator/src/writer.rs | 455 + src/trx-core/Cargo.toml | 18 + src/trx-core/src/audio.rs | 405 + src/trx-core/src/decode.rs | 321 + src/trx-core/src/geo.rs | 1071 ++ src/trx-core/src/lib.rs | 22 + src/trx-core/src/math/bcd.rs | 48 + src/trx-core/src/math/mod.rs | 7 + src/trx-core/src/radio/freq.rs | 72 + src/trx-core/src/radio/mod.rs | 7 + src/trx-core/src/rig/command.rs | 58 + src/trx-core/src/rig/controller/events.rs | 207 + src/trx-core/src/rig/controller/executor.rs | 85 + src/trx-core/src/rig/controller/handlers.rs | 600 ++ src/trx-core/src/rig/controller/machine.rs | 634 ++ src/trx-core/src/rig/controller/mod.rs | 26 + src/trx-core/src/rig/controller/policies.rs | 333 + src/trx-core/src/rig/mod.rs | 370 + src/trx-core/src/rig/request.rs | 17 + src/trx-core/src/rig/response.rs | 87 + src/trx-core/src/rig/state.rs | 496 + src/trx-core/src/vchan.rs | 152 + src/trx-protocol/Cargo.toml | 17 + src/trx-protocol/src/auth.rs | 223 + src/trx-protocol/src/codec.rs | 481 + src/trx-protocol/src/decoders.rs | 248 + src/trx-protocol/src/lib.rs | 21 + src/trx-protocol/src/mapping.rs | 711 ++ src/trx-protocol/src/types.rs | 192 + src/trx-reporting/Cargo.toml | 14 + src/trx-reporting/src/aprsfi.rs | 483 + src/trx-reporting/src/lib.rs | 83 + src/trx-reporting/src/pskreporter.rs | 728 ++ src/trx-server/Cargo.toml | 47 + src/trx-server/build.rs | 29 + src/trx-server/src/audio.rs | 4832 +++++++++ src/trx-server/src/config.rs | 1524 +++ src/trx-server/src/error.rs | 13 + src/trx-server/src/history_store.rs | 305 + src/trx-server/src/listener.rs | 1270 +++ src/trx-server/src/main.rs | 1323 +++ src/trx-server/src/rig_handle.rs | 37 + src/trx-server/src/rig_task.rs | 1697 ++++ src/trx-server/trx-backend/Cargo.toml | 26 + src/trx-server/trx-backend/src/dummy.rs | 294 + src/trx-server/trx-backend/src/lib.rs | 135 + src/trx-server/trx-backend/src/vchan.rs | 7 + .../trx-backend/trx-backend-ft450d/Cargo.toml | 15 + .../trx-backend/trx-backend-ft450d/src/lib.rs | 542 + .../trx-backend/trx-backend-ft817/Cargo.toml | 15 + .../trx-backend/trx-backend-ft817/src/lib.rs | 637 ++ .../trx-backend-soapysdr/Cargo.toml | 20 + .../trx-backend-soapysdr/src/demod.rs | 227 + .../trx-backend-soapysdr/src/demod/am.rs | 56 + .../trx-backend-soapysdr/src/demod/fm.rs | 59 + .../trx-backend-soapysdr/src/demod/math.rs | 87 + .../src/demod/math_arm.rs | 148 + .../src/demod/math_x86.rs | 136 + .../trx-backend-soapysdr/src/demod/sam.rs | 182 + .../trx-backend-soapysdr/src/demod/ssb.rs | 87 + .../trx-backend-soapysdr/src/demod/wfm.rs | 1695 ++++ .../trx-backend-soapysdr/src/dsp.rs | 597 ++ .../trx-backend-soapysdr/src/dsp/channel.rs | 987 ++ .../trx-backend-soapysdr/src/dsp/filter.rs | 388 + .../trx-backend-soapysdr/src/dsp/spectrum.rs | 80 + .../trx-backend-soapysdr/src/lib.rs | 1074 ++ .../src/real_iq_source.rs | 248 + .../trx-backend-soapysdr/src/vchan_impl.rs | 534 + trx-rs.toml.example | 141 + 237 files changed, 105505 insertions(+) create mode 100644 .cargo/config.toml create mode 100644 .gitattributes create mode 100644 .github/workflows/wiki.yml create mode 100644 .gitignore create mode 100644 CLAUDE.md create mode 100644 CONTRIBUTING.md create mode 100644 Cargo.lock create mode 100644 Cargo.lock.license create mode 100644 Cargo.toml create mode 100644 LICENSES/BSD-2-Clause.txt create mode 100644 LICENSES/GPL-2.0-or-later.txt create mode 100644 README.md create mode 100644 assets/trx-logo.png create mode 100644 docs/Architecture.md create mode 100644 docs/Home.md create mode 100644 docs/Improvement-Areas.md create mode 100644 docs/Optimization-Guidelines.md create mode 100644 docs/Planned-Features.md create mode 100644 docs/RDS-Tuning-Notes.md create mode 100644 docs/Settings-Menu-UX-Analysis.md create mode 100644 docs/UX_Guidelines.md create mode 100644 docs/User-Manual.md create mode 100644 docs/Wxsat-Map-Overlay.md create mode 100644 docs/frontend_improvements.md create mode 100644 docs/scheduler_improvements.md create mode 100644 docs/wefax_plan.md create mode 100644 script/dummy-server.sh create mode 100644 src/decoders/trx-ais/Cargo.toml create mode 100644 src/decoders/trx-ais/src/lib.rs create mode 100644 src/decoders/trx-aprs/Cargo.toml create mode 100644 src/decoders/trx-aprs/src/lib.rs create mode 100644 src/decoders/trx-cw/Cargo.toml create mode 100644 src/decoders/trx-cw/src/lib.rs create mode 100644 src/decoders/trx-decode-log/Cargo.toml create mode 100644 src/decoders/trx-decode-log/src/lib.rs create mode 100644 src/decoders/trx-ftx/Cargo.toml create mode 100644 src/decoders/trx-ftx/README.md create mode 100644 src/decoders/trx-ftx/src/common/callsign_hash.rs create mode 100644 src/decoders/trx-ftx/src/common/constants.rs create mode 100644 src/decoders/trx-ftx/src/common/crc.rs create mode 100644 src/decoders/trx-ftx/src/common/decode.rs create mode 100644 src/decoders/trx-ftx/src/common/encode.rs create mode 100644 src/decoders/trx-ftx/src/common/ldpc.rs create mode 100644 src/decoders/trx-ftx/src/common/message.rs create mode 100644 src/decoders/trx-ftx/src/common/mod.rs create mode 100644 src/decoders/trx-ftx/src/common/monitor.rs create mode 100644 src/decoders/trx-ftx/src/common/osd.rs create mode 100644 src/decoders/trx-ftx/src/common/protocol.rs create mode 100644 src/decoders/trx-ftx/src/common/text.rs create mode 100644 src/decoders/trx-ftx/src/decoder.rs create mode 100644 src/decoders/trx-ftx/src/ft2/bitmetrics.rs create mode 100644 src/decoders/trx-ftx/src/ft2/decode.rs create mode 100644 src/decoders/trx-ftx/src/ft2/downsample.rs create mode 100644 src/decoders/trx-ftx/src/ft2/mod.rs create mode 100644 src/decoders/trx-ftx/src/ft2/sync.rs create mode 100644 src/decoders/trx-ftx/src/ft4/mod.rs create mode 100644 src/decoders/trx-ftx/src/ft8/mod.rs create mode 100644 src/decoders/trx-ftx/src/lib.rs create mode 100644 src/decoders/trx-rds/Cargo.toml create mode 100644 src/decoders/trx-rds/src/lib.rs create mode 100644 src/decoders/trx-vdes/Cargo.toml create mode 100644 src/decoders/trx-vdes/src/crc.rs create mode 100644 src/decoders/trx-vdes/src/lib.rs create mode 100644 src/decoders/trx-vdes/src/link_layer.rs create mode 100644 src/decoders/trx-vdes/src/turbo.rs create mode 100644 src/decoders/trx-wefax/Cargo.toml create mode 100644 src/decoders/trx-wefax/src/config.rs create mode 100644 src/decoders/trx-wefax/src/decoder.rs create mode 100644 src/decoders/trx-wefax/src/demod.rs create mode 100644 src/decoders/trx-wefax/src/image.rs create mode 100644 src/decoders/trx-wefax/src/lib.rs create mode 100644 src/decoders/trx-wefax/src/line_slicer.rs create mode 100644 src/decoders/trx-wefax/src/phase.rs create mode 100644 src/decoders/trx-wefax/src/resampler.rs create mode 100644 src/decoders/trx-wefax/src/tone_detect.rs create mode 100644 src/decoders/trx-wspr/Cargo.toml create mode 100644 src/decoders/trx-wspr/src/decoder.rs create mode 100644 src/decoders/trx-wspr/src/lib.rs create mode 100644 src/decoders/trx-wspr/src/protocol.rs create mode 100644 src/decoders/trx-wxsat/Cargo.toml create mode 100644 src/decoders/trx-wxsat/README.md create mode 100644 src/decoders/trx-wxsat/src/image_enc.rs create mode 100644 src/decoders/trx-wxsat/src/lib.rs create mode 100644 src/decoders/trx-wxsat/src/lrpt/cadu.rs create mode 100644 src/decoders/trx-wxsat/src/lrpt/demod.rs create mode 100644 src/decoders/trx-wxsat/src/lrpt/mcu.rs create mode 100644 src/decoders/trx-wxsat/src/lrpt/mod.rs create mode 100644 src/trx-app/Cargo.toml create mode 100644 src/trx-app/src/config.rs create mode 100644 src/trx-app/src/lib.rs create mode 100644 src/trx-app/src/logging.rs create mode 100644 src/trx-app/src/shared_config.rs create mode 100644 src/trx-app/src/util.rs create mode 100644 src/trx-client/Cargo.toml create mode 100644 src/trx-client/src/audio_bridge.rs create mode 100644 src/trx-client/src/audio_client.rs create mode 100644 src/trx-client/src/config.rs create mode 100644 src/trx-client/src/main.rs create mode 100644 src/trx-client/src/remote_client.rs create mode 100644 src/trx-client/trx-frontend/Cargo.toml create mode 100644 src/trx-client/trx-frontend/src/lib.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http-json/Cargo.toml create mode 100644 src/trx-client/trx-frontend/trx-frontend-http-json/src/lib.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http-json/src/server.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/Cargo.toml create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/trx-favicon.png create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/trx-logo.png create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/bandplan.json create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/decode-history-worker.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/index.html create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/leaflet-ais-tracksymbol.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/map-core.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ais.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/aprs.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/background-decode.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/bookmarks.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/cw.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft2.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft4.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft8.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/hf-aprs.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/sat-scheduler.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/sat.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/scheduler.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/vchan.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/vdes.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/wefax.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/wspr.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/screenshot.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/style.css create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/themes.css create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/vendor/dseg14-classic-latin-400-normal.woff2 create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/vendor/layers-2x.png create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/vendor/layers.png create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/vendor/leaflet.css create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/vendor/leaflet.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/vendor/marker-icon-2x.png create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/vendor/marker-icon.png create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/vendor/marker-shadow.png create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/assets/web/webgl-renderer.js create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/build.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/api/assets.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/api/bookmarks.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/api/decoder.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/api/mod.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/api/recorder.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/api/rig.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/api/sse.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/api/vchan.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/audio.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/auth.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/background_decode.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/bookmarks.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/lib.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/recorder.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/scheduler.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/server.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/status.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-http/src/vchan.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-rigctl/Cargo.toml create mode 100644 src/trx-client/trx-frontend/trx-frontend-rigctl/src/lib.rs create mode 100644 src/trx-client/trx-frontend/trx-frontend-rigctl/src/server.rs create mode 100644 src/trx-configurator/Cargo.toml create mode 100644 src/trx-configurator/src/check.rs create mode 100644 src/trx-configurator/src/detect.rs create mode 100644 src/trx-configurator/src/main.rs create mode 100644 src/trx-configurator/src/prompts.rs create mode 100644 src/trx-configurator/src/writer.rs create mode 100644 src/trx-core/Cargo.toml create mode 100644 src/trx-core/src/audio.rs create mode 100644 src/trx-core/src/decode.rs create mode 100644 src/trx-core/src/geo.rs create mode 100644 src/trx-core/src/lib.rs create mode 100644 src/trx-core/src/math/bcd.rs create mode 100644 src/trx-core/src/math/mod.rs create mode 100644 src/trx-core/src/radio/freq.rs create mode 100644 src/trx-core/src/radio/mod.rs create mode 100644 src/trx-core/src/rig/command.rs create mode 100644 src/trx-core/src/rig/controller/events.rs create mode 100644 src/trx-core/src/rig/controller/executor.rs create mode 100644 src/trx-core/src/rig/controller/handlers.rs create mode 100644 src/trx-core/src/rig/controller/machine.rs create mode 100644 src/trx-core/src/rig/controller/mod.rs create mode 100644 src/trx-core/src/rig/controller/policies.rs create mode 100644 src/trx-core/src/rig/mod.rs create mode 100644 src/trx-core/src/rig/request.rs create mode 100644 src/trx-core/src/rig/response.rs create mode 100644 src/trx-core/src/rig/state.rs create mode 100644 src/trx-core/src/vchan.rs create mode 100644 src/trx-protocol/Cargo.toml create mode 100644 src/trx-protocol/src/auth.rs create mode 100644 src/trx-protocol/src/codec.rs create mode 100644 src/trx-protocol/src/decoders.rs create mode 100644 src/trx-protocol/src/lib.rs create mode 100644 src/trx-protocol/src/mapping.rs create mode 100644 src/trx-protocol/src/types.rs create mode 100644 src/trx-reporting/Cargo.toml create mode 100644 src/trx-reporting/src/aprsfi.rs create mode 100644 src/trx-reporting/src/lib.rs create mode 100644 src/trx-reporting/src/pskreporter.rs create mode 100644 src/trx-server/Cargo.toml create mode 100644 src/trx-server/build.rs create mode 100644 src/trx-server/src/audio.rs create mode 100644 src/trx-server/src/config.rs create mode 100644 src/trx-server/src/error.rs create mode 100644 src/trx-server/src/history_store.rs create mode 100644 src/trx-server/src/listener.rs create mode 100644 src/trx-server/src/main.rs create mode 100644 src/trx-server/src/rig_handle.rs create mode 100644 src/trx-server/src/rig_task.rs create mode 100644 src/trx-server/trx-backend/Cargo.toml create mode 100644 src/trx-server/trx-backend/src/dummy.rs create mode 100644 src/trx-server/trx-backend/src/lib.rs create mode 100644 src/trx-server/trx-backend/src/vchan.rs create mode 100644 src/trx-server/trx-backend/trx-backend-ft450d/Cargo.toml create mode 100644 src/trx-server/trx-backend/trx-backend-ft450d/src/lib.rs create mode 100644 src/trx-server/trx-backend/trx-backend-ft817/Cargo.toml create mode 100644 src/trx-server/trx-backend/trx-backend-ft817/src/lib.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/Cargo.toml create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/demod.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/demod/am.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/demod/fm.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/demod/math.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/demod/math_arm.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/demod/math_x86.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/demod/sam.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/demod/ssb.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/demod/wfm.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/dsp.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/dsp/channel.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/dsp/filter.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/dsp/spectrum.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/lib.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/real_iq_source.rs create mode 100644 src/trx-server/trx-backend/trx-backend-soapysdr/src/vchan_impl.rs create mode 100644 trx-rs.toml.example diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..171fa78 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: 2026 Stan Grams +# +# SPDX-License-Identifier: GPL-2.0-or-later + +# Enable CPU optimizations for better performance +# Set target-cpu to native to use all available CPU features on the build machine + +[build] +# Use native CPU features (AVX2, SSE4.2, etc.) for maximum performance +# This enables better vectorization in rustc and dependencies +rustflags = ["-C", "target-cpu=native", "-C", "opt-level=3"] diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..ba1522d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,24 @@ +# Enforce LF for all text files to prevent CRLF or mixed EOLs +* text=auto eol=lf + +# Treat common binary types as binary +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.ico binary +*.pdf binary +*.zip binary +*.gz binary +*.bz2 binary +*.xz binary +*.7z binary +*.tar binary +*.mp4 binary +*.mov binary +*.mp3 binary +*.wav binary +*.ttf binary +*.otf binary +*.woff binary +*.woff2 binary diff --git a/.github/workflows/wiki.yml b/.github/workflows/wiki.yml new file mode 100644 index 0000000..1918622 --- /dev/null +++ b/.github/workflows/wiki.yml @@ -0,0 +1,39 @@ +name: Sync docs to Wiki + +on: + push: + branches: [main] + paths: + - 'docs/**' + workflow_dispatch: + +permissions: + contents: write + +jobs: + wiki: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Checkout wiki + uses: actions/checkout@v4 + with: + repository: ${{ github.repository }}.wiki + path: wiki + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Sync docs to wiki + run: | + rsync -av --delete --exclude='.git' docs/ wiki/ + cd wiki + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git add -A + if git diff --cached --quiet; then + echo "No wiki changes to commit." + else + git commit -m "Sync docs from ${GITHUB_SHA::8}" + git push + fi diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7fab369 --- /dev/null +++ b/.gitignore @@ -0,0 +1,32 @@ +# Rust +/target/ +**/*.rs.bk +Cargo.lock + +# IDEs/Editors +/.idea/ +/.vscode/ +*.swp +*.swo + +# macOS +.DS_Store + +# Logs +*.log + +# Coverage/Bench +*.profraw +*.lcov +coverage/ +benchmarks/ + +# Env +.env +.env.* + +# Claude Code +.claude/ + +# User-defined local files +/.user-defined/ diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..b6da9ce --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,131 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Commands + +```bash +# Build +cargo build --release + +# Run tests +cargo test + +# Lint +cargo clippy + +# Run a single test (by name pattern) +cargo test + +# Run tests for a specific crate +cargo test -p trx-core + +# Generate example config +./target/release/trx-server --print-config > trx-server.toml +./target/release/trx-client --print-config > trx-client.toml + +# Run server +./target/release/trx-server --config trx-server.toml +# or via CLI args: +./target/release/trx-server -r ft817 "/dev/ttyUSB0 9600" + +# Run client +./target/release/trx-client --config trx-client.toml +``` + +## Crate Layout + +This is a Cargo workspace. All crates live under `src/`: + +``` +src/ + trx-core/ # Core types, traits, state machine, controller (~3,500 LOC) + trx-protocol/ # Client↔server protocol DTOs, auth, codec, mapping (~1,100 LOC) + trx-app/ # Shared application helpers (config paths, logging init) + trx-reporting/ # PSKReporter UDP uplink + APRS-IS TCP uplink (~1,150 LOC) + trx-server/ # Server binary: rig_task, audio pipeline, listener (~3,700 LOC) + trx-backend/ # Backend abstraction trait + factory + dummy + trx-backend-ft817/ # Yaesu FT-817 binary CAT (BCD encoding) + trx-backend-ft450d/ # Yaesu FT-450D ASCII CAT + trx-backend-soapysdr/ # SoapySDR RX with full DSP pipeline (~5,000+ LOC) + trx-client/ # Client binary: remote connection, frontend spawning (~1,500 LOC) + trx-frontend/ # Frontend trait (FrontendSpawner), runtime context + trx-frontend-http/ # Web UI: REST API, SSE, WebSocket audio, session auth + trx-frontend-http-json/ # JSON-over-TCP control frontend + trx-frontend-rigctl/ # Hamlib-compatible rigctl TCP interface + trx-configurator/ # Interactive setup wizard + decoders/ + trx-aprs/ # APRS packet decoder (AX.25 + APRS-IS) + trx-cw/ # CW (Morse) decoder (Goertzel tone detection) + trx-ftx/ # Pure Rust FTx decoder (FT8/FT4/FT2, LDPC/OSD) (~3,000+ LOC) + trx-wspr/ # WSPR weak-signal decoder + trx-ais/ # AIS maritime transponder decoder + trx-rds/ # RDS decoder for WFM (~2,000 LOC) + trx-vdes/ # VDES maritime data exchange decoder (~1,300 LOC) + trx-decode-log/ # JSON Lines file logging with date rotation +``` + +## Architecture + +The project is split into a **server** (connects to the radio hardware) and a **client** (exposes user-facing frontends). They communicate over a JSON TCP connection (default port 4530). Audio streams over a separate TCP connection (default port 4531) using Opus encoding. + +### Data flow + +```mermaid +graph TD + Radio["Radio Hardware"] <-->|serial / TCP| Server["trx-server (rig_task.rs)"] + Server <-->|"JSON-TCP :4530"| Client["trx-client (remote_client.rs)"] + Server -->|"Opus-TCP :4531"| Client + Client <-->|internal channels| F1["HTTP Frontend :8080"] + Client <-->|internal channels| F2["rigctl Frontend :4532"] + Client <-->|internal channels| F3["JSON-TCP Frontend"] +``` + +### trx-core controller + +The rig controller (`src/trx-core/src/rig/controller/`) is the central state management component: + +- **`machine.rs`** — `RigMachineState` enum with states: `Disconnected`, `Connecting`, `Initializing`, `PoweredOff`, `Ready`, `Transmitting`, `Error` +- **`handlers.rs`** — `RigCommandHandler` trait; commands: `SetFreq`, `SetMode`, `SetPtt`, `PowerOn/Off`, `ToggleVfo`, `Lock/Unlock`, `GetSnapshot`, etc. +- **`events.rs`** — `RigListener` trait and `RigEventEmitter` for broadcasting frequency/mode/PTT/state/meter/lock/power changes +- **`policies.rs`** — `RetryPolicy` (`ExponentialBackoff`, `FixedDelay`, `NoRetry`) and `PollingPolicy` (`AdaptivePolling`, `FixedPolling`, `NoPolling`) + +### Decoders + +Signal decoders run as background tasks in `trx-server`, consuming decoded audio. `trx-ftx` provides the FT8/FT4/FT2 decoder in pure Rust. Decoded frames can be forwarded to PSKReporter and APRS-IS (IGate) uplinks, or logged via `trx-decode-log`. + +## Diagrams + +Always use [Mermaid](https://mermaid.js.org/) for diagrams in Markdown files. Never use ASCII art, box-drawing characters, or plain-text diagrams. GitHub renders Mermaid natively in ```mermaid fenced code blocks. + +## Commit Format + +``` +[](): +``` + +Types: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`. Use `(trx-rs)` for repo-wide changes. Sign commits with `git commit -s`. Write isolated commits per crate. + +## Codebase Review Observations + +Full architecture documentation: `docs/Architecture.md` +Improvement plan: `docs/Improvement-Areas.md` + +*Last reviewed: 2026-03-29* + +### Strengths + +- **Explicit state machine**: `RigMachineState` FSM (7 states) prevents invalid states with a deterministic transition table and exhaustive matching. Well-tested with lifecycle, error recovery, and invalid transition tests. `ReadyStateData`/`TransmittingStateData` use `pub(crate)` fields with controlled accessors. +- **Trait-based polymorphism**: Clean abstraction boundaries (`RigCat`, `RigSdr`, `AudioSource`, `RigListener`, `RigCommandHandler`, `CommandExecutor`, `TokenValidator`, `FrontendSpawner`) enable loose coupling and testability. `RigCat`/`RigSdr` split cleanly separates CAT ops from SDR-specific methods. +- **Multi-rig architecture**: Per-rig task isolation with `HashMap` routing, per-rig state/spectrum/audio/decoder-history channels, dual-connection model (main + spectrum) in the client, and backward-compatible single-rig mode. +- **Async concurrency model**: Proper use of tokio channels -- `watch` for state snapshots, `broadcast` for PCM/decode fan-out, `mpsc` for commands. No mutex contention on hot paths. Spectrum deduplication collapses concurrent GetSpectrum requests. +- **Comprehensive SDR support**: Full DSP pipeline with multi-mode demodulation (SSB, AM, SAM, FM, WFM, AIS, VDES), virtual channel management, squelch, noise blanker, spectrum FFT, RDS decoding. AVX2-optimized FM discriminator with scalar fallbacks. +- **Pure Rust decoders**: FT8/FT4/FT2, APRS, CW, WSPR, AIS, VDES, RDS -- all implemented without C FFI dependencies. Consistent decoder pattern: stateful struct → `process_block()` → `decode_if_ready()`. +- **Good test coverage** in protocol layer: codec, mapping, auth all have thorough unit tests with round-trip verification. 45+ mapping tests cover all command variants. +- **Feature-gated backends**: ft817, ft450d, soapysdr compiled conditionally to minimize binary size. Factory pattern with name normalization for registration. +- **Defensive error handling**: Lock poisoning recovery, stream error deduplication with 60s summaries, input truncation in logs (128 chars), per-IP rate limiting on auth endpoints. +- **Well-documented DSP guidelines**: `docs/Optimization-Guidelines.md` captures lessons on NCO design, polyphase resampling, AVX2 batching, and stereo FM decoding. + +### Areas for Improvement + +All P0–P3 items resolved or dropped. See `docs/Improvement-Areas.md` for details. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..99d5b2f --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,41 @@ +## Workflow + +The trx-rs project is organized into three main components: +1. **trx-core**: core library providing the basic functionalities, +2. **trx-server**: server component that hooks up the transceiver, +3. **trx-client**: client component that connects with the trx-server and exposes selected frontends. + +When contributing to the project, please follow these guidelines: +- Fork the repository and create a new branch for your changes. +- Make sure your code follows the project's coding style and conventions. +- Write clear and concise commit messages. +- Submit a pull request with a detailed description of your changes. +- Ensure that your changes are tested and pass all existing tests. + +## Commit Guidelines +- Use imperative mood in commit messages. +- Keep commit messages short and descriptive. +- Use a maximum of 80 characters per line. +- Use a blank line between the commit message and the body. +- Sign your commits with `git commit -s`. +- Explicitly mark LLM usage in commit messages with 'Co-authored-by:'. + +Use the format below for commit titles: +[](): +e.g. +- [feat](trx-core): add new feature xyz +- [fix](trx-frontend): fix http frontend xyz issue +- [docs](trx-rs): update README + +Use `(trx-rs)` for repo-wide changes that are not specific to any crate. + +Allowed types: +- feat: new feature +- fix: bug fix +- docs: documentation changes +- style: code style changes +- refactor: code refactoring +- test: test changes +- chore: build or maintenance changes + +Write isolated commits for each crate. diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..62da909 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,4193 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "actix-codec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" +dependencies = [ + "bitflags 2.11.1", + "bytes", + "futures-core", + "futures-sink", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "actix-http" +version = "3.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93acb4a42f64936f9b8cae4a433b237599dd6eb6ed06124eb67132ef8cc90662" +dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-utils", + "base64", + "bitflags 2.11.1", + "brotli 8.0.2", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", + "flate2", + "foldhash", + "futures-core", + "h2", + "http 0.2.12", + "httparse", + "httpdate", + "itoa", + "language-tags", + "local-channel", + "mime", + "percent-encoding", + "pin-project-lite", + "rand 0.10.1", + "sha1", + "smallvec", + "tokio", + "tokio-util", + "tracing", + "zstd", +] + +[[package]] +name = "actix-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "actix-router" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f8c75c51892f18d9c46150c5ac7beb81c95f78c8b83a634d49f4ca32551fe7" +dependencies = [ + "bytestring", + "cfg-if", + "http 0.2.12", + "regex", + "regex-lite", + "serde", + "tracing", +] + +[[package]] +name = "actix-rt" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92589714878ca59a7626ea19734f0e07a6a875197eec751bb5d3f99e64998c63" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix-server" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" +dependencies = [ + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", + "mio", + "socket2 0.5.10", + "tokio", + "tracing", +] + +[[package]] +name = "actix-service" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "actix-utils" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" +dependencies = [ + "local-waker", + "pin-project-lite", +] + +[[package]] +name = "actix-web" +version = "4.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff87453bc3b56e9b2b23c1cc0b1be8797184accf51d2abe0f8a33ec275d316bf" +dependencies = [ + "actix-codec", + "actix-http", + "actix-macros", + "actix-router", + "actix-rt", + "actix-server", + "actix-service", + "actix-utils", + "actix-web-codegen", + "bytes", + "bytestring", + "cfg-if", + "cookie", + "derive_more", + "encoding_rs", + "foldhash", + "futures-core", + "futures-util", + "impl-more", + "itoa", + "language-tags", + "log", + "mime", + "once_cell", + "pin-project-lite", + "regex", + "regex-lite", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "socket2 0.6.3", + "time", + "tracing", + "url", +] + +[[package]] +name = "actix-web-codegen" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f591380e2e68490b5dfaf1dd1aa0ebe78d84ba7067078512b4ea6e4492d622b8" +dependencies = [ + "actix-router", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "actix-ws" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d4f2fbee3ef7a22fa6cb0e416b962237a167ed0419f22d4e451da2d7f082f8" +dependencies = [ + "actix-codec", + "actix-http", + "actix-web", + "bytestring", + "futures-core", + "tokio", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "alsa" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" +dependencies = [ + "alsa-sys", + "bitflags 2.11.1", + "cfg-if", + "libc", +] + +[[package]] +name = "alsa-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + +[[package]] +name = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "audiopus_sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62314a1546a2064e033665d658e88c620a62904be945f8147e6b16c3db9f8651" +dependencies = [ + "cmake", + "log", + "pkg-config", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bindgen" +version = "0.66.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" +dependencies = [ + "bitflags 2.11.1", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn", +] + +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.11.1", + "cexpr", + "clang-sys", + "itertools", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.2", + "shlex", + "syn", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" + +[[package]] +name = "block-buffer" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" +dependencies = [ + "hybrid-array", +] + +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor 4.0.3", +] + +[[package]] +name = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor 5.0.0", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a334ef7c9e23abf0ce748e8cd309037da93e606ad52eb372e4ce327a0dcfbdfd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" + +[[package]] +name = "bytestring" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "113b4343b5f6617e7ad401ced8de3cc8b012e73a594347c307b90db3e9271289" +dependencies = [ + "bytes", +] + +[[package]] +name = "cc" +version = "1.2.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chacha20" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +dependencies = [ + "cfg-if", + "cpufeatures", + "rand_core 0.10.1", +] + +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" + +[[package]] +name = "cmake" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" +dependencies = [ + "cc", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + +[[package]] +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "cookie" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "coreaudio-rs" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" +dependencies = [ + "bitflags 1.3.2", + "core-foundation-sys", + "coreaudio-sys", +] + +[[package]] +name = "coreaudio-sys" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ceec7a6067e62d6f931a2baf6f3a751f4a892595bcec1461a3c94ef9949864b6" +dependencies = [ + "bindgen 0.72.1", +] + +[[package]] +name = "cpal" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" +dependencies = [ + "alsa", + "core-foundation-sys", + "coreaudio-rs", + "dasp_sample", + "jni", + "js-sys", + "libc", + "mach2", + "ndk", + "ndk-context", + "oboe", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows", +] + +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crypto-common" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710" +dependencies = [ + "hybrid-array", +] + +[[package]] +name = "dasp_sample" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn", + "unicode-xid", +] + +[[package]] +name = "dialoguer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" +dependencies = [ + "console", + "shell-words", + "tempfile", + "thiserror 1.0.69", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4850db49bf08e663084f7fb5c87d202ef91a3907271aff24a94eb97ff039153c" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.61.2", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "rand_core 0.10.1", + "wasip2", + "wasip3", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hound" +version = "3.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62adaabb884c94955b19907d60019f4e145d091c75345379e70d1ee696f7854f" + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.4.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.4.0", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hybrid-array" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3944cf8cf766b40e2a1a333ee5e9b563f854d5fa49d6a8ca2764e97c6eddb214" +dependencies = [ + "typenum", +] + +[[package]] +name = "hyper" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http 1.4.0", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" +dependencies = [ + "http 1.4.0", + "hyper", + "hyper-util", + "rustls", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-util", + "http 1.4.0", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.6.3", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.62.2", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + +[[package]] +name = "icu_properties" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + +[[package]] +name = "icu_provider" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "image" +version = "0.24.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-traits", + "png", +] + +[[package]] +name = "impl-more" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.0", + "serde", + "serde_core", +] + +[[package]] +name = "io-kit-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b" +dependencies = [ + "core-foundation-sys", + "mach2", +] + +[[package]] +name = "ipnet" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" + +[[package]] +name = "iri-string" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys 0.3.1", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" +dependencies = [ + "cfg-if", + "futures-util", + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libc" +version = "0.2.185" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f" + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "libredox" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" +dependencies = [ + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" + +[[package]] +name = "local-channel" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" +dependencies = [ + "futures-core", + "futures-sink", + "local-waker", +] + +[[package]] +name = "local-waker" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "mach2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "mio-serial" +version = "5.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "029e1f407e261176a983a6599c084efd322d9301028055c87174beac71397ba3" +dependencies = [ + "log", + "mio", + "nix 0.29.0", + "serialport", + "winapi", +] + +[[package]] +name = "ndk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" +dependencies = [ + "bitflags 2.11.1", + "jni-sys 0.3.1", + "log", + "ndk-sys", + "num_enum", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys 0.3.1", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.11.1", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "oboe" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" +dependencies = [ + "jni", + "ndk", + "ndk-context", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" +dependencies = [ + "cc", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "opus" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d3809943dff6fbad5f0484449ea26bdb9cb7d8efdf26ed50d3c7f227f69eb5c" +dependencies = [ + "audiopus_sys", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pickledb" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c53a5ade47760e8cc4986bdc5e72daeffaaaee64cbc374f9cfe0a00c1cd87b1f" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "potential_utf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "primal-check" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc0d895b311e3af9902528fbb8f928688abbd95872819320517cc24ca6b2bd08" +dependencies = [ + "num-integer", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit 0.25.11+spec-1.1.0", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.2", + "rustls", + "socket2 0.6.3", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.4", + "ring", + "rustc-hash 2.1.2", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.6.3", + "tracing", + "windows-sys 0.60.2", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rand" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + +[[package]] +name = "rand" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +dependencies = [ + "chacha20", + "getrandom 0.4.2", + "rand_core 0.10.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + +[[package]] +name = "realfft" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f821338fddb99d089116342c46e9f1fbf3828dba077674613e734e01d6ea8677" +dependencies = [ + "rustfft", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.11.1", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.18", +] + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-lite" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64", + "bytes", + "futures-core", + "http 1.4.0", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustfft" +version = "6.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21db5f9893e91f41798c88680037dba611ca6674703c1a18601b01a72c8adb89" +dependencies = [ + "num-complex", + "num-integer", + "num-traits", + "primal-check", + "strength_reduce", + "transpose", +] + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags 2.11.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.23.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f9466fb2c14ea04357e91413efb882e2a6d4a406e625449bc0a5d360d53a21" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8279bb85272c9f10811ae6a6c547ff594d6a7f3c6c6b02ee9726d1d0dcfcdd06" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serialport" +version = "4.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4d91116f97173694f1642263b2ff837f80d933aa837e2314969f6728f661df3" +dependencies = [ + "bitflags 2.11.1", + "cfg-if", + "core-foundation", + "core-foundation-sys", + "io-kit-sys", + "mach2", + "nix 0.26.4", + "scopeguard", + "unescaper", + "windows-sys 0.52.0", +] + +[[package]] +name = "sgp4" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9467b9a7be8485ed8be0f336d399c8f32c0fcd60686e7dd2ed3dab75c9a73eb3" +dependencies = [ + "chrono", + "serde", + "serde_json", +] + +[[package]] +name = "sha1" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aacc4cc499359472b4abe1bf11d0b12e688af9a805fa5e3016f9a386dc2d0214" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "soapysdr" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7497ace07aab956a89bc84c74478879ae099be8e061b59d8f80bfeacec3d9bda" +dependencies = [ + "log", + "num-complex", + "soapysdr-sys", +] + +[[package]] +name = "soapysdr-sys" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb5e50f86d0bf0c3312b77fce8737f760ce30adfa22baae97ffdd66a939356b" +dependencies = [ + "bindgen 0.66.1", + "cc", + "pkg-config", +] + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "strength_reduce" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.2", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.52.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.3", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-serial" +version = "5.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa1d5427f11ba7c5e6384521cfd76f2d64572ff29f3f4f7aa0f496282923fdc8" +dependencies = [ + "cfg-if", + "futures", + "log", + "mio-serial", + "serialport", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_write", + "winnow 0.7.15", +] + +[[package]] +name = "toml_edit" +version = "0.25.11+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +dependencies = [ + "indexmap", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.1", +] + +[[package]] +name = "toml_parser" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +dependencies = [ + "winnow 1.0.1", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "bitflags 2.11.1", + "bytes", + "futures-util", + "http 1.4.0", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "transpose" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e" +dependencies = [ + "num-integer", + "strength_reduce", +] + +[[package]] +name = "trx-ais" +version = "0.1.0" +dependencies = [ + "trx-core", +] + +[[package]] +name = "trx-app" +version = "0.1.0" +dependencies = [ + "dirs", + "serde", + "thiserror 2.0.18", + "toml", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "trx-aprs" +version = "0.1.0" +dependencies = [ + "trx-core", +] + +[[package]] +name = "trx-backend" +version = "0.1.0" +dependencies = [ + "serde", + "serde_json", + "tokio", + "tokio-serial", + "tracing", + "trx-backend-ft450d", + "trx-backend-ft817", + "trx-backend-soapysdr", + "trx-core", + "uuid", +] + +[[package]] +name = "trx-backend-ft450d" +version = "0.1.0" +dependencies = [ + "serde", + "tokio", + "tokio-serial", + "tracing", + "trx-core", +] + +[[package]] +name = "trx-backend-ft817" +version = "0.1.0" +dependencies = [ + "serde", + "tokio", + "tokio-serial", + "tracing", + "trx-core", +] + +[[package]] +name = "trx-backend-soapysdr" +version = "0.1.0" +dependencies = [ + "num-complex", + "rustfft", + "serde", + "soapysdr", + "tokio", + "tracing", + "trx-core", + "trx-rds", + "uuid", +] + +[[package]] +name = "trx-client" +version = "0.1.0" +dependencies = [ + "bytes", + "clap", + "cpal", + "dirs", + "flate2", + "opus", + "serde", + "serde_json", + "tokio", + "toml", + "tracing", + "trx-app", + "trx-core", + "trx-frontend", + "trx-frontend-http", + "trx-frontend-http-json", + "trx-frontend-rigctl", + "trx-protocol", + "uuid", +] + +[[package]] +name = "trx-configurator" +version = "0.1.0" +dependencies = [ + "clap", + "dialoguer", + "tempfile", + "tokio-serial", + "toml_edit 0.22.27", +] + +[[package]] +name = "trx-core" +version = "0.1.0" +dependencies = [ + "flate2", + "reqwest", + "serde", + "serde_json", + "sgp4", + "tokio", + "tracing", + "uuid", +] + +[[package]] +name = "trx-cw" +version = "0.1.0" +dependencies = [ + "trx-core", +] + +[[package]] +name = "trx-decode-log" +version = "0.1.0" +dependencies = [ + "chrono", + "dirs", + "serde", + "serde_json", + "tempfile", + "tracing", + "trx-core", +] + +[[package]] +name = "trx-frontend" +version = "0.1.0" +dependencies = [ + "bytes", + "serde_json", + "tokio", + "trx-core", + "trx-protocol", + "uuid", +] + +[[package]] +name = "trx-frontend-http" +version = "0.1.0" +dependencies = [ + "actix-web", + "actix-ws", + "base64", + "brotli 7.0.0", + "bytes", + "dirs", + "flate2", + "futures-util", + "hex", + "pickledb", + "rand 0.8.6", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tracing", + "trx-core", + "trx-frontend", + "trx-protocol", + "uuid", +] + +[[package]] +name = "trx-frontend-http-json" +version = "0.1.0" +dependencies = [ + "serde_json", + "tokio", + "tracing", + "trx-core", + "trx-frontend", + "trx-protocol", +] + +[[package]] +name = "trx-frontend-rigctl" +version = "0.1.0" +dependencies = [ + "tokio", + "tracing", + "trx-core", + "trx-frontend", + "trx-protocol", +] + +[[package]] +name = "trx-ftx" +version = "0.1.0" +dependencies = [ + "hound", + "num-complex", + "realfft", + "rustfft", +] + +[[package]] +name = "trx-protocol" +version = "0.1.0" +dependencies = [ + "serde", + "serde_json", + "trx-core", +] + +[[package]] +name = "trx-rds" +version = "0.1.0" +dependencies = [ + "rustfft", + "trx-core", +] + +[[package]] +name = "trx-reporting" +version = "0.1.0" +dependencies = [ + "serde", + "tokio", + "tracing", + "trx-core", +] + +[[package]] +name = "trx-server" +version = "0.1.0" +dependencies = [ + "base64", + "bytes", + "chrono", + "clap", + "cpal", + "dirs", + "flate2", + "num-complex", + "opus", + "pickledb", + "serde", + "serde_json", + "tokio", + "tokio-serial", + "toml", + "tracing", + "trx-ais", + "trx-app", + "trx-aprs", + "trx-backend", + "trx-core", + "trx-cw", + "trx-decode-log", + "trx-ftx", + "trx-protocol", + "trx-reporting", + "trx-vdes", + "trx-wefax", + "trx-wspr", + "trx-wxsat", + "uuid", +] + +[[package]] +name = "trx-vdes" +version = "0.1.0" +dependencies = [ + "num-complex", + "trx-core", +] + +[[package]] +name = "trx-wefax" +version = "0.1.0" +dependencies = [ + "base64", + "png", + "tracing", + "trx-core", +] + +[[package]] +name = "trx-wspr" +version = "0.1.0" + +[[package]] +name = "trx-wxsat" +version = "0.1.0" +dependencies = [ + "image", + "num-complex", + "rustfft", + "trx-core", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" + +[[package]] +name = "unescaper" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4064ed685c487dbc25bd3f0e9548f2e34bab9d18cefc700f9ec2dba74ba1138e" +dependencies = [ + "thiserror 2.0.18", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" +dependencies = [ + "getrandom 0.4.2", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.3+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +dependencies = [ + "wit-bindgen 0.57.1", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen 0.51.0", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f371d383f2fb139252e0bfac3b81b265689bf45b6874af544ffa4c975ac1ebf8" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.1", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + +[[package]] +name = "web-sys" +version = "0.3.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +dependencies = [ + "windows-core 0.54.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +dependencies = [ + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result 0.4.1", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.1", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "writeable" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + +[[package]] +name = "yoke" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.lock.license b/Cargo.lock.license new file mode 100644 index 0000000..bd55892 --- /dev/null +++ b/Cargo.lock.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2026 Stan Grams + +SPDX-License-Identifier: GPL-2.0-or-later diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..d39ad9d --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,48 @@ +# SPDX-FileCopyrightText: 2026 Stan Grams +# +# SPDX-License-Identifier: GPL-2.0-or-later + +[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" diff --git a/LICENSES/BSD-2-Clause.txt b/LICENSES/BSD-2-Clause.txt new file mode 100644 index 0000000..cbe01ea --- /dev/null +++ b/LICENSES/BSD-2-Clause.txt @@ -0,0 +1,9 @@ +Copyright (c) 2025 Stan Grams + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSES/GPL-2.0-or-later.txt b/LICENSES/GPL-2.0-or-later.txt new file mode 100644 index 0000000..9efa6fb --- /dev/null +++ b/LICENSES/GPL-2.0-or-later.txt @@ -0,0 +1,338 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Moe Ghoul, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..142433e --- /dev/null +++ b/README.md @@ -0,0 +1,147 @@ +
+ trx-rs logo + +# trx-rs + +A modular amateur radio control stack written in Rust. + +[![License](https://img.shields.io/badge/license-GPL--2.0--or--later-blue.svg)](LICENSES) + +
+ +`trx-rs` splits radio hardware access from user-facing interfaces so you can run +rig control, SDR DSP, decoding, audio streaming, and web access as separate, +composable pieces. + +| | | +|---|---| +| **Backends** | Yaesu FT-817, Yaesu FT-450D, SoapySDR | +| **Frontends** | Web UI, rigctl-compatible TCP, JSON-over-TCP | +| **Decoders** | AIS, APRS, CW, FT8, RDS, VDES, WSPR | +| **Audio** | Opus streaming between server, client, and browser | + +## Quick Start + +### 1. Install dependencies + +
+Debian / Ubuntu + +```bash +sudo apt install build-essential pkg-config cmake libopus-dev libasound2-dev +# Optional — SDR support +sudo apt install libsoapysdr-dev +``` +
+ +
+Fedora + +```bash +sudo dnf install gcc pkg-config cmake opus-devel alsa-lib-devel +# Optional — SDR support +sudo dnf install SoapySDR-devel +``` +
+ +
+Arch Linux + +```bash +sudo pacman -S base-devel pkgconf cmake opus alsa-lib +# Optional — SDR support +sudo pacman -S soapysdr +``` +
+ +
+macOS (Homebrew) + +```bash +brew install cmake opus +# Optional — SDR support +brew install soapysdr +``` +
+ +See [Build Requirements](https://github.com/sgrams/trx-rs/wiki/User-Manual#build-requirements) +in the wiki for details on each library. + +> **Note:** `cmake` is required even when a system Opus library is installed. +> The `audiopus_sys` crate probes for Opus via `pkg-config`; if it is not found +> (or `pkg-config` is unavailable), it falls back to compiling a vendored copy +> of Opus with CMake. A missing `cmake` therefore fails the build with +> `is cmake not installed?` rather than a missing-Opus error. + +### 2. Build + +```bash +cargo build --release +``` + +Build without SDR support: `cargo build --release --no-default-features` + +### 3. Configure + +Run the interactive setup wizard to generate config files for your station: + +```bash +./target/release/trx-configurator +``` + +The wizard walks you through rig selection, serial port detection, audio +settings, and frontend options, then writes `trx-server.toml` and +`trx-client.toml`. + +Alternatively, generate example configs and edit them by hand: + +```bash +./target/release/trx-server --print-config > trx-server.toml +./target/release/trx-client --print-config > trx-client.toml +``` + +### 4. Run + +```bash +./target/release/trx-server --config trx-server.toml +./target/release/trx-client --config trx-client.toml +``` + +Open the configured HTTP frontend address in a browser (default `http://localhost:8080`). + +## How It Works + +```mermaid +graph TD + SDR1["SDR #1"] & SDR2["SDR #2"] <-->|USB| S1["trx-server A"] + SDR3["SDR #3"] & FT817["FT-817"] <-->|USB / serial| S2["trx-server B"] + + S1 <-->|"JSON-TCP :4530"| C1["trx-client"] + S1 -->|"Opus-TCP per rig"| C1 + S2 <-->|"JSON-TCP :4530"| C1 + S2 -->|"Opus-TCP per rig"| C1 + + C1 <-->|internal channels| F1["Web UI :8080"] + C1 <-->|internal channels| F2["rigctl :4532"] +``` + +Each `trx-server` owns one or more rigs and runs DSP, decoding, and audio capture locally. +A `trx-client` connects to any number of servers over TCP and exposes them through +a unified set of frontends. + +## Documentation + +| Resource | Description | +|----------|-------------| +| [User Manual](https://github.com/sgrams/trx-rs/wiki/User-Manual) | Configuration, features, and usage | +| [Architecture](https://github.com/sgrams/trx-rs/wiki/Architecture) | System design, crate layout, data flow, and internals | +| [Optimization Guidelines](https://github.com/sgrams/trx-rs/wiki/Optimization-Guidelines) | Performance guidelines for the real-time DSP pipeline | +| [Planned Features](https://github.com/sgrams/trx-rs/wiki/Planned-Features) | Roadmap and design notes | +| [Contributing](CONTRIBUTING.md) | Commit conventions, workflow, and code style | + +## License + +GPL-2.0-or-later. See [`LICENSES`](LICENSES) for the full license text and +bundled third-party license files. Bundled third-party components (Leaflet and +the Leaflet AIS tracksymbol plugin under `assets/web/vendor/`) retain their +original BSD-2-Clause license. diff --git a/assets/trx-logo.png b/assets/trx-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0109d7f3f63792ac72af240dc8b81f08eb0f205d GIT binary patch literal 1571326 zcmeAS@N?(olHy`uVBq!ia0y~yU||4Z4mJh`hI(1;W(G!`@5zZy5gZWx`s)qX(>sGCTXe31`G@gj0d5{X+n%kEXJ@@FR{2dwWuUBKd+d9 zfq~&EiiV{8A}kt`!K(Gjj6fQ;Bq!w;Elf{@2sSNFgRpWy&eTgTN=+q_QBj!Y!kuq`*pFKeGTT)HePGq1QLF)umQ)1^YEBDcUQGc(1?G||l1EHx=r*TTZo zMAyVLFcMm5=%=m^gy8-UsRlGpl6_G@ISLSGd(Y{q_ilt!nZgzCrugT{xn;C zkScwWk}p_`9^AMhXj+O#q}QfJ$)!a(61gEe_vx6or}UQ*QijFe=nlFX8v)XdD>#Pn3Xg1mI31j4{z^cNIZ3=9mA zbZL}~CAY%EgMop;=qxC#8YOGFc51HiIUGwyFBIj2FK>wIXu;| zM~l6^Hyik}acHwKva+%>GO{=t*c;fw_y&w^hS1`zEK#on5{7!o`MLV3SxL!>`URy) zIho1jsY&|9C5a`a#rpZl#RUekAp2BV#0*4W<}kCsSt<}|J{B<+kyCNPdOFgki*l1( zeT|)2lip1Jp#_dHS$>e)S(usF8_?pPxrvdHp)$j++V*kN!<(@?cjWC}cwNZl!gLYM zuk69Pm%sm7e)*H_L&29!kKCm$PyCz_r}_8Q*_y7nx3AsgKRk2v+IfdLbJhBzQO-AA zPcy9V{cGW}&uoVI#+RF4@6~-7vCLe2^81Bx=|}jTmz13hRq$lHzfr1p)^>3w zsaoc$niTn6fo%)^&23EDcV}gX=eq+J|EO)1?iD_n?f1yQ{oa?pD}ukpZ8X+2dldRa z`lNhHIkx5%^Wyd1d$WEl(Q3|`eC}ClPi&_mx9QZJi53L~sk%#3cfC8d;IiKPb$i#@ zx^eA|XA%9PK1<;JESII*962=q>UTIy+N1YZb zJ-_bvJ@xzBp2mgqQ#>9Y@^(pTe_e z|Joh-_sWfMpA&1}FD#UA&5?h8L-xa7ttTdF9s6bqZ>ZgPKQZ_0zPxLn@4qk>57zq6 zTsm#>tlQ7Uv?j_*9QWSFEEsa_^UPy~-IMnf1nm@hdaSiJL*gLQrhF!5Mh3>k$p(oA z{Gi+h&g-lO%#4ixQL=l)u8%7}@jiEDbc>LV*B#o z#081-m-)56`uyR9?d_iD6T(F|#MewTOP;(kBkZN?aer%dk*+zDvKeEWwAtNHUt|fh zUwy?{TF*r6)urGIi+H)7_D⁡gj6`|7Kzv+o5XT=%{+W!pL}wtN+U$_T8VWY3z{n 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

lXRBFe@L|i&0u|B=UcN{fi7% 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

e#;Z*-GsQMC&M-Xi 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≤;mq}Z?D4V7C@!r!Gd9gk#UnIJ9iCw?A_P~Os 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%0A7}lC-~To2zTfm$ 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

=&k>J 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†IQY{w~Ju@AUuw^#8VAxmj0d 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 mW6!=#sP*BaqoQ%wJsDCmFY6UG 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∾qe-WeHrt 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

    >lJ*F={N;ivKN{_nl+2 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

    Hrd;a&@f1Ff*?xUda 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 literal 0 HcmV?d00001 diff --git a/docs/Architecture.md b/docs/Architecture.md new file mode 100644 index 0000000..82d7f0b --- /dev/null +++ b/docs/Architecture.md @@ -0,0 +1,1087 @@ +# trx-rs Architecture + +## Table of Contents + +1. [Project Purpose](#project-purpose) +2. [Technology Stack](#technology-stack) +3. [High-Level Architecture](#high-level-architecture) +4. [Crate Layout](#crate-layout) +5. [Core Library (trx-core)](#core-library-trx-core) +6. [Protocol Layer (trx-protocol)](#protocol-layer-trx-protocol) +7. [Server (trx-server)](#server-trx-server) +8. [Backend Abstraction (trx-backend)](#backend-abstraction-trx-backend) +9. [Client (trx-client)](#client-trx-client) +10. [Frontend System (trx-frontend)](#frontend-system-trx-frontend) +11. [Signal Decoders](#signal-decoders) +12. [DSP & Spectrum Pipeline](#dsp--spectrum-pipeline) +13. [Plugin System](#plugin-system) +14. [Configuration](#configuration) +15. [Concurrency Model](#concurrency-model) +16. [Authentication & Security](#authentication--security) +17. [Data Flow Diagrams](#data-flow-diagrams) + +--- + +## Project Purpose + +**trx-rs** is a modular amateur radio transceiver control daemon written in Rust. It separates radio hardware access (server) from user-facing control interfaces (client), enabling: + +- **Remote control** of transceivers over TCP networks +- **Multi-rig operation** with per-rig isolation and routing +- **SDR integration** with real-time DSP (demodulation, spectrum, decode) +- **Pluggable backends** for different radio hardware +- **Multiple frontends** — web UI, Hamlib-compatible rigctl, JSON-over-TCP +- **Signal decoding** — APRS, CW, FT8, WSPR, RDS — with live streaming and logging +- **Uplinks** — PSKReporter, APRS-IS IGate + +Target users are amateur radio operators who want networked, automated, or multi-radio control from a single host or across a LAN. + +--- + +## Technology Stack + +| Layer | Technology | +|-------|-----------| +| Language | Rust (2021 edition) | +| Async runtime | Tokio | +| Web framework | Actix-web (HTTP frontend) | +| Serialization | Serde / JSON | +| Config format | TOML | +| Audio codec | Opus | +| SDR interface | soapysdr crate (wraps SoapySDR C library) | +| CAT serial | tokio-serial | +| CLI | clap | +| Logging | tracing / tracing-subscriber | +| FTx decode | trx-ftx (pure Rust) | + +--- + +## High-Level Architecture + +```mermaid +graph TD + subgraph server["trx-server"] + HW["Radio Hardware"] <-->|"CAT protocol
    serial / TCP"| Backend["Rig Backend
    (ft817 / ft450d / sdr)"] + Backend --> RigTask["rig_task.rs
    (state machine)"] + RigTask --> Listener["listener.rs
    (JSON TCP :4530)"] + RigTask --> Audio["audio.rs
    (Opus :4531)"] + Audio --> Decoders["Decoders
    (APRS, CW, FT8, WSPR, RDS)"] + Decoders --> Uplinks["PSKReporter / APRS-IS"] + end + + subgraph client["trx-client"] + Remote["remote_client.rs
    (polls state, routes commands)"] + Remote <-->|"mpsc / watch channels"| HTTP["trx-frontend-http
    (Web UI :8080)"] + Remote <-->|"mpsc / watch channels"| Rigctl["trx-frontend-rigctl
    (rigctl :4532)"] + Remote <-->|"mpsc / watch channels"| JSON["trx-frontend-http-json
    (JSON/TCP)"] + end + + Listener <-->|"JSON TCP :4530"| Remote + Audio -->|"Opus TCP :4531"| Remote + + HTTP & Rigctl & JSON <--> Users["End Users
    (Browser / Hamlib / Custom tools)"] +``` + +The server and client are separate binaries. They communicate over **JSON-over-TCP** (control) and **Opus-encoded TCP** (audio). Both binaries can load shared-library plugins at startup. + +--- + +## Crate Layout + +``` +trx-rs/ # Workspace root +├── Cargo.toml # Workspace manifest (shared dependencies) +│ +└── src/ + ├── trx-core/ # Core types, traits, state machine + ├── trx-protocol/ # Client↔server message types, auth, codec + ├── trx-app/ # Shared app helpers (config loading, plugins, logging) + │ + ├── trx-server/ # Server binary + │ ├── src/ + │ │ ├── main.rs + │ │ ├── config.rs + │ │ ├── rig_task.rs # Per-rig polling loop + │ │ ├── listener.rs # JSON TCP server (:4530) + │ │ ├── audio.rs # Opus audio server (:4531) + │ │ ├── pskreporter.rs # PSKReporter uplink + │ │ └── aprsfi.rs # APRS-IS IGate uplink + │ │ + │ └── trx-backend/ # Backend abstraction + factory + │ ├── src/lib.rs # RegistrationContext, RigAccess enum + │ ├── trx-backend-ft817/ # Yaesu FT-817 CAT + │ ├── trx-backend-ft450d/ # Yaesu FT-450D CAT + │ └── trx-backend-soapysdr/ # SoapySDR SDR (RX-only) + │ ├── src/ + │ │ ├── lib.rs # SoapySdrRig impl + │ │ ├── real_iq_source.rs + │ │ ├── dsp/ # DSP pipeline, FIR, oscillator, AGC + │ │ ├── demod/ # AM, FM, WFM, SSB, CW demodulators + │ │ └── spectrum.rs # FFT spectrum generation + │ + ├── trx-client/ # Client binary + │ ├── src/ + │ │ ├── main.rs + │ │ ├── config.rs + │ │ ├── remote_client.rs # TCP connection to server + │ │ └── audio_client.rs # Audio stream handler + │ │ + │ └── trx-frontend/ # Frontend abstraction + registration + │ ├── src/lib.rs # FrontendSpawner trait, FrontendRuntimeContext + │ ├── trx-frontend-http/ # Actix-web: REST + SSE + WebSocket + │ ├── trx-frontend-http-json/ # JSON-over-TCP thin control frontend + │ └── trx-frontend-rigctl/ # Hamlib-compatible rigctl TCP (:4532) + │ + └── decoders/ + ├── trx-aprs/ # APRS packet decoder + ├── trx-cw/ # CW / Morse decoder + ├── trx-ftx/ # Pure Rust FTx decoder (FT8/FT4/FT2) + ├── trx-wspr/ # WSPR beacon decoder + ├── trx-rds/ # FM RDS decoder + └── trx-decode-log/ # JSON Lines log rotation for decoded frames +``` + +--- + +## Core Library (trx-core) + +**Path:** `src/trx-core/src/` + +The foundation of the system. All other crates depend on trx-core for shared types and traits. + +### Key Re-exports (`lib.rs`) + +```rust +pub use rig::command::RigCommand; +pub use rig::request::RigRequest; +pub use rig::response::{RigError, RigResult}; +pub use rig::state::{RigMode, RigSnapshot, RigState, RigFilterState, SpectrumData}; +pub use rig::AudioSource; +pub use decode::DecodedMessage; +pub use audio::AudioStreamInfo; +``` + +### Rig State (`rig/state.rs`) + +The `RigState` struct is the canonical snapshot of a rig at any point in time: + +```rust +pub struct RigState { + pub rig_info: Option, + pub status: RigStatus, + pub initialized: bool, + pub control: RigControl, + pub server_callsign: Option, + pub spectrum: Option, // FFT frame from SDR + pub filter: Option, // Runtime DSP parameters + // ... decoder enable flags, CW params, etc. +} + +pub struct RigStatus { + pub freq: Freq, + pub mode: RigMode, + pub tx_en: bool, + pub vfo: Option, + pub tx: Option, // power, SWR, ALC + pub rx: Option, // signal strength + pub lock: Option, +} + +pub enum RigMode { + LSB, USB, CW, CWR, AM, WFM, FM, DIG, PKT, Other(String) +} +``` + +### Rig Commands (`rig/command.rs`) + +All control actions are represented as enum variants: + +```rust +pub enum RigCommand { + // Basic control + GetSnapshot, SetFreq(Freq), SetMode(RigMode), SetPtt(bool), + PowerOn, PowerOff, ToggleVfo, Lock, Unlock, + // TX + GetTxLimit, SetTxLimit(u8), + // Decoders + SetAprsDecodeEnabled(bool), SetCwDecodeEnabled(bool), + SetFt8DecodeEnabled(bool), SetWsprDecodeEnabled(bool), + ResetAprsDecoder, ResetCwDecoder, ResetFt8Decoder, ResetWsprDecoder, + // CW keyer + SetCwAuto(bool), SetCwWpm(u32), SetCwToneHz(u32), + // SDR DSP + SetBandwidth(u32), SetFirTaps(u32), SetSdrGain(f64), + SetCenterFreq(Freq), GetSpectrum, + // WFM + SetWfmDeemphasis(u32), SetWfmStereo(bool), SetWfmDenoise(bool), +} +``` + +### State Machine (`rig/controller/machine.rs`) + +Manages the lifecycle of a rig connection: + +``` +Disconnected → Connecting → Initializing → PoweredOff + ↘ + Ready ⇄ Transmitting + ↓ + Error + ↓ (recoverable) + Connecting +``` + +```rust +pub enum RigMachineState { + Disconnected, + Connecting, + Initializing, + PoweredOff, + Ready, + Transmitting, + Error(RigStateError), +} +``` + +Transitions are triggered by `RigEvent` (Connected, PoweredOn, PttOn, Error, etc.) and processed by `process_event(&mut self, event: RigEvent)`. + +### Command Handlers (`rig/controller/handlers.rs`) + +Each command implements `RigCommandHandler`: + +```rust +pub trait RigCommandHandler: Debug + Send + Sync { + fn name(&self) -> &'static str; + fn can_execute(&self, ctx: &dyn CommandContext) -> ValidationResult; + fn execute<'a>( + &'a self, executor: &'a mut dyn CommandExecutor + ) -> Pin> + Send + 'a>>; +} + +pub enum ValidationResult { + Ok, + InvalidState(String), // Wrong machine state + InvalidParams(String), // Bad parameters + Locked, // Rig is locked +} +``` + +### Event System (`rig/controller/events.rs`) + +Observers subscribe via the `RigListener` trait. `RigEventEmitter` maintains a list of `Arc` and calls them on state changes. + +```rust +pub trait RigListener: Send + Sync { + fn on_frequency_change(&self, old: Option, new: Freq) {} + fn on_mode_change(&self, old: Option<&RigMode>, new: &RigMode) {} + fn on_ptt_change(&self, transmitting: bool) {} + fn on_state_change(&self, old: &RigMachineState, new: &RigMachineState) {} + fn on_meter_update(&self, rx: Option<&RigRxStatus>, tx: Option<&RigTxStatus>) {} + fn on_lock_change(&self, locked: bool) {} + fn on_power_change(&self, powered: bool) {} +} +``` + +### Operational Policies (`rig/controller/policies.rs`) + +Govern reconnection and polling behaviour: + +```rust +pub trait RetryPolicy: Send { + fn next_delay(&mut self) -> Duration; +} + +pub struct ExponentialBackoff { + max_attempts: u32, + base_delay: Duration, + max_delay: Duration, + // Delays include ±25% randomized jitter to prevent thundering herd +} + +pub trait PollingPolicy: Send { + fn next_interval(&mut self) -> Duration; +} + +pub struct AdaptivePolling { + idle_interval: Duration, + tx_interval: Duration, // faster polling during TX +} +``` + +### Audio Wire Format (`audio.rs`) + +``` +[ 1 byte type ][ 4 bytes BE length ][ N bytes payload ] + +Types: + 0x00 AudioStreamInfo (sample rate, channels, frame duration) + 0x01 RX audio frame (Opus-encoded PCM) + 0x02 TX audio frame (Opus-encoded PCM) + 0x03 APRS decode + 0x04 CW decode + 0x05 FT8 decode + 0x06 WSPR decode +``` + +### Error Types (`rig/response.rs`) + +```rust +pub struct RigError { + pub message: String, + pub kind: RigErrorKind, +} + +pub enum RigErrorKind { + Transient, // Retry-able (timeout, busy) + Permanent, // Don't retry (unsupported operation) +} + +pub type RigResult = Result; +pub type DynResult = Result>; +``` + +--- + +## Protocol Layer (trx-protocol) + +**Path:** `src/trx-protocol/src/` + +Bridges the internal `RigCommand`/`RigState` world to JSON messages exchanged over TCP. + +### Message Types (`types.rs`) + +```rust +// Client → Server +pub struct ClientEnvelope { + pub token: Option, // Auth token + pub rig_id: Option, // Multi-rig routing (None = default rig) + pub cmd: ClientCommand, +} + +pub enum ClientCommand { + GetState, GetRigs, + SetFreq { freq_hz: u64 }, SetCenterFreq { freq_hz: u64 }, + SetMode { mode: String }, SetPtt { ptt: bool }, + PowerOn, PowerOff, ToggleVfo, Lock, Unlock, + GetTxLimit, SetTxLimit { limit: u8 }, + SetBandwidth { bandwidth_hz: u32 }, SetFirTaps { taps: u32 }, + SetSdrGain { gain_db: f64 }, + SetWfmDeemphasis { deemphasis_us: u32 }, + SetWfmStereo { enabled: bool }, SetWfmDenoise { enabled: bool }, + SetAprsDecodeEnabled { enabled: bool }, /* ... other decoders ... */ + GetSpectrum, + // ... +} + +// Server → Client +pub struct ClientResponse { + pub success: bool, + pub rig_id: Option, + pub state: Option, // Updated rig state + pub rigs: Option>, // Response to GetRigs + pub error: Option, +} + +pub struct RigEntry { + pub rig_id: String, + pub display_name: Option, + pub state: RigSnapshot, + pub audio_port: Option, +} +``` + +### Type Mapping (`mapping.rs`) + +`client_command_to_rig(ClientCommand) → RigCommand` and the reverse conversion ensure the protocol types stay decoupled from the core domain model. + +### Authentication (`auth.rs`) + +```rust +pub trait TokenValidator: Send + Sync { + fn validate(&self, token: &str) -> bool; +} + +pub struct SimpleTokenValidator { tokens: HashSet } +pub struct NoAuthValidator; // Always returns true (debug/local use) +``` + +--- + +## Server (trx-server) + +**Path:** `src/trx-server/src/` + +### Startup Sequence + +1. Parse CLI / TOML config (`config.rs`) +2. Register backends via `RegistrationContext` (built-ins + plugins) +3. For each configured rig: + - Build or pre-configure the rig backend + - Spawn `run_rig_task()` as a Tokio task +4. Spawn `run_listener()` (JSON TCP on `:4530`) +5. Spawn audio streaming server (`:4531`) +6. Wait for shutdown signal + +### Multi-Rig Routing + +Rigs are stored in `Arc>`. Each `RigHandle` contains: +- `mpsc::Sender` — send commands to the rig task +- `watch::Receiver` — read latest state + +`listener.rs` routes incoming `ClientEnvelope.rig_id` to the correct handle. If `rig_id` is absent, the server's default rig is used. + +Auto-generated IDs follow the pattern `{model}_{index}` (e.g., `ft817_0`, `soapysdr_1`) when not explicitly set in config. + +### Rig Task (`rig_task.rs`) + +Each rig runs an independent async loop: + +``` +connect → initialize → poll loop + ↓ on error + retry with ExponentialBackoff + ↓ on persistent error + Error state → wait for recovery +``` + +The task: +- Drives the `RigStateMachine` through state transitions +- Polls rig status at `AdaptivePolling` intervals (faster during TX) +- Handles incoming `RigCommand`s from `mpsc::Receiver` +- Broadcasts `RigState` snapshots via `watch::Sender` + +### JSON TCP Listener (`listener.rs`) + +Accepts connections on port 4530. Per connection: +1. Read newline-delimited JSON (`ClientEnvelope`) +2. Validate token +3. Route to rig by `rig_id` +4. Convert `ClientCommand → RigCommand` and send to rig task +5. Await result and return `ClientResponse` + +### Audio Server (`audio.rs`) + +Separate TCP listener on port 4531. Per connection: +1. Send `AudioStreamInfo` header +2. Send buffered decoder history (APRS, CW, FT8, WSPR, RDS frames) +3. Stream Opus-encoded RX audio frames as they arrive +4. Interleave decoder messages (`0x03`–`0x06` frame types) + +`DecoderHistories` maintains ring buffers of recent decoded events so late-connecting clients get context. + +### Uplinks + +| Module | Purpose | +|--------|---------| +| `pskreporter.rs` | Posts FT8/WSPR spots to pskreporter.net | +| `aprsfi.rs` | Forwards APRS packets to APRS-IS network (IGate) | + +Both are optional, configured per-rig. + +--- + +## Backend Abstraction (trx-backend) + +**Path:** `src/trx-server/trx-backend/` + +### Factory Pattern (`src/lib.rs`) + +```rust +pub enum RigAccess { + Serial { path: String, baud: u32 }, + Tcp { addr: String }, + Sdr { args: String }, +} + +type BackendFactory = fn(RigAccess) -> DynResult>; + +pub struct RegistrationContext { + factories: HashMap, +} + +impl RegistrationContext { + pub fn register_backend(&mut self, name: &str, factory: BackendFactory); + pub fn build_rig(&self, name: &str, access: RigAccess) -> DynResult>; +} +``` + +Built-in registrations (via `register_builtin_backends_on`): +- `"ft817"` → `Ft817::new` +- `"ft450d"` → `Ft450d::new` +- `"soapysdr"` → `SoapySdrRig::new_from_config(SoapySdrConfig { ... })` (if `soapysdr` feature enabled) + +### RigCat Trait (from trx-core) + +All backends implement `RigCat`: + +```rust +pub trait RigCat: Rig { + async fn get_status(&mut self) -> RigResult; + async fn set_freq(&mut self, freq: Freq) -> RigResult<()>; + async fn set_mode(&mut self, mode: RigMode) -> RigResult<()>; + async fn set_ptt(&mut self, on: bool) -> RigResult<()>; + async fn power_on(&mut self) -> RigResult<()>; + async fn power_off(&mut self) -> RigResult<()>; + async fn toggle_vfo(&mut self) -> RigResult<()>; + // ... more operations +} +``` + +### FT-817 Backend (`trx-backend-ft817/`) + +- CAT protocol over serial (9600 baud default) +- BCD-encoded frequency/mode commands +- VFO A/B tracking +- Meter reads: S-meter, TX power, SWR, ALC +- Bands: 160m through 70cm + GHz receive + +### FT-450D Backend (`trx-backend-ft450d/`) + +- Similar structure to FT-817 +- Uses FT-450D-specific CAT command set + +### SoapySDR Backend (`trx-backend-soapysdr/`) + +RX-only SDR backend with real-time DSP: + +```rust +pub struct SoapySdrRig { + freq: Freq, + mode: RigMode, + pipeline: dsp::SdrPipeline, // Multi-channel DSP + bandwidth_hz: u32, + fir_taps: u32, + spectrum_buf: Arc>>>, + center_offset_hz: i64, + wfm_deemphasis_us: u32, + wfm_stereo: bool, + wfm_denoise: bool, + gain_db: f64, +} +``` + +--- + +## Client (trx-client) + +**Path:** `src/trx-client/src/` + +### Startup Sequence + +1. Parse CLI / TOML config +2. Register frontends via `FrontendRegistrationContext` (built-ins + plugins) +3. Spawn `run_remote_client()` — connects to server, drives `watch::Sender` +4. Spawn enabled frontends (HTTP, rigctl, http-json) +5. Wait for shutdown + +### Remote Client (`remote_client.rs`) + +Maintains the server TCP connection: + +```rust +pub struct RemoteClientConfig { + pub addr: String, + pub token: Option, + pub selected_rig_id: Arc>>, + pub known_rigs: Arc>>, + pub poll_interval: Duration, + pub spectrum: Arc>, +} +``` + +Workflow: +1. Connect to `addr` (host:4530) +2. Poll `GetState` at configured interval (default 750 ms) +3. Poll `GetSpectrum` at ~40 ms (25 fps) if backend supports it +4. Forward commands from frontends (`mpsc::Receiver`) to server +5. Broadcast received `RigState` to all frontends via `watch::Sender` + +Multi-rig: `selected_rig_id` can be changed at runtime to switch which rig the client targets. `known_rigs` is populated by periodic `GetRigs` calls. + +### Audio Client (`audio_client.rs`) + +Connects to the audio port (`:4531`) and relays: +- Opus-encoded audio frames → local PCM broadcast channel +- Decoder messages → frontend display + +--- + +## Frontend System (trx-frontend) + +**Path:** `src/trx-client/trx-frontend/` + +### Abstraction (`src/lib.rs`) + +```rust +pub trait FrontendSpawner { + fn spawn_frontend( + state_rx: watch::Receiver, + rig_tx: mpsc::Sender, + callsign: Option, + listen_addr: SocketAddr, + context: Arc, + ) -> JoinHandle<()>; +} + +pub struct FrontendRuntimeContext { + pub rigctl_clients: AtomicUsize, + pub rigctl_addr: Option, + pub http_clients: AtomicUsize, + pub known_rigs: Arc>>, + pub selected_rig_id: Arc>>, + pub spectrum: Arc>, +} +``` + +### HTTP Frontend (`trx-frontend-http/`) + +Built on **Actix-web**, serves a browser-based control panel. + +**REST Endpoints:** + +| Method | Path | Description | +|--------|------|-------------| +| GET | `/status` | Current rig state + frontend metadata | +| POST | `/cmd/{command}` | Execute a rig command | +| GET | `/events` | SSE stream of state changes | +| GET | `/audio` | WebSocket audio stream | +| GET | `/favicon.png` | Static asset | + +**Web UI features:** frequency display/entry, mode selector, PTT indicator, S-meter/TX-power/SWR meters, decoder toggles, decode history, spectrum waterfall (SDR), rig picker (multi-rig). + +### Rigctl Frontend (`trx-frontend-rigctl/`) + +Hamlib-compatible plaintext TCP interface on port 4532. Allows WSJT-X, JS8Call, and other Hamlib-aware applications to control the rig without modification. + +### HTTP-JSON Frontend (`trx-frontend-http-json/`) + +JSON-over-TCP frontend on an ephemeral (or configured) port. Thin wrapper that passes `ClientCommand`/`ClientResponse` pairs — useful for scripting or automation tools. + +--- + +## Signal Decoders + +**Path:** `src/decoders/` + +All decoders run as background Tokio tasks inside `trx-server`. They subscribe to the PCM audio broadcast channel from the active rig and publish decoded messages. + +| Crate | Decoder | Notes | +|-------|---------|-------| +| `trx-aprs` | APRS (AX.25) | Forwards to APRS-IS if enabled | +| `trx-cw` | CW / Morse | Auto WPM detection | +| `trx-ftx` | FTx | Pure Rust FT8/FT4/FT2 decoder; posts to PSKReporter | +| `trx-wspr` | WSPR beacons | Posts to PSKReporter | +| `trx-rds` | FM RDS | Station name, radiotext, time | +| `trx-decode-log` | Logging infrastructure | JSON Lines, date-rotated files | + +Control commands (e.g., `SetAprsDecodeEnabled(bool)`, `ResetCwDecoder`) are routed through `rig_task.rs` to the active decoder tasks. + +Decoded events are multiplexed onto the audio stream wire protocol (`0x03`–`0x06` frame types) and also buffered in `DecoderHistories` for replay to newly connected clients. + +--- + +## DSP & Spectrum Pipeline + +**Path:** `src/trx-server/trx-backend/trx-backend-soapysdr/src/` + +### Architecture + +``` +IQ Samples (from SoapySDR device) + ↓ +SdrPipeline (per-channel) + ├── Channel 0: Mixer → FIR Filter → Demod → AGC → PCM + ├── Channel 1: Mixer → FIR Filter → Demod → AGC → PCM + └── ... + ↓ +Audio broadcast channel (Vec) + ↓ +Decoders / Audio server +``` + +### Demodulators (`demod/`) + +| Module | Mode | +|--------|------| +| `am.rs` | AM (envelope detection) | +| `fm.rs` | Narrowband FM | +| `wfm.rs` | Wideband FM (stereo + deemphasis + denoise) | +| `ssb.rs` | LSB and USB | +| `cw.rs` | CW (Morse, beat-frequency oscillator) | + +WFM demodulator supports: +- Stereo pilot detection and L+R/L−R matrix decoding +- Configurable de-emphasis time constant (50 us EU / 75 us US) +- Optional noise reduction + +### Spectrum (`spectrum.rs`) + +Real-time FFT of the mixer output is stored in `spectrum_buf` and snapshotted on demand: + +```rust +pub struct SpectrumData { + pub magnitudes: Vec, // FFT magnitude bins (linear) + pub low_hz: f64, + pub high_hz: f64, + pub center_hz: f64, +} +``` + +Clients poll via `RigCommand::GetSpectrum` → `ClientCommand::GetSpectrum`. The remote client polls at ~25 fps and caches in `SharedSpectrum`. The HTTP frontend reads this cache to drive the waterfall display. + +--- + +## Plugin System + +**Path:** `src/trx-app/src/plugins.rs` + +Both `trx-server` and `trx-client` support dynamic plugins loaded at startup. + +### Search Paths (in order) + +1. `./plugins/` +2. `~/.config/trx-rs/plugins/` +3. Directories in `TRX_PLUGIN_DIRS` environment variable (`:` on Unix, `;` on Windows) + +### Backend Plugins + +Export symbol: `trx_register_backend(context: *mut RegistrationContext)` + +Plugins call `context.register_backend("my-rig", factory_fn)` to add new rig drivers without rebuilding the server binary. + +### Frontend Plugins + +Export symbol: `trx_register_frontend(context: *mut FrontendRegistrationContext)` + +Plugins call `context.register_frontend("my-ui", spawner_fn)` to add new control interfaces. + +An example plugin is provided at `examples/trx-plugin-example/` (not a workspace member). + +--- + +## Configuration + +**Format:** TOML. Generated with `--print-config` flag. + +**Search order:** +1. `--config ` CLI argument +2. `./trx-server.toml` / `./trx-client.toml` +3. `~/.config/trx-rs/trx-server.toml` +4. `/etc/trx-rs/trx-server.toml` + +### Server Config Structure + +```toml +[general] +callsign = "W5XYZ" +log_level = "info" +latitude = 35.5 +longitude = -97.5 + +[listen] +addr = "127.0.0.1" +port = 4530 +audio_port = 4531 + +[rig] # Legacy single-rig flat config +model = "ft817" +[rig.access] +type = "serial" +path = "/dev/ttyUSB0" +baud = 9600 + +[behavior] +max_retries = 3 +retry_delay_secs = 1 +polling_interval_ms = 250 + +[audio] +sample_rate = 48000 +frame_duration_ms = 20 +dev = "" # CPAL device name (empty = default) + +[sdr] # SoapySDR global params +args = "driver=rtlsdr" +sample_rate = 2000000 +bandwidth_hz = 2000000 +gain_mode = "manual" +gain_db = 25.0 +center_offset_hz = 0 + +[[sdr.channels]] +if_hz = 0 +mode = "USB" +audio_bandwidth_hz = 2800 +fir_taps = 64 + +[pskreporter] +enabled = true +callsign = "W5XYZ" +gridsquare = "EM13AH" + +[aprsfi] +enabled = true +callsign = "W5XYZ-11" + +[decode_logs] +enabled = true +dir = "~/.trx-rs/decode-logs" + +# Multi-rig (takes priority over flat [rig] section) +[[rigs]] +id = "ft817_0" +name = "HF Transceiver" +[rigs.rig] +model = "ft817" +[rigs.rig.access] +type = "serial" +path = "/dev/ttyUSB0" +baud = 9600 + +[[rigs]] +id = "sdr_0" +name = "VHF/UHF SDR" +[rigs.rig] +model = "soapysdr" +[rigs.rig.access] +type = "sdr" +args = "driver=rtlsdr" +``` + +### Client Config Structure + +```toml +[remote] +url = "localhost:4530" +rig_id = "" # Empty = server default rig +poll_interval_ms = 750 + +[remote.auth] +token = "" + +[frontends.http] +enabled = true +listen = "127.0.0.1" +port = 8080 + +[frontends.rigctl] +enabled = true +listen = "127.0.0.1" +port = 4532 + +[frontends.http_json] +enabled = false +port = 0 +``` + +--- + +## Concurrency Model + +The system is built on **Tokio** and uses channels for all cross-task communication: + +| Channel | Type | Purpose | +|---------|------|---------| +| `rig_tx` / `rig_rx` | `mpsc` | Frontend → rig task (commands) | +| `state_tx` / `state_rx` | `watch` | Rig task → frontends (state updates) | +| `audio_tx` / `audio_rx` | `broadcast` | Rig → decoders / audio server (PCM frames) | +| `shutdown_tx` / `shutdown_rx` | `watch` | Main → all tasks (graceful shutdown signal) | + +### Task Tree (server) + +``` +main + ├── rig_task [per rig] — polls hardware, drives state machine + ├── listener — accepts JSON TCP connections + │ └── per-connection task — reads commands, sends responses + ├── audio_server — accepts audio TCP connections + │ └── per-connection task — streams Opus frames + ├── decoder tasks — APRS, CW, FT8, WSPR, RDS + ├── pskreporter — uplink task + └── aprsfi — uplink task +``` + +### Task Tree (client) + +``` +main + ├── remote_client — polls server, maintains state_tx + ├── audio_client — streams audio from server + ├── http_frontend — Actix-web server + ├── rigctl_frontend — Hamlib TCP server + └── http_json_frontend — JSON-over-TCP server +``` + +--- + +## Authentication & Security + +### Token-Based Auth (JSON TCP) + +- Clients include `token` in every `ClientEnvelope` +- Server validates via `TokenValidator` trait +- `SimpleTokenValidator` — `HashSet` loaded from config +- `NoAuthValidator` — always passes (debug / local-only mode) + +### HTTP Frontend Auth + +- Optional token or HTTP Basic Auth middleware +- Configured in `[frontends.http.auth]` +- Rate limiting supported + +### Transport Security + +No built-in TLS. For remote use, tunnel over SSH or place behind a TLS-terminating reverse proxy (nginx, Caddy, etc.). + +--- + +## Data Flow Diagrams + +### Command Flow (set frequency) + +``` +Browser → POST /cmd/set_freq?hz=14225000 + ↓ trx-frontend-http +RigRequest::Command(RigCommand::SetFreq(14225000)) + ↓ mpsc channel (rig_tx) +remote_client.rs + ↓ TCP +listener.rs (server) + ↓ mpsc channel +rig_task.rs → backend.set_freq(14225000) + ↓ CAT serial / SoapySDR API +Radio hardware + ↑ ACK +rig_task.rs updates RigState → watch::Sender + ↑ TCP +remote_client.rs receives ClientResponse + ↑ watch::Sender +trx-frontend-http sends SSE event to browser +``` + +### State Update Flow (polling) + +``` +rig_task.rs polls rig_status() every ~250 ms + → RigState updated → watch::Sender +remote_client.rs receives via watch::Receiver + → broadcasts to frontends via watch::Sender +HTTP frontend reads watch::Receiver + → pushes SSE "state" event to connected browsers +``` + +### Spectrum Update Flow + +``` +SoapySdrRig::run_spectrum_snapshot() + → FFT of IQ buffer → SpectrumData stored in Arc> +remote_client.rs polls GetSpectrum every 40 ms + → stores SpectrumData in SharedSpectrum (Arc>) +HTTP frontend reads SharedSpectrum + → renders waterfall in browser via WebSocket or polling +``` + +### Audio Flow + +``` +SoapySDR IQ → DSP pipeline → PCM (Vec) + → broadcast::Sender> + ↙ (decoders subscribe) ↘ (audio server subscribes) +APRS/CW/FT8/WSPR/RDS Opus encode +decode tasks ↓ TCP + ↓ audio client (trx-client) +DecoderHistories buffer ↓ + ↓ broadcast locally +listener connections ↓ +stream decoder messages HTTP WebSocket / local speakers +``` + +--- + +## Detailed Component Notes + +### Rig Task Internals (`rig_task.rs` — 1,315 lines) + +The rig task is the heart of the server. Key implementation details: + +- **Command batching**: Accumulates pending requests before processing sequentially in FIFO order. +- **Spectrum deduplication**: Concurrent `GetSpectrum` requests are collapsed — one DSP computation broadcasts to all waiting responders. +- **Adaptive polling**: Poll interval adjusts based on TX state (100ms during TX, 500ms idle). +- **Grace period**: 800ms pause on polling after power-on/off operations to let hardware settle. +- **VFO priming**: Optional initialization sequence that toggles VFO A/B to populate the state cache. +- **Per-rig decoder histories**: Each rig maintains independent `Arc` for all 11 decoder types. +- **Configurable timeouts**: `command_exec_timeout` (default 10s) and `poll_refresh_timeout` (default 8s) are configurable via `RigTaskConfig` and the TOML `[timeouts]` section. +- **Crash recovery**: Rig tasks are monitored; on crash, an `Error` state is broadcast to clients via the watch channel so they see the failure instead of silent timeout. + +### Audio Pipeline (`audio.rs` — 3,977 lines) + +The audio module handles decoder history storage and stream management: + +- **`DecoderHistories`**: Per-rig mutable store for 11 decoder history queues (AIS, VDES, APRS, HF_APRS, CW, FT8, FT4, FT2, WSPR, WXSAT, LRPT). +- **Time-based retention**: 24h TTL on all history with periodic pruning. +- **Capacity bounds**: Per-decoder max of 10,000 entries (`MAX_HISTORY_ENTRIES`) prevents unbounded memory growth on busy channels. +- **Atomic total count**: `AtomicUsize` with CAS loop avoids acquiring 11 mutex locks in `snapshot_all()`. +- **Lock poisoning recovery with logging**: Uses `lock_or_recover()` helper that logs a warning when recovering from a poisoned mutex. +- **`StreamErrorLogger`**: Suppresses duplicate stream errors with 60s periodic summaries and error classification (alsa_poll_failure, input/output_stream_error). +- **Device enumeration helpers**: `find_input_device()` and `find_output_device()` extract the repeated device lookup logic from `run_capture()`/`run_playback()`. +- **CRC filtering**: APRS records filtered by `crc_ok` before storage. + +### Remote Client Dual-Connection Model + +`remote_client.rs` maintains two independent TCP connections to the server: + +1. **Main connection** (port 4530): State polling, command forwarding, rig discovery. +2. **Spectrum connection** (dedicated): Polls `GetSpectrum` at 50ms intervals (20 fps) independently to avoid blocking the main connection during command processing. + +Constants: `CONNECT_TIMEOUT: 5s`, `IO_TIMEOUT: 15s`, `SPECTRUM_IO_TIMEOUT: 3s`. Exponential backoff with jitter on reconnect. + +### FrontendRuntimeContext Sub-Structs + +The `FrontendRuntimeContext` struct in `trx-frontend/src/lib.rs` is decomposed into coherent sub-structs: + +| Sub-struct | Purpose | Key fields | +|-----------|---------|------------| +| `AudioContext` | Audio streaming channels | `rx`, `tx`, `info`, `decode_rx`, `clients` | +| `DecodeHistoryContext` | Decode history for all types | `ais`, `vdes`, `aprs`, `hf_aprs`, `cw`, `ft8`, `ft4`, `ft2`, `wspr` | +| `HttpAuthConfig` | HTTP auth settings | `enabled`, `rx_passphrase`, `session_ttl_secs`, `tokens` | +| `HttpUiConfig` | HTTP UI display config | `show_sdr_gain_control`, `initial_map_zoom`, `spectrum_*` | +| `RigRoutingContext` | Remote rig state & routing | `active_rig_id`, `remote_rigs`, `rig_states`, `server_connected` | +| `OwnerInfo` | Station metadata | `callsign`, `website_url`, `ais_vessel_url_base` | +| `VChanContext` | Virtual channel audio | `audio`, `audio_cmd`, `destroyed`, `rig_audio_cmd` | +| `SpectrumContext` | Spectrum data | `sender`, `per_rig` | +| `PerRigAudioContext` | Per-rig audio channels | `rx`, `info` | + +### Decoder Implementation Patterns + +All real-time decoders follow a consistent pattern: + +```rust +// 1. Stateful decoder struct with sample buffer +pub struct XxxDecoder { sample_buf: Vec, ... } + +// 2. Block/sample processing +pub fn process_block(&mut self, samples: &[f32]) { ... } + +// 3. Result extraction +pub fn decode_if_ready(&mut self) -> Vec { ... } +``` + +| Decoder | Algorithm | Sample Rate | Key Constants | +|---------|-----------|-------------|---------------| +| FT8/FT4/FT2 | Waterfall + LDPC/OSD | Varies | MAX_LDPC_ITERATIONS=20, MAX_CANDIDATES=120 | +| CW | Goertzel tone detection | Varies | 10ms windows, tone range 300–1200 Hz | +| APRS | Bell 202 AFSK (1200/2200 Hz) | 9600 | HDLC framing, NRZI, CRC-16-CCITT | +| AIS | GMSK 9600 baud | 9600 | Narrowband FM input | +| WSPR | Fano decoder | 12000 | 162 symbols, 120s slot, 1.46 Hz spacing | +| RDS | RRC matched filter + Costas PLL | Native | 57 kHz subcarrier, 1187.5 bps, OSD FEC | +| VDES | pi/4-QPSK 76.8 ksps | 100k | Burst detection, partial Turbo FEC | + +### Backend Reliability Workarounds (FT-817) + +The FT-817 CAT backend (`trx-backend-ft817/`) includes empirical workarounds for hardware quirks: + +- **Duplicate frame sends**: `set_mode()` and `set_ptt()` send CAT frames twice with 80ms delay (radio sometimes drops first frame). +- **Panel unlock before commands**: Clears stale bytes from the serial buffer. +- **Power-on dummy frame**: CPU wakes before CAT framing locks; dummy frame ensures readiness. +- **VFO state inference**: Infers VFO A/B by matching frequencies against cached values (fragile when frequencies collide). +- **Read timeout**: 800ms per CAT read operation (not configurable). diff --git a/docs/Home.md b/docs/Home.md new file mode 100644 index 0000000..e9b80f1 --- /dev/null +++ b/docs/Home.md @@ -0,0 +1,14 @@ +# trx-rs + +`trx-rs` is a modular amateur radio control stack written in Rust. It splits +hardware access, DSP, transport, and user-facing interfaces into separate +components so a radio or SDR can be controlled locally while audio, decoding, +and remote control are exposed elsewhere on the network. + +## Documentation + +- [User Manual](User-Manual) — configuration, features, and usage +- [Architecture](Architecture) — system design, crate layout, data flow, and internals +- [Optimization Guidelines](Optimization-Guidelines) — performance guidelines for the real-time DSP pipeline +- [Planned Features](Planned-Features) — planned features and design notes +- [Improvement Areas](Improvement-Areas) — codebase audit: quality, architecture, security, performance, and improvement plan diff --git a/docs/Improvement-Areas.md b/docs/Improvement-Areas.md new file mode 100644 index 0000000..65221fa --- /dev/null +++ b/docs/Improvement-Areas.md @@ -0,0 +1,211 @@ +# Improvement Areas + +A comprehensive audit of the trx-rs codebase covering code quality, architecture, +security, testing, and performance. Each item includes the affected location and +a suggested fix. + +*Last updated: 2026-03-29* + +--- + +## Resolved Items + +
    +Click to expand resolved items from previous audits + +### Plugin signing and cross-platform validation — DROPPED + +Plugin system has been removed from the codebase. No longer applicable. + +### Session store mutex poisoning (auth.rs) — RESOLVED + +**Location:** `src/trx-client/trx-frontend/trx-frontend-http/src/auth.rs` + +All 6 `.write().unwrap()` / `.lock().unwrap()` calls replaced with +`.unwrap_or_else(|e| { warn!(...); e.into_inner() })` pattern. Lock poisoning now +logs a warning and recovers the inner data instead of crashing. + +### No rate limiting on TCP listener — RESOLVED + +**Location:** `src/trx-server/src/listener.rs` + +Added `ConnectionTracker` with per-IP connection limiting (default: 10 concurrent +connections per IP). Connections exceeding the limit are rejected with a log warning. +Slots are released when clients disconnect. + +### RigState is a 33-field flat struct — RESOLVED + +**Location:** `src/trx-core/src/rig/state.rs` + +Decoder fields grouped into `DecoderConfig` (8 bools) and `DecoderResetSeqs` +(8 u64 counters). Both use `#[serde(flatten)]` for backward-compatible JSON wire +format. Updated across all consumers. + +### No `spawn_blocking` timeout — RESOLVED + +**Location:** `src/trx-server/src/listener.rs` + +Satellite pass computation wrapped in `tokio::time::timeout(30s, ...)` with +graceful fallback to empty results on timeout or panic. + +### Command handler boilerplate — RESOLVED + +**Location:** `src/trx-core/src/rig/controller/handlers.rs` + +Created `rig_command!` declarative macro. 7 unit commands use the macro; 4 commands +with custom fields/validation remain as explicit impls. + +### No command execution timeouts at CommandExecutor level — RESOLVED + +**Location:** `src/trx-server/src/rig_task.rs` + +`tokio::time::timeout(command_exec_timeout, process_command(...))` wraps all +command execution. Default timeout: 10s, configurable via `RigTaskConfig`. + +### No forward compatibility in protocol — RESOLVED + +**Location:** `src/trx-protocol/src/types.rs`, `src/trx-protocol/src/codec.rs` + +Added optional `protocol_version: Option` to `ClientEnvelope` and +`ClientResponse`. `parse_envelope()` distinguishes malformed JSON from +unrecognised `cmd` values. + +### `unsafe` string construction in spectrum encoding — RESOLVED + +**Location:** `src/trx-client/trx-frontend/trx-frontend-http/src/api.rs` + +Replaced `unsafe { String::from_utf8_unchecked(out) }` with safe +`String::from_utf8(out).expect(...)`. + +### `#[allow(dead_code)]` cleanup — RESOLVED + +Reduced from 6 to 4 annotations, all in trx-backend-soapysdr where fields serve +as lifetime anchors (`device`, `iq_tx`) or document reserved capacity +(`fixed_slot_count`, `process_pair`). + +### VDES decoder incomplete FEC — RESOLVED + +Turbo FEC decoder, CRC-16-CCITT validation, and M.2092-1 link-layer frame parsing +implemented. + +### Plugin system lacks versioning — DROPPED + +Plugin system removed from the codebase. + +### Configurator serial detection stubbed — RESOLVED + +Implemented using `tokio_serial::available_ports()` with USB, Bluetooth, PCI, and +Unknown port type descriptions. + +### Inconsistent frequency/rig naming — DOCUMENTED AS INTENTIONAL + +Field names reflect distinct semantic contexts: `freq_hz` (dial), `center_hz` +(SDR capture center), `cw_center_hz` (CW tone); `rig_id` (config key), `id` +(runtime UUID); `model` (hardware string), `rig_model` (config parameter). + +### Decoder task duplication in audio.rs — RESOLVED + +**Location:** `src/trx-server/src/audio.rs` + +APRS and HF APRS decoders merged into a single parameterised +`run_aprs_decoder_inner()` function. FT8 and FT4 decoders merged into +`run_ftx_decoder_inner()`. All decoder tasks now include `tracing::info_span!` +around `block_in_place()` calls for opt-in latency measurement. + +### Missing tests for critical modules — RESOLVED + +**Location:** `src/trx-server/src/listener.rs`, `src/trx-client/trx-frontend/trx-frontend-http/` + +Added multi-rig state isolation and command routing tests in `listener.rs`. +Added background decode `evaluate_bookmark` pure-function tests. + +### Missing integration tests for multi-rig scenarios — RESOLVED + +**Location:** `src/trx-server/src/listener.rs` + +Added integration tests covering simultaneous state management across two rigs +with a dummy backend, verifying state isolation and command routing. + +### Decode log silent failures — RESOLVED + +**Location:** `src/decoders/trx-decode-log/src/lib.rs` + +`flush()` errors are now logged via `warn!`. On file rotation failure, the old +writer is kept rather than silently dropping writes; a degradation warning is +emitted. + +### `api.rs` file size and organization — RESOLVED + +**Location:** `src/trx-client/trx-frontend/trx-frontend-http/src/api/` + +Split 2,831-LOC monolith into 7 logically grouped modules: `mod.rs` (shared +types and route configuration), `decoder.rs`, `rig.rs`, `vchan.rs`, `sse.rs`, +`bookmarks.rs`, `assets.rs`. + +### Background decode state complexity — RESOLVED + +**Location:** `src/trx-client/trx-frontend/trx-frontend-http/src/background_decode.rs` + +Extracted the 8-guard decision cascade into a pure `evaluate_bookmark()` function +returning `ChannelAction` enum (`Active` or `Skip { reason }`). Added unit tests +for all decision paths. + +### Actix-web pinned to exact version — RESOLVED + +**Location:** `src/trx-client/trx-frontend/trx-frontend-http/Cargo.toml` + +Relaxed from `actix-web = "=4.4.1"` to `actix-web = "4.4"` to allow patch-level +security updates. + +### Magic numbers in VDES plausibility scoring — RESOLVED + +**Location:** `src/decoders/trx-vdes/src/lib.rs` + +Inline magic numbers replaced with documented named constants: +`PLAUSIBILITY_UNSYNCED_THRESHOLD` (−35) and +`PLAUSIBILITY_LOW_CONFIDENCE_THRESHOLD` (15). + +### FT-817 VFO inference fragile with same frequency — DOCUMENTED + +**Location:** `src/trx-server/trx-backend/trx-backend-ft817/src/lib.rs` + +When both VFOs share the same frequency, inference defaults to VFO A. Resolved +after VFO toggle primes both sides. Well-documented in code comments; remains +a known limitation. + +### Excessive string cloning in remote client — RESOLVED + +**Location:** `src/trx-client/src/remote_client.rs` + +Hot-path spectrum polling loop now caches the token to avoid per-poll cloning. +State update path restructured to send to the main watch channel last (taking +ownership) and avoid one redundant `RigState::clone()`. + +### Missing doc comments on public decoder structs — RESOLVED + +**Location:** `src/decoders/trx-ais/src/lib.rs`, `src/decoders/trx-vdes/src/lib.rs`, +`src/decoders/trx-rds/src/lib.rs` + +Added comprehensive doc comments to `AisDecoder`, `VdesDecoder`, and `RdsDecoder` +describing valid sample rates, usage examples, and reset semantics. + +### Turbo decoder precondition not asserted — RESOLVED + +**Location:** `src/decoders/trx-vdes/src/turbo.rs` + +Added `debug_assert_eq!` on interleaver and deinterleaver lengths in +`turbo_decode_soft()`. + +### No tracing spans for decoder performance — RESOLVED + +**Location:** `src/trx-server/src/audio.rs` + +Added `tracing::info_span!` around `block_in_place()` calls in all 10 decoder +tasks (APRS, HF APRS, AIS A/B, VDES, CW, FT8, FT4, FT2, WSPR, LRPT) for +opt-in per-decoder latency measurement. + +
    + +--- + +All previous improvement items have been resolved. No outstanding issues. diff --git a/docs/Optimization-Guidelines.md b/docs/Optimization-Guidelines.md new file mode 100644 index 0000000..22a4901 --- /dev/null +++ b/docs/Optimization-Guidelines.md @@ -0,0 +1,175 @@ +# DSP Optimization Guidelines + +This document captures lessons learned and best practices for optimizing +the real-time DSP pipelines in trx-rs, particularly the WFM stereo decoder +and audio encoding paths. + +## General Principles + +1. **Measure first.** Profile with real workloads before optimizing. + Synthetic benchmarks miss cache effects, branch prediction patterns, + and real signal statistics. + +2. **Eliminate transcendentals from inner loops.** A single `sin_cos` or + `atan2` per sample at 200 kHz composite rate costs millions of calls + per second. Replace with: + - **Quadrature NCO** for oscillators: maintain `(cos, sin)` state and + rotate by a precomputed `(cos_inc, sin_inc)` each sample. Cost: + 4 muls + 2 adds. Renormalize every ~1024 samples to prevent drift. + - **Double-angle identities** to derive `sin(2θ), cos(2θ)` from + `sin(θ), cos(θ)`: `sin2 = 2·sin·cos`, `cos2 = 2·cos²−1`. + - **I/Q arm extraction** for PLL phase error: if you have + `i = lp(signal * cos)` and `q = lp(signal * -sin)`, then + `sin(err) = q/mag`, `cos(err) = i/mag` — no `atan2` or `sin_cos` + needed for the rotation. + +3. **Batch operations for SIMD.** Separate data-parallel work (e.g. FM + discriminator: conjugate-multiply + atan2) from sequential-state work + (PLL, biquads). Process the parallel part in batches of 8 using AVX2, + then feed scalar results into the sequential pipeline. + +4. **Power-of-2 sizes for circular buffers.** Use `& (N-1)` bitmask + instead of `% N` modulo. Ensure buffer lengths (e.g. `WFM_RESAMP_TAPS`) + are powers of two. + +5. **Circular buffers over shift registers.** Writing one sample at a + ring-buffer position is O(1); `rotate_left(1)` is O(N). For a 32-tap + FIR called 3× per composite sample, this eliminates ~200 byte-moves + per sample. + +6. **Decimate slow-changing metrics.** Stereo detection (pilot coherence, + lock, drive) changes over tens of milliseconds. Running it every 16th + sample instead of every sample saves ~94% of that work with no audible + effect. Accumulate values over the window and process the average. + +## Filter Design + +- **Match filter cutoffs** across parallel paths (sum and diff) to ensure + identical group delay. Mismatched cutoffs cause frequency-dependent + phase errors that directly degrade stereo separation. + +- **4th-order Butterworth** (two cascaded biquads) is generally sufficient + when the polyphase resampler provides additional stopband rejection. + 6th-order adds 50% more biquad evaluations per sample for diminishing + returns. + +- **Q values for Butterworth cascades:** + - 4th-order: Q₁ = 0.5412, Q₂ = 1.3066 + - 6th-order: Q₁ = 0.5176, Q₂ = 0.7071, Q₃ = 1.9319 + +## Polyphase Resampler + +- **Compute cutoff from actual rate ratio:** `cutoff = output_rate / input_rate`. + A fixed cutoff (e.g. 0.94) can be catastrophically wrong — at 200 kHz + composite to 48 kHz audio, it passes everything up to 94 kHz while the + output Nyquist is only 24 kHz. The 38 kHz stereo subcarrier residuals + alias directly into the treble range. + +- **Blackman-Harris window** gives ~92 dB stopband rejection vs ~43 dB + for Hamming, at the same tap count. Use it for the windowed-sinc + coefficients: + ``` + w(n) = 0.35875 − 0.48829·cos(2πn/N) + 0.14128·cos(4πn/N) − 0.01168·cos(6πn/N) + ``` + +- **32 taps** with Blackman-Harris and a proper cutoff gives >60 dB + stopband rejection — more than enough. 64 taps doubles the MAC count + for marginal improvement. + +- **64 polyphase phases** balances fractional sample resolution against + coefficient bank size (64 × 32 × 4 = 8 KB fits comfortably in L1 + cache). 128 phases offer diminishing returns for double the memory. + +## FM Discriminator + +- **Batch with AVX2:** The conjugate-multiply + atan2 pattern is + data-parallel (each output depends only on two adjacent input samples). + Process 8 samples at a time using 256-bit SIMD. + +- **Use a high-precision atan2 polynomial** for AVX2. A 7th-order minimax + polynomial (max error ~2.4e-7 rad) avoids the treble distortion that + cheap 1st-order approximations (e.g. `0.273*(1−|z|)`) introduce on + strong signals. Coefficients: + ``` + c0 = 0.999_999_5 + c1 = −0.333_326_1 + c2 = 0.199_777_1 + c3 = −0.138_776_8 + ``` + +- **Branchless argument reduction** for atan2: swap `|y|` and `|x|` using + masks rather than branches, apply quadrant correction via arithmetic + shift and copysign. + +## WFM Stereo Specifics + +- **Pilot notch before diff demod:** The 19 kHz pilot leaks into the + 38 kHz multiplication and creates intermod products. Notch it from the + composite signal before `x * cos(2θ)`. This notch is separate from the + mono-path pilot notch (which sits after the sum LPF). + +- **IQ hard limiter before FM discriminator:** For WFM, only the phase + carries information. Normalizing IQ magnitude to 1.0 prevents + overdeviation artifacts and clipping. Guard against zero magnitude. + +- **Binary stereo blend:** A smooth blend function (e.g. smoothstep) + sounds good in theory but reduces real-world separation. Use + `blend = 1.0` when pilot is detected, `0.0` otherwise. + +- **STEREO_MATRIX_GAIN = 0.50:** The correct unity factor for + `L = (S+D)/2`, `R = (S−D)/2`. Lower values waste headroom; higher + values clip. + +## Opus Encoding + +- **Complexity 5** (down from default 9-10) saves significant CPU with + minimal quality impact at bitrates ≥128 kbps. The higher complexity + levels run expensive psychoacoustic search algorithms that produce + negligible improvement at high bitrates. + +- **256 kbps** is transparent for stereo FM broadcast audio. Going higher + wastes bandwidth; going below 128 kbps may introduce artifacts on + complex program material. + +- **`Application::Audio`** (not VoIP) — uses the MDCT-based CELT mode + optimized for music and broadband audio rather than speech. + +## AVX2 Guidelines + +- Gate all AVX2 code behind `#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]` + and runtime `is_x86_feature_detected!("avx2")` checks. + +- Mark unsafe SIMD functions with `#[target_feature(enable = "avx2")]` + so the compiler generates AVX2 code for the function body. + +- Provide scalar fallbacks for non-x86 targets and CPUs without AVX2. + +- Add epsilon guards (e.g. `1e-12`) to denominators in SIMD paths where + both numerator and denominator can be zero simultaneously. + +## What NOT to Optimize + +- **Biquad filters** — already minimal (5 muls + 4 adds per sample). + The sequential state dependency prevents SIMD vectorization within a + single stream. + +- **One-pole lowpass filters** — single multiply-accumulate, cannot be + made faster. + +- **DC blockers** — trivial per-sample cost. + +- **Deemphasis** — single biquad, runs at audio rate (not composite rate). + +## Profiling Tips + +- Use `cargo build --release` — debug builds are 10-50x slower and + misleading for DSP profiling. + +- `perf stat` / `Instruments` on the inner loop to check IPC, cache + misses, and branch mispredictions. + +- Compare CPU% with stereo enabled vs disabled to isolate stereo-specific + costs (diff path biquads, pilot PLL, 38 kHz demod, resampler channels). + +- Watch for unexpected `libm` calls in disassembly — the compiler may + not inline `f32::atan2` or `f32::sin_cos` even in release mode. diff --git a/docs/Planned-Features.md b/docs/Planned-Features.md new file mode 100644 index 0000000..4b628f7 --- /dev/null +++ b/docs/Planned-Features.md @@ -0,0 +1,324 @@ +# Planned Features + +## Recorder + +The recorder captures the demodulated audio stream alongside associated metadata (FFT data, decoded signals, rig state) into a structured session on disk, with full playback and seeking support from within the application. + +### Requirements + +| ID | Description | +|----|-------------| +| REQ-REC-001 | When the user starts recording, the system shall record the currently demodulated audio stream. | +| REQ-REC-002 | When recording audio, the system shall store the recording in OPUS format. | +| REQ-REC-003 | While recording audio, the system shall automatically detect whether the recording should be stored in mono or stereo and select the appropriate format. | +| REQ-REC-004 | While recording is active, the system shall simultaneously record FFT data and all currently visible decoded elements, including APRS and FT8. | +| REQ-REC-005 | While recording metadata, the system shall store FFT data and decoded signal data in a structured data file format. | +| REQ-PLAY-001 | Where recorded sessions exist, the system shall allow playback of recordings from within the same application. | +| REQ-PLAY-002 | During playback, the system shall allow the user to seek to any position in the recording. | +| REQ-SYNC-001 | The system shall maintain time synchronization between the audio recording and the associated data file with at least one-second resolution. | +| REQ-REC-006 | While recording is active, the system shall allow the current cursor position to be stored. | + +--- + +### Architecture + +#### New Crate: `trx-recorder` + +A new crate `src/trx-server/trx-recorder/` handles all record and playback logic. It is a library crate consumed by `trx-server`. + +``` +src/trx-server/ + trx-recorder/ + src/ + lib.rs # Public API: RecorderHandle, start_recorder_task() + session.rs # RecordingSession: file management, open/close/finalise + writer.rs # AudioWriter: PCM → Opus encoder + data_file.rs # DataFileWriter: structured JSON Lines data track + index.rs # SeekIndex: time → byte-offset table for audio seeking + playback.rs # PlaybackEngine: file → PCM broadcast for clients + config.rs # RecorderConfig (serde, derives Default) +``` + +#### Integration Points in `trx-server` + +| Source | What is tapped | How | +|--------|---------------|-----| +| `audio.rs` `pcm_tx` | Raw demodulated PCM frames | New `broadcast::Receiver>` subscriber | +| `audio.rs` spectrum broadcast | FFT/spectrum frames per `RigState.spectrum` | New subscriber on the spectrum watch channel | +| `audio.rs` decoded-message broadcast | FT8, WSPR, CW, APRS, FT4, FT2, APRS-HF frames | New `broadcast::Receiver` subscriber | +| `rig_task.rs` state watch | Frequency/mode/PTT changes | `watch::Receiver` clone | +| New `RecorderCommand` enum | Start, Stop, MarkCursor | Injected into the existing command pipeline | + +No existing code paths are modified beyond: +1. Passing a `RecorderHandle` (cheap `Arc` wrapper) into the audio and rig tasks. +2. Adding `RecorderCommand` variants to the command enum (alongside existing `SetFreq`, `SetMode`, etc.). +3. Adding a `[recorder]` section to `ServerConfig`. + +--- + +### Session Layout on Disk + +Each recording is a **session directory** named by UTC start time and opening rig state: + +``` +/ + 20260317T142301Z_14074000_USB/ + audio.opus + data.jsonl # structured event log (see below) + index.bin # seek index: sorted table of (offset_ms u64, audio_byte u64) +``` + +`output_dir` defaults to `~/.local/share/trx-rs/recordings`. + +#### Audio File (REQ-REC-001, REQ-REC-002, REQ-REC-003) + +- **Format**: Opus, using the `opus` crate (already a workspace dependency via `trx-backend-soapysdr`). Seek index (`index.bin`) provides byte → time mapping. +- **Channel count**: determined at session open from `AudioConfig.channels`. If `channels == 1` → mono; if `channels == 2` → stereo. Written into the file header and recorded in the session's first data event. +- **Sample rate**: preserved from `AudioConfig.sample_rate` (default 48 000 Hz). + +#### Data File (REQ-REC-004, REQ-REC-005) + +`data.jsonl` — one JSON object per line, each with a required `offset_ms` field giving the millisecond offset from session start (satisfies REQ-SYNC-001 at ≥1 s resolution): + +```jsonl +{"offset_ms":0,"type":"session_start","freq_hz":14074000,"mode":"USB","channels":1,"sample_rate":48000,"format":"opus"} +{"offset_ms":1000,"type":"rig_state","freq_hz":14074000,"mode":"USB","ptt":false} +{"offset_ms":2000,"type":"fft","bins_db":[-90.1,-88.4,...]} +{"offset_ms":3412,"type":"ft8","snr_db":-12,"dt_s":0.3,"freq_hz":14074350,"message":"CQ W5XYZ EN34"} +{"offset_ms":4100,"type":"aprs","from":"W5XYZ-9","to":"APRS","path":"WIDE1-1","info":"!3351.00N/09722.00W-"} +{"offset_ms":5000,"type":"cursor","label":"interesting QSO"} +{"offset_ms":61000,"type":"session_end"} +``` + +Supported `type` values: + +| Type | Source | Cadence | +|------|--------|---------| +| `session_start` | recorder | once, at open | +| `session_end` | recorder | once, at close | +| `rig_state` | `watch::Receiver` change | on change | +| `fft` | spectrum data from `RigState.spectrum` | ≤1 Hz (configurable, default 1 s) | +| `ft8` / `ft4` / `ft2` / `wspr` | `DecodedMessage` broadcast | on decode event | +| `aprs` / `aprs_hf` | `DecodedMessage` broadcast | on decode event | +| `cw` | `DecodedMessage` broadcast | on decode event | +| `cursor` | `RecorderCommand::MarkCursor { label }` | on user request | + +#### Seek Index (REQ-PLAY-002) + +`index.bin` is a flat binary table of 16-byte records written every `index_interval_ms` (default 1 000 ms): + +``` +[offset_ms: u64 LE][audio_byte_offset: u64 LE] ... +``` + +At playback seek time, binary search on `offset_ms` locates the nearest audio frame boundary, enabling random-access playback without full file scan. + +--- + +### RecorderConfig + +Added to `ServerConfig` under `[recorder]`: + +```toml +[recorder] +enabled = false +output_dir = "~/.local/share/trx-rs/recordings" +opus_bitrate_bps = 32000 +fft_record_interval_ms = 1000 +index_interval_ms = 1000 +max_session_duration_s = 3600 # auto-split at 1 h; 0 = unlimited +``` + +--- + +### Command API + +New variants added to the existing command enum (handled in `rig_task.rs`): + +```rust +StartRecording, +StopRecording, +MarkCursor { label: String }, +``` + +These are exposed via: +- **HTTP frontend**: `POST /api/recorder/start`, `POST /api/recorder/stop`, `POST /api/recorder/cursor` +- **http-json frontend**: same commands as JSON messages + +--- + +### Playback Engine (REQ-PLAY-001, REQ-PLAY-002) + +`PlaybackEngine` opens a session directory and: + +1. Reads `audio.opus` and decodes PCM frames in real time. +2. Publishes decoded PCM frames onto a `broadcast::Sender>` — the **same channel type** as the live `pcm_tx`, so existing decoder tasks and audio-streaming clients receive playback data transparently. +3. Replays `data.jsonl` events on their original `offset_ms` timestamps, injecting them into the `DecodedMessage` broadcast so the HTTP frontend displays historic decodes during playback. +4. For seek: binary-searches `index.bin` to find the audio byte offset, then replays data events from the same point. + +The playback state machine has two modes, switched by a new `RigState.playback` field: + +```rust +pub enum PlaybackState { + Live, + Playing { session: String, offset_ms: u64 }, + Paused { session: String, offset_ms: u64 }, +} +``` + +While `PlaybackState` is not `Live`, the server suppresses live hardware polling and PCM capture to avoid mixing live and playback audio. + +--- + +### Time Synchronisation (REQ-SYNC-001) + +All timestamps use a single `session_epoch: std::time::Instant` captured at `StartRecording`. Every PCM frame, every data event, and every seek-index entry is stamped as `(Instant::now() - session_epoch).as_millis() as u64`. This gives sub-millisecond internal precision; the requirement of ≥1 s resolution is met by orders of magnitude. + +Wall-clock UTC is embedded only in `session_start` (`wall_clock_utc`) and in the session directory name, providing absolute time anchoring without depending on system clock monotonicity for sync. + +--- + +### Implementation Phases + +#### Phase 1 — Audio recording (REQ-REC-001, REQ-REC-002, REQ-REC-003) + +1. Add `trx-recorder` crate skeleton; `RecorderConfig`; `RecorderHandle`. +2. Implement `AudioWriter` with Opus output. +3. Subscribe `AudioWriter` to `pcm_tx` in `audio.rs`; open session on `StartRecording` command. +4. Auto-detect channel count from `AudioConfig.channels`. + +#### Phase 2 — Metadata recording (REQ-REC-004, REQ-REC-005, REQ-SYNC-001) + +1. Implement `DataFileWriter`; define full event schema. +2. Subscribe to `DecodedMessage` broadcast; fan-in all decoder types. +3. Subscribe to state watch; emit `rig_state` events on freq/mode change. +4. Emit `fft` events at configured interval from spectrum data. +5. Write `SeekIndex` in parallel with audio. + +#### Phase 3 — Cursor (REQ-REC-006) + +1. Add `MarkCursor` command + HTTP endpoint. +2. Write `cursor` event to `data.jsonl` with current `offset_ms`. + +#### Phase 4 — Playback (REQ-PLAY-001, REQ-PLAY-002) + +1. Implement `PlaybackEngine`; Opus decode + PCM broadcast. +2. Add `PlaybackState` to `RigState`; suppress live capture during playback. +3. Implement seek via `index.bin` binary search. +4. Replay `data.jsonl` events; feed into `DecodedMessage` broadcast. +5. Expose start/stop/seek endpoints in `trx-frontend-http`. + +--- + +### Dependencies to Add + +| Crate | Use | Already present? | +|-------|-----|-----------------| +| `opus` | Opus encode/decode | Yes (via trx-backend-soapysdr) | +| `serde_json` | data.jsonl serialisation | Yes | +| `tokio::fs` | async file I/O | Yes | + +--- + +### Open Questions + +1. **Playback isolation**: Should playback be exclusive (block all CAT commands) or concurrent? Initial design blocks CAT polling; revisit if users need to change frequency during playback. +2. **Session listing API**: The HTTP frontend needs an endpoint to enumerate sessions (`GET /api/recorder/sessions`). Schema TBD in Phase 4. +3. **Storage limits**: `max_session_duration_s` auto-splits sessions; a `max_total_size_gb` housekeeping option may be needed but is out of scope for initial phases. + +--- + +## Configurator Helper + +An interactive CLI tool that guides users through creating configuration files +for trx-rs. Instead of editing TOML by hand, the user answers prompts and the +tool generates valid, commented configuration files. + +### Overview + +The configurator is a standalone Rust binary (`trx-configurator`) that reuses +the existing config structs from `trx-app`, `trx-server`, and `trx-client`. It +walks the user through a question-driven flow, validates inputs against the same +rules the binaries use at startup, and writes one or more of: + +- `trx-server.toml` — server configuration +- `trx-client.toml` — client configuration +- `trx-rs.toml` — combined server + client configuration + +The user chooses which file(s) to generate. + +### Requirements + +| ID | Description | +|----|-------------| +| REQ-CFG-001 | The tool shall interactively prompt the user for configuration values. | +| REQ-CFG-002 | The tool shall generate `trx-server.toml`, `trx-client.toml`, or `trx-rs.toml` per user selection. | +| REQ-CFG-003 | The tool shall validate all inputs using the same validation logic as the server and client binaries. | +| REQ-CFG-004 | The tool shall write commented TOML with descriptions of each field. | +| REQ-CFG-005 | The tool shall detect connected serial devices and offer them for rig access configuration. | +| REQ-CFG-006 | The tool shall detect available SoapySDR devices and offer them for SDR backend configuration. | +| REQ-CFG-007 | The tool shall support a non-interactive mode that generates a default config file. | +| REQ-CFG-008 | The tool shall not overwrite existing files without confirmation. | + +### Architecture + +#### New Crate: `trx-configurator` + +A new binary crate at `src/trx-configurator/` that depends on `trx-app` for +config types and validation. + +``` +src/trx-configurator/ + src/ + main.rs # CLI entry point, mode selection + prompts.rs # Interactive prompt helpers (with defaults, validation) + detect.rs # Hardware detection (serial ports, SoapySDR devices) + writer.rs # TOML serialisation with inline comments +``` + +#### Flow + +``` +trx-configurator + ├── What would you like to generate? + │ [ ] trx-server.toml + │ [ ] trx-client.toml + │ [ ] trx-rs.toml (combined) + │ + ├── (if server) + │ ├── General: callsign, location + │ ├── Rig: model selection, access (serial/tcp/sdr) + │ │ └── detect serial ports / SoapySDR devices + │ ├── Listen: address, port + │ ├── Audio: sample rate, channels, codec settings + │ ├── SDR: (if soapysdr selected) gain, channels, decoders + │ ├── Uplinks: PSKReporter, APRS-IS + │ └── Decode logs: enable, directory + │ + ├── (if client) + │ ├── Remote: server URL, auth token + │ ├── Frontends: HTTP, rigctl, http-json (enable/disable, ports) + │ └── Audio: bridge settings + │ + └── Write file(s) with confirmation + +``` + +#### Hardware Detection + +- **Serial ports**: enumerate available serial devices using `serialport` crate + (already a transitive dependency). Present as selectable list with device + path and description. +- **SoapySDR devices**: if built with `soapysdr` feature, call + `SoapySDR::enumerate("")` to list available SDR hardware. Present device + driver, label, and serial number. + +#### Dependencies + +| Crate | Use | Already present? | +|-------|-----|-----------------| +| `dialoguer` | Interactive prompts, selection, confirmation | No | +| `toml_edit` | TOML serialisation preserving comments | No | +| `trx-app` | Config types and validation | Yes | +| `serialport` | Serial port enumeration | Yes (transitive) | +| `soapysdr` | SDR device enumeration (optional) | Yes (feature-gated) | diff --git a/docs/RDS-Tuning-Notes.md b/docs/RDS-Tuning-Notes.md new file mode 100644 index 0000000..5d7661c --- /dev/null +++ b/docs/RDS-Tuning-Notes.md @@ -0,0 +1,95 @@ +# RDS Parameter Tuning Notes + +*Decoder tuning rationale for `trx-rds`. Recorded 2026-03-27; reflects the +shipped parameter set. Kept as a reference for why these constants were chosen — +not an open work item.* + +## Goal +Maximum sensitivity (weak-signal decode) with zero false positive PI decodes. + +## Changes Applied + +### `src/decoders/trx-rds/src/lib.rs` + +#### Constants tuned +- `RRC_ALPHA = 0.50` (was 0.75) — narrower noise bandwidth, ~0.6 dB SNR gain +- `COSTAS_KI = 3.5e-7` — loop damping ζ≈0.68, well-damped (1e-6 caused instability) +- `PI_ACC_THRESHOLD = 3` (was 2) — accumulate 3 Block A observations before committing PI +- `OSD_MAX_FLIP_COST = 0.45` — Tech 9: reject OSD corrections where flipped bits had + high confidence (genuine errors have cost ≲ 0.3; noise matches cost 0.6–1.2) + +#### Soft confidence fix +In `Candidate::process_sample`, the soft confidence passed to `push_bit_soft` is now +`biphase_i.abs()` (was full vector magnitude). This aligns confidence with the bit +decision sign and prevents OSD(2) from false-decoding noise when the Costas loop +has residual phase error. + +#### OSD(2) in locked mode (kept) +`decode_block_soft` performs OSD(2): hard decode → all 26 single-bit flips → all +325 two-bit flip pairs. Only active in locked mode; sequential B→C→D block-type +gating limits false positives. + +#### Search mode: hard decode only +Removed OSD(1) from Block A acquisition (search mode). With OSD(1), ~13% of +random 26-bit words would falsely pass the Block A test per bit, allowing wrong +clock-phase candidates to accumulate false groups as fast as the correct candidate +accumulates real ones. Hard decode reduces the false Block A rate to ~0.5%. + +#### Tech 9: OSD cost ceiling +`decode_block_soft` now enforces `OSD_MAX_FLIP_COST = 0.45` — the sum of soft +confidences for all flipped bits must not exceed this threshold. At 9–10 dB SNR, +genuine bit errors have very low `|biphase_I|` (cost ≲ 0.3), while noise-induced +OSD matches flip high-confidence bits (cost 0.6–1.2). This eliminates most +spurious OSD(2) matches without affecting real weak-signal corrections. + +#### Tech 10: PI consistency gate +`process_group` rejects groups whose Block A PI differs from the candidate's +established PI. This prevents a single false OSD decode from polluting accumulated +text fields (PS, RT, PTYN) with garbage from noise or interference. + +#### Candidate selection: incumbent tracking +Added `best_candidate_idx: Option` to `RdsDecoder`. The incumbent (winning) +candidate can always update `best_state` at equal score (its `ps_seen`/`rt_seen` +arrays accumulate coherently). A challenger must achieve a strictly higher score to +take over. The incumbent's `best_score` is also updated when it returns `None` +(no state change) so challengers cannot leapfrog with a single false group. + +#### Test fixes +- `blocks_to_chips`: added NRZI (NRZ-Mark) pre-encoding. The differential biphase + decoder computes `bit = input_bit XOR prev_input_bit`; without NRZI the recovered + bits were XOR-of-consecutive-bits, not the original data. +- `decode_block_soft_rejects_three_bit_error`: removed (OSD(2) legitimately finds + distance-2 codewords; `pure_noise_produces_zero_pi_decodes` is the real guard). +- New test: `blocks_to_chips_round_trips_all_groups` — verifies round-trip decode + of all 16 blocks across all 4 PS segments without BPSK modulation. + +### `src/trx-server/trx-backend/trx-backend-soapysdr/src/demod/wfm.rs` + +- `PILOT_LOCK_THRESHOLD = 0.20` (was 0.25) — pilot reference enabled at lower coherence +- Added `PILOT_LOCK_ONSET = 0.30` constant (was hardcoded 0.4) +- `pilot_lock` ramp: `((pilot_coherence - PILOT_LOCK_ONSET) / 0.2).clamp(0.0, 1.0)` + — pilot reference engages at coherence ≥ 0.36 instead of ≥ 0.45 + +## Test Status + +``` +cargo test -p trx-rds +``` + +16/16 passing: +- ✅ decode_block_recognizes_valid_offsets +- ✅ decode_block_soft_corrects_single_bit_error +- ✅ decode_block_soft_corrects_two_bit_error_osd2 +- ✅ block_decode_rate_osd1_vs_osd2 +- ✅ decode_block_soft_prefers_least_costly_flip +- ✅ full_group_with_two_bit_errors_in_each_locked_block +- ✅ pi_accumulation_corrects_weak_pi_after_threshold +- ✅ decoder_emits_ps_and_pty_from_group_0a +- ✅ rrc_tap_dc_gain +- ✅ pure_noise_produces_zero_pi_decodes (2 seconds of noise, zero false PI) +- ✅ end_to_end_with_pilot_reference_decodes_pi +- ✅ end_to_end_noisy_signal_snr_10db_decodes_pi +- ✅ end_to_end_noisy_signal_snr_9db_decodes_pi ← new, 9 dB threshold +- ✅ costas_tracks_without_diverging_on_clean_signal +- ✅ blocks_to_chips_round_trips_all_groups +- ✅ end_to_end_clean_signal_decodes_ps diff --git a/docs/Settings-Menu-UX-Analysis.md b/docs/Settings-Menu-UX-Analysis.md new file mode 100644 index 0000000..6f76009 --- /dev/null +++ b/docs/Settings-Menu-UX-Analysis.md @@ -0,0 +1,163 @@ +# Settings Menu — UI/UX Analysis & Improvement Plan + +*Authored: 2026-03-30* + +## 1. Current Structure + +The Settings tab (`#tab-settings`) contains four sub-tabs: + +| Sub-tab | Purpose | Complexity | +|---|---|---| +| **Scheduler** | Grayline / Time Span / Satellite scheduling | High — nested modes, forms, timeline | +| **Background Decode** | Hidden background decoder channels | Medium — toggle + bookmark checklist | +| **Bandplan** | IARU region overlay on spectrum | Low — dropdown + checkbox | +| **History** | Clear server-side decode history | Low — 10 clear buttons | + +--- + +## 2. Identified Issues + +### 2.1 Information Architecture + +| # | Issue | Severity | +|---|---|---| +| IA-1 | **"Settings" is a catch-all bucket.** Scheduler and Background Decode are operational features, not user preferences. Bandplan and History are true settings/maintenance. Mixing them under one tab creates cognitive overhead. | Medium | +| IA-2 | **Scheduler sub-tab is overloaded.** It packs three conceptually distinct features (Grayline, Time Span, Satellite) into one scrollable panel via conditional `display:none` sections. Users must scroll past irrelevant sections. | Medium | +| IA-3 | **History clearing is buried.** Users wanting to clear FT8 decode history must navigate to Settings → History — an unintuitive path. This action is more naturally accessible from the Digital Modes tab itself. | Low | +| IA-4 | **No search or categorization.** With 4 sub-tabs today, it's manageable, but the flat sub-tab bar won't scale if more settings (e.g., audio, display theme, reporting/PSKReporter, notifications) are added. | Low | + +### 2.2 Interaction Design + +| # | Issue | Severity | +|---|---|---| +| IX-1 | **Save button visibility is inconsistent.** Save/Reset buttons use `style="display:none"` and are shown dynamically, but there is no dirty-state indicator. Users can change fields without realizing they haven't saved. | High | +| IX-2 | **No confirmation on destructive actions.** The 10 history-clear buttons and "Reset to Disabled" (scheduler) fire immediately on click. No confirmation dialog protects against accidental data loss. | High | +| IX-3 | **Entry table details collapsed by default.** The Time Span entry table is inside a `
    ` element — users must expand it to see, edit, or delete entries. This adds an unnecessary click when entries already exist. | Medium | +| IX-4 | **Satellite form uses a modal overlay; Time Span form is inline.** Inconsistent form presentation within the same sub-tab. Both should use the same pattern. | Medium | +| IX-5 | **Toast notification positioning.** The `.sch-toast` uses `position: fixed; bottom: 1.5rem` which can overlap with the main tab bar or mobile navigation. It also disappears without user control. | Low | +| IX-6 | **Bookmark filter in Background Decode has no "select all / deselect all" shortcut.** With many bookmarks, toggling them one by one is tedious. | Medium | + +### 2.3 Visual & Layout + +| # | Issue | Severity | +|---|---|---| +| VL-1 | **Scheduler has no visual state summary.** The "No activity yet." card doesn't show whether the scheduler is enabled or what mode it's in at a glance. Users must inspect the mode dropdown. | Medium | +| VL-2 | **History clear buttons are uniform.** All 10 buttons look identical (`sch-write sch-reset-btn`). No indication of which decoders have data to clear. Buttons for empty histories are noise. | Low | +| VL-3 | **Mobile responsiveness is partial.** The `@media (max-width: 600px)` rules handle `.sch-row` and `.bgd-*` layout, but the Time Span table (`.sch-ts-table` with 8 columns) overflows on narrow screens. | Medium | +| VL-4 | **Sub-tab bar can overflow.** It uses `overflow-x: auto` but gives no visual scroll indicator. On small screens, the "History" tab can be hidden off-screen with no affordance. | Low | + +### 2.4 Accessibility + +| # | Issue | Severity | +|---|---|---| +| A-1 | **Missing `aria-label` on several controls.** The scheduler mode select has one, but the grayline lat/lon inputs, interleave fields, and satellite fields lack accessible names beyond their visible label text (which is acceptable for `
    ` element's `open` attribute on render. + +**IX-4: Unify form presentation** +- Convert the satellite modal (`#sch-sat-form-wrap` with `position: fixed`) to an inline form matching the Time Span entry form pattern, or vice versa. Inline is preferred for consistency and mobile friendliness. + +**VL-1: Scheduler status summary card** +- Enhance the "Now Playing" card to always show: current mode, active entry (if any), next scheduled event, and satellite pass countdown (if enabled). +- Use a compact two-line format when idle: "Mode: Grayline | Next: Dawn transition in 2h 14m". + +**VL-3: Responsive table for Time Span entries** +- Replace the 8-column table with a card-based layout on narrow screens (`@media (max-width: 600px)`), or use horizontal scroll with a scroll shadow indicator. + +**A-2: Keyboard-accessible timeline** +- Add `tabindex="0"` and `role="button"` to timeline segments. +- Handle `keydown` for Enter/Space to activate. + +--- + +### Phase 3 — Polish & Scalability (Higher effort) + +**VL-2: Smart history-clear buttons** +- Query each decoder's item count via API (or piggyback on existing SSE state). +- Show count badges on each button (e.g., "Clear FT8 history (142)"). +- Disable or hide buttons for decoders with no history. +- Add a "Clear All" button with appropriate confirmation. + +**IA-4: Settings search (future-proofing)** +- If the settings surface grows beyond 5-6 sub-tabs, add a search/filter input at the top of the Settings tab that highlights matching sections. +- Not needed today, but the sub-tab architecture should be designed to accommodate it. + +**VL-4: Sub-tab scroll indicators** +- Add CSS gradient fade or arrow indicators when the sub-tab bar overflows horizontally. +- Consider a "more" dropdown for narrow viewports. + +**IX-5: Improved toast system** +- Position toasts inside the settings panel (not `position: fixed`) to avoid overlap with global UI. +- Add a brief auto-dismiss with a progress bar, plus a manual dismiss button. +- Stack multiple toasts if needed. + +--- + +## 4. Priority Summary + +| Priority | Items | Rationale | +|---|---|---| +| **P0 — Do Now** | IX-2 (confirmations), IX-1 (dirty state) | Prevent accidental data loss | +| **P1 — Next** | IX-6 (select all), A-3 (color-blind), A-4 (toast a11y), IX-3 (auto-expand) | Low effort, meaningful UX gains | +| **P2 — Soon** | IA-1/IA-3 (reorg), IX-4 (form consistency), VL-1 (status card), VL-3 (mobile table) | Structural quality | +| **P3 — Later** | VL-2 (smart buttons), IA-4 (search), VL-4 (scroll hints), IX-5 (toast rework) | Polish and future-proofing | diff --git a/docs/UX_Guidelines.md b/docs/UX_Guidelines.md new file mode 100644 index 0000000..3f34764 --- /dev/null +++ b/docs/UX_Guidelines.md @@ -0,0 +1,390 @@ +# UX Guidelines + +This document captures the UI/UX design patterns, conventions, and principles observed across +the trx-rs application. It covers the web frontend, CLI interfaces, configuration wizard, API +design, and error handling. + +*Last reviewed: 2026-03-28* + +--- + +## 1. Web Frontend (trx-frontend-http) + +### 1.1 Layout and Navigation + +The web UI is a single-page application served from embedded assets (no build step). It uses +a **tab-based** navigation model with six top-level tabs: + +| Tab | Icon | Purpose | +|---|---|---| +| **Main** | House | Primary radio control: spectrum, frequency, mode, PTT, VFO, SDR controls | +| **Bookmarks** | Bookmark | Saved frequency/mode presets with folder organisation | +| **Digital modes** | Bar chart | FT8/FT4/FT2, WSPR, CW, APRS, AIS, VDES decode tables | +| **Map** | Pin | Leaflet map for APRS/AIS/FT8 station plotting | +| **Settings** | Wrench | Scheduler, background decode, history retention | +| **About** | Info circle | Server/client/radio/audio/decoder/integration details | + +Tabs use inline SVG icons with a text label below. On narrow viewports the tab bar wraps and +subtitles collapse to save space. + +The **Settings** and **About** tabs each use a secondary **sub-tab bar** for further grouping +(e.g. Settings > Scheduler | Background Decode | History). + +### 1.2 Theming + +The UI supports **dark mode** (default) and **light mode** toggled via a header button. Theme +preference persists in `localStorage`. + +Additionally, nine **colour styles** are available via a dropdown: + +- Original (default), Arctic, Lime, Contrast, Neon Disco, Donald (golden-rain), Amber, Fire, Phosphor + +Each style provides a full CSS custom-property override set for both dark and light variants. +Styles are applied via `data-style` and `data-theme` attributes on ``. + +All colours reference CSS custom properties (`--bg`, `--card-bg`, `--text`, `--accent-green`, +`--border-light`, etc.) so components never use hard-coded colour values. + +### 1.3 Typography + +- **Body**: `system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif` +- **Frequency display**: `DSEG14 Classic` (14-segment display font, loaded from CDN with `preload`) +- **Labels**: uppercase, 0.68-0.78 rem, `font-weight: 700`, `letter-spacing: 0.04em` +- **Section labels** use pill-shaped badges (`border-radius: 999px`) with muted text + +### 1.4 Responsive Design + +Six breakpoints handle layout adaptation: + +| Breakpoint | Behaviour | +|---|---| +| `> 1100px` | Full width with bookmark side gutters on spectrum | +| `< 1100px` | Side bookmark panels hidden | +| `< 900px` | Card fills viewport width, reduced padding | +| `< 760px` | Tab bar wraps, controls stack vertically, safe-area-inset padding for notched devices | +| `< 640px` | Bottom-fixed tab bar (mobile), subtitles hidden, compact header | +| `< 520px` | Further compact adjustments | + +Touch-specific: `@media (hover: none) and (pointer: coarse)` enlarges hit targets. + +The spectrum panel hints adapt: mouse users see "Scroll to zoom / Ctrl+Scroll to tune / +Drag to pan" while touch users see "Pinch to zoom / Drag to pan". + +### 1.5 Interactive Controls + +- **Jog wheel**: Circular CSS-styled draggable dial for frequency tuning (skeuomorphic radial-gradient, grab cursor, shadow/inset). Plus/minus buttons flank it. +- **Step unit buttons**: Segmented button group (MHz / kHz / Hz) with `.active` highlight +- **Step scale**: 1x / 0.1x multiplier toggle +- **Frequency input**: Monospace DSEG14 font, editable `` with disabled opacity fix +- **Mode selector**: `` dropdown in the top bar for switching between connected rigs +- Per-tab rig binding: each SSE session independently selects a rig via `?remote=` query parameter +- Rig state isolation: only the disconnected rig shows the connection-lost banner +- About tab shows active rig, available rigs list + +--- + +## 2. REST API Design + +### 2.1 Conventions + +- **Read operations** use `GET` (e.g. `/status`, `/events`, `/decode/history`, `/rigs`, `/bookmarks`) +- **Mutations** use `POST` for actions and toggles (e.g. `/set_freq`, `/toggle_power`, `/toggle_ft8_decode`) +- **CRUD resources** use proper verbs: `GET /bookmarks`, `POST /bookmarks`, `PUT /bookmarks/{id}`, + `DELETE /bookmarks/{id}` +- **Batch operations**: `POST /bookmarks/batch_delete`, `POST /bookmarks/batch_move` +- **Nested resources**: `/channels/{remote}/{channel_id}/subscribe`, `/scheduler/{remote}/status` +- Responses are JSON with `Content-Type: application/json` +- SSE stream uses `Content-Type: text/event-stream` with `no-cache` and `keep-alive` headers + +### 2.2 Request Timeout + +All rig command requests have a **15-second timeout** (`REQUEST_TIMEOUT`). If the command +doesn't complete in time, the request returns an error rather than hanging. + +### 2.3 Error Responses + +- `401 Unauthorized`: `{"error": "Invalid credentials"}` or `{"error": "Authentication required"}` +- `429 Too Many Requests`: `{"error": "Too many login attempts, please try again later"}` +- `404 Not Found`: Auth endpoints when auth is disabled +- `500 Internal Server Error`: Serialization failures +- Rate limiting: 10 attempts per 60-second window per IP, counter resets on successful login + +### 2.4 State Enrichment + +API responses merge rig state with **frontend metadata** (`FrontendMeta`) via `serde(flatten)`: + +``` +http_clients, rigctl_clients, audio_clients, rigctl_addr, +active_remote, remotes[], owner_callsign, owner_website_url, +owner_website_name, ais_vessel_url_base, show_sdr_gain_control, +initial_map_zoom, spectrum_coverage_margin_hz, spectrum_usable_span_ratio, +decode_history_retention_min, server_connected +``` + +This single-payload approach avoids extra round trips for UI configuration. + +--- + +## 3. CLI Interface + +### 3.1 Argument Style + +Both `trx-server` and `trx-client` use **clap** for argument parsing with short and long flags: + +``` +-C, --config FILE Path to configuration file +--print-config Print example configuration and exit +-r, --rig NAME Rig backend name +-l, --listen ADDR Listen address +-p, --port NUM Port number +``` + +Positional arguments are used sparingly (e.g. `RIG_ADDR` for serial/TCP address). + +### 3.2 Configuration Resolution + +Config files are searched in priority order: +1. Current directory: `trx-rs.toml` +2. XDG config: `~/.config/trx-rs/trx-rs.toml` +3. System: `/etc/trx-rs/trx-rs.toml` + +The loaded config path is logged: `INFO Loaded configuration from /path/to/config.toml` + +### 3.3 Example Config Generation + +`--print-config` outputs a complete, commented TOML file to stdout with example values +(callsign `N0CALL`, coordinates `52.2297, 21.0122`). Each section has a header comment and +each field has an inline description. + +### 3.4 Startup Log Sequence + +Server: +``` +INFO Loaded configuration from /path/to/config.toml +INFO Starting trx-server with N rig(s): [rig-names] +INFO Callsign: CALL +INFO [rig-id] Starting (rig: ft817, access: serial /dev/ttyUSB0 @ 9600 baud) +INFO Listening on 0.0.0.0:4530 +``` + +Client: +``` +INFO Loaded configuration from /path/to/config.toml +INFO Starting trx-client (remotes: [remote-names], frontends: http,rigctl) +INFO rigctl frontend for rig 'default' on 127.0.0.1:4532 +``` + +--- + +## 4. Configuration Wizard (trx-configurator) + +### 4.1 Interactive Mode + +Uses the **dialoguer** crate for terminal prompts: + +- `Select` menus for enumerated choices (config type, rig model, access type, log level) +- `Input` for free-text with defaults (callsign defaults to `N0CALL`, listen defaults to `127.0.0.1`) +- `Confirm` for yes/no questions (enable auth, set location, etc.) +- Serial port auto-detection with fallback to `/dev/ttyUSB0` + +### 4.2 Non-Interactive Mode + +`--defaults` generates a config file without prompts, using sensible defaults. + +### 4.3 Config Validation + +`--check FILE` validates an existing config file: + +``` +/path/to/config.toml: valid TOML + Detected type: server + warning: [general].log_level 'verbose' is invalid (expected: trace, debug, info, warn, error) + 1 warning(s), 0 error(s) +``` + +Validates: TOML syntax, unknown keys, log levels, coordinate ranges (-90..90 lat, -180..180 lon +with pair requirement), access types, port ranges (0-65535). + +### 4.4 File Write Confirmation + +Prompts before overwriting an existing file. Outputs `Wrote /path/to/file` on success. + +--- + +## 5. Error Handling and User-Facing Messages + +### 5.1 Error Message Conventions + +- **Contextual**: Include file paths, section names, and peer addresses + - `"Failed to parse config file /path: error details"` + - `"Unknown rig model: X (available: ft817, ft450d, soapysdr)"` +- **Actionable**: Suggest alternatives when available + - `"Rig model not specified. Use --rig or set [rig].model in config."` + - `"Unknown frontend: X (available: http, rigctl, httpjson)"` +- **Structured**: Use field=value format in structured logging + +### 5.2 Log Level Guidelines + +| Level | Usage | +|---|---| +| `INFO` | Startup milestones, configuration loaded, listening, client connect/disconnect, decoder state changes | +| `WARN` | Non-fatal issues: command took too long, panel lock blocking, VFO priming failed, initial tune failed | +| `ERROR` | Fatal or significant failures: CAT polling errors, client errors, parse failures | + +Logs suppress module targets (`with_target(false)`) for cleaner output. + +### 5.3 Connection State Communication + +- Server logs: `"Client connected: {peer}"`, `"Client {peer} disconnected"`, `"Client {peer} closing due to shutdown"` +- Rig task: `"[rig-id] Rig backend ready"`, `"Serial: /dev/ttyUSB0 @ 9600 baud"` +- Web UI: Connection-lost banner with reconnect indication, per-rig isolation + +### 5.4 Graceful Degradation + +- Startup continues after non-fatal failures: `"Initial PowerOn failed (continuing)"` +- Stream errors are deduplicated with 60-second summaries to avoid log flooding +- Lock poisoning is recovered from rather than panicking +- Unknown SSE events or lagged broadcast channels are silently skipped + +--- + +## 6. Branding and Customisation + +### 6.1 Owner Branding + +Configurable via TOML and exposed via `FrontendMeta`: + +- `owner_callsign` -- displayed in header subtitle and About tab +- `owner_website_url` / `owner_website_name` -- optional link in header +- `ais_vessel_url_base` -- base URL for linking AIS vessel MMSI numbers + +### 6.2 UI Behaviour Configuration + +- `http_show_sdr_gain_control` -- show/hide RF gain controls +- `http_initial_map_zoom` -- default map zoom level +- `http_spectrum_coverage_margin_hz` -- guard margin for spectrum center retune +- `http_spectrum_usable_span_ratio` -- fraction of spectrum span treated as usable +- `http_decode_history_retention_min` -- default history retention (per-rig overrides supported) + +### 6.3 Embedded Assets + +Logo and favicon are embedded at compile time via `include_bytes!`. The logo image has an +`onerror` handler to hide itself if loading fails (`this.style.display='none'`). + +--- + +## 7. Security UX + +### 7.1 Route Access Classification + +Routes are classified into three tiers: + +| Tier | Examples | Requirement | +|---|---|---| +| **Public** | `/`, `/index.html`, `/map`, `/auth/*`, static assets | None | +| **Read** | `/status`, `/events`, `/audio`, `/decode`, `/spectrum`, `/bookmarks` | Rx or Control role | +| **Control** | `/set_freq`, `/set_mode`, `/set_ptt`, `/toggle_power`, all other POST | Control role only | + +### 7.2 Session Management + +- Sessions are 128-bit random hex tokens stored in HttpOnly cookies +- Configurable TTL (default from TOML config) +- Expired sessions auto-pruned on access +- Constant-time passphrase comparison to mitigate timing attacks + +### 7.3 TX Access Control + +An additional `tx_access_control_enabled` flag can restrict transmit-related actions even +for Control-role users, providing an extra safety layer. + +--- + +## 8. Virtual Channels (SDR) + +Virtual channels allow SDR users to monitor multiple frequencies simultaneously: + +- Channels appear in a picker row below the VFO controls +- CRUD API: `POST /channels/{remote}` to create, `DELETE` to remove, `PUT` to update freq/mode/BW +- Subscribe/unsubscribe audio per channel +- Background decode channels (hidden, no audio stream back) +- Channels auto-destroyed when out-of-bandwidth after center-frequency retune +- Channel-list changes broadcast to SSE clients via `event: channels` + +--- + +## 9. Design Principles (Inferred) + +1. **Server-rendered SPA**: All HTML/CSS/JS embedded in the binary -- zero external build tooling, no CDN dependency for core functionality (CDN used only for fonts and Leaflet maps). + +2. **Progressive disclosure**: Advanced controls (WFM, SAM, SDR settings, spectrum controls) are hidden by default and revealed based on the active mode and backend type. + +3. **Keyboard-first, touch-aware**: Spectrum supports full keyboard navigation alongside mouse and touch gestures. Mobile breakpoints enlarge hit targets and adapt layout. + +4. **Real-time by default**: SSE + WebSocket provide sub-second state updates without polling from the browser. 5-second ping heartbeat detects stale connections. + +5. **Per-tab isolation**: Each browser tab gets its own SSE session UUID and can independently select a rig, preventing cross-tab interference. + +6. **Configuration over code**: UI behaviour knobs (gain visibility, map zoom, history retention, spectrum margins) are exposed as TOML config rather than requiring code changes. + +7. **Graceful degradation**: The UI handles server disconnection gracefully with visible banners, and only the affected rig shows as disconnected in multi-rig setups. + +8. **Defensive security defaults**: Auth disabled by default for ease of setup, but when enabled, provides role-based access, rate limiting, constant-time comparison, and HttpOnly cookies. diff --git a/docs/User-Manual.md b/docs/User-Manual.md new file mode 100644 index 0000000..ba49884 --- /dev/null +++ b/docs/User-Manual.md @@ -0,0 +1,546 @@ +# trx-rs Manual + +## What trx-rs is + +`trx-rs` is a modular amateur radio control stack written in Rust. It splits +hardware access, DSP, transport, and user-facing interfaces into separate +components so a radio or SDR can be controlled locally while audio, decoding, +and remote control are exposed elsewhere on the network. + +In practice, `trx-server` owns the rig or SDR backend and runs the DSP +pipeline, while `trx-client` connects to it and provides frontends such as the +web UI, JSON control, and rigctl-compatible access. The workspace also includes +protocol decoders and plugin-based extension points for adding backends and +frontends. + +--- + +## Configuration + +Both `trx-server` and `trx-client` use TOML configuration files. Use +`--print-config` to generate a fully commented example. + +### File Locations + +**trx-server** lookup order: +1. `--config ` +2. `./trx-server.toml` +3. `~/.trx-server.toml` +4. `~/.config/trx-rs/server.toml` +5. `/etc/trx-rs/server.toml` + +**trx-client** lookup order: +1. `--config ` +2. `./trx-client.toml` +3. `~/.config/trx-rs/client.toml` +4. `/etc/trx-rs/client.toml` + +CLI arguments override config file values. + +### Environment Variables + +- `TRX_PLUGIN_DIRS`: additional plugin directories (path-separated), used by + both server and client. + +### Server Options + +#### `[general]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `callsign` | string | `"N0CALL"` | Station callsign | +| `log_level` | string | — | `trace`, `debug`, `info`, `warn`, or `error` | +| `latitude` | float | — | Station latitude (-90..90) | +| `longitude` | float | — | Station longitude (-180..180) | + +`latitude` and `longitude` must be set together or both omitted. + +#### `[rig]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `model` | string | — | Backend name (`ft817`, `ft450d`, `soapysdr`) | +| `initial_freq_hz` | u64 | `144300000` | Startup frequency (must be > 0) | +| `initial_mode` | string | `"USB"` | Startup mode | + +#### `[rig.access]` + +| Field | Type | Description | +|-------|------|-------------| +| `type` | string | `serial`, `tcp`, or `sdr` | +| `port` | string | Serial port path (serial mode) | +| `baud` | u32 | Serial baud rate (serial mode) | +| `host` | string | Remote host (tcp mode) | +| `tcp_port` | u16 | Remote port (tcp mode) | +| `args` | string | SoapySDR device args (sdr mode, e.g. `"driver=rtlsdr"`) | + +#### `[behavior]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `poll_interval_ms` | u64 | `500` | Rig polling interval | +| `poll_interval_tx_ms` | u64 | `100` | Polling interval during TX | +| `max_retries` | u32 | `3` | Connection retry limit | +| `retry_base_delay_ms` | u64 | `100` | Base retry delay | + +#### `[listen]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `enabled` | bool | `true` | Enable JSON TCP listener | +| `listen` | ip | `127.0.0.1` | Bind address | +| `port` | u16 | `4530` | Bind port | + +#### `[listen.auth]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `tokens` | string[] | `[]` | Allowed auth tokens (empty = no auth) | + +#### `[audio]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `enabled` | bool | `true` | Enable audio streaming | +| `listen` | ip | `127.0.0.1` | Bind address | +| `port` | u16 | `4531` | Bind port | +| `rx_enabled` | bool | `true` | Enable RX audio | +| `tx_enabled` | bool | `true` | Enable TX audio | +| `device` | string | — | CPAL device name (empty = default) | +| `sample_rate` | u32 | `48000` | Sample rate (8000–192000) | +| `channels` | u8 | `1` | Channel count (1 or 2) | +| `frame_duration_ms` | u16 | `20` | Opus frame duration (3, 5, 10, 20, 40, 60) | +| `bitrate_bps` | u32 | `24000` | Opus bitrate | + +When audio is enabled, at least one of `rx_enabled` or `tx_enabled` must be true. + +#### `[sdr]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `sample_rate` | u32 | `1920000` | IQ capture rate in Hz | +| `bandwidth` | u32 | `1500000` | Hardware IF filter bandwidth in Hz | +| `center_offset_hz` | i64 | `100000` | Offset from dial to avoid DC spur | + +#### `[sdr.gain]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `mode` | string | `"auto"` | `"auto"` (hardware AGC) or `"manual"` | +| `value` | f64 | `30.0` | Gain in dB (manual mode only) | + +#### `[sdr.squelch]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `enabled` | bool | `false` | Enable software squelch | +| `threshold_db` | f32 | `-65.0` | Open threshold in dBFS (-140..0) | +| `hysteresis_db` | f32 | `3.0` | Close hysteresis in dB (0..40) | +| `tail_ms` | u32 | `180` | Tail hold time in ms (0..10000) | + +#### `[[sdr.channels]]` + +Defines virtual receiver channels within the wideband IQ stream. The first +channel is the primary channel (controlled by `set_freq`/`set_mode`). + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `id` | string | `""` | Human-readable label | +| `offset_hz` | i64 | `0` | Frequency offset from dial | +| `mode` | string | `"auto"` | Demod mode (`auto`, `LSB`, `USB`, `CW`, `AM`, `FM`, `WFM`, etc.) | +| `audio_bandwidth_hz` | u32 | `3000` | Post-demod audio bandwidth | +| `fir_taps` | usize | `64` | FIR filter tap count | +| `cw_center_hz` | u32 | `700` | CW tone centre frequency | +| `wfm_bandwidth_hz` | u32 | `75000` | WFM pre-demod filter bandwidth | +| `decoders` | string[] | `[]` | Decoder IDs for this channel (`ft8`, `wspr`, `aprs`, `cw`) | +| `stream_opus` | bool | `false` | Stream this channel's audio to clients | + +Notes: +- Each decoder ID may appear in at most one channel. +- At most one channel may set `stream_opus = true`. +- Channel IF constraint: `|center_offset_hz + offset_hz| < sample_rate / 2`. + +#### `[pskreporter]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `enabled` | bool | `false` | Enable PSKReporter uplink | +| `host` | string | `"report.pskreporter.info"` | Server host | +| `port` | u16 | `4739` | Server port | +| `receiver_locator` | string | — | Maidenhead grid (derived from lat/lon if omitted) | + +#### `[aprsfi]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `enabled` | bool | `false` | Enable APRS-IS IGate | +| `host` | string | `"rotate.aprs.net"` | Server host | +| `port` | u16 | `14580` | Server port | +| `passcode` | i32 | `-1` | APRS-IS passcode (-1 = auto from callsign) | + +Notes: +- `[general].callsign` must be non-empty when enabled. +- Only APRS packets with valid CRC are forwarded. +- Reconnects with exponential backoff (1 s → 60 s) on TCP errors. + +#### `[decode_logs]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `enabled` | bool | `false` | Enable decoder logging | +| `dir` | string | `"$XDG_DATA_HOME/trx-rs/decoders"` | Log directory | +| `aprs_file` | string | `"TRXRS-APRS-%YYYY%-%MM%-%DD%.log"` | APRS log filename | +| `cw_file` | string | `"TRXRS-CW-%YYYY%-%MM%-%DD%.log"` | CW log filename | +| `ft8_file` | string | `"TRXRS-FT8-%YYYY%-%MM%-%DD%.log"` | FT8 log filename | +| `wspr_file` | string | `"TRXRS-WSPR-%YYYY%-%MM%-%DD%.log"` | WSPR log filename | + +Files are appended in JSON Lines format. Supported date tokens: `%YYYY%`, +`%MM%`, `%DD%` (UTC). + +#### Multi-Rig Configuration + +Use `[[rigs]]` arrays instead of the flat `[rig]` section for multi-rig setups: + +```toml +[[rigs]] +id = "ft817_0" +name = "HF Transceiver" +[rigs.rig] +model = "ft817" +[rigs.rig.access] +type = "serial" +path = "/dev/ttyUSB0" +baud = 9600 + +[[rigs]] +id = "sdr_0" +name = "VHF/UHF SDR" +[rigs.rig] +model = "soapysdr" +[rigs.rig.access] +type = "sdr" +args = "driver=rtlsdr" +``` + +When `[[rigs]]` is present it takes priority over the flat `[rig]` section. +Rigs without an explicit `id` get auto-generated IDs like `ft817_0`, `soapysdr_1`. + +### Client Options + +#### `[general]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `callsign` | string | `"N0CALL"` | Station callsign | +| `log_level` | string | — | `trace`, `debug`, `info`, `warn`, or `error` | + +#### `[remote]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `url` | string | — | Server address (e.g. `localhost:4530`) | +| `poll_interval_ms` | u64 | `750` | State poll interval | + +#### `[remote.auth]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `token` | string | — | Auth token (must not be empty if set) | + +#### `[frontends.http]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `enabled` | bool | `true` | Enable web UI | +| `listen` | ip | `127.0.0.1` | Bind address | +| `port` | u16 | `8080` | Bind port | + +#### `[frontends.rigctl]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `enabled` | bool | `false` | Enable Hamlib rigctl | +| `listen` | ip | `127.0.0.1` | Bind address | +| `port` | u16 | `4532` | Bind port | + +#### `[frontends.http_json]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `enabled` | bool | `true` | Enable JSON-over-TCP | +| `listen` | ip | `127.0.0.1` | Bind address | +| `port` | u16 | `0` | Bind port (0 = ephemeral) | +| `auth.tokens` | string[] | `[]` | Allowed auth tokens | + +#### `[frontends.audio]` + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `enabled` | bool | `true` | Enable audio client | +| `server_port` | u16 | `4531` | Server audio port | +| `bridge.enabled` | bool | `false` | Enable local CPAL audio bridge | +| `bridge.rx_output_device` | string | — | Local playback device | +| `bridge.tx_input_device` | string | — | Local capture device | +| `bridge.rx_gain` | float | `1.0` | RX playback gain | +| `bridge.tx_gain` | float | `1.0` | TX capture gain | + +The bridge is intended for WSJT-X integration via virtual audio devices (ALSA +loopback on Linux, BlackHole on macOS). + +### CLI Override Summary + +**trx-server:** +`--config`, `--print-config`, `--rig`, `--access`, `--callsign`, `--listen`, +`--port`. SDR options are file-only. + +**trx-client:** +`--config`, `--print-config`, `--url`, `--token`, `--poll-interval`, +`--frontend`, `--http-listen`, `--http-port`, `--rigctl-listen`, +`--rigctl-port`, `--http-json-listen`, `--http-json-port`, `--callsign`. + +--- + +## Authentication + +The HTTP frontend supports optional passphrase-based authentication with two +roles: + +- **rx** — read-only access (monitoring, audio, decode streams) +- **control** — full access (frequency, mode, PTT, and all settings) + +### Configuration + +```toml +[frontends.http.auth] +enabled = false +rx_passphrase = "rx-only-passphrase" +control_passphrase = "full-control-passphrase" +tx_access_control_enabled = true +session_ttl_min = 480 +cookie_secure = false # true if served via HTTPS +cookie_same_site = "Lax" # Strict|Lax|None +``` + +When `enabled = false` (the default), all auth is bypassed and the UI behaves +as before. When enabled, at least one passphrase must be set. + +### Behaviour + +- On login, the server issues an `HttpOnly` session cookie. +- Sessions are in-memory; a server restart invalidates all sessions. +- Rate limiting is applied per IP to mitigate brute-force attempts. +- When `tx_access_control_enabled = true`, TX/PTT controls are hidden and + rejected for unauthenticated or `rx`-role users. + +### Routes + +| Endpoint | Method | Description | +|----------|--------|-------------| +| `/auth/login` | POST | Submit `{ "passphrase": "..." }` | +| `/auth/logout` | POST | Clear session | +| `/auth/session` | GET | Check current session/role | + +Protected routes require at least `rx` role. Control routes (set frequency, +mode, PTT, etc.) require `control` role. + +### Frontend Flow + +1. On load, the UI calls `/auth/session`. +2. If unauthenticated, a login screen is shown. +3. On successful login, the normal UI loads. +4. `rx` users see a read-only interface; `control` users get full controls. +5. If a session expires mid-use, streams stop and the login screen returns. + +### Transport Security + +There is no built-in TLS. For remote access, place trx-rs behind a +TLS-terminating reverse proxy (nginx, Caddy) and set `cookie_secure = true`. + +--- + +## Background Decoding Scheduler + +The scheduler automatically retunes the rig to pre-configured bookmarks when no +users are connected to the HTTP frontend. It runs as a background task inside +`trx-frontend-http`, polling every 30 seconds. + +### Modes + +#### Disabled (default) + +Scheduler is inactive. The rig is not touched automatically. + +#### Grayline + +Retunes around the solar terminator (day/night boundary). + +The user provides: +- Station latitude and longitude (decimal degrees) +- Optional transition window width (minutes, default 20) +- Bookmark IDs for four periods: + - **Dawn** — window around sunrise (`sunrise ± window_min/2`) + - **Day** — after dawn until dusk + - **Dusk** — window around sunset (`sunset ± window_min/2`) + - **Night** — after dusk until next dawn + +Period precedence (most specific wins): Dawn > Dusk > Day > Night. + +If no bookmark is assigned to a period, the rig is not retuned for that period. + +Sunrise/sunset is computed inline using the NOAA simplified algorithm. Polar +regions (midnight sun / polar night) fall back to Day/Night accordingly. + +#### TimeSpan + +Retunes according to a list of user-defined time windows (UTC). + +Each entry specifies: +- `start_hhmm` — start of window (e.g. 600 = 06:00 UTC) +- `end_hhmm` — end of window (e.g. 700 = 07:00 UTC) +- `bookmark_id` — bookmark to apply +- `label` — optional human-readable description + +Windows that span midnight (`end_hhmm < start_hhmm`) are supported. When +multiple entries overlap, the first match (by list order) wins. + +### Storage + +Configuration is stored in PickleDB at `~/.config/trx-rs/scheduler.db`. + +Keys: `sch:{rig_id}` → JSON `SchedulerConfig`. + +### HTTP API + +All read endpoints are accessible at the **Rx** role level. Write endpoints +require the **Control** role. + +| Method | Path | Description | +|--------|------|-------------| +| GET | `/scheduler/{rig_id}` | Get scheduler config for a rig | +| PUT | `/scheduler/{rig_id}` | Save scheduler config (Control only) | +| DELETE | `/scheduler/{rig_id}` | Reset config to Disabled (Control only) | +| GET | `/scheduler/{rig_id}/status` | Get last-applied bookmark and next event | + +### Activation Logic + +Every 30 seconds the scheduler task checks: +1. No SSE clients connected +2. Active rig has a non-Disabled scheduler config +3. Current UTC time matches a scheduled window or grayline period +4. If the matching bookmark differs from last applied, send `SetFreq` + `SetMode` + +The scheduler does not revert changes when users reconnect. + +### Web UI + +A dedicated tab with a clock icon provides: +- Rig selector (read-only, shows active rig) +- Mode picker: Disabled / Grayline / TimeSpan +- Grayline section: lat/lon inputs, transition window slider, four bookmark selectors +- TimeSpan section: table of entries with start/end times, bookmark, label +- Status card: last applied bookmark name and timestamp +- Save button (Control role only) + +--- + +## SDR Noise Blanker + +The noise blanker suppresses impulse noise (clicks, pops, ignition interference) +on raw IQ samples before any mixing or filtering takes place. It works by +tracking a running RMS level of the signal and replacing any sample whose +magnitude exceeds **threshold x RMS** with the last known clean sample. + +### Configuration (server-side) + +The noise blanker is configured per rig. In a multi-rig setup each +`[[rigs]]` entry has its own `[rigs.sdr.noise_blanker]` section: + +```toml +[[rigs]] +id = "hf" + +[rigs.rig] +type = "sdr" + +[rigs.sdr.noise_blanker] +enabled = true +threshold = 10.0 # 1 – 100; lower = more aggressive blanking +``` + +For the legacy single-rig (flat) config the path is `[sdr.noise_blanker]`: + +```toml +[sdr.noise_blanker] +enabled = true +threshold = 10.0 +``` + +| Field | Type | Default | Range | Description | +|-------------|-------|---------|---------|-------------| +| `enabled` | bool | false | — | Turn the noise blanker on or off. | +| `threshold` | float | 10.0 | 1 – 100 | Multiplier applied to the running RMS. A sample whose magnitude exceeds this multiple is replaced. Lower values blank more aggressively; higher values only catch strong impulses. | + +The noise blanker is off by default. + +### Choosing a threshold + +The threshold controls how aggressively the blanker suppresses impulses. +A value of **N** means: blank any sample whose magnitude exceeds **N times** +the running average signal level. + +| Threshold | Behavior | Use case | +|-----------|----------|----------| +| 3 – 5 | Very aggressive — blanks frequently | Dense impulse noise (motors, power lines, LED drivers nearby) | +| 8 – 12 | Moderate — catches clear spikes without touching normal signals | Typical HF conditions with occasional ignition or switching noise | +| 15 – 25 | Conservative — only blanks strong impulses well above the noise floor | Light interference, or when you want minimal artifacts on weak signals | +| 30 – 100 | Very light — rarely triggers | Faint, infrequent clicks; mostly a safety net | + +**Start at 10** (the default) and adjust while listening: + +- If impulse noise is still audible, lower the threshold. +- If weak signals sound choppy or distorted, raise it — the blanker may be + mistaking signal peaks for noise. +- On bands with steady atmospheric noise (e.g. 160 m / 80 m), a threshold of + **5 – 8** usually works well. +- On quieter VHF/UHF bands where the noise floor is low, values of **15 – 25** + avoid false triggers from strong signals. + +### Web UI + +When the server reports noise-blanker support, two controls appear in the +**SDR Settings** row of the web interface: + +- **Noise Blanker** checkbox — enables or disables the blanker in real time. +- **NB Threshold** number input (1–100) with a **Set** button — adjusts the + detection threshold. Press Enter or click Set to apply. + +Both controls stay hidden until the server sends filter state containing NB +fields, so they only appear when connected to an SDR backend. + +### HTTP API + +``` +POST /set_sdr_noise_blanker?enabled=true&threshold=10 +``` + +| Parameter | Type | Required | Description | +|-------------|--------|----------|-------------| +| `enabled` | bool | yes | `true` or `false` | +| `threshold` | float | yes | Value between 1 and 100 | + +### How it works + +The blanker runs on every IQ block (4096 samples) *before* the mixer stage in +the DSP pipeline: + +1. For each sample, compute magnitude² (`re² + im²`). +2. Compare against `threshold² × mean_sq` (the exponentially-smoothed running + mean of magnitude²). +3. If the sample exceeds the threshold, replace it with the previous clean + sample. +4. Otherwise, update the running mean with smoothing factor α = 1/128 and store + the sample as the last clean value. + +Because the blanker operates on raw IQ before frequency translation, it removes +impulse noise across the entire captured bandwidth regardless of the tuned +channel offset. diff --git a/docs/Wxsat-Map-Overlay.md b/docs/Wxsat-Map-Overlay.md new file mode 100644 index 0000000..edbf997 --- /dev/null +++ b/docs/Wxsat-Map-Overlay.md @@ -0,0 +1,152 @@ +# Weather Satellite Map Overlay Integration + +Overlay decoded NOAA APT and Meteor-M LRPT satellite images on the Leaflet +map module, with ground track visualisation and source filtering. + +*Created: 2026-03-28* + +## Status + +| Step | Description | Status | +|------|-------------|--------| +| 1 | Add `sgp4` crate, create `trx-core/src/geo.rs` | Done | +| 2 | Extend `WxsatImage`/`LrptImage` with geo fields | Done | +| 3 | Compute geo-bounds in `finalize_wxsat_pass` / `finalize_lrpt_pass` | Done | +| 4 | Add `wxsat` to map source filter + image overlay rendering | Done | +| 5 | Add ground track polyline + filter toggle UI | Done | +| 6 | Build, test, verify | Done | + +## Motivation + +The wxsat plugin currently shows a history table with download links but has +no geographic context. Since the Map module already renders APRS, AIS, VDES, +and FTx/WSPR positions, weather satellite images are a natural addition — they +can be projected as semi-transparent overlays on the same Leaflet map. + +## Architecture + +### Data flow + +```mermaid +graph TD + A["Pass decoded (APT / LRPT)"] --> B["finalize_wxsat_pass / finalize_lrpt_pass
    (trx-server/audio.rs)"] + B --> C["SGP4 propagation using satellite TLE + pass timestamps"] + C --> D["Compute geo_bounds
    [[south, west], [north, east]]"] + D --> E["Compute ground_track
    [[lat, lon], ...]"] + E --> F["Attach to WxsatImage / LrptImage"] + F --> G["Broadcast via DecodedMessage"] + G --> H["SSE → browser"] + H --> I["wxsat.js: L.imageOverlay() + L.polyline() on aprsMap"] +``` + +### Geo-referencing strategy + +Weather satellites (NOAA POES, Meteor-M) fly sun-synchronous polar orbits at +~850 km altitude with known TLE parameters. Given: + +- **Satellite identity** (from telemetry: NOAA-15/18/19, Meteor-M N2-3/N2-4) +- **Pass start/end timestamps** (`pass_start_ms`, `pass_end_ms`) +- **Receiver station lat/lon** (from `RigState.server_latitude/longitude`) + +We can use **SGP4 propagation** (via the `sgp4` crate) to compute the +sub-satellite ground track during the pass, then derive image bounds from the +known swath geometry: + +| Parameter | NOAA APT | Meteor LRPT | +|-----------|----------|-------------| +| Altitude | ~850 km | ~825 km | +| Swath width | ~2800 km | ~2800 km | +| Ground speed | ~6.9 km/s | ~6.9 km/s | +| Scan rate | 2 lines/sec (0.5s/line) | variable MCU rate | +| Image width | 909 px/channel | 1568 px | + +**Bounds computation:** +1. Propagate satellite position at `pass_start_ms` and `pass_end_ms` +2. Sub-satellite points define the ground track center line +3. Swath half-width (~1400 km) gives east/west extent +4. Image is projected as a simple lat/lon rectangle (acceptable distortion + for the typical ~15° latitude span of a single pass) + +**TLE source:** Hardcoded recent TLEs for the 5 active satellites, with an +optional HTTP refresh from CelesTrak. Stale TLEs (weeks old) still give +sub-degree accuracy for image overlay purposes. + +### Crate changes + +#### `trx-core` (src/trx-core/) + +New module `src/trx-core/src/geo.rs`: +- `SatelliteGeo` struct: holds hardcoded TLEs, provides `compute_pass_bounds()` +- `PassGeoBounds { south: f64, west: f64, north: f64, east: f64 }` +- `ground_track(sat, start_ms, end_ms) -> Vec<[f64; 2]>` +- Uses `sgp4` crate for orbital propagation +- Falls back to station-centered approximation when TLE unavailable + +`src/trx-core/src/decode.rs` — extend structs: +```rust +pub struct WxsatImage { + // ... existing fields ... + pub geo_bounds: Option<[f64; 4]>, // [south, west, north, east] + pub ground_track: Option>, // [[lat, lon], ...] +} +// Same for LrptImage +``` + +#### `trx-server` (src/trx-server/) + +`src/trx-server/src/audio.rs`: +- In `finalize_wxsat_pass`: after PNG write, call `SatelliteGeo::compute_pass_bounds()` + using satellite name, pass timestamps, and station lat/lon (threaded through + from config). Attach result to `WxsatImage`. +- Same for `finalize_lrpt_pass`. + +#### Frontend (trx-frontend-http/assets/web/) + +`plugins/wxsat.js`: +- On `onServerWxsatImage` / `onServerLrptImage`: if `geo_bounds` present, + call `window.addWxsatMapOverlay(msg)`. +- Manage overlay list, allow removal. + +`app.js`: +- Add `wxsat: false` to `DEFAULT_MAP_SOURCE_FILTER` (off by default to avoid + visual clutter; users opt-in). +- `window.addWxsatMapOverlay(msg)`: creates `L.imageOverlay(msg.path, bounds)` + with opacity 0.6, adds to `mapMarkers` set with `__trxType = "wxsat"`. +- `window.addWxsatGroundTrack(msg)`: creates `L.polyline(msg.ground_track)` + with dashed style. +- Overlay list in wxsat panel with per-image show/hide toggle. + +`index.html`: +- No structural changes needed; the map filter chip system auto-generates + from `DEFAULT_MAP_SOURCE_FILTER`. + +`style.css`: +- Styling for wxsat overlay opacity slider (future enhancement). + +## Dependencies + +| Crate | Version | Purpose | +|-------|---------|---------| +| `sgp4` | 2.4 | Pure Rust SGP4 orbital propagation | + +Added to `trx-core/Cargo.toml` (used by `geo.rs`). + +## Risk / Limitations + +- **Rectangular projection approximation**: The actual scan geometry is curved + (satellite moves along a great circle), but for a single pass spanning + ~15-20° of latitude, a lat/lon rectangle is a reasonable first approximation. + More accurate warping could use `L.imageOverlay` with a canvas transform + in a future iteration. + +- **TLE staleness**: Hardcoded TLEs drift ~0.1°/week. For overlay purposes + this is acceptable. A periodic CelesTrak fetch would keep them fresh. + +- **Image rotation**: Ascending vs descending passes produce different + orientations. The initial implementation uses axis-aligned bounds + (no rotation). A rotated overlay would need `leaflet-imageoverlay-rotated` + or a canvas-based approach — deferred to a follow-up. + +- **Image serving**: The `path` field is a filesystem path. On co-located + server/client setups this works directly. Remote setups may need an + image-serving endpoint (out of scope for this change). diff --git a/docs/frontend_improvements.md b/docs/frontend_improvements.md new file mode 100644 index 0000000..1350c2f --- /dev/null +++ b/docs/frontend_improvements.md @@ -0,0 +1,361 @@ +# Frontend Styling & Performance Improvements + +*Analysis date: 2026-04-01* + +This document captures observations and improvement recommendations for the +trx-rs web frontend (`trx-frontend-http`). The frontend is a single-page +application served as embedded static assets (gzip-compressed with ETag +caching) from the Actix-Web server. + +## Current asset inventory + +| File | Lines | Size | +|------|------:|-----:| +| `style.css` | 5,318 | 144 KB | +| `app.js` | 8,427 | 306 KB | +| `map-core.js` | 3,483 | 127 KB | +| `screenshot.js` | 261 | 10 KB | +| `index.html` | 1,564 | 96 KB | +| `webgl-renderer.js` | 526 | 20 KB | +| `decode-history-worker.js` | 176 | 8 KB | +| `leaflet-ais-tracksymbol.js` | 120 | 8 KB | +| 15 plugin scripts | 7,360 | 304 KB | +| **Total** | **~27,000** | **~1 MB** | + +All assets are pre-compressed with `flate2` (gzip, `Compression::best()`) and +served with `ETag` + `If-None-Match` support for conditional requests. The +Actix `Compress` middleware handles dynamic responses. + +--- + +## 1. CSS observations + +### 1.1 Monolithic stylesheet (P1) + +`style.css` is a single 5,318-line file covering every tab, theme, responsive +breakpoint, map overlay, decoder UI, scheduler, recorder, and settings panel. +Browsers must parse the entire stylesheet before first paint even though most +users only interact with 1-2 tabs at a time. + +**Recommendations:** +- Split into logical partitions: `base.css` (variables, reset, layout), `tabs/*.css` (per-tab styles), `themes/*.css`. The server can concatenate and compress at build time. +- At minimum, move the theme colour blocks (lines 3770-5318, ~1,550 lines / 29% of the file) into a separate `themes.css` loaded asynchronously after initial paint, since the default theme is already in `:root`. +- Consider using `@layer` (CSS Cascade Layers) to manage specificity between base, component, and theme styles, eliminating the need for `!important` (currently 21 occurrences). + +### 1.2 `backdrop-filter` overuse (P1) + +There are 26 `backdrop-filter` declarations (13 pairs with `-webkit-` prefix). +`backdrop-filter: blur()` is one of the most expensive CSS properties -- it +forces the browser to composite, rasterize, and blur everything behind the +element on every frame. + +Affected areas: tab bar, controls tray, frequency overlay, modals, connection +banner, bottom nav, neon-disco theme overlay. + +**Recommendations:** +- Remove `backdrop-filter` from elements that are always opaque or rarely overlap dynamic content (e.g. bottom tab bar over static background). +- For the spectrum/waterfall overlay controls, use a solid semi-transparent `background` instead of blur -- the visual difference is negligible on a dark spectrogram. +- Where blur is desired (modals), use `will-change: backdrop-filter` and keep blur radius low (4-6px instead of 12-18px). Larger radii are proportionally more expensive. +- Gate expensive blur behind a `@media (prefers-reduced-motion: no-preference)` query or a `[data-effects="full"]` attribute so low-end devices can opt out. + +### 1.3 `color-mix()` usage (P2) + +184 occurrences of `color-mix(in srgb, ...)` throughout the stylesheet. While +`color-mix` is well-supported in modern browsers, each call is resolved at +computed-value time. Repeated identical mixes (e.g. button hover states +repeated across themes) add unnecessary style recalculation cost. + +**Recommendations:** +- Pre-compute frequently used mixes as CSS custom properties in the theme blocks (e.g. `--btn-hover-bg`, `--btn-active-bg`). +- This reduces computed-value work and also makes the palette more explicit and maintainable. + +### 1.4 Theme system duplication (P2) + +Each of the 10 colour themes repeats ~28 variable declarations for both dark +and light mode (560 variable declarations total). The theme blocks span lines +3770-5318 (29% of the entire stylesheet). + +**Recommendations:** +- Move themes to a separate file loaded after first paint (the default `:root` theme is always available). +- Consider generating theme CSS from a data source (JSON/TOML) at build time to reduce manual duplication. +- Use `color-scheme` and `light-dark()` (CSS Color Level 5) to collapse the dark/light pairs where values differ only in lightness. + +### 1.5 Transitions on non-essential properties (P3) + +25 `transition` declarations, several targeting `background`, `border-color`, +and `box-shadow` simultaneously. Multi-property transitions on buttons and +inputs cause style recalculation on hover/focus for every such element. + +**Recommendations:** +- Prefer transitioning only `opacity` and `transform` (GPU-composited). +- For colour changes, use `transition: background-color 100ms` rather than the shorthand `background` which also transitions `background-image` and other sub-properties. +- Add `will-change: transform` only to elements that are actively animating (currently only 2 occurrences, which is good). + +### 1.6 Missing `contain` declarations (P2) + +Tab content panels, decode history tables, map containers, and spectrum +canvases do not use CSS `contain` or `content-visibility`. When a large decode +history table updates, the browser recalculates layout for the entire page. + +**Recommendations:** +- Add `contain: content` to inactive tab panels (`[data-tab]:not(.active)`). +- Add `content-visibility: auto` with `contain-intrinsic-size` to off-screen panels (decode history, map, statistics). This lets the browser skip rendering for hidden content entirely. +- Add `contain: strict` to the spectrum/waterfall canvas containers since their size is fixed and they don't affect sibling layout. + +--- + +## 2. JavaScript observations + +### 2.1 Monolithic `app.js` (P1) + +The main application script is 11,928 lines (428 KB uncompressed). It is loaded +synchronously in the HTML `` (via embedded asset), blocking first paint +until fully parsed and executed. The 15 plugin scripts add another 7,360 lines. + +**Recommendations:** +- Mark the script tag `defer` or move it to end of `` so HTML parsing completes before script execution. +- Split `app.js` into logical modules: `core.js` (SSE, auth, render loop), `spectrum.js`, `map.js`, `decoder.js`, `recorder.js`, `settings.js`. Load non-critical modules lazily when the user navigates to the corresponding tab. +- Use ES modules (`type="module"`) for clean dependency management and tree-shaking potential. + +### 2.2 DOM query overhead (P2) + +The codebase contains ~359 `querySelector`/`getElementById` calls, many of +which execute on every SSE event (inside `render()`). DOM lookups are not free, +especially `querySelector` with compound selectors. + +**Recommendations:** +- Cache DOM references at initialization time (many already are, but the render path still re-queries elements like `document.getElementById("tab-main")`). +- Move repeated lookups (e.g. line 3575 `document.getElementById("tab-main")` inside `es.onmessage`) to module-level constants. + +### 2.3 `innerHTML` usage (P2) + +33 `innerHTML` assignments in `app.js` and 72 across plugin scripts. Each +`innerHTML` write forces the browser to: +1. Serialize the old DOM subtree for GC +2. Parse the HTML string +3. Build and insert a new DOM subtree + +This is both a performance concern (layout thrashing) and a security concern +(XSS if any user-controlled data is interpolated without escaping). + +**Recommendations:** +- Replace `innerHTML` with DOM APIs (`createElement`/`appendChild`) or `DocumentFragment` for bulk updates (only 4 `createDocumentFragment` uses currently). +- For large lists (decode history, bookmarks, recorder file lists), use a virtualised list pattern that only renders visible rows. +- Where `innerHTML` is used to clear a container, prefer `replaceChildren()` (clears children without HTML parsing). + +### 2.4 SSE render path efficiency (P2) + +Every SSE state event triggers `render(update)` which is a ~300-line function +touching dozens of DOM elements. The function does not diff -- it +unconditionally sets properties even when values have not changed. + +The string-equality guard (`if (evt.data === lastRendered) return`) is a good +optimisation for identical payloads, but when any field changes (e.g. S-meter +value), the entire render function runs. + +**Recommendations:** +- Implement field-level diffing: compare individual fields against previous values and only update DOM elements whose backing data changed. +- Group updates by tab: if the user is on the "Map" tab, skip render work for "Main" tab elements (meters, frequency display, controls). +- Use `scheduleUiFrameJob()` (already exists at line 3685) more aggressively to batch DOM writes into animation frames. + +### 2.5 Spectrum/waterfall rendering (P2) + +The WebGL renderer (`webgl-renderer.js`) is well-implemented with proper +shader programs and batched draws. However: +- The CSS colour parsing (`parseCssColor`) uses a DOM probe element (appended to + body) and `getComputedStyle` as a fallback, which triggers layout. +- The colour cache is a simple `Map` with no eviction policy. + +**Recommendations:** +- Parse theme colours once when the theme changes, not on every frame. +- Invalidate the `cssColorCache` on theme switch events. + +### 2.6 Plugin script loading (P3) + +All 15 plugin scripts are loaded eagerly in `index.html` regardless of which +decoders are active. Plugins like `ais.js`, `vdes.js`, `sat.js`, +`sat-scheduler.js`, and `hf-aprs.js` are only relevant for specific use cases. + +**Recommendations:** +- Load plugin scripts on demand when the corresponding decoder or feature is activated. +- Use dynamic `import()` if migrated to ES modules, or lazy ` + + + + + + + diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/leaflet-ais-tracksymbol.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/leaflet-ais-tracksymbol.js new file mode 100644 index 0000000..ad0d13b --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/leaflet-ais-tracksymbol.js @@ -0,0 +1,120 @@ +(function() { + if (typeof L === "undefined") return; + + function clamp(value, min, max) { + return Math.max(min, Math.min(max, value)); + } + + function finiteAngle(value) { + if (!Number.isFinite(value)) return null; + const normalized = ((Number(value) % 360) + 360) % 360; + return normalized; + } + + function svgColor(value, fallback) { + const text = String(value || fallback || ""); + return text.replace(/"/g, """); + } + + function buildSymbolHtml(options, zoom) { + const heading = finiteAngle(options.heading); + const course = finiteAngle(options.course); + const angle = heading != null ? heading : course; + const speed = Number.isFinite(options.speed) ? Math.max(0, Number(options.speed)) : 0; + const sizeBase = Number.isFinite(options.size) ? Number(options.size) : 22; + const zoomBoost = zoom >= 12 ? 4 : zoom >= 9 ? 2 : 0; + const size = clamp(sizeBase + zoomBoost, 16, 32); + const courseLen = course != null ? clamp(size * (0.55 + Math.min(speed, 30) / 30), size * 0.55, size * 1.2) : 0; + const color = svgColor(options.color, "#ff7559"); + const outline = svgColor(options.outline, "#6b2118"); + + const body = angle != null + ? `` + + `` + + `` + : ``; + + const courseLine = course != null + ? `` + + `` + + `` + : ""; + + return ( + `` + ); + } + + L.TrxAisTrackSymbol = L.Marker.extend({ + options: { + heading: null, + course: null, + speed: null, + color: "#ff7559", + outline: "#6b2118", + size: 22, + interactive: true, + keyboard: true, + riseOnHover: true, + }, + + initialize: function(latlng, options) { + const merged = L.Util.extend({}, this.options, options || {}); + merged.icon = L.divIcon({ + className: "trx-ais-track-symbol-icon", + html: "", + iconSize: [merged.size, merged.size], + iconAnchor: [merged.size / 2, merged.size / 2], + }); + L.Marker.prototype.initialize.call(this, latlng, merged); + }, + + onAdd: function(map) { + L.Marker.prototype.onAdd.call(this, map); + this._refreshIcon(); + this._boundZoomRefresh = this._refreshIcon.bind(this); + map.on("zoomend", this._boundZoomRefresh); + }, + + onRemove: function(map) { + if (this._boundZoomRefresh) { + map.off("zoomend", this._boundZoomRefresh); + this._boundZoomRefresh = null; + } + L.Marker.prototype.onRemove.call(this, map); + }, + + setAisState: function(next) { + if (next && typeof next === "object") { + if ("heading" in next) this.options.heading = next.heading; + if ("course" in next) this.options.course = next.course; + if ("speed" in next) this.options.speed = next.speed; + if ("color" in next) this.options.color = next.color; + if ("outline" in next) this.options.outline = next.outline; + } + this._refreshIcon(); + return this; + }, + + _refreshIcon: function() { + if (!this._icon) return; + const zoom = this._map && typeof this._map.getZoom === "function" ? this._map.getZoom() : 0; + const html = buildSymbolHtml(this.options, zoom); + this._icon.innerHTML = html; + const sizeBase = Number.isFinite(this.options.size) ? Number(this.options.size) : 22; + const zoomBoost = zoom >= 12 ? 4 : zoom >= 9 ? 2 : 0; + const size = clamp(sizeBase + zoomBoost, 16, 32); + this._icon.style.width = `${size}px`; + this._icon.style.height = `${size}px`; + this._icon.style.marginLeft = `${-size / 2}px`; + this._icon.style.marginTop = `${-size / 2}px`; + }, + }); + + L.trxAisTrackSymbol = function(latlng, options) { + return new L.TrxAisTrackSymbol(latlng, options); + }; +})(); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/map-core.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/map-core.js new file mode 100644 index 0000000..da82dc7 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/map-core.js @@ -0,0 +1,3515 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// Map, statistics, and geolocation module (lazy-loaded on map tab activation). +// Communicates with app.js core via window.trx namespace. +(function () { + "use strict"; + const T = window.trx; + + // Destructure shared utility functions for convenience + const { saveSetting, loadSetting, showHint, escapeMapHtml, formatFreq, formatFreqForHumans, + postPath, scheduleUiFrameJob, navigateToTab, rigBadgeColor, + formatUptime, latLonToMaidenhead, locatorToLatLon, haversineKm, + formatDistanceKm, formatTimeAgo, currentDecodeHistoryRetentionMs, + formatWavelength, bookmarkDistanceText, buildBookmarkTooltipText, + nearestBookmarkForHz } = T; + + function updateMapRigFilter() { + const el = document.getElementById("map-rig-filter"); + if (!el) return; + const prev = el.value; + while (el.options.length > 1) el.remove(1); + for (const id of T.lastRigIds) { + const opt = document.createElement("option"); + opt.value = id; + opt.textContent = T.lastRigDisplayNames[id] || id; + el.appendChild(opt); + } + if (prev && T.lastRigIds.includes(prev)) { + el.value = prev; + } else { + el.value = ""; + mapRigFilter = ""; + } + updateStatsRigFilter(); + } + + // --- Leaflet Map (lazy-initialized) --- + let aprsMap = null; + let aprsMapBaseLayer = null; + let aprsMapReceiverMarker = null; + let aprsMapReceiverMarkers = {}; // keyed by rig remote id + let aprsRadioPaths = []; + let selectedLocatorMarker = null; + let selectedLocatorPulseRaf = null; + let mapFullscreenListenerBound = false; + let mapP2pRadioPathsEnabled = loadSetting("mapP2pRadioPathsEnabled", true) !== false; + let mapDecodeContactPathsEnabled = loadSetting("mapDecodeContactPathsEnabled", true) !== false; + let mapOverlayPanelVisible = loadSetting("mapOverlayPanelVisible", true) !== false; + const MAP_HISTORY_LIMIT_OPTIONS = [15, 30, 60, 180, 360, 720, 1440]; + const MAP_QSO_SUMMARY_LIMIT = 5; + const stationMarkers = new Map(); + const locatorMarkers = new Map(); + const decodeContactPaths = new Map(); + let selectedMapQsoKey = null; + const mapMarkers = new Set(); + const DEFAULT_MAP_SOURCE_FILTER = { ais: true, vdes: true, aprs: true, bookmark: false, ft8: true, ft4: true, ft2: true, wspr: true, sat: false }; + const mapFilter = { ...DEFAULT_MAP_SOURCE_FILTER }; + const mapLocatorFilter = { phase: "band", bands: new Set() }; + let mapSearchFilter = ""; + let mapRigFilter = ""; // "" = all rigs + let mapHistoryPruneTimer = null; + let mapHistoryLimitMinutes = normalizeMapHistoryLimitMinutes( + Number(loadSetting("mapHistoryLimitMinutes", 1440)) + ); + const APRS_TRACK_MAX_POINTS = 64; + const AIS_TRACK_MAX_POINTS = 64; + const aisMarkers = new Map(); + const vdesMarkers = new Map(); + let selectedAprsTrackCall = null; + let selectedAisTrackMmsi = null; + const HAM_BANDS = [ + { label: "2200m", meters: 2200 }, + { label: "630m", meters: 630 }, + { label: "160m", meters: 160 }, + { label: "80m", meters: 80 }, + { label: "60m", meters: 60 }, + { label: "40m", meters: 40 }, + { label: "30m", meters: 30 }, + { label: "20m", meters: 20 }, + { label: "17m", meters: 17 }, + { label: "15m", meters: 15 }, + { label: "12m", meters: 12 }, + { label: "10m", meters: 10 }, + { label: "6m", meters: 6 }, + { label: "4m", meters: 4 }, + { label: "3m", meters: 3 }, + { label: "2m", meters: 2 }, + { label: "1m", meters: 1 }, + { label: "70cm", meters: 0.7 }, + { label: "23cm", meters: 0.23 }, + { label: "13cm", meters: 0.13 }, + { label: "9cm", meters: 0.09 }, + { label: "6cm", meters: 0.06 }, + { label: "3cm", meters: 0.03 }, + ].map((band) => ({ + ...band, + nominalHz: 299_792_458 / band.meters, + })); + + function normalizeLocatorFreqHz(hz) { + if (!Number.isFinite(hz) || hz <= 0) return null; + if (hz >= 100_000) return hz; + const baseHz = Number(window.ft8BaseHz); + if (Number.isFinite(baseHz) && baseHz > 0) { + return baseHz + hz; + } + return hz; + } + + function normalizeMapHistoryLimitMinutes(value) { + const minutes = Math.round(Number(value)); + return MAP_HISTORY_LIMIT_OPTIONS.includes(minutes) ? minutes : 1440; + } + + function mapHistoryCutoffMs() { + return Date.now() - (mapHistoryLimitMinutes * 60 * 1000); + } + + function trimTrackHistory(history, cutoffMs, maxPoints) { + const list = Array.isArray(history) ? history : []; + const trimmed = list.filter((point) => Number(point?.tsMs) >= cutoffMs); + if (trimmed.length > maxPoints) { + trimmed.splice(0, trimmed.length - maxPoints); + } + return trimmed; + } + + function refreshAprsTrack(call, entry) { + if (!entry) return; + if (!Array.isArray(entry.trackPoints) || entry.trackPoints.length < 2) { + if (entry.track) { + entry.track.remove(); + entry.track = null; + } + return; + } + if (entry.track) { + entry.track.setLatLngs(entry.trackPoints); + return; + } + const track = L.polyline(entry.trackPoints, { + color: "#f0be4d", + weight: 2, + opacity: 0.72, + lineCap: "round", + lineJoin: "round", + interactive: false, + }); + track.__trxType = "aprs"; + track._aprsCall = call; + entry.track = track; + } + + function refreshAisTrack(mmsi, entry) { + if (!entry) return; + if (!Array.isArray(entry.trackPoints) || entry.trackPoints.length < 2) { + if (entry.track) { + entry.track.remove(); + entry.track = null; + } + return; + } + if (entry.track) { + entry.track.setLatLngs(entry.trackPoints); + return; + } + const track = L.polyline(entry.trackPoints, { + color: getAisAccentColor(), + weight: 2, + opacity: 0.68, + lineCap: "round", + lineJoin: "round", + interactive: false, + dashArray: "5 4", + }); + track.__trxType = "ais"; + track._aisMmsi = mmsi; + entry.track = track; + } + + function removeMapMarker(marker) { + if (!marker) return; + if (marker === selectedLocatorMarker) { + setSelectedLocatorMarker(null); + clearMapRadioPath(); + } + if (aprsMap && aprsMap.hasLayer(marker)) marker.removeFrom(aprsMap); + mapMarkers.delete(marker); + } + + function setRetainedMapMarkerVisible(marker, visible) { + if (!marker) return; + marker.__trxHistoryVisible = visible !== false; + if (!visible) { + if (marker === selectedLocatorMarker) { + setSelectedLocatorMarker(null); + clearMapRadioPath(); + } + if (aprsMap && aprsMap.hasLayer(marker)) marker.removeFrom(aprsMap); + } + } + + function ensureAprsMarker(call, entry) { + if (!aprsMap || !entry || entry.marker || entry.lat == null || entry.lon == null) return; + _aprsAddMarkerToMap(call, entry); + } + + function ensureAisMarker(key, entry) { + if (!aprsMap || !entry || entry.marker || entry?.msg?.lat == null || entry?.msg?.lon == null) return; + const marker = createAisMarker(entry.msg.lat, entry.msg.lon, entry.msg) + .addTo(aprsMap) + .bindPopup(buildAisPopupHtml(entry.msg)); + marker.__trxType = "ais"; + marker.__trxRigIds = entry.rigIds || new Set(); + marker._aisMmsi = String(key); + entry.marker = marker; + mapMarkers.add(marker); + } + + function ensureVdesMarker(key, entry) { + if (!aprsMap || !entry || entry.marker || entry?.msg?.lat == null || entry?.msg?.lon == null) return; + const marker = L.circleMarker([entry.msg.lat, entry.msg.lon], { + radius: 5, + color: "#5c394f", + fillColor: "#c46392", + fillOpacity: 0.82, + }).addTo(aprsMap).bindPopup(buildVdesPopupHtml(entry.msg)); + marker.__trxType = "vdes"; + marker.__trxRigIds = entry.rigIds || new Set(); + marker._vdesKey = String(key); + entry.marker = marker; + mapMarkers.add(marker); + } + + function ensureDecodeLocatorMarker(entry) { + if (!aprsMap || !entry || entry.marker || !entry.grid || (entry.sourceType !== "ft8" && entry.sourceType !== "ft4" && entry.sourceType !== "ft2" && entry.sourceType !== "wspr")) return; + const bounds = maidenheadToBounds(entry.grid); + if (!bounds) return; + const count = Math.max(entry.stationDetails?.size || 0, entry.stations?.size || 0, 1); + const tooltipHtml = buildDecodeLocatorTooltipHtml(entry.grid, entry, entry.sourceType); + const marker = L.rectangle(bounds, locatorStyleForEntry(entry, count)) + .addTo(aprsMap) + .bindPopup(tooltipHtml); + marker.__trxType = entry.sourceType; + marker.__trxRigIds = entry.rigIds || new Set(); + sendLocatorOverlayToBack(marker); + assignLocatorMarkerMeta(marker, entry.sourceType, entry.bandMeta); + entry.marker = marker; + mapMarkers.add(marker); + } + + function pruneAprsEntry(call, entry, cutoffMs) { + const canRenderMap = !!aprsMap && !T.decodeHistoryReplayActive; + const pktTsMs = Number(entry?.pkt?._tsMs); + const visible = Number.isFinite(pktTsMs) && pktTsMs >= cutoffMs; + entry.visibleInHistoryWindow = visible; + entry.trackPoints = trimTrackHistory(entry.trackHistory, cutoffMs, APRS_TRACK_MAX_POINTS) + .map((point) => [point.lat, point.lon]); + if (canRenderMap) { + refreshAprsTrack(call, entry); + } else { + T.markDecodeMapSyncPending(); + } + if (!visible) { + if (canRenderMap && selectedAprsTrackCall && String(selectedAprsTrackCall) === String(call)) { + selectedAprsTrackCall = null; + } + if (canRenderMap && entry?.track) { + entry.track.remove(); + entry.track = null; + } + if (canRenderMap) setRetainedMapMarkerVisible(entry?.marker, false); + return false; + } + if (!canRenderMap) return true; + ensureAprsMarker(call, entry); + setRetainedMapMarkerVisible(entry?.marker, true); + if (entry?.marker) { + entry.marker.setLatLng([entry.lat, entry.lon]); + entry.marker.setPopupContent(buildAprsPopupHtml(call, entry.lat, entry.lon, entry.info || "", entry.pkt)); + } + return true; + } + + function pruneAisEntry(key, entry, cutoffMs) { + const canRenderMap = !!aprsMap && !T.decodeHistoryReplayActive; + const msgTsMs = Number(entry?.msg?._tsMs); + const visible = Number.isFinite(msgTsMs) && msgTsMs >= cutoffMs; + entry.visibleInHistoryWindow = visible; + entry.trackPoints = trimTrackHistory(entry.trackHistory, cutoffMs, AIS_TRACK_MAX_POINTS) + .map((point) => [point.lat, point.lon]); + if (canRenderMap) { + refreshAisTrack(key, entry); + } else { + T.markDecodeMapSyncPending(); + } + if (!visible) { + if (canRenderMap && selectedAisTrackMmsi && String(selectedAisTrackMmsi) === String(key)) { + selectedAisTrackMmsi = null; + } + if (canRenderMap && entry?.track) { + entry.track.remove(); + entry.track = null; + } + if (canRenderMap) setRetainedMapMarkerVisible(entry?.marker, false); + return false; + } + if (!canRenderMap) return true; + ensureAisMarker(key, entry); + setRetainedMapMarkerVisible(entry?.marker, true); + if (entry?.marker) { + updateAisMarker(entry.marker, entry.msg, buildAisPopupHtml(entry.msg)); + } + return true; + } + + function pruneLocatorEntry(key, entry, cutoffMs) { + const canRenderMap = !!aprsMap && !T.decodeHistoryReplayActive; + if (!entry || (entry.sourceType !== "ft8" && entry.sourceType !== "ft4" && entry.sourceType !== "ft2" && entry.sourceType !== "wspr")) return true; + if (!(entry.allStationDetails instanceof Map)) { + entry.allStationDetails = entry.stationDetails instanceof Map + ? new Map(entry.stationDetails) + : new Map(); + } + const nextDetails = new Map(); + for (const [detailKey, detail] of entry.allStationDetails.entries()) { + const tsMs = Number(detail?.ts_ms); + if (Number.isFinite(tsMs) && tsMs >= cutoffMs) { + nextDetails.set(detailKey, detail); + } + } + entry.visibleInHistoryWindow = nextDetails.size > 0; + if (nextDetails.size === 0) { + entry.stationDetails = new Map(); + entry.stations = new Set(); + entry.bandMeta = new Map(); + if (canRenderMap) setRetainedMapMarkerVisible(entry.marker, false); + else T.markDecodeMapSyncPending(); + return false; + } + const nextStations = new Set(); + for (const detail of nextDetails.values()) { + const source = String(detail?.source || detail?.station || "").trim().toUpperCase(); + if (source) nextStations.add(source); + } + entry.stationDetails = nextDetails; + entry.stations = nextStations; + entry.bandMeta = collectBandMeta( + Array.from(nextDetails.values()).map((detail) => Number(detail?.freq_hz)) + ); + const count = Math.max(nextDetails.size, nextStations.size || 0, 1); + if (!canRenderMap) { + T.markDecodeMapSyncPending(); + return true; + } + ensureDecodeLocatorMarker(entry); + setRetainedMapMarkerVisible(entry.marker, true); + if (entry.marker) { + entry.marker.setStyle(locatorStyleForEntry(entry, count)); + entry.marker.setPopupContent(buildDecodeLocatorTooltipHtml(entry.grid, entry, entry.sourceType)); + assignLocatorMarkerMeta(entry.marker, entry.sourceType, entry.bandMeta); + } + return true; + } + + function pruneMapHistory() { + const cutoffMs = mapHistoryCutoffMs(); + for (const [call, entry] of stationMarkers.entries()) { + pruneAprsEntry(call, entry, cutoffMs); + } + for (const [key, entry] of aisMarkers.entries()) { + pruneAisEntry(key, entry, cutoffMs); + } + for (const [key, entry] of vdesMarkers.entries()) { + const tsMs = Number(entry?.msg?._tsMs); + const visible = Number.isFinite(tsMs) && tsMs >= cutoffMs; + entry.visibleInHistoryWindow = visible; + if (!visible) { + setRetainedMapMarkerVisible(entry?.marker, false); + continue; + } + ensureVdesMarker(key, entry); + setRetainedMapMarkerVisible(entry?.marker, true); + if (entry?.marker) { + entry.marker.setLatLng([entry.msg.lat, entry.msg.lon]); + entry.marker.setPopupContent(buildVdesPopupHtml(entry.msg)); + } + } + for (const [key, entry] of locatorMarkers.entries()) { + pruneLocatorEntry(key, entry, cutoffMs); + } + if (!aprsMap || T.decodeHistoryReplayActive) { + T.markDecodeMapSyncPending(); + return; + } + rebuildDecodeContactPaths(); + rebuildMapLocatorFilters(); + applyMapFilter(); + } + + function locatorSourceLabel(type) { + if (type === "bookmark") return "Bookmarks"; + if (type === "wspr") return "WSPR"; + if (type === "ft4") return "FT4"; + if (type === "ft2") return "FT2"; + return "FT8"; + } + + function mapSourceLabel(type) { + if (type === "bookmark") return "Bookmarks"; + return String(type || "").toUpperCase(); + } + + function locatorFilterColor(type) { + const hues = locatorThemeHues(); + const lightTheme = T.currentTheme() === "light"; + const sat = lightTheme ? 66 : 76; + const light = lightTheme ? 42 : 56; + const hue = type === "bookmark" + ? hues.bookmark + : (type === "wspr" ? hues.wspr : (type === "ft4" ? hues.ft4 : (type === "ft2" ? hues.ft2 : hues.ft8))); + return `hsl(${hue.toFixed(1)} ${sat}% ${light}%)`; + } + + function mapSourceColor(type) { + if (type === "ais") return "#38bdf8"; + if (type === "vdes") return "#a78bfa"; + if (type === "sat") return "#f59e0b"; + if (type === "aprs") return "#00d17f"; + return locatorFilterColor(type); + } + + function bandForHz(hz) { + const rfHz = normalizeLocatorFreqHz(hz); + if (!Number.isFinite(rfHz) || rfHz <= 0) return null; + let bestBand = null; + let bestDistance = Infinity; + for (const band of HAM_BANDS) { + const distance = Math.abs(Math.log(rfHz / band.nominalHz)); + if (distance < bestDistance) { + bestDistance = distance; + bestBand = band; + } + } + return bestBand; + } + + function collectBandMeta(freqs) { + const out = new Map(); + if (!Array.isArray(freqs)) return out; + for (const hz of freqs) { + const band = bandForHz(hz); + if (band && !out.has(band.label)) out.set(band.label, band.nominalHz); + } + return out; + } + + function assignLocatorMarkerMeta(marker, sourceType, bandMeta) { + if (!marker) return; + const safeMeta = bandMeta instanceof Map ? bandMeta : new Map(); + marker._locatorFilterMeta = { + sourceType, + bands: new Set(safeMeta.keys()), + bandMeta: new Map(safeMeta), + }; + } + + function parseMapColor(input) { + const value = String(input || "").trim(); + if (!value) return null; + const hex = value.match(/^#([0-9a-f]{3,8})$/i); + if (hex) { + const raw = hex[1]; + if (raw.length === 3 || raw.length === 4) { + const chars = raw.split(""); + return { + r: parseInt(chars[0] + chars[0], 16), + g: parseInt(chars[1] + chars[1], 16), + b: parseInt(chars[2] + chars[2], 16), + }; + } + if (raw.length === 6 || raw.length === 8) { + return { + r: parseInt(raw.slice(0, 2), 16), + g: parseInt(raw.slice(2, 4), 16), + b: parseInt(raw.slice(4, 6), 16), + }; + } + } + const rgb = value.match(/^rgba?\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)/i); + if (rgb) { + return { + r: Math.max(0, Math.min(255, Number(rgb[1]))), + g: Math.max(0, Math.min(255, Number(rgb[2]))), + b: Math.max(0, Math.min(255, Number(rgb[3]))), + }; + } + return null; + } + + function rgbToHsl(rgb) { + if (!rgb) return null; + const r = rgb.r / 255; + const g = rgb.g / 255; + const b = rgb.b / 255; + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + const l = (max + min) / 2; + if (max === min) { + return { h: 0, s: 0, l: l * 100 }; + } + const d = max - min; + const s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + let h; + switch (max) { + case r: + h = ((g - b) / d) + (g < b ? 6 : 0); + break; + case g: + h = ((b - r) / d) + 2; + break; + default: + h = ((r - g) / d) + 4; + break; + } + return { h: (h * 60) % 360, s: s * 100, l: l * 100 }; + } + + function wrapHue(hue) { + const value = Number(hue) || 0; + return ((value % 360) + 360) % 360; + } + + function paletteHue(input, fallback) { + const hsl = rgbToHsl(parseMapColor(input)); + return Number.isFinite(hsl?.h) ? hsl.h : fallback; + } + + function locatorThemeHues() { + const pal = T.canvasPalette(); + const baseHue = paletteHue(pal?.spectrumLine, 145); + const waveHue = paletteHue(pal?.waveformLine, baseHue + 34); + const peakHue = paletteHue(pal?.waveformPeak, baseHue - 42); + return { + bookmark: wrapHue(baseHue), + ft8: wrapHue(peakHue), + ft4: wrapHue(peakHue + 30), + ft2: wrapHue(peakHue + 60), + wspr: wrapHue((waveHue + baseHue) / 2), + bandBase: wrapHue((baseHue * 0.65) + (peakHue * 0.35)), + }; + } + + function locatorBandIndex(label) { + const idx = HAM_BANDS.findIndex((band) => band.label === label); + return idx >= 0 ? idx : 0; + } + + function locatorBandChipColor(label) { + const hues = locatorThemeHues(); + const lightTheme = T.currentTheme() === "light"; + const hue = wrapHue(hues.bandBase + locatorBandIndex(label) * 137.508); + const sat = lightTheme ? 68 : 78; + const light = lightTheme ? 44 : 58; + return `hsl(${hue.toFixed(1)} ${sat}% ${light}%)`; + } + + function locatorBandLabelForEntry(entry) { + const meta = entry?.bandMeta instanceof Map ? entry.bandMeta : new Map(); + if (meta.size === 0) return null; + if (mapLocatorFilter.phase === "band" && mapLocatorFilter.bands.size > 0) { + for (const label of mapLocatorFilter.bands) { + if (meta.has(label)) return label; + } + } + let bestLabel = null; + let bestHz = -Infinity; + for (const [label, hz] of meta.entries()) { + const value = Number.isFinite(hz) ? Number(hz) : 0; + if (value > bestHz) { + bestHz = value; + bestLabel = label; + } + } + return bestLabel; + } + + function locatorHueForEntry(entry) { + const hues = locatorThemeHues(); + if (mapLocatorFilter.phase === "band") { + const label = locatorBandLabelForEntry(entry); + if (label) { + return wrapHue(hues.bandBase + locatorBandIndex(label) * 137.508); + } + } + if (entry?.sourceType === "bookmark") return hues.bookmark; + if (entry?.sourceType === "wspr") return hues.wspr; + if (entry?.sourceType === "ft4") return hues.ft4; + if (entry?.sourceType === "ft2") return hues.ft2; + return hues.ft8; + } + + function locatorStyleForEntry(entry, count) { + const safeCount = Math.max(1, Number.isFinite(count) ? count : 1); + const intensity = Math.min(1, Math.log2(safeCount + 1) / 5); + const hue = locatorHueForEntry(entry); + const lightTheme = T.currentTheme() === "light"; + const strokeSat = lightTheme ? 62 : 74; + const fillSat = lightTheme ? 68 : 78; + const strokeLight = lightTheme ? 40 : 56; + const fillLight = lightTheme ? 60 : 42; + return { + color: `hsl(${hue.toFixed(1)} ${Math.min(92, strokeSat + intensity * 10).toFixed(1)}% ${Math.max(24, strokeLight - intensity * 4).toFixed(1)}%)`, + opacity: 0.42 + intensity * 0.5, + weight: 1 + intensity * 1.2, + fillColor: `hsl(${hue.toFixed(1)} ${Math.min(96, fillSat + intensity * 8).toFixed(1)}% ${Math.max(20, fillLight - intensity * 5).toFixed(1)}%)`, + fillOpacity: 0.16 + intensity * 0.34, + }; + } + + function locatorEntryCount(entry) { + if (Array.isArray(entry?.bookmarks)) return Math.max(entry.bookmarks.length, 1); + if (entry?.stationDetails instanceof Map) return Math.max(entry.stationDetails.size, 1); + if (entry?.stations instanceof Set) return Math.max(entry.stations.size, 1); + return 1; + } + + function locatorEntryForMarker(marker) { + if (!marker) return null; + for (const entry of locatorMarkers.values()) { + if (entry?.marker === marker) return entry; + } + return null; + } + + function syncLocatorMarkerStyles() { + for (const entry of locatorMarkers.values()) { + if (!entry?.marker) continue; + entry.marker.setStyle(locatorStyleForEntry(entry, locatorEntryCount(entry))); + } + for (const entry of decodeContactPaths.values()) { + if (!entry?.line) continue; + const color = decodeContactPathColor(entry); + entry.line.setStyle({ color, opacity: 0.78 }); + } + } + + function stopSelectedLocatorPulse() { + if (selectedLocatorPulseRaf != null) { + cancelAnimationFrame(selectedLocatorPulseRaf); + selectedLocatorPulseRaf = null; + } + } + + function startSelectedLocatorPulse(marker) { + stopSelectedLocatorPulse(); + if (!marker || !aprsMap || !aprsMap.hasLayer(marker)) return; + const tick = (ts) => { + if (!selectedLocatorMarker || selectedLocatorMarker !== marker || !aprsMap || !aprsMap.hasLayer(marker)) { + return; + } + const entry = locatorEntryForMarker(marker); + const base = locatorStyleForEntry(entry, locatorEntryCount(entry)); + const phase = (ts % 1600) / 1600; + const wave = (Math.sin(phase * Math.PI * 2 - Math.PI / 2) + 1) / 2; + marker.setStyle({ + ...base, + opacity: Math.min(1, (base.opacity || 0.8) + 0.12 * wave), + weight: (base.weight || 1.8) + 1.8 * wave, + }); + selectedLocatorPulseRaf = requestAnimationFrame(tick); + }; + selectedLocatorPulseRaf = requestAnimationFrame(tick); + } + + function clearMapRadioPath() { + for (const p of aprsRadioPaths) p.remove(); + aprsRadioPaths = []; + } + + function clearDecodeContactPathRender(entry) { + if (!entry) return; + if (entry.line) { + entry.line.remove(); + entry.line = null; + } + if (entry.labelMarker) { + entry.labelMarker.remove(); + entry.labelMarker = null; + } + } + + function clearDecodeContactPaths() { + for (const entry of decodeContactPaths.values()) { + clearDecodeContactPathRender(entry); + } + decodeContactPaths.clear(); + updateMapPathsAnimationClass(); + } + + const MAP_PATHS_STATIC_THRESHOLD = 20; + function updateMapPathsAnimationClass() { + const mapEl = document.getElementById("aprs-map"); + if (!mapEl) return; + mapEl.classList.toggle("map-paths-static", decodeContactPaths.size > MAP_PATHS_STATIC_THRESHOLD); + } + + function formatDecodeContactDistance(distanceKm) { + const text = formatDistanceKm(distanceKm); + return text || "--"; + } + + function decodeLocatorPathVisibility(grid) { + const normalizedGrid = String(grid || "").trim().toUpperCase(); + if (!normalizedGrid || !aprsMap) return false; + for (const entry of locatorMarkers.values()) { + if (!entry || entry.grid !== normalizedGrid) continue; + if (entry.sourceType !== "ft8" && entry.sourceType !== "wspr") continue; + if (entry.marker && aprsMap.hasLayer(entry.marker)) return true; + } + return false; + } + + function midpointLatLon(a, b) { + if (!a || !b) return null; + if (!Number.isFinite(a.lat) || !Number.isFinite(a.lon) || !Number.isFinite(b.lat) || !Number.isFinite(b.lon)) { + return null; + } + return { + lat: (a.lat + b.lat) / 2, + lon: (a.lon + b.lon) / 2, + }; + } + + function decodeContactPathColor(entry) { + if (entry?.bandLabel) return locatorBandChipColor(entry.bandLabel); + const srcEntry = locatorMarkers.get(entry?.sourceGrid); + if (srcEntry) { + const label = locatorBandLabelForEntry(srcEntry); + if (label) return locatorBandChipColor(label); + return locatorStyleForEntry(srcEntry, locatorEntryCount(srcEntry)).color; + } + return locatorFilterColor("ft8"); + } + + function ensureDecodeContactPathRendered(entry) { + if (!entry || !aprsMap) return; + const linePoints = [ + [entry.from.lat, entry.from.lon], + [entry.to.lat, entry.to.lon], + ]; + const color = decodeContactPathColor(entry); + if (!entry.line) { + entry.line = L.polyline(linePoints, { + color, + opacity: 0.78, + className: "decode-contact-path", + weight: 2.8, + interactive: false, + }).addTo(aprsMap); + } else { + entry.line.setLatLngs(linePoints); + entry.line.setStyle({ color, opacity: 0.78 }); + if (!aprsMap.hasLayer(entry.line)) entry.line.addTo(aprsMap); + } + const mid = midpointLatLon(entry.from, entry.to); + if (!mid) return; + const title = `${entry.source} ↔ ${entry.target} · ${entry.distanceText}`; + const icon = L.divIcon({ + className: "decode-contact-distance-label", + html: `${escapeMapHtml(entry.distanceText)}`, + }); + if (!entry.labelMarker) { + entry.labelMarker = L.marker([mid.lat, mid.lon], { + icon, + interactive: false, + keyboard: false, + zIndexOffset: 900, + }).addTo(aprsMap); + } else { + entry.labelMarker.setLatLng([mid.lat, mid.lon]); + entry.labelMarker.setIcon(icon); + if (!aprsMap.hasLayer(entry.labelMarker)) entry.labelMarker.addTo(aprsMap); + } + if (typeof entry.line.bringToBack === "function") entry.line.bringToBack(); + } + + function decodeContactPathMatchesCurrentMap(entry) { + return decodeLocatorPathVisibility(entry.sourceGrid) + && decodeLocatorPathVisibility(entry.targetGrid); + } + + function decodeContactPathRenderVisible(entry) { + return mapDecodeContactPathsEnabled + && decodeContactPathMatchesCurrentMap(entry); + } + + function syncDecodeContactPathVisibility() { + if (selectedMapQsoKey) { + const selectedEntry = decodeContactPaths.get(selectedMapQsoKey); + if (!selectedEntry || !decodeContactPathMatchesCurrentMap(selectedEntry)) { + selectedMapQsoKey = null; + } + } + for (const entry of decodeContactPaths.values()) { + const visible = decodeContactPathRenderVisible(entry) + && (!selectedMapQsoKey || entry.pathKey === selectedMapQsoKey); + if (!visible) { + clearDecodeContactPathRender(entry); + continue; + } + ensureDecodeContactPathRendered(entry); + } + scheduleStatsRender(); + updateMapPathsAnimationClass(); + } + + function _resolveReceiverLocations(rigIds) { + // Return all unique receiver locations for the given rig(s) + const seen = new Set(); + const locations = []; + if (rigIds && rigIds.size) { + for (const rid of rigIds) { + const rig = T.serverRigs.find(r => r.remote === rid); + if (rig && rig.latitude != null && rig.longitude != null) { + const key = _receiverLocationKey(rig.latitude, rig.longitude); + if (!seen.has(key)) { + seen.add(key); + locations.push([rig.latitude, rig.longitude]); + } + } + } + } + // Fall back to active rig location if no specific locations found + if (locations.length === 0 && T.serverLat != null && T.serverLon != null) { + locations.push([T.serverLat, T.serverLon]); + } + return locations; + } + + function setMapRadioPathTo(lat, lon, color, className = "aprs-radio-path", rigIds) { + clearMapRadioPath(); + if (!mapP2pRadioPathsEnabled || !Number.isFinite(lat) || !Number.isFinite(lon) || !aprsMap) { + return; + } + const sources = _resolveReceiverLocations(rigIds); + for (const src of sources) { + aprsRadioPaths.push( + L.polyline( + [src, [lat, lon]], + { color, opacity: 0.85, weight: 2, interactive: false, className } + ).addTo(aprsMap) + ); + } + } + + function locatorMarkerCenter(marker) { + if (!marker) return null; + if (typeof marker.getBounds === "function") { + const bounds = marker.getBounds(); + if (bounds && typeof bounds.getCenter === "function") { + const center = bounds.getCenter(); + if (Number.isFinite(center?.lat) && Number.isFinite(center?.lng)) { + return { lat: center.lat, lon: center.lng }; + } + } + } + if (typeof marker.getLatLng === "function") { + const ll = marker.getLatLng(); + if (Number.isFinite(ll?.lat) && Number.isFinite(ll?.lng)) { + return { lat: ll.lat, lon: ll.lng }; + } + } + return null; + } + + function setLocatorMarkerHighlight(marker, enabled) { + const element = typeof marker?.getElement === "function" ? marker.getElement() : marker?._path; + if (!element) return; + element.classList.toggle("trx-locator-selected", !!enabled); + } + + function setSelectedLocatorMarker(marker) { + if (selectedLocatorMarker && selectedLocatorMarker !== marker) { + setLocatorMarkerHighlight(selectedLocatorMarker, false); + const prevEntry = locatorEntryForMarker(selectedLocatorMarker); + if (prevEntry?.marker) { + prevEntry.marker.setStyle(locatorStyleForEntry(prevEntry, locatorEntryCount(prevEntry))); + } + } + stopSelectedLocatorPulse(); + selectedLocatorMarker = marker || null; + if (selectedLocatorMarker) { + setLocatorMarkerHighlight(selectedLocatorMarker, true); + startSelectedLocatorPulse(selectedLocatorMarker); + } + } + + function isLocatorOverlay(marker) { + const type = marker?.__trxType; + return type === "bookmark" || type === "ft8" || type === "ft4" || type === "ft2" || type === "wspr"; + } + + function sendLocatorOverlayToBack(marker) { + if (!isLocatorOverlay(marker) || typeof marker?.bringToBack !== "function") return; + marker.bringToBack(); + } + + function renderMapLocatorChipRow(container, items, selectedSet, kind) { + if (!container) return; + container.replaceChildren(); + if (!Array.isArray(items) || items.length === 0) { + container.innerHTML = `No ${kind === "band" ? "bands" : "sources"} available`; + return; + } + let helperText = ""; + const sourceKeys = kind === "source" ? Object.keys(DEFAULT_MAP_SOURCE_FILTER) : []; + const noneSelected = kind === "source" && sourceKeys.every((k) => !mapFilter[k]); + if (kind === "source") { + if (noneSelected) { + helperText = "All sources visible \u2014 click to filter"; + } + } else if (!(selectedSet instanceof Set) || selectedSet.size === 0) { + helperText = `All ${kind === "band" ? "bands" : "sources"} visible by default`; + } + for (const item of items) { + const btn = document.createElement("button"); + btn.type = "button"; + btn.className = "map-locator-chip"; + const isActive = kind === "source" ? !!mapFilter[item.key] : selectedSet.has(item.key); + if (kind === "source" && noneSelected) { + btn.classList.add("is-default"); + } else if (!isActive) { + btn.classList.add("is-inactive"); + } + btn.dataset.filterKind = kind; + btn.dataset.filterKey = item.key; + btn.style.setProperty("--chip-color", item.color); + btn.innerHTML = `${escapeMapHtml(item.label)}`; + container.appendChild(btn); + } + if (helperText) { + const hint = document.createElement("span"); + hint.className = "map-locator-empty"; + hint.textContent = helperText; + container.appendChild(hint); + } + } + + function renderMapLocatorPhaseRow(container, phase) { + if (!container) return; + container.replaceChildren(); + const phases = [ + { key: "type", label: "Source" }, + { key: "band", label: "Band" }, + ]; + for (const item of phases) { + const btn = document.createElement("button"); + btn.type = "button"; + btn.className = "map-locator-phase-btn"; + if (phase === item.key) btn.classList.add("is-active"); + btn.dataset.phase = item.key; + btn.textContent = item.label; + container.appendChild(btn); + } + } + + function renderMapLocatorLegend(phase, sourceItems, bandItems) { + const legendEl = document.getElementById("map-band-legend"); + if (!legendEl) return; + const isSourcePhase = phase === "type"; + const items = Array.isArray(isSourcePhase ? sourceItems : bandItems) + ? (isSourcePhase ? sourceItems : bandItems) + : []; + if (items.length === 0) { + legendEl.classList.add("is-empty"); + legendEl.replaceChildren(); + return; + } + legendEl.classList.remove("is-empty"); + const rows = items + .map((item) => { + const label = escapeMapHtml(item.label); + const color = escapeMapHtml(item.color); + return `${label}`; + }) + .join(""); + const title = isSourcePhase ? "Source Colors" : "Band Colors"; + legendEl.innerHTML = `
    ${title}
    ${rows}
    `; + } + + window.enableMapSourceFilter = function(key) { + if (Object.prototype.hasOwnProperty.call(mapFilter, key) && !mapFilter[key]) { + mapFilter[key] = true; + rebuildMapLocatorFilters(); + applyMapFilter(); + } + }; + + function rebuildMapLocatorFilters() { + const phaseEl = document.getElementById("map-locator-phase"); + const choiceEl = document.getElementById("map-locator-choice-filter"); + const choiceLabelEl = document.getElementById("map-locator-choice-label"); + + const availableSources = new Set(); + for (const entry of aisMarkers.values()) { + if (entry?.visibleInHistoryWindow) { + availableSources.add("ais"); + break; + } + } + for (const entry of vdesMarkers.values()) { + if (entry?.visibleInHistoryWindow) { + availableSources.add("vdes"); + break; + } + } + for (const entry of stationMarkers.values()) { + if (entry?.type === "aprs" && entry?.visibleInHistoryWindow) { + availableSources.add("aprs"); + break; + } + } + const bandMap = new Map(); + for (const entry of locatorMarkers.values()) { + const sourceType = entry?.sourceType; + if (!sourceType) continue; + if ((sourceType === "ft8" || sourceType === "ft4" || sourceType === "ft2" || sourceType === "wspr") && !entry?.visibleInHistoryWindow) continue; + availableSources.add(sourceType); + const meta = entry?.bandMeta instanceof Map ? entry.bandMeta : new Map(); + for (const [label, hz] of meta.entries()) { + if (!bandMap.has(label)) { + bandMap.set(label, { + key: label, + label, + color: locatorBandChipColor(label), + kind: "band", + sortHz: Number.isFinite(hz) ? hz : 0, + }); + continue; + } + const existing = bandMap.get(label); + if (existing && Number.isFinite(hz) && (!Number.isFinite(existing.sortHz) || hz > existing.sortHz)) { + existing.sortHz = hz; + } + if (existing && !existing.color) { + existing.color = locatorBandChipColor(label); + } + } + } + + for (const key of Array.from(mapLocatorFilter.bands)) { + if (!bandMap.has(key)) mapLocatorFilter.bands.delete(key); + } + + const sourceItems = ["ais", "vdes", "aprs", "bookmark", "ft8", "ft4", "ft2", "wspr"] + .filter((key) => availableSources.has(key)) + .map((key) => ({ + key, + label: mapSourceLabel(key), + color: mapSourceColor(key), + kind: "source", + })); + const bandItems = Array.from(bandMap.values()) + .sort((a, b) => (b.sortHz - a.sortHz) || a.label.localeCompare(b.label)); + + renderMapLocatorLegend(mapLocatorFilter.phase, sourceItems, bandItems); + if (!phaseEl || !choiceEl || !choiceLabelEl) return; + + renderMapLocatorPhaseRow(phaseEl, mapLocatorFilter.phase); + if (mapLocatorFilter.phase === "band") { + choiceLabelEl.textContent = "Visible Bands"; + renderMapLocatorChipRow(choiceEl, bandItems, mapLocatorFilter.bands, "band"); + } else { + choiceLabelEl.textContent = "Visible Sources"; + renderMapLocatorChipRow(choiceEl, sourceItems, null, "source"); + } + syncLocatorMarkerStyles(); + syncDecodeContactPathVisibility(); + } + + function markerPassesLocatorFilters(marker) { + const meta = marker?._locatorFilterMeta; + if (!meta) return true; + if (mapLocatorFilter.phase === "band") { + if (mapLocatorFilter.bands.size === 0) return true; + if (!(meta.bands instanceof Set)) return false; + for (const label of mapLocatorFilter.bands) { + if (meta.bands.has(label)) return true; + } + return false; + } + return true; + } + + function markerSearchText(marker) { + const type = marker?.__trxType; + if (type === "bookmark" || type === "ft8" || type === "ft4" || type === "ft2" || type === "wspr") { + const entry = locatorEntryForMarker(marker); + const parts = []; + if (entry?.grid) parts.push(entry.grid); + if (entry?.sourceType) parts.push(locatorSourceLabel(entry.sourceType)); + if (entry?.bandMeta instanceof Map) parts.push(...Array.from(entry.bandMeta.keys())); + if (Array.isArray(entry?.bookmarks)) { + for (const bm of entry.bookmarks) { + if (bm?.name) parts.push(String(bm.name)); + if (bm?.locator) parts.push(String(bm.locator)); + if (bm?.mode) parts.push(String(bm.mode)); + if (bm?.category) parts.push(String(bm.category)); + if (bm?.comment) parts.push(String(bm.comment)); + if (Number.isFinite(bm?.freq_hz)) parts.push(String(Math.round(Number(bm.freq_hz)))); + } + } + if (entry?.stations instanceof Set) { + parts.push(...Array.from(entry.stations.values()).map((v) => String(v))); + } + if (entry?.stationDetails instanceof Map) { + for (const detail of entry.stationDetails.values()) { + if (detail?.station) parts.push(String(detail.station)); + if (detail?.message) parts.push(String(detail.message)); + if (Number.isFinite(detail?.freq_hz)) parts.push(String(Math.round(Number(detail.freq_hz)))); + } + } + return parts.join(" ").toLowerCase(); + } + if (type === "aprs") { + const call = marker?._aprsCall ? String(marker._aprsCall) : ""; + const entry = stationMarkers.get(call); + const info = entry?.info ? String(entry.info) : ""; + const pktRaw = entry?.pkt?.raw ? String(entry.pkt.raw) : ""; + return `${call} ${info} ${pktRaw}`.toLowerCase(); + } + if (type === "ais") { + const key = marker?._aisMmsi ? String(marker._aisMmsi) : ""; + const msg = aisMarkers.get(key)?.msg; + return [ + key, + msg?.name, + msg?.callsign, + msg?.destination, + Number.isFinite(msg?.mmsi) ? String(msg.mmsi) : "", + Number.isFinite(msg?.lat) ? String(msg.lat) : "", + Number.isFinite(msg?.lon) ? String(msg.lon) : "", + ].join(" ").toLowerCase(); + } + if (type === "vdes") { + const key = marker?._vdesKey ? String(marker._vdesKey) : ""; + const msg = vdesMarkers.get(key)?.msg; + return [ + key, + msg?.name, + msg?.mmsi, + msg?.message, + msg?.raw, + Number.isFinite(msg?.lat) ? String(msg.lat) : "", + Number.isFinite(msg?.lon) ? String(msg.lon) : "", + ].join(" ").toLowerCase(); + } + return ""; + } + + function markerPassesSearchFilter(marker) { + const query = String(mapSearchFilter || "").trim().toLowerCase(); + if (!query) return true; + const terms = query.split(/\s+/).filter(Boolean); + if (terms.length === 0) return true; + const haystack = markerSearchText(marker); + if (!haystack) return false; + return terms.every((term) => haystack.includes(term)); + } + + function _receiverLocationKey(lat, lon) { + return lat.toFixed(6) + "," + lon.toFixed(6); + } + + function syncAprsReceiverMarker() { + if (!aprsMap) return; + // Build unique locations from all rigs + const locGroups = {}; // key -> { lat, lon, rigs: [...] } + const activeId = T.lastActiveRigId || T.serverActiveRigId || null; + for (const rig of T.serverRigs) { + if (!rig || !rig.remote) continue; + const lat = rig.latitude, lon = rig.longitude; + if (lat == null || lon == null || !Number.isFinite(lat) || !Number.isFinite(lon)) continue; + const key = _receiverLocationKey(lat, lon); + if (!locGroups[key]) locGroups[key] = { lat, lon, rigs: [], hasActive: false }; + locGroups[key].rigs.push(rig.remote); + if (rig.remote === activeId) locGroups[key].hasActive = true; + } + // Fallback: if active rig has SSE location but isn't in T.serverRigs yet + if (T.serverLat != null && T.serverLon != null) { + const key = _receiverLocationKey(T.serverLat, T.serverLon); + if (!locGroups[key]) locGroups[key] = { lat: T.serverLat, lon: T.serverLon, rigs: [], hasActive: true }; + if (!locGroups[key].hasActive) locGroups[key].hasActive = true; + } + + const seen = new Set(); + let didInitialView = false; + for (const [key, group] of Object.entries(locGroups)) { + seen.add(key); + const latLng = [group.lat, group.lon]; + const isActive = group.hasActive; + let m = aprsMapReceiverMarkers[key]; + if (!m) { + m = L.circleMarker(latLng, { + radius: isActive ? 8 : 6, + className: "trx-receiver-marker" + (isActive ? "" : " trx-receiver-marker-secondary"), + fillOpacity: isActive ? 0.8 : 0.6, + }).addTo(aprsMap).bindPopup(""); + m._receiverLocKey = key; + m._receiverRigs = group.rigs; + aprsMapReceiverMarkers[key] = m; + if (isActive && !didInitialView) { + aprsMap.setView(latLng, Math.max(1, T.initialMapZoom)); + didInitialView = true; + } + } else { + m.setLatLng(latLng); + m._receiverRigs = group.rigs; + m.setRadius(isActive ? 8 : 6); + if (!aprsMap.hasLayer(m)) m.addTo(aprsMap); + } + // Keep legacy reference for the active-rig location marker + if (isActive) aprsMapReceiverMarker = m; + } + // Remove markers for locations no longer present + for (const key of Object.keys(aprsMapReceiverMarkers)) { + if (!seen.has(key)) { + const m = aprsMapReceiverMarkers[key]; + if (m && aprsMap.hasLayer(m)) m.removeFrom(aprsMap); + delete aprsMapReceiverMarkers[key]; + } + } + if (!seen.size) aprsMapReceiverMarker = null; + } + + // --------------------------------------------------------------------------- + // Weather satellite image overlays on the map + // --------------------------------------------------------------------------- + + const satOverlays = new Map(); // key -> { overlay, track, msg } + let satOverlaySeq = 0; + + window.addSatMapOverlay = function(msg) { + if (!msg || !msg.geo_bounds || !msg.path) return; + const bounds = msg.geo_bounds; + // bounds = [south, west, north, east] + if (!Array.isArray(bounds) || bounds.length !== 4) return; + const latLngBounds = L.latLngBounds( + [bounds[0], bounds[1]], // SW + [bounds[2], bounds[3]] // NE + ); + const key = "sat-" + (++satOverlaySeq); + const overlay = L.imageOverlay(msg.path, latLngBounds, { + opacity: 0.55, + interactive: true, + zIndex: 300, + }); + overlay.__trxType = "sat"; + overlay.__trxSatKey = key; + overlay.__trxRigIds = msg.rig_id ? new Set([msg.rig_id]) : new Set(); + overlay.__trxHistoryVisible = true; + mapMarkers.add(overlay); + + // Build a popup for the overlay + const decoder = "Meteor LRPT"; + const satellite = msg.satellite || "Unknown"; + const ts = msg.ts_ms ? new Date(msg.ts_ms).toLocaleString() : ""; + overlay.bindPopup( + `
    ` + ); + + // Add ground track polyline if available + let track = null; + if (msg.ground_track && Array.isArray(msg.ground_track) && msg.ground_track.length >= 2) { + const latlngs = msg.ground_track.map(function(pt) { return [pt[0], pt[1]]; }); + track = L.polyline(latlngs, { + color: mapSourceColor("sat"), + weight: 2, + opacity: 0.7, + dashArray: "6, 4", + }); + track.__trxType = "sat"; + track.__trxSatKey = key; + track.__trxRigIds = overlay.__trxRigIds; + track.__trxHistoryVisible = true; + mapMarkers.add(track); + if (aprsMap) { + track.addTo(aprsMap); + } + } + + satOverlays.set(key, { overlay: overlay, track: track, msg: msg }); + + if (aprsMap) { + overlay.addTo(aprsMap); + } + applyMapFilter(); + }; + + window.removeSatMapOverlay = function(key) { + const entry = satOverlays.get(key); + if (!entry) return; + if (entry.overlay) { + mapMarkers.delete(entry.overlay); + if (aprsMap && aprsMap.hasLayer(entry.overlay)) entry.overlay.removeFrom(aprsMap); + } + if (entry.track) { + mapMarkers.delete(entry.track); + if (aprsMap && aprsMap.hasLayer(entry.track)) entry.track.removeFrom(aprsMap); + } + satOverlays.delete(key); + }; + + window.clearSatMapOverlays = function() { + for (const [key] of satOverlays) { + window.removeSatMapOverlay(key); + } + }; + + window.clearMapMarkersByType = function(type) { + if (type === "aprs") { + selectedAprsTrackCall = null; + stationMarkers.forEach((entry) => { + if (entry && entry.marker) { + if (aprsMap && aprsMap.hasLayer(entry.marker)) entry.marker.removeFrom(aprsMap); + mapMarkers.delete(entry.marker); + } + if (entry && entry.track) { + if (aprsMap && aprsMap.hasLayer(entry.track)) entry.track.removeFrom(aprsMap); + mapMarkers.delete(entry.track); + } + }); + stationMarkers.clear(); + return; + } + + if (type === "ais") { + aisMarkers.forEach((entry) => { + if (entry && entry.marker) { + if (aprsMap && aprsMap.hasLayer(entry.marker)) entry.marker.removeFrom(aprsMap); + mapMarkers.delete(entry.marker); + } + if (entry && entry.track) { + if (aprsMap && aprsMap.hasLayer(entry.track)) entry.track.removeFrom(aprsMap); + mapMarkers.delete(entry.track); + } + }); + selectedAisTrackMmsi = null; + aisMarkers.clear(); + return; + } + + if (type === "vdes") { + vdesMarkers.forEach((entry) => { + if (entry && entry.marker) { + if (aprsMap && aprsMap.hasLayer(entry.marker)) entry.marker.removeFrom(aprsMap); + mapMarkers.delete(entry.marker); + } + }); + vdesMarkers.clear(); + return; + } + + if (type === "sat") { + window.clearSatMapOverlays(); + return; + } + + if (type === "ft8" || type === "ft4" || type === "ft2" || type === "wspr") { + const prefix = `${type}:`; + for (const [key, entry] of locatorMarkers.entries()) { + if (!key.startsWith(prefix)) continue; + if (entry && entry.marker) { + if (entry.marker === selectedLocatorMarker) { + setSelectedLocatorMarker(null); + clearMapRadioPath(); + } + if (aprsMap && aprsMap.hasLayer(entry.marker)) entry.marker.removeFrom(aprsMap); + mapMarkers.delete(entry.marker); + } + locatorMarkers.delete(key); + } + rebuildMapLocatorFilters(); + rebuildDecodeContactPaths(); + } + + if (type === "bookmark") { + for (const [key, entry] of locatorMarkers.entries()) { + if (!key.startsWith("bookmark:")) continue; + if (entry && entry.marker) { + if (entry.marker === selectedLocatorMarker) { + setSelectedLocatorMarker(null); + clearMapRadioPath(); + } + if (aprsMap && aprsMap.hasLayer(entry.marker)) entry.marker.removeFrom(aprsMap); + mapMarkers.delete(entry.marker); + } + locatorMarkers.delete(key); + } + rebuildMapLocatorFilters(); + } + }; + + function mapTileSpecForTheme(theme) { + if (theme === "dark") { + return { + url: "https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png", + options: { + maxZoom: 19, + subdomains: "abcd", + attribution: '© OpenStreetMap © CARTO', + }, + }; + } + return { + url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", + options: { + maxZoom: 19, + attribution: '© OpenStreetMap', + }, + }; + } + + function updateMapBaseLayerForTheme(theme) { + if (!aprsMap) return; + if (aprsMapBaseLayer) { + aprsMap.removeLayer(aprsMapBaseLayer); + aprsMapBaseLayer = null; + } + const spec = mapTileSpecForTheme(theme); + aprsMapBaseLayer = L.tileLayer(spec.url, spec.options).addTo(aprsMap); + } + + function mapStageEl() { + return document.getElementById("map-stage"); + } + + function mapIsFullscreen() { + const stage = mapStageEl(); + if (!stage) return false; + return document.fullscreenElement === stage + || document.webkitFullscreenElement === stage + || stage.classList.contains("map-fake-fullscreen"); + } + + function mapExitFakeFullscreen() { + const stage = mapStageEl(); + if (!stage) return; + stage.classList.remove("map-fake-fullscreen"); + document.body.classList.remove("map-fake-fullscreen-active"); + } + + function mapEnterFakeFullscreen() { + const stage = mapStageEl(); + if (!stage) return; + stage.classList.add("map-fake-fullscreen"); + document.body.classList.add("map-fake-fullscreen-active"); + } + + function updateMapFullscreenButton() { + const btn = document.getElementById("map-fullscreen-btn"); + if (!btn) return; + btn.textContent = mapIsFullscreen() ? "Exit Fullscreen" : "Fullscreen"; + } + + function applyMapOverlayPanelVisibility() { + const panel = document.querySelector("#map-stage .map-overlay-panel"); + if (!panel) return; + panel.classList.toggle("is-hidden", !mapOverlayPanelVisible); + } + + function updateMapOverlayToggleButton() { + const btn = document.getElementById("map-overlay-toggle-btn"); + if (!btn) return; + btn.textContent = mapOverlayPanelVisible ? "Hide Filters" : "Show Filters"; + } + + async function toggleMapFullscreen() { + const stage = mapStageEl(); + if (!stage) return; + try { + const isNative = document.fullscreenElement === stage || document.webkitFullscreenElement === stage; + const isFake = stage.classList.contains("map-fake-fullscreen"); + if (isNative) { + if (document.exitFullscreen) await document.exitFullscreen(); + else if (document.webkitExitFullscreen) await document.webkitExitFullscreen(); + } else if (isFake) { + mapExitFakeFullscreen(); + } else { + // Try native fullscreen; fall back to CSS fake fullscreen when the + // API is unavailable or blocked (e.g. mobile Safari). + const nativeFn = stage.requestFullscreen || stage.webkitRequestFullscreen; + if (nativeFn) { + try { + await nativeFn.call(stage); + } catch (_) { + mapEnterFakeFullscreen(); + } + } else { + mapEnterFakeFullscreen(); + } + } + } catch (err) { + console.error("Map fullscreen toggle failed", err); + } finally { + updateMapFullscreenButton(); + requestAnimationFrame(() => sizeAprsMapToViewport()); + } + } + + // Allow Escape to exit CSS fake fullscreen (native fullscreen handles its own Escape). + document.addEventListener("keydown", (e) => { + if (e.key === "Escape") { + const stage = mapStageEl(); + if (stage && stage.classList.contains("map-fake-fullscreen")) { + mapExitFakeFullscreen(); + updateMapFullscreenButton(); + requestAnimationFrame(() => sizeAprsMapToViewport()); + } + } + }); + + function materializeBufferedMapLayers() { + if (!aprsMap) return; + for (const [key, entry] of locatorMarkers) { + if (!key.startsWith("bookmark:") || entry?.marker || !entry?.grid) continue; + const bounds = maidenheadToBounds(entry.grid); + if (!bounds) continue; + entry.sourceType = "bookmark"; + entry.bandMeta = collectBandMeta((entry.bookmarks || []).map((bm) => Number(bm?.freq_hz))); + entry.marker = L.rectangle(bounds, locatorStyleForEntry(entry, entry.bookmarks?.length || 1)) + .addTo(aprsMap) + .bindPopup(buildBookmarkLocatorPopupHtml(entry.grid, entry.bookmarks || [])); + entry.marker.__trxType = "bookmark"; + sendLocatorOverlayToBack(entry.marker); + assignLocatorMarkerMeta(entry.marker, entry.sourceType, entry.bandMeta); + mapMarkers.add(entry.marker); + } + pruneMapHistory(); + } + + let stageResizeObserver = null; + function initAprsMap() { + if (typeof L === "undefined") return; + const mapEl = document.getElementById("aprs-map"); + if (!mapEl) return; + sizeAprsMapToViewport(); + if (aprsMap) return; + + const hasLocation = T.serverLat != null && T.serverLon != null; + const center = hasLocation ? [T.serverLat, T.serverLon] : [20, 0]; + const zoom = hasLocation ? T.initialMapZoom : 2; + + aprsMap = L.map("aprs-map").setView(center, zoom); + + // Observe the parent stage for size changes. Display:none → "" on the + // map tab, late-arriving content above the map, or any other layout + // shift would otherwise leave Leaflet's internal pane sized against + // stale dimensions until the user clicked the map. Observing the + // *parent* (not #aprs-map itself, which we resize) avoids feedback + // loops from sizeAprsMapToViewport's own height assignments. + const stage = mapStageEl(); + if (stage && typeof ResizeObserver !== "undefined") { + if (stageResizeObserver) stageResizeObserver.disconnect(); + stageResizeObserver = new ResizeObserver(() => sizeAprsMapToViewport()); + stageResizeObserver.observe(stage); + } + updateMapBaseLayerForTheme(T.currentTheme()); + syncAprsReceiverMarker(); + + // Rebuild popup content on open (keeps age/distance/rig list fresh) + aprsMap.on("popupopen", function(e) { + const marker = e.popup._source; + clearMapRadioPath(); + setSelectedLocatorMarker(null); + if (selectedAprsTrackCall) { + const prevEntry = stationMarkers.get(String(selectedAprsTrackCall)); + if (prevEntry && prevEntry.track && aprsMap && aprsMap.hasLayer(prevEntry.track)) { + prevEntry.track.removeFrom(aprsMap); + } + selectedAprsTrackCall = null; + } + if (selectedAisTrackMmsi) { + selectedAisTrackMmsi = null; + syncSelectedAisTrackVisibility(); + } + + if (marker._receiverLocKey) { + e.popup.setContent(buildReceiverPopupHtml(marker._receiverRigs || [])); + return; + } + + if (!marker) return; + const ll = typeof marker.getLatLng === "function" ? marker.getLatLng() : null; + + if (marker._aprsCall) { + if (!ll) return; + const entry = stationMarkers.get(marker._aprsCall); + if (!entry) return; + e.popup.setContent(buildAprsPopupHtml(marker._aprsCall, ll.lat, ll.lng, entry.info || "", entry.pkt)); + refreshAprsTrack(String(marker._aprsCall), entry); + if (entry.track && aprsMap && mapFilter.aprs && !aprsMap.hasLayer(entry.track)) { + entry.track.addTo(aprsMap); + } + selectedAprsTrackCall = String(marker._aprsCall); + setMapRadioPathTo(ll.lat, ll.lng, mapSourceColor("aprs"), "aprs-radio-path", marker.__trxRigIds); + return; + } + + if (marker._aisMmsi) { + if (!ll) return; + const entry = aisMarkers.get(String(marker._aisMmsi)); + if (!entry || !entry.msg) return; + e.popup.setContent(buildAisPopupHtml(entry.msg)); + refreshAisTrack(String(marker._aisMmsi), entry); + selectedAisTrackMmsi = String(marker._aisMmsi); + syncSelectedAisTrackVisibility(); + setMapRadioPathTo(ll.lat, ll.lng, mapSourceColor("ais"), "aprs-radio-path", marker.__trxRigIds); + return; + } + + if (marker._vdesKey) { + if (!ll) return; + const entry = vdesMarkers.get(String(marker._vdesKey)); + if (!entry || !entry.msg) return; + e.popup.setContent(buildVdesPopupHtml(entry.msg)); + setMapRadioPathTo(ll.lat, ll.lng, mapSourceColor("vdes"), "aprs-radio-path", marker.__trxRigIds); + return; + } + + if (marker.__trxType === "ft8" || marker.__trxType === "ft4" || marker.__trxType === "ft2" || marker.__trxType === "wspr") { + const center = locatorMarkerCenter(marker); + if (center) { + setSelectedLocatorMarker(marker); + const lEntry = locatorEntryForMarker(marker); + const lColor = lEntry ? locatorStyleForEntry(lEntry, locatorEntryCount(lEntry)).color : locatorFilterColor(marker.__trxType); + setMapRadioPathTo(center.lat, center.lon, lColor, "locator-radio-path", marker.__trxRigIds); + } + } else if (marker.__trxType === "bookmark") { + setSelectedLocatorMarker(marker); + } + }); + + aprsMap.on("popupclose", function() { + clearMapRadioPath(); + setSelectedLocatorMarker(null); + if (selectedAprsTrackCall) { + const entry = stationMarkers.get(String(selectedAprsTrackCall)); + if (entry && entry.track && aprsMap && aprsMap.hasLayer(entry.track)) { + entry.track.removeFrom(aprsMap); + } + selectedAprsTrackCall = null; + } + if (selectedAisTrackMmsi) { + selectedAisTrackMmsi = null; + syncSelectedAisTrackVisibility(); + } + }); + + materializeBufferedMapLayers(); + + const locatorPhaseEl = document.getElementById("map-locator-phase"); + const locatorChoiceEl = document.getElementById("map-locator-choice-filter"); + const mapSearchEl = document.getElementById("map-search-filter"); + const mapHistoryLimitEl = document.getElementById("map-history-limit"); + const mapP2pPathsToggleEl = document.getElementById("map-p2p-paths-toggle"); + const mapContactPathsToggleEl = document.getElementById("map-contact-paths-toggle"); + const fullscreenBtn = document.getElementById("map-fullscreen-btn"); + const overlayToggleBtn = document.getElementById("map-overlay-toggle-btn"); + if (locatorPhaseEl) { + locatorPhaseEl.addEventListener("click", (e) => { + const btn = e.target.closest(".map-locator-phase-btn[data-phase]"); + if (!btn) return; + const phase = String(btn.dataset.phase || ""); + if (phase !== "type" && phase !== "band") return; + if (mapLocatorFilter.phase === phase) return; + mapLocatorFilter.phase = phase; + rebuildMapLocatorFilters(); + applyMapFilter(); + }); + } + if (locatorChoiceEl) { + locatorChoiceEl.addEventListener("click", (e) => { + const chip = e.target.closest(".map-locator-chip[data-filter-kind]"); + if (!chip) return; + const kind = String(chip.dataset.filterKind || ""); + const key = String(chip.dataset.filterKey || ""); + if (!key) return; + if (kind === "source" && Object.prototype.hasOwnProperty.call(mapFilter, key)) { + // toggle the clicked source; when none are selected everything is shown + mapFilter[key] = !mapFilter[key]; + const srcKeys = Object.keys(DEFAULT_MAP_SOURCE_FILTER); + const anySelected = srcKeys.some((k) => mapFilter[k]); + if (anySelected && !mapFilter.aprs && selectedAprsTrackCall) { + const entry = stationMarkers.get(String(selectedAprsTrackCall)); + if (entry && entry.track && aprsMap && aprsMap.hasLayer(entry.track)) { + entry.track.removeFrom(aprsMap); + } + selectedAprsTrackCall = null; + } + if (anySelected && !mapFilter.ais && selectedAisTrackMmsi) { + const entry = aisMarkers.get(String(selectedAisTrackMmsi)); + if (entry && entry.track && aprsMap && aprsMap.hasLayer(entry.track)) { + entry.track.removeFrom(aprsMap); + } + selectedAisTrackMmsi = null; + } + } else if (kind === "band") { + if (mapLocatorFilter.bands.has(key)) { + mapLocatorFilter.bands.delete(key); + } else { + mapLocatorFilter.bands.add(key); + } + } + rebuildMapLocatorFilters(); + applyMapFilter(); + }); + } + const mapRigFilterEl = document.getElementById("map-rig-filter"); + if (mapRigFilterEl) { + mapRigFilterEl.addEventListener("change", () => { + mapRigFilter = mapRigFilterEl.value; + applyMapFilter(); + }); + } + if (mapSearchEl) { + mapSearchEl.value = mapSearchFilter; + mapSearchEl.addEventListener("input", () => { + mapSearchFilter = String(mapSearchEl.value || "").trim(); + applyMapFilter(); + }); + } + if (mapHistoryLimitEl) { + mapHistoryLimitEl.value = String(mapHistoryLimitMinutes); + mapHistoryLimitEl.addEventListener("change", () => { + mapHistoryLimitMinutes = normalizeMapHistoryLimitMinutes(Number(mapHistoryLimitEl.value)); + mapHistoryLimitEl.value = String(mapHistoryLimitMinutes); + saveSetting("mapHistoryLimitMinutes", mapHistoryLimitMinutes); + pruneMapHistory(); + }); + } + if (mapP2pPathsToggleEl) { + updateMapP2pPathsToggle(); + mapP2pPathsToggleEl.addEventListener("click", () => { + mapP2pRadioPathsEnabled = !mapP2pRadioPathsEnabled; + saveSetting("mapP2pRadioPathsEnabled", mapP2pRadioPathsEnabled); + updateMapP2pPathsToggle(); + if (!mapP2pRadioPathsEnabled) clearMapRadioPath(); + }); + } + if (mapContactPathsToggleEl) { + updateMapContactPathsToggle(); + mapContactPathsToggleEl.addEventListener("click", () => { + mapDecodeContactPathsEnabled = !mapDecodeContactPathsEnabled; + saveSetting("mapDecodeContactPathsEnabled", mapDecodeContactPathsEnabled); + updateMapContactPathsToggle(); + syncDecodeContactPathVisibility(); + }); + } + if (fullscreenBtn) { + fullscreenBtn.addEventListener("click", () => { + toggleMapFullscreen(); + }); + updateMapFullscreenButton(); + } + applyMapOverlayPanelVisibility(); + updateMapOverlayToggleButton(); + if (overlayToggleBtn) { + overlayToggleBtn.addEventListener("click", () => { + mapOverlayPanelVisible = !mapOverlayPanelVisible; + saveSetting("mapOverlayPanelVisible", mapOverlayPanelVisible); + applyMapOverlayPanelVisibility(); + updateMapOverlayToggleButton(); + }); + } + if (!mapFullscreenListenerBound) { + const onFullscreenChange = () => { + updateMapFullscreenButton(); + sizeAprsMapToViewport(); + }; + document.addEventListener("fullscreenchange", onFullscreenChange); + document.addEventListener("webkitfullscreenchange", onFullscreenChange); + mapFullscreenListenerBound = true; + } + if (!mapHistoryPruneTimer) { + mapHistoryPruneTimer = setInterval(() => { + pruneMapHistory(); + }, 60 * 1000); + } + rebuildMapLocatorFilters(); + } + + function sizeAprsMapToViewport() { + const mapEl = document.getElementById("aprs-map"); + if (!mapEl) return; + const stage = mapStageEl(); + if (mapIsFullscreen() && stage) { + // For CSS fake fullscreen use window.innerHeight directly — clientHeight + // may not yet reflect the fixed layout when called synchronously after + // adding the class. + const isFake = stage.classList.contains("map-fake-fullscreen"); + const stageHeight = isFake + ? window.innerHeight + : (stage.clientHeight || stage.getBoundingClientRect().height); + const target = Math.max(260, Math.floor(stageHeight)); + mapEl.style.height = `${target}px`; + if (aprsMap) aprsMap.invalidateSize(); + return; + } + const mapRect = mapEl.getBoundingClientRect(); + const width = mapEl.clientWidth || mapRect.width; + const footer = document.querySelector(".footer"); + let bottom = mapIsFullscreen() && stage + ? stage.getBoundingClientRect().bottom + : window.innerHeight; + if (!mapIsFullscreen() && footer) { + const fr = footer.getBoundingClientRect(); + if (fr.top > mapRect.top + 50) bottom = fr.top; + } + const available = Math.max(0, Math.floor(bottom - mapRect.top - 8)); + const widthDriven = width > 0 ? Math.floor(width / 1.55) : available; + const viewportCap = mapIsFullscreen() + ? Math.floor(window.innerHeight * 0.9) + : Math.floor(window.innerHeight * 0.75); + const minHeight = Math.min(260, available); + const target = Math.max(minHeight, Math.min(available, viewportCap, widthDriven)); + mapEl.style.height = `${target}px`; + if (aprsMap) aprsMap.invalidateSize(); + } + + function aprsSymbolIcon(symbolTable, symbolCode) { + if (!symbolTable || !symbolCode) return null; + const sheet = symbolTable === "/" ? 0 : 1; + const code = symbolCode.charCodeAt(0) - 33; + const col = code % 16; + const row = Math.floor(code / 16); + const bgX = -(col * 24); + const bgY = -(row * 24); + const url = `https://raw.githubusercontent.com/hessu/aprs-symbols/master/png/aprs-symbols-24-${sheet}.png`; + return L.divIcon({ + className: "", + html: `
    `, + iconSize: [24, 24], + iconAnchor: [12, 12], + popupAnchor: [0, -12] + }); + } + + window.navigateToAprsMap = function(lat, lon) { + // Activate the map tab + T._activeTab = "map"; + document.querySelectorAll(".tab-bar .tab").forEach((t) => t.classList.remove("active")); + const mapTabBtn = document.querySelector(".tab-bar .tab[data-tab='map']"); + if (mapTabBtn) mapTabBtn.classList.add("active"); + document.querySelectorAll(".tab-panel").forEach((p) => (p.style.display = "none")); + const mapPanel = document.getElementById("tab-map"); + if (mapPanel) mapPanel.style.display = ""; + initAprsMap(); + sizeAprsMapToViewport(); + if (aprsMap) { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + sizeAprsMapToViewport(); + aprsMap.invalidateSize(); + aprsMap.setView([lat, lon], 13); + }); + }); + } + }; + + window.navigateToMapLocator = function(grid, preferredType = null) { + const normalizedGrid = String(grid || "").trim().toUpperCase(); + if (!/^[A-R]{2}\d{2}(?:[A-X]{2})?$/.test(normalizedGrid)) return false; + + T._activeTab = "map"; + document.querySelectorAll(".tab-bar .tab").forEach((t) => t.classList.remove("active")); + const mapTabBtn = document.querySelector(".tab-bar .tab[data-tab='map']"); + if (mapTabBtn) mapTabBtn.classList.add("active"); + document.querySelectorAll(".tab-panel").forEach((p) => (p.style.display = "none")); + const mapPanel = document.getElementById("tab-map"); + if (mapPanel) mapPanel.style.display = ""; + + initAprsMap(); + sizeAprsMapToViewport(); + if (!aprsMap) return false; + + const pref = preferredType === "wspr" ? "wspr" : (preferredType === "ft4" ? "ft4" : (preferredType === "ft2" ? "ft2" : (preferredType === "ft8" ? "ft8" : null))); + const keys = pref + ? [`${pref}:${normalizedGrid}`, `ft8:${normalizedGrid}`, `ft4:${normalizedGrid}`, `ft2:${normalizedGrid}`, `wspr:${normalizedGrid}`, `bookmark:${normalizedGrid}`] + : [`ft8:${normalizedGrid}`, `ft4:${normalizedGrid}`, `ft2:${normalizedGrid}`, `wspr:${normalizedGrid}`, `bookmark:${normalizedGrid}`]; + let entry = null; + for (const key of keys) { + entry = locatorMarkers.get(key); + if (entry?.marker) break; + } + if (!entry?.marker) return false; + + if (pref && Object.prototype.hasOwnProperty.call(mapFilter, pref) && !mapFilter[pref]) { + mapFilter[pref] = true; + rebuildMapLocatorFilters(); + applyMapFilter(); + } + + const marker = entry.marker; + if (!aprsMap.hasLayer(marker)) { + marker.addTo(aprsMap); + sendLocatorOverlayToBack(marker); + } + const center = locatorMarkerCenter(marker); + const focusMarker = () => { + if (!aprsMap || !marker) return; + sizeAprsMapToViewport(); + aprsMap.invalidateSize(); + if (center) { + const targetZoom = Math.max(aprsMap.getZoom() || 0, 7); + aprsMap.setView([center.lat, center.lon], targetZoom); + if (marker.__trxType !== "bookmark") { + const fEntry = locatorEntryForMarker(marker); + const fColor = fEntry ? locatorStyleForEntry(fEntry, locatorEntryCount(fEntry)).color : locatorFilterColor(marker?.__trxType); + setMapRadioPathTo(center.lat, center.lon, fColor, "locator-radio-path", marker.__trxRigIds); + } + } + setSelectedLocatorMarker(marker); + if (typeof marker.openPopup === "function") marker.openPopup(); + }; + focusMarker(); + requestAnimationFrame(() => { + requestAnimationFrame(focusMarker); + }); + return true; + }; + + + + + + + + + function buildReceiverPopupHtml(rigIds) { + const call = T.serverCallsign || T.ownerCallsign || "Receiver"; + let meta = ""; + if (T.serverVersion) { + meta = `trx-server v${escapeMapHtml(T.serverVersion)}`; + if (T.serverBuildDate) meta += ` · ${escapeMapHtml(T.serverBuildDate)}`; + } + let rows = ""; + if (T.ownerCallsign && T.ownerCallsign !== T.serverCallsign) { + rows += `Owner${escapeMapHtml(T.ownerCallsign)}`; + } + // Show location from first matching rig or active rig + const rigSet = rigIds && rigIds.length ? new Set(rigIds) : null; + const firstRig = rigSet ? T.serverRigs.find(r => rigSet.has(r.remote)) : null; + const popupLat = firstRig ? firstRig.latitude : T.serverLat; + const popupLon = firstRig ? firstRig.longitude : T.serverLon; + if (popupLat != null && popupLon != null) { + const grid = latLonToMaidenhead(popupLat, popupLon); + rows += `QTH${popupLat.toFixed(5)}, ${popupLon.toFixed(5)} (${escapeMapHtml(grid)})`; + } + // Show rigs at this location + const rigsToShow = rigSet + ? T.serverRigs.filter(r => rigSet.has(r.remote)) + : T.serverRigs; + for (const rig of rigsToShow) { + const name = rig.display_name || `${rig.manufacturer} ${rig.model}`.trim(); + const active = rig.remote === T.serverActiveRigId + ? ` active` : ""; + rows += `Rig${escapeMapHtml(name)}${active}`; + } + return `
    ` + + `
    ${escapeMapHtml(call)}
    ` + + (meta ? `
    ${meta}
    ` : "") + + (rows ? `${rows}
    ` : "") + + `
    `; + } + + function buildAprsPopupHtml(call, lat, lon, info, pkt) { + const age = pkt?._tsMs ? formatTimeAgo(pkt._tsMs) : (pkt?._ts || null); + const distKm = (T.serverLat != null && T.serverLon != null) + ? haversineKm(T.serverLat, T.serverLon, lat, lon) + : null; + const distStr = distKm != null + ? (distKm < 1 ? `${Math.round(distKm * 1000)} m` : `${distKm.toFixed(1)} km`) + : null; + const path = pkt?.path || null; + const type = pkt?.type || null; + + let meta = [age, distStr].filter(Boolean).join(" · "); + let rows = ""; + if (type) rows += `Type${escapeMapHtml(type)}`; + if (path) rows += `Path${escapeMapHtml(path)}`; + if (lat != null && lon != null) + rows += `Pos${lat.toFixed(5)}, ${lon.toFixed(5)}`; + + return `
    ` + + `
    ${escapeMapHtml(call)}
    ` + + (meta ? `
    ${meta}
    ` : "") + + (rows ? `${rows}
    ` : "") + + (info ? `
    ${escapeMapHtml(info)}
    ` : "") + + `
    `; + } + + function buildAisPopupHtml(msg) { + const age = msg?._tsMs ? formatTimeAgo(msg._tsMs) : null; + const distKm = (T.serverLat != null && T.serverLon != null && msg?.lat != null && msg?.lon != null) + ? haversineKm(T.serverLat, T.serverLon, msg.lat, msg.lon) + : null; + const distStr = distKm != null + ? (distKm < 1 ? `${Math.round(distKm * 1000)} m` : `${distKm.toFixed(1)} km`) + : null; + const meta = [age, distStr, msg?.channel ? `AIS ${escapeMapHtml(msg.channel)}` : null].filter(Boolean).join(" · "); + let rows = ""; + rows += `MMSI${escapeMapHtml(String(msg.mmsi || "--"))}`; + rows += `Type${escapeMapHtml(String(msg.message_type || "--"))}`; + if (distStr) rows += `Range${distStr} from TRX`; + if (msg?.sog_knots != null) rows += `SOG${Number(msg.sog_knots).toFixed(1)} kn`; + if (msg?.cog_deg != null) rows += `COG${Number(msg.cog_deg).toFixed(1)}°`; + if (msg?.heading_deg != null) rows += `HDG${Number(msg.heading_deg).toFixed(0)}°`; + if (msg?.nav_status != null) rows += `Nav${escapeMapHtml(String(msg.nav_status))}`; + if (msg?.lat != null && msg?.lon != null) rows += `Pos${msg.lat.toFixed(5)}, ${msg.lon.toFixed(5)}`; + const info = [msg?.vessel_name, msg?.callsign, msg?.destination].filter(Boolean).map(escapeMapHtml).join(" · "); + const vesselLabel = escapeMapHtml(msg?.vessel_name || `MMSI ${msg?.mmsi || "--"}`); + const vesselUrl = window.buildAisVesselUrl ? window.buildAisVesselUrl(msg?.mmsi) : null; + const vesselTitle = vesselUrl + ? `${vesselLabel}` + : vesselLabel; + return `
    ` + + `
    ${vesselTitle}
    ` + + (meta ? `
    ${meta}
    ` : "") + + (rows ? `${rows}
    ` : "") + + (info ? `
    ${info}
    ` : "") + + `
    `; + } + + function buildVdesPopupHtml(msg) { + const age = formatTimeAgo(msg?.ts_ms); + const distKm = (T.serverLat != null && T.serverLon != null && msg?.lat != null && msg?.lon != null) + ? haversineKm(T.serverLat, T.serverLon, msg.lat, msg.lon) + : null; + const distStr = distKm != null + ? (distKm < 1 ? `${Math.round(distKm * 1000)} m` : `${distKm.toFixed(1)} km`) + : null; + const meta = [ + age, + distStr, + msg?.message_label ? escapeMapHtml(msg.message_label) : null, + Number.isFinite(msg?.link_id) ? `LID ${Number(msg.link_id)}` : null, + ].filter(Boolean).join(" · "); + let rows = ""; + if (distStr) rows += `Range${distStr} from TRX`; + rows += `Type${escapeMapHtml(String(msg?.message_type ?? "--"))}`; + if (Number.isFinite(msg?.source_id)) rows += `Source${escapeMapHtml(String(msg.source_id))}`; + if (Number.isFinite(msg?.destination_id)) rows += `Dest${escapeMapHtml(String(msg.destination_id))}`; + if (msg?.lat != null && msg?.lon != null) rows += `Pos${msg.lat.toFixed(5)}, ${msg.lon.toFixed(5)}`; + if (Number.isFinite(msg?.sync_score)) rows += `Sync${(Number(msg.sync_score) * 100).toFixed(0)}%`; + if (msg?.fec_state) rows += `FEC${escapeMapHtml(String(msg.fec_state))}`; + const info = [ + msg?.vessel_name, + msg?.callsign, + msg?.destination, + msg?.payload_preview, + ].filter(Boolean).map(escapeMapHtml).join(" · "); + const title = escapeMapHtml(msg?.vessel_name || msg?.callsign || "VDES Position"); + return `
    ` + + `
    ${title}
    ` + + (meta ? `
    ${meta}
    ` : "") + + (rows ? `${rows}
    ` : "") + + (info ? `
    ${info}
    ` : "") + + `
    `; + } + + function aprsPositionsEqual(a, b) { + if (!a || !b) return false; + const aLat = Array.isArray(a) ? a[0] : a.lat; + const aLon = Array.isArray(a) ? a[1] : a.lon; + const bLat = Array.isArray(b) ? b[0] : b.lat; + const bLon = Array.isArray(b) ? b[1] : b.lon; + return Math.abs(aLat - bLat) < 0.000001 && Math.abs(aLon - bLon) < 0.000001; + } + + function aisPositionsEqual(a, b) { + if (!a || !b) return false; + const aLat = Array.isArray(a) ? a[0] : a.lat; + const aLon = Array.isArray(a) ? a[1] : a.lon; + const bLat = Array.isArray(b) ? b[0] : b.lat; + const bLon = Array.isArray(b) ? b[1] : b.lon; + return Math.abs(aLat - bLat) < 0.000001 && Math.abs(aLon - bLon) < 0.000001; + } + + function vdesMarkerKey(msg) { + if (Number.isFinite(msg?.source_id)) return `src:${Number(msg.source_id)}`; + if (Number.isFinite(msg?.mmsi) && Number(msg.mmsi) > 0) return `mmsi:${Number(msg.mmsi)}`; + if (msg?.lat != null && msg?.lon != null) { + return `pos:${Number(msg.lat).toFixed(4)}:${Number(msg.lon).toFixed(4)}:${Number(msg?.message_type ?? 0)}`; + } + return null; + } + + function _aprsAddMarkerToMap(call, entry) { + refreshAprsTrack(call, entry); + const icon = aprsSymbolIcon(entry.symbolTable, entry.symbolCode); + const popupContent = buildAprsPopupHtml(call, entry.lat, entry.lon, entry.info || "", entry.pkt); + const marker = icon + ? L.marker([entry.lat, entry.lon], { icon }).addTo(aprsMap).bindPopup(popupContent) + : L.circleMarker([entry.lat, entry.lon], { + radius: 6, color: "#00d17f", fillColor: "#00d17f", fillOpacity: 0.8 + }).addTo(aprsMap).bindPopup(popupContent); + marker.__trxType = "aprs"; + marker.__trxRigIds = entry.rigIds || new Set(); + marker._aprsCall = call; + entry.marker = marker; + mapMarkers.add(marker); + } + + window.aprsMapAddStation = function(call, lat, lon, info, symbolTable, symbolCode, pkt) { + const nextPoint = [lat, lon]; + const tsMs = Number.isFinite(pkt?._tsMs) ? Number(pkt._tsMs) : Date.now(); + const msgRigId = pkt?.rig_id || T.lastActiveRigId; + const existing = stationMarkers.get(call); + if (existing) { + existing.pkt = pkt; + existing.lat = lat; + existing.lon = lon; + existing.info = info; + existing.symbolTable = symbolTable; + existing.symbolCode = symbolCode; + if (msgRigId) { + if (!existing.rigIds) existing.rigIds = new Set(); + existing.rigIds.add(msgRigId); + } + if (!Array.isArray(existing.trackHistory)) existing.trackHistory = []; + const prevPoint = existing.trackHistory[existing.trackHistory.length - 1]; + if (!aprsPositionsEqual(prevPoint, nextPoint)) { + existing.trackHistory.push({ lat, lon, tsMs }); + } else if (prevPoint) { + prevPoint.tsMs = tsMs; + } + pruneAprsEntry(call, existing, mapHistoryCutoffMs()); + if (aprsMap && existing.marker && !T.decodeHistoryReplayActive) { + existing.marker.setLatLng([lat, lon]); + existing.marker.setPopupContent(buildAprsPopupHtml(call, lat, lon, info, pkt)); + } + } else { + const entry = { + marker: null, + track: null, + trackHistory: [{ lat, lon, tsMs }], + trackPoints: [nextPoint], + type: "aprs", + pkt, + lat, + lon, + info, + symbolTable, + symbolCode, + rigIds: new Set(msgRigId ? [msgRigId] : []), + }; + stationMarkers.set(call, entry); + pruneAprsEntry(call, entry, mapHistoryCutoffMs()); + if (entry.visibleInHistoryWindow) ensureAprsMarker(call, entry); + if (aprsMap) scheduleDecodeMapMaintenance(); + } + }; + + function syncSelectedAisTrackVisibility() { + if (!aprsMap) return; + const selectedKey = selectedAisTrackMmsi ? String(selectedAisTrackMmsi) : null; + aisMarkers.forEach((entry, key) => { + const track = entry?.track; + if (!track) return; + const shouldShow = !!selectedKey && selectedKey === String(key) && !!mapFilter.ais; + const onMap = aprsMap.hasLayer(track); + if (shouldShow && !onMap) { + track.addTo(aprsMap); + } + if (!shouldShow && onMap) { + track.removeFrom(aprsMap); + } + }); + } + + function getAisAccentColor() { + return getComputedStyle(document.documentElement).getPropertyValue("--accent-green").trim() || "#c24b1a"; + } + + function aisMarkerOptionsFromMessage(msg) { + const color = getAisAccentColor(); + return { + heading: msg?.heading_deg, + course: msg?.cog_deg, + speed: msg?.sog_knots, + color, + outline: "#00000055", + size: 22, + }; + } + + function createAisMarker(lat, lon, msg) { + if (typeof L !== "undefined" && typeof L.trxAisTrackSymbol === "function") { + return L.trxAisTrackSymbol([lat, lon], aisMarkerOptionsFromMessage(msg)); + } + const color = getAisAccentColor(); + return L.circleMarker([lat, lon], { + radius: 6, + color, + fillColor: color, + fillOpacity: 0.82, + }); + } + + function updateAisMarker(marker, msg, popupHtml) { + if (!marker) return; + marker.setLatLng([msg.lat, msg.lon]); + if (typeof marker.setAisState === "function") { + marker.setAisState(aisMarkerOptionsFromMessage(msg)); + } + if (typeof marker.setStyle === "function" && typeof marker.setAisState !== "function") { + const color = getAisAccentColor(); + marker.setStyle({ + radius: 6, + color, + fillColor: color, + fillOpacity: 0.84, + }); + } + marker.setPopupContent(popupHtml); + } + + function refreshAisMarkerColors() { + const color = getAisAccentColor(); + aisMarkers.forEach((entry) => { + if (entry.marker) { + if (typeof entry.marker.setAisState === "function") { + entry.marker.setAisState(aisMarkerOptionsFromMessage(entry.msg || {})); + } else if (typeof entry.marker.setStyle === "function") { + entry.marker.setStyle({ color, fillColor: color }); + } + } + if (entry.track && typeof entry.track.setStyle === "function") { + entry.track.setStyle({ color }); + } + }); + } + + window.aisMapAddVessel = function(msg) { + if (msg == null || msg.lat == null || msg.lon == null || !Number.isFinite(msg.mmsi)) return; + const key = String(msg.mmsi); + const popupHtml = buildAisPopupHtml(msg); + const nextPoint = [msg.lat, msg.lon]; + const tsMs = Number.isFinite(msg?._tsMs) ? Number(msg._tsMs) : Date.now(); + const msgRigId = msg?.rig_id || T.lastActiveRigId; + const existing = aisMarkers.get(key); + if (existing) { + existing.msg = msg; + if (msgRigId) { + if (!existing.rigIds) existing.rigIds = new Set(); + existing.rigIds.add(msgRigId); + } + if (!Array.isArray(existing.trackHistory)) existing.trackHistory = []; + const prevPoint = existing.trackHistory[existing.trackHistory.length - 1]; + if (!aisPositionsEqual(prevPoint, nextPoint)) { + existing.trackHistory.push({ lat: msg.lat, lon: msg.lon, tsMs }); + } else if (prevPoint) { + prevPoint.tsMs = tsMs; + } + pruneAisEntry(key, existing, mapHistoryCutoffMs()); + if (aprsMap && existing.marker && !T.decodeHistoryReplayActive) { + updateAisMarker(existing.marker, msg, popupHtml); + } + return; + } + aisMarkers.set(key, { + marker: null, + track: null, + trackHistory: [{ lat: msg.lat, lon: msg.lon, tsMs }], + trackPoints: [nextPoint], + msg, + rigIds: new Set(msgRigId ? [msgRigId] : []), + }); + pruneAisEntry(key, aisMarkers.get(key), mapHistoryCutoffMs()); + if (aisMarkers.get(key)?.visibleInHistoryWindow) ensureAisMarker(key, aisMarkers.get(key)); + scheduleDecodeMapMaintenance(); + }; + + window.vdesMapAddPoint = function(msg) { + if (msg == null || msg.lat == null || msg.lon == null) return; + const key = vdesMarkerKey(msg); + if (!key) return; + const popupHtml = buildVdesPopupHtml(msg); + const visible = Number.isFinite(Number(msg?._tsMs)) + && Number(msg._tsMs) >= mapHistoryCutoffMs(); + const msgRigId = msg?.rig_id || T.lastActiveRigId; + const existing = vdesMarkers.get(key); + if (existing) { + existing.msg = msg; + existing.visibleInHistoryWindow = visible; + if (msgRigId) { + if (!existing.rigIds) existing.rigIds = new Set(); + existing.rigIds.add(msgRigId); + } + if (!visible) { + if (!T.decodeHistoryMapRenderingDeferred()) { + setRetainedMapMarkerVisible(existing.marker, false); + } else { + T.markDecodeMapSyncPending(); + } + return; + } + if (!T.decodeHistoryMapRenderingDeferred()) { + ensureVdesMarker(key, existing); + setRetainedMapMarkerVisible(existing.marker, true); + } else { + T.markDecodeMapSyncPending(); + } + if (aprsMap && existing.marker && !T.decodeHistoryReplayActive) { + existing.marker.setLatLng([msg.lat, msg.lon]); + existing.marker.setPopupContent(popupHtml); + } + return; + } + const entry = { + marker: null, + msg, + visibleInHistoryWindow: visible, + rigIds: new Set(msgRigId ? [msgRigId] : []), + }; + vdesMarkers.set(key, entry); + if (!visible) return; + if (!T.decodeHistoryMapRenderingDeferred()) { + ensureVdesMarker(key, entry); + setRetainedMapMarkerVisible(entry.marker, true); + } else { + T.markDecodeMapSyncPending(); + } + if (aprsMap && entry.marker && !T.decodeHistoryReplayActive) { + entry.marker.setPopupContent(popupHtml); + } + scheduleDecodeMapMaintenance(); + }; + + let reverseGeocodeLastKey = null; + function reverseGeocodeLocation(lat, lon, grid) { + const key = `${lat.toFixed(4)},${lon.toFixed(4)}`; + if (key === reverseGeocodeLastKey) return; + reverseGeocodeLastKey = key; + const url = `https://nominatim.openstreetmap.org/reverse?lat=${encodeURIComponent(lat)}&lon=${encodeURIComponent(lon)}&format=json&zoom=10&accept-language=en`; + fetch(url, { headers: { "User-Agent": "trx-rs" } }) + .then((r) => r.ok ? r.json() : Promise.reject(r.status)) + .then((data) => { + const addr = data?.address; + if (!addr) return; + const city = addr.city || addr.town || addr.village || addr.hamlet || addr.municipality || addr.county || ""; + const country = addr.country || ""; + if (!city && !country) return; + const label = city && country ? `${city}, ${country}` : (city || country); + T.lastCityLabel = label; + if (T.locationSubtitle) { + T.locationSubtitle.textContent = `Location: ${grid} · ${label}`; + } + T.updateDocumentTitle(T.activeChannelRds()); + }) + .catch(() => {}); + } + + + function maidenheadToBounds(grid) { + if (!grid || grid.length < 4) return null; + const g = grid.toUpperCase(); + const A = "A".charCodeAt(0); + const fieldLon = (g.charCodeAt(0) - A) * 20 - 180; + const fieldLat = (g.charCodeAt(1) - A) * 10 - 90; + const squareLon = parseInt(g[2], 10) * 2; + const squareLat = parseInt(g[3], 10) * 1; + + let lon = fieldLon + squareLon; + let lat = fieldLat + squareLat; + let lonSpan = 2; + let latSpan = 1; + + if (g.length >= 6) { + const subLon = (g.charCodeAt(4) - A) * (5 / 60); + const subLat = (g.charCodeAt(5) - A) * (2.5 / 60); + lon += subLon; + lat += subLat; + lonSpan = 5 / 60; + latSpan = 2.5 / 60; + } + + return [ + [lat, lon], + [lat + latSpan, lon + lonSpan], + ]; + } + + function applyMapFilter() { + if (!aprsMap) return; + const sourceKeys = Object.keys(DEFAULT_MAP_SOURCE_FILTER); + const noneSelected = sourceKeys.every((k) => !mapFilter[k]); + mapMarkers.forEach((marker) => { + const type = marker.__trxType; + const sourceVisible = noneSelected + ? DEFAULT_MAP_SOURCE_FILTER[type] !== undefined ? DEFAULT_MAP_SOURCE_FILTER[type] : true + : !!mapFilter[type]; + const rigVisible = !mapRigFilter + || marker.__trxType === "bookmark" + || (marker.__trxRigIds instanceof Set && marker.__trxRigIds.has(mapRigFilter)); + const visible = marker.__trxHistoryVisible !== false + && markerPassesSearchFilter(marker) + && markerPassesLocatorFilters(marker) + && sourceVisible + && rigVisible; + const onMap = aprsMap.hasLayer(marker); + if (visible && !onMap) { + marker.addTo(aprsMap); + sendLocatorOverlayToBack(marker); + } + if (!visible && onMap) marker.removeFrom(aprsMap); + }); + syncSelectedAisTrackVisibility(); + syncDecodeContactPathVisibility(); + } + + function updateMapContactPathsToggle() { + const btn = document.getElementById("map-contact-paths-toggle"); + if (!btn) return; + btn.textContent = mapDecodeContactPathsEnabled ? "Contact Paths On" : "Contact Paths Off"; + btn.classList.toggle("is-active", mapDecodeContactPathsEnabled); + } + + function updateMapP2pPathsToggle() { + const btn = document.getElementById("map-p2p-paths-toggle"); + if (!btn) return; + btn.textContent = mapP2pRadioPathsEnabled ? "TRX Paths On" : "TRX Paths Off"; + btn.classList.toggle("is-active", mapP2pRadioPathsEnabled); + } + + function scheduleDecodeMapMaintenance() { + if (T.decodeHistoryMapRenderingDeferred()) { + T.markDecodeMapSyncPending(); + return; + } + scheduleUiFrameJob("decode-map-maintenance", () => { + rebuildDecodeContactPaths(); + rebuildMapLocatorFilters(); + applyMapFilter(); + }); + } + + function formatDecodeLocatorTime(tsMs) { + if (!Number.isFinite(tsMs)) return "--:--:--"; + return new Date(tsMs).toLocaleTimeString([], { + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + }); + } + + function formatMapPopupFreq(hz) { + if (!Number.isFinite(hz)) return "--"; + const value = Number(hz); + if (value >= 1_000_000_000) return `${(value / 1_000_000_000).toFixed(6).replace(/\.?0+$/, "")} GHz`; + if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(6).replace(/\.?0+$/, "")} MHz`; + if (value >= 1_000) return `${(value / 1_000).toFixed(3).replace(/\.?0+$/, "")} kHz`; + return `${Math.round(value)} Hz`; + } + + function buildDecodeLocatorTooltipHtml(grid, entry, type) { + const details = entry?.stationDetails instanceof Map + ? Array.from(entry.stationDetails.values()) + : []; + details.sort((a, b) => Number(b?.ts_ms || 0) - Number(a?.ts_ms || 0)); + const title = type === "wspr" ? "WSPR" : "FT8"; + const rows = details + .map((detail) => { + const station = escapeMapHtml(String(detail?.source || detail?.station || detail?.target || "Unknown")); + const freq = formatMapPopupFreq(Number(detail?.freq_hz)); + const meta = [ + detail?.target ? `to ${escapeMapHtml(String(detail.target))}` : null, + Number.isFinite(detail?.snr_db) ? `${Number(detail.snr_db).toFixed(1)} dB` : null, + Number.isFinite(detail?.dt_s) ? `dt ${Number(detail.dt_s).toFixed(2)}` : null, + escapeMapHtml(freq), + ].filter(Boolean).join(" · "); + const remoteIds = detail?.remotes instanceof Set && detail.remotes.size > 0 + ? Array.from(detail.remotes) + : (detail?.remote ? [detail.remote] : []); + const rxHtml = remoteIds + .map(rid => { + const label = _receiverLabel(rid); + return label ? `
    ${escapeMapHtml(label)}
    ` : ""; + }) + .filter(Boolean) + .join(""); + const message = detail?.message + ? `
    ${escapeMapHtml(String(detail.message))}
    ` + : ""; + return `
    ` + + `
    ` + + `${station}` + + `${escapeMapHtml(formatDecodeLocatorTime(Number(detail?.ts_ms)))}` + + `
    ` + + (meta ? `
    ${meta}
    ` : "") + + rxHtml + + message + + `
    `; + }) + .join(""); + const count = Math.max( + 1, + details.length, + entry?.stations instanceof Set ? entry.stations.size : 0, + ); + return `
    ` + + `
    ${escapeMapHtml(grid)}
    ` + + `
    ${title} · ${count} station${count === 1 ? "" : "s"}
    ` + + rows + + `
    `; + } + + function rebuildDecodeContactPaths() { + clearDecodeContactPaths(); + const stationLocators = new Map(); + const directedMessages = []; + for (const entry of locatorMarkers.values()) { + if (!entry || (entry.sourceType !== "ft8" && entry.sourceType !== "ft4" && entry.sourceType !== "ft2" && entry.sourceType !== "wspr")) continue; + const grid = String(entry.grid || "").trim().toUpperCase(); + if (!grid || !(entry.stationDetails instanceof Map)) continue; + for (const detail of entry.stationDetails.values()) { + const source = String(detail?.source || detail?.station || "").trim().toUpperCase(); + const target = String(detail?.target || "").trim().toUpperCase(); + const tsMs = Number.isFinite(detail?.ts_ms) ? Number(detail.ts_ms) : 0; + if (source) { + const prev = stationLocators.get(source); + if (!prev || tsMs >= prev.tsMs) { + stationLocators.set(source, { grid, tsMs }); + } + } + if (source && target && source !== target) { + const band = bandForHz(Number(detail?.freq_hz)); + directedMessages.push({ + source, + target, + sourceGrid: grid, + sourceType: entry.sourceType, + tsMs, + bandLabel: band?.label || null, + remote: detail?.remote || null, + }); + } + } + } + for (const msg of directedMessages) { + const targetLocator = stationLocators.get(msg.target); + if (!targetLocator) continue; + if (msg.sourceGrid === targetLocator.grid) continue; + const sourceCenter = locatorToLatLon(msg.sourceGrid); + const targetCenter = locatorToLatLon(targetLocator.grid); + if (!sourceCenter || !targetCenter) continue; + const distanceKm = haversineKm(sourceCenter.lat, sourceCenter.lon, targetCenter.lat, targetCenter.lon); + const key = [msg.source, msg.target].sort().join("::"); + const prev = decodeContactPaths.get(key); + if (prev && prev.tsMs > msg.tsMs) continue; + decodeContactPaths.set(key, { + pathKey: key, + source: msg.source, + target: msg.target, + sourceGrid: msg.sourceGrid, + targetGrid: targetLocator.grid, + sourceType: msg.sourceType, + bandLabel: msg.bandLabel, + from: sourceCenter, + to: targetCenter, + tsMs: msg.tsMs, + distanceKm, + distanceText: formatDecodeContactDistance(distanceKm), + line: null, + labelMarker: null, + remote: msg.remote, + }); + } + syncDecodeContactPathVisibility(); + } + + function _receiverLabel(rigId) { + if (!rigId) return null; + const rig = T.serverRigs.find(r => r.remote === rigId); + const name = T.lastRigDisplayNames[rigId] || rigId; + if (rig && rig.latitude != null && rig.longitude != null) { + const grid = latLonToMaidenhead(rig.latitude, rig.longitude); + return `${name} (${grid})`; + } + return name; + } + + function _locatorEntryVisibleOnMap(entry) { + return entry?.marker && aprsMap && aprsMap.hasLayer(entry.marker); + } + + function _detailPassesRigFilter(detail) { + if (!mapRigFilter) return true; + if (detail?.remotes instanceof Set) return detail.remotes.has(mapRigFilter); + return detail?.remote === mapRigFilter; + } + + function renderMapQsoSummary() { + const listEl = document.getElementById("map-qso-summary-list"); + if (!listEl) return; + + const cutoff = _statsHistoryCutoffMs(); + const entries = Array.from(decodeContactPaths.values()) + .filter((entry) => entry + && Number.isFinite(entry.distanceKm) + && _statsDetailPassesRigFilter(entry) + && (!entry.tsMs || entry.tsMs >= cutoff)) + .sort((a, b) => { + const distanceDelta = Number(b.distanceKm) - Number(a.distanceKm); + if (Math.abs(distanceDelta) > 0.001) return distanceDelta; + return Number(b.tsMs || 0) - Number(a.tsMs || 0); + }) + .slice(0, MAP_QSO_SUMMARY_LIMIT); + + if (selectedMapQsoKey && !entries.some((entry) => entry.pathKey === selectedMapQsoKey)) { + selectedMapQsoKey = null; + } + + if (entries.length === 0) { + const empty = document.createElement("div"); + empty.className = "map-qso-summary-empty"; + empty.textContent = "No directed FT8 or WSPR contacts match the current map history and filters."; + listEl.replaceChildren(empty); + return; + } + + const fragment = document.createDocumentFragment(); + entries.forEach((entry, index) => { + const card = document.createElement("button"); + card.type = "button"; + card.className = "map-qso-card"; + card.classList.toggle("is-selected", entry.pathKey === selectedMapQsoKey); + card.setAttribute("aria-pressed", entry.pathKey === selectedMapQsoKey ? "true" : "false"); + card.addEventListener("click", () => { + selectedMapQsoKey = selectedMapQsoKey === entry.pathKey ? null : entry.pathKey; + syncDecodeContactPathVisibility(); + if (selectedMapQsoKey && entry.sourceGrid) { + navigateToMapLocator(entry.sourceGrid, entry.sourceType); + } + }); + + const head = document.createElement("div"); + head.className = "map-qso-card-head"; + + const rank = document.createElement("span"); + rank.className = "map-qso-card-rank"; + rank.textContent = `#${index + 1}`; + head.appendChild(rank); + + const distance = document.createElement("span"); + distance.className = "map-qso-card-distance"; + distance.textContent = entry.distanceText || "--"; + head.appendChild(distance); + + const body = document.createElement("div"); + body.className = "map-qso-card-body"; + + const pair = document.createElement("div"); + pair.className = "map-qso-card-pair"; + pair.textContent = `${entry.source || "Unknown"} <-> ${entry.target || "Unknown"}`; + body.appendChild(pair); + + const meta = document.createElement("div"); + meta.className = "map-qso-card-meta"; + + const sourceType = document.createElement("span"); + sourceType.className = "map-qso-card-pill"; + sourceType.textContent = String(entry.sourceType || "ft8").toUpperCase(); + meta.appendChild(sourceType); + + if (entry.bandLabel) { + const band = document.createElement("span"); + band.className = "map-qso-card-pill map-qso-card-band"; + band.style.setProperty("--band-color", locatorBandChipColor(entry.bandLabel)); + band.textContent = entry.bandLabel; + meta.appendChild(band); + } + + const ageText = formatTimeAgo(Number(entry.tsMs)); + if (ageText) { + const age = document.createElement("span"); + age.className = "map-qso-card-pill"; + age.textContent = ageText; + meta.appendChild(age); + } + + const rxLabel = _receiverLabel(entry.remote); + if (rxLabel) { + const rx = document.createElement("span"); + rx.className = "map-qso-card-pill map-qso-card-rx"; + rx.textContent = rxLabel; + meta.appendChild(rx); + } + + body.appendChild(meta); + + const grids = document.createElement("div"); + grids.className = "map-qso-card-grids"; + grids.textContent = `${entry.sourceGrid || "--"} <-> ${entry.targetGrid || "--"}`; + body.appendChild(grids); + + card.appendChild(head); + card.appendChild(body); + fragment.appendChild(card); + }); + + listEl.replaceChildren(fragment); + } + + function renderMapSignalSummary() { + const listEl = document.getElementById("map-signal-summary-list"); + if (!listEl) return; + + const cutoff = _statsHistoryCutoffMs(); + const bestByStation = new Map(); + for (const entry of locatorMarkers.values()) { + if (!entry || (entry.sourceType !== "ft8" && entry.sourceType !== "ft4" && entry.sourceType !== "ft2" && entry.sourceType !== "wspr")) continue; + if (!(entry.stationDetails instanceof Map)) continue; + for (const detail of entry.stationDetails.values()) { + if (!Number.isFinite(detail?.snr_db)) continue; + if (!_statsDetailPassesRigFilter(detail)) continue; + if (detail.ts_ms && detail.ts_ms < cutoff) continue; + const station = String(detail?.source || detail?.station || "").trim().toUpperCase(); + if (!station) continue; + const snrDb = Number(detail.snr_db); + const tsMs = Number.isFinite(detail?.ts_ms) ? Number(detail.ts_ms) : 0; + const prev = bestByStation.get(station); + if (!prev || snrDb > prev.snrDb || (snrDb === prev.snrDb && tsMs > prev.tsMs)) { + bestByStation.set(station, { + station, + snrDb, + tsMs, + grid: entry.grid, + sourceType: entry.sourceType, + bandLabel: bandForHz(Number(detail?.freq_hz))?.label || null, + remote: detail?.remote || null, + }); + } + } + } + + const entries = Array.from(bestByStation.values()) + .sort((a, b) => { + const delta = b.snrDb - a.snrDb; + if (Math.abs(delta) > 0.001) return delta; + return b.tsMs - a.tsMs; + }) + .slice(0, MAP_QSO_SUMMARY_LIMIT); + + if (entries.length === 0) { + const empty = document.createElement("div"); + empty.className = "map-qso-summary-empty"; + empty.textContent = "No decoded signals with SNR data in the current map history."; + listEl.replaceChildren(empty); + return; + } + + const fragment = document.createDocumentFragment(); + entries.forEach((entry, index) => { + const card = document.createElement("button"); + card.type = "button"; + card.className = "map-qso-card"; + if (entry.grid) { + card.addEventListener("click", () => { + navigateToMapLocator(entry.grid, entry.sourceType); + }); + } + + const head = document.createElement("div"); + head.className = "map-qso-card-head"; + + const rank = document.createElement("span"); + rank.className = "map-qso-card-rank"; + rank.textContent = `#${index + 1}`; + head.appendChild(rank); + + const snr = document.createElement("span"); + snr.className = "map-qso-card-distance"; + snr.textContent = `${entry.snrDb >= 0 ? "+" : ""}${entry.snrDb.toFixed(0)} dB`; + head.appendChild(snr); + + const body = document.createElement("div"); + body.className = "map-qso-card-body"; + + const pair = document.createElement("div"); + pair.className = "map-qso-card-pair"; + pair.textContent = entry.station; + body.appendChild(pair); + + const meta = document.createElement("div"); + meta.className = "map-qso-card-meta"; + + const sourceType = document.createElement("span"); + sourceType.className = "map-qso-card-pill"; + sourceType.textContent = String(entry.sourceType || "ft8").toUpperCase(); + meta.appendChild(sourceType); + + if (entry.bandLabel) { + const band = document.createElement("span"); + band.className = "map-qso-card-pill map-qso-card-band"; + band.style.setProperty("--band-color", locatorBandChipColor(entry.bandLabel)); + band.textContent = entry.bandLabel; + meta.appendChild(band); + } + + const ageText = formatTimeAgo(Number(entry.tsMs)); + if (ageText) { + const age = document.createElement("span"); + age.className = "map-qso-card-pill"; + age.textContent = ageText; + meta.appendChild(age); + } + + const rxLabel = _receiverLabel(entry.remote); + if (rxLabel) { + const rx = document.createElement("span"); + rx.className = "map-qso-card-pill map-qso-card-rx"; + rx.textContent = rxLabel; + meta.appendChild(rx); + } + + body.appendChild(meta); + + const grids = document.createElement("div"); + grids.className = "map-qso-card-grids"; + grids.textContent = entry.grid || "--"; + body.appendChild(grids); + + card.appendChild(head); + card.appendChild(body); + fragment.appendChild(card); + }); + listEl.replaceChildren(fragment); + } + + function renderMapWeakSignalSummary() { + const listEl = document.getElementById("map-weak-signal-summary-list"); + if (!listEl) return; + + const cutoff = _statsHistoryCutoffMs(); + const worstByStation = new Map(); + for (const entry of locatorMarkers.values()) { + if (!entry || (entry.sourceType !== "ft8" && entry.sourceType !== "ft4" && entry.sourceType !== "ft2" && entry.sourceType !== "wspr")) continue; + if (!(entry.stationDetails instanceof Map)) continue; + for (const detail of entry.stationDetails.values()) { + if (!Number.isFinite(detail?.snr_db)) continue; + if (!_statsDetailPassesRigFilter(detail)) continue; + if (detail.ts_ms && detail.ts_ms < cutoff) continue; + const station = String(detail?.source || detail?.station || "").trim().toUpperCase(); + if (!station) continue; + const snrDb = Number(detail.snr_db); + const tsMs = Number.isFinite(detail?.ts_ms) ? Number(detail.ts_ms) : 0; + const prev = worstByStation.get(station); + if (!prev || snrDb < prev.snrDb || (snrDb === prev.snrDb && tsMs > prev.tsMs)) { + worstByStation.set(station, { + station, + snrDb, + tsMs, + grid: entry.grid, + sourceType: entry.sourceType, + bandLabel: bandForHz(Number(detail?.freq_hz))?.label || null, + remote: detail?.remote || null, + }); + } + } + } + + const entries = Array.from(worstByStation.values()) + .sort((a, b) => { + const delta = a.snrDb - b.snrDb; + if (Math.abs(delta) > 0.001) return delta; + return b.tsMs - a.tsMs; + }) + .slice(0, MAP_QSO_SUMMARY_LIMIT); + + if (entries.length === 0) { + const empty = document.createElement("div"); + empty.className = "map-qso-summary-empty"; + empty.textContent = "No decoded signals with SNR data in the current map history."; + listEl.replaceChildren(empty); + return; + } + + const fragment = document.createDocumentFragment(); + entries.forEach((entry, index) => { + const card = document.createElement("button"); + card.type = "button"; + card.className = "map-qso-card"; + if (entry.grid) { + card.addEventListener("click", () => { + navigateToMapLocator(entry.grid, entry.sourceType); + }); + } + + const head = document.createElement("div"); + head.className = "map-qso-card-head"; + + const rank = document.createElement("span"); + rank.className = "map-qso-card-rank"; + rank.textContent = `#${index + 1}`; + head.appendChild(rank); + + const snr = document.createElement("span"); + snr.className = "map-qso-card-distance"; + snr.textContent = `${entry.snrDb >= 0 ? "+" : ""}${entry.snrDb.toFixed(0)} dB`; + head.appendChild(snr); + + const body = document.createElement("div"); + body.className = "map-qso-card-body"; + + const pair = document.createElement("div"); + pair.className = "map-qso-card-pair"; + pair.textContent = entry.station; + body.appendChild(pair); + + const meta = document.createElement("div"); + meta.className = "map-qso-card-meta"; + + const sourceType = document.createElement("span"); + sourceType.className = "map-qso-card-pill"; + sourceType.textContent = String(entry.sourceType || "ft8").toUpperCase(); + meta.appendChild(sourceType); + + if (entry.bandLabel) { + const band = document.createElement("span"); + band.className = "map-qso-card-pill map-qso-card-band"; + band.style.setProperty("--band-color", locatorBandChipColor(entry.bandLabel)); + band.textContent = entry.bandLabel; + meta.appendChild(band); + } + + const ageText = formatTimeAgo(Number(entry.tsMs)); + if (ageText) { + const age = document.createElement("span"); + age.className = "map-qso-card-pill"; + age.textContent = ageText; + meta.appendChild(age); + } + + const rxLabel = _receiverLabel(entry.remote); + if (rxLabel) { + const rx = document.createElement("span"); + rx.className = "map-qso-card-pill map-qso-card-rx"; + rx.textContent = rxLabel; + meta.appendChild(rx); + } + + body.appendChild(meta); + + const grids = document.createElement("div"); + grids.className = "map-qso-card-grids"; + grids.textContent = entry.grid || "--"; + body.appendChild(grids); + + card.appendChild(head); + card.appendChild(body); + fragment.appendChild(card); + }); + listEl.replaceChildren(fragment); + } + + // ── Statistics panel ───────────────────────────────────────────────── + let statsRigFilter = ""; + let statsHistoryLimitMinutes = 1440; + const statsDecodeLog = []; // {type, ts_ms, remote} + const STATS_LOG_MAX = 50000; + const STATS_TYPE_COLORS = { + ft8: "#4fc3f7", ft4: "#81c784", ft2: "#aed581", wspr: "#ffb74d", + aprs: "#ce93d8", hf_aprs: "#ba68c8", ais: "#90a4ae", vdes: "#78909c", + cw: "#fff176", + }; + const STATS_DX_BUCKETS = [ + { label: "0–500 km", min: 0, max: 500 }, + { label: "500–1k", min: 500, max: 1000 }, + { label: "1k–2k", min: 1000, max: 2000 }, + { label: "2k–5k", min: 2000, max: 5000 }, + { label: "5k–10k", min: 5000, max: 10000 }, + { label: "10k+ km", min: 10000, max: Infinity }, + ]; + + function _statsHistoryCutoffMs() { + return Date.now() - (statsHistoryLimitMinutes * 60 * 1000); + } + + function _statsDetailPassesRigFilter(detail) { + if (!statsRigFilter) return true; + if (detail?.remotes instanceof Set) return detail.remotes.has(statsRigFilter); + return detail?.remote === statsRigFilter; + } + + function updateStatsRigFilter() { + const el = document.getElementById("stats-rig-filter"); + if (!el) return; + const prev = el.value; + while (el.options.length > 1) el.remove(1); + for (const id of T.lastRigIds) { + const opt = document.createElement("option"); + opt.value = id; + opt.textContent = T.lastRigDisplayNames[id] || id; + el.appendChild(opt); + } + if (prev && T.lastRigIds.includes(prev)) { + el.value = prev; + } else { + el.value = ""; + statsRigFilter = ""; + } + } + + function statsRecordDecode(type, remote, tsMs) { + statsDecodeLog.push({ type: String(type || "unknown"), ts_ms: tsMs || Date.now(), remote: remote || null }); + if (statsDecodeLog.length > STATS_LOG_MAX) { + statsDecodeLog.splice(0, statsDecodeLog.length - STATS_LOG_MAX); + } + } + + function _statsFilteredLog() { + const cutoff = _statsHistoryCutoffMs(); + return statsDecodeLog.filter((e) => { + if (e.ts_ms < cutoff) return false; + if (statsRigFilter && e.remote && e.remote !== statsRigFilter) return false; + return true; + }); + } + + function renderStatsCounters() { + const cutoff = _statsHistoryCutoffMs(); + const log = _statsFilteredLog(); + const totalDecodes = log.length; + + const uniqueStations = new Set(); + const uniqueGrids = new Set(); + for (const entry of locatorMarkers.values()) { + if (!entry || !(entry.stationDetails instanceof Map)) continue; + for (const detail of entry.stationDetails.values()) { + if (detail?.ts_ms && detail.ts_ms < cutoff) continue; + if (!_statsDetailPassesRigFilter(detail)) continue; + const station = String(detail?.source || detail?.station || "").trim().toUpperCase(); + if (station) uniqueStations.add(station); + } + if (entry.grid) { + const hasVisible = entry.stationDetails instanceof Map && Array.from(entry.stationDetails.values()).some( + (d) => (!d.ts_ms || d.ts_ms >= cutoff) && _statsDetailPassesRigFilter(d) + ); + if (hasVisible) uniqueGrids.add(entry.grid); + } + } + + // Decode rate: decodes in last 60 seconds → per minute + const rateWindow = Date.now() - 60000; + const recentCount = log.filter((e) => e.ts_ms >= rateWindow).length; + + const setEl = (id, val) => { + const el = document.getElementById(id); + if (el) el.textContent = String(val); + }; + setEl("stats-total-decodes", totalDecodes.toLocaleString()); + setEl("stats-unique-stations", uniqueStations.size.toLocaleString()); + setEl("stats-unique-grids", uniqueGrids.size.toLocaleString()); + setEl("stats-decode-rate", recentCount.toLocaleString()); + } + + function _renderBarChart(containerId, data, emptyMsg) { + const el = document.getElementById(containerId); + if (!el) return; + if (!data || data.length === 0 || data.every((d) => d.count === 0)) { + el.replaceChildren(); + const empty = document.createElement("div"); + empty.className = "stats-bar-empty"; + empty.textContent = emptyMsg || "No data available."; + el.appendChild(empty); + return; + } + const maxVal = Math.max(1, ...data.map((d) => d.count)); + const fragment = document.createDocumentFragment(); + for (const item of data) { + const row = document.createElement("div"); + row.className = "stats-bar-row"; + + const label = document.createElement("span"); + label.className = "stats-bar-label"; + label.textContent = item.label; + row.appendChild(label); + + const track = document.createElement("div"); + track.className = "stats-bar-track"; + const fill = document.createElement("div"); + fill.className = "stats-bar-fill"; + fill.style.width = `${(item.count / maxVal) * 100}%`; + fill.style.background = item.color || "var(--accent-green)"; + track.appendChild(fill); + row.appendChild(track); + + const count = document.createElement("span"); + count.className = "stats-bar-count"; + count.textContent = item.count.toLocaleString(); + row.appendChild(count); + + fragment.appendChild(row); + } + el.replaceChildren(fragment); + } + + function renderStatsDecodeTypes() { + const log = _statsFilteredLog(); + const counts = {}; + for (const e of log) { + counts[e.type] = (counts[e.type] || 0) + 1; + } + const data = Object.entries(counts) + .map(([type, count]) => ({ + label: type.toUpperCase(), + count, + color: STATS_TYPE_COLORS[type] || "#aaa", + })) + .sort((a, b) => b.count - a.count); + _renderBarChart("stats-decode-type-bars", data, "No decoded signals in the current history."); + } + + function renderStatsBandActivity() { + const cutoff = _statsHistoryCutoffMs(); + const bandCounts = {}; + for (const entry of locatorMarkers.values()) { + if (!entry || !(entry.stationDetails instanceof Map)) continue; + for (const detail of entry.stationDetails.values()) { + if (detail?.ts_ms && detail.ts_ms < cutoff) continue; + if (!_statsDetailPassesRigFilter(detail)) continue; + if (!Number.isFinite(detail?.freq_hz)) continue; + const band = bandForHz(Number(detail.freq_hz)); + if (band) { + bandCounts[band.label] = (bandCounts[band.label] || 0) + 1; + } + } + } + const data = Object.entries(bandCounts) + .map(([label, count]) => ({ + label, + count, + color: locatorBandChipColor(label), + })) + .sort((a, b) => b.count - a.count); + _renderBarChart("stats-band-activity-bars", data, "No band activity data in the current history."); + } + + function renderStatsRigCompare() { + const section = document.getElementById("stats-rig-compare-section"); + if (!section) return; + if (T.lastRigIds.length < 2) { + section.style.display = "none"; + return; + } + section.style.display = ""; + const cutoff = _statsHistoryCutoffMs(); + const rigCounts = {}; + for (const e of statsDecodeLog) { + if (e.ts_ms < cutoff) continue; + const rid = e.remote || "unknown"; + rigCounts[rid] = (rigCounts[rid] || 0) + 1; + } + const data = Object.entries(rigCounts) + .map(([rid, count]) => ({ + label: T.lastRigDisplayNames[rid] || rid, + count, + color: "var(--accent-green)", + })) + .sort((a, b) => b.count - a.count); + _renderBarChart("stats-rig-compare-bars", data, "No decode data per receiver."); + } + + function renderStatsDxHistogram() { + const cutoff = _statsHistoryCutoffMs(); + const buckets = STATS_DX_BUCKETS.map((b) => ({ ...b, count: 0 })); + for (const entry of decodeContactPaths.values()) { + if (!entry || !Number.isFinite(entry.distanceKm)) continue; + if (entry.tsMs && entry.tsMs < cutoff) continue; + if (!_statsDetailPassesRigFilter(entry)) continue; + const km = entry.distanceKm; + for (const b of buckets) { + if (km >= b.min && km < b.max) { b.count++; break; } + } + } + const data = buckets.map((b) => ({ + label: b.label, + count: b.count, + color: "#4fc3f7", + })); + _renderBarChart("stats-dx-histogram-bars", data, "No directed contact paths in the current history."); + } + + let _statsRenderPending = false; + let _statsControlsWired = false; + function _wireStatsControls() { + if (_statsControlsWired) return; + const rigEl = document.getElementById("stats-rig-filter"); + const histEl = document.getElementById("stats-history-limit"); + if (!rigEl && !histEl) return; // template not yet cloned + _statsControlsWired = true; + if (rigEl) { + rigEl.addEventListener("change", () => { + statsRigFilter = rigEl.value; + scheduleStatsRender(); + }); + } + if (histEl) { + histEl.value = String(statsHistoryLimitMinutes); + histEl.addEventListener("change", () => { + statsHistoryLimitMinutes = Number(histEl.value) || 1440; + scheduleStatsRender(); + }); + } + } + function scheduleStatsRender() { + if (_statsRenderPending) return; + _statsRenderPending = true; + requestAnimationFrame(() => { + _statsRenderPending = false; + _wireStatsControls(); + renderStatsCounters(); + renderStatsDecodeTypes(); + renderStatsBandActivity(); + renderStatsRigCompare(); + renderStatsDxHistogram(); + renderMapQsoSummary(); + renderMapSignalSummary(); + renderMapWeakSignalSummary(); + }); + } + + function buildBookmarkLocatorPopupHtml(grid, bookmarks) { + const list = Array.isArray(bookmarks) ? bookmarks : []; + const rows = list + .map((bm) => { + const title = escapeMapHtml(String(bm.name || "Bookmark")); + const freq = typeof bmFmtFreq === "function" + ? escapeMapHtml(bmFmtFreq(bm.freq_hz)) + : escapeMapHtml(String(bm.freq_hz || "--")); + const mode = bm.mode ? ` · ${escapeMapHtml(String(bm.mode))}` : ""; + return `${title} ${freq}${mode}`; + }) + .join("
    "); + return `${escapeMapHtml(grid)}
    Bookmarks: ${list.length || 1}` + (rows ? `
    ${rows}` : ""); + } + + window.syncBookmarkMapLocators = function(bookmarks) { + const list = Array.isArray(bookmarks) ? bookmarks : []; + const grouped = new Map(); + for (const bm of list) { + const grid = String(bm?.locator || "").trim().toUpperCase(); + if (!grid) continue; + const bounds = maidenheadToBounds(grid); + if (!bounds) continue; + const key = `bookmark:${grid}`; + const bucket = grouped.get(key); + if (bucket) { + bucket.bookmarks.push(bm); + } else { + grouped.set(key, { grid, bounds, bookmarks: [bm] }); + } + } + + for (const [key, entry] of locatorMarkers.entries()) { + if (!key.startsWith("bookmark:")) continue; + if (!grouped.has(key)) { + if (entry && entry.marker) { + if (entry.marker === selectedLocatorMarker) { + setSelectedLocatorMarker(null); + clearMapRadioPath(); + } + if (aprsMap && aprsMap.hasLayer(entry.marker)) entry.marker.removeFrom(aprsMap); + mapMarkers.delete(entry.marker); + } + locatorMarkers.delete(key); + } + } + + for (const [key, next] of grouped.entries()) { + const existing = locatorMarkers.get(key); + const popupHtml = buildBookmarkLocatorPopupHtml(next.grid, next.bookmarks); + const bandMeta = collectBandMeta(next.bookmarks.map((bm) => Number(bm?.freq_hz))); + if (existing) { + existing.grid = next.grid; + existing.bounds = next.bounds; + existing.bookmarks = next.bookmarks; + existing.sourceType = "bookmark"; + existing.bandMeta = bandMeta; + if (existing.marker) { + existing.marker.setBounds(next.bounds); + existing.marker.setStyle(locatorStyleForEntry(existing, next.bookmarks.length)); + existing.marker.setPopupContent(popupHtml); + sendLocatorOverlayToBack(existing.marker); + assignLocatorMarkerMeta(existing.marker, existing.sourceType, existing.bandMeta); + } + continue; + } + + const entry = { + marker: null, + grid: next.grid, + bounds: next.bounds, + bookmarks: next.bookmarks, + sourceType: "bookmark", + bandMeta, + }; + locatorMarkers.set(key, entry); + if (aprsMap) { + entry.marker = L.rectangle(next.bounds, locatorStyleForEntry(entry, next.bookmarks.length)) + .addTo(aprsMap) + .bindPopup(popupHtml); + entry.marker.__trxType = "bookmark"; + sendLocatorOverlayToBack(entry.marker); + assignLocatorMarkerMeta(entry.marker, entry.sourceType, entry.bandMeta); + mapMarkers.add(entry.marker); + } + } + + rebuildMapLocatorFilters(); + applyMapFilter(); + }; + + window.mapAddLocator = function(message, grids, type = "ft8", station = null, details = null) { + if (!Array.isArray(grids) || grids.length === 0) return; + const markerType = type === "wspr" ? "wspr" : (type === "ft4" ? "ft4" : (type === "ft2" ? "ft2" : "ft8")); + const msgRigId = details?.rig_id || T.lastActiveRigId; + const unique = [...new Set(grids.map((g) => String(g).toUpperCase()))]; + const stationId = station && String(station).trim() ? String(station).trim().toUpperCase() : ""; + const locatorDetails = new Map(); + if (Array.isArray(details?.locator_details)) { + for (const locatorDetail of details.locator_details) { + const grid = String(locatorDetail?.grid || "").trim().toUpperCase(); + if (!grid) continue; + locatorDetails.set(grid, locatorDetail); + } + } + for (const grid of unique) { + const bounds = maidenheadToBounds(grid); + if (!bounds) continue; + const locatorDetail = locatorDetails.get(grid); + const sourceId = locatorDetail?.source && String(locatorDetail.source).trim() + ? String(locatorDetail.source).trim().toUpperCase() + : ""; + const targetId = locatorDetail?.target && String(locatorDetail.target).trim() + ? String(locatorDetail.target).trim().toUpperCase() + : ""; + const detailStationId = sourceId || stationId; + const detailEntry = { + station: detailStationId || null, + source: sourceId || null, + target: targetId || null, + ts_ms: Number.isFinite(details?.ts_ms) ? Number(details.ts_ms) : null, + snr_db: Number.isFinite(details?.snr_db) ? Number(details.snr_db) : null, + dt_s: Number.isFinite(details?.dt_s) ? Number(details.dt_s) : null, + freq_hz: Number.isFinite(details?.freq_hz) ? Number(details.freq_hz) : null, + message: String(details?.message || message || "").trim() || null, + remote: msgRigId || null, + remotes: new Set(msgRigId ? [msgRigId] : []), + }; + const detailKey = detailStationId || `${targetId || "decode"}:${detailEntry.message || "decode"}:${detailEntry.ts_ms || Date.now()}`; + const key = `${markerType}:${grid}`; + const existing = locatorMarkers.get(key); + if (existing) { + existing.grid = grid; + if (!(existing.allStationDetails instanceof Map)) { + existing.allStationDetails = existing.stationDetails instanceof Map + ? new Map(existing.stationDetails) + : new Map(); + } + const prevDetail = existing.allStationDetails.get(detailKey); + const mergedRemotes = prevDetail?.remotes instanceof Set ? new Set(prevDetail.remotes) : new Set(); + if (msgRigId) mergedRemotes.add(msgRigId); + existing.allStationDetails.set(detailKey, { ...detailEntry, remotes: mergedRemotes }); + existing.sourceType = markerType; + if (msgRigId) { + if (!existing.rigIds) existing.rigIds = new Set(); + existing.rigIds.add(msgRigId); + } + pruneLocatorEntry(key, existing, mapHistoryCutoffMs()); + if (existing.marker) sendLocatorOverlayToBack(existing.marker); + scheduleDecodeMapMaintenance(); + continue; + } + + const allStationDetails = new Map(); + allStationDetails.set(detailKey, { ...detailEntry }); + const entry = { + marker: null, + grid, + stations: new Set(), + stationDetails: new Map(), + allStationDetails, + sourceType: markerType, + bandMeta: new Map(), + rigIds: new Set(msgRigId ? [msgRigId] : []), + }; + locatorMarkers.set(key, entry); + pruneLocatorEntry(key, entry, mapHistoryCutoffMs()); + if (entry.marker) sendLocatorOverlayToBack(entry.marker); + } + scheduleDecodeMapMaintenance(); + }; + + // --- Sub-tab navigation --- + document.querySelectorAll(".sub-tab-bar").forEach((bar) => { + bar.addEventListener("click", (e) => { + const btn = e.target.closest(".sub-tab[data-subtab]"); + if (!btn) return; + bar.querySelectorAll(".sub-tab").forEach((t) => t.classList.remove("active")); + btn.classList.add("active"); + const parent = bar.parentElement; + parent.querySelectorAll(".sub-tab-panel").forEach((p) => p.style.display = "none"); + const nextPanel = parent.querySelector(`#subtab-${btn.dataset.subtab}`); + if (nextPanel) nextPanel.style.display = ""; + if (btn.dataset.subtab === "cw" && window.refreshCwTonePicker) { + requestAnimationFrame(() => { + if (window.refreshCwTonePicker) window.refreshCwTonePicker(); + }); + } + // Clear SAT prediction DOM when leaving the SAT tab to reduce node count. + if (btn.dataset.subtab !== "sat" && typeof window.clearSatPredictionDom === "function") { + window.clearSatPredictionDom(); + } + }); + }); + + window.addEventListener("resize", () => { + const mapTab = document.getElementById("tab-map"); + if (!mapTab || mapTab.style.display === "none") return; + sizeAprsMapToViewport(); + }); + + + function flushDeferredDecodeMapSync() { + if (!T.decodeMapSyncPending || T.decodeHistoryReplayActive || !aprsMap) return; + T.decodeMapSyncPending = false; + scheduleUiFrameJob("decode-map-maintenance", () => { + pruneMapHistory(); + }); + } + + + // Auto-init map if the map tab is already visible (e.g. direct /map navigation). + // Delegates to _initMapWhenReady() in app.js which handles the Leaflet load race. + function autoInitIfVisible() { + const panel = document.getElementById("tab-map"); + if (panel && panel.style.display !== "none" && typeof _initMapWhenReady === "function") { + _initMapWhenReady(); + } + } + + // Register module API for core to call + window.trx.map = { + initAprsMap, + sizeAprsMapToViewport, + syncAprsReceiverMarker, + updateMapRigFilter, + updateStatsRigFilter, + statsRecordDecode, + scheduleStatsRender, + get aprsMap() { return aprsMap; }, + get stationMarkers() { return stationMarkers; }, + get locatorMarkers() { return locatorMarkers; }, + get aisMarkers() { return aisMarkers; }, + get vdesMarkers() { return vdesMarkers; }, + get decodeContactPaths() { return decodeContactPaths; }, + pruneMapHistory, + aprsSymbolIcon, + buildAprsPopupHtml, + buildAisPopupHtml, + buildVdesPopupHtml, + ensureAprsMarker, + ensureAisMarker, + ensureVdesMarker, + ensureDecodeLocatorMarker, + aprsPositionsEqual, + aisPositionsEqual, + refreshAprsTrack, + refreshAisTrack, + updateAisMarker, + createAisMarker, + getAisAccentColor, + refreshAisMarkerColors, + setMapRadioPathTo, + buildReceiverPopupHtml, + rebuildDecodeContactPaths, + syncDecodeContactPathVisibility, + scheduleDecodeMapMaintenance, + renderMapLocatorLegend, + rebuildMapLocatorFilters, + renderMapQsoSummary, + renderMapSignalSummary, + renderMapWeakSignalSummary, + vdesMarkerKey, + aisMarkerOptionsFromMessage, + materializeBufferedMapLayers, + flushDeferredDecodeMapSync, + bandForHz, + reverseGeocodeLocation, + }; + + // If the map tab is already visible (direct /map URL), init immediately. + autoInitIfVisible(); +})(); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ais.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ais.js new file mode 100644 index 0000000..cdde8bc --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ais.js @@ -0,0 +1,407 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// --- AIS Decoder Plugin (server-side decode) --- +const aisStatus = document.getElementById("ais-status"); +const aisMessagesEl = document.getElementById("ais-messages"); +const aisFilterInput = document.getElementById("ais-filter"); +const aisBarOverlay = document.getElementById("ais-bar-overlay"); +const aisChannelSummaryEl = document.getElementById("ais-channel-summary"); +const aisVesselCountEl = document.getElementById("ais-vessel-count"); +const aisLatestSeenEl = document.getElementById("ais-latest-seen"); +const AIS_BAR_WINDOW_MS = 15 * 60 * 1000; +const AIS_DEFAULT_A_HZ = 161_975_000; +const AIS_CHANNEL_SPACING_HZ = 50_000; +let aisFilterText = ""; +let aisMessageHistory = []; + +function currentAisHistoryRetentionMs() { + return typeof window.getDecodeHistoryRetentionMs === "function" + ? window.getDecodeHistoryRetentionMs() + : 24 * 60 * 60 * 1000; +} + +function pruneAisMessageHistory() { + const cutoffMs = Date.now() - currentAisHistoryRetentionMs(); + aisMessageHistory = aisMessageHistory.filter((msg) => Number(msg?._tsMs) >= cutoffMs); +} + +function scheduleAisUi(key, job) { + if (typeof window.trxScheduleUiFrameJob === "function") { + window.trxScheduleUiFrameJob(key, job); + return; + } + job(); +} + +function scheduleAisHistoryRender() { + scheduleAisUi("ais-history", () => renderAisHistory()); +} + +function scheduleAisBarUpdate() { + scheduleAisUi("ais-bar", () => updateAisBar()); +} + +function formatAisMhz(freqHz) { + return `${(freqHz / 1_000_000).toFixed(3)} MHz`; +} + +function currentAisChannelPlan() { + const raw = (document.getElementById("freq")?.value || "").replace(/[^\d]/g, ""); + const aHz = raw ? Number(raw) : AIS_DEFAULT_A_HZ; + const safeAHz = Number.isFinite(aHz) && aHz > 0 ? aHz : AIS_DEFAULT_A_HZ; + return { + aHz: safeAHz, + bHz: safeAHz + AIS_CHANNEL_SPACING_HZ, + }; +} + +function aisChannelInfo(channel) { + const plan = currentAisChannelPlan(); + const ch = String(channel || "").trim().toUpperCase(); + if (ch === "B") { + return { + label: "AIS-B", + badgeClass: "ais-badge ais-badge-channel-b", + freqText: formatAisMhz(plan.bHz), + }; + } + return { + label: "AIS-A", + badgeClass: "ais-badge ais-badge-channel-a", + freqText: formatAisMhz(plan.aHz), + }; +} + +function aisDisplayName(msg) { + return msg.vessel_name || msg.callsign || `MMSI ${msg.mmsi}`; +} + +function aisDisplayNameHtml(msg) { + const label = escapeMapHtml(aisDisplayName(msg)); + const url = window.buildAisVesselUrl ? window.buildAisVesselUrl(msg?.mmsi) : null; + if (!url) return label; + return `${label}`; +} + +function aisTypeLabel(type) { + switch (Number(type)) { + case 1: + case 2: + case 3: + return "Class A Position"; + case 4: + return "Base Station"; + case 5: + return "Static/Voyage"; + case 18: + return "Class B Position"; + case 19: + return "Class B Extended"; + case 21: + return "Aid to Nav"; + case 24: + return "Class B Static"; + default: + return `Type ${type ?? "--"}`; + } +} + +function aisAgeText(tsMs) { + if (!Number.isFinite(tsMs)) return "just now"; + const deltaMs = Math.max(0, Date.now() - tsMs); + const seconds = Math.round(deltaMs / 1000); + if (seconds < 5) return "just now"; + if (seconds < 60) return `${seconds}s ago`; + const minutes = Math.round(seconds / 60); + if (minutes < 60) return `${minutes}m ago`; + const hours = Math.round(minutes / 60); + return `${hours}h ago`; +} + +function aisMotionText(msg) { + const parts = [ + msg.sog_knots != null ? `${Number(msg.sog_knots).toFixed(1)} kn` : null, + msg.cog_deg != null ? `${Number(msg.cog_deg).toFixed(1)}° COG` : null, + msg.heading_deg != null ? `${Number(msg.heading_deg).toFixed(0)}° HDG` : null, + ].filter(Boolean); + return parts.join(" · "); +} + +function aisRouteText(msg) { + return [msg.callsign, msg.destination].filter(Boolean).join(" -> "); +} + +function aisDistanceText(msg) { + if (serverLat == null || serverLon == null || msg?.lat == null || msg?.lon == null) { + return ""; + } + const distKm = haversineKm(serverLat, serverLon, msg.lat, msg.lon); + if (!Number.isFinite(distKm)) return ""; + if (distKm < 1) return `${Math.round(distKm * 1000)} m from TRX`; + return `${distKm.toFixed(1)} km from TRX`; +} + +function aisLatestByVessel(messages) { + const byMmsi = new Map(); + for (const msg of messages) { + const key = Number.isFinite(msg.mmsi) ? String(msg.mmsi) : `${msg.channel || "?"}:${msg._tsMs || 0}`; + if (!byMmsi.has(key)) byMmsi.set(key, msg); + } + return Array.from(byMmsi.values()); +} + +function updateAisSummary() { + const plan = currentAisChannelPlan(); + if (aisChannelSummaryEl) { + aisChannelSummaryEl.textContent = `A ${formatAisMhz(plan.aHz)} · B ${formatAisMhz(plan.bHz)}`; + } + + const vessels = aisLatestByVessel(aisMessageHistory); + if (aisVesselCountEl) { + const count = vessels.length; + aisVesselCountEl.textContent = `${count} vessel${count === 1 ? "" : "s"}`; + } + + if (aisLatestSeenEl) { + const latest = aisMessageHistory[0]; + if (!latest) { + aisLatestSeenEl.textContent = "No traffic yet"; + } else { + const channel = aisChannelInfo(latest.channel); + aisLatestSeenEl.textContent = `${channel.label} ${aisAgeText(latest._tsMs)}`; + } + } +} + +function renderAisRow(msg) { + const row = document.createElement("div"); + row.className = "ais-message"; + const ts = msg._ts || new Date().toLocaleTimeString([], { + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + }); + const name = aisDisplayName(msg); + const nameHtml = aisDisplayNameHtml(msg); + const channel = aisChannelInfo(msg.channel); + const motion = aisMotionText(msg); + const route = aisRouteText(msg); + const distance = aisDistanceText(msg); + const pos = msg.lat != null && msg.lon != null + ? `${msg.lat.toFixed(4)}, ${msg.lon.toFixed(4)}` + : ""; + row.dataset.filterText = [ + name, + msg.mmsi, + msg.channel, + channel.label, + msg.vessel_name, + msg.callsign, + msg.destination, + aisTypeLabel(msg.message_type), + ] + .filter(Boolean) + .join(" ") + .toUpperCase(); + row.innerHTML = + `
    ` + + `${ts}` + + `${nameHtml}` + + `${escapeMapHtml(channel.label)}` + + `${escapeMapHtml(aisTypeLabel(msg.message_type))}` + + `
    ` + + `
    ` + + `MMSI ${escapeMapHtml(String(msg.mmsi))}` + + (route ? `${escapeMapHtml(route)}` : "") + + `${escapeMapHtml(channel.freqText)}` + + `
    ` + + `
    ` + + (motion ? `${escapeMapHtml(motion)}` : `No motion data`) + + (distance ? `${escapeMapHtml(distance)}` : "") + + (pos ? `${pos}` : "") + + `${escapeMapHtml(aisAgeText(msg._tsMs))}` + + `
    `; + applyAisFilterToRow(row); + return row; +} + +function applyAisFilterToRow(row) { + if (!aisFilterText) { + row.style.display = ""; + return; + } + const message = row.dataset.filterText || ""; + row.style.display = message.includes(aisFilterText) ? "" : "none"; +} + +function applyAisFilterToAll() { + if (!aisMessagesEl) return; + const rows = aisMessagesEl.querySelectorAll(".ais-message"); + rows.forEach((row) => applyAisFilterToRow(row)); +} + +function updateAisBar() { + if (!aisBarOverlay) return; + updateAisSummary(); + + const isAis = (document.getElementById("mode")?.value || "").toUpperCase() === "AIS"; + const cutoffMs = Date.now() - AIS_BAR_WINDOW_MS; + const recent = aisMessageHistory.filter((msg) => msg._tsMs >= cutoffMs); + const messages = aisLatestByVessel(recent).slice(0, 8); + if (!isAis || messages.length === 0) { + aisBarOverlay.style.display = "none"; + aisBarOverlay.innerHTML = ""; + return; + } + + let html = '
    AISLiveClearLast 15 minutes
    '; + for (const msg of messages) { + const ts = msg._ts ? `${msg._ts}` : ""; + const pin = msg.lat != null && msg.lon != null + ? `` + : ""; + const name = `${aisDisplayNameHtml(msg)}`; + const channel = aisChannelInfo(msg.channel); + const distance = aisDistanceText(msg); + const details = [ + `MMSI ${escapeMapHtml(String(msg.mmsi))}`, + escapeMapHtml(channel.label), + msg.sog_knots != null ? `${Number(msg.sog_knots).toFixed(1)} kn` : null, + msg.cog_deg != null ? `${Number(msg.cog_deg).toFixed(1)}°` : null, + distance ? escapeMapHtml(distance) : null, + escapeMapHtml(aisAgeText(msg._tsMs)), + ] + .filter(Boolean) + .join(" · "); + html += `
    ` + + `
    ${ts}${pin}${name}: ${details}
    ` + + `
    `; + } + aisBarOverlay.innerHTML = html; + aisBarOverlay.style.display = "flex"; +} +window.updateAisBar = updateAisBar; +window.clearAisBar = function() { + window.resetAisHistoryView(); +}; + +window.resetAisHistoryView = function() { + if (aisMessagesEl) aisMessagesEl.innerHTML = ""; + aisMessageHistory = []; + updateAisBar(); + renderAisHistory(); + if (window.clearMapMarkersByType) window.clearMapMarkersByType("ais"); +}; + +function renderAisHistory() { + pruneAisMessageHistory(); + if (!aisMessagesEl) { + updateAisSummary(); + return; + } + const fragment = document.createDocumentFragment(); + for (let i = 0; i < aisMessageHistory.length; i += 1) { + fragment.appendChild(renderAisRow(aisMessageHistory[i])); + } + aisMessagesEl.replaceChildren(fragment); + updateAisSummary(); +} + +function addAisMessage(msg) { + const tsMs = Number.isFinite(msg.ts_ms) ? Number(msg.ts_ms) : Date.now(); + msg._tsMs = tsMs; + msg._ts = new Date(tsMs).toLocaleTimeString([], { + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + }); + + aisMessageHistory.unshift(msg); + pruneAisMessageHistory(); + scheduleAisBarUpdate(); + scheduleAisHistoryRender(); + + if (msg.lat != null && msg.lon != null && window.aisMapAddVessel) { + window.aisMapAddVessel(msg); + } +} + +function normalizeServerAisMessage(msg) { + return { + rig_id: msg.rig_id || null, + channel: msg.channel, + message_type: msg.message_type, + mmsi: msg.mmsi, + lat: msg.lat, + lon: msg.lon, + sog_knots: msg.sog_knots, + cog_deg: msg.cog_deg, + heading_deg: msg.heading_deg, + vessel_name: msg.vessel_name, + callsign: msg.callsign, + destination: msg.destination, + ts_ms: msg.ts_ms, + }; +} + +window.onServerAisBatch = function(messages) { + if (!Array.isArray(messages) || messages.length === 0) return; + if (aisStatus) aisStatus.textContent = "Receiving"; + const normalized = []; + for (const msg of messages) { + const next = normalizeServerAisMessage(msg); + const tsMs = Number.isFinite(next.ts_ms) ? Number(next.ts_ms) : Date.now(); + next._tsMs = tsMs; + next._ts = new Date(tsMs).toLocaleTimeString([], { + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + }); + if (next.lat != null && next.lon != null && window.aisMapAddVessel) { + window.aisMapAddVessel(next); + } + normalized.push(next); + } + normalized.reverse(); + aisMessageHistory = normalized.concat(aisMessageHistory); + pruneAisMessageHistory(); + scheduleAisBarUpdate(); + scheduleAisHistoryRender(); +}; + +window.restoreAisHistory = function(messages) { + window.onServerAisBatch(messages); +}; + +window.pruneAisHistoryView = function() { + pruneAisMessageHistory(); + updateAisBar(); + renderAisHistory(); +}; + +document.getElementById("settings-clear-ais-history")?.addEventListener("click", async () => { + if (!confirm("Clear all AIS decode history? This cannot be undone.")) return; + try { + await postPath("/clear_ais_decode"); + window.resetAisHistoryView(); + } catch (e) { + console.error("AIS history clear failed", e); + } +}); + +if (aisFilterInput) { + aisFilterInput.addEventListener("input", () => { + aisFilterText = aisFilterInput.value.trim().toUpperCase(); + renderAisHistory(); + }); +} + +window.onServerAis = function(msg) { + if (aisStatus) aisStatus.textContent = "Receiving"; + addAisMessage(normalizeServerAisMessage(msg)); +}; + +updateAisSummary(); +if (window._trxDrainPendingDecode) window._trxDrainPendingDecode("ais"); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/aprs.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/aprs.js new file mode 100644 index 0000000..6012cc1 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/aprs.js @@ -0,0 +1,498 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// --- APRS Decoder Plugin (server-side decode) --- +const aprsStatus = document.getElementById("aprs-status"); +const aprsPacketsEl = document.getElementById("aprs-packets"); +const aprsFilterInput = document.getElementById("aprs-filter"); +const aprsBarOverlay = document.getElementById("aprs-bar-overlay"); +const aprsOnlyPosBtn = document.getElementById("aprs-only-pos-btn"); +const aprsHideCrcBtn = document.getElementById("aprs-hide-crc-btn"); +const aprsCollapseDupBtn = document.getElementById("aprs-collapse-dup-btn"); +const aprsTotalCountEl = document.getElementById("aprs-total-count"); +const aprsVisibleCountEl = document.getElementById("aprs-visible-count"); +const aprsLatestSeenEl = document.getElementById("aprs-latest-seen"); +const APRS_BAR_WINDOW_MS = 15 * 60 * 1000; +let aprsFilterText = ""; +let aprsPacketHistory = []; +let aprsBarDismissedAtMs = 0; +let aprsOnlyPos = false; +let aprsHideCrc = false; +let aprsCollapseDup = false; +let aprsTypeFilter = "all"; + +function currentAprsHistoryRetentionMs() { + return typeof window.getDecodeHistoryRetentionMs === "function" + ? window.getDecodeHistoryRetentionMs() + : 24 * 60 * 60 * 1000; +} + +function pruneAprsPacketHistory() { + const cutoffMs = Date.now() - currentAprsHistoryRetentionMs(); + aprsPacketHistory = aprsPacketHistory.filter((pkt) => Number(pkt?._tsMs) >= cutoffMs); +} + +function scheduleAprsUi(key, job) { + if (typeof window.trxScheduleUiFrameJob === "function") { + window.trxScheduleUiFrameJob(key, job); + return; + } + job(); +} + +function scheduleAprsHistoryRender() { + scheduleAprsUi("aprs-history", () => renderAprsHistory()); +} + +function scheduleAprsBarUpdate() { + scheduleAprsUi("aprs-bar", () => updateAprsBar()); +} + +function renderAprsInfo(pkt) { + const bytes = Array.isArray(pkt.info_bytes) ? pkt.info_bytes : null; + if (bytes && bytes.length > 0) { + let out = ""; + for (let i = 0; i < bytes.length; i++) { + const b = bytes[i]; + if (b >= 0x20 && b <= 0x7e) { + const ch = String.fromCharCode(b); + if (ch === "<") out += "<"; + else if (ch === ">") out += ">"; + else if (ch === "&") out += "&"; + else if (ch === '"') out += """; + else out += ch; + } else { + const hex = b.toString(16).toUpperCase().padStart(2, "0"); + out += `0x${hex}`; + } + } + return out; + } + const str = pkt.info || ""; + let out = ""; + for (let i = 0; i < str.length; i++) { + const code = str.charCodeAt(i); + if (code >= 0x20 && code <= 0x7e) { + const ch = str[i]; + if (ch === "<") out += "<"; + else if (ch === ">") out += ">"; + else if (ch === "&") out += "&"; + else if (ch === '"') out += """; + else out += ch; + } else { + const hex = code.toString(16).toUpperCase().padStart(2, "0"); + out += `0x${hex}`; + } + } + return out; +} + +function aprsPacketCategory(pkt) { + const type = String(pkt.type || "").toLowerCase(); + const info = String(pkt.info || "").toLowerCase(); + if (pkt.lat != null && pkt.lon != null || type.includes("position")) return "position"; + if (type.includes("message") || info.startsWith(":")) return "message"; + if (type.includes("weather") || info.startsWith("_")) return "weather"; + if (type.includes("telemetry") || info.startsWith("t#")) return "telemetry"; + return "other"; +} + +function aprsCategoryLabel(category) { + switch (category) { + case "position": return "Position"; + case "message": return "Message"; + case "weather": return "Weather"; + case "telemetry": return "Telemetry"; + default: return "Other"; + } +} + +function aprsAgeText(tsMs) { + if (!Number.isFinite(tsMs)) return "just now"; + const deltaMs = Math.max(0, Date.now() - tsMs); + const seconds = Math.round(deltaMs / 1000); + if (seconds < 5) return "just now"; + if (seconds < 60) return `${seconds}s ago`; + const minutes = Math.round(seconds / 60); + if (minutes < 60) return `${minutes}m ago`; + const hours = Math.round(minutes / 60); + return `${hours}h ago`; +} + +function aprsDistanceText(pkt) { + if (serverLat == null || serverLon == null || pkt.lat == null || pkt.lon == null) return ""; + const distKm = haversineKm(serverLat, serverLon, pkt.lat, pkt.lon); + if (!Number.isFinite(distKm)) return ""; + if (distKm < 1) return `${Math.round(distKm * 1000)} m from TRX`; + return `${distKm.toFixed(1)} km from TRX`; +} + +function aprsPacketSignature(pkt) { + return [ + pkt.srcCall || "", + pkt.destCall || "", + pkt.path || "", + pkt.info || "", + pkt.type || "", + pkt.lat != null ? pkt.lat.toFixed(4) : "", + pkt.lon != null ? pkt.lon.toFixed(4) : "", + ].join("|"); +} + +function aprsHexBytes(bytes) { + if (!Array.isArray(bytes) || bytes.length === 0) return "--"; + return bytes.map((b) => Number(b).toString(16).toUpperCase().padStart(2, "0")).join(" "); +} + +function aprsFilterMatch(pkt) { + if (aprsOnlyPos && (pkt.lat == null || pkt.lon == null)) return false; + if (aprsHideCrc && !pkt.crcOk) return false; + if (aprsTypeFilter !== "all" && aprsPacketCategory(pkt) !== aprsTypeFilter) return false; + if (!aprsFilterText) return true; + const haystack = [ + pkt.srcCall, + pkt.destCall, + pkt.path, + pkt.info, + pkt.type, + pkt.lat != null ? pkt.lat.toFixed(4) : "", + pkt.lon != null ? pkt.lon.toFixed(4) : "", + aprsPacketCategory(pkt), + ] + .filter(Boolean) + .join(" ") + .toUpperCase(); + return haystack.includes(aprsFilterText); +} + +function aprsVisiblePackets() { + const packets = aprsCollapseDup ? collapseAprsDuplicates(aprsPacketHistory) : aprsPacketHistory; + return packets.filter(aprsFilterMatch); +} + +function collapseAprsDuplicates(packets) { + const seen = new Set(); + const out = []; + for (const pkt of packets) { + const key = aprsPacketSignature(pkt); + if (seen.has(key)) continue; + seen.add(key); + out.push(pkt); + } + return out; +} + +function updateAprsSummary() { + const visible = aprsVisiblePackets(); + if (aprsTotalCountEl) { + aprsTotalCountEl.textContent = `${aprsPacketHistory.length} total`; + } + if (aprsVisibleCountEl) { + aprsVisibleCountEl.textContent = `${visible.length} shown`; + } + if (aprsLatestSeenEl) { + const latest = aprsPacketHistory[0]; + if (!latest) { + aprsLatestSeenEl.textContent = "No packets yet"; + } else { + aprsLatestSeenEl.textContent = `${latest.srcCall} ${aprsAgeText(latest._tsMs)}`; + } + } +} + +function updateAprsChipState() { + document.querySelectorAll("[id^='aprs-type-']").forEach((btn) => { + btn.classList.toggle("active", btn.id === `aprs-type-${aprsTypeFilter}`); + }); + aprsOnlyPosBtn?.classList.toggle("active", aprsOnlyPos); + aprsHideCrcBtn?.classList.toggle("active", aprsHideCrc); + aprsCollapseDupBtn?.classList.toggle("active", aprsCollapseDup); +} + +function renderAprsRow(pkt, isFresh) { + const row = document.createElement("div"); + row.className = "aprs-packet"; + if (!pkt.crcOk) row.classList.add("aprs-packet-crc"); + if (isFresh) row.classList.add("aprs-packet-new"); + + const ts = pkt._ts || new Date().toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" }); + const age = aprsAgeText(pkt._tsMs); + const category = aprsPacketCategory(pkt); + const categoryLabel = aprsCategoryLabel(category); + const categoryClass = `aprs-badge aprs-badge-type aprs-badge-type-${category}`; + const pathBadge = pkt.path ? `${escapeMapHtml(pkt.path)}` : ""; + const crcBadge = pkt.crcOk ? "" : 'CRC Fail'; + let symbolHtml = ""; + if (pkt.symbolTable && pkt.symbolCode) { + const sheet = pkt.symbolTable === "/" ? 0 : 1; + const code = pkt.symbolCode.charCodeAt(0) - 33; + const col = code % 16; + const row2 = Math.floor(code / 16); + const bgX = -(col * 24); + const bgY = -(row2 * 24); + symbolHtml = ``; + } + const posLink = pkt.lat != null && pkt.lon != null + ? `${pkt.lat.toFixed(4)}, ${pkt.lon.toFixed(4)}` + : ""; + const distance = aprsDistanceText(pkt); + const qrzHref = `https://qrzcq.com/call/${encodeURIComponent(pkt.srcCall || "")}`; + + row.innerHTML = + `
    ` + + `${ts}` + + symbolHtml + + `${escapeMapHtml(pkt.srcCall)}` + + `>${escapeMapHtml(pkt.destCall || "")}` + + `${escapeMapHtml(categoryLabel)}` + + pathBadge + + crcBadge + + `
    ` + + `
    ` + + `${escapeMapHtml(age)}` + + (distance ? `${escapeMapHtml(distance)}` : "") + + `${escapeMapHtml(pkt.type || "--")}` + + `
    ` + + `
    ` + + `${renderAprsInfo(pkt)}` + + (posLink ? `${posLink}` : "") + + `
    ` + + `
    ` + + (pkt.lat != null && pkt.lon != null ? `` : "") + + (pkt.lat != null && pkt.lon != null ? `` : "") + + `QRZ` + + `
    ` + + `
    ` + + `Details` + + `
    ` + + `Source${escapeMapHtml(pkt.srcCall || "--")}` + + `Destination${escapeMapHtml(pkt.destCall || "--")}` + + `Type${escapeMapHtml(pkt.type || "--")}` + + `Path${escapeMapHtml(pkt.path || "--")}` + + `Age${escapeMapHtml(age)}` + + `CRC${pkt.crcOk ? "OK" : "Failed"}` + + `Position${pkt.lat != null && pkt.lon != null ? `${pkt.lat.toFixed(5)}, ${pkt.lon.toFixed(5)}` : "--"}` + + `Info${escapeMapHtml(pkt.info || "--")}` + + `Info Bytes${escapeMapHtml(aprsHexBytes(pkt.info_bytes))}` + + `
    ` + + `
    `; + + row.querySelectorAll("[data-aprs-map]").forEach((el) => { + el.addEventListener("click", (evt) => { + evt.preventDefault(); + const raw = String(el.dataset.aprsMap || ""); + const [lat, lon] = raw.split(",").map(Number); + if (window.navigateToAprsMap && Number.isFinite(lat) && Number.isFinite(lon)) { + window.navigateToAprsMap(lat, lon); + } + }); + }); + + const copyBtn = row.querySelector("[data-aprs-copy]"); + if (copyBtn) { + copyBtn.addEventListener("click", async () => { + const raw = String(copyBtn.dataset.aprsCopy || ""); + try { + if (navigator.clipboard?.writeText) { + await navigator.clipboard.writeText(raw); + showHint("Coordinates copied", 1200); + } + } catch (_e) { + showHint("Copy failed", 1500); + } + }); + } + + return row; +} + +function renderAprsHistory() { + pruneAprsPacketHistory(); + if (!aprsPacketsEl) { + updateAprsSummary(); + updateAprsChipState(); + return; + } + const visible = aprsVisiblePackets(); + const fragment = document.createDocumentFragment(); + for (let i = 0; i < visible.length; i++) { + fragment.appendChild(renderAprsRow(visible[i], i === 0)); + } + aprsPacketsEl.replaceChildren(fragment); + updateAprsSummary(); + updateAprsChipState(); +} + +function updateAprsBar() { + if (!aprsBarOverlay) return; + const isPkt = (document.getElementById("mode")?.value || "").toUpperCase() === "PKT"; + const cutoffMs = Date.now() - APRS_BAR_WINDOW_MS; + const okFrames = aprsPacketHistory.filter((p) => p.crcOk && p._tsMs >= cutoffMs); + const frames = collapseAprsDuplicates(okFrames).slice(0, 8); + const newestTsMs = frames.reduce((latest, pkt) => Math.max(latest, Number(pkt._tsMs) || 0), 0); + if (!isPkt || frames.length === 0 || newestTsMs <= aprsBarDismissedAtMs) { + aprsBarOverlay.style.display = "none"; + aprsBarOverlay.innerHTML = ""; + return; + } + let html = '
    APRSLiveLast 15 minutesClear
    '; + for (const pkt of frames) { + const ts = pkt._ts ? `${pkt._ts}` : ""; + const call = `${escapeMapHtml(pkt.srcCall)}`; + const dest = escapeMapHtml(pkt.destCall || ""); + const info = escapeMapHtml(pkt.info || ""); + const pin = pkt.lat != null && pkt.lon != null + ? `` + : ""; + html += `
    ` + + `
    ${ts}${pin}${call}>${dest}: ${info}
    ` + + `
    `; + } + aprsBarOverlay.innerHTML = html; + aprsBarOverlay.style.display = "flex"; +} +window.updateAprsBar = updateAprsBar; +window.clearAprsBar = function() { + window.resetAprsHistoryView(); +}; +window.closeAprsBar = function() { + aprsBarDismissedAtMs = Date.now(); + if (aprsBarOverlay) { + aprsBarOverlay.style.display = "none"; + aprsBarOverlay.innerHTML = ""; + } +}; + +window.resetAprsHistoryView = function() { + if (aprsPacketsEl) aprsPacketsEl.innerHTML = ""; + aprsPacketHistory = []; + updateAprsBar(); + renderAprsHistory(); + if (window.clearMapMarkersByType) window.clearMapMarkersByType("aprs"); +}; + +window.pruneAprsHistoryView = function() { + pruneAprsPacketHistory(); + updateAprsBar(); + renderAprsHistory(); +}; + +function addAprsPacket(pkt) { + const tsMs = Number.isFinite(pkt.ts_ms) ? Number(pkt.ts_ms) : Date.now(); + pkt._tsMs = tsMs; + pkt._ts = new Date(tsMs).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" }); + + aprsPacketHistory.unshift(pkt); + pruneAprsPacketHistory(); + + if (pkt.lat != null && pkt.lon != null && window.aprsMapAddStation) { + window.aprsMapAddStation(pkt.srcCall, pkt.lat, pkt.lon, pkt.info, pkt.symbolTable, pkt.symbolCode, pkt); + } + + if (pkt.crcOk) scheduleAprsBarUpdate(); + + scheduleAprsHistoryRender(); +} + +function normalizeServerAprsPacket(pkt) { + return { + rig_id: pkt.rig_id || null, + receiver: window.getDecodeRigMeta ? window.getDecodeRigMeta() : null, + srcCall: pkt.src_call, + destCall: pkt.dest_call, + path: pkt.path, + info: pkt.info, + info_bytes: pkt.info_bytes, + type: pkt.packet_type, + crcOk: pkt.crc_ok, + ts_ms: pkt.ts_ms, + lat: pkt.lat, + lon: pkt.lon, + symbolTable: pkt.symbol_table, + symbolCode: pkt.symbol_code, + }; +} + +window.onServerAprsBatch = function(packets) { + if (!Array.isArray(packets) || packets.length === 0) return; + aprsStatus.textContent = "Receiving"; + const normalized = []; + let hasCrcOk = false; + for (const pkt of packets) { + const next = normalizeServerAprsPacket(pkt); + const tsMs = Number.isFinite(next.ts_ms) ? Number(next.ts_ms) : Date.now(); + next._tsMs = tsMs; + next._ts = new Date(tsMs).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" }); + if (next.lat != null && next.lon != null && window.aprsMapAddStation) { + window.aprsMapAddStation(next.srcCall, next.lat, next.lon, next.info, next.symbolTable, next.symbolCode, next); + } + if (next.crcOk) hasCrcOk = true; + normalized.push(next); + } + normalized.reverse(); + aprsPacketHistory = normalized.concat(aprsPacketHistory); + pruneAprsPacketHistory(); + if (hasCrcOk) scheduleAprsBarUpdate(); + scheduleAprsHistoryRender(); +}; + +window.restoreAprsHistory = function(packets) { + window.onServerAprsBatch(packets); +}; + +document.getElementById("settings-clear-aprs-history")?.addEventListener("click", async () => { + if (!confirm("Clear all APRS decode history? This cannot be undone.")) return; + try { + await postPath("/clear_aprs_decode"); + window.resetAprsHistoryView(); + } catch (e) { + console.error("APRS history clear failed", e); + } +}); + +if (aprsOnlyPosBtn) { + aprsOnlyPosBtn.addEventListener("click", () => { + aprsOnlyPos = !aprsOnlyPos; + renderAprsHistory(); + }); +} + +if (aprsHideCrcBtn) { + aprsHideCrcBtn.addEventListener("click", () => { + aprsHideCrc = !aprsHideCrc; + renderAprsHistory(); + }); +} + +if (aprsCollapseDupBtn) { + aprsCollapseDupBtn.addEventListener("click", () => { + aprsCollapseDup = !aprsCollapseDup; + renderAprsHistory(); + }); +} + +["all", "position", "message", "weather", "telemetry", "other"].forEach((type) => { + const btn = document.getElementById(`aprs-type-${type}`); + if (!btn) return; + btn.addEventListener("click", () => { + aprsTypeFilter = type; + renderAprsHistory(); + }); +}); + +if (aprsFilterInput) { + aprsFilterInput.addEventListener("input", () => { + aprsFilterText = aprsFilterInput.value.trim().toUpperCase(); + renderAprsHistory(); + }); +} + +// --- Server-side APRS decode handler --- +window.onServerAprs = function(pkt) { + aprsStatus.textContent = "Receiving"; + addAprsPacket(normalizeServerAprsPacket(pkt)); +}; + +renderAprsHistory(); +if (window._trxDrainPendingDecode) window._trxDrainPendingDecode("aprs"); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/background-decode.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/background-decode.js new file mode 100644 index 0000000..258ec63 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/background-decode.js @@ -0,0 +1,410 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +(function () { + "use strict"; + + function bgdSupportedIds() { + return (window.decoderRegistry || []) + .filter(function (d) { return d.background_decode; }) + .map(function (d) { return d.id; }); + } + + let backgroundDecodeRole = null; + let currentRigId = null; + let currentConfig = null; + let bookmarkList = []; + let statusInterval = null; + let bgdDirty = false; + + function initBackgroundDecode(rigId, role) { + backgroundDecodeRole = role; + currentRigId = rigId || null; + if (currentRigId) loadBackgroundDecode(); + startStatusPolling(); + } + + function setBackgroundDecodeRig(rigId) { + const nextRigId = rigId || null; + if (nextRigId === currentRigId) return; + currentRigId = nextRigId; + if (!currentRigId) return; + loadBackgroundDecode(); + } + + function apiGetConfig(rigId) { + return fetch("/background-decode/" + encodeURIComponent(rigId)).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + return r.json(); + }); + } + + function apiPutConfig(rigId, config) { + return fetch("/background-decode/" + encodeURIComponent(rigId), { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(config), + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + return r.json(); + }); + } + + function apiResetConfig(rigId) { + return fetch("/background-decode/" + encodeURIComponent(rigId), { + method: "DELETE", + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + return r.json(); + }); + } + + function apiGetStatus(rigId) { + return fetch("/background-decode/" + encodeURIComponent(rigId) + "/status").then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + return r.json(); + }); + } + + function apiGetBookmarks() { + return fetch("/bookmarks").then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + return r.json(); + }); + } + + function loadBackgroundDecode() { + const rigId = currentRigId; + if (!rigId) return; + Promise.all([apiGetConfig(rigId), apiGetBookmarks()]) + .then(function ([config, bookmarks]) { + currentConfig = config || { remote: rigId, enabled: false, bookmark_ids: [] }; + bookmarkList = Array.isArray(bookmarks) ? bookmarks : []; + renderBackgroundDecode(); + clearBgdDirty(); + pollBackgroundDecodeStatus(); + }) + .catch(function (err) { + console.error("background decode load failed", err); + }); + } + + function supportedBookmarks() { + return bookmarkList.filter(function (bookmark) { + return bookmarkDecoderKinds(bookmark).length > 0; + }); + } + + function bookmarkDecoderKinds(bookmark) { + var ids = bgdSupportedIds(); + var decoders = Array.isArray(bookmark && bookmark.decoders) ? bookmark.decoders : []; + var explicit = decoders + .map(function (item) { return String(item || "").trim().toLowerCase(); }) + .filter(function (item, index, arr) { + return ids.indexOf(item) >= 0 && arr.indexOf(item) === index; + }); + if (explicit.length > 0) return explicit; + // Fall back: infer from mode via mode-bound entries in the registry. + var mode = String(bookmark && bookmark.mode || "").trim().toUpperCase(); + return (window.decoderRegistry || []) + .filter(function (d) { + return d.activation === "mode_bound" && d.background_decode + && d.active_modes.indexOf(mode) >= 0; + }) + .map(function (d) { return d.id; }); + } + + function renderBackgroundDecode() { + if (!currentConfig) { + currentConfig = { remote: currentRigId, enabled: false, bookmark_ids: [] }; + } + setCheckbox("background-decode-enabled", !!currentConfig.enabled); + renderBookmarkChecklist(); + + const isControl = backgroundDecodeRole === "control" || (typeof authEnabled !== "undefined" && !authEnabled); + const panel = document.getElementById("background-decode-panel"); + if (panel) { + panel.querySelectorAll("input, select, button.sch-write").forEach(function (el) { + el.disabled = !isControl; + }); + } + const saveBtn = document.getElementById("background-decode-save-btn"); + const resetBtn = document.getElementById("background-decode-reset-btn"); + if (saveBtn) saveBtn.style.display = isControl ? "" : "none"; + if (resetBtn) resetBtn.style.display = isControl ? "" : "none"; + } + + function renderBookmarkChecklist(filterText) { + const container = document.getElementById("bgd-bookmark-checklist"); + if (!container) return; + container.innerHTML = ""; + + const selectedIds = new Set( + currentConfig && Array.isArray(currentConfig.bookmark_ids) ? currentConfig.bookmark_ids : [] + ); + const all = supportedBookmarks(); + const filter = (filterText || "").trim().toLowerCase(); + + const filtered = filter + ? all.filter(function (bm) { + var text = (bm.name + " " + formatFreq(bm.freq_hz) + " " + bm.mode).toLowerCase(); + return text.indexOf(filter) >= 0; + }) + : all; + + if (filtered.length === 0) { + container.innerHTML = '
    ' + + (all.length === 0 ? "No supported bookmarks available." : "No bookmarks match filter.") + + '
    '; + return; + } + + filtered.forEach(function (bookmark) { + var row = document.createElement("label"); + row.className = "bgd-checklist-row"; + var decoders = bookmarkDecoderKinds(bookmark); + var checked = selectedIds.has(bookmark.id) ? " checked" : ""; + row.innerHTML = + '' + + '' + escHtml(bookmark.name) + '' + + '' + escHtml(formatFreq(bookmark.freq_hz) + " " + bookmark.mode + " · " + decoders.join("/").toUpperCase()) + ''; + row.querySelector("input").addEventListener("change", function (e) { + onChecklistToggle(bookmark.id, e.target.checked); + }); + container.appendChild(row); + }); + } + + function onChecklistToggle(bookmarkId, checked) { + if (!currentConfig) { + currentConfig = { remote: currentRigId, enabled: false, bookmark_ids: [] }; + } + if (!Array.isArray(currentConfig.bookmark_ids)) currentConfig.bookmark_ids = []; + if (checked && !currentConfig.bookmark_ids.includes(bookmarkId)) { + currentConfig.bookmark_ids.push(bookmarkId); + } else if (!checked) { + currentConfig.bookmark_ids = currentConfig.bookmark_ids.filter(function (id) { return id !== bookmarkId; }); + } + markBgdDirty(); + } + + function saveBackgroundDecode() { + const rigId = currentRigId; + if (!rigId) return; + const payload = { + remote: rigId, + enabled: !!document.getElementById("background-decode-enabled").checked, + bookmark_ids: Array.isArray(currentConfig && currentConfig.bookmark_ids) ? currentConfig.bookmark_ids.slice() : [], + }; + const btn = document.getElementById("background-decode-save-btn"); + if (btn) btn.disabled = true; + apiPutConfig(rigId, payload) + .then(function (saved) { + currentConfig = saved; + renderBackgroundDecode(); + clearBgdDirty(); + pollBackgroundDecodeStatus(); + showToast("Background decode saved."); + }) + .catch(function (err) { + showToast("Save failed: " + err.message, true); + }) + .finally(function () { + if (btn) btn.disabled = false; + }); + } + + function resetBackgroundDecode() { + const rigId = currentRigId; + if (!rigId) return; + if (!confirm("Reset background decode configuration? This cannot be undone.")) return; + apiResetConfig(rigId) + .then(function (saved) { + currentConfig = saved; + renderBackgroundDecode(); + clearBgdDirty(); + pollBackgroundDecodeStatus(); + showToast("Background decode reset."); + }) + .catch(function (err) { + showToast("Reset failed: " + err.message, true); + }); + } + + function startStatusPolling() { + if (statusInterval) clearInterval(statusInterval); + statusInterval = setInterval(pollBackgroundDecodeStatus, 15000); + } + + function pollBackgroundDecodeStatus() { + const rigId = currentRigId; + if (!rigId) return; + apiGetStatus(rigId) + .then(renderStatus) + .catch(function () {}); + } + + function renderStatus(status) { + const card = document.getElementById("background-decode-status-card"); + if (!card) return; + const entries = Array.isArray(status && status.entries) ? status.entries : []; + if (!entries.length) { + card.textContent = "No background decode bookmarks configured."; + return; + } + const summary = []; + if (status.active_rig) { + if (Number.isFinite(status.center_hz)) summary.push("Center " + formatFreq(status.center_hz)); + if (Number.isFinite(status.sample_rate) && status.sample_rate > 0) summary.push("Span ±" + formatFreq(status.sample_rate / 2)); + } else { + summary.push("This rig is not currently selected for audio."); + } + let html = summary.length ? '
    ' + escHtml(summary.join(" · ")) + "
    " : ""; + html += '
    '; + entries.forEach(function (entry) { + const name = entry.bookmark_name || entry.bookmark_id || "Unknown bookmark"; + const parts = []; + if (Number.isFinite(entry.freq_hz)) parts.push(formatFreq(entry.freq_hz)); + if (entry.mode) parts.push(entry.mode); + if (Array.isArray(entry.decoder_kinds) && entry.decoder_kinds.length) { + parts.push(entry.decoder_kinds.join("/").toUpperCase()); + } + html += + '
    ' + + '
    ' + + '
    ' + escHtml(name) + '
    ' + + '
    ' + escHtml(parts.join(" · ")) + '
    ' + + '
    ' + + '
    ' + + '' + + escHtml(prettyState(entry.state)) + '
    ' + + '
    '; + }); + html += "
    "; + card.innerHTML = html; + } + + function prettyState(state) { + switch (state) { + case "active": return "\u2713 Active"; + case "out_of_span": return "\u25B3 Out of span"; + case "waiting_for_spectrum": return "\u25B3 Waiting"; + case "waiting_for_user": return "\u25B3 No user"; + case "missing_bookmark": return "\u2717 Missing"; + case "no_supported_decoders": return "\u2717 Unsupported"; + case "disabled": return "\u25B3 Disabled"; + case "handled_by_scheduler": return "\u25B3 Scheduler"; + case "scheduler_has_control": return "\u25B3 Scheduler"; + case "handled_by_virtual_channel": return "\u25B3 VChan"; + default: return "\u25B3 Inactive"; + } + } + + function setCheckbox(id, value) { + const el = document.getElementById(id); + if (el) el.checked = !!value; + } + + function formatFreq(hz) { + if (!Number.isFinite(hz) || hz <= 0) return "--"; + if (hz >= 1e6) return (hz / 1e6).toFixed(3).replace(/\.?0+$/, "") + " MHz"; + if (hz >= 1e3) return (hz / 1e3).toFixed(1).replace(/\.?0+$/, "") + " kHz"; + return hz + " Hz"; + } + + function escHtml(value) { + return String(value == null ? "" : value) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); + } + + function markBgdDirty() { + if (bgdDirty) return; + bgdDirty = true; + var btn = document.getElementById("background-decode-save-btn"); + if (btn) btn.classList.add("sch-dirty"); + } + + function clearBgdDirty() { + bgdDirty = false; + var btn = document.getElementById("background-decode-save-btn"); + if (btn) btn.classList.remove("sch-dirty"); + } + + function showToast(msg, isError) { + const el = document.getElementById("background-decode-toast"); + if (!el) return; + el.textContent = msg; + el.style.background = isError ? "var(--color-error, #c00)" : "var(--accent-green)"; + el.style.display = "block"; + setTimeout(function () { + el.style.display = "none"; + }, 3000); + } + + function selectAllBookmarks() { + if (!currentConfig) { + currentConfig = { remote: currentRigId, enabled: false, bookmark_ids: [] }; + } + var ids = supportedBookmarks().map(function (bm) { return bm.id; }); + currentConfig.bookmark_ids = ids; + renderBookmarkChecklist(document.getElementById("bgd-bookmark-filter")?.value); + markBgdDirty(); + } + + function deselectAllBookmarks() { + if (!currentConfig) { + currentConfig = { remote: currentRigId, enabled: false, bookmark_ids: [] }; + } + currentConfig.bookmark_ids = []; + renderBookmarkChecklist(document.getElementById("bgd-bookmark-filter")?.value); + markBgdDirty(); + } + + function wireBackgroundDecodeEvents() { + const filterInput = document.getElementById("bgd-bookmark-filter"); + if (filterInput && !filterInput._wired) { + filterInput._wired = true; + filterInput.addEventListener("input", function () { + renderBookmarkChecklist(filterInput.value); + }); + } + + const enabledCb = document.getElementById("background-decode-enabled"); + if (enabledCb && !enabledCb._wired) { + enabledCb._wired = true; + enabledCb.addEventListener("change", function () { markBgdDirty(); }); + } + + const selectAllBtn = document.getElementById("bgd-select-all-btn"); + if (selectAllBtn && !selectAllBtn._wired) { + selectAllBtn._wired = true; + selectAllBtn.addEventListener("click", selectAllBookmarks); + } + + const deselectAllBtn = document.getElementById("bgd-deselect-all-btn"); + if (deselectAllBtn && !deselectAllBtn._wired) { + deselectAllBtn._wired = true; + deselectAllBtn.addEventListener("click", deselectAllBookmarks); + } + + const saveBtn = document.getElementById("background-decode-save-btn"); + if (saveBtn && !saveBtn._wired) { + saveBtn._wired = true; + saveBtn.addEventListener("click", saveBackgroundDecode); + } + + const resetBtn = document.getElementById("background-decode-reset-btn"); + if (resetBtn && !resetBtn._wired) { + resetBtn._wired = true; + resetBtn.addEventListener("click", resetBackgroundDecode); + } + } + + window.initBackgroundDecode = initBackgroundDecode; + window.wireBackgroundDecodeEvents = wireBackgroundDecodeEvents; + window.setBackgroundDecodeRig = setBackgroundDecodeRig; +})(); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/bookmarks.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/bookmarks.js new file mode 100644 index 0000000..81ab8d1 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/bookmarks.js @@ -0,0 +1,792 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// --- Bookmarks Tab --- + +/** Current bookmark scope: "general" or a rig remote name. */ +let bmScope = "general"; + +/** Build the ?scope= query string for a given or current bookmark scope. */ +function bmScopeParam(prefix, scope) { + const sep = prefix ? "&" : "?"; + return sep + "scope=" + encodeURIComponent(scope != null ? scope : bmScope); +} + +var bmList = []; +var bmRevision = 0; +/** Overlay list: always merged general + active rig bookmarks (for spectrum/map). */ +var bmOverlayList = []; +var bmOverlayRevision = 0; +let bmFilteredList = []; +let bmEditId = null; +let bmEditScope = null; +let bmCurrentPage = 1; +const BM_PAGE_SIZE = 25; +const bmSelected = new Set(); + +function bmFmtFreq(hz) { + if (!Number.isFinite(hz) || hz <= 0) return "--"; + if (hz >= 1e9) return (hz / 1e9).toFixed(6).replace(/\.?0+$/, "") + "\u202fGHz"; + if (hz >= 1e6) return (hz / 1e6).toFixed(6).replace(/\.?0+$/, "") + "\u202fMHz"; + if (hz >= 1e3) return (hz / 1e3).toFixed(3).replace(/\.?0+$/, "") + "\u202fkHz"; + return hz + "\u202fHz"; +} + +function bmEsc(str) { + const d = document.createElement("div"); + d.appendChild(document.createTextNode(String(str))); + return d.innerHTML; +} + +function bmCanControl() { + return ( + (typeof authEnabled !== "undefined" && !authEnabled) || + (typeof authRole !== "undefined" && authRole === "control") + ); +} + +// Show/hide the Add Bookmark / Select All buttons based on the current auth role. +function bmSyncAccess() { + const canCtrl = bmCanControl(); + const addBtn = document.getElementById("bm-add-btn"); + const selectAllBtn = document.getElementById("bm-select-all-btn"); + if (addBtn) addBtn.style.display = canCtrl ? "" : "none"; + if (selectAllBtn) selectAllBtn.style.display = canCtrl ? "" : "none"; +} + +/** The listing scope: always the active rig (to merge general + rig bookmarks). */ +function bmListScope() { + const rig = (typeof lastActiveRigId !== "undefined") ? lastActiveRigId : null; + return rig || "general"; +} + +async function bmFetchOverlay() { + const overlayScope = bmListScope(); + try { + const resp = await fetch("/bookmarks" + bmScopeParam(false, overlayScope)); + if (!resp.ok) throw new Error("HTTP " + resp.status); + bmOverlayList = await resp.json(); + } catch (e) { + console.error("Failed to fetch overlay bookmarks:", e); + bmOverlayList = []; + } + bmOverlayRevision++; + if (typeof window.syncBookmarkMapLocators === "function") { + window.syncBookmarkMapLocators(bmOverlayList); + } + if (typeof scheduleSpectrumDraw === "function") scheduleSpectrumDraw(); +} + +async function bmFetch(categoryFilter) { + let url = "/bookmarks"; + let hasQuery = false; + if (categoryFilter && categoryFilter !== "") { + url += "?category=" + encodeURIComponent(categoryFilter); + hasQuery = true; + } + url += bmScopeParam(hasQuery); + const overlayPromise = bmFetchOverlay(); + try { + const resp = await fetch(url); + if (!resp.ok) throw new Error("HTTP " + resp.status); + bmList = await resp.json(); + } catch (e) { + console.error("Failed to fetch bookmarks:", e); + bmList = []; + } + bmRevision++; + bmSelected.clear(); + bmUpdateSelectionUi(); + bmSyncAccess(); + bmApplyFilters(); + bmRefreshCategoryFilter(categoryFilter); + await overlayPromise; +} + +function bmApplyFilters() { + const text = (document.getElementById("bm-text-filter")?.value || "").trim().toLowerCase(); + const modeFilter = (document.getElementById("bm-mode-filter")?.value || "").trim().toUpperCase(); + let filtered = modeFilter + ? bmList.filter((bm) => String(bm.mode || "").toUpperCase() === modeFilter) + : bmList; + filtered = text + ? filtered.filter((bm) => + (bm.name || "").toLowerCase().includes(text) || + (bm.locator || "").toLowerCase().includes(text) || + (bm.category || "").toLowerCase().includes(text) || + (bm.comment || "").toLowerCase().includes(text) + ) + : filtered; + bmFilteredList = filtered; + bmCurrentPage = 1; + bmRender(filtered); +} + +async function bmRefreshCategoryFilter(keepValue) { + const sel = document.getElementById("bm-category-filter"); + const modeSel = document.getElementById("bm-mode-filter"); + if (!sel && !modeSel) return; + try { + const resp = await fetch("/bookmarks" + bmScopeParam(false)); + if (!resp.ok) return; + const all = await resp.json(); + if (sel) { + const cats = [...new Set(all.map((b) => b.category || "").filter(Boolean))].sort(); + while (sel.options.length > 1) sel.remove(1); + cats.forEach((cat) => { + const opt = document.createElement("option"); + opt.value = cat; + opt.textContent = cat; + sel.add(opt); + }); + if (keepValue && cats.includes(keepValue)) sel.value = keepValue; + } + if (modeSel) { + const keepMode = modeSel.value; + const modes = [...new Set(all.map((b) => String(b.mode || "").trim().toUpperCase()).filter(Boolean))].sort(); + while (modeSel.options.length > 1) modeSel.remove(1); + modes.forEach((mode) => { + const opt = document.createElement("option"); + opt.value = mode; + opt.textContent = mode; + modeSel.add(opt); + }); + if (keepMode && modes.includes(keepMode)) modeSel.value = keepMode; + } + } catch (_) {} +} + +function bmRender(list) { + const tbody = document.getElementById("bm-tbody"); + const emptyEl = document.getElementById("bm-empty"); + const paginatorEl = document.getElementById("bm-paginator"); + const pageSummaryEl = document.getElementById("bm-page-summary"); + const pageIndicatorEl = document.getElementById("bm-page-indicator"); + const prevBtn = document.getElementById("bm-page-prev"); + const nextBtn = document.getElementById("bm-page-next"); + if (!tbody) return; + tbody.innerHTML = ""; + + if (list.length === 0) { + if (emptyEl) emptyEl.style.display = ""; + if (paginatorEl) paginatorEl.style.display = "none"; + return; + } + if (emptyEl) emptyEl.style.display = "none"; + + const canControl = bmCanControl(); + const totalPages = Math.max(1, Math.ceil(list.length / BM_PAGE_SIZE)); + const page = Math.min(Math.max(bmCurrentPage, 1), totalPages); + bmCurrentPage = page; + const startIndex = (page - 1) * BM_PAGE_SIZE; + const endIndex = Math.min(startIndex + BM_PAGE_SIZE, list.length); + const pageItems = list.slice(startIndex, endIndex); + + const showScope = bmScope !== "general"; + pageItems.forEach((bm) => { + const tr = document.createElement("tr"); + tr.dataset.bmId = bm.id; + const bwCell = bm.bandwidth_hz ? bmFmtFreq(bm.bandwidth_hz) : "--"; + const locatorCell = bm.locator || "--"; + const catCell = bm.category || "Uncategorised"; + const decoderCell = (bm.decoders || []).join(", ").toUpperCase() || "--"; + const commentCell = bm.comment || ""; + const checked = bmSelected.has(bm.id) ? " checked" : ""; + const scopeBadge = showScope && bm.scope === "general" ? ' G' : ""; + tr.innerHTML = + `` + + `${bmEsc(bm.name)}${scopeBadge}` + + `${bmFmtFreq(bm.freq_hz)}` + + `${bmEsc(bm.mode)}` + + `${bwCell}` + + `${bmEsc(locatorCell)}` + + `${bmEsc(catCell)}` + + `${bmEsc(decoderCell)}` + + `${bmEsc(commentCell)}` + + `` + + `` + + (canControl + ? `` + + `` + : "") + + ``; + tbody.appendChild(tr); + }); + bmSyncSelectAllCheckbox(); + + if (paginatorEl) paginatorEl.style.display = totalPages > 1 ? "flex" : ""; + if (pageSummaryEl) pageSummaryEl.textContent = `Showing ${startIndex + 1}-${endIndex} of ${list.length}`; + if (pageIndicatorEl) pageIndicatorEl.textContent = `Page ${page} of ${totalPages}`; + if (prevBtn) prevBtn.disabled = page <= 1; + if (nextBtn) nextBtn.disabled = page >= totalPages; +} + +function bmChangePage(delta) { + const totalPages = Math.max(1, Math.ceil(bmFilteredList.length / BM_PAGE_SIZE)); + const nextPage = Math.min(Math.max(bmCurrentPage + delta, 1), totalPages); + if (nextPage === bmCurrentPage) return; + bmCurrentPage = nextPage; + bmRender(bmFilteredList); +} + +// Read decoder checkboxes and return an array of selected decoder names. +function bmReadDecoders() { + return (window.decoderRegistry || []) + .filter(d => d.bookmark_selectable) + .filter(d => document.getElementById("bm-dec-" + d.id)?.checked) + .map(d => d.id); +} + +// Set decoder checkboxes to match the given array. +function bmWriteDecoders(decoders) { + const set = new Set(decoders || []); + (window.decoderRegistry || []) + .filter(d => d.bookmark_selectable) + .forEach(d => { + const el = document.getElementById("bm-dec-" + d.id); + if (el) el.checked = set.has(d.id); + }); +} + +// Build decoder checkboxes dynamically from the registry. +function bmBuildDecoderCheckboxes() { + const container = document.getElementById("bm-decoder-checkboxes"); + if (!container) return; + container.innerHTML = ""; + (window.decoderRegistry || []) + .filter(d => d.bookmark_selectable) + .forEach(d => { + const label = document.createElement("label"); + label.className = "bm-decoder-check"; + label.innerHTML = ' ' + d.label; + container.appendChild(label); + }); +} + +function bmOpenForm(bm) { + const wrap = document.getElementById("bm-form-wrap"); + if (!wrap) return; + bmEditId = bm ? bm.id : null; + bmEditScope = bm ? (bm.scope || bmScope) : null; + + // Rebuild decoder checkboxes from registry (handles race where registry + // loaded after initial build). + bmBuildDecoderCheckboxes(); + + document.getElementById("bm-id").value = bm ? bm.id : ""; + document.getElementById("bm-name").value = bm ? bm.name : ""; + document.getElementById("bm-freq").value = bm ? bm.freq_hz : ""; + document.getElementById("bm-mode").value = bm ? bm.mode : ""; + document.getElementById("bm-bw").value = bm && bm.bandwidth_hz ? bm.bandwidth_hz : ""; + document.getElementById("bm-locator").value = bm ? (bm.locator || "") : ""; + document.getElementById("bm-category-input").value = bm ? (bm.category || "") : ""; + document.getElementById("bm-comment").value = bm ? (bm.comment || "") : ""; + bmWriteDecoders(bm ? bm.decoders : []); + document.getElementById("bm-form-title").textContent = bm ? "Edit Bookmark" : "Add Bookmark"; + + wrap.style.display = "flex"; + document.getElementById("bm-name").focus(); +} + +function bmCloseForm() { + const wrap = document.getElementById("bm-form-wrap"); + if (wrap) wrap.style.display = "none"; + bmEditId = null; +} + +function bmPrefillFromStatus() { + // Use globals maintained by app.js (updated by SSE stream) + if (typeof lastFreqHz === "number" && Number.isFinite(lastFreqHz)) { + document.getElementById("bm-freq").value = Math.round(lastFreqHz); + } + if (typeof lastModeName === "string" && lastModeName) { + document.getElementById("bm-mode").value = lastModeName; + } + if (typeof currentBandwidthHz === "number" && currentBandwidthHz > 0) { + document.getElementById("bm-bw").value = Math.round(currentBandwidthHz); + } + // Prefill decoder checkboxes from current toggle button state. + const activeDecoders = (window.decoderRegistry || []) + .filter(d => d.bookmark_selectable && d.activation === "toggle") + .filter(d => { + const btn = document.getElementById(d.id + "-decode-toggle-btn"); + return btn && btn.dataset.enabled === "true"; + }) + .map(d => d.id); + bmWriteDecoders(activeDecoders); +} + +async function bmSave(e) { + e.preventDefault(); + const id = document.getElementById("bm-id").value; + const name = document.getElementById("bm-name").value.trim(); + const freqStr = document.getElementById("bm-freq").value; + const freq_hz = parseInt(freqStr, 10); + const mode = document.getElementById("bm-mode").value.trim(); + const bwStr = document.getElementById("bm-bw").value; + const bandwidth_hz = bwStr ? parseInt(bwStr, 10) : null; + const locator = document.getElementById("bm-locator").value.trim().toUpperCase(); + const category = document.getElementById("bm-category-input").value.trim(); + const comment = document.getElementById("bm-comment").value.trim(); + const decoders = bmReadDecoders(); + + if (!name || !Number.isFinite(freq_hz) || !mode) { + alert("Name, Frequency, and Mode are required."); + return; + } + + const body = { + name, + freq_hz, + mode, + bandwidth_hz, + locator: locator || null, + category, + comment, + decoders, + }; + + try { + let resp; + if (id) { + resp = await fetch("/bookmarks/" + encodeURIComponent(id) + bmScopeParam(false, bmEditScope), { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(body), + }); + } else { + resp = await fetch("/bookmarks" + bmScopeParam(false), { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(body), + }); + } + if (!resp.ok) { + const text = await resp.text(); + if (resp.status === 409) { + throw new Error("A bookmark for that frequency already exists."); + } + throw new Error(text || "HTTP " + resp.status); + } + bmCloseForm(); + await bmFetch(document.getElementById("bm-category-filter").value); + } catch (err) { + console.error("Failed to save bookmark:", err); + alert("Failed to save bookmark: " + err.message); + } +} + +async function bmDelete(id) { + if (!confirm("Delete this bookmark?")) return; + const bm = bmList.find((b) => b.id === id); + const scope = bm ? bm.scope : undefined; + try { + const resp = await fetch("/bookmarks/" + encodeURIComponent(id) + bmScopeParam(false, scope), { + method: "DELETE", + }); + if (!resp.ok) throw new Error("HTTP " + resp.status); + await bmFetch(document.getElementById("bm-category-filter").value); + } catch (err) { + console.error("Failed to delete bookmark:", err); + alert("Failed to delete bookmark: " + err.message); + } +} + +async function bmApply(bm) { + try { + // --- Optimistic UI updates (instant, before any network round-trips) --- + if (typeof modeEl !== "undefined" && modeEl) { + modeEl.value = String(bm.mode || "").toUpperCase(); + } + if (bm.bandwidth_hz) { + if (typeof currentBandwidthHz !== "undefined") { + currentBandwidthHz = bm.bandwidth_hz; + } + window.currentBandwidthHz = bm.bandwidth_hz; + if (typeof syncBandwidthInput === "function") { + syncBandwidthInput(bm.bandwidth_hz); + } + } + if (typeof applyLocalTunedFrequency === "function") { + // Set optimistic guard before applying so SSE cannot snap back. + if (typeof _freqOptimisticSeq !== "undefined") { + ++_freqOptimisticSeq; + _freqOptimisticHz = bm.freq_hz; + } + // Force display so the BW overlay is repositioned even when freq is unchanged. + applyLocalTunedFrequency(bm.freq_hz, true); + } + if (typeof scheduleSpectrumDraw === "function" && typeof lastSpectrumData !== "undefined" && lastSpectrumData) { + scheduleSpectrumDraw(); + } + + // Take scheduler control up front, then apply mode before bandwidth so a + // late SetMode cannot revert a saved WFM bookmark bandwidth to 180 kHz. + const tunePromise = (async () => { + if (typeof vchanTakeSchedulerControl === "function") { + await vchanTakeSchedulerControl(); + } + + const onVirtual = typeof vchanInterceptMode === "function" + && await vchanInterceptMode(bm.mode); + if (!onVirtual) { + await postPath("/set_mode?mode=" + encodeURIComponent(bm.mode)); + } + + if (bm.bandwidth_hz) { + const bwHandledByVchan = typeof vchanInterceptBandwidth === "function" + && await vchanInterceptBandwidth(bm.bandwidth_hz); + if (!bwHandledByVchan) { + await postPath("/set_bandwidth?hz=" + bm.bandwidth_hz); + } + } + + // setRigFrequency is wrapped by vchan.js to redirect to the channel API + // when on a virtual channel, so this call works correctly in both cases. + // It also does its own optimistic update (applyLocalTunedFrequency) but + // that's a no-op since we already set the same value above. + if (typeof setRigFrequency === "function") { + await setRigFrequency(bm.freq_hz); + } else { + await postPath("/set_freq?hz=" + bm.freq_hz); + } + })(); + // Decoder toggles — fire-and-forget. + // - Decoders incompatible with the new mode are always turned off + // (even when the bookmark has no explicit decoder selection). + // - For compatible decoders, if the bookmark specifies a set, the + // toggles are driven to match that set; otherwise they're left + // alone. + const hasDecoders = Array.isArray(bm.decoders) && bm.decoders.length > 0; + const modeUp = (bm.mode || "").toUpperCase(); + const allToggleDecoders = (window.decoderRegistry || []).filter(d => + d.activation === "toggle" + ); + const decoderPromise = allToggleDecoders.length ? (async () => { + let statusUrl = "/status"; + if (typeof lastActiveRigId !== "undefined" && lastActiveRigId) { + statusUrl += "?remote=" + encodeURIComponent(lastActiveRigId); + } + const statusResp = await fetch(statusUrl); + if (!statusResp.ok) return; + const st = await statusResp.json(); + const toggles = []; + for (const d of allToggleDecoders) { + const statusKey = d.id.replace(/-/g, "_") + "_decode_enabled"; + const currentlyOn = !!st[statusKey]; + const compatible = Array.isArray(d.active_modes) + && d.active_modes.includes(modeUp); + let wanted; + if (!compatible) { + // Always disable decoders that don't apply to the new mode. + wanted = false; + } else if (hasDecoders) { + wanted = bm.decoders.includes(d.id); + } else { + // Mode-compatible and no bookmark selection: leave as-is. + wanted = currentlyOn; + } + if (wanted !== currentlyOn) { + toggles.push(postPath("/toggle_" + d.id.replace(/-/g, "_") + "_decode")); + } + } + if (toggles.length) await Promise.all(toggles); + })() : Promise.resolve(); + // Don't await — let the network calls settle in the background. + // Errors are logged but don't block the UI. + Promise.all([tunePromise, decoderPromise]).catch( + (err) => console.error("Bookmark apply background error:", err) + ); + } catch (err) { + console.error("Failed to apply bookmark:", err); + } +} + +function bmUpdateSelectionUi() { + const count = bmSelected.size; + const canCtrl = bmCanControl(); + const visible = count > 0 && canCtrl; + const btn = document.getElementById("bm-del-selected-btn"); + const countEl = document.getElementById("bm-del-selected-count"); + if (btn) btn.style.display = visible ? "" : "none"; + if (countEl) countEl.textContent = count; + const moveWrap = document.getElementById("bm-move-selected-wrap"); + const moveCountEl = document.getElementById("bm-move-selected-count"); + if (moveWrap) moveWrap.style.display = visible ? "" : "none"; + if (moveCountEl) moveCountEl.textContent = count; + if (visible) bmPopulateMoveTarget(); + const selectAllBtn = document.getElementById("bm-select-all-btn"); + if (selectAllBtn && bmCanControl()) { + const allSelected = bmFilteredList.length > 0 && bmFilteredList.every((bm) => bmSelected.has(bm.id)); + selectAllBtn.textContent = allSelected ? "Deselect All" : "Select All"; + } +} + +/** Populate the move-target dropdown with all scopes except the current one. */ +function bmPopulateMoveTarget() { + const sel = document.getElementById("bm-move-target"); + if (!sel) return; + const rigIds = (typeof lastRigIds !== "undefined" && Array.isArray(lastRigIds)) ? lastRigIds : []; + const displayNames = (typeof lastRigDisplayNames !== "undefined") ? lastRigDisplayNames : {}; + const prev = sel.value; + sel.innerHTML = ""; + if (bmScope !== "general") { + const opt = document.createElement("option"); + opt.value = "general"; + opt.textContent = "General"; + sel.appendChild(opt); + } + rigIds.forEach((id) => { + if (id === bmScope) return; + const opt = document.createElement("option"); + opt.value = id; + opt.textContent = displayNames[id] || id; + sel.appendChild(opt); + }); + if (prev && sel.querySelector(`option[value="${CSS.escape(prev)}"]`)) { + sel.value = prev; + } +} + +async function bmMoveSelected() { + const ids = Array.from(bmSelected); + if (ids.length === 0) return; + const target = document.getElementById("bm-move-target")?.value; + if (!target) return; + const targetLabel = document.getElementById("bm-move-target")?.selectedOptions[0]?.textContent || target; + if (!confirm(`Move ${ids.length} bookmark${ids.length > 1 ? "s" : ""} to "${targetLabel}"?`)) return; + try { + // Group selected IDs by their owning scope (skip if already in target). + const byScope = {}; + for (const id of ids) { + const bm = bmList.find((b) => b.id === id); + const scope = bm?.scope || bmScope; + if (scope === target) continue; + (byScope[scope] ||= []).push(id); + } + await Promise.all(Object.entries(byScope).map(([scope, scopeIds]) => + fetch("/bookmarks/batch_move" + bmScopeParam(false, scope), { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ ids: scopeIds, to: target }), + }).then((r) => { if (!r.ok) throw new Error("HTTP " + r.status); }) + )); + bmSelected.clear(); + bmUpdateSelectionUi(); + await bmFetch(document.getElementById("bm-category-filter").value); + } catch (err) { + console.error("Failed to move bookmarks:", err); + alert("Failed to move bookmarks: " + err.message); + } +} + +function bmSyncSelectAllCheckbox() { + const selectAll = document.getElementById("bm-select-all"); + if (!selectAll) return; + const checkboxes = document.querySelectorAll(".bm-row-sel"); + if (checkboxes.length === 0) { + selectAll.checked = false; + selectAll.indeterminate = false; + return; + } + const checkedCount = Array.from(checkboxes).filter((cb) => cb.checked).length; + selectAll.checked = checkedCount === checkboxes.length; + selectAll.indeterminate = checkedCount > 0 && checkedCount < checkboxes.length; +} + +async function bmDeleteSelected() { + const ids = Array.from(bmSelected); + if (ids.length === 0) return; + if (!confirm(`Delete ${ids.length} selected bookmark${ids.length > 1 ? "s" : ""}?`)) return; + try { + // Group selected IDs by their owning scope. + const byScope = {}; + for (const id of ids) { + const bm = bmList.find((b) => b.id === id); + const scope = bm?.scope || bmScope; + (byScope[scope] ||= []).push(id); + } + await Promise.all(Object.entries(byScope).map(([scope, scopeIds]) => + fetch("/bookmarks/batch_delete" + bmScopeParam(false, scope), { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ ids: scopeIds }), + }).then((r) => { if (!r.ok) throw new Error("HTTP " + r.status); }) + )); + bmSelected.clear(); + bmUpdateSelectionUi(); + await bmFetch(document.getElementById("bm-category-filter").value); + } catch (err) { + console.error("Failed to delete bookmarks:", err); + alert("Failed to delete bookmarks: " + err.message); + } +} + +/** Populate the scope picker with "General" + one option per rig. */ +function bmPopulateScopePicker() { + const picker = document.getElementById("bm-scope-picker"); + if (!picker) return; + const rigIds = (typeof lastRigIds !== "undefined" && Array.isArray(lastRigIds)) ? lastRigIds : []; + const displayNames = (typeof lastRigDisplayNames !== "undefined") ? lastRigDisplayNames : {}; + // Preserve current selection if still valid. + const prev = picker.value; + while (picker.options.length > 1) picker.remove(1); + rigIds.forEach((id) => { + const opt = document.createElement("option"); + opt.value = id; + opt.textContent = displayNames[id] || id; + picker.appendChild(opt); + }); + if (prev && (prev === "general" || rigIds.includes(prev))) { + picker.value = prev; + } else { + picker.value = "general"; + } + bmScope = picker.value; +} + +// --- Event wiring --- +(function initBookmarks() { + // Set initial button visibility (auth may already be resolved by the time + // scripts run if auth is disabled; otherwise bmFetch() will sync it). + bmSyncAccess(); + + // Build decoder checkboxes from registry. The registry is fetched async + // so we rebuild once it arrives to ensure checkboxes are present. + bmBuildDecoderCheckboxes(); + if (typeof window.onDecoderRegistryReady === "function") { + window.onDecoderRegistryReady(bmBuildDecoderCheckboxes); + } + + // Scope picker + bmPopulateScopePicker(); + const scopePicker = document.getElementById("bm-scope-picker"); + if (scopePicker) { + scopePicker.addEventListener("change", (e) => { + bmScope = e.target.value; + bmFetch(document.getElementById("bm-category-filter")?.value || ""); + }); + } + + // Refresh list and sync access when the Bookmarks tab is activated + document.querySelector(".tab-bar").addEventListener("click", (e) => { + const btn = e.target.closest('.tab[data-tab="bookmarks"]'); + if (!btn) return; + bmFetch(document.getElementById("bm-category-filter").value); + }); + + // Add Bookmark button — open form and prefill from current rig state + document.getElementById("bm-add-btn").addEventListener("click", () => { + bmOpenForm(null); + bmPrefillFromStatus(); + }); + + // Category filter dropdown + document.getElementById("bm-category-filter").addEventListener("change", (e) => { + bmFetch(e.target.value); + }); + + // Mode filter dropdown (client-side, no re-fetch) + document.getElementById("bm-mode-filter").addEventListener("change", () => { + bmApplyFilters(); + }); + + // Text search filter (client-side, no re-fetch) + document.getElementById("bm-text-filter").addEventListener("input", () => { + bmApplyFilters(); + }); + + document.getElementById("bm-page-prev").addEventListener("click", () => { + bmChangePage(-1); + }); + + document.getElementById("bm-page-next").addEventListener("click", () => { + bmChangePage(1); + }); + + // Form submit + document.getElementById("bm-form").addEventListener("submit", bmSave); + + // Form cancel + document.getElementById("bm-form-cancel").addEventListener("click", bmCloseForm); + + const formWrap = document.getElementById("bm-form-wrap"); + if (formWrap) { + formWrap.addEventListener("click", (e) => { + if (e.target === formWrap) bmCloseForm(); + }); + } + + document.addEventListener("keydown", (e) => { + if (e.key === "Escape" && document.getElementById("bm-form-wrap")?.style.display === "flex") { + bmCloseForm(); + } + }); + + // Select-all checkbox + document.getElementById("bm-select-all").addEventListener("change", (e) => { + const checked = e.target.checked; + document.querySelectorAll(".bm-row-sel").forEach((cb) => { + cb.checked = checked; + if (checked) bmSelected.add(cb.dataset.bmId); + else bmSelected.delete(cb.dataset.bmId); + }); + bmUpdateSelectionUi(); + }); + + // Select All (across all pages) button + document.getElementById("bm-select-all-btn").addEventListener("click", () => { + const allSelected = bmFilteredList.length > 0 && bmFilteredList.every((bm) => bmSelected.has(bm.id)); + if (allSelected) { + bmSelected.clear(); + } else { + bmFilteredList.forEach((bm) => bmSelected.add(bm.id)); + } + // Sync visible page checkboxes + document.querySelectorAll(".bm-row-sel").forEach((cb) => { + cb.checked = bmSelected.has(cb.dataset.bmId); + }); + bmSyncSelectAllCheckbox(); + bmUpdateSelectionUi(); + }); + + // Delete Selected button + document.getElementById("bm-del-selected-btn").addEventListener("click", () => { + bmDeleteSelected(); + }); + + // Move Selected button + document.getElementById("bm-move-selected-btn").addEventListener("click", () => { + bmMoveSelected(); + }); + + // Table action buttons and row checkboxes (event delegation) + document.getElementById("bm-tbody").addEventListener("click", async (e) => { + const checkbox = e.target.closest(".bm-row-sel"); + if (checkbox) { + if (checkbox.checked) bmSelected.add(checkbox.dataset.bmId); + else bmSelected.delete(checkbox.dataset.bmId); + bmSyncSelectAllCheckbox(); + bmUpdateSelectionUi(); + return; + } + + const tuneBtn = e.target.closest(".bm-tune-btn"); + const editBtn = e.target.closest(".bm-edit-btn"); + const delBtn = e.target.closest(".bm-del-btn"); + + if (tuneBtn) { + const bm = bmList.find((b) => b.id === tuneBtn.dataset.bmId); + if (bm) await bmApply(bm); + } else if (editBtn) { + const bm = bmList.find((b) => b.id === editBtn.dataset.bmId); + if (bm) bmOpenForm(bm); + } else if (delBtn) { + await bmDelete(delBtn.dataset.bmId); + } + }); + + // Pre-load bookmarks so spectrum markers are visible immediately. + bmFetch(""); +})(); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/cw.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/cw.js new file mode 100644 index 0000000..7be9aa1 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/cw.js @@ -0,0 +1,451 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// --- CW (Morse) Decoder Plugin (server-side decode) --- +const cwStatusEl = document.getElementById("cw-status"); +const cwOutputEl = document.getElementById("cw-output"); +const cwAutoInput = document.getElementById("cw-auto"); +const cwWpmInput = document.getElementById("cw-wpm"); +const cwToneInput = document.getElementById("cw-tone"); +const cwSignalIndicator = document.getElementById("cw-signal-indicator"); +const cwToneCanvas = document.getElementById("cw-tone-waterfall"); +const cwToneGl = typeof createTrxWebGlRenderer === "function" + ? createTrxWebGlRenderer(cwToneCanvas, { alpha: true }) + : null; +const cwTonePickerEl = document.querySelector(".cw-tone-picker"); +const cwToneRangeEl = document.getElementById("cw-tone-range"); +const cwBarOverlay = document.getElementById("cw-bar-overlay"); +const CW_MAX_LINES = 200; +const CW_TONE_MIN_HZ = 100; +const CW_TONE_MAX_HZ = 10_000; +const CW_WPM_MIN = 5; +const CW_WPM_MAX = 40; +const CW_BAR_WINDOW_MS = 15 * 60 * 1000; +const CW_BAR_LINE_GAP_MS = 5000; +let cwLastAppendTime = 0; +let cwTonePickerRaf = null; +let cwBarHistory = []; // [{tsMs, ts, text, wpm, tone_hz}] +let cwBarCurrentLine = null; // accumulates chars until gap/newline +let cwBarDismissedAtMs = 0; +// Tracks a user-initiated auto toggle that is in-flight (POST not yet +// acknowledged). While set, server-state updates must not override the +// checkbox so that a concurrent SSE event carrying the *old* cw_auto value +// does not immediately undo the user's choice. +let cwAutoLocalOverride = null; + +function applyCwAutoUi(enabled) { + if (cwAutoInput) cwAutoInput.checked = enabled; + if (cwWpmInput) { + cwWpmInput.disabled = enabled; + cwWpmInput.readOnly = enabled; + } + if (cwToneInput) { + cwToneInput.disabled = enabled; + cwToneInput.readOnly = enabled; + } + if (cwTonePickerEl) { + cwTonePickerEl.classList.toggle("is-auto", enabled); + } +} +window.applyCwAutoUi = applyCwAutoUi; + +// Called by app.js render() when a server-state snapshot arrives. Ignores +// the update while cwAutoLocalOverride is set (user change still in-flight). +window.applyCwAutoUiFromServer = function(enabled) { + if (cwAutoLocalOverride !== null) return; + applyCwAutoUi(enabled); +}; + +function cwBarFlushCurrentLine() { + if (cwBarCurrentLine && cwBarCurrentLine.text.trim()) { + cwBarHistory.unshift(cwBarCurrentLine); + if (cwBarHistory.length > 50) cwBarHistory.length = 50; + } + cwBarCurrentLine = null; +} + +function updateCwBar() { + if (!cwBarOverlay) return; + const mode = (document.getElementById("mode")?.value || "").toUpperCase(); + const isCw = mode === "CW" || mode === "CWR"; + const cutoffMs = Date.now() - CW_BAR_WINDOW_MS; + const recent = cwBarHistory.filter((l) => l.tsMs >= cutoffMs); + // Prepend the in-progress line so characters appear immediately + const liveLines = cwBarCurrentLine && cwBarCurrentLine.text ? [cwBarCurrentLine, ...recent] : recent; + const newestTsMs = liveLines.reduce((latest, line) => Math.max(latest, Number(line.tsMs) || 0), 0); + if (!isCw || liveLines.length === 0 || newestTsMs <= cwBarDismissedAtMs) { + cwBarOverlay.style.display = "none"; + cwBarOverlay.innerHTML = ""; + return; + } + let html = + '
    ' + + 'CWLive' + + '' + + 'Last 15 minutes' + + 'Clear' + + '' + + '' + + '
    '; + for (const line of liveLines.slice(0, 8)) { + const ts = line.ts ? `${line.ts}` : ""; + const meta = [ + line.wpm ? `${line.wpm} WPM` : null, + line.tone_hz ? `${line.tone_hz} Hz` : null, + ].filter(Boolean).join(" · "); + html += `
    ` + + `
    ${ts}${escapeMapHtml(line.text)}` + + (meta ? ` ${escapeMapHtml(meta)}` : "") + + `
    `; + } + cwBarOverlay.innerHTML = html; + cwBarOverlay.style.display = "flex"; +} +window.updateCwBar = updateCwBar; +window.clearCwBar = function() { + window.resetCwHistoryView(); +}; +window.closeCwBar = function() { + cwBarDismissedAtMs = Date.now(); + if (cwBarOverlay) { + cwBarOverlay.style.display = "none"; + cwBarOverlay.innerHTML = ""; + } +}; + +function clampCwWpm(wpm) { + const numeric = Number(wpm); + if (!Number.isFinite(numeric)) return 15; + return Math.round(Math.max(CW_WPM_MIN, Math.min(CW_WPM_MAX, numeric))); +} + +function clampCwTone(tone) { + const numeric = Number(tone); + if (!Number.isFinite(numeric)) return 700; + return Math.round(Math.max(CW_TONE_MIN_HZ, Math.min(CW_TONE_MAX_HZ, numeric))); +} + +function currentCwToneRange() { + const tunedHz = Number.isFinite(window.lastFreqHz) ? Number(window.lastFreqHz) : NaN; + const bandwidthHz = Number.isFinite(window.currentBandwidthHz) ? Number(window.currentBandwidthHz) : NaN; + if (!Number.isFinite(tunedHz) || !Number.isFinite(bandwidthHz) || bandwidthHz <= 0) { + return null; + } + const mode = String(document.getElementById("mode")?.value || "").toUpperCase(); + const lowerSideband = mode === "CWR"; + const upperSideband = mode === "CW"; + if (!lowerSideband && !upperSideband) return null; + + const toneMinHz = CW_TONE_MIN_HZ; + const toneMaxHz = CW_TONE_MAX_HZ; + if (toneMaxHz < toneMinHz) { + return null; + } + return { + tunedHz, + bandwidthHz, + toneMinHz, + toneMaxHz, + toneSpanHz: Math.max(1, toneMaxHz - toneMinHz), + lowerSideband, + mode, + }; +} + +function cwToneToRfHz(range, toneHz) { + if (!range) return NaN; + return range.lowerSideband + ? range.tunedHz - toneHz + : range.tunedHz + toneHz; +} + +function toneClampForRange(tone, range) { + const clamped = clampCwTone(tone); + if (!range) return clamped; + return Math.max(range.toneMinHz, Math.min(range.toneMaxHz, clamped)); +} + +function ensureCwToneCanvasResolution() { + if (!cwToneCanvas || !cwToneGl || !cwToneGl.ready) return false; + const rect = cwToneCanvas.getBoundingClientRect(); + const cssWidth = Math.round(rect.width); + const cssHeight = Math.round(rect.height); + if (cssWidth < 8 || cssHeight < 8) { + return false; + } + const dpr = window.devicePixelRatio || 1; + return cwToneGl.ensureSize(cssWidth, cssHeight, dpr); +} + +function drawCwTonePicker() { + if (!cwToneCanvas || !cwToneGl || !cwToneGl.ready) return; + ensureCwToneCanvasResolution(); + if (cwToneCanvas.width < 8 || cwToneCanvas.height < 8) return; + const width = cwToneCanvas.width; + const height = cwToneCanvas.height; + cwToneGl.clear([0, 0, 0, 0]); + + const range = currentCwToneRange(); + if (!window.lastSpectrumData || !Array.isArray(window.lastSpectrumData.bins) || !window.lastSpectrumData.bins.length || !range) { + if (cwToneRangeEl) { + const mode = String(document.getElementById("mode")?.value || "").toUpperCase(); + if (mode !== "CW" && mode !== "CWR") { + cwToneRangeEl.textContent = "CW/CWR mode required"; + } else if (!window.lastSpectrumData || !Array.isArray(window.lastSpectrumData.bins) || !window.lastSpectrumData.bins.length) { + cwToneRangeEl.textContent = "Waiting for spectrum"; + } + } + cwToneGl.fillRect(0, 0, width, height, [130 / 255, 150 / 255, 165 / 255, 0.22]); + return; + } + + if (cwToneRangeEl) { + const side = range.lowerSideband ? "Lower side" : "Upper side"; + cwToneRangeEl.textContent = `Audio ${range.toneMinHz}-${range.toneMaxHz} Hz · ${side}`; + } + + const bins = window.lastSpectrumData.bins; + const sampleRate = Number(window.lastSpectrumData.sample_rate); + const centerHz = Number(window.lastSpectrumData.center_hz); + const maxIdx = Math.max(1, bins.length - 1); + const fullLoHz = centerHz - sampleRate / 2; + const tones = new Array(width).fill(-140); + for (let x = 0; x < width; x += 1) { + const frac = width <= 1 ? 0 : x / (width - 1); + const toneHz = range.toneMinHz + frac * range.toneSpanHz; + const rfHz = cwToneToRfHz(range, toneHz); + const idx = Math.max(0, Math.min(maxIdx, Math.round((((rfHz - fullLoHz) / sampleRate) * maxIdx)))); + const power = Number.isFinite(Number(bins[idx])) ? Number(bins[idx]) : -140; + tones[x] = power; + } + + const smoothed = new Array(width).fill(-140); + const smoothRadius = Math.max(1, Math.round(width / 180)); + for (let x = 0; x < width; x += 1) { + let sum = 0; + let count = 0; + for (let i = x - smoothRadius; i <= x + smoothRadius; i += 1) { + if (i < 0 || i >= width) continue; + sum += tones[i]; + count += 1; + } + smoothed[x] = count > 0 ? sum / count : tones[x]; + } + + const sorted = smoothed.slice().sort((a, b) => a - b); + const q20 = sorted[Math.floor((sorted.length - 1) * 0.2)] ?? -120; + const q95 = sorted[Math.floor((sorted.length - 1) * 0.95)] ?? -70; + const floorDb = Math.min(q20 - 2, q95 - 10); + const ceilDb = Math.max(floorDb + 18, q95 + 2); + const dbSpan = Math.max(1, ceilDb - floorDb); + const yForDb = (db) => { + const n = Math.max(0, Math.min(1, (db - floorDb) / dbSpan)); + return Math.round((1 - n) * (height - 1)); + }; + + const rootStyle = getComputedStyle(document.documentElement); + const accent = (rootStyle.getPropertyValue("--accent-green") || "").trim() || "#00d17f"; + const parseColor = typeof window.trxParseCssColor === "function" + ? window.trxParseCssColor + : null; + const accentRgba = parseColor ? parseColor(accent) : [0, 0.82, 0.5, 1]; + const axisColor = [230 / 255, 235 / 255, 245 / 255, 0.15]; + + cwToneGl.fillRect(0, 0, width, height, [7 / 255, 12 / 255, 18 / 255, 0.94]); + + const hGridCount = 4; + const gridSegments = []; + for (let i = 1; i <= hGridCount; i += 1) { + const y = Math.round((i / (hGridCount + 1)) * (height - 1)); + gridSegments.push(0, y, width, y); + } + cwToneGl.drawSegments(gridSegments, axisColor, 1); + + const toneStep = range.toneSpanHz <= 500 ? 50 : range.toneSpanHz <= 1000 ? 100 : 200; + const firstTick = Math.ceil(range.toneMinHz / toneStep) * toneStep; + const tickSegments = []; + for (let tone = firstTick; tone <= range.toneMaxHz; tone += toneStep) { + const frac = (tone - range.toneMinHz) / range.toneSpanHz; + const x = Math.max(0, Math.min(width - 1, Math.round(frac * (width - 1)))); + tickSegments.push(x, 0, x, height); + } + cwToneGl.drawSegments(tickSegments, axisColor, 1); + + const linePoints = []; + for (let x = 0; x < width; x += 1) { + linePoints.push(x, yForDb(smoothed[x])); + } + cwToneGl.drawFilledArea(linePoints, height, [accentRgba[0], accentRgba[1], accentRgba[2], 0.24]); + cwToneGl.drawPolyline(linePoints, accentRgba, Math.max(1.2, (window.devicePixelRatio || 1) * 1.2)); + + const currentTone = toneClampForRange(cwToneInput ? cwToneInput.value : 700, range); + const markerFrac = (currentTone - range.toneMinHz) / range.toneSpanHz; + const markerX = Math.max(0, Math.min(width - 1, Math.round(markerFrac * (width - 1)))); + const markerY = yForDb(smoothed[Math.max(0, Math.min(width - 1, markerX))]); + cwToneGl.drawSegments([markerX, 0, markerX, height], [1, 1, 1, 0.9], 1.5); + cwToneGl.drawPoints([markerX, markerY], Math.max(2, Math.round(height * 0.055)), [1, 1, 1, 0.9]); + + if (cwAutoInput?.checked) { + cwToneGl.fillRect(0, 0, width, height, [0, 0, 0, 0.22]); + } +} + +async function setCwTone(tone, { syncInput = true } = {}) { + const range = currentCwToneRange(); + const clamped = toneClampForRange(tone, range); + if (cwToneInput && syncInput) { + cwToneInput.value = clamped; + } + try { + await postPath(`/set_cw_tone?tone_hz=${encodeURIComponent(clamped)}`); + } catch (e) { + console.error("CW tone set failed", e); + } + drawCwTonePicker(); +} + +if (cwAutoInput) { + cwAutoInput.addEventListener("change", async () => { + const enabled = cwAutoInput.checked; + cwAutoLocalOverride = enabled; + applyCwAutoUi(enabled); + try { + await postPath(`/set_cw_auto?enabled=${enabled ? "true" : "false"}`); + drawCwTonePicker(); + } catch (e) { + console.error("CW auto toggle failed", e); + } finally { + cwAutoLocalOverride = null; + } + }); +} + +if (cwWpmInput) { + cwWpmInput.addEventListener("change", async () => { + if (cwAutoInput && cwAutoInput.checked) return; + const wpm = clampCwWpm(cwWpmInput.value); + cwWpmInput.value = wpm; + try { await postPath(`/set_cw_wpm?wpm=${encodeURIComponent(wpm)}`); } + catch (e) { console.error("CW WPM set failed", e); } + }); +} + +if (cwToneInput) { + cwToneInput.addEventListener("change", async () => { + if (cwAutoInput?.checked) return; + await setCwTone(cwToneInput.value); + }); +} + +if (cwToneCanvas) { + cwToneCanvas.addEventListener("click", async (event) => { + if (cwAutoInput?.checked) return; + const rect = cwToneCanvas.getBoundingClientRect(); + if (rect.width <= 0) return; + const range = currentCwToneRange(); + if (!range) return; + const frac = Math.max(0, Math.min(1, (event.clientX - rect.left) / rect.width)); + const tone = range.toneMinHz + frac * range.toneSpanHz; + await setCwTone(tone); + }); +} + +window.resetCwHistoryView = function() { + if (cwOutputEl) cwOutputEl.innerHTML = ""; + cwLastAppendTime = 0; + cwBarHistory = []; + cwBarCurrentLine = null; + updateCwBar(); + drawCwTonePicker(); +}; + +document.getElementById("settings-clear-cw-history")?.addEventListener("click", async () => { + if (!confirm("Clear all CW decode history? This cannot be undone.")) return; + try { + await postPath("/clear_cw_decode"); + window.resetCwHistoryView(); + } catch (e) { + console.error("CW history clear failed", e); + } +}); + +// --- Server-side CW decode handler --- +window.onServerCw = function(evt) { + if (cwStatusEl) cwStatusEl.textContent = "Receiving"; + if (evt.text && cwOutputEl) { + // Append decoded text to output + const now = Date.now(); + if (!cwOutputEl.lastElementChild || now - cwLastAppendTime > 10000 || evt.text === "\n") { + const line = document.createElement("div"); + line.className = "cw-line"; + cwOutputEl.appendChild(line); + } + cwLastAppendTime = now; + const lastLine = cwOutputEl.lastElementChild; + if (lastLine) { + lastLine.textContent += evt.text; + } + while (cwOutputEl.children.length > CW_MAX_LINES) { + cwOutputEl.removeChild(cwOutputEl.firstChild); + } + cwOutputEl.scrollTop = cwOutputEl.scrollHeight; + } + // Bar history accumulation (regardless of pause state) + if (evt.text) { + const now = Date.now(); + if (evt.text === "\n") { + cwBarFlushCurrentLine(); + } else { + if (!cwBarCurrentLine || now - cwBarCurrentLine.lastMs > CW_BAR_LINE_GAP_MS) { + cwBarFlushCurrentLine(); + const ts = new Date(now).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" }); + cwBarCurrentLine = { tsMs: now, ts, text: "", wpm: null, tone_hz: null, lastMs: now }; + } + cwBarCurrentLine.text += evt.text; + cwBarCurrentLine.lastMs = now; + if (Number.isFinite(Number(evt.wpm))) cwBarCurrentLine.wpm = clampCwWpm(evt.wpm); + if (Number.isFinite(Number(evt.tone_hz))) cwBarCurrentLine.tone_hz = Math.round(Number(evt.tone_hz)); + } + updateCwBar(); + } + if (cwSignalIndicator) { + cwSignalIndicator.className = evt.signal_on ? "cw-signal-on" : "cw-signal-off"; + } + if (!cwAutoInput || cwAutoInput.checked) { + if (cwWpmInput && Number.isFinite(Number(evt.wpm))) { + cwWpmInput.value = clampCwWpm(evt.wpm); + } + if (cwToneInput && Number.isFinite(Number(evt.tone_hz))) { + cwToneInput.value = toneClampForRange(evt.tone_hz, currentCwToneRange()); + } + } + if (cwTonePickerRaf != null) return; + cwTonePickerRaf = requestAnimationFrame(() => { + cwTonePickerRaf = null; + drawCwTonePicker(); + }); +}; + +window.restoreCwHistory = function(events) { + if (!Array.isArray(events) || events.length === 0) return; + if (cwStatusEl) cwStatusEl.textContent = "Receiving"; + for (const evt of events) { + window.onServerCw(evt); + } +}; + +window.refreshCwTonePicker = function refreshCwTonePicker() { + ensureCwToneCanvasResolution(); + drawCwTonePicker(); +}; +window.addEventListener("resize", () => { + if (ensureCwToneCanvasResolution()) drawCwTonePicker(); +}); +applyCwAutoUi(!!cwAutoInput?.checked); +updateCwBar(); +ensureCwToneCanvasResolution(); +drawCwTonePicker(); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft2.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft2.js new file mode 100644 index 0000000..93f965f --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft2.js @@ -0,0 +1,207 @@ +// --- FT2 Decoder Plugin (server-side decode) --- +// SPDX-FileCopyrightText: 2026 Stan Grams +// SPDX-License-Identifier: GPL-2.0-or-later + +function ft8RenderMessageFt2(message) { + if (typeof renderFt8Message === "function") return renderFt8Message(message); + if (typeof ft8EscapeHtml === "function") return ft8EscapeHtml(message); + return message; +} + +const ft2Status = document.getElementById("ft2-status"); +const ft2PeriodEl = document.getElementById("ft2-period"); +const ft2MessagesEl = document.getElementById("ft2-messages"); +const ft2FilterInput = document.getElementById("ft2-filter"); +const FT2_PERIOD_MS = 3750; +const FT2_MAX_DOM_ROWS = 200; +let ft2FilterText = ""; +let ft2MessageHistory = []; + +function currentFt2HistoryRetentionMs() { + return typeof window.getDecodeHistoryRetentionMs === "function" + ? window.getDecodeHistoryRetentionMs() + : 24 * 60 * 60 * 1000; +} + +function pruneFt2MessageHistory() { + const cutoffMs = Date.now() - currentFt2HistoryRetentionMs(); + ft2MessageHistory = ft2MessageHistory.filter((msg) => Number(msg?._tsMs ?? msg?.ts_ms) >= cutoffMs); +} + +function scheduleFt2Ui(key, job) { + if (typeof window.trxScheduleUiFrameJob === "function") { + window.trxScheduleUiFrameJob(key, job); + return; + } + job(); +} + +function scheduleFt2HistoryRender() { scheduleFt2Ui("ft2-history", () => renderFt2History()); } + +function normalizeFt2DisplayFreqHz(freqHz) { + const rawHz = Number(freqHz); + if (!Number.isFinite(rawHz)) return null; + const baseHz = Number.isFinite(window.ft8BaseHz) ? Number(window.ft8BaseHz) : null; + if (Number.isFinite(baseHz) && baseHz > 0 && rawHz >= 0 && rawHz < 100000) { + return baseHz + rawHz; + } + return rawHz; +} + +function updateFt2PeriodTimer() { + if (!ft2PeriodEl) return; + const nowMs = Date.now(); + const remaining = (FT2_PERIOD_MS - nowMs % FT2_PERIOD_MS) / 1000; + ft2PeriodEl.textContent = `Next slot ${remaining.toFixed(1)}s`; +} + +updateFt2PeriodTimer(); +setInterval(updateFt2PeriodTimer, 250); + +function renderFt2Row(msg) { + const row = document.createElement("div"); + row.className = "ft8-row"; + const rawMessage = (msg.message || "").toString(); + row.dataset.message = rawMessage.toUpperCase(); + row.dataset.decoder = "ft2"; + row.dataset.storedFreqHz = Number.isFinite(msg.freq_hz) ? String(msg.freq_hz) : ""; + const snr = Number.isFinite(msg.snr_db) ? msg.snr_db.toFixed(1) : "--"; + const dt = Number.isFinite(msg.dt_s) ? msg.dt_s.toFixed(2) : "--"; + const displayFreqHz = normalizeFt2DisplayFreqHz(msg.freq_hz); + const freq = Number.isFinite(displayFreqHz) ? displayFreqHz.toFixed(0) : "--"; + const renderedMessage = ft8RenderMessageFt2(rawMessage); + const tsMs = msg._tsMs ?? msg.ts_ms; + const timeStr = tsMs ? new Date(tsMs).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" }) : "--:--:--"; + row.innerHTML = `${timeStr}${snr}${dt}${freq}${renderedMessage}`; + return row; +} + +function renderFt2History() { + pruneFt2MessageHistory(); + if (!ft2MessagesEl) return; + const filter = ft2FilterText; + const fragment = document.createDocumentFragment(); + let rendered = 0; + for (let i = 0; i < ft2MessageHistory.length && rendered < FT2_MAX_DOM_ROWS; i++) { + const msg = ft2MessageHistory[i]; + if (filter && !(msg.message || "").toString().toUpperCase().includes(filter)) continue; + fragment.appendChild(renderFt2Row(msg)); + rendered++; + } + ft2MessagesEl.replaceChildren(fragment); +} + +function addFt2Message(msg) { + msg._tsMs = Number.isFinite(msg?.ts_ms) ? Number(msg.ts_ms) : Date.now(); + ft2MessageHistory.unshift(msg); + pruneFt2MessageHistory(); + window.setFt8FamilyBarDecoder?.("ft2"); + window.updateFt8Bar?.(); + scheduleFt2HistoryRender(); +} + +function normalizeServerFt2Message(msg) { + const raw = (msg.message || "").toString(); + const locatorDetails = typeof ft8ExtractLocatorDetails === "function" ? ft8ExtractLocatorDetails(raw) : []; + const grids = locatorDetails.length > 0 + ? locatorDetails.map((d) => d.grid) + : (typeof ft8ExtractAllGrids === "function" ? ft8ExtractAllGrids(raw) : []); + const station = typeof ft8ExtractLikelyCallsign === "function" ? ft8ExtractLikelyCallsign(raw) : null; + const rfHz = normalizeFt2DisplayFreqHz(msg.freq_hz); + return { + raw, grids, station, rfHz, locatorDetails, + history: { + receiver: window.getDecodeRigMeta ? window.getDecodeRigMeta() : null, + ts_ms: msg.ts_ms, snr_db: msg.snr_db, dt_s: msg.dt_s, + freq_hz: Number.isFinite(rfHz) ? rfHz : msg.freq_hz, + message: msg.message, + }, + }; +} + +window.onServerFt2Batch = function(messages) { + if (!Array.isArray(messages) || messages.length === 0) return; + if (ft2Status) ft2Status.textContent = "Receiving"; + const normalized = []; + for (const msg of messages) { + const next = normalizeServerFt2Message(msg); + if (next.grids.length > 0 && window.mapAddLocator) { + window.mapAddLocator(next.raw, next.grids, "ft2", next.station, { ...msg, freq_hz: next.rfHz, locator_details: next.locatorDetails }); + } + next.history._tsMs = Number.isFinite(next.history?.ts_ms) ? Number(next.history.ts_ms) : Date.now(); + normalized.push(next.history); + } + normalized.reverse(); + ft2MessageHistory = normalized.concat(ft2MessageHistory); + pruneFt2MessageHistory(); + window.setFt8FamilyBarDecoder?.("ft2"); + window.updateFt8Bar?.(); + scheduleFt2HistoryRender(); +}; + +window.restoreFt2History = function(messages) { window.onServerFt2Batch(messages); }; +window.pruneFt2HistoryView = function() { pruneFt2MessageHistory(); renderFt2History(); }; + +window.resetFt2HistoryView = function() { + if (ft2MessagesEl) ft2MessagesEl.innerHTML = ""; + ft2MessageHistory = []; + window.updateFt8Bar?.(); + renderFt2History(); +}; + +function buildFt2BarFrames() { + const cutoffMs = Date.now() - 15 * 60 * 1000; + const messages = ft2MessageHistory.filter((msg) => Number(msg._tsMs ?? msg.ts_ms) >= cutoffMs).slice(0, 8); + const newestTsMs = messages.reduce((latest, msg) => Math.max(latest, Number(msg._tsMs ?? msg.ts_ms) || 0), 0); + if (messages.length === 0) { + return { count: 0, newestTsMs: 0, html: "" }; + } + let html = ""; + for (const msg of messages) { + const tsMs = msg._tsMs ?? msg.ts_ms; + const ts = tsMs ? `${fmtTime(tsMs)}` : ""; + const snr = Number.isFinite(msg.snr_db) ? `${msg.snr_db.toFixed(1)} dB` : "-- dB"; + const dt = Number.isFinite(msg.dt_s) ? `dt ${msg.dt_s.toFixed(2)}` : null; + const displayFreqHz = normalizeFt2DisplayFreqHz(msg.freq_hz); + const rf = Number.isFinite(displayFreqHz) ? `${displayFreqHz.toFixed(0)} Hz` : null; + const detail = [snr, dt, rf].filter(Boolean).join(" · "); + const text = ft8RenderMessageFt2((msg.message || "").toString()); + html += `
    ${ts}${text}${detail ? ` · ${detail}` : ""}
    `; + } + return { count: messages.length, newestTsMs, html }; +} +window.registerFt8FamilyBarRenderer?.("ft2", buildFt2BarFrames); + +if (ft2FilterInput) { + ft2FilterInput.addEventListener("input", () => { + ft2FilterText = ft2FilterInput.value.trim().toUpperCase(); + renderFt2History(); + }); +} + +const ft2DecodeToggleBtn = document.getElementById("ft2-decode-toggle-btn"); +ft2DecodeToggleBtn?.addEventListener("click", async () => { + try { + await window.takeSchedulerControlForDecoderDisable?.(ft2DecodeToggleBtn); + await postPath("/toggle_ft2_decode"); + } catch (e) { + console.error("FT2 toggle failed", e); + } +}); + +document.getElementById("settings-clear-ft2-history")?.addEventListener("click", async () => { + if (!confirm("Clear all FT2 decode history? This cannot be undone.")) return; + try { + await postPath("/clear_ft2_decode"); + window.resetFt2HistoryView(); + } catch (e) { console.error("FT2 history clear failed", e); } +}); + +window.onServerFt2 = function(msg) { + if (ft2Status) ft2Status.textContent = "Receiving"; + const next = normalizeServerFt2Message(msg); + if (next.grids.length > 0 && window.mapAddLocator) { + window.mapAddLocator(next.raw, next.grids, "ft2", next.station, { ...msg, freq_hz: next.rfHz, locator_details: next.locatorDetails }); + } + addFt2Message(next.history); +}; diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft4.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft4.js new file mode 100644 index 0000000..d83d884 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft4.js @@ -0,0 +1,207 @@ +// --- FT4 Decoder Plugin (server-side decode) --- +// SPDX-FileCopyrightText: 2026 Stan Grams +// SPDX-License-Identifier: GPL-2.0-or-later + +function ft8RenderMessage(message) { + if (typeof renderFt8Message === "function") return renderFt8Message(message); + if (typeof ft8EscapeHtml === "function") return ft8EscapeHtml(message); + return message; +} + +const ft4Status = document.getElementById("ft4-status"); +const ft4PeriodEl = document.getElementById("ft4-period"); +const ft4MessagesEl = document.getElementById("ft4-messages"); +const ft4FilterInput = document.getElementById("ft4-filter"); +const FT4_PERIOD_MS = 7500; +const FT4_MAX_DOM_ROWS = 200; +let ft4FilterText = ""; +let ft4MessageHistory = []; + +function currentFt4HistoryRetentionMs() { + return typeof window.getDecodeHistoryRetentionMs === "function" + ? window.getDecodeHistoryRetentionMs() + : 24 * 60 * 60 * 1000; +} + +function pruneFt4MessageHistory() { + const cutoffMs = Date.now() - currentFt4HistoryRetentionMs(); + ft4MessageHistory = ft4MessageHistory.filter((msg) => Number(msg?._tsMs ?? msg?.ts_ms) >= cutoffMs); +} + +function scheduleFt4Ui(key, job) { + if (typeof window.trxScheduleUiFrameJob === "function") { + window.trxScheduleUiFrameJob(key, job); + return; + } + job(); +} + +function scheduleFt4HistoryRender() { scheduleFt4Ui("ft4-history", () => renderFt4History()); } + +function normalizeFt4DisplayFreqHz(freqHz) { + const rawHz = Number(freqHz); + if (!Number.isFinite(rawHz)) return null; + const baseHz = Number.isFinite(window.ft8BaseHz) ? Number(window.ft8BaseHz) : null; + if (Number.isFinite(baseHz) && baseHz > 0 && rawHz >= 0 && rawHz < 100000) { + return baseHz + rawHz; + } + return rawHz; +} + +function updateFt4PeriodTimer() { + if (!ft4PeriodEl) return; + const nowMs = Date.now(); + const remaining = (FT4_PERIOD_MS - nowMs % FT4_PERIOD_MS) / 1000; + ft4PeriodEl.textContent = `Next slot ${remaining.toFixed(1)}s`; +} + +updateFt4PeriodTimer(); +setInterval(updateFt4PeriodTimer, 250); + +function renderFt4Row(msg) { + const row = document.createElement("div"); + row.className = "ft8-row"; + const rawMessage = (msg.message || "").toString(); + row.dataset.message = rawMessage.toUpperCase(); + row.dataset.decoder = "ft4"; + row.dataset.storedFreqHz = Number.isFinite(msg.freq_hz) ? String(msg.freq_hz) : ""; + const snr = Number.isFinite(msg.snr_db) ? msg.snr_db.toFixed(1) : "--"; + const dt = Number.isFinite(msg.dt_s) ? msg.dt_s.toFixed(2) : "--"; + const displayFreqHz = normalizeFt4DisplayFreqHz(msg.freq_hz); + const freq = Number.isFinite(displayFreqHz) ? displayFreqHz.toFixed(0) : "--"; + const renderedMessage = ft8RenderMessage(rawMessage); + const tsMs = msg._tsMs ?? msg.ts_ms; + const timeStr = tsMs ? new Date(tsMs).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" }) : "--:--:--"; + row.innerHTML = `${timeStr}${snr}${dt}${freq}${renderedMessage}`; + return row; +} + +function renderFt4History() { + pruneFt4MessageHistory(); + if (!ft4MessagesEl) return; + const filter = ft4FilterText; + const fragment = document.createDocumentFragment(); + let rendered = 0; + for (let i = 0; i < ft4MessageHistory.length && rendered < FT4_MAX_DOM_ROWS; i++) { + const msg = ft4MessageHistory[i]; + if (filter && !(msg.message || "").toString().toUpperCase().includes(filter)) continue; + fragment.appendChild(renderFt4Row(msg)); + rendered++; + } + ft4MessagesEl.replaceChildren(fragment); +} + +function addFt4Message(msg) { + msg._tsMs = Number.isFinite(msg?.ts_ms) ? Number(msg.ts_ms) : Date.now(); + ft4MessageHistory.unshift(msg); + pruneFt4MessageHistory(); + window.setFt8FamilyBarDecoder?.("ft4"); + window.updateFt8Bar?.(); + scheduleFt4HistoryRender(); +} + +function normalizeServerFt4Message(msg) { + const raw = (msg.message || "").toString(); + const locatorDetails = typeof ft8ExtractLocatorDetails === "function" ? ft8ExtractLocatorDetails(raw) : []; + const grids = locatorDetails.length > 0 + ? locatorDetails.map((d) => d.grid) + : (typeof ft8ExtractAllGrids === "function" ? ft8ExtractAllGrids(raw) : []); + const station = typeof ft8ExtractLikelyCallsign === "function" ? ft8ExtractLikelyCallsign(raw) : null; + const rfHz = normalizeFt4DisplayFreqHz(msg.freq_hz); + return { + raw, grids, station, rfHz, locatorDetails, + history: { + receiver: window.getDecodeRigMeta ? window.getDecodeRigMeta() : null, + ts_ms: msg.ts_ms, snr_db: msg.snr_db, dt_s: msg.dt_s, + freq_hz: Number.isFinite(rfHz) ? rfHz : msg.freq_hz, + message: msg.message, + }, + }; +} + +window.onServerFt4Batch = function(messages) { + if (!Array.isArray(messages) || messages.length === 0) return; + if (ft4Status) ft4Status.textContent = "Receiving"; + const normalized = []; + for (const msg of messages) { + const next = normalizeServerFt4Message(msg); + if (next.grids.length > 0 && window.mapAddLocator) { + window.mapAddLocator(next.raw, next.grids, "ft4", next.station, { ...msg, freq_hz: next.rfHz, locator_details: next.locatorDetails }); + } + next.history._tsMs = Number.isFinite(next.history?.ts_ms) ? Number(next.history.ts_ms) : Date.now(); + normalized.push(next.history); + } + normalized.reverse(); + ft4MessageHistory = normalized.concat(ft4MessageHistory); + pruneFt4MessageHistory(); + window.setFt8FamilyBarDecoder?.("ft4"); + window.updateFt8Bar?.(); + scheduleFt4HistoryRender(); +}; + +window.restoreFt4History = function(messages) { window.onServerFt4Batch(messages); }; +window.pruneFt4HistoryView = function() { pruneFt4MessageHistory(); renderFt4History(); }; + +window.resetFt4HistoryView = function() { + if (ft4MessagesEl) ft4MessagesEl.innerHTML = ""; + ft4MessageHistory = []; + window.updateFt8Bar?.(); + renderFt4History(); +}; + +function buildFt4BarFrames() { + const cutoffMs = Date.now() - 15 * 60 * 1000; + const messages = ft4MessageHistory.filter((msg) => Number(msg._tsMs ?? msg.ts_ms) >= cutoffMs).slice(0, 8); + const newestTsMs = messages.reduce((latest, msg) => Math.max(latest, Number(msg._tsMs ?? msg.ts_ms) || 0), 0); + if (messages.length === 0) { + return { count: 0, newestTsMs: 0, html: "" }; + } + let html = ""; + for (const msg of messages) { + const tsMs = msg._tsMs ?? msg.ts_ms; + const ts = tsMs ? `${fmtTime(tsMs)}` : ""; + const snr = Number.isFinite(msg.snr_db) ? `${msg.snr_db.toFixed(1)} dB` : "-- dB"; + const dt = Number.isFinite(msg.dt_s) ? `dt ${msg.dt_s.toFixed(2)}` : null; + const displayFreqHz = normalizeFt4DisplayFreqHz(msg.freq_hz); + const rf = Number.isFinite(displayFreqHz) ? `${displayFreqHz.toFixed(0)} Hz` : null; + const detail = [snr, dt, rf].filter(Boolean).join(" · "); + const text = ft8RenderMessage((msg.message || "").toString()); + html += `
    ${ts}${text}${detail ? ` · ${detail}` : ""}
    `; + } + return { count: messages.length, newestTsMs, html }; +} +window.registerFt8FamilyBarRenderer?.("ft4", buildFt4BarFrames); + +if (ft4FilterInput) { + ft4FilterInput.addEventListener("input", () => { + ft4FilterText = ft4FilterInput.value.trim().toUpperCase(); + renderFt4History(); + }); +} + +const ft4DecodeToggleBtn = document.getElementById("ft4-decode-toggle-btn"); +ft4DecodeToggleBtn?.addEventListener("click", async () => { + try { + await window.takeSchedulerControlForDecoderDisable?.(ft4DecodeToggleBtn); + await postPath("/toggle_ft4_decode"); + } catch (e) { + console.error("FT4 toggle failed", e); + } +}); + +document.getElementById("settings-clear-ft4-history")?.addEventListener("click", async () => { + if (!confirm("Clear all FT4 decode history? This cannot be undone.")) return; + try { + await postPath("/clear_ft4_decode"); + window.resetFt4HistoryView(); + } catch (e) { console.error("FT4 history clear failed", e); } +}); + +window.onServerFt4 = function(msg) { + if (ft4Status) ft4Status.textContent = "Receiving"; + const next = normalizeServerFt4Message(msg); + if (next.grids.length > 0 && window.mapAddLocator) { + window.mapAddLocator(next.raw, next.grids, "ft4", next.station, { ...msg, freq_hz: next.rfHz, locator_details: next.locatorDetails }); + } + addFt4Message(next.history); +}; diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft8.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft8.js new file mode 100644 index 0000000..13889b1 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft8.js @@ -0,0 +1,486 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// --- FT8 Decoder Plugin (server-side decode) --- +const ft8Status = document.getElementById("ft8-status"); +const ft8PeriodEl = document.getElementById("ft8-period"); +const ft8MessagesEl = document.getElementById("ft8-messages"); +const ft8FilterInput = document.getElementById("ft8-filter"); +const ft8BarOverlay = document.getElementById("ft8-bar-overlay"); +const FT8_BAR_WINDOW_MS = 15 * 60 * 1000; +const FT8_PERIOD_SECONDS = 15; +const FT8_MAX_DOM_ROWS = 200; +const FT8_BAR_DECODER_LABELS = { + ft8: "FT8", + ft4: "FT4", + ft2: "FT2", +}; +let ft8FilterText = ""; +let ft8MessageHistory = []; +let ft8BarActiveDecoder = "ft8"; +const ft8BarBuilders = {}; +const ft8BarDismissedAtMsByDecoder = { + ft8: 0, + ft4: 0, + ft2: 0, +}; + +function currentFt8HistoryRetentionMs() { + return typeof window.getDecodeHistoryRetentionMs === "function" + ? window.getDecodeHistoryRetentionMs() + : 24 * 60 * 60 * 1000; +} + +function pruneFt8MessageHistory() { + const cutoffMs = Date.now() - currentFt8HistoryRetentionMs(); + ft8MessageHistory = ft8MessageHistory.filter((msg) => Number(msg?._tsMs ?? msg?.ts_ms) >= cutoffMs); +} + +function scheduleFt8Ui(key, job) { + if (typeof window.trxScheduleUiFrameJob === "function") { + window.trxScheduleUiFrameJob(key, job); + return; + } + job(); +} + +function scheduleFt8HistoryRender() { + scheduleFt8Ui("ft8-history", () => renderFt8History()); +} + +function scheduleFt8BarUpdate() { + scheduleFt8Ui("ft8-bar", () => updateFt8Bar()); +} + +window.registerFt8FamilyBarRenderer = function(decoder, builder) { + if (!FT8_BAR_DECODER_LABELS[decoder] || typeof builder !== "function") return; + ft8BarBuilders[decoder] = builder; +}; + +window.setFt8FamilyBarDecoder = function(decoder) { + if (!FT8_BAR_DECODER_LABELS[decoder]) return; + ft8BarActiveDecoder = decoder; + scheduleFt8BarUpdate(); +}; + +function normalizeFt8DisplayFreqHz(freqHz) { + const rawHz = Number(freqHz); + if (!Number.isFinite(rawHz)) return null; + const baseHz = Number.isFinite(window.ft8BaseHz) ? Number(window.ft8BaseHz) : null; + if (Number.isFinite(baseHz) && baseHz > 0 && rawHz >= 0 && rawHz < 100000) { + return baseHz + rawHz; + } + return rawHz; +} + +function fmtTime(tsMs) { + if (!tsMs) return "--:--:--"; + return new Date(tsMs).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" }); +} + +function updateFt8PeriodTimer() { + if (!ft8PeriodEl) return; + const nowSec = Math.floor(Date.now() / 1000); + const remaining = FT8_PERIOD_SECONDS - (nowSec % FT8_PERIOD_SECONDS); + ft8PeriodEl.textContent = `Next slot ${String(remaining).padStart(2, "0")}s`; +} + +updateFt8PeriodTimer(); +setInterval(updateFt8PeriodTimer, 500); + +function renderFt8Row(msg) { + const row = document.createElement("div"); + row.className = "ft8-row"; + const rawMessage = (msg.message || "").toString(); + row.dataset.message = rawMessage.toUpperCase(); + row.dataset.decoder = "ft8"; + row.dataset.storedFreqHz = Number.isFinite(msg.freq_hz) ? String(msg.freq_hz) : ""; + const snr = Number.isFinite(msg.snr_db) ? msg.snr_db.toFixed(1) : "--"; + const dt = Number.isFinite(msg.dt_s) ? msg.dt_s.toFixed(2) : "--"; + const displayFreqHz = normalizeFt8DisplayFreqHz(msg.freq_hz); + const freq = Number.isFinite(displayFreqHz) ? displayFreqHz.toFixed(0) : "--"; + const renderedMessage = renderFt8Message(rawMessage); + row.innerHTML = `${fmtTime(msg.ts_ms)}${snr}${dt}${freq}${renderedMessage}`; + applyFt8FilterToRow(row); + return row; +} + +function renderFt8History() { + pruneFt8MessageHistory(); + if (!ft8MessagesEl) return; + const fragment = document.createDocumentFragment(); + const limit = Math.min(ft8MessageHistory.length, FT8_MAX_DOM_ROWS); + for (let i = 0; i < limit; i += 1) { + fragment.appendChild(renderFt8Row(ft8MessageHistory[i])); + } + ft8MessagesEl.replaceChildren(fragment); +} + +function addFt8Message(msg) { + msg._tsMs = Number.isFinite(msg?.ts_ms) ? Number(msg.ts_ms) : Date.now(); + ft8MessageHistory.unshift(msg); + pruneFt8MessageHistory(); + ft8BarActiveDecoder = "ft8"; + scheduleFt8BarUpdate(); + scheduleFt8HistoryRender(); +} + +function normalizeServerFt8Message(msg) { + const raw = (msg.message || "").toString(); + const locatorDetails = ft8ExtractLocatorDetails(raw); + const grids = locatorDetails.length > 0 + ? locatorDetails.map((detail) => detail.grid) + : ft8ExtractAllGrids(raw); + const station = ft8ExtractLikelyCallsign(raw); + const rfHz = normalizeFt8DisplayFreqHz(msg.freq_hz); + return { + raw, + grids, + station, + rfHz, + locatorDetails, + history: { + receiver: window.getDecodeRigMeta ? window.getDecodeRigMeta() : null, + ts_ms: msg.ts_ms, + snr_db: msg.snr_db, + dt_s: msg.dt_s, + freq_hz: Number.isFinite(rfHz) ? rfHz : msg.freq_hz, + message: msg.message, + }, + }; +} + +window.onServerFt8Batch = function(messages) { + if (!Array.isArray(messages) || messages.length === 0) return; + ft8Status.textContent = "Receiving"; + const normalized = []; + for (const msg of messages) { + const next = normalizeServerFt8Message(msg); + if (next.grids.length > 0 && window.mapAddLocator) { + window.mapAddLocator(next.raw, next.grids, "ft8", next.station, { + ...msg, + freq_hz: next.rfHz, + locator_details: next.locatorDetails, + }); + } + next.history._tsMs = Number.isFinite(next.history?.ts_ms) ? Number(next.history.ts_ms) : Date.now(); + normalized.push(next.history); + } + normalized.reverse(); + ft8MessageHistory = normalized.concat(ft8MessageHistory); + pruneFt8MessageHistory(); + ft8BarActiveDecoder = "ft8"; + scheduleFt8BarUpdate(); + scheduleFt8HistoryRender(); +}; + +window.restoreFt8History = function(messages) { + window.onServerFt8Batch(messages); +}; + +window.pruneFt8HistoryView = function() { + pruneFt8MessageHistory(); + updateFt8Bar(); + renderFt8History(); +}; + +function ft8BarRfText(msg) { + const displayFreqHz = normalizeFt8DisplayFreqHz(msg.freq_hz); + if (!Number.isFinite(displayFreqHz)) return null; + return `${displayFreqHz.toFixed(0)} Hz`; +} + +function buildFt8BarFrames() { + const cutoffMs = Date.now() - FT8_BAR_WINDOW_MS; + const messages = ft8MessageHistory.filter((msg) => Number(msg.ts_ms) >= cutoffMs).slice(0, 8); + const newestTsMs = messages.reduce((latest, msg) => Math.max(latest, Number(msg.ts_ms) || 0), 0); + if (messages.length === 0) { + return { count: 0, newestTsMs: 0, html: "" }; + } + let html = ""; + for (const msg of messages) { + const ts = msg.ts_ms ? `${fmtTime(msg.ts_ms)}` : ""; + const snr = Number.isFinite(msg.snr_db) ? `${msg.snr_db.toFixed(1)} dB` : "-- dB"; + const dt = Number.isFinite(msg.dt_s) ? `dt ${msg.dt_s.toFixed(2)}` : null; + const rf = ft8BarRfText(msg); + const detail = [snr, dt, rf].filter(Boolean).join(" · "); + const text = ft8EscapeHtml((msg.message || "").toString()); + html += `
    ${ts}${text}${detail ? ` · ${detail}` : ""}
    `; + } + return { count: messages.length, newestTsMs, html }; +} + +function updateFt8Bar() { + if (!ft8BarOverlay) return; + const modeUpper = (document.getElementById("mode")?.value || "").toUpperCase(); + const isFt8Mode = modeUpper === "DIG" || modeUpper === "USB"; + const decoder = ft8BarActiveDecoder; + const builder = ft8BarBuilders[decoder]; + const label = FT8_BAR_DECODER_LABELS[decoder] || "FT8"; + const result = typeof builder === "function" ? builder() : null; + const newestTsMs = Number(result?.newestTsMs) || 0; + if (!isFt8Mode || !result || result.count === 0 || newestTsMs <= (ft8BarDismissedAtMsByDecoder[decoder] || 0)) { + ft8BarOverlay.style.display = "none"; + ft8BarOverlay.innerHTML = ""; + return; + } + + ft8BarOverlay.innerHTML = `
    ${label}LiveLast 15 minutesClear
    ${result.html}`; + ft8BarOverlay.style.display = "flex"; +} +window.updateFt8Bar = updateFt8Bar; +window.clearFt8Bar = function() { + const decoder = ft8BarActiveDecoder; + if (decoder === "ft4") { + window.resetFt4HistoryView?.(); + return; + } + if (decoder === "ft2") { + window.resetFt2HistoryView?.(); + return; + } + window.resetFt8HistoryView?.(); +}; +window.closeFt8Bar = function() { + ft8BarDismissedAtMsByDecoder[ft8BarActiveDecoder] = Date.now(); + if (ft8BarOverlay) { + ft8BarOverlay.style.display = "none"; + ft8BarOverlay.innerHTML = ""; + } +}; +window.registerFt8FamilyBarRenderer("ft8", buildFt8BarFrames); + +function renderFt8Message(message) { + let out = ""; + let i = 0; + while (i < message.length) { + const ch = message[i]; + if (ft8IsAlphaNum(ch)) { + let j = i + 1; + while (j < message.length && ft8IsAlphaNum(message[j])) j++; + const token = message.slice(i, j); + const grid = token.toUpperCase(); + if (ft8IsMaidenheadGridToken(grid)) { + out += `${grid}`; + } else { + out += ft8EscapeHtml(token); + } + i = j; + } else { + out += ft8EscapeHtml(ch); + i += 1; + } + } + return out; +} + +function ft8TokenizeMessage(message) { + return String(message || "") + .toUpperCase() + .split(/[^A-Z0-9/]+/) + .filter(Boolean); +} + +function ft8ExtractAllGrids(message) { + const out = []; + const seen = new Set(); + let i = 0; + while (i < message.length) { + if (ft8IsAlphaNum(message[i])) { + let j = i + 1; + while (j < message.length && ft8IsAlphaNum(message[j])) j++; + const token = message.slice(i, j); + const grid = token.toUpperCase(); + if (ft8IsMaidenheadGridToken(grid) && !seen.has(grid)) { + seen.add(grid); + out.push(grid); + } + i = j; + } else { + i += 1; + } + } + return out; +} + +function ft8ExtractLocatorDetails(message) { + const tokens = ft8TokenizeMessage(message); + const grids = ft8ExtractAllGrids(String(message || "")); + if (tokens.length === 0 || grids.length === 0) return []; + const firstGridIdx = tokens.findIndex((token) => ft8IsMaidenheadGridToken(token)); + const limit = firstGridIdx >= 0 ? firstGridIdx : tokens.length; + const callsigns = []; + for (let i = 0; i < limit; i += 1) { + if (ft8IsLikelyCallsignToken(tokens[i])) callsigns.push(tokens[i]); + } + + let source = null; + let target = null; + const head = tokens[0]; + if (callsigns.length > 0) { + if (head === "CQ" || head === "DE" || head === "QRZ") { + source = callsigns[0]; + } else if (callsigns.length >= 2) { + target = callsigns[0]; + source = callsigns[1]; + } else { + source = callsigns[0]; + } + } + + return grids.map((grid) => ({ + grid, + station: source || null, + source: source || null, + target: target || null, + })); +} + +function ft8ExtractLikelyCallsign(message) { + const locatorDetails = ft8ExtractLocatorDetails(message); + if (locatorDetails.length > 0 && locatorDetails[0].station) { + return locatorDetails[0].station; + } + const tokens = ft8TokenizeMessage(message); + for (const token of tokens) { + if (ft8IsLikelyCallsignToken(token)) return token; + } + return null; +} + +function ft8IsLikelyCallsignToken(token) { + if (!token) return false; + if (token.length < 3 || token.length > 12) return false; + if (token === "CQ" || token === "DE" || token === "QRZ" || token === "DX") return false; + if (ft8IsMaidenheadGridToken(token)) return false; + return /^[A-Z0-9/]{1,5}\d[A-Z0-9/]{1,6}$/.test(token); +} + +function ft8IsFarewellToken(token) { + const normalized = String(token || "").trim().toUpperCase(); + return normalized === "RR73" || normalized === "73" || normalized === "RR"; +} + +function ft8IsMaidenheadGridToken(token) { + const normalized = String(token || "").trim().toUpperCase(); + return /^[A-R]{2}\d{2}(?:[A-X]{2})?$/.test(normalized) && !ft8IsFarewellToken(normalized); +} + +function ft8EscapeHtml(input) { + return input + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll("\"", """); +} + +function ft8IsAlphaNum(ch) { + return /[A-Za-z0-9]/.test(ch); +} + +function activateFt8HistoryLocator(targetEl) { + const locatorEl = targetEl?.closest?.(".ft8-locator[data-locator-grid]"); + if (!locatorEl) return false; + const grid = String(locatorEl.dataset.locatorGrid || "").toUpperCase(); + if (!grid) return false; + if (typeof window.navigateToMapLocator === "function") { + window.navigateToMapLocator(grid, "ft8"); + } + return true; +} + +function applyFt8FilterToRow(row) { + if (!ft8FilterText) { + row.style.display = ""; + return; + } + const message = row.dataset.message || ""; + row.style.display = message.includes(ft8FilterText) ? "" : "none"; +} + +function applyFt8FilterToAll() { + const rows = ft8MessagesEl.querySelectorAll(".ft8-row"); + rows.forEach((row) => applyFt8FilterToRow(row)); +} + +function updateFt8RowRf(row) { + const freqEl = row.querySelector(".ft8-freq"); + if (!freqEl) return; + const storedFreqHz = row.dataset.storedFreqHz ? Number(row.dataset.storedFreqHz) : NaN; + const displayFreqHz = normalizeFt8DisplayFreqHz(storedFreqHz); + if (Number.isFinite(displayFreqHz)) { + freqEl.textContent = displayFreqHz.toFixed(0); + } else { + freqEl.textContent = "--"; + } +} + +window.updateFt8RfDisplay = function() { + const rows = ft8MessagesEl.querySelectorAll(".ft8-row"); + rows.forEach((row) => updateFt8RowRf(row)); + updateFt8Bar(); +}; + +window.resetFt8HistoryView = function() { + ft8MessagesEl.innerHTML = ""; + ft8MessageHistory = []; + updateFt8Bar(); + renderFt8History(); + if (window.clearMapMarkersByType) window.clearMapMarkersByType("ft8"); +}; + +if (ft8FilterInput) { + ft8FilterInput.addEventListener("input", () => { + ft8FilterText = ft8FilterInput.value.trim().toUpperCase(); + renderFt8History(); + }); +} + +if (ft8MessagesEl) { + ft8MessagesEl.addEventListener("click", (event) => { + if (!activateFt8HistoryLocator(event.target)) return; + event.preventDefault(); + event.stopPropagation(); + }); + ft8MessagesEl.addEventListener("keydown", (event) => { + if (event.key !== "Enter" && event.key !== " ") return; + if (!activateFt8HistoryLocator(event.target)) return; + event.preventDefault(); + event.stopPropagation(); + }); +} + +const ft8DecodeToggleBtn = document.getElementById("ft8-decode-toggle-btn"); +ft8DecodeToggleBtn?.addEventListener("click", async () => { + try { + await window.takeSchedulerControlForDecoderDisable?.(ft8DecodeToggleBtn); + await postPath("/toggle_ft8_decode"); + } catch (e) { + console.error("FT8 toggle failed", e); + } +}); + +document.getElementById("settings-clear-ft8-history")?.addEventListener("click", async () => { + if (!confirm("Clear all FT8 decode history? This cannot be undone.")) return; + try { + await postPath("/clear_ft8_decode"); + window.resetFt8HistoryView(); + } catch (e) { + console.error("FT8 history clear failed", e); + } +}); + +// --- Server-side FT8 decode handler --- +window.onServerFt8 = function(msg) { + ft8Status.textContent = "Receiving"; + const next = normalizeServerFt8Message(msg); + if (next.grids.length > 0 && window.mapAddLocator) { + window.mapAddLocator(next.raw, next.grids, "ft8", next.station, { + ...msg, + freq_hz: next.rfHz, + locator_details: next.locatorDetails, + }); + } + addFt8Message(next.history); +}; diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/hf-aprs.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/hf-aprs.js new file mode 100644 index 0000000..25f2a4e --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/hf-aprs.js @@ -0,0 +1,444 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// --- HF APRS Decoder Plugin (server-side decode, 300 baud) --- +const hfAprsStatus = document.getElementById("hf-aprs-status"); +const hfAprsPacketsEl = document.getElementById("hf-aprs-packets"); +const hfAprsFilterInput = document.getElementById("hf-aprs-filter"); +const hfAprsOnlyPosBtn = document.getElementById("hf-aprs-only-pos-btn"); +const hfAprsHideCrcBtn = document.getElementById("hf-aprs-hide-crc-btn"); +const hfAprsCollapseDupBtn = document.getElementById("hf-aprs-collapse-dup-btn"); +const hfAprsTotalCountEl = document.getElementById("hf-aprs-total-count"); +const hfAprsVisibleCountEl = document.getElementById("hf-aprs-visible-count"); +const hfAprsLatestSeenEl = document.getElementById("hf-aprs-latest-seen"); +let hfAprsFilterText = ""; +let hfAprsPacketHistory = []; +let hfAprsOnlyPos = false; +let hfAprsHideCrc = false; +let hfAprsCollapseDup = false; +let hfAprsTypeFilter = "all"; + +function currentHfAprsHistoryRetentionMs() { + return typeof window.getDecodeHistoryRetentionMs === "function" + ? window.getDecodeHistoryRetentionMs() + : 24 * 60 * 60 * 1000; +} + +function pruneHfAprsPacketHistory() { + const cutoffMs = Date.now() - currentHfAprsHistoryRetentionMs(); + hfAprsPacketHistory = hfAprsPacketHistory.filter((pkt) => Number(pkt?._tsMs) >= cutoffMs); +} + +function scheduleHfAprsHistoryRender() { + if (typeof window.trxScheduleUiFrameJob === "function") { + window.trxScheduleUiFrameJob("hf-aprs-history", () => renderHfAprsHistory()); + return; + } + renderHfAprsHistory(); +} + +function hfAprsPacketCategory(pkt) { + const type = String(pkt.type || "").toLowerCase(); + const info = String(pkt.info || "").toLowerCase(); + if (pkt.lat != null && pkt.lon != null || type.includes("position")) return "position"; + if (type.includes("message") || info.startsWith(":")) return "message"; + if (type.includes("weather") || info.startsWith("_")) return "weather"; + if (type.includes("telemetry") || info.startsWith("t#")) return "telemetry"; + return "other"; +} + +function hfAprsCategoryLabel(category) { + switch (category) { + case "position": return "Position"; + case "message": return "Message"; + case "weather": return "Weather"; + case "telemetry": return "Telemetry"; + default: return "Other"; + } +} + +function hfAprsAgeText(tsMs) { + if (!Number.isFinite(tsMs)) return "just now"; + const deltaMs = Math.max(0, Date.now() - tsMs); + const seconds = Math.round(deltaMs / 1000); + if (seconds < 5) return "just now"; + if (seconds < 60) return `${seconds}s ago`; + const minutes = Math.round(seconds / 60); + if (minutes < 60) return `${minutes}m ago`; + const hours = Math.round(minutes / 60); + return `${hours}h ago`; +} + +function hfAprsDistanceText(pkt) { + if (serverLat == null || serverLon == null || pkt.lat == null || pkt.lon == null) return ""; + const distKm = haversineKm(serverLat, serverLon, pkt.lat, pkt.lon); + if (!Number.isFinite(distKm)) return ""; + if (distKm < 1) return `${Math.round(distKm * 1000)} m from TRX`; + return `${distKm.toFixed(1)} km from TRX`; +} + +function hfAprsPacketSignature(pkt) { + return [ + pkt.srcCall || "", + pkt.destCall || "", + pkt.path || "", + pkt.info || "", + pkt.type || "", + pkt.lat != null ? pkt.lat.toFixed(4) : "", + pkt.lon != null ? pkt.lon.toFixed(4) : "", + ].join("|"); +} + +function hfAprsHexBytes(bytes) { + if (!Array.isArray(bytes) || bytes.length === 0) return "--"; + return bytes.map((b) => Number(b).toString(16).toUpperCase().padStart(2, "0")).join(" "); +} + +function hfAprsFilterMatch(pkt) { + if (hfAprsOnlyPos && (pkt.lat == null || pkt.lon == null)) return false; + if (hfAprsHideCrc && !pkt.crcOk) return false; + if (hfAprsTypeFilter !== "all" && hfAprsPacketCategory(pkt) !== hfAprsTypeFilter) return false; + if (!hfAprsFilterText) return true; + const haystack = [ + pkt.srcCall, + pkt.destCall, + pkt.path, + pkt.info, + pkt.type, + pkt.lat != null ? pkt.lat.toFixed(4) : "", + pkt.lon != null ? pkt.lon.toFixed(4) : "", + hfAprsPacketCategory(pkt), + ] + .filter(Boolean) + .join(" ") + .toUpperCase(); + return haystack.includes(hfAprsFilterText); +} + +function hfAprsVisiblePackets() { + const packets = hfAprsCollapseDup ? collapseHfAprsDuplicates(hfAprsPacketHistory) : hfAprsPacketHistory; + return packets.filter(hfAprsFilterMatch); +} + +function collapseHfAprsDuplicates(packets) { + const seen = new Set(); + const out = []; + for (const pkt of packets) { + const key = hfAprsPacketSignature(pkt); + if (seen.has(key)) continue; + seen.add(key); + out.push(pkt); + } + return out; +} + +function updateHfAprsSummary() { + const visible = hfAprsVisiblePackets(); + if (hfAprsTotalCountEl) { + hfAprsTotalCountEl.textContent = `${hfAprsPacketHistory.length} total`; + } + if (hfAprsVisibleCountEl) { + hfAprsVisibleCountEl.textContent = `${visible.length} shown`; + } + if (hfAprsLatestSeenEl) { + const latest = hfAprsPacketHistory[0]; + if (!latest) { + hfAprsLatestSeenEl.textContent = "No packets yet"; + } else { + hfAprsLatestSeenEl.textContent = `${latest.srcCall} ${hfAprsAgeText(latest._tsMs)}`; + } + } +} + +function updateHfAprsChipState() { + document.querySelectorAll("[id^='hf-aprs-type-']").forEach((btn) => { + btn.classList.toggle("active", btn.id === `hf-aprs-type-${hfAprsTypeFilter}`); + }); + hfAprsOnlyPosBtn?.classList.toggle("active", hfAprsOnlyPos); + hfAprsHideCrcBtn?.classList.toggle("active", hfAprsHideCrc); + hfAprsCollapseDupBtn?.classList.toggle("active", hfAprsCollapseDup); +} + +function renderHfAprsInfo(pkt) { + const bytes = Array.isArray(pkt.info_bytes) ? pkt.info_bytes : null; + if (bytes && bytes.length > 0) { + let out = ""; + for (let i = 0; i < bytes.length; i++) { + const b = bytes[i]; + if (b >= 0x20 && b <= 0x7e) { + const ch = String.fromCharCode(b); + if (ch === "<") out += "<"; + else if (ch === ">") out += ">"; + else if (ch === "&") out += "&"; + else if (ch === '"') out += """; + else out += ch; + } else { + const hex = b.toString(16).toUpperCase().padStart(2, "0"); + out += `0x${hex}`; + } + } + return out; + } + const str = pkt.info || ""; + let out = ""; + for (let i = 0; i < str.length; i++) { + const code = str.charCodeAt(i); + if (code >= 0x20 && code <= 0x7e) { + const ch = str[i]; + if (ch === "<") out += "<"; + else if (ch === ">") out += ">"; + else if (ch === "&") out += "&"; + else if (ch === '"') out += """; + else out += ch; + } else { + const hex = code.toString(16).toUpperCase().padStart(2, "0"); + out += `0x${hex}`; + } + } + return out; +} + +function renderHfAprsRow(pkt, isFresh) { + const row = document.createElement("div"); + row.className = "aprs-packet"; + if (!pkt.crcOk) row.classList.add("aprs-packet-crc"); + if (isFresh) row.classList.add("aprs-packet-new"); + + const ts = pkt._ts || new Date().toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" }); + const age = hfAprsAgeText(pkt._tsMs); + const category = hfAprsPacketCategory(pkt); + const categoryLabel = hfAprsCategoryLabel(category); + const categoryClass = `aprs-badge aprs-badge-type aprs-badge-type-${category}`; + const pathBadge = pkt.path ? `${escapeMapHtml(pkt.path)}` : ""; + const crcBadge = pkt.crcOk ? "" : 'CRC Fail'; + const hfBadge = 'HF'; + let symbolHtml = ""; + if (pkt.symbolTable && pkt.symbolCode) { + const sheet = pkt.symbolTable === "/" ? 0 : 1; + const code = pkt.symbolCode.charCodeAt(0) - 33; + const col = code % 16; + const row2 = Math.floor(code / 16); + const bgX = -(col * 24); + const bgY = -(row2 * 24); + symbolHtml = ``; + } + const posLink = pkt.lat != null && pkt.lon != null + ? `${pkt.lat.toFixed(4)}, ${pkt.lon.toFixed(4)}` + : ""; + const distance = hfAprsDistanceText(pkt); + const qrzHref = `https://qrzcq.com/call/${encodeURIComponent(pkt.srcCall || "")}`; + + row.innerHTML = + `
    ` + + `${ts}` + + hfBadge + + symbolHtml + + `${escapeMapHtml(pkt.srcCall)}` + + `>${escapeMapHtml(pkt.destCall || "")}` + + `${escapeMapHtml(categoryLabel)}` + + pathBadge + + crcBadge + + `
    ` + + `
    ` + + `${escapeMapHtml(age)}` + + (distance ? `${escapeMapHtml(distance)}` : "") + + `${escapeMapHtml(pkt.type || "--")}` + + `
    ` + + `
    ` + + `${renderHfAprsInfo(pkt)}` + + (posLink ? `${posLink}` : "") + + `
    ` + + `
    ` + + (pkt.lat != null && pkt.lon != null ? `` : "") + + (pkt.lat != null && pkt.lon != null ? `` : "") + + `QRZ` + + `
    ` + + `
    ` + + `Details` + + `
    ` + + `Source${escapeMapHtml(pkt.srcCall || "--")}` + + `Destination${escapeMapHtml(pkt.destCall || "--")}` + + `Type${escapeMapHtml(pkt.type || "--")}` + + `Path${escapeMapHtml(pkt.path || "--")}` + + `Age${escapeMapHtml(age)}` + + `CRC${pkt.crcOk ? "OK" : "Failed"}` + + `Position${pkt.lat != null && pkt.lon != null ? `${pkt.lat.toFixed(5)}, ${pkt.lon.toFixed(5)}` : "--"}` + + `Info${escapeMapHtml(pkt.info || "--")}` + + `Info Bytes${escapeMapHtml(hfAprsHexBytes(pkt.info_bytes))}` + + `
    ` + + `
    `; + + row.querySelectorAll("[data-aprs-map]").forEach((el) => { + el.addEventListener("click", (evt) => { + evt.preventDefault(); + const raw = String(el.dataset.aprsMap || ""); + const [lat, lon] = raw.split(",").map(Number); + if (window.navigateToAprsMap && Number.isFinite(lat) && Number.isFinite(lon)) { + window.navigateToAprsMap(lat, lon); + } + }); + }); + + const copyBtn = row.querySelector("[data-aprs-copy]"); + if (copyBtn) { + copyBtn.addEventListener("click", async () => { + const raw = String(copyBtn.dataset.aprsCopy || ""); + try { + if (navigator.clipboard?.writeText) { + await navigator.clipboard.writeText(raw); + showHint("Coordinates copied", 1200); + } + } catch (_e) { + showHint("Copy failed", 1500); + } + }); + } + + return row; +} + +function renderHfAprsHistory() { + pruneHfAprsPacketHistory(); + if (!hfAprsPacketsEl) { + updateHfAprsSummary(); + updateHfAprsChipState(); + return; + } + const visible = hfAprsVisiblePackets(); + const fragment = document.createDocumentFragment(); + for (let i = 0; i < visible.length; i++) { + fragment.appendChild(renderHfAprsRow(visible[i], i === 0)); + } + hfAprsPacketsEl.replaceChildren(fragment); + updateHfAprsSummary(); + updateHfAprsChipState(); +} + +window.resetHfAprsHistoryView = function() { + if (hfAprsPacketsEl) hfAprsPacketsEl.innerHTML = ""; + hfAprsPacketHistory = []; + renderHfAprsHistory(); +}; + +window.pruneHfAprsHistoryView = function() { + pruneHfAprsPacketHistory(); + renderHfAprsHistory(); +}; + +function addHfAprsPacket(pkt) { + const tsMs = Number.isFinite(pkt.ts_ms) ? Number(pkt.ts_ms) : Date.now(); + pkt._tsMs = tsMs; + pkt._ts = new Date(tsMs).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" }); + + hfAprsPacketHistory.unshift(pkt); + pruneHfAprsPacketHistory(); + + scheduleHfAprsHistoryRender(); +} + +function normalizeServerHfAprsPacket(pkt) { + return { + rig_id: pkt.rig_id || null, + receiver: window.getDecodeRigMeta ? window.getDecodeRigMeta() : null, + srcCall: pkt.src_call, + destCall: pkt.dest_call, + path: pkt.path, + info: pkt.info, + info_bytes: pkt.info_bytes, + type: pkt.packet_type, + crcOk: pkt.crc_ok, + ts_ms: pkt.ts_ms, + lat: pkt.lat, + lon: pkt.lon, + symbolTable: pkt.symbol_table, + symbolCode: pkt.symbol_code, + }; +} + +window.onServerHfAprsBatch = function(packets) { + if (!Array.isArray(packets) || packets.length === 0) return; + if (hfAprsStatus) hfAprsStatus.textContent = "Receiving"; + const normalized = []; + for (const pkt of packets) { + const next = normalizeServerHfAprsPacket(pkt); + const tsMs = Number.isFinite(next.ts_ms) ? Number(next.ts_ms) : Date.now(); + next._tsMs = tsMs; + next._ts = new Date(tsMs).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" }); + normalized.push(next); + } + normalized.reverse(); + hfAprsPacketHistory = normalized.concat(hfAprsPacketHistory); + pruneHfAprsPacketHistory(); + scheduleHfAprsHistoryRender(); +}; + +window.restoreHfAprsHistory = function(packets) { + window.onServerHfAprsBatch(packets); +}; + +const hfAprsDecodeToggleBtn = document.getElementById("hf-aprs-decode-toggle-btn"); +hfAprsDecodeToggleBtn?.addEventListener("click", async () => { + try { + await window.takeSchedulerControlForDecoderDisable?.(hfAprsDecodeToggleBtn); + await postPath("/toggle_hf_aprs_decode"); + } catch (e) { + console.error("HF APRS toggle failed", e); + } +}); + +document.getElementById("settings-clear-hf-aprs-history")?.addEventListener("click", async () => { + if (!confirm("Clear all HF APRS decode history? This cannot be undone.")) return; + try { + await postPath("/clear_hf_aprs_decode"); + window.resetHfAprsHistoryView(); + } catch (e) { + console.error("HF APRS history clear failed", e); + } +}); + +if (hfAprsOnlyPosBtn) { + hfAprsOnlyPosBtn.addEventListener("click", () => { + hfAprsOnlyPos = !hfAprsOnlyPos; + renderHfAprsHistory(); + }); +} + +if (hfAprsHideCrcBtn) { + hfAprsHideCrcBtn.addEventListener("click", () => { + hfAprsHideCrc = !hfAprsHideCrc; + renderHfAprsHistory(); + }); +} + +if (hfAprsCollapseDupBtn) { + hfAprsCollapseDupBtn.addEventListener("click", () => { + hfAprsCollapseDup = !hfAprsCollapseDup; + renderHfAprsHistory(); + }); +} + +["all", "position", "message", "weather", "telemetry", "other"].forEach((type) => { + const btn = document.getElementById(`hf-aprs-type-${type}`); + if (!btn) return; + btn.addEventListener("click", () => { + hfAprsTypeFilter = type; + renderHfAprsHistory(); + }); +}); + +if (hfAprsFilterInput) { + hfAprsFilterInput.addEventListener("input", () => { + hfAprsFilterText = hfAprsFilterInput.value.trim().toUpperCase(); + renderHfAprsHistory(); + }); +} + +// --- Server-side HF APRS decode handler --- +window.onServerHfAprs = function(pkt) { + if (hfAprsStatus) hfAprsStatus.textContent = "Receiving"; + addHfAprsPacket(normalizeServerHfAprsPacket(pkt)); +}; + +renderHfAprsHistory(); +if (window._trxDrainPendingDecode) window._trxDrainPendingDecode("hf_aprs"); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/sat-scheduler.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/sat-scheduler.js new file mode 100644 index 0000000..7c87da3 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/sat-scheduler.js @@ -0,0 +1,321 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// Satellite Pass Scheduling UI +// Manages the satellite overlay section within the background decoding scheduler. +// Communicates with scheduler.js via a thin window API for shared state access. + +(function () { + "use strict"; + + // ── DOM references (cached once) ────────────────────────────────── + const dom = { + enabled: document.getElementById("scheduler-sat-enabled"), + pretune: document.getElementById("scheduler-sat-pretune"), + body: document.getElementById("scheduler-sat-body"), + tbody: document.getElementById("scheduler-sat-tbody"), + addBtn: document.getElementById("scheduler-sat-add-btn"), + passStatus: document.getElementById("scheduler-sat-pass-status"), + formWrap: document.getElementById("sch-sat-form-wrap"), + formTitle: document.getElementById("sch-sat-form-title"), + form: document.getElementById("sch-sat-form"), + formCancel: document.getElementById("sch-sat-form-cancel"), + preset: document.getElementById("scheduler-sat-preset"), + name: document.getElementById("scheduler-sat-name"), + norad: document.getElementById("scheduler-sat-norad"), + bookmark: document.getElementById("scheduler-sat-bookmark"), + minEl: document.getElementById("scheduler-sat-min-el"), + priority: document.getElementById("scheduler-sat-priority"), + centerHz: document.getElementById("scheduler-sat-center-hz"), + }; + + // ── Local state ─────────────────────────────────────────────────── + let editIdx = null; // null = adding, number = editing + + // ── Scheduler bridge ────────────────────────────────────────────── + // These accessors call into scheduler.js via window.schedulerBridge, + // which is set up by scheduler.js after it initializes. + function getBridge() { + return window.schedulerBridge || {}; + } + + function getConfig() { + const b = getBridge(); + return typeof b.getConfig === "function" ? b.getConfig() : null; + } + + function getStatus() { + const b = getBridge(); + return typeof b.getStatus === "function" ? b.getStatus() : null; + } + + function getBookmarks() { + const b = getBridge(); + return typeof b.getBookmarks === "function" ? b.getBookmarks() : []; + } + + function markDirty() { + var b = getBridge(); + if (typeof b.markDirty === "function") b.markDirty(); + } + + function bmName(id) { + const bm = getBookmarks().find(function (b) { return b.id === id; }); + return bm ? bm.name : String(id || ""); + } + + function escHtml(s) { + return String(s) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); + } + + function formatFreq(hz) { + if (hz >= 1e6) return (hz / 1e6).toFixed(3) + " MHz"; + if (hz >= 1e3) return (hz / 1e3).toFixed(1) + " kHz"; + return hz + " Hz"; + } + + // ── Satellite config helpers ────────────────────────────────────── + function getSatelliteEntries() { + var config = getConfig(); + return (config && config.satellites && Array.isArray(config.satellites.entries)) + ? config.satellites.entries + : []; + } + + function ensureSatelliteConfig() { + var config = getConfig(); + if (!config) return { enabled: false, pretune_secs: 60, entries: [] }; + if (!config.satellites) config.satellites = { enabled: false, pretune_secs: 60, entries: [] }; + if (!config.satellites.entries) config.satellites.entries = []; + return config.satellites; + } + + function collectSatelliteConfig() { + var enabled = dom.enabled ? dom.enabled.checked : false; + var pretune = dom.pretune ? parseInt(dom.pretune.value, 10) : 60; + return { + enabled: enabled, + pretune_secs: isNaN(pretune) || pretune < 0 ? 60 : pretune, + entries: getSatelliteEntries(), + }; + } + + // ── Render: section ─────────────────────────────────────────────── + function renderSection() { + var config = getConfig(); + var satCfg = (config && config.satellites) || {}; + var enabled = !!satCfg.enabled; + + if (dom.enabled) dom.enabled.checked = enabled; + if (dom.pretune) dom.pretune.value = satCfg.pretune_secs != null ? satCfg.pretune_secs : 60; + if (dom.body) dom.body.style.display = enabled ? "" : "none"; + + renderEntries(); + renderPassStatus(); + } + + // ── Render: entries table ───────────────────────────────────────── + function renderEntries() { + if (!dom.tbody) return; + var entries = getSatelliteEntries(); + var frag = document.createDocumentFragment(); + + entries.forEach(function (entry, idx) { + var tr = document.createElement("tr"); + + var tdSat = document.createElement("td"); + tdSat.textContent = entry.satellite || ""; + tr.appendChild(tdSat); + + var tdNorad = document.createElement("td"); + tdNorad.textContent = entry.norad_id || ""; + tr.appendChild(tdNorad); + + var tdBm = document.createElement("td"); + tdBm.textContent = bmName(entry.bookmark_id); + tr.appendChild(tdBm); + + var tdEl = document.createElement("td"); + tdEl.textContent = (entry.min_elevation_deg != null ? entry.min_elevation_deg + "\u00B0" : "5\u00B0"); + tr.appendChild(tdEl); + + var tdPrio = document.createElement("td"); + tdPrio.textContent = entry.priority || 0; + tr.appendChild(tdPrio); + + var tdActions = document.createElement("td"); + + var editBtn = document.createElement("button"); + editBtn.className = "sch-write"; + editBtn.type = "button"; + editBtn.textContent = "Edit"; + editBtn.addEventListener("click", function () { + openForm(entry, idx); + }); + tdActions.appendChild(editBtn); + + var removeBtn = document.createElement("button"); + removeBtn.className = "sch-write"; + removeBtn.type = "button"; + removeBtn.textContent = "Remove"; + removeBtn.addEventListener("click", function () { + removeEntry(idx); + }); + tdActions.appendChild(removeBtn); + + tr.appendChild(tdActions); + frag.appendChild(tr); + }); + + dom.tbody.replaceChildren(frag); + } + + // ── Render: pass status ─────────────────────────────────────────── + function renderPassStatus() { + if (!dom.passStatus) return; + var entries = getSatelliteEntries(); + if (entries.length === 0) { + dom.passStatus.innerHTML = ""; + return; + } + var status = getStatus(); + if (status && status.active_satellite) { + dom.passStatus.innerHTML = + 'PASS ACTIVE: ' + + escHtml(status.active_satellite) + + ''; + } else { + dom.passStatus.innerHTML = + 'No satellite pass active. Predictions available in the SAT tab.'; + } + } + + // ── Render: bookmark dropdown ───────────────────────────────────── + function renderBookmarkSelect(selectedId) { + if (!dom.bookmark) return; + dom.bookmark.innerHTML = ''; + getBookmarks().forEach(function (bm) { + var opt = document.createElement("option"); + opt.value = bm.id; + opt.textContent = bm.name + " (" + formatFreq(bm.freq_hz) + " " + bm.mode + ")"; + if (bm.id === selectedId) opt.selected = true; + dom.bookmark.appendChild(opt); + }); + } + + // ── Entry management ────────────────────────────────────────────── + function removeEntry(idx) { + var sat = ensureSatelliteConfig(); + sat.entries.splice(idx, 1); + renderEntries(); + markDirty(); + } + + // ── Form: open ──────────────────────────────────────────────────── + function openForm(entry, idx) { + editIdx = (idx != null) ? idx : null; + + if (dom.formTitle) dom.formTitle.textContent = entry ? "Edit Satellite" : "Add Satellite"; + if (dom.preset) dom.preset.value = ""; + if (dom.name) dom.name.value = entry ? (entry.satellite || "") : ""; + if (dom.norad) dom.norad.value = entry ? (entry.norad_id || "") : ""; + if (dom.minEl) dom.minEl.value = entry && entry.min_elevation_deg != null ? entry.min_elevation_deg : 5; + if (dom.priority) dom.priority.value = entry && entry.priority != null ? entry.priority : 0; + if (dom.centerHz) dom.centerHz.value = entry && entry.center_hz ? entry.center_hz : ""; + + renderBookmarkSelect(entry ? entry.bookmark_id : null); + + if (dom.formWrap) { + dom.formWrap.style.display = "flex"; + if (dom.name) dom.name.focus(); + } + } + + // ── Form: close ─────────────────────────────────────────────────── + function closeForm() { + if (dom.formWrap) dom.formWrap.style.display = "none"; + editIdx = null; + } + + // ── Form: submit ────────────────────────────────────────────────── + function onFormSubmit(e) { + e.preventDefault(); + + var satellite = dom.name ? dom.name.value.trim() : ""; + var noradId = dom.norad ? parseInt(dom.norad.value, 10) : NaN; + var bmId = dom.bookmark ? dom.bookmark.value : ""; + + if (!satellite) { alert("Please enter a satellite name."); return; } + if (isNaN(noradId) || noradId <= 0) { alert("Please enter a valid NORAD catalog number."); return; } + if (!bmId) { alert("Please select a bookmark."); return; } + + var minEl = dom.minEl ? parseFloat(dom.minEl.value) : 5; + var prio = dom.priority ? parseInt(dom.priority.value, 10) : 0; + var centerHzRaw = dom.centerHz ? parseInt(dom.centerHz.value, 10) : NaN; + + var sat = ensureSatelliteConfig(); + + var entryData = { + satellite: satellite, + norad_id: noradId, + bookmark_id: bmId, + min_elevation_deg: isNaN(minEl) ? 5 : minEl, + priority: isNaN(prio) ? 0 : prio, + center_hz: !isNaN(centerHzRaw) && centerHzRaw > 0 ? centerHzRaw : null, + bookmark_ids: [], + }; + + if (editIdx !== null) { + var existing = sat.entries[editIdx]; + entryData.id = existing ? existing.id : ("sat_" + Date.now().toString(36)); + sat.entries[editIdx] = entryData; + } else { + entryData.id = "sat_" + Date.now().toString(36); + sat.entries.push(entryData); + } + + closeForm(); + renderEntries(); + markDirty(); + } + + // ── Preset change handler ───────────────────────────────────────── + function onPresetChange() { + if (!dom.preset || !dom.preset.value) return; + var parts = dom.preset.value.split("|"); + if (dom.name) dom.name.value = parts[0] || ""; + if (dom.norad) dom.norad.value = parts[1] || ""; + } + + // ── Wire all events ─────────────────────────────────────────────── + function wireEvents() { + if (dom.enabled) { + dom.enabled.addEventListener("change", function () { + if (dom.body) dom.body.style.display = dom.enabled.checked ? "" : "none"; + markDirty(); + }); + } + if (dom.pretune) { + dom.pretune.addEventListener("input", function () { + markDirty(); + }); + } + if (dom.addBtn) dom.addBtn.addEventListener("click", function () { openForm(null, null); }); + if (dom.form) dom.form.addEventListener("submit", onFormSubmit); + if (dom.formCancel) dom.formCancel.addEventListener("click", closeForm); + if (dom.preset) dom.preset.addEventListener("change", onPresetChange); + } + + // ── Public API ──────────────────────────────────────────────────── + window.satScheduler = { + wireEvents: wireEvents, + renderSection: renderSection, + renderPassStatus: renderPassStatus, + collectSatelliteConfig: collectSatelliteConfig, + }; +})(); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/sat.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/sat.js new file mode 100644 index 0000000..64bfe78 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/sat.js @@ -0,0 +1,546 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// --- SAT Plugin --- +// Live view: decoder state, latest image card +// History view: filterable table of all decoded images +// Predictions view: next 24 h passes for ham satellites + +// ── DOM references (cached once) ─────────────────────────────────── +const satDom = { + status: document.getElementById("sat-status"), + liveView: document.getElementById("sat-live-view"), + historyView: document.getElementById("sat-history-view"), + predictionsView: document.getElementById("sat-predictions-view"), + liveLatest: document.getElementById("sat-live-latest"), + historyList: document.getElementById("sat-history-list"), + historyCount: document.getElementById("sat-history-count"), + filterInput: document.getElementById("sat-filter"), + sortSelect: document.getElementById("sat-sort"), + typeFilter: document.getElementById("sat-type-filter"), + lrptState: document.getElementById("sat-lrpt-state"), + viewLiveBtn: document.getElementById("sat-view-live"), + viewHistoryBtn: document.getElementById("sat-view-history"), + viewPredBtn: document.getElementById("sat-view-predictions"), + predFilter: document.getElementById("sat-pred-filter"), + predMinEl: document.getElementById("sat-pred-min-el"), + predCategory: document.getElementById("sat-pred-category"), + predCurrentList: document.getElementById("sat-pred-current-list"), + predUpcomingList: document.getElementById("sat-pred-list"), + predCurrentSec: document.getElementById("sat-pred-current-section"), + predUpcomingSec: document.getElementById("sat-pred-upcoming-section"), + predStatus: document.getElementById("sat-pred-status"), +}; + +// ── State ─────────────────────────────────────────────────────────── +let satImageHistory = []; +const SAT_MAX_IMAGES = 100; +const SAT_PRED_PAGE_SIZE = 50; +let satPredShowAll = false; +let satFilterText = ""; +let satActiveView = "live"; // "live" | "history" | "predictions" +let satPredData = []; +let satPredFilterText = ""; +let satPredMinEl = 0; +let satPredCategory = "all"; +let satPredSatCount = 0; +let satPredCountdownTimer = null; + +// ── UI scheduler helper ───────────────────────────────────────────── +function scheduleSatUi(key, job) { + if (typeof window.trxScheduleUiFrameJob === "function") { + window.trxScheduleUiFrameJob(key, job); + return; + } + job(); +} + +// ── View switching ────────────────────────────────────────────────── +function switchSatView(view) { + const leavingPredictions = satActiveView === "predictions" && view !== "predictions"; + satActiveView = view; + if (satDom.liveView) satDom.liveView.style.display = view === "live" ? "" : "none"; + if (satDom.historyView) satDom.historyView.style.display = view === "history" ? "" : "none"; + if (satDom.predictionsView) satDom.predictionsView.style.display = view === "predictions" ? "" : "none"; + if (satDom.viewLiveBtn) satDom.viewLiveBtn.classList.toggle("sat-view-active", view === "live"); + if (satDom.viewHistoryBtn) satDom.viewHistoryBtn.classList.toggle("sat-view-active", view === "history"); + if (satDom.viewPredBtn) satDom.viewPredBtn.classList.toggle("sat-view-active", view === "predictions"); + if (leavingPredictions) clearPredictionDom(); + if (view === "history") { + renderSatHistoryTable(); + } else if (view === "predictions") { + satPredShowAll = false; + loadSatPredictions(); + } +} + +function clearPredictionDom() { + stopCountdownTimer(); + if (satDom.predCurrentList) satDom.predCurrentList.innerHTML = ""; + if (satDom.predUpcomingList) satDom.predUpcomingList.innerHTML = ""; +} +window.clearSatPredictionDom = clearPredictionDom; + +satDom.viewLiveBtn?.addEventListener("click", () => switchSatView("live")); +satDom.viewHistoryBtn?.addEventListener("click", () => switchSatView("history")); +satDom.viewPredBtn?.addEventListener("click", () => switchSatView("predictions")); + +// ── Live view: decoder state ──────────────────────────────────────── +let _lastSatLrptOn = null; +window.updateSatLiveState = function (update) { + if (!satDom.lrptState) return; + const lrptOn = !!update.lrpt_decode_enabled; + if (lrptOn !== _lastSatLrptOn) { + _lastSatLrptOn = lrptOn; + satDom.lrptState.textContent = lrptOn ? "Listening" : "Idle"; + satDom.lrptState.className = "sat-live-value " + (lrptOn ? "sat-state-listening" : "sat-state-idle"); + if (satDom.status) { + if (lrptOn) { + satDom.status.textContent = "Decoder active \u2014 waiting for signal"; + } else { + satDom.status.textContent = "Decoder idle"; + } + } + } +}; + +function renderSatLatestCard() { + if (!satDom.liveLatest) return; + if (satImageHistory.length === 0) { + satDom.liveLatest.innerHTML = + '
    No images decoded yet. Enable a decoder and wait for a satellite pass.
    '; + return; + } + + const img = satImageHistory[0]; + const decoder = img._decoder || "unknown"; + const typeName = "Meteor LRPT"; + const satellite = img.satellite || ""; + const channels = img.channels || img.channel_a || ""; + const lines = img.mcu_count || img.line_count || 0; + const unit = "MCU rows"; + const ts = img._ts || "--"; + const date = img._tsMs ? new Date(img._tsMs).toLocaleDateString() : ""; + + let meta = [typeName]; + if (satellite) meta.push(satellite); + if (channels) meta.push(channels); + meta.push(`${lines} ${unit}`); + meta.push(`${date} ${ts}`); + + let html = `
    `; + html += `
    Latest decoded image
    `; + html += `
    ${meta.join(" · ")}
    `; + if (img.path) { + html += `Download PNG`; + } + if (img.geo_bounds) { + html += ` `; + } + html += `
    `; + satDom.liveLatest.innerHTML = html; +} + +// ── History view: table ───────────────────────────────────────────── +function getSatFilteredHistory() { + let items = satImageHistory; + + const typeVal = satDom.typeFilter ? satDom.typeFilter.value : "all"; + if (typeVal === "lrpt") items = items.filter((i) => i._decoder === "lrpt"); + + if (satFilterText) { + items = items.filter((i) => { + const haystack = [ + "meteor lrpt", + i.satellite || "", + i.channels || "", + i.channel_a || "", + i.channel_b || "", + ].join(" ").toUpperCase(); + return haystack.includes(satFilterText); + }); + } + + const sortVal = satDom.sortSelect ? satDom.sortSelect.value : "newest"; + if (sortVal === "oldest") items = items.slice().reverse(); + + return items; +} + +function renderSatHistoryRow(img) { + const row = document.createElement("div"); + row.className = "sat-history-row"; + + const decoder = img._decoder || "unknown"; + const typeName = "Meteor LRPT"; + const typeClass = "sat-type-lrpt"; + const ts = img._ts || "--"; + const date = img._tsMs ? new Date(img._tsMs).toLocaleDateString([], { month: "short", day: "numeric" }) : ""; + const satellite = img.satellite || "--"; + const channels = img.channels || "--"; + const lines = img.mcu_count || img.line_count || 0; + const unit = "MCU"; + let link = img.path + ? `PNG` + : "--"; + if (img.geo_bounds) { + link += ` Map`; + } + + row.innerHTML = [ + `${date} ${ts}`, + `${typeName}`, + `${satellite}`, + `${channels}`, + `${lines} ${unit}`, + `${link}`, + ].join(""); + + return row; +} + +function renderSatHistoryTable() { + if (!satDom.historyList) return; + const items = getSatFilteredHistory(); + const fragment = document.createDocumentFragment(); + for (let i = 0; i < items.length; i += 1) { + fragment.appendChild(renderSatHistoryRow(items[i])); + } + satDom.historyList.replaceChildren(fragment); + + if (satDom.historyCount) { + const total = satImageHistory.length; + const shown = items.length; + satDom.historyCount.textContent = + total === 0 + ? "No images yet" + : shown === total + ? `${total} image${total === 1 ? "" : "s"}` + : `${shown} of ${total} images`; + } +} + +// ── Add image to history ──────────────────────────────────────────── +function addSatImage(img, decoder) { + const tsMs = Number.isFinite(img.ts_ms) ? Number(img.ts_ms) : Date.now(); + img._tsMs = tsMs; + img._ts = new Date(tsMs).toLocaleTimeString([], { + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + }); + img._decoder = decoder; + + satImageHistory.unshift(img); + if (satImageHistory.length > SAT_MAX_IMAGES) { + satImageHistory = satImageHistory.slice(0, SAT_MAX_IMAGES); + } + + scheduleSatUi("sat-latest", () => renderSatLatestCard()); + if (satActiveView === "history") { + scheduleSatUi("sat-history", () => renderSatHistoryTable()); + } +} + +// ── Server callbacks ──────────────────────────────────────────────── +window.onServerLrptProgress = function (msg) { + if (satDom.status && msg.mcu_count > 0) { + satDom.status.textContent = "Receiving \u2014 " + msg.mcu_count + " MCU rows decoded"; + } +}; + +window.onServerLrptImage = function (msg) { + if (satDom.status) satDom.status.textContent = "Image received (Meteor LRPT)"; + addSatImage(msg, "lrpt"); + if (msg.geo_bounds && msg.path && window.addSatMapOverlay) { + window.addSatMapOverlay(msg); + } +}; + +window.resetSatHistoryView = function () { + satImageHistory = []; + if (satDom.historyList) satDom.historyList.innerHTML = ""; + renderSatLatestCard(); + renderSatHistoryTable(); + if (window.clearSatMapOverlays) window.clearSatMapOverlays(); +}; + +window.pruneSatHistoryView = function () { + renderSatHistoryTable(); + renderSatLatestCard(); +}; + +// ── Toggle buttons ────────────────────────────────────────────────── +const lrptDecodeToggleBtn = document.getElementById("lrpt-decode-toggle-btn"); +lrptDecodeToggleBtn?.addEventListener("click", async () => { + try { + await window.takeSchedulerControlForDecoderDisable?.(lrptDecodeToggleBtn); + await postPath("/toggle_lrpt_decode"); + } catch (e) { + console.error("LRPT toggle failed", e); + } +}); + +// ── Filter / sort event listeners ─────────────────────────────────── +satDom.filterInput?.addEventListener("input", () => { + satFilterText = satDom.filterInput.value.trim().toUpperCase(); + renderSatHistoryTable(); +}); + +satDom.sortSelect?.addEventListener("change", () => renderSatHistoryTable()); +satDom.typeFilter?.addEventListener("change", () => renderSatHistoryTable()); + +// ── Settings: clear history ───────────────────────────────────────── +document + .getElementById("settings-clear-sat-history") + ?.addEventListener("click", async () => { + if (!confirm("Clear all satellite decode history? This cannot be undone.")) return; + try { + await postPath("/clear_lrpt_decode"); + window.resetSatHistoryView(); + } catch (e) { + console.error("Weather satellite history clear failed", e); + } + }); + +// ── Predictions: helpers ──────────────────────────────────────────── +function azToCardinal(deg) { + const dirs = ["N", "NE", "E", "SE", "S", "SW", "W", "NW"]; + return dirs[Math.round(deg / 45) % 8]; +} + +function formatPredTime(ms) { + const d = new Date(ms); + const now = new Date(); + const dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + const day = d.getUTCDay() !== now.getUTCDay() ? dayNames[d.getUTCDay()] + " " : ""; + const hh = String(d.getUTCHours()).padStart(2, "0"); + const mm = String(d.getUTCMinutes()).padStart(2, "0"); + return `${day}${hh}:${mm}`; +} + +function formatPredDuration(s) { + if (s >= 60) return `${Math.round(s / 60)} min`; + return `${s}s`; +} + +function formatCountdown(ms) { + const totalSec = Math.max(0, Math.floor(ms / 1000)); + const m = Math.floor(totalSec / 60); + const s = totalSec % 60; + return `${m}:${String(s).padStart(2, "0")}`; +} + +function elevationClass(deg) { + if (deg >= 45) return "sat-pred-el-high"; + if (deg >= 10) return "sat-pred-el-mid"; + return "sat-pred-el-low"; +} + +// ── Predictions: countdown timer management ───────────────────────── +function stopCountdownTimer() { + if (satPredCountdownTimer) { + clearInterval(satPredCountdownTimer); + satPredCountdownTimer = null; + } +} + +function startCountdownTimer(container) { + const countdownEls = container ? container.querySelectorAll(".sat-pred-col-countdown") : []; + if (countdownEls.length === 0) return; + + satPredCountdownTimer = setInterval(() => { + if (satActiveView !== "predictions") { + stopCountdownTimer(); + return; + } + const n = Date.now(); + let anyActive = false; + for (const el of countdownEls) { + const los = parseInt(el.dataset.los, 10); + const rem = los - n; + if (rem > 0) { + el.textContent = formatCountdown(rem); + anyActive = true; + } else { + el.textContent = "0:00"; + } + } + if (!anyActive) { + stopCountdownTimer(); + renderSatPredictions(getFilteredPredictions()); + } + }, 1000); +} + +// ── Predictions: row builders ─────────────────────────────────────── +function buildCurrentPassRow(pass, now) { + const row = document.createElement("div"); + row.className = "sat-pred-row-current"; + const dir = `${azToCardinal(pass.azimuth_aos_deg)} \u2192 ${azToCardinal(pass.azimuth_los_deg)}`; + const remaining = Math.max(0, pass.los_ms - now); + row.innerHTML = [ + `${pass.satellite}`, + `${pass.max_elevation_deg.toFixed(1)}\u00B0`, + `${formatPredTime(pass.aos_ms)}`, + `${formatPredTime(pass.los_ms)}`, + `${formatCountdown(remaining)}`, + `${dir}`, + ].join(""); + return row; +} + +function buildUpcomingPassRow(pass) { + const row = document.createElement("div"); + row.className = "sat-pred-row"; + const dir = `${azToCardinal(pass.azimuth_aos_deg)} \u2192 ${azToCardinal(pass.azimuth_los_deg)}`; + row.innerHTML = [ + `${formatPredTime(pass.aos_ms)}`, + `${pass.satellite}`, + `${pass.max_elevation_deg.toFixed(1)}\u00B0`, + `${formatPredDuration(pass.duration_s)}`, + `${dir}`, + ].join(""); + return row; +} + +// ── Predictions: filter state ─────────────────────────────────────── +function getFilteredPredictions() { + let items = satPredData; + if (satPredCategory !== "all") items = items.filter((p) => p.category === satPredCategory); + if (satPredMinEl > 0) items = items.filter((p) => p.max_elevation_deg >= satPredMinEl); + if (satPredFilterText) items = items.filter((p) => p.satellite.toUpperCase().includes(satPredFilterText)); + return items; +} + +function applyPredFilters() { + renderSatPredictions(getFilteredPredictions()); +} + +satDom.predFilter?.addEventListener("input", () => { + satPredFilterText = satDom.predFilter.value.trim().toUpperCase(); + applyPredFilters(); +}); + +satDom.predMinEl?.addEventListener("change", () => { + satPredMinEl = parseInt(satDom.predMinEl.value, 10) || 0; + applyPredFilters(); +}); + +satDom.predCategory?.addEventListener("change", () => { + satPredCategory = satDom.predCategory.value; + applyPredFilters(); +}); + +// ── Predictions: main render ──────────────────────────────────────── +function renderSatPredictions(passes, error) { + stopCountdownTimer(); + + if (error) { + if (satDom.predCurrentList) satDom.predCurrentList.innerHTML = ""; + if (satDom.predUpcomingList) satDom.predUpcomingList.innerHTML = ""; + if (satDom.predCurrentSec) satDom.predCurrentSec.style.display = "none"; + if (satDom.predUpcomingSec) satDom.predUpcomingSec.style.display = "none"; + if (satDom.predStatus) satDom.predStatus.textContent = error; + return; + } + + if (!Array.isArray(passes) || passes.length === 0) { + if (satDom.predCurrentList) satDom.predCurrentList.innerHTML = ""; + if (satDom.predUpcomingList) satDom.predUpcomingList.innerHTML = ""; + if (satDom.predCurrentSec) satDom.predCurrentSec.style.display = "none"; + if (satDom.predUpcomingSec) satDom.predUpcomingSec.style.display = "none"; + if (satDom.predStatus) satDom.predStatus.textContent = "No passes found in the next 24 hours."; + return; + } + + const now = Date.now(); + const current = passes.filter((p) => p.aos_ms <= now && p.los_ms > now); + const upcoming = passes.filter((p) => p.aos_ms > now); + + // ── Current passes ── + if (satDom.predCurrentSec) satDom.predCurrentSec.style.display = current.length > 0 ? "" : "none"; + if (satDom.predCurrentList) { + if (current.length === 0) { + satDom.predCurrentList.innerHTML = ""; + } else { + const frag = document.createDocumentFragment(); + for (const pass of current) frag.appendChild(buildCurrentPassRow(pass, now)); + satDom.predCurrentList.replaceChildren(frag); + } + } + + // ── Upcoming passes ── + const upcomingLimit = satPredShowAll ? upcoming.length : SAT_PRED_PAGE_SIZE; + const visibleUpcoming = upcoming.slice(0, upcomingLimit); + const hiddenCount = upcoming.length - visibleUpcoming.length; + if (satDom.predUpcomingSec) satDom.predUpcomingSec.style.display = upcoming.length > 0 ? "" : "none"; + if (satDom.predUpcomingList) { + const frag = document.createDocumentFragment(); + for (const pass of visibleUpcoming) frag.appendChild(buildUpcomingPassRow(pass)); + if (hiddenCount > 0) { + const moreRow = document.createElement("div"); + moreRow.className = "sat-pred-row"; + moreRow.style.cursor = "pointer"; + moreRow.style.textAlign = "center"; + moreRow.innerHTML = `Show ${hiddenCount} more passes\u2026`; + moreRow.addEventListener("click", () => { + satPredShowAll = true; + renderSatPredictions(getFilteredPredictions()); + }); + frag.appendChild(moreRow); + } + satDom.predUpcomingList.replaceChildren(frag); + } + + // ── Status ── + if (satDom.predStatus) { + let text = `${current.length} active \u00B7 ${upcoming.length} upcoming \u00B7 times in UTC`; + if (satPredSatCount > 0) text += ` \u00B7 ${satPredSatCount} satellites tracked`; + satDom.predStatus.textContent = text; + } + + // ── Countdown timer ── + if (current.length > 0 && satActiveView === "predictions") { + startCountdownTimer(satDom.predCurrentList); + } +} + +// ── Predictions: data loading ─────────────────────────────────────── +async function loadSatPredictions() { + if (satDom.predStatus) satDom.predStatus.textContent = "Loading predictions\u2026"; + if (satDom.predCurrentList) satDom.predCurrentList.innerHTML = ""; + if (satDom.predUpcomingList) satDom.predUpcomingList.innerHTML = ""; + try { + const resp = await fetch("/sat_passes"); + if (!resp.ok) throw new Error(`HTTP ${resp.status}`); + const data = await resp.json(); + satPredSatCount = data.satellite_count || 0; + if (data.error) { + satPredData = []; + renderSatPredictions([], data.error); + } else { + satPredData = data.passes || []; + renderSatPredictions(getFilteredPredictions()); + } + } catch (e) { + renderSatPredictions([], `Failed to load predictions: ${e.message}`); + } +} + +// ── Navigate to map centered on satellite image bounds ────────────── +window.satShowOnMap = function (south, west, north, east) { + if (typeof window.enableMapSourceFilter === "function") { + window.enableMapSourceFilter("sat"); + } + const lat = (south + north) / 2; + const lon = (west + east) / 2; + if (window.navigateToAprsMap) { + window.navigateToAprsMap(lat, lon); + } +}; + +// ── Initial render ────────────────────────────────────────────────── +renderSatLatestCard(); +renderSatHistoryTable(); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/scheduler.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/scheduler.js new file mode 100644 index 0000000..3d8be0a --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/scheduler.js @@ -0,0 +1,1526 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// Background Decoding Scheduler UI + +(function () { + "use strict"; + + // ------------------------------------------------------------------------- + // State + // ------------------------------------------------------------------------- + let schedulerRole = null; // "control" | "rx" | null + let currentRigId = null; + let currentConfig = null; + let currentSchedulerStatus = null; + let bookmarkList = []; // [{id, name, freq_hz, mode}, ...] + let statusInterval = null; + let interleaveTicker = null; + let schedulerStepPending = false; + let schEntryEditIdx = null; // null = adding, number = editing that index + let schedulerDirty = false; // true when unsaved changes exist + // Satellite entry editing state moved to sat-scheduler.js + + // ------------------------------------------------------------------------- + // Init + // ------------------------------------------------------------------------- + function initScheduler(rigId, role) { + schedulerRole = role; + currentRigId = rigId || null; + if (currentRigId) loadScheduler(); + startStatusPolling(); + startInterleaveTicker(); + } + + function destroyScheduler() { + if (statusInterval) { + clearInterval(statusInterval); + statusInterval = null; + } + if (interleaveTicker) { + clearInterval(interleaveTicker); + interleaveTicker = null; + } + } + + // ------------------------------------------------------------------------- + // Active rig (mirrors top-bar rig picker in app.js) + // ------------------------------------------------------------------------- + function setSchedulerRig(rigId) { + const nextRigId = rigId || null; + if (nextRigId === currentRigId) return; + currentRigId = nextRigId; + renderSchedulerInterleaveStatus(); + if (!currentRigId) return; + loadScheduler(); + pollStatus(); + } + + // ------------------------------------------------------------------------- + // API helpers + // ------------------------------------------------------------------------- + function apiGetScheduler(rigId) { + return fetch("/scheduler/" + encodeURIComponent(rigId)).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + return r.json(); + }); + } + + function apiPutScheduler(rigId, config) { + return fetch("/scheduler/" + encodeURIComponent(rigId), { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(config), + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + return r.json(); + }); + } + + function apiDeleteScheduler(rigId) { + return fetch("/scheduler/" + encodeURIComponent(rigId), { + method: "DELETE", + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + return r.json(); + }); + } + + function apiGetStatus(rigId) { + return fetch("/scheduler/" + encodeURIComponent(rigId) + "/status").then( + function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + return r.json(); + } + ); + } + + function apiActivateSchedulerEntry(rigId, entryId) { + return fetch("/scheduler/" + encodeURIComponent(rigId) + "/activate", { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ entry_id: entryId }), + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + return r.json(); + }); + } + + function apiGetBookmarks() { + // Fetch merged general + rig-specific bookmarks in a single request. + var url = currentRigId + ? "/bookmarks?scope=" + encodeURIComponent(currentRigId) + : "/bookmarks"; + return fetch(url).then(function (r) { return r.ok ? r.json() : []; }); + } + + // ------------------------------------------------------------------------- + // Load config + bookmarks + // ------------------------------------------------------------------------- + function loadScheduler() { + const rig = currentRigId; + if (!rig) return; + + Promise.all([apiGetScheduler(rig), apiGetBookmarks()]) + .then(function ([config, bms]) { + currentConfig = config; + bookmarkList = Array.isArray(bms) ? bms : []; + populateTsBookmarkSelect(); + renderScheduler(); + clearSchedulerDirty(); + renderSchedulerInterleaveStatus(); + }) + .catch(function (e) { + console.error("scheduler load failed", e); + renderSchedulerInterleaveStatus(); + }); + } + + // ------------------------------------------------------------------------- + // Status polling + // ------------------------------------------------------------------------- + function startStatusPolling() { + if (statusInterval) clearInterval(statusInterval); + statusInterval = setInterval(pollStatus, 15000); + pollStatus(); + } + + function startInterleaveTicker() { + if (interleaveTicker) clearInterval(interleaveTicker); + interleaveTicker = setInterval(renderSchedulerInterleaveStatus, 1000); + renderSchedulerInterleaveStatus(); + } + + function schedulerUtcSeconds() { + return Math.floor(Date.now() / 1000); + } + + function schedulerUtcMinuteInfo() { + const secs = schedulerUtcSeconds(); + const secsIntoDay = ((secs % 86400) + 86400) % 86400; + return { + minuteOfDay: Math.floor(secsIntoDay / 60), + secondOfMinute: secsIntoDay % 60, + }; + } + + function schedulerEntryIsActive(entry, nowMin) { + const start = Number(entry && entry.start_min); + const end = Number(entry && entry.end_min); + if (!Number.isFinite(start) || !Number.isFinite(end)) return false; + if (start === end) return true; + if (start < end) return nowMin >= start && nowMin < end; + return nowMin >= start || nowMin < end; + } + + function schedulerEntryCurrentWindowStart(entry, nowMin) { + const start = Number(entry && entry.start_min); + const end = Number(entry && entry.end_min); + if (!Number.isFinite(start) || !Number.isFinite(end)) return Number.NEGATIVE_INFINITY; + if (start === end) return 0; + if (start < end) return start; + return nowMin >= start ? start : (start - 1440); + } + + function schedulerEntryDisplayName(entry) { + if (!entry) return "Scheduler entry"; + if (entry.label) return String(entry.label); + const bookmarkName = bmName(entry.bookmark_id); + return bookmarkName || "Scheduler entry"; + } + + function schedulerInterleaveState(config) { + if (!config || config.mode !== "time_span") { + return { activeEntries: [], currentIndex: -1, remainingSec: 0, cycleMin: 0 }; + } + const entries = Array.isArray(config.entries) ? config.entries : []; + const minuteInfo = schedulerUtcMinuteInfo(); + const nowMin = minuteInfo.minuteOfDay; + const active = entries.filter(function (entry) { + return schedulerEntryIsActive(entry, nowMin); + }); + if (active.length === 0) { + return { activeEntries: [], currentIndex: -1, remainingSec: 0, cycleMin: 0 }; + } + if (active.length === 1) { + return { activeEntries: active, currentIndex: 0, remainingSec: 0, cycleMin: 0 }; + } + // Exclusive entry wins outright — no interleaving. + var exclIdx = active.findIndex(function (e) { return e.exclusive; }); + if (exclIdx >= 0) { + return { activeEntries: [active[exclIdx]], currentIndex: 0, remainingSec: 0, cycleMin: 0 }; + } + const defaultInterleave = Number(config.interleave_min); + const durations = active.map(function (entry) { + const own = Number(entry && entry.interleave_min); + if (Number.isFinite(own) && own > 0) return Math.floor(own); + if (Number.isFinite(defaultInterleave) && defaultInterleave > 0) return Math.floor(defaultInterleave); + return 0; + }); + const cycleMin = durations.reduce(function (sum, value) { return sum + value; }, 0); + if (!(cycleMin > 0)) { + return { activeEntries: active, currentIndex: 0, remainingSec: 0, cycleMin: 0 }; + } + const statusEntryId = currentSchedulerStatus && currentSchedulerStatus.last_entry_id + ? String(currentSchedulerStatus.last_entry_id) + : ""; + const statusIndex = statusEntryId + ? active.findIndex(function (entry) { return String(entry && entry.id || "") === statusEntryId; }) + : -1; + const statusAppliedUtc = currentSchedulerStatus && Number.isFinite(Number(currentSchedulerStatus.last_applied_utc)) + ? Number(currentSchedulerStatus.last_applied_utc) + : null; + if (statusIndex >= 0 && statusAppliedUtc != null) { + const manualDurationMin = durations[statusIndex]; + const elapsedSec = Math.max(0, schedulerUtcSeconds() - statusAppliedUtc); + const remainingSec = (manualDurationMin > 0) + ? Math.max(1, (manualDurationMin * 60) - elapsedSec) + : 0; + if (remainingSec > 0) { + return { + activeEntries: active, + currentIndex: statusIndex, + remainingSec: remainingSec, + cycleMin: cycleMin, + }; + } + } + const overlapStart = active.reduce(function (maxStart, entry) { + return Math.max(maxStart, schedulerEntryCurrentWindowStart(entry, nowMin)); + }, Number.NEGATIVE_INFINITY); + if (!Number.isFinite(overlapStart)) { + return { activeEntries: active, currentIndex: 0, remainingSec: 0, cycleMin: 0 }; + } + const nowMinPrecise = minuteInfo.minuteOfDay + (minuteInfo.secondOfMinute / 60); + const posMin = ((nowMinPrecise - overlapStart) % cycleMin + cycleMin) % cycleMin; + let cumulative = 0; + let slotStart = 0; + let currentIndex = 0; + let currentDuration = 0; + for (let i = 0; i < durations.length; i += 1) { + const nextCumulative = cumulative + durations[i]; + if (posMin < nextCumulative) { + slotStart = cumulative; + cumulative = nextCumulative; + currentIndex = i; + currentDuration = durations[i]; + break; + } + cumulative = nextCumulative; + } + if (!(currentDuration > 0)) { + return { activeEntries: active, currentIndex: 0, remainingSec: 0, cycleMin: 0 }; + } + const elapsedSlotSec = Math.max(0, Math.floor((posMin - slotStart) * 60)); + const remainingSec = Math.max(1, (currentDuration * 60) - elapsedSlotSec); + return { + activeEntries: active, + currentIndex: currentIndex, + remainingSec: remainingSec, + cycleMin: cycleMin, + }; + } + + function renderSchedulerInterleaveStatus() { + const wrap = document.getElementById("scheduler-cycle-status"); + if (!wrap) return; + + const state = schedulerInterleaveState(currentConfig); + const isActive = state.activeEntries.length > 1 && state.cycleMin > 0; + + wrap.style.display = isActive ? "" : "none"; + + if (isActive) { + var activeName = schedulerEntryDisplayName(state.activeEntries[state.currentIndex]); + var totalSlotSec = state.cycleMin > 0 + ? (state.cycleMin * 60) / state.activeEntries.length + : 0; + var elapsedPct = totalSlotSec > 0 + ? Math.min(100, Math.max(0, ((totalSlotSec - state.remainingSec) / totalSlotSec) * 100)) + : 0; + + var ringFill = document.getElementById("interleave-ring-fill"); + if (ringFill) ringFill.setAttribute("stroke-dashoffset", String(100 - elapsedPct)); + + var nameEl = document.getElementById("interleave-active-name"); + if (nameEl) nameEl.textContent = activeName; + + var countdownEl = document.getElementById("interleave-countdown"); + if (countdownEl) countdownEl.textContent = "next in " + state.remainingSec + "s · " + state.cycleMin + "m cycle"; + } + + // Also update the timeline needle if visible + renderTimelineNeedle(); + renderSchedulerStepControls(); + } + + function renderSchedulerStepControls() { + const prevBtn = document.getElementById("scheduler-prev-btn"); + const nextBtn = document.getElementById("scheduler-next-btn"); + if (!prevBtn || !nextBtn) return; + const state = schedulerInterleaveState(currentConfig); + const enabled = + schedulerRole === "control" && + !!currentRigId && + !schedulerStepPending && + state.activeEntries.length > 1; + prevBtn.disabled = !enabled; + nextBtn.disabled = !enabled; + const hint = enabled + ? "Select a different active scheduler entry" + : "Available only when multiple scheduler entries are active"; + prevBtn.title = hint; + nextBtn.title = hint; + } + + function pollStatus() { + const rig = currentRigId; + if (!rig) return; + apiGetStatus(rig) + .then(function (st) { + currentSchedulerStatus = st || null; + renderStatus(st); + renderSchedulerInterleaveStatus(); + renderActivityLog(); + renderSatPassStatus(); + }) + .catch(function () {}); + } + + function renderStatus(st) { + const el = document.getElementById("scheduler-status-card"); + if (!el) return; + if (!st || (!st.active && !st.last_bookmark_id)) { + el.textContent = "No activity yet."; + return; + } + const statusEntryId = st.last_entry_id ? String(st.last_entry_id) : ""; + const entry = statusEntryId && currentConfig && Array.isArray(currentConfig.entries) + ? currentConfig.entries.find(function (item) { return String(item && item.id || "") === statusEntryId; }) + : null; + const name = entry + ? schedulerEntryDisplayName(entry) + : (st.last_bookmark_name || st.last_bookmark_id || "—"); + let ts = ""; + if (st.last_applied_utc) { + const d = new Date(st.last_applied_utc * 1000); + ts = " at " + d.toUTCString(); + } + const satLabel = st.active_satellite + ? " [SAT: " + st.active_satellite + "]" + : ""; + var details = ""; + if (st.freq_hz) { + details += formatFreq(st.freq_hz); + if (st.mode) details += " \u00B7 " + st.mode; + if (st.active_decoders && st.active_decoders.length > 0) { + details += " \u00B7 " + st.active_decoders.join(", ") + " active"; + } + } + if (details) { + el.innerHTML = "Last applied: " + escHtml(name) + satLabel + ts + + '
    ' + escHtml(details) + ''; + } else { + el.textContent = "Last applied: " + name + satLabel + ts; + } + } + + // ------------------------------------------------------------------------- + // Activity log + // ------------------------------------------------------------------------- + function apiGetSchedulerLog(rigId) { + return fetch("/scheduler/" + encodeURIComponent(rigId) + "/log").then(function (r) { + return r.ok ? r.json() : []; + }); + } + + function renderActivityLog() { + var wrap = document.getElementById("scheduler-activity-log-wrap"); + var container = document.getElementById("scheduler-activity-log"); + if (!wrap || !container || !currentRigId) return; + + apiGetSchedulerLog(currentRigId).then(function (entries) { + if (!entries || entries.length === 0) { + wrap.style.display = "none"; + return; + } + wrap.style.display = ""; + var html = entries.slice().reverse().map(function (e) { + var d = new Date(e.utc * 1000); + var ts = d.toUTCString(); + var action = e.action || "unknown"; + var label = e.entry_label || ""; + var bm = e.bookmark_name || ""; + return '
    ' + + '' + escHtml(ts) + ' ' + + '' + escHtml(action) + ' ' + + (bm ? '' + escHtml(bm) + '' : '') + + (label ? ' (' + escHtml(label) + ')' : '') + + '
    '; + }).join(""); + container.innerHTML = html; + }).catch(function () {}); + } + + // ------------------------------------------------------------------------- + // Render the full scheduler panel + // ------------------------------------------------------------------------- + function renderScheduler() { + const panel = document.getElementById("scheduler-panel"); + if (!panel) return; + + const mode = (currentConfig && currentConfig.mode) || "disabled"; + const isControl = schedulerRole === "control"; + + // Mode selector + setSelected("scheduler-mode-select", mode); + + // Show/hide main-view scheduler controls (visible when base mode active OR satellites enabled) + const satEnabled = currentConfig && currentConfig.satellites && currentConfig.satellites.enabled; + const controlRow = document.querySelector(".scheduler-control-row"); + if (controlRow) controlRow.style.display = (mode !== "disabled" || satEnabled) ? "" : "none"; + + // Show/hide sections + const glSection = document.getElementById("scheduler-grayline-section"); + const tsSection = document.getElementById("scheduler-timespan-section"); + if (glSection) glSection.style.display = mode === "grayline" ? "" : "none"; + if (tsSection) tsSection.style.display = mode === "time_span" ? "" : "none"; + + // Satellite overlay (always visible — independent of mode) + renderSatelliteSection(); + + // Grayline inputs + if (mode === "grayline" && currentConfig && currentConfig.grayline) { + const gl = currentConfig.grayline; + // Prefer saved value; fall back to server coordinates from app.js globals. + const lat = gl.lat != null ? gl.lat : (typeof serverLat !== "undefined" ? serverLat : ""); + const lon = gl.lon != null ? gl.lon : (typeof serverLon !== "undefined" ? serverLon : ""); + setInputValue("scheduler-gl-lat", lat != null ? lat : ""); + setInputValue("scheduler-gl-lon", lon != null ? lon : ""); + var gridEl = document.getElementById("scheduler-gl-grid"); + if (gridEl && lat !== "" && lon !== "") { + gridEl.value = latLonToGrid(lat, lon); + } + setInputValue("scheduler-gl-window", gl.transition_window_min != null ? gl.transition_window_min : 20); + renderBookmarkSelect("scheduler-gl-dawn", gl.dawn_bookmark_id); + renderBookmarkSelect("scheduler-gl-day", gl.day_bookmark_id); + renderBookmarkSelect("scheduler-gl-dusk", gl.dusk_bookmark_id); + renderBookmarkSelect("scheduler-gl-night", gl.night_bookmark_id); + } else if (mode === "grayline") { + // No saved grayline config yet — pre-fill coords from server if available. + const lat = typeof serverLat !== "undefined" ? serverLat : ""; + const lon = typeof serverLon !== "undefined" ? serverLon : ""; + setInputValue("scheduler-gl-lat", lat != null ? lat : ""); + setInputValue("scheduler-gl-lon", lon != null ? lon : ""); + var gridEl2 = document.getElementById("scheduler-gl-grid"); + if (gridEl2 && lat !== "" && lon !== "") { + gridEl2.value = latLonToGrid(lat, lon); + } + setInputValue("scheduler-gl-window", 20); + renderBookmarkSelect("scheduler-gl-dawn", null); + renderBookmarkSelect("scheduler-gl-day", null); + renderBookmarkSelect("scheduler-gl-dusk", null); + renderBookmarkSelect("scheduler-gl-night", null); + } else { + renderBookmarkSelect("scheduler-gl-dawn", null); + renderBookmarkSelect("scheduler-gl-day", null); + renderBookmarkSelect("scheduler-gl-dusk", null); + renderBookmarkSelect("scheduler-gl-night", null); + } + + // Interleave input + const ilEl = document.getElementById("scheduler-ts-interleave"); + if (ilEl) { + const il = currentConfig && currentConfig.interleave_min; + ilEl.value = il ? il : ""; + } + + // TimeSpan entries + renderTimespanEntries(); + + // Enable/disable controls + const formEls = panel.querySelectorAll("input, select, button.sch-write"); + formEls.forEach(function (el) { + el.disabled = !isControl; + }); + const saveBtn = document.getElementById("scheduler-save-btn"); + if (saveBtn) { + saveBtn.style.display = isControl ? "" : "none"; + } + const resetBtn = document.getElementById("scheduler-reset-btn"); + if (resetBtn) { + resetBtn.style.display = isControl ? "" : "none"; + } + } + + function setSelected(id, value) { + const el = document.getElementById(id); + if (el) el.value = value; + } + + function setInputValue(id, value) { + const el = document.getElementById(id); + if (el) el.value = value; + } + + function renderBookmarkSelect(id, selectedId) { + const sel = document.getElementById(id); + if (!sel) return; + sel.innerHTML = ''; + bookmarkList.forEach(function (bm) { + const opt = document.createElement("option"); + opt.value = bm.id; + opt.textContent = bm.name + " (" + formatFreq(bm.freq_hz) + " " + bm.mode + ")"; + if (bm.id === selectedId) opt.selected = true; + sel.appendChild(opt); + }); + } + + function formatFreq(hz) { + if (hz >= 1e6) return (hz / 1e6).toFixed(3) + " MHz"; + if (hz >= 1e3) return (hz / 1e3).toFixed(1) + " kHz"; + return hz + " Hz"; + } + + // ------------------------------------------------------------------------- + // Entry form (inline card below Add Entry button) + // ------------------------------------------------------------------------- + function schOpenEntryForm(entry, idx) { + schEntryEditIdx = (idx != null) ? idx : null; + + const titleEl = document.getElementById("sch-entry-form-title"); + if (titleEl) titleEl.textContent = entry ? "Edit Entry" : "Add Entry"; + + const startEl = document.getElementById("scheduler-ts-start"); + const endEl = document.getElementById("scheduler-ts-end"); + const bmEl = document.getElementById("scheduler-ts-bookmark"); + const labelEl = document.getElementById("scheduler-ts-label"); + const ilEl = document.getElementById("scheduler-ts-entry-interleave"); + const centerHzEl = document.getElementById("scheduler-ts-center-hz"); + + if (startEl) startEl.value = entry ? minToHHMM(entry.start_min) : ""; + if (endEl) endEl.value = entry ? minToHHMM(entry.end_min) : ""; + if (bmEl) bmEl.value = entry ? (entry.bookmark_id || "") : ""; + if (labelEl) labelEl.value = entry ? (entry.label || "") : ""; + if (ilEl) ilEl.value = entry && entry.interleave_min ? entry.interleave_min : ""; + if (centerHzEl) centerHzEl.value = entry && entry.center_hz ? entry.center_hz : ""; + + const recordEl = document.getElementById("scheduler-ts-entry-record"); + if (recordEl) recordEl.checked = !!(entry && entry.record); + + pendingExtraBmIds = entry && Array.isArray(entry.bookmark_ids) ? entry.bookmark_ids.slice() : []; + renderExtraBmList(); + + const wrap = document.getElementById("sch-entry-form-wrap"); + if (wrap) { + wrap.style.display = "block"; + if (startEl) startEl.focus(); + } + } + + function schCloseEntryForm() { + const wrap = document.getElementById("sch-entry-form-wrap"); + if (wrap) wrap.style.display = "none"; + schEntryEditIdx = null; + pendingExtraBmIds = []; + } + + function schEntryFormSubmit(e) { + e.preventDefault(); + + const startEl = document.getElementById("scheduler-ts-start"); + const endEl = document.getElementById("scheduler-ts-end"); + const bmEl = document.getElementById("scheduler-ts-bookmark"); + const labelEl = document.getElementById("scheduler-ts-label"); + const ilEl = document.getElementById("scheduler-ts-entry-interleave"); + const centerHzEl = document.getElementById("scheduler-ts-center-hz"); + if (!startEl || !endEl || !bmEl) return; + + const bmId = bmEl.value; + if (!bmId) { + alert("Please select a primary bookmark."); + return; + } + + const startMin = hhmmToMin(startEl.value); + const endMin = hhmmToMin(endEl.value); + const label = labelEl ? labelEl.value.trim() : ""; + const ilVal = ilEl ? parseInt(ilEl.value, 10) : NaN; + const entryInterleave = !isNaN(ilVal) && ilVal > 0 ? ilVal : null; + const centerHzRaw = centerHzEl ? parseInt(centerHzEl.value, 10) : NaN; + const centerHz = !isNaN(centerHzRaw) && centerHzRaw > 0 ? centerHzRaw : null; + const extraBmIds = pendingExtraBmIds.slice(); + + if (!currentConfig) { + currentConfig = { remote: currentRigId, mode: "time_span", entries: [] }; + } + if (!currentConfig.entries) currentConfig.entries = []; + + const recordCb = document.getElementById("scheduler-ts-entry-record"); + const entryRecord = recordCb ? recordCb.checked : false; + + const entryData = { + start_min: startMin, + end_min: endMin, + bookmark_id: bmId, + label: label || null, + interleave_min: entryInterleave, + center_hz: centerHz, + bookmark_ids: extraBmIds, + record: entryRecord, + }; + + if (schEntryEditIdx !== null) { + const existing = currentConfig.entries[schEntryEditIdx]; + entryData.id = existing ? existing.id : ("ts_" + Date.now().toString(36)); + currentConfig.entries[schEntryEditIdx] = entryData; + } else { + entryData.id = "ts_" + Date.now().toString(36); + currentConfig.entries.push(entryData); + } + + schCloseEntryForm(); + renderTimespanEntries(); + markSchedulerDirty(); + } + + // ------------------------------------------------------------------------- + // 24h Timeline Bar + // ------------------------------------------------------------------------- + var TIMELINE_COLORS = ["#38bdf8", "#f59e0b", "#a78bfa", "#34d399", "#fb7185", "#60a5fa"]; + + function renderTimeline() { + var container = document.getElementById("scheduler-ts-timeline"); + if (!container) return; + var entries = currentConfig && Array.isArray(currentConfig.entries) ? currentConfig.entries : []; + if (entries.length === 0) { + container.innerHTML = ""; + return; + } + + var W = 1000; + var H = 80; + var BAR_Y = 6; + var BAR_H = 30; + var TICK_Y = BAR_Y + BAR_H + 2; + + var svg = ''; + + // Background bar + svg += ''; + + // Entry segments + entries.forEach(function (entry, idx) { + var start = Number(entry.start_min); + var end = Number(entry.end_min); + if (!Number.isFinite(start) || !Number.isFinite(end)) return; + var color = TIMELINE_COLORS[idx % TIMELINE_COLORS.length]; + + if (start === end) { + // All-day entry + svg += ''; + } else if (start < end) { + var x = (start / 1440) * W; + var w = ((end - start) / 1440) * W; + svg += ''; + } else { + // Wrap-around: two segments + var x1 = (start / 1440) * W; + var w1 = W - x1; + svg += ''; + var w2 = (end / 1440) * W; + svg += ''; + } + }); + + // Interleave stripes for overlapping entries + var interleaveMin = currentConfig && currentConfig.interleave_min ? Number(currentConfig.interleave_min) : 0; + if (interleaveMin > 0 && entries.length > 1) { + // Find overlap regions where 2+ entries are active + for (var m = 0; m < 1440; m += interleaveMin) { + var overlapping = []; + entries.forEach(function (entry, idx) { + if (schedulerEntryIsActive(entry, m)) { + overlapping.push(idx); + } + }); + if (overlapping.length > 1) { + var stripeX = (m / 1440) * W; + var stripeW = Math.max(1, (interleaveMin / 1440) * W); + // Determine which entry "owns" this stripe via cycle position + var cyclePos = m % (interleaveMin * overlapping.length); + var ownerSlot = Math.floor(cyclePos / interleaveMin); + var ownerIdx = overlapping[ownerSlot % overlapping.length]; + var stripeColor = TIMELINE_COLORS[ownerIdx % TIMELINE_COLORS.length]; + svg += ''; + } + } + } + + // Tick marks every 3 hours + for (var h = 0; h <= 24; h += 3) { + var tx = (h / 24) * W; + svg += ''; + if (h < 24) { + svg += '' + String(h).padStart(2, "0") + ''; + } + } + + // Local time ticks + var LOCAL_TICK_Y = TICK_Y + 18; + for (var h = 0; h < 24; h += 3) { + var localMin = h * 60; + var utcOffset = new Date().getTimezoneOffset(); // offset in minutes (negative for east of UTC) + var utcMin = (localMin + utcOffset + 1440) % 1440; + var tx = (utcMin / 1440) * W; + svg += '' + String(h).padStart(2, "0") + 'L'; + } + + // Current time needle + svg += '' + timelineNeedleSvg() + ''; + + svg += ''; + container.innerHTML = svg; + + // Wire click events on segments + container.querySelectorAll(".sch-timeline-seg").forEach(function (seg) { + seg.addEventListener("click", function () { + var i = parseInt(seg.getAttribute("data-idx"), 10); + var entry = currentConfig && currentConfig.entries ? currentConfig.entries[i] : null; + if (entry) schOpenEntryForm(entry, i); + }); + }); + + // Click-to-add on empty timeline region + var svgEl = container.querySelector('svg'); + if (svgEl) { + svgEl.addEventListener('click', function (e) { + // Only trigger if clicking on the background bar, not on a segment + if (e.target.classList.contains('sch-timeline-seg')) return; + var rect = svgEl.getBoundingClientRect(); + var xPct = (e.clientX - rect.left) / rect.width; + var clickMin = Math.floor(xPct * 1440); + var startHour = Math.floor(clickMin / 60); + var startMin = startHour * 60; + var endMin = ((startHour + 1) % 24) * 60; + + // Pre-fill the entry form with the clicked hour + schOpenEntryForm(null, null); + var startEl = document.getElementById('scheduler-ts-start'); + var endEl = document.getElementById('scheduler-ts-end'); + if (startEl) startEl.value = minToHHMM(startMin); + if (endEl) endEl.value = minToHHMM(endMin); + }); + svgEl.style.cursor = 'crosshair'; + } + } + + function timelineNeedleSvg() { + var info = schedulerUtcMinuteInfo(); + var nowMin = info.minuteOfDay + (info.secondOfMinute / 60); + var x = (nowMin / 1440) * 1000; + return '' + + ''; + } + + function renderTimelineNeedle() { + var g = document.getElementById("sch-timeline-needle-g"); + if (g) g.innerHTML = timelineNeedleSvg(); + } + + // ------------------------------------------------------------------------- + // Inline row editing + // ------------------------------------------------------------------------- + function schInlineEdit(tr, entry, idx) { + var bmOptions = bookmarkList.map(function (bm) { + var sel = bm.id === entry.bookmark_id ? ' selected' : ''; + return ''; + }).join(''); + + var extraBmOptions = '' + bookmarkList.map(function (bm) { + return ''; + }).join(''); + + var inlineExtraIds = Array.isArray(entry.bookmark_ids) ? entry.bookmark_ids.slice() : []; + + tr.innerHTML = + '\u2807' + + '' + + '' + + '' + (entry.center_hz ? formatFreq(entry.center_hz) : '\u2014') + '' + + '' + + '
    ' + + '
    ' + + '' + + '' + + '
    ' + + '' + + '' + + '' + + '' + + ''; + + tr.classList.add('sch-inline-editing'); + + var chipsContainer = tr.querySelector('.sch-inline-extra-chips'); + var extraPick = tr.querySelector('.sch-inline-extra-pick'); + var extraAddBtn = tr.querySelector('.sch-inline-extra-add'); + + function renderInlineExtraChips() { + chipsContainer.innerHTML = ''; + inlineExtraIds.forEach(function (id, i) { + var chip = document.createElement('span'); + chip.className = 'sch-extra-bm-chip'; + var rmBtn = document.createElement('span'); + rmBtn.className = 'sch-extra-bm-chip-rm'; + rmBtn.textContent = '\u00D7'; + rmBtn.title = 'Remove'; + rmBtn.addEventListener('click', function () { + inlineExtraIds.splice(i, 1); + renderInlineExtraChips(); + }); + chip.appendChild(rmBtn); + chip.appendChild(document.createTextNode(' ' + bmName(id))); + chipsContainer.appendChild(chip); + }); + Array.from(extraPick.options).forEach(function (opt) { + if (opt.value) opt.disabled = inlineExtraIds.includes(opt.value); + }); + } + renderInlineExtraChips(); + + extraAddBtn.addEventListener('click', function () { + if (!extraPick.value) return; + if (!inlineExtraIds.includes(extraPick.value)) { + inlineExtraIds.push(extraPick.value); + renderInlineExtraChips(); + } + extraPick.value = ''; + }); + + // Wire exclusive checkbox to disable interleave input. + var exclEl = tr.querySelector('[data-field="exclusive"]'); + var ilInput = tr.querySelector('[data-field="interleave"]'); + if (exclEl && ilInput) { + exclEl.addEventListener('change', function () { + ilInput.disabled = exclEl.checked; + if (exclEl.checked) ilInput.value = ''; + }); + } + + tr.querySelector('.sch-inline-save').addEventListener('click', function () { + var startEl = tr.querySelector('[data-field="start"]'); + var endEl = tr.querySelector('[data-field="end"]'); + var bmEl = tr.querySelector('[data-field="bookmark"]'); + var labelEl = tr.querySelector('[data-field="label"]'); + var ilEl = tr.querySelector('[data-field="interleave"]'); + var recEl = tr.querySelector('[data-field="record"]'); + var exEl = tr.querySelector('[data-field="exclusive"]'); + + if (bmEl && !bmEl.value) { alert('Please select a bookmark.'); return; } + + entry.start_min = hhmmToMin(startEl.value); + entry.end_min = hhmmToMin(endEl.value); + entry.bookmark_id = bmEl.value; + entry.label = labelEl.value.trim() || null; + entry.exclusive = exEl ? exEl.checked : false; + var ilVal = parseInt(ilEl.value, 10); + entry.interleave_min = entry.exclusive ? null : ((!isNaN(ilVal) && ilVal > 0) ? ilVal : null); + entry.bookmark_ids = inlineExtraIds.slice(); + entry.record = recEl.checked; + + currentConfig.entries[idx] = entry; + renderTimespanEntries(); + markSchedulerDirty(); + }); + + tr.querySelector('.sch-inline-cancel').addEventListener('click', function () { + renderTimespanEntries(); + }); + } + + // ------------------------------------------------------------------------- + // TimeSpan entries table + // ------------------------------------------------------------------------- + function renderTimespanEntries() { + const tbody = document.getElementById("scheduler-ts-tbody"); + if (!tbody) return; + tbody.innerHTML = ""; + const entries = + currentConfig && Array.isArray(currentConfig.entries) + ? currentConfig.entries + : []; + entries.forEach(function (entry, idx) { + const tr = document.createElement("tr"); + if (currentSchedulerStatus && currentSchedulerStatus.last_entry_id && + entry.id && String(entry.id) === String(currentSchedulerStatus.last_entry_id)) { + tr.classList.add("sch-active"); + } + const il = entry.exclusive ? "Exclusive" : entry.interleave_min ? String(entry.interleave_min) + " min" : "—"; + const allDay = entry.start_min === entry.end_min; + const centerCell = entry.center_hz ? formatFreq(entry.center_hz) : "—"; + const extraIds = Array.isArray(entry.bookmark_ids) ? entry.bookmark_ids : []; + const extraCell = extraIds.length + ? extraIds.map(function (id) { return escHtml(bmName(id)); }).join(", ") + : "—"; + tr.innerHTML = + '\u2807' + + '' + (allDay ? "All day" : minToHHMM(entry.start_min) + ' (' + minToLocal(entry.start_min) + ')') + '' + + '' + (allDay ? "\u2014" : minToHHMM(entry.end_min) + ' (' + minToLocal(entry.end_min) + ')') + '' + + '' + centerCell + '' + + '' + escHtml(bmName(entry.bookmark_id)) + '' + + '' + extraCell + '' + + '' + escHtml(entry.label || "") + '' + + '' + il + '' + + '' + (entry.record ? 'Yes' : '') + '' + + '' + + '' + + '' + + ''; + tbody.appendChild(tr); + }); + tbody.querySelectorAll(".sch-edit-btn").forEach(function (btn) { + btn.addEventListener("click", function () { + const i = parseInt(btn.dataset.idx, 10); + const entry = currentConfig && currentConfig.entries ? currentConfig.entries[i] : null; + if (entry) schInlineEdit(btn.closest('tr'), entry, i); + }); + }); + tbody.querySelectorAll(".sch-remove-btn").forEach(function (btn) { + btn.addEventListener("click", function () { + removeEntry(parseInt(btn.dataset.idx, 10)); + }); + }); + + // Drag-to-reorder + (function () { + var handles = tbody.querySelectorAll('.sch-drag-handle'); + var dragIdx = null; + + handles.forEach(function (handle, idx) { + var row = handle.parentElement; + + handle.addEventListener('dragstart', function (e) { + dragIdx = idx; + row.classList.add('sch-dragging'); + e.dataTransfer.effectAllowed = 'move'; + e.dataTransfer.setData('text/plain', String(idx)); + }); + + row.addEventListener('dragover', function (e) { + e.preventDefault(); + e.dataTransfer.dropEffect = 'move'; + row.classList.add('sch-drag-over'); + }); + + row.addEventListener('dragleave', function () { + row.classList.remove('sch-drag-over'); + }); + + row.addEventListener('drop', function (e) { + e.preventDefault(); + row.classList.remove('sch-drag-over'); + if (dragIdx === null || dragIdx === idx) return; + var entries = currentConfig.entries; + var moved = entries.splice(dragIdx, 1)[0]; + entries.splice(idx, 0, moved); + renderTimespanEntries(); + markSchedulerDirty(); + }); + + handle.addEventListener('dragend', function () { + row.classList.remove('sch-dragging'); + dragIdx = null; + }); + }); + })(); + + renderTimeline(); + } + + function bmName(id) { + const bm = bookmarkList.find(function (b) { return b.id === id; }); + return bm ? bm.name : String(id || ""); + } + + function minToLocal(min) { + // Convert UTC minutes-since-midnight to local time string + var now = new Date(); + var utcMidnight = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate())); + var utcMs = utcMidnight.getTime() + min * 60000; + var local = new Date(utcMs); + return String(local.getHours()).padStart(2, "0") + ":" + String(local.getMinutes()).padStart(2, "0"); + } + + function minToHHMM(min) { + const h = Math.floor(min / 60) % 24; + const m = min % 60; + return String(h).padStart(2, "0") + ":" + String(m).padStart(2, "0"); + } + + function hhmmToMin(str) { + const parts = str.split(":"); + return parseInt(parts[0] || "0", 10) * 60 + parseInt(parts[1] || "0", 10); + } + + function gridToLatLon(grid) { + grid = String(grid).toUpperCase().trim(); + if (grid.length < 4) return null; + var lonField = grid.charCodeAt(0) - 65; + var latField = grid.charCodeAt(1) - 65; + var lonSquare = parseInt(grid.charAt(2), 10); + var latSquare = parseInt(grid.charAt(3), 10); + if (isNaN(lonSquare) || isNaN(latSquare) || lonField < 0 || lonField > 17 || latField < 0 || latField > 17) return null; + var lon = lonField * 20 + lonSquare * 2 - 180; + var lat = latField * 10 + latSquare * 1 - 90; + if (grid.length >= 6) { + var lonSub = grid.charCodeAt(4) - 65; + var latSub = grid.charCodeAt(5) - 65; + if (lonSub >= 0 && lonSub < 24 && latSub >= 0 && latSub < 24) { + lon += lonSub * (2 / 24) + (1 / 24); + lat += latSub * (1 / 24) + (0.5 / 24); + } + } else { + lon += 1; // center of square + lat += 0.5; + } + return { lat: lat, lon: lon }; + } + + function latLonToGrid(lat, lon) { + lon = parseFloat(lon) + 180; + lat = parseFloat(lat) + 90; + if (isNaN(lon) || isNaN(lat)) return ""; + var lonField = String.fromCharCode(65 + Math.floor(lon / 20)); + var latField = String.fromCharCode(65 + Math.floor(lat / 10)); + var lonSquare = Math.floor((lon % 20) / 2); + var latSquare = Math.floor(lat % 10); + var lonSub = String.fromCharCode(97 + Math.floor(((lon % 2) / 2) * 24)); + var latSub = String.fromCharCode(97 + Math.floor((lat % 1) * 24)); + return lonField + latField + lonSquare + latSquare + lonSub + latSub; + } + + function escHtml(s) { + return String(s) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); + } + + function schedulerSelectRelativeEntry(delta) { + const state = schedulerInterleaveState(currentConfig); + if (!currentRigId || schedulerStepPending || state.activeEntries.length <= 1) return; + const count = state.activeEntries.length; + const currentIndex = state.currentIndex >= 0 ? state.currentIndex : 0; + const targetIndex = (currentIndex + delta + count) % count; + const target = state.activeEntries[targetIndex]; + if (!target || !target.id) return; + + schedulerStepPending = true; + renderSchedulerStepControls(); + + Promise.resolve(typeof vchanTakeSchedulerControl === "function" ? vchanTakeSchedulerControl() : null) + .then(function () { + return apiActivateSchedulerEntry(currentRigId, target.id); + }) + .then(function (status) { + currentSchedulerStatus = status || null; + return Promise.resolve( + typeof vchanToggleSchedulerRelease === "function" + ? vchanToggleSchedulerRelease() + : null + ).then(function () { + renderStatus(status); + renderSchedulerInterleaveStatus(); + showSchedulerToast("Selected " + schedulerEntryDisplayName(target) + "."); + pollStatus(); + }); + }) + .catch(function (e) { + console.error("scheduler entry selection failed", e); + showSchedulerToast("Scheduler entry selection failed: " + e.message, true); + }) + .finally(function () { + schedulerStepPending = false; + renderSchedulerStepControls(); + }); + } + + function removeEntry(idx) { + if (!currentConfig || !currentConfig.entries) return; + currentConfig.entries.splice(idx, 1); + renderTimespanEntries(); + markSchedulerDirty(); + } + + // ------------------------------------------------------------------------- + // Bookmark existence check + // ------------------------------------------------------------------------- + function bookmarkExists(id) { + if (!id) return true; // null/empty is allowed + return bookmarkList.some(function (bm) { return bm.id === id; }); + } + + // ------------------------------------------------------------------------- + // Save + // ------------------------------------------------------------------------- + function saveScheduler() { + const rig = currentRigId; + if (!rig) return; + + const modeEl = document.getElementById("scheduler-mode-select"); + const mode = modeEl ? modeEl.value : "disabled"; + + const config = { + remote: rig, + mode, + grayline: null, + entries: [], + }; + + if (mode === "grayline") { + const lat = parseFloat(document.getElementById("scheduler-gl-lat").value); + const lon = parseFloat(document.getElementById("scheduler-gl-lon").value); + const win = parseInt(document.getElementById("scheduler-gl-window").value, 10); + config.grayline = { + lat: isNaN(lat) ? 0 : lat, + lon: isNaN(lon) ? 0 : lon, + transition_window_min: isNaN(win) ? 20 : win, + dawn_bookmark_id: selectVal("scheduler-gl-dawn") || null, + day_bookmark_id: selectVal("scheduler-gl-day") || null, + dusk_bookmark_id: selectVal("scheduler-gl-dusk") || null, + night_bookmark_id: selectVal("scheduler-gl-night") || null, + }; + } else if (mode === "time_span") { + config.entries = + currentConfig && currentConfig.entries ? currentConfig.entries : []; + const ilVal = parseInt(document.getElementById("scheduler-ts-interleave").value, 10); + config.interleave_min = isNaN(ilVal) || ilVal <= 0 ? null : ilVal; + } + + // Satellite overlay — saved regardless of base mode. + config.satellites = collectSatelliteConfig(); + + // Validate bookmark existence before saving + var missingBmErrors = []; + if (mode === "grayline" && config.grayline) { + var gl = config.grayline; + var glFields = [ + ["dawn_bookmark_id", "Grayline dawn"], + ["day_bookmark_id", "Grayline day"], + ["dusk_bookmark_id", "Grayline dusk"], + ["night_bookmark_id", "Grayline night"], + ]; + glFields.forEach(function (pair) { + if (!bookmarkExists(gl[pair[0]])) missingBmErrors.push(pair[1] + " (bookmark " + gl[pair[0]] + ")"); + }); + } + if (mode === "time_span" && Array.isArray(config.entries)) { + config.entries.forEach(function (entry, idx) { + var label = entry.label || "Entry #" + (idx + 1); + if (!bookmarkExists(entry.bookmark_id)) { + missingBmErrors.push(label + " primary bookmark (" + entry.bookmark_id + ")"); + } + var extras = Array.isArray(entry.bookmark_ids) ? entry.bookmark_ids : []; + extras.forEach(function (id) { + if (!bookmarkExists(id)) { + missingBmErrors.push(label + " extra channel (" + id + ")"); + } + }); + }); + } + if (config.satellites && Array.isArray(config.satellites.entries)) { + config.satellites.entries.forEach(function (sat, idx) { + var satLabel = sat.name || "Satellite #" + (idx + 1); + if (!bookmarkExists(sat.bookmark_id)) { + missingBmErrors.push(satLabel + " bookmark (" + sat.bookmark_id + ")"); + } + }); + } + if (missingBmErrors.length > 0) { + showSchedulerToast("Missing bookmarks: " + missingBmErrors.join("; "), true); + return; + } + + const btn = document.getElementById("scheduler-save-btn"); + if (btn) btn.disabled = true; + + apiPutScheduler(rig, config) + .then(function (saved) { + currentConfig = saved; + renderScheduler(); + clearSchedulerDirty(); + showSchedulerToast("Scheduler saved."); + }) + .catch(function (e) { + showSchedulerToast("Save failed: " + e.message, true); + }) + .finally(function () { + if (btn) btn.disabled = false; + }); + } + + function selectVal(id) { + const el = document.getElementById(id); + return el ? el.value : ""; + } + + function resetScheduler() { + const rig = currentRigId; + if (!rig) return; + if (!confirm("Reset scheduler for this rig to Disabled?")) return; + + apiDeleteScheduler(rig) + .then(function () { + currentConfig = { + remote: rig, + mode: "disabled", + grayline: null, + entries: [], + }; + renderScheduler(); + clearSchedulerDirty(); + showSchedulerToast("Scheduler reset."); + }) + .catch(function (e) { + showSchedulerToast("Reset failed: " + e.message, true); + }); + } + + // ------------------------------------------------------------------------- + // Dirty-state tracking + // ------------------------------------------------------------------------- + function markSchedulerDirty() { + if (schedulerDirty) return; + schedulerDirty = true; + var btn = document.getElementById("scheduler-save-btn"); + if (btn) btn.classList.add("sch-dirty"); + } + + function clearSchedulerDirty() { + schedulerDirty = false; + var btn = document.getElementById("scheduler-save-btn"); + if (btn) btn.classList.remove("sch-dirty"); + } + + // ------------------------------------------------------------------------- + // Toast helper + // ------------------------------------------------------------------------- + function showSchedulerToast(msg, isError) { + const el = document.getElementById("scheduler-toast"); + if (!el) return; + el.textContent = msg; + el.style.background = isError ? "var(--color-error, #c00)" : "var(--accent-green)"; + el.style.display = "block"; + setTimeout(function () { + el.style.display = "none"; + }, 3000); + } + + // ------------------------------------------------------------------------- + // Wire events (called once DOM is ready) + // ------------------------------------------------------------------------- + function wireSchedulerEvents() { + const modeEl = document.getElementById("scheduler-mode-select"); + if (modeEl) { + modeEl.addEventListener("change", function () { + if (!currentConfig) currentConfig = { remote: currentRigId, mode: modeEl.value, entries: [] }; + currentConfig.mode = modeEl.value; + renderScheduler(); + }); + } + + const saveBtn = document.getElementById("scheduler-save-btn"); + if (saveBtn) saveBtn.addEventListener("click", saveScheduler); + + const resetBtn = document.getElementById("scheduler-reset-btn"); + if (resetBtn) resetBtn.addEventListener("click", resetScheduler); + + const addBtn = document.getElementById("scheduler-ts-add-btn"); + if (addBtn) addBtn.addEventListener("click", function () { schOpenEntryForm(null, null); }); + + const entryForm = document.getElementById("sch-entry-form"); + if (entryForm) entryForm.addEventListener("submit", schEntryFormSubmit); + + const cancelBtn = document.getElementById("sch-entry-form-cancel"); + if (cancelBtn) cancelBtn.addEventListener("click", schCloseEntryForm); + + const prevBtn = document.getElementById("scheduler-prev-btn"); + if (prevBtn) prevBtn.addEventListener("click", function () { + schedulerSelectRelativeEntry(-1); + }); + + const nextBtn = document.getElementById("scheduler-next-btn"); + if (nextBtn) nextBtn.addEventListener("click", function () { + schedulerSelectRelativeEntry(1); + }); + + // Dirty-state: mark dirty on any user input/change within the scheduler panel + var schPanel = document.getElementById("scheduler-panel"); + if (schPanel && !schPanel._dirtyWired) { + schPanel._dirtyWired = true; + schPanel.addEventListener("input", function (e) { + // Ignore the entry-form inputs (they don't affect saved config until submitted) + if (e.target.closest("#sch-entry-form") || e.target.closest("#sch-sat-form")) return; + markSchedulerDirty(); + }); + schPanel.addEventListener("change", function (e) { + if (e.target.closest("#sch-entry-form") || e.target.closest("#sch-sat-form")) return; + markSchedulerDirty(); + }); + } + + // Grid square ↔ lat/lon sync + var gridEl = document.getElementById("scheduler-gl-grid"); + if (gridEl) { + gridEl.addEventListener("input", function () { + var ll = gridToLatLon(gridEl.value); + if (ll) { + setInputValue("scheduler-gl-lat", ll.lat.toFixed(3)); + setInputValue("scheduler-gl-lon", ll.lon.toFixed(3)); + markSchedulerDirty(); + } + }); + } + var latEl = document.getElementById("scheduler-gl-lat"); + var lonEl = document.getElementById("scheduler-gl-lon"); + [latEl, lonEl].forEach(function (el) { + if (el) { + el.addEventListener("input", function () { + var la = parseFloat(document.getElementById("scheduler-gl-lat").value); + var lo = parseFloat(document.getElementById("scheduler-gl-lon").value); + var gEl = document.getElementById("scheduler-gl-grid"); + if (gEl && !isNaN(la) && !isNaN(lo)) { + gEl.value = latLonToGrid(la, lo); + } + }); + } + }); + + wireExtraBmAdd(); + wireSatelliteEvents(); + } + + function populateTsBookmarkSelect() { + const sel = document.getElementById("scheduler-ts-bookmark"); + const extraSel = document.getElementById("scheduler-ts-extra-bm-pick"); + [sel, extraSel].forEach(function (el) { + if (!el) return; + const prev = el.value; + el.innerHTML = ''; + bookmarkList.forEach(function (bm) { + const opt = document.createElement("option"); + opt.value = bm.id; + opt.textContent = bm.name + " (" + formatFreq(bm.freq_hz) + " " + bm.mode + ")"; + el.appendChild(opt); + }); + if (prev) el.value = prev; + }); + } + + // Pending extra bookmark IDs for the entry being composed in the add form. + let pendingExtraBmIds = []; + + function renderExtraBmList() { + var container = document.getElementById("scheduler-ts-extra-bm-list"); + if (!container) return; + container.innerHTML = ""; + pendingExtraBmIds.forEach(function (id, idx) { + var bm = bookmarkList.find(function (b) { return b.id === id; }); + var chip = document.createElement("span"); + chip.className = "sch-extra-bm-chip"; + var rmBtn = document.createElement("span"); + rmBtn.className = "sch-extra-bm-chip-rm"; + rmBtn.textContent = "\u00D7"; + rmBtn.title = "Remove"; + rmBtn.addEventListener("click", function () { + pendingExtraBmIds.splice(idx, 1); + renderExtraBmList(); + }); + chip.appendChild(rmBtn); + var label = document.createTextNode(" " + (bm ? bm.name : id)); + chip.appendChild(label); + container.appendChild(chip); + }); + + // Disable already-added bookmarks in dropdown + var pick = document.getElementById("scheduler-ts-extra-bm-pick"); + if (pick) { + Array.from(pick.options).forEach(function (opt) { + if (opt.value) { + opt.disabled = pendingExtraBmIds.includes(opt.value); + } + }); + } + } + + function wireExtraBmAdd() { + const addBtn = document.getElementById("scheduler-ts-extra-bm-add"); + if (!addBtn || addBtn._wired) return; + addBtn._wired = true; + addBtn.addEventListener("click", function () { + const pick = document.getElementById("scheduler-ts-extra-bm-pick"); + if (!pick || !pick.value) return; + if (!pendingExtraBmIds.includes(pick.value)) { + pendingExtraBmIds.push(pick.value); + renderExtraBmList(); + } + pick.value = ""; + }); + } + + // ------------------------------------------------------------------------- + // Satellite overlay (delegated to sat-scheduler.js) + // ------------------------------------------------------------------------- + function renderSatelliteSection() { + if (window.satScheduler) window.satScheduler.renderSection(); + } + + function renderSatPassStatus() { + if (window.satScheduler) window.satScheduler.renderPassStatus(); + } + + function collectSatelliteConfig() { + return window.satScheduler + ? window.satScheduler.collectSatelliteConfig() + : { enabled: false, pretune_secs: 60, entries: [] }; + } + + function wireSatelliteEvents() { + // Expose bridge for sat-scheduler.js to access shared state. + window.schedulerBridge = { + getConfig: function () { return currentConfig; }, + getStatus: function () { return currentSchedulerStatus; }, + getBookmarks: function () { return bookmarkList; }, + markDirty: function () { markSchedulerDirty(); }, + }; + if (window.satScheduler) window.satScheduler.wireEvents(); + } + + // ------------------------------------------------------------------------- + // Keyboard shortcuts for scheduler control + // ------------------------------------------------------------------------- + function isInputFocused() { + var el = document.activeElement; + if (!el) return false; + var tag = el.tagName; + return tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT" || el.isContentEditable; + } + + document.addEventListener("keydown", function (e) { + if (isInputFocused()) return; + + if (e.shiftKey && e.key === "R") { + e.preventDefault(); + // Toggle release to scheduler + var releaseBtn = document.getElementById("scheduler-release-btn"); + if (releaseBtn && !releaseBtn.disabled) releaseBtn.click(); + } else if (e.shiftKey && e.key === "N") { + e.preventDefault(); + schedulerSelectRelativeEntry(1); + } else if (e.shiftKey && e.key === "P") { + e.preventDefault(); + schedulerSelectRelativeEntry(-1); + } + }); + + // ------------------------------------------------------------------------- + // Public API + // ------------------------------------------------------------------------- + // Persist details open/closed state + (function () { + var details = document.querySelector(".sch-ts-details"); + if (!details) return; + var key = "sch-details-open"; + var saved = localStorage.getItem(key); + if (saved !== null) details.open = saved === "1"; + details.addEventListener("toggle", function () { + localStorage.setItem(key, details.open ? "1" : "0"); + }); + })(); + + window.initScheduler = initScheduler; + window.destroyScheduler = destroyScheduler; + window.wireSchedulerEvents = wireSchedulerEvents; + window.setSchedulerRig = setSchedulerRig; + + // Auto-initialize if the app has already booted (lazy-load case). + // When loaded eagerly, initSettingsUI() in app.js calls initScheduler(); + // when loaded lazily (e.g. settings tab click after boot), the app has + // already passed that point, so we must self-initialize here. + if (typeof authRole !== "undefined" && authRole !== null) { + initScheduler(typeof lastActiveRigId !== "undefined" ? lastActiveRigId : null, authRole); + wireSchedulerEvents(); + } +})(); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/vchan.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/vchan.js new file mode 100644 index 0000000..d150917 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/vchan.js @@ -0,0 +1,565 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// --- Virtual Channels Plugin --- +// +// Handles the `session` and `channels` SSE events emitted by /events and +// provides the channel picker UI (SDR-only, shown when filter_controls is set). + +let vchanSessionId = null; +let vchanRigId = null; +let vchanChannels = []; +let vchanActiveId = null; +let schedulerReleaseState = null; +let schedulerReleasePollTimer = null; + +function vchanFmtFreq(hz) { + if (!Number.isFinite(hz) || hz <= 0) return "--"; + if (hz >= 1e9) return (hz / 1e9).toFixed(4).replace(/\.?0+$/, "") + "\u202fGHz"; + if (hz >= 1e6) return (hz / 1e6).toFixed(4).replace(/\.?0+$/, "") + "\u202fMHz"; + if (hz >= 1e3) return (hz / 1e3).toFixed(1).replace(/\.?0+$/, "") + "\u202fkHz"; + return hz + "\u202fHz"; +} + +function schedulerReleaseSummaryText(state) { + if (!state) return "Scheduler is controlling the rig."; + const connected = Number(state.connected_sessions) || 0; + const released = Number(state.released_sessions) || 0; + if (connected === 0) return "Scheduler can control the rig."; + if (state.all_released) { + return connected === 1 + ? "Scheduler is controlling the rig." + : `Scheduler is controlling the rig for all ${connected} users.`; + } + if (!state.current_session_released) { + const othersReleased = Math.max(released, 0); + return othersReleased > 0 + ? `You are holding control. ${othersReleased} other user${othersReleased === 1 ? "" : "s"} already released it.` + : "You are holding control. Release it to return control to the scheduler."; + } + const blocking = Math.max(connected - released, 0); + return blocking > 0 + ? `Scheduler is waiting for ${blocking} user${blocking === 1 ? "" : "s"} to stop manual tuning.` + : "Scheduler can control the rig."; +} + +function vchanRenderSchedulerRelease() { + const btn = document.getElementById("scheduler-release-btn"); + const status = document.getElementById("scheduler-release-status"); + if (!btn || !status) return; + const currentReleased = !!(schedulerReleaseState && schedulerReleaseState.current_session_released); + btn.disabled = !vchanSessionId || currentReleased; + btn.classList.toggle("active", !currentReleased); + btn.textContent = "Release to Scheduler"; + status.textContent = schedulerReleaseSummaryText(schedulerReleaseState); +} + +async function vchanPollSchedulerRelease() { + if (!vchanSessionId) { + schedulerReleaseState = null; + vchanRenderSchedulerRelease(); + return; + } + try { + const resp = await fetch(`/scheduler-control?session_id=${encodeURIComponent(vchanSessionId)}`); + if (!resp.ok) throw new Error(`HTTP ${resp.status}`); + schedulerReleaseState = await resp.json(); + vchanRenderSchedulerRelease(); + } catch (e) { + console.error("scheduler release status failed", e); + } +} + +function vchanStartSchedulerReleasePolling() { + if (schedulerReleasePollTimer) { + clearInterval(schedulerReleasePollTimer); + } + schedulerReleasePollTimer = setInterval(vchanPollSchedulerRelease, 10000); +} + +async function vchanToggleSchedulerRelease() { + if (!vchanSessionId) return; + const rigId = vchanRigId || (typeof lastActiveRigId !== "undefined" ? lastActiveRigId : null); + try { + const resp = await fetch("/scheduler-control", { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ session_id: vchanSessionId, released: true, remote: rigId }), + }); + if (!resp.ok) throw new Error(`HTTP ${resp.status}`); + schedulerReleaseState = await resp.json(); + vchanRenderSchedulerRelease(); + } catch (e) { + console.error("scheduler release toggle failed", e); + } +} + +async function vchanTakeSchedulerControl() { + if (!vchanSessionId) return; + if (schedulerReleaseState && !schedulerReleaseState.current_session_released) return; + try { + const resp = await fetch("/scheduler-control", { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ session_id: vchanSessionId, released: false }), + }); + if (!resp.ok) throw new Error(`HTTP ${resp.status}`); + schedulerReleaseState = await resp.json(); + vchanRenderSchedulerRelease(); + } catch (e) { + console.error("scheduler control takeover failed", e); + } +} +window.vchanTakeSchedulerControl = vchanTakeSchedulerControl; + +// Called by app.js when the SSE `session` event arrives. +function vchanHandleSession(data) { + try { + const d = JSON.parse(data); + vchanSessionId = d.session_id || null; + vchanPollSchedulerRelease(); + } catch (e) { + console.warn("vchan: bad session event", e); + } +} + +// Called by app.js when the SSE `channels` event arrives. +function vchanHandleChannels(data) { + try { + const d = JSON.parse(data); + vchanRigId = d.remote || null; + vchanChannels = d.channels || []; + const ids = new Set(vchanChannels.map(c => c.id)); + if (!vchanActiveId && vchanChannels.length > 0 && vchanSessionId) { + // First channels event for this session — auto-subscribe to channel 0 + // so we join the same tuned channel as other users on this rig. + // Use a direct subscribe (no scheduler control takeover) to avoid + // side-effects on initial connect. + vchanAutoJoinPrimary(vchanChannels[0].id); + } else if (vchanActiveId && !ids.has(vchanActiveId)) { + // Active channel was evicted — fall back to channel 0 and reconnect audio. + vchanActiveId = vchanChannels.length > 0 ? vchanChannels[0].id : null; + vchanReconnectAudio(); + } + vchanRender(); + vchanRenderSchedulerRelease(); + if (typeof renderRdsOverlays === "function") renderRdsOverlays(); + } catch (e) { + console.warn("vchan: bad channels event", e); + } +} + +function vchanRender() { + const picker = document.getElementById("vchan-picker"); + if (!picker) return; + picker.innerHTML = ""; + + vchanChannels.forEach(ch => { + const btn = document.createElement("button"); + btn.type = "button"; + btn.title = `Ch ${ch.index}: ${vchanFmtFreq(ch.freq_hz)} ${ch.mode} · ${ch.subscribers} subscriber${ch.subscribers !== 1 ? "s" : ""}`; + if (ch.id === vchanActiveId) btn.classList.add("active"); + + const label = document.createElement("span"); + label.className = "vchan-label"; + label.textContent = `${ch.index}: ${vchanFmtFreq(ch.freq_hz)} ${ch.mode}`; + btn.appendChild(label); + + if (!ch.permanent) { + const del = document.createElement("span"); + del.className = "vchan-del"; + del.textContent = "\u00d7"; + del.title = "Delete channel"; + del.addEventListener("click", e => { + e.stopPropagation(); + vchanDelete(ch.id); + }); + btn.appendChild(del); + } + + btn.addEventListener("click", () => { + if (ch.id !== vchanActiveId) vchanSubscribe(ch.id); + }); + + picker.appendChild(btn); + }); + + // "+" button — allocate a new channel at the current VFO frequency. + const addBtn = document.createElement("button"); + addBtn.type = "button"; + addBtn.className = "vchan-add"; + addBtn.textContent = "+"; + addBtn.title = "Allocate new virtual channel at current frequency"; + addBtn.addEventListener("click", vchanAllocate); + picker.appendChild(addBtn); + + vchanSyncAccentUI(); + if (typeof updateDocumentTitle === "function" && typeof activeChannelRds === "function") { + updateDocumentTitle(activeChannelRds()); + } + vchanRenderSchedulerRelease(); +} + +async function vchanAllocate() { + if (!vchanSessionId || !vchanRigId) return; + + // Use the last known rig frequency and mode as the starting point. + const freqHz = (typeof lastFreqHz === "number" && lastFreqHz > 0) + ? lastFreqHz + : 0; + const modeEl = document.getElementById("mode"); + const mode = modeEl ? (modeEl.value || "USB") : "USB"; + + try { + const resp = await fetch(`/channels/${encodeURIComponent(vchanRigId)}`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ session_id: vchanSessionId, freq_hz: freqHz, mode }), + }); + if (!resp.ok) { + const msg = await resp.text().catch(() => String(resp.status)); + console.warn("vchan: allocate failed —", msg); + return; + } + const ch = await resp.json(); + vchanActiveId = ch.id; + // The SSE `channels` event will trigger vchanRender(); optimistically + // mark active so the picker feels responsive even before the event arrives. + vchanRender(); + vchanReconnectAudio(); + } catch (e) { + console.error("vchan: allocate error", e); + } +} + +async function vchanDelete(channelId) { + if (!vchanRigId) return; + try { + const resp = await fetch( + `/channels/${encodeURIComponent(vchanRigId)}/${encodeURIComponent(channelId)}`, + { method: "DELETE" } + ); + if (!resp.ok) { + console.warn("vchan: delete failed", resp.status); + } + // Channel list updates via SSE `channels` event. + } catch (e) { + console.error("vchan: delete error", e); + } +} + +// Lightweight auto-join for initial connect: registers the session on +// channel 0 without taking scheduler control or reconnecting audio +// (audio isn't started yet at this point). +async function vchanAutoJoinPrimary(channelId) { + if (!vchanSessionId || !vchanRigId) return; + try { + const resp = await fetch( + `/channels/${encodeURIComponent(vchanRigId)}/${encodeURIComponent(channelId)}/subscribe`, + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ session_id: vchanSessionId }), + } + ); + if (!resp.ok) { + console.warn("vchan: auto-join primary failed", resp.status); + return; + } + vchanActiveId = channelId; + vchanRender(); + } catch (e) { + console.error("vchan: auto-join error", e); + } +} + +async function vchanSubscribe(channelId) { + if (!vchanSessionId || !vchanRigId) return; + try { + await vchanTakeSchedulerControl(); + const resp = await fetch( + `/channels/${encodeURIComponent(vchanRigId)}/${encodeURIComponent(channelId)}/subscribe`, + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ session_id: vchanSessionId }), + } + ); + if (!resp.ok) { + console.warn("vchan: subscribe failed", resp.status); + return; + } + vchanActiveId = channelId; + vchanRender(); + vchanSyncModeDisplay(); + vchanReconnectAudio(); + } catch (e) { + console.error("vchan: subscribe error", e); + } +} + +// Reconnect the audio WebSocket to the appropriate endpoint: +// - virtual channel: /audio?channel_id= +// - primary channel: /audio (no param) +// Always updates _audioChannelOverride so that starting audio later +// connects to the correct channel. Only reconnects if RX audio is active. +function vchanReconnectAudio() { + // Always update the override so startRxAudio picks up the right URL, + // even when audio isn't currently running. + const ch = vchanIsOnVirtual() ? vchanActiveChannel() : null; + if (typeof _audioChannelOverride !== "undefined") { + _audioChannelOverride = ch ? ch.id : null; + } + if (typeof rxActive === "undefined" || !rxActive) return; + if (typeof stopRxAudio === "function") stopRxAudio(); + // Delay so the server has time to set up the per-channel encoder. + // The server-side audio_ws handler also polls for up to 2 s, so this + // just needs to be long enough for the WS upgrade to reach the server. + setTimeout(() => { + if (typeof startRxAudio === "function") startRxAudio(); + }, 300); +} + +// Called by app.js from applyCapabilities(). +// Shows the channel picker only for SDR rigs. +function vchanApplyCapabilities(caps) { + const picker = document.getElementById("vchan-picker"); + if (!picker) return; + picker.style.display = (caps && caps.filter_controls) ? "" : "none"; + vchanRenderSchedulerRelease(); +} + +// --------------------------------------------------------------------------- +// Freq / mode interception + UI accent +// --------------------------------------------------------------------------- + +// Returns true when the active channel is a non-primary (virtual) channel. +function vchanIsOnVirtual() { + if (!vchanActiveId || vchanChannels.length === 0) return false; + return vchanActiveId !== vchanChannels[0].id; +} + +function vchanActiveChannel() { + return vchanChannels.find(c => c.id === vchanActiveId) || null; +} + +// Update the main freq input to show the virtual channel's frequency. +function vchanUpdateFreqDisplay() { + const ch = vchanActiveChannel(); + if (!ch) return; + const el = document.getElementById("freq"); + if (!el) return; + if (typeof formatFreqForStep === "function" && typeof jogUnit !== "undefined") { + el.value = formatFreqForStep(ch.freq_hz, jogUnit); + } else { + el.value = (ch.freq_hz / 1e6).toFixed(6).replace(/\.?0+$/, ""); + } +} + +// Sync the mode picker to the active virtual channel's mode. +// Called whenever the active channel changes or the channel list is refreshed. +function vchanSyncModeDisplay() { + const modeEl = document.getElementById("mode"); + if (!modeEl) return; + if (vchanIsOnVirtual()) { + const ch = vchanActiveChannel(); + if (ch && ch.mode) modeEl.value = ch.mode.toUpperCase(); + } + // When on primary channel, app.js rig-state updates handle the picker. + const modeUpper = (modeEl.value || "").toUpperCase(); + if (typeof lastModeName !== "undefined") { + if (modeUpper === "WFM" && lastModeName !== "WFM") { + if (typeof setJogDivisor === "function") setJogDivisor(10); + if (typeof resetRdsDisplay === "function") resetRdsDisplay(); + } else if (modeUpper !== "WFM" && lastModeName === "WFM") { + if (typeof resetRdsDisplay === "function") resetRdsDisplay(); + } + lastModeName = modeUpper; + } + if (typeof updateWfmControls === "function") updateWfmControls(); + if (typeof updateSdrSquelchControlVisibility === "function") { + updateSdrSquelchControlVisibility(); + } + if (typeof refreshRdsUi === "function") { + refreshRdsUi(); + } else if (typeof positionRdsPsOverlay === "function") { + positionRdsPsOverlay(); + } +} + +// Sync the BW input to the active virtual channel's bandwidth. +function vchanSyncBwDisplay() { + if (!vchanIsOnVirtual()) return; + const ch = vchanActiveChannel(); + if (!ch) return; + const bwEl = document.getElementById("spectrum-bw-input"); + if (!bwEl) return; + // bandwidth_hz == 0 means mode-default; derive it from the channel mode. + let bwHz = ch.bandwidth_hz || 0; + if (bwHz === 0 && typeof mwDefaultsForMode === "function") { + bwHz = mwDefaultsForMode(ch.mode)[0] || 0; + } + if (bwHz > 0) { + bwEl.value = (bwHz / 1000).toFixed(3).replace(/\.?0+$/, ""); + if (typeof currentBandwidthHz !== "undefined") { + currentBandwidthHz = bwHz; + window.currentBandwidthHz = bwHz; + } else { + window.currentBandwidthHz = bwHz; + } + } +} + +// Add / remove the vchan accent class from the freq and BW inputs. +function vchanSyncAccentUI() { + const onVirtual = vchanIsOnVirtual(); + const freqEl = document.getElementById("freq"); + const bwEl = document.getElementById("spectrum-bw-input"); + if (freqEl) freqEl.classList.toggle("vchan-ch-active", onVirtual); + if (bwEl) bwEl.classList.toggle("vchan-ch-active", onVirtual); + if (onVirtual) { + vchanUpdateFreqDisplay(); + vchanSyncModeDisplay(); + vchanSyncBwDisplay(); + } else if (typeof _origRefreshFreqDisplay === "function") { + _origRefreshFreqDisplay(); + } + if (typeof updateDocumentTitle === "function" && typeof activeChannelRds === "function") { + updateDocumentTitle(activeChannelRds()); + } +} + +// Saved reference to the original refreshFreqDisplay from app.js. +let _origRefreshFreqDisplay = null; + +function vchanSetChannelFreq(freqHz) { + if (!vchanRigId || !vchanActiveId) return; + // Validate against current SDR capture window. + if (typeof lastSpectrumData !== "undefined" && lastSpectrumData && + lastSpectrumData.sample_rate > 0) { + const halfSpan = Number(lastSpectrumData.sample_rate) / 2; + const center = Number(lastSpectrumData.center_hz); + if (Math.abs(freqHz - center) > halfSpan) { + if (typeof showHint === "function") { + showHint( + `Out of SDR bandwidth (center ${(center / 1e6).toFixed(3)} MHz ±${(halfSpan / 1e3).toFixed(0)} kHz)`, + 3000 + ); + } + return; + } + } + // Fire-and-forget: scheduler control + channel freq PUT run in background. + vchanTakeSchedulerControl(); + fetch( + `/channels/${encodeURIComponent(vchanRigId)}/${encodeURIComponent(vchanActiveId)}/freq`, + { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ freq_hz: Math.round(freqHz) }), + } + ).catch(e => console.error("vchan: set freq error", e)); +} + +async function vchanSetChannelBandwidth(bwHz) { + if (!vchanRigId || !vchanActiveId) return; + try { + await vchanTakeSchedulerControl(); + const resp = await fetch( + `/channels/${encodeURIComponent(vchanRigId)}/${encodeURIComponent(vchanActiveId)}/bw`, + { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ bandwidth_hz: Math.round(bwHz) }), + } + ); + if (!resp.ok) console.warn("vchan: set bw failed", resp.status); + } catch (e) { + console.error("vchan: set bw error", e); + } +} + +async function vchanSetChannelMode(mode) { + if (!vchanRigId || !vchanActiveId) return; + try { + await vchanTakeSchedulerControl(); + const resp = await fetch( + `/channels/${encodeURIComponent(vchanRigId)}/${encodeURIComponent(vchanActiveId)}/mode`, + { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ mode }), + } + ); + if (!resp.ok) console.warn("vchan: set mode failed", resp.status); + } catch (e) { + console.error("vchan: set mode error", e); + } +} + +// Called by app.js (applyModeFromPicker) and bookmarks.js (bmApply) before +// sending /set_mode to the server. Returns true if the change was handled +// by the virtual channel (caller should skip the server request). +window.vchanInterceptMode = async function(mode) { + if (!vchanIsOnVirtual()) return false; + await vchanSetChannelMode(mode); + return true; +}; + +// Called by app.js bandwidth setters before sending /set_bandwidth to the +// server. Returns true if the change was handled by the virtual channel. +window.vchanInterceptBandwidth = async function(bwHz) { + if (!vchanIsOnVirtual()) return false; + await vchanSetChannelBandwidth(bwHz); + return true; +}; + +// Wrap setRigFrequency (defined in app.js, loaded before this file) so that +// frequency changes are redirected to the active virtual channel instead of +// the server when on a non-primary channel. +(function() { + const _orig = window.setRigFrequency; + window.setRigFrequency = function(freqHz) { + if (vchanIsOnVirtual()) { + // Optimistic local update first, then fire-and-forget channel API. + if (typeof applyLocalTunedFrequency === "function") { + if (typeof _freqOptimisticSeq !== "undefined") { + ++_freqOptimisticSeq; + _freqOptimisticHz = Math.round(freqHz); + } + applyLocalTunedFrequency(Math.round(freqHz)); + } + vchanSetChannelFreq(freqHz); + return; + } + // Scheduler control is fire-and-forget — don't block the freq change. + vchanTakeSchedulerControl(); + if (typeof _orig === "function") _orig(freqHz); + }; +})(); + +(function initSchedulerReleaseControl() { + const btn = document.getElementById("scheduler-release-btn"); + if (btn) { + btn.addEventListener("click", () => { + vchanToggleSchedulerRelease(); + }); + } + vchanStartSchedulerReleasePolling(); + vchanRenderSchedulerRelease(); +})(); + +// Wrap refreshFreqDisplay so the main freq field stays in sync with the +// active virtual channel's frequency (SSE rig-state updates would otherwise +// constantly overwrite it with channel 0's freq). +(function() { + _origRefreshFreqDisplay = window.refreshFreqDisplay; + window.refreshFreqDisplay = function() { + if (vchanIsOnVirtual()) { + vchanUpdateFreqDisplay(); + return; + } + if (typeof _origRefreshFreqDisplay === "function") _origRefreshFreqDisplay(); + }; +})(); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/vdes.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/vdes.js new file mode 100644 index 0000000..4ae1565 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/vdes.js @@ -0,0 +1,352 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// --- VDES Decoder Plugin (server-side decode) --- +const vdesStatus = document.getElementById("vdes-status"); +const vdesMessagesEl = document.getElementById("vdes-messages"); +const vdesFilterInput = document.getElementById("vdes-filter"); +const vdesBarOverlay = document.getElementById("vdes-bar-overlay"); +const vdesChannelSummaryEl = document.getElementById("vdes-channel-summary"); +const vdesFrameCountEl = document.getElementById("vdes-frame-count"); +const vdesLatestSeenEl = document.getElementById("vdes-latest-seen"); +const VDES_BAR_WINDOW_MS = 15 * 60 * 1000; +let vdesFilterText = ""; +let vdesMessageHistory = []; + +function currentVdesHistoryRetentionMs() { + return typeof window.getDecodeHistoryRetentionMs === "function" + ? window.getDecodeHistoryRetentionMs() + : 24 * 60 * 60 * 1000; +} + +function pruneVdesMessageHistory() { + const cutoffMs = Date.now() - currentVdesHistoryRetentionMs(); + vdesMessageHistory = vdesMessageHistory.filter((msg) => Number(msg?._tsMs) >= cutoffMs); +} + +function scheduleVdesUi(key, job) { + if (typeof window.trxScheduleUiFrameJob === "function") { + window.trxScheduleUiFrameJob(key, job); + return; + } + job(); +} + +function scheduleVdesHistoryRender() { + scheduleVdesUi("vdes-history", () => renderVdesHistory()); +} + +function scheduleVdesBarUpdate() { + scheduleVdesUi("vdes-bar", () => updateVdesBar()); +} + +function currentVdesCenterText() { + const raw = (document.getElementById("freq")?.value || "").replace(/[^\d]/g, ""); + const hz = raw ? Number(raw) : 0; + if (!Number.isFinite(hz) || hz <= 0) return "100 kHz centered on tuned frequency"; + return `100 kHz @ ${(hz / 1_000_000).toFixed(3)} MHz`; +} + +function vdesAgeText(tsMs) { + if (!Number.isFinite(tsMs)) return "just now"; + const deltaMs = Math.max(0, Date.now() - tsMs); + const seconds = Math.round(deltaMs / 1000); + if (seconds < 5) return "just now"; + if (seconds < 60) return `${seconds}s ago`; + const minutes = Math.round(seconds / 60); + if (minutes < 60) return `${minutes}m ago`; + const hours = Math.round(minutes / 60); + return `${hours}h ago`; +} + +function vdesHexPreview(rawBytes) { + if (!Array.isArray(rawBytes) || rawBytes.length === 0) return "--"; + return rawBytes + .slice(0, 20) + .map((value) => Number(value).toString(16).padStart(2, "0")) + .join(" ") + .toUpperCase(); +} + +function updateVdesSummary() { + pruneVdesMessageHistory(); + if (vdesChannelSummaryEl) { + vdesChannelSummaryEl.textContent = currentVdesCenterText(); + } + if (vdesFrameCountEl) { + const count = vdesMessageHistory.length; + vdesFrameCountEl.textContent = `${count} burst${count === 1 ? "" : "s"}`; + } + if (vdesLatestSeenEl) { + const latest = vdesMessageHistory[0]; + vdesLatestSeenEl.textContent = latest ? vdesAgeText(latest._tsMs) : "No traffic yet"; + } +} + +function applyVdesFilterToRow(row) { + if (!vdesFilterText) { + row.style.display = ""; + return; + } + const text = row.dataset.filterText || ""; + row.style.display = text.includes(vdesFilterText) ? "" : "none"; +} + +function applyVdesFilterToAll() { + if (!vdesMessagesEl) return; + vdesMessagesEl.querySelectorAll(".vdes-message").forEach((row) => applyVdesFilterToRow(row)); +} + +function renderVdesRow(msg) { + const row = document.createElement("div"); + row.className = "vdes-message"; + const ts = msg._ts || new Date().toLocaleTimeString([], { + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + }); + const title = msg.vessel_name || "VDES Burst"; + const label = msg.callsign || "VDES"; + const info = msg.destination || ""; + const labelText = msg.message_label || ""; + const linkText = Number.isFinite(msg.link_id) ? `LID ${msg.link_id}` : ""; + const syncText = Number.isFinite(msg.sync_score) ? `Sync ${(Number(msg.sync_score) * 100).toFixed(0)}%` : ""; + const phaseText = Number.isFinite(msg.phase_rotation) ? `R${Number(msg.phase_rotation)}` : ""; + const fecText = msg.fec_state || ""; + const srcText = Number.isFinite(msg.source_id) ? `SRC ${Number(msg.source_id)}` : ""; + const dstText = Number.isFinite(msg.destination_id) ? `DST ${Number(msg.destination_id)}` : ""; + const sessionText = Number.isFinite(msg.session_id) ? `S${Number(msg.session_id)}` : ""; + const asmText = Number.isFinite(msg.asm_identifier) ? `ASM ${Number(msg.asm_identifier)}` : ""; + const countText = Number.isFinite(msg.data_count) ? `${Number(msg.data_count)} data bits` : ""; + const ackText = Number.isFinite(msg.ack_nack_mask) ? `ACK 0x${Number(msg.ack_nack_mask).toString(16).toUpperCase().padStart(4, "0")}` : ""; + const cqiText = Number.isFinite(msg.channel_quality) ? `CQ ${Number(msg.channel_quality)}` : ""; + const previewText = msg.payload_preview || ""; + const rawHex = vdesHexPreview(msg.raw_bytes); + row.dataset.filterText = [ + title, + label, + labelText, + info, + srcText, + dstText, + sessionText, + asmText, + countText, + ackText, + cqiText, + previewText, + linkText, + syncText, + phaseText, + fecText, + rawHex, + msg.message_type, + msg.bit_len, + ] + .filter(Boolean) + .join(" ") + .toUpperCase(); + row.innerHTML = + `
    ` + + `${ts}` + + `${escapeMapHtml(title)}` + + `${escapeMapHtml(label)}` + + (labelText ? `${escapeMapHtml(labelText)}` : "") + + (linkText ? `${escapeMapHtml(linkText)}` : "") + + (srcText ? `${escapeMapHtml(srcText)}` : "") + + (dstText ? `${escapeMapHtml(dstText)}` : "") + + (syncText ? `${escapeMapHtml(syncText)}` : "") + + (phaseText ? `${escapeMapHtml(phaseText)}` : "") + + `T${escapeMapHtml(String(msg.message_type ?? "--"))}` + + `
    ` + + `
    ` + + `${escapeMapHtml(currentVdesCenterText())}` + + `${escapeMapHtml(`${msg.bit_len || 0} bits`)}` + + (sessionText ? `${escapeMapHtml(sessionText)}` : "") + + (asmText ? `${escapeMapHtml(asmText)}` : "") + + (countText ? `${escapeMapHtml(countText)}` : "") + + (ackText ? `${escapeMapHtml(ackText)}` : "") + + (cqiText ? `${escapeMapHtml(cqiText)}` : "") + + (info ? `${escapeMapHtml(info)}` : "") + + (fecText ? `${escapeMapHtml(fecText)}` : "") + + `${escapeMapHtml(vdesAgeText(msg._tsMs))}` + + `
    ` + + `
    ` + + (previewText ? `${escapeMapHtml(previewText)}` : "") + + (previewText ? `·` : "") + + `${escapeMapHtml(rawHex)}` + + `
    `; + applyVdesFilterToRow(row); + return row; +} + +function updateVdesBar() { + if (!vdesBarOverlay) return; + updateVdesSummary(); + const isVdes = (document.getElementById("mode")?.value || "").toUpperCase() === "VDES"; + const cutoffMs = Date.now() - VDES_BAR_WINDOW_MS; + const messages = vdesMessageHistory.filter((msg) => msg._tsMs >= cutoffMs).slice(0, 6); + if (!isVdes || messages.length === 0) { + vdesBarOverlay.style.display = "none"; + vdesBarOverlay.innerHTML = ""; + return; + } + + let html = '
    VDESLiveClearLast 15 minutes
    '; + for (const msg of messages) { + const ts = msg._ts ? `${msg._ts}` : ""; + const label = escapeMapHtml(msg.callsign || "VDES"); + const title = escapeMapHtml(msg.vessel_name || "Burst"); + const detail = [ + `${msg.bit_len || 0} bits`, + msg.message_label ? escapeMapHtml(msg.message_label) : null, + Number.isFinite(msg.source_id) ? `src ${Number(msg.source_id)}` : null, + Number.isFinite(msg.destination_id) ? `dst ${Number(msg.destination_id)}` : null, + Number.isFinite(msg.link_id) ? `LID ${Number(msg.link_id)}` : null, + Number.isFinite(msg.asm_identifier) ? `ASM ${Number(msg.asm_identifier)}` : null, + Number.isFinite(msg.sync_score) ? `sync ${(Number(msg.sync_score) * 100).toFixed(0)}%` : null, + Number.isFinite(msg.phase_rotation) ? `rot ${Number(msg.phase_rotation)}` : null, + msg.destination ? escapeMapHtml(msg.destination) : null, + escapeMapHtml(vdesAgeText(msg._tsMs)), + ] + .filter(Boolean) + .join(" · "); + html += `
    ${ts}${title} ${label}: ${detail}
    `; + } + vdesBarOverlay.innerHTML = html; + vdesBarOverlay.style.display = "flex"; +} +window.updateVdesBar = updateVdesBar; +window.clearVdesBar = function() { + window.resetVdesHistoryView(); +}; + +window.resetVdesHistoryView = function() { + if (vdesMessagesEl) vdesMessagesEl.innerHTML = ""; + vdesMessageHistory = []; + updateVdesBar(); + renderVdesHistory(); +}; + +function renderVdesHistory() { + pruneVdesMessageHistory(); + if (!vdesMessagesEl) { + updateVdesSummary(); + return; + } + const fragment = document.createDocumentFragment(); + for (let i = 0; i < vdesMessageHistory.length; i += 1) { + fragment.appendChild(renderVdesRow(vdesMessageHistory[i])); + } + vdesMessagesEl.replaceChildren(fragment); + updateVdesSummary(); +} + +function addVdesMessage(msg) { + const tsMs = Number.isFinite(msg.ts_ms) ? Number(msg.ts_ms) : Date.now(); + msg._tsMs = tsMs; + msg._ts = new Date(tsMs).toLocaleTimeString([], { + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + }); + + vdesMessageHistory.unshift(msg); + pruneVdesMessageHistory(); + scheduleVdesBarUpdate(); + scheduleVdesHistoryRender(); +} + +function normalizeServerVdesMessage(msg) { + return { + rig_id: msg.rig_id || null, + message_type: msg.message_type, + bit_len: msg.bit_len, + raw_bytes: msg.raw_bytes, + lat: msg.lat, + lon: msg.lon, + vessel_name: msg.vessel_name, + callsign: msg.callsign, + destination: msg.destination, + message_label: msg.message_label, + session_id: msg.session_id, + source_id: msg.source_id, + destination_id: msg.destination_id, + data_count: msg.data_count, + asm_identifier: msg.asm_identifier, + ack_nack_mask: msg.ack_nack_mask, + channel_quality: msg.channel_quality, + payload_preview: msg.payload_preview, + link_id: msg.link_id, + sync_score: msg.sync_score, + sync_errors: msg.sync_errors, + phase_rotation: msg.phase_rotation, + fec_state: msg.fec_state, + ts_ms: msg.ts_ms, + }; +} + +window.onServerVdesBatch = function(messages) { + if (!Array.isArray(messages) || messages.length === 0) return; + if (vdesStatus) vdesStatus.textContent = "Receiving"; + const normalized = []; + for (const msg of messages) { + const next = normalizeServerVdesMessage(msg); + const tsMs = Number.isFinite(next.ts_ms) ? Number(next.ts_ms) : Date.now(); + next._tsMs = tsMs; + next._ts = new Date(tsMs).toLocaleTimeString([], { + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + }); + if (next.lat != null && next.lon != null && window.vdesMapAddPoint) { + window.vdesMapAddPoint(next); + } + normalized.push(next); + } + normalized.reverse(); + vdesMessageHistory = normalized.concat(vdesMessageHistory); + pruneVdesMessageHistory(); + scheduleVdesBarUpdate(); + scheduleVdesHistoryRender(); +}; + +window.restoreVdesHistory = function(messages) { + window.onServerVdesBatch(messages); +}; + +document.getElementById("settings-clear-vdes-history")?.addEventListener("click", async () => { + if (!confirm("Clear all VDES decode history? This cannot be undone.")) return; + try { + await postPath("/clear_vdes_decode"); + window.resetVdesHistoryView(); + } catch (e) { + console.error("VDES history clear failed", e); + } +}); + +if (vdesFilterInput) { + vdesFilterInput.addEventListener("input", () => { + vdesFilterText = vdesFilterInput.value.trim().toUpperCase(); + renderVdesHistory(); + }); +} + +window.onServerVdes = function(msg) { + if (vdesStatus) vdesStatus.textContent = "Receiving"; + const next = normalizeServerVdesMessage(msg); + addVdesMessage(next); + if (next.lat != null && next.lon != null && window.vdesMapAddPoint) { + window.vdesMapAddPoint(next); + } +}; + +window.pruneVdesHistoryView = function() { + pruneVdesMessageHistory(); + updateVdesBar(); + renderVdesHistory(); +}; + +updateVdesSummary(); +if (window._trxDrainPendingDecode) window._trxDrainPendingDecode("vdes"); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/wefax.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/wefax.js new file mode 100644 index 0000000..d216a38 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/wefax.js @@ -0,0 +1,386 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// --------------------------------------------------------------------------- +// wefax.js — WEFAX decoder plugin for trx-frontend-http +// Live view: decoder state, live canvas, latest image card +// History view: filterable table of all decoded images +// --------------------------------------------------------------------------- + +// ── DOM references (cached once) ─────────────────────────────────── +var wefaxDom = { + status: document.getElementById('wefax-status'), + liveView: document.getElementById('wefax-live-view'), + historyView: document.getElementById('wefax-history-view'), + liveContainer: document.getElementById('wefax-live-container'), + liveInfo: document.getElementById('wefax-live-info'), + liveCanvas: document.getElementById('wefax-live-canvas'), + liveLatest: document.getElementById('wefax-live-latest'), + historyList: document.getElementById('wefax-history-list'), + historyCount: document.getElementById('wefax-history-count'), + filterInput: document.getElementById('wefax-filter'), + sortSelect: document.getElementById('wefax-sort'), + toggleBtn: document.getElementById('wefax-decode-toggle-btn'), + clearBtn: document.getElementById('wefax-clear-btn'), + viewLiveBtn: document.getElementById('wefax-view-live'), + viewHistoryBtn: document.getElementById('wefax-view-history'), +}; + +// ── State ─────────────────────────────────────────────────────────── +var wefaxImageHistory = []; +var WEFAX_MAX_IMAGES = 100; +var wefaxLiveCtx = null; +var wefaxLiveLineCount = 0; +var wefaxLivePixelsPerLine = 1809; +var wefaxActiveView = 'live'; +var wefaxFilterText = ''; + +// ── Helpers ───────────────────────────────────────────────────────── +function currentWefaxHistoryRetentionMs() { + return window.getDecodeHistoryRetentionMs ? window.getDecodeHistoryRetentionMs() : 24 * 60 * 60 * 1000; +} + +function pruneWefaxHistory() { + var cutoff = Date.now() - currentWefaxHistoryRetentionMs(); + wefaxImageHistory = wefaxImageHistory.filter(function (m) { return (m._tsMs || 0) > cutoff; }); +} + +function escapeHtml(s) { + return String(s) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +} + +function scheduleWefaxUi(key, job) { + if (typeof window.trxScheduleUiFrameJob === 'function') { + window.trxScheduleUiFrameJob(key, job); + return; + } + job(); +} + +// ── View switching ────────────────────────────────────────────────── +function switchWefaxView(view) { + wefaxActiveView = view; + if (wefaxDom.liveView) wefaxDom.liveView.style.display = view === 'live' ? '' : 'none'; + if (wefaxDom.historyView) wefaxDom.historyView.style.display = view === 'history' ? '' : 'none'; + + [wefaxDom.viewLiveBtn, wefaxDom.viewHistoryBtn].forEach(function (btn) { + if (btn) btn.classList.remove('sat-view-active'); + }); + if (view === 'live' && wefaxDom.viewLiveBtn) wefaxDom.viewLiveBtn.classList.add('sat-view-active'); + if (view === 'history' && wefaxDom.viewHistoryBtn) wefaxDom.viewHistoryBtn.classList.add('sat-view-active'); + + if (view === 'history') renderWefaxHistoryTable(); +} + +if (wefaxDom.viewLiveBtn) wefaxDom.viewLiveBtn.addEventListener('click', function () { switchWefaxView('live'); }); +if (wefaxDom.viewHistoryBtn) wefaxDom.viewHistoryBtn.addEventListener('click', function () { switchWefaxView('history'); }); + +// ── Live canvas rendering ─────────────────────────────────────────── +function resetLiveCanvas(pixelsPerLine) { + wefaxLivePixelsPerLine = pixelsPerLine; + wefaxLiveLineCount = 0; + wefaxDom.liveCanvas.width = pixelsPerLine; + wefaxDom.liveCanvas.height = 800; + wefaxLiveCtx = wefaxDom.liveCanvas.getContext('2d'); + wefaxLiveCtx.fillStyle = '#000'; + wefaxLiveCtx.fillRect(0, 0, wefaxDom.liveCanvas.width, wefaxDom.liveCanvas.height); + if (wefaxDom.liveContainer) wefaxDom.liveContainer.style.display = ''; +} + +function paintLine(lineBytes) { + if (!wefaxLiveCtx) return; + var y = wefaxLiveLineCount; + + if (y >= wefaxDom.liveCanvas.height) { + var old = wefaxLiveCtx.getImageData(0, 0, wefaxDom.liveCanvas.width, wefaxDom.liveCanvas.height); + wefaxDom.liveCanvas.height *= 2; + wefaxLiveCtx.putImageData(old, 0, 0); + } + + var w = wefaxLivePixelsPerLine; + var imgData = wefaxLiveCtx.createImageData(w, 1); + var d = imgData.data; + for (var x = 0; x < w; x++) { + var v = x < lineBytes.length ? lineBytes[x] : 0; + var i = x * 4; + d[i] = v; d[i + 1] = v; d[i + 2] = v; d[i + 3] = 255; + } + wefaxLiveCtx.putImageData(imgData, 0, y); + wefaxLiveLineCount++; +} + +// ── Live view: latest image card ──────────────────────────────────── +function renderWefaxLatestCard() { + if (!wefaxDom.liveLatest) return; + if (wefaxImageHistory.length === 0) { + wefaxDom.liveLatest.innerHTML = + '
    No images decoded yet. Enable the decoder and tune to a WEFAX station.
    '; + return; + } + + var img = wefaxImageHistory[0]; + var ts = img._ts || '--'; + var date = img._tsMs ? new Date(img._tsMs).toLocaleDateString() : ''; + var meta = [ + img.ioc + ' IOC', + img.lpm + ' LPM', + img.line_count + ' lines', + date + ' ' + ts, + ].join(' \u00b7 '); + + var imgSrc = img._dataUrl + ? img._dataUrl + : img.path + ? '/images/' + escapeHtml(img.path.split('/').pop()) + : null; + + var html = '
    '; + html += '
    Latest decoded image
    '; + html += '
    ' + escapeHtml(meta) + '
    '; + if (imgSrc) { + html += 'View full image'; + } + html += '
    '; + wefaxDom.liveLatest.innerHTML = html; +} + +// ── History view: table ───────────────────────────────────────────── +function getWefaxFilteredHistory() { + var items = wefaxImageHistory; + + if (wefaxFilterText) { + items = items.filter(function (i) { + var haystack = [ + String(i.ioc || ''), + String(i.lpm || ''), + String(i.line_count || ''), + ].join(' ').toUpperCase(); + return haystack.indexOf(wefaxFilterText) >= 0; + }); + } + + var sortVal = wefaxDom.sortSelect ? wefaxDom.sortSelect.value : 'newest'; + if (sortVal === 'oldest') items = items.slice().reverse(); + + return items; +} + +function renderWefaxHistoryRow(img) { + var row = document.createElement('div'); + row.className = 'sat-history-row'; + + var ts = img._ts || '--'; + var date = img._tsMs ? new Date(img._tsMs).toLocaleDateString([], { month: 'short', day: 'numeric' }) : ''; + var ioc = img.ioc || '--'; + var lpm = img.lpm || '--'; + var lines = img.line_count || 0; + + var imgSrc = img._dataUrl + ? img._dataUrl + : img.path + ? '/images/' + escapeHtml(img.path.split('/').pop()) + : null; + var link = imgSrc + ? 'View' + : '--'; + + row.innerHTML = [ + '' + escapeHtml(date + ' ' + ts) + '', + '' + escapeHtml(String(ioc)) + '', + '' + escapeHtml(String(lpm)) + '', + '' + lines + '', + '' + link + '', + ].join(''); + + return row; +} + +function renderWefaxHistoryTable() { + if (!wefaxDom.historyList) return; + pruneWefaxHistory(); + var items = getWefaxFilteredHistory(); + var fragment = document.createDocumentFragment(); + for (var i = 0; i < items.length; i++) { + fragment.appendChild(renderWefaxHistoryRow(items[i])); + } + wefaxDom.historyList.replaceChildren(fragment); + + if (wefaxDom.historyCount) { + var total = wefaxImageHistory.length; + var shown = items.length; + wefaxDom.historyCount.textContent = + total === 0 + ? 'No images yet' + : shown === total + ? total + ' image' + (total === 1 ? '' : 's') + : shown + ' of ' + total + ' images'; + } +} + +// ── Add image to history ──────────────────────────────────────────── +function addWefaxImage(msg) { + var tsMs = Number.isFinite(msg.ts_ms) ? Number(msg.ts_ms) : Date.now(); + msg._tsMs = tsMs; + msg._ts = new Date(tsMs).toLocaleTimeString([], { + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + }); + + // Capture the live canvas as a data URI for thumbnails. + if (wefaxLiveCtx && wefaxLiveLineCount > 0) { + var trimmed = wefaxLiveCtx.getImageData(0, 0, wefaxDom.liveCanvas.width, wefaxLiveLineCount); + wefaxDom.liveCanvas.height = wefaxLiveLineCount; + wefaxLiveCtx.putImageData(trimmed, 0, 0); + try { msg._dataUrl = wefaxDom.liveCanvas.toDataURL('image/png'); } catch (e) {} + } + + wefaxImageHistory.unshift(msg); + if (wefaxImageHistory.length > WEFAX_MAX_IMAGES) { + wefaxImageHistory = wefaxImageHistory.slice(0, WEFAX_MAX_IMAGES); + } + + scheduleWefaxUi('wefax-latest', renderWefaxLatestCard); + if (wefaxActiveView === 'history') { + scheduleWefaxUi('wefax-history', renderWefaxHistoryTable); + } +} + +// ── SSE event handlers (public API) ───────────────────────────────── +window.onServerWefaxProgress = function (msg) { + // State-only update (no image data): show decoder state in status. + if (msg.state && !msg.line_data) { + if (wefaxDom.status) { + wefaxDom.status.textContent = msg.state; + // Highlight active states, dim idle/scanning. + wefaxDom.status.style.color = msg.state.indexOf('Idle') === 0 ? '' : 'var(--text-accent)'; + } + return; + } + + if (msg.line_count <= 1 || !wefaxLiveCtx) { + resetLiveCanvas(msg.pixels_per_line || 1809); + } + + if (msg.line_data) { + var binary = atob(msg.line_data); + var bytes = new Uint8Array(binary.length); + for (var i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i); + paintLine(bytes); + } + + if (wefaxDom.liveInfo) { + wefaxDom.liveInfo.textContent = + 'Line ' + msg.line_count + ' \u00b7 ' + msg.ioc + ' IOC \u00b7 ' + msg.lpm + ' LPM'; + } + if (wefaxDom.status) { + wefaxDom.status.textContent = 'Receiving \u2014 line ' + msg.line_count; + wefaxDom.status.style.color = 'var(--text-accent)'; + } +}; + +window.onServerWefax = function (msg) { + addWefaxImage(msg); + + if (wefaxDom.liveContainer) wefaxDom.liveContainer.style.display = 'none'; + if (wefaxDom.status) { + wefaxDom.status.textContent = 'Complete \u2014 ' + msg.line_count + ' lines'; + wefaxDom.status.style.color = ''; + } +}; + +window.restoreWefaxHistory = function (messages) { + if (!messages || !messages.length) return; + for (var i = 0; i < messages.length; i++) { + var tsMs = Number.isFinite(messages[i].ts_ms) ? Number(messages[i].ts_ms) : Date.now(); + messages[i]._tsMs = tsMs; + messages[i]._ts = new Date(tsMs).toLocaleTimeString([], { + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + }); + } + wefaxImageHistory = messages.concat(wefaxImageHistory); + pruneWefaxHistory(); + scheduleWefaxUi('wefax-latest', renderWefaxLatestCard); + if (wefaxActiveView === 'history') { + scheduleWefaxUi('wefax-history', renderWefaxHistoryTable); + } +}; + +window.pruneWefaxHistoryView = function () { + pruneWefaxHistory(); + renderWefaxHistoryTable(); + renderWefaxLatestCard(); +}; + +window.resetWefaxHistoryView = function () { + wefaxImageHistory = []; + if (wefaxDom.historyList) wefaxDom.historyList.innerHTML = ''; + if (wefaxDom.liveContainer) wefaxDom.liveContainer.style.display = 'none'; + wefaxLiveCtx = null; + wefaxLiveLineCount = 0; + renderWefaxLatestCard(); + renderWefaxHistoryTable(); + if (wefaxDom.status) { + wefaxDom.status.textContent = 'Idle'; + wefaxDom.status.style.color = ''; + } +}; + +// ── Filter / sort handlers ────────────────────────────────────────── +if (wefaxDom.filterInput) { + wefaxDom.filterInput.addEventListener('input', function () { + wefaxFilterText = wefaxDom.filterInput.value.trim().toUpperCase(); + scheduleWefaxUi('wefax-history', renderWefaxHistoryTable); + }); +} +if (wefaxDom.sortSelect) { + wefaxDom.sortSelect.addEventListener('change', function () { + scheduleWefaxUi('wefax-history', renderWefaxHistoryTable); + }); +} + +// ── Toggle button sync ────────────────────────────────────────────── +// Sync the Enable/Disable button from the SSE state update. This is +// belt-and-suspenders alongside app.js _decoderToggles — guarantees the +// WEFAX button always reflects the server state. +window.syncWefaxToggle = function (enabled) { + if (!wefaxDom.toggleBtn) return; + wefaxDom.toggleBtn.dataset.enabled = enabled ? 'true' : 'false'; + wefaxDom.toggleBtn.textContent = enabled ? 'Disable WEFAX' : 'Enable WEFAX'; + wefaxDom.toggleBtn.style.borderColor = enabled ? '#00d17f' : ''; + wefaxDom.toggleBtn.style.color = enabled ? '#00d17f' : ''; +}; + +// ── Button handlers ───────────────────────────────────────────────── +if (wefaxDom.toggleBtn) { + wefaxDom.toggleBtn.addEventListener('click', async function () { + try { + if (window.takeSchedulerControlForDecoderDisable) { + await window.takeSchedulerControlForDecoderDisable(wefaxDom.toggleBtn); + } + await postPath('/toggle_wefax_decode'); + } catch (e) { + console.error('WEFAX toggle failed', e); + } + }); +} +if (wefaxDom.clearBtn) { + wefaxDom.clearBtn.addEventListener('click', async function () { + try { + await postPath('/clear_wefax_decode'); + window.resetWefaxHistoryView(); + } catch (e) { + console.error('WEFAX clear failed', e); + } + }); +} + +// ── Initial render ────────────────────────────────────────────────── +renderWefaxLatestCard(); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/wspr.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/wspr.js new file mode 100644 index 0000000..c6861a1 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/wspr.js @@ -0,0 +1,292 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// --- WSPR Decoder Plugin (server-side decode) --- +const wsprStatus = document.getElementById("wspr-status"); +const wsprPeriodEl = document.getElementById("wspr-period"); +const wsprMessagesEl = document.getElementById("wspr-messages"); +const wsprFilterInput = document.getElementById("wspr-filter"); +const WSPR_PERIOD_SECONDS = 120; +let wsprFilterText = ""; +let wsprMessageHistory = []; + +function currentWsprHistoryRetentionMs() { + return typeof window.getDecodeHistoryRetentionMs === "function" + ? window.getDecodeHistoryRetentionMs() + : 24 * 60 * 60 * 1000; +} + +function pruneWsprMessageHistory() { + const cutoffMs = Date.now() - currentWsprHistoryRetentionMs(); + wsprMessageHistory = wsprMessageHistory.filter((msg) => Number(msg?._tsMs ?? msg?.ts_ms) >= cutoffMs); +} + +function scheduleWsprHistoryRender() { + if (typeof window.trxScheduleUiFrameJob === "function") { + window.trxScheduleUiFrameJob("wspr-history", () => renderWsprHistory()); + return; + } + renderWsprHistory(); +} + +function fmtWsprTime(tsMs) { + if (!tsMs) return "--:--:--"; + return new Date(tsMs).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" }); +} + +function updateWsprPeriodTimer() { + if (!wsprPeriodEl) return; + const nowSec = Math.floor(Date.now() / 1000); + const remaining = WSPR_PERIOD_SECONDS - (nowSec % WSPR_PERIOD_SECONDS); + const mm = String(Math.floor(remaining / 60)).padStart(2, "0"); + const ss = String(remaining % 60).padStart(2, "0"); + wsprPeriodEl.textContent = `Next slot ${mm}:${ss}`; +} + +updateWsprPeriodTimer(); +setInterval(updateWsprPeriodTimer, 500); + +function renderWsprRow(msg) { + const row = document.createElement("div"); + row.className = "ft8-row"; + row.dataset.decoder = "wspr"; + const snr = Number.isFinite(msg.snr_db) ? msg.snr_db.toFixed(1) : "--"; + const dt = Number.isFinite(msg.dt_s) ? msg.dt_s.toFixed(2) : "--"; + const baseHz = Number.isFinite(window.ft8BaseHz) ? window.ft8BaseHz : null; + const rfHz = Number.isFinite(msg.freq_hz) && Number.isFinite(baseHz) ? (baseHz + msg.freq_hz) : null; + const freq = Number.isFinite(rfHz) ? rfHz.toFixed(0) : "--"; + const message = (msg.message || "").toString(); + row.dataset.message = message.toUpperCase(); + row.innerHTML = `${fmtWsprTime(msg.ts_ms)}${snr}${dt}${freq}${renderWsprMessage(message)}`; + applyWsprFilterToRow(row); + return row; +} + +function renderWsprHistory() { + pruneWsprMessageHistory(); + if (!wsprMessagesEl) return; + const fragment = document.createDocumentFragment(); + for (let i = 0; i < wsprMessageHistory.length; i += 1) { + fragment.appendChild(renderWsprRow(wsprMessageHistory[i])); + } + wsprMessagesEl.replaceChildren(fragment); +} + +function addWsprMessage(msg) { + msg._tsMs = Number.isFinite(msg?.ts_ms) ? Number(msg.ts_ms) : Date.now(); + wsprMessageHistory.unshift(msg); + pruneWsprMessageHistory(); + scheduleWsprHistoryRender(); +} + +function normalizeServerWsprMessage(msg) { + const raw = (msg.message || "").toString(); + const grids = extractAllGrids(raw); + const station = extractLikelyCallsign(raw); + const baseHz = Number.isFinite(window.ft8BaseHz) ? Number(window.ft8BaseHz) : null; + const rfHz = Number.isFinite(msg.freq_hz) && Number.isFinite(baseHz) + ? (baseHz + Number(msg.freq_hz)) + : (Number.isFinite(msg.freq_hz) ? Number(msg.freq_hz) : null); + return { + raw, + grids, + station, + rfHz, + history: { + receiver: window.getDecodeRigMeta ? window.getDecodeRigMeta() : null, + ts_ms: msg.ts_ms, + snr_db: msg.snr_db, + dt_s: msg.dt_s, + freq_hz: msg.freq_hz, + message: raw, + }, + }; +} + +window.onServerWsprBatch = function(messages) { + if (!Array.isArray(messages) || messages.length === 0) return; + wsprStatus.textContent = "Receiving"; + const normalized = []; + for (const msg of messages) { + const next = normalizeServerWsprMessage(msg); + if (next.grids.length > 0 && window.mapAddLocator) { + window.mapAddLocator(next.raw, next.grids, "wspr", next.station, { + ...msg, + freq_hz: next.rfHz, + }); + } + next.history._tsMs = Number.isFinite(next.history?.ts_ms) ? Number(next.history.ts_ms) : Date.now(); + normalized.push(next.history); + } + normalized.reverse(); + wsprMessageHistory = normalized.concat(wsprMessageHistory); + pruneWsprMessageHistory(); + scheduleWsprHistoryRender(); +}; + +window.restoreWsprHistory = function(messages) { + window.onServerWsprBatch(messages); +}; + +window.pruneWsprHistoryView = function() { + pruneWsprMessageHistory(); + renderWsprHistory(); +}; + +function escapeWsprHtml(input) { + return input + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll("\"", """); +} + +function renderWsprMessage(message) { + let out = ""; + let i = 0; + while (i < message.length) { + const ch = message[i]; + if (isAlphaNum(ch)) { + let j = i + 1; + while (j < message.length && isAlphaNum(message[j])) j++; + const token = message.slice(i, j); + const grid = token.toUpperCase(); + if (isMaidenheadGridToken(grid)) { + out += `${grid}`; + } else { + out += escapeWsprHtml(token); + } + i = j; + } else { + out += escapeWsprHtml(ch); + i += 1; + } + } + return out; +} + +function extractAllGrids(message) { + const out = []; + const seen = new Set(); + const parts = message.toUpperCase().split(/[^A-Z0-9]+/); + for (const token of parts) { + if (!token) continue; + if (isMaidenheadGridToken(token) && !seen.has(token)) { + seen.add(token); + out.push(token); + } + } + return out; +} + +function extractLikelyCallsign(message) { + const parts = String(message || "").toUpperCase().split(/[^A-Z0-9/]+/); + for (const token of parts) { + if (!token) continue; + if (token.length < 3 || token.length > 12) continue; + if (token === "CQ" || token === "DE" || token === "QRZ" || token === "DX") continue; + if (isMaidenheadGridToken(token)) continue; + if (/^[A-Z0-9/]{1,5}\d[A-Z0-9/]{1,6}$/.test(token)) return token; + } + return null; +} + +function isFtxFarewellToken(token) { + const normalized = String(token || "").trim().toUpperCase(); + return normalized === "RR73" || normalized === "73" || normalized === "RR"; +} + +function isMaidenheadGridToken(token) { + const normalized = String(token || "").trim().toUpperCase(); + return /^[A-R]{2}\d{2}(?:[A-X]{2})?$/.test(normalized) && !isFtxFarewellToken(normalized); +} + +function isAlphaNum(ch) { + return /[A-Za-z0-9]/.test(ch); +} + +function activateWsprHistoryLocator(targetEl) { + const locatorEl = targetEl?.closest?.(".ft8-locator[data-locator-grid]"); + if (!locatorEl) return false; + const grid = String(locatorEl.dataset.locatorGrid || "").toUpperCase(); + if (!grid) return false; + if (typeof window.navigateToMapLocator === "function") { + window.navigateToMapLocator(grid, "wspr"); + } + return true; +} + +function applyWsprFilterToRow(row) { + if (!wsprFilterText) { + row.style.display = ""; + return; + } + const message = row.dataset.message || ""; + row.style.display = message.includes(wsprFilterText) ? "" : "none"; +} + +function applyWsprFilterToAll() { + const rows = wsprMessagesEl.querySelectorAll(".ft8-row"); + rows.forEach((row) => applyWsprFilterToRow(row)); +} + +window.resetWsprHistoryView = function() { + wsprMessagesEl.innerHTML = ""; + wsprMessageHistory = []; + renderWsprHistory(); + if (window.clearMapMarkersByType) window.clearMapMarkersByType("wspr"); +}; + +if (wsprFilterInput) { + wsprFilterInput.addEventListener("input", () => { + wsprFilterText = wsprFilterInput.value.trim().toUpperCase(); + renderWsprHistory(); + }); +} + +if (wsprMessagesEl) { + wsprMessagesEl.addEventListener("click", (event) => { + if (!activateWsprHistoryLocator(event.target)) return; + event.preventDefault(); + event.stopPropagation(); + }); + wsprMessagesEl.addEventListener("keydown", (event) => { + if (event.key !== "Enter" && event.key !== " ") return; + if (!activateWsprHistoryLocator(event.target)) return; + event.preventDefault(); + event.stopPropagation(); + }); +} + +const wsprDecodeToggleBtn = document.getElementById("wspr-decode-toggle-btn"); +wsprDecodeToggleBtn?.addEventListener("click", async () => { + try { + await window.takeSchedulerControlForDecoderDisable?.(wsprDecodeToggleBtn); + await postPath("/toggle_wspr_decode"); + } catch (e) { + console.error("WSPR toggle failed", e); + } +}); + +document.getElementById("settings-clear-wspr-history")?.addEventListener("click", async () => { + if (!confirm("Clear all WSPR decode history? This cannot be undone.")) return; + try { + await postPath("/clear_wspr_decode"); + window.resetWsprHistoryView(); + } catch (e) { + console.error("WSPR history clear failed", e); + } +}); + +window.onServerWspr = function(msg) { + wsprStatus.textContent = "Receiving"; + const next = normalizeServerWsprMessage(msg); + if (next.grids.length > 0 && window.mapAddLocator) { + window.mapAddLocator(next.raw, next.grids, "wspr", next.station, { + ...msg, + freq_hz: next.rfHz, + }); + } + addWsprMessage(next.history); +}; diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/screenshot.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/screenshot.js new file mode 100644 index 0000000..f861d18 --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/screenshot.js @@ -0,0 +1,265 @@ +// SPDX-FileCopyrightText: 2026 Stan Grams +// +// SPDX-License-Identifier: GPL-2.0-or-later + +// Spectrum screenshot module (loaded on demand when user triggers screenshot). +// Communicates with app.js core via window.trx namespace. +(function () { + "use strict"; + const T = window.trx; + + function isVisibleForSnapshot(el) { + if (!el) return false; + const style = getComputedStyle(el); + if (style.display === "none" || style.visibility === "hidden") return false; + const opacity = Number(style.opacity); + if (Number.isFinite(opacity) && opacity <= 0) return false; + const rect = el.getBoundingClientRect(); + return rect.width > 0 && rect.height > 0; + } + + function drawRoundedRectPath(ctx, x, y, w, h, r) { + const radius = Math.max(0, Math.min(r, Math.min(w, h) / 2)); + ctx.beginPath(); + ctx.moveTo(x + radius, y); + ctx.lineTo(x + w - radius, y); + ctx.quadraticCurveTo(x + w, y, x + w, y + radius); + ctx.lineTo(x + w, y + h - radius); + ctx.quadraticCurveTo(x + w, y + h, x + w - radius, y + h); + ctx.lineTo(x + radius, y + h); + ctx.quadraticCurveTo(x, y + h, x, y + h - radius); + ctx.lineTo(x, y + radius); + ctx.quadraticCurveTo(x, y, x + radius, y); + ctx.closePath(); + } + + function drawElementChrome(ctx, el, rootRect, maxAlpha = 1) { + if (!isVisibleForSnapshot(el)) return null; + const rect = el.getBoundingClientRect(); + const style = getComputedStyle(el); + const x = rect.left - rootRect.left; + const y = rect.top - rootRect.top; + const w = rect.width; + const h = rect.height; + const radius = parseFloat(style.borderTopLeftRadius) || 0; + const bg = T.cssColorToRgba(style.backgroundColor || "rgba(0,0,0,0)"); + const borderWidth = Math.max(0, parseFloat(style.borderTopWidth) || 0); + const border = T.cssColorToRgba(style.borderTopColor || "rgba(0,0,0,0)"); + + const bgAlpha = Math.min(bg[3], maxAlpha); + if (bgAlpha > 0.01) { + drawRoundedRectPath(ctx, x, y, w, h, radius); + ctx.fillStyle = `rgba(${Math.round(bg[0])}, ${Math.round(bg[1])}, ${Math.round(bg[2])}, ${bgAlpha})`; + ctx.fill(); + } + const borderAlpha = Math.min(border[3], maxAlpha); + if (borderWidth > 0 && borderAlpha > 0.01) { + drawRoundedRectPath(ctx, x + borderWidth * 0.5, y + borderWidth * 0.5, w - borderWidth, h - borderWidth, Math.max(0, radius - borderWidth * 0.5)); + ctx.lineWidth = borderWidth; + ctx.strokeStyle = `rgba(${Math.round(border[0])}, ${Math.round(border[1])}, ${Math.round(border[2])}, ${borderAlpha})`; + ctx.stroke(); + } + return { x, y, w, h, style }; + } + + function drawWrappedText(ctx, text, x, y, maxWidth, lineHeight, maxLines) { + const words = String(text || "").split(/\s+/).filter(Boolean); + if (!words.length) return; + let line = ""; + let lineIdx = 0; + for (let i = 0; i < words.length; i += 1) { + const candidate = line ? `${line} ${words[i]}` : words[i]; + if (ctx.measureText(candidate).width <= maxWidth || !line) { + line = candidate; + continue; + } + ctx.fillText(line, x, y + lineIdx * lineHeight); + lineIdx += 1; + if (lineIdx >= maxLines) return; + line = words[i]; + } + if (line && lineIdx < maxLines) { + ctx.fillText(line, x, y + lineIdx * lineHeight); + } + } + + function drawElementTextBlock(ctx, el, rootRect, fallbackText = null, maxAlpha = 1) { + const chrome = drawElementChrome(ctx, el, rootRect, maxAlpha); + if (!chrome) return; + const text = (fallbackText == null ? el.innerText : fallbackText) || ""; + const clean = text.replace(/\s+\n/g, "\n").replace(/\n\s+/g, "\n").trim(); + if (!clean) return; + const style = chrome.style; + const fontSize = parseFloat(style.fontSize) || 12; + const lineHeight = (parseFloat(style.lineHeight) || fontSize * 1.25); + const padX = 6; + const padY = 4; + const maxWidth = Math.max(20, chrome.w - padX * 2); + const maxLines = Math.max(1, Math.floor((chrome.h - padY * 2) / lineHeight)); + ctx.fillStyle = style.color || "#ffffff"; + ctx.font = `${style.fontStyle || "normal"} ${style.fontWeight || "400"} ${style.fontSize || "12px"} ${style.fontFamily || "sans-serif"}`; + ctx.textBaseline = "top"; + const lines = clean.split(/\n+/); + let lineCursor = 0; + for (const line of lines) { + if (lineCursor >= maxLines) break; + drawWrappedText( + ctx, + line, + chrome.x + padX, + chrome.y + padY + lineCursor * lineHeight, + maxWidth, + lineHeight, + maxLines - lineCursor, + ); + lineCursor += 1; + } + } + + function drawAxisLabels(ctx, axisEl, rootRect) { + if (!isVisibleForSnapshot(axisEl)) return; + for (const node of axisEl.children) { + if (!(node instanceof HTMLElement)) continue; + if (!(node.matches("span") || node.matches("button"))) continue; + if (!isVisibleForSnapshot(node)) continue; + const chrome = drawElementChrome(ctx, node, rootRect); + const text = (node.textContent || "").trim(); + if (!chrome || !text) continue; + const style = chrome.style; + ctx.fillStyle = style.color || "#ffffff"; + ctx.font = `${style.fontStyle || "normal"} ${style.fontWeight || "400"} ${style.fontSize || "12px"} ${style.fontFamily || "sans-serif"}`; + ctx.textBaseline = "middle"; + ctx.fillText(text, chrome.x + 4, chrome.y + chrome.h / 2); + } + } + + function buildSpectrumSnapshotCanvas() { + const rootEl = document.querySelector(".signal-visual-block"); + const spectrumPanelEl = document.getElementById("spectrum-panel"); + if (!rootEl || !isVisibleForSnapshot(rootEl) || !isVisibleForSnapshot(spectrumPanelEl)) { + return null; + } + for (const renderer of [T.overviewGl, T.spectrumGl, T.signalOverlayGl]) { + const gl = renderer?.gl; + if (!gl) continue; + try { + if (typeof gl.flush === "function") gl.flush(); + if (typeof gl.finish === "function") gl.finish(); + } catch (_) { + // Ignore transient WebGL state errors and capture the last good frame. + } + } + const rootRect = rootEl.getBoundingClientRect(); + const dpr = window.devicePixelRatio || 1; + const out = document.createElement("canvas"); + out.width = Math.max(1, Math.round(rootRect.width * dpr)); + out.height = Math.max(1, Math.round(rootRect.height * dpr)); + const ctx = out.getContext("2d"); + if (!ctx) return null; + ctx.scale(dpr, dpr); + + const bg = getComputedStyle(document.documentElement).getPropertyValue("--bg").trim() || getComputedStyle(document.body).backgroundColor || "#000"; + ctx.fillStyle = bg; + ctx.fillRect(0, 0, rootRect.width, rootRect.height); + + const signalOverlayCanvas = document.getElementById("signal-overlay-canvas"); + const canvases = [T.overviewCanvas, T.spectrumCanvas, signalOverlayCanvas]; + for (const canvas of canvases) { + if (!canvas || !isVisibleForSnapshot(canvas)) continue; + const rect = canvas.getBoundingClientRect(); + ctx.drawImage( + canvas, + rect.left - rootRect.left, + rect.top - rootRect.top, + rect.width, + rect.height, + ); + } + + // Decoder overlays over the signal view. + // Cap background alpha to avoid opaque blocks (backdrop-filter can't be + // replicated on canvas, so frosted-glass overlays would otherwise obscure + // the spectrum). + const decoderOverlayIds = [ + "ais-bar-overlay", + "vdes-bar-overlay", + "ft8-bar-overlay", + "aprs-bar-overlay", + "rds-ps-overlay", + ]; + for (const id of decoderOverlayIds) { + const overlayEl = document.getElementById(id); + if (!overlayEl || !isVisibleForSnapshot(overlayEl)) continue; + drawElementTextBlock(ctx, overlayEl, rootRect, null, 0.35); + } + + // Spectrum axis labels and bookmark chips (includes freq bar). + const spectrumFreqAxis = document.getElementById("spectrum-freq-axis"); + const spectrumDbAxis = document.getElementById("spectrum-db-axis"); + drawAxisLabels(ctx, spectrumFreqAxis, rootRect); + drawAxisLabels(ctx, spectrumDbAxis, rootRect); + drawAxisLabels(ctx, document.getElementById("spectrum-bookmark-axis"), rootRect); + drawAxisLabels(ctx, document.getElementById("spectrum-bookmark-side-left"), rootRect); + drawAxisLabels(ctx, document.getElementById("spectrum-bookmark-side-right"), rootRect); + + return out; + } + + function clickCanvasDownload(href, fileName) { + const a = document.createElement("a"); + a.href = href; + a.download = fileName; + a.rel = "noopener"; + a.style.display = "none"; + document.body.appendChild(a); + a.click(); + requestAnimationFrame(() => a.remove()); + } + + function saveCanvasAsPng(canvas, fileName) { + if (!canvas) return Promise.resolve(false); + if (typeof canvas.toBlob === "function") { + return new Promise((resolve) => { + try { + canvas.toBlob((blob) => { + if (!blob) { + resolve(false); + return; + } + const url = URL.createObjectURL(blob); + clickCanvasDownload(url, fileName); + setTimeout(() => URL.revokeObjectURL(url), 1000); + resolve(true); + }, "image/png"); + } catch (_) { + resolve(false); + } + }); + } + try { + clickCanvasDownload(canvas.toDataURL("image/png"), fileName); + return Promise.resolve(true); + } catch (_) { + return Promise.resolve(false); + } + } + + async function captureSpectrumScreenshot() { + const snapshotCanvas = buildSpectrumSnapshotCanvas(); + if (!snapshotCanvas) { + T.showHint("Spectrum view not ready", 1300); + return false; + } + const stamp = new Date().toISOString().replace(/[:.]/g, "-"); + const saved = await saveCanvasAsPng(snapshotCanvas, `trx-spectrum-${stamp}.png`); + T.showHint(saved ? "Spectrum screenshot saved" : "Spectrum screenshot failed", saved ? 1500 : 1800); + return saved; + } + + // Register module API + window.trx.screenshot = { + captureSpectrumScreenshot, + buildSpectrumSnapshotCanvas, + saveCanvasAsPng, + }; +})(); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/style.css b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/style.css new file mode 100644 index 0000000..cacaaba --- /dev/null +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/style.css @@ -0,0 +1,4947 @@ +/* +SPDX-FileCopyrightText: 2026 Stan Grams + +SPDX-License-Identifier: GPL-2.0-or-later +*/ + +:root { + --bg: #070d1a; + --card-bg: #0f172a; + --input-bg: #0b1324; + --border: #22324a; + --border-light: #304766; + --text: #e7edf9; + --text-muted: #9bb0ca; + --text-heading: #c6d5ea; + --btn-bg: #16243a; + --btn-border: #3a5274; + --accent-green: #c24b1a; + --accent-yellow: #f0ad4e; + --accent-red: #e55353; + --vchan-color: #38bdf8; + --control-height: 2.6rem; + --jog-hi: #243a5b; + --jog-lo: #14233a; + --jog-shadow: rgba(0,0,0,0.3); + --jog-inset: rgba(255,255,255,0.05); + --audio-level-bg: #14263f; + --audio-level-border: #304766; + --audio-level-fill-start: #c24b1a; + --audio-level-fill-end: #f0ad4e; + --filter-bg: #13253e; + --filter-fg: #e7edf9; + --filter-border: #385577; + --wavelength-fg: #8da3be; + --spectrum-bg: #0a0f18; + --overview-plot-height: 160px; + --spectrum-plot-height: 160px; + --jog-wheel-size: 83.2px; + --header-waterfall-overlap: 0rem; + --card-base-max-width: 1280px; + --card-max-width: 1600px; + --card-bookmark-gutter: 9.5rem; + --spectrum-bookmark-side-width: 6.5rem; + --spectrum-bookmark-side-offset: 8.85rem; + --btn-hover-bg: color-mix(in srgb, var(--btn-bg) 85%, var(--text) 15%); + --btn-active-bg: color-mix(in srgb, var(--btn-bg) 75%, var(--text) 25%); + --border-hover: color-mix(in srgb, var(--border-light) 80%, var(--text) 20%); + --accent-green-hover: color-mix(in srgb, var(--accent-green) 85%, #fff 15%); + --accent-green-active: color-mix(in srgb, var(--accent-green) 75%, #fff 25%); +} + +[data-theme="light"] { + --bg: #edf2f7; + --card-bg: #ffffff; + --input-bg: #f7fafc; + --border: #d6deea; + --border-light: #bcc8da; + --text: #1a202c; + --text-muted: #4a5568; + --text-heading: #2d3748; + --btn-bg: #e6edf8; + --btn-border: #a9b8cf; + --accent-green: #b04317; + --accent-yellow: #b57600; + --accent-red: #cf3f3f; + --jog-hi: #e6edf8; + --jog-lo: #cdd9eb; + --jog-shadow: rgba(58, 79, 110, 0.18); + --jog-inset: rgba(255,255,255,0.75); + --audio-level-bg: #edf2fb; + --audio-level-border: #b8c5da; + --audio-level-fill-start: #b04317; + --audio-level-fill-end: #b57600; + --filter-bg: #eef3fb; + --filter-fg: #1f2937; + --filter-border: #b8c5da; + --wavelength-fg: #6b7280; + --spectrum-bg: #eef3fb; +} + +@font-face { + font-family: 'DSEG14 Classic'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url('/vendor/dseg14-classic-latin-400-normal.woff2') format('woff2'); + unicode-range: U+0020-007E; +} + +body { + font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + margin: 0; + min-height: 100vh; + min-height: 100dvh; + box-sizing: border-box; + display: block; + background: var(--bg); + color: var(--text); + overflow-x: hidden; + overflow-y: auto; +} +.card { + width: min(100%, var(--card-base-max-width)); + margin: 0 auto; + padding: 0.85rem 1.25rem 1.5rem; + background: transparent; + box-sizing: border-box; + min-height: 100vh; + min-height: 100dvh; + display: flex; + flex-direction: column; + overflow: visible; +} + +@media (min-width: 1100px) { + .card { + width: min( + var(--card-max-width), + calc(100vw - (var(--card-bookmark-gutter) * 2)) + ); + } +} +.label { color: var(--text-muted); font-size: 0.9rem; margin-bottom: 6px; display: block; } +#tab-main .label > span { + display: inline-block; + padding: 0.14rem 0.5rem; + border-radius: 999px; + border: 1px solid color-mix(in srgb, var(--border-light) 68%, transparent); + background: color-mix(in srgb, var(--btn-bg) 58%, transparent); + color: var(--text-muted); + font-size: 0.78rem; + font-weight: 700; + letter-spacing: 0.04em; + line-height: 1.2; +} +.status { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.1rem 1rem; } +.controls-tray-shell { + min-width: 0; +} +.controls-tray-scroll { + width: 100%; + min-width: 0; + overflow-x: auto; + overflow-y: hidden; + padding-bottom: 0.2rem; +} +.controls-tray { + display: grid; + gap: 0.95rem; + width: max(100%, 58rem); + min-width: 0; + box-sizing: border-box; + padding: 0.95rem 1rem 1rem; + border: 1px solid color-mix(in srgb, var(--border-light) 85%, transparent); + border-radius: 1rem; + background: + linear-gradient(180deg, + color-mix(in srgb, var(--surface) 88%, transparent), + color-mix(in srgb, var(--btn-bg) 76%, transparent)); + box-shadow: inset 0 1px 0 color-mix(in srgb, #ffffff 12%, transparent); +} +input.status-input, select.status-input { width: 100%; padding: 0.45rem 0.5rem; font-size: 1rem; border: 1px solid var(--border-light); border-radius: 6px; background: var(--input-bg); color: var(--text); } +#mode { height: var(--control-height); } +#freq { font-family: 'DSEG14 Classic', monospace; font-size: 2rem; padding: 0.5rem 0.6rem; letter-spacing: 0.05em; text-align: center; } +#freq:disabled, +#center-freq:disabled { + opacity: 1; + -webkit-text-fill-color: currentColor; +} +#center-freq { color: var(--wavelength-fg); } +.controls-row { + display: grid; + grid-template-columns: minmax(0, 1fr) auto auto minmax(0, 1fr); + gap: 1rem; + align-items: start; +} +.controls-col { + min-width: 0; + display: flex; + flex-direction: column; + justify-content: flex-start; +} +.controls-col.label-below-col { + align-items: stretch; +} +.controls-col.label-below-col .label { + order: 2; + margin-top: 0.3rem; + margin-bottom: 0; +} +.controls-col-power.label-below-col .label { + justify-content: flex-end; +} +.controls-col.label-below-col > :not(.label) { + order: 1; +} +.controls-col.label-below-col .inline, +.controls-col.label-below-col .btn-grid { + align-self: stretch; + width: 100%; + margin-top: calc((var(--jog-wheel-size) - var(--control-height)) / 2); +} +.controls-col-center { + justify-self: center; + width: auto; + align-items: center; +} +.controls-col-wfm.label-below-col .label { + justify-content: flex-start; +} +.wfm-controls-inline { + gap: 0.45rem; + justify-content: flex-start; + align-items: flex-end; + flex-wrap: wrap; +} +.wfm-control { + display: flex; + flex-direction: column; + align-items: stretch; + gap: 0.22rem; + color: var(--text-muted); + font-size: 0.72rem; + line-height: 1.1; + white-space: nowrap; +} +.wfm-control-label { + font-size: 0.68rem; + font-weight: 700; + letter-spacing: 0.04em; + text-transform: uppercase; + color: var(--text-muted); +} +.wfm-control .status-input { + min-width: 4.4rem; + width: auto; + height: 2.1rem; + padding: 0.28rem 0.45rem; + font-size: 0.85rem; + line-height: 1.2; + box-sizing: border-box; +} +.wfm-control input.status-input { + width: 4.25rem; +} +.wfm-gain-group { + display: flex; + align-items: flex-end; + gap: 0.35rem; +} +.wfm-inline-btn { + min-width: 3rem; + height: 2.1rem; + padding: 0 0.6rem; + font-size: 0.8rem; + line-height: 1.1; + flex-shrink: 0; +} +.wfm-st-flag-wrap { + min-width: 0; +} +.wfm-st-flag { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 2.7rem; + min-height: 2.1rem; + padding: 0.28rem 0.5rem; + box-sizing: border-box; + border: 1px solid var(--border-light); + border-radius: 6px; + font-size: 0.82rem; + font-weight: 800; + line-height: 1.2; + letter-spacing: 0.04em; + background: var(--input-bg); +} +.wfm-st-flag-stereo { + color: #ff5c5c; + border-color: color-mix(in srgb, #ff5c5c 65%, var(--border-light)); + background: color-mix(in srgb, #ff5c5c 14%, var(--input-bg)); +} +.wfm-st-flag-mono { + color: var(--text-muted); + border-color: var(--border-light); + background: color-mix(in srgb, var(--input-bg) 92%, var(--panel-2)); +} +.wfm-intf-bar-wrap { + min-width: 3.6rem; +} +.wfm-intf-bar { + position: relative; + display: flex; + align-items: center; + justify-content: center; + min-width: 3.6rem; + min-height: 2.1rem; + padding: 0; + box-sizing: border-box; + border: 1px solid var(--border-light); + border-radius: 6px; + overflow: hidden; + background: var(--input-bg); +} +.wfm-intf-fill { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 0%; + border-radius: 5px 0 0 5px; + background: color-mix(in srgb, #4fc3f7 45%, transparent); + transition: width 0.25s ease, background-color 0.35s ease; +} +.wfm-intf-fill.wfm-intf-warn { + background: color-mix(in srgb, #ffa726 55%, transparent); +} +.wfm-intf-fill.wfm-intf-high { + background: color-mix(in srgb, #ef5350 55%, transparent); +} +.wfm-intf-val { + position: relative; + z-index: 1; + font-size: 0.78rem; + font-weight: 700; + letter-spacing: 0.03em; + color: var(--text-primary); +} +.controls-col-center::after { + content: ""; + display: block; + min-height: 1.2rem; + margin-top: 0.3rem; +} +.controls-row .label { + margin-bottom: 6px; + margin-top: 0; + min-height: 1.2rem; + display: flex; + align-items: center; + white-space: nowrap; +} +.controls-col .inline, +.controls-col .btn-grid { + align-self: stretch; +} +.controls-col .jog-container { align-self: center; } +.btn-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 0.5rem; +} +.btn-grid button { width: 100%; height: var(--control-height); } +.jog-container { + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; +} +.jog-wheel { + width: var(--jog-wheel-size); + height: var(--jog-wheel-size); + border-radius: 50%; + background: radial-gradient(circle at 40% 35%, var(--jog-hi), var(--jog-lo)); + border: 2px solid var(--border-light); + position: relative; + cursor: grab; + flex-shrink: 0; + box-shadow: 0 2px 8px var(--jog-shadow), inset 0 1px 0 var(--jog-inset); + user-select: none; + -webkit-user-select: none; + touch-action: none; +} +.jog-indicator { + position: absolute; + width: 6.4px; + height: 16px; + background: var(--accent-green); + border-radius: 2px; + top: 6.4px; + left: 50%; + transform-origin: 50% 35.2px; + transform: translateX(-50%); + pointer-events: none; +} +.jog-btn { + width: 3.3rem; + height: 3.3rem; + font-size: 1.8rem; + padding: 0; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + flex-shrink: 0; +} +.jog-step { + display: flex; + border: 1px solid var(--border-light); + border-radius: 6px; + overflow: hidden; + height: 3.35rem; + flex-shrink: 0; +} +.jog-step button { + border: none; + border-right: 1px solid var(--border-light); + border-radius: 0; + height: 100%; + padding: 0 0.65rem; + font-size: 0.92rem; + background: var(--input-bg); + color: var(--text-muted); + cursor: pointer; +} +.jog-step button:last-child { border-right: none; } +.jog-step button.active { + background: var(--btn-bg); + color: var(--accent-green); + font-weight: 600; +} +.vfo-picker { + display: flex; + border: 1px solid var(--border-light); + border-radius: 6px; + overflow: hidden; +} +.vfo-picker button { + flex: 1; + border: none; + border-right: 1px solid var(--border-light); + border-radius: 0; + height: var(--control-height); + background: var(--input-bg); + color: var(--text-muted); + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 0.85rem; +} +.vfo-picker button:last-child { border-right: none; } +.vfo-picker button.active { + background: var(--btn-bg); + font-weight: 600; +} +.channel-scheduler-controls { + display: flex; + flex-wrap: wrap; + align-items: flex-start; + gap: 0.6rem 0.8rem; +} +.vchan-picker { + display: flex; + flex-wrap: wrap; + gap: 4px; + flex: 1 1 18rem; + min-width: 0; +} +.scheduler-control-row { + display: flex; + align-items: flex-start; + justify-content: flex-start; + flex: 0 1 22rem; +} +.scheduler-release-wrap { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 0.35rem; + min-width: 14rem; +} +.scheduler-release-wrap button.active { + border-color: var(--accent-yellow); + color: var(--accent-yellow); +} +.scheduler-step-controls { + display: flex; + flex-wrap: wrap; + gap: 0.35rem; +} +.scheduler-step-controls button { + min-width: 7.6rem; +} +.scheduler-release-status { + color: var(--text-muted); + font-size: 0.78rem; + text-align: left; +} +.scheduler-cycle-status { + color: var(--text-muted); + font-size: 0.74rem; + text-align: left; + opacity: 0.88; +} +.vchan-picker button { + display: inline-flex; + align-items: center; + gap: 4px; + border: 1px solid var(--border-light); + border-radius: 6px; + height: var(--control-height); + padding: 0 0.55rem; + background: var(--input-bg); + color: var(--text-muted); + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 0.82rem; + cursor: pointer; +} +.vchan-picker button.active { + background: var(--btn-bg); + color: var(--text); + font-weight: 600; + border-color: var(--vchan-color); + box-shadow: inset 3px 0 0 var(--vchan-color); +} +/* Applied to #freq and #spectrum-bw-input when on a virtual channel */ +.vchan-ch-active { + border-color: var(--vchan-color) !important; + box-shadow: 0 0 0 1px var(--vchan-color); +} +.vchan-del { + opacity: 0.5; + font-size: 1rem; + line-height: 1; +} +.vchan-del:hover { opacity: 1; } +.vchan-add { + font-size: 1.1rem; + font-weight: 700; + padding: 0 0.6rem !important; + color: var(--text-muted); +} +.signal-measure { + display: inline-flex; + gap: 0.5rem; + align-items: center; + margin-top: 0.4rem; +} +button { padding: 0.5rem 0.9rem; border-radius: 6px; border: 1px solid var(--btn-border); background: var(--btn-bg); color: var(--text); cursor: pointer; height: var(--control-height); transition: background-color 100ms ease, border-color 100ms ease, color 100ms ease, box-shadow 100ms ease; } +button:hover:not(:disabled) { background: color-mix(in srgb, var(--btn-bg) 75%, var(--accent-green)); border-color: color-mix(in srgb, var(--btn-border) 60%, var(--accent-green)); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent-green) 18%, transparent); } +button:active:not(:disabled) { background: color-mix(in srgb, var(--btn-bg) 55%, var(--accent-green)); border-color: var(--accent-green); box-shadow: none; transform: translateY(1px); } +button:disabled { opacity: 0.6; cursor: not-allowed; } +.hint { color: var(--text-muted); font-size: 0.85rem; } +.inline { display: flex; gap: 0.5rem; align-items: center; } +.freq-inline { + gap: 0.35rem; + align-items: flex-start; + flex-wrap: nowrap; +} +.freq-field { + display: grid; + grid-template-rows: 3.35rem auto; + align-items: start; +} +.freq-field .label { + margin-top: 0.45rem; + margin-bottom: 0; +} +.frequency-col { + flex: 1 1 auto; + min-width: 0; +} +.center-frequency-col { + flex: 0 1 8.75rem; + min-width: 7.75rem; +} +.frequency-col input.status-input { + width: 100%; + height: 3.35rem; + box-sizing: border-box; +} +.wavelength-col { + flex: 0 0 auto; +} +.sig-strength-col { + flex: 0 0 auto; +} +.unit-col { + flex: 0 0 auto; +} +.unit-col .label { + display: flex; + justify-content: flex-end; +} +.mult-col { + flex: 0 0 auto; +} +.mult-col .label { + display: flex; + justify-content: flex-end; +} +.jog-mult { + display: inline-grid; + grid-template-columns: repeat(2, minmax(0, auto)); + border: 1px solid var(--border-light); + border-radius: 6px; + overflow: hidden; + height: 3.35rem; + flex-shrink: 0; + width: auto; +} +.jog-mult button { + min-width: 3.15rem; + border: none; + border-right: 1px solid var(--border-light); + border-radius: 0; + height: 100%; + padding: 0 0.7rem; + font-size: 0.85rem; + background: var(--input-bg); + color: var(--text-muted); + cursor: pointer; +} +.jog-mult button:last-child { border-right: none; } +.jog-mult button.active { + background: var(--btn-bg); + color: var(--accent-green); + font-weight: 600; +} +.label-below-row { + display: flex; + flex-direction: column; +} +#tab-main .label > span { + text-align: center; +} +.label-below-row > .label { + order: 2; + margin-top: 0.45rem; + margin-bottom: 0; +} +.label-below-row > :not(.label) { + order: 1; +} +.wavelength-display { + min-width: 5.2rem; + height: 3.35rem; + padding: 0 0.7rem; + border: 1px solid var(--border-light); + border-radius: 6px; + background: var(--input-bg); + color: var(--wavelength-fg); + display: inline-flex; + align-items: center; + justify-content: center; + font-family: 'DSEG14 Classic', monospace; + font-weight: 600; + font-size: 1.25rem; + letter-spacing: 0.03em; + white-space: nowrap; + flex-shrink: 0; +} +.sig-strength-display { + min-width: 7.5rem; + height: 3.35rem; + padding: 0 0.7rem; + border: 1px solid var(--border-light); + border-radius: 6px; + background: var(--input-bg); + color: var(--wavelength-fg); + display: inline-flex; + align-items: center; + justify-content: center; + font-family: 'DSEG14 Classic', monospace; + font-weight: 600; + font-size: 1.25rem; + letter-spacing: 0.03em; + white-space: nowrap; + flex-shrink: 0; + cursor: pointer; + user-select: none; +} +.sig-unit { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 0.85em; + font-weight: 400; +} +small { color: var(--text-muted); } +.header { + margin-bottom: 0; + padding: 0.25rem 0 0.15rem; + position: relative; + z-index: 6; +} +.header-main { + display: inline-flex; + align-items: center; + gap: 0.9rem; + max-width: min(100%, 46rem); + padding: 0.35rem 0.8rem 0.4rem 0.45rem; + margin-left: -0.3rem; + transform: translateY(-10px); + border-radius: 0.95rem; + background: color-mix(in srgb, var(--card-bg) 92%, transparent); + box-shadow: + 0 8px 20px color-mix(in srgb, var(--bg) 18%, transparent), + inset 0 1px 0 color-mix(in srgb, var(--text) 10%, transparent); +} +.header-text { + width: auto; + min-width: 0; + flex: 0 1 auto; +} +.title { font-size: 1.4rem; font-weight: 700; display: inline-flex; align-items: center; gap: 0.35rem; } +.title-link { + color: inherit; + text-decoration: none; +} +.title-link:hover { + text-decoration: underline; + text-underline-offset: 0.14em; +} +.overview-strip { + width: 100%; + margin: 0; + position: relative; +} +.signal-visual-block { + position: relative; + display: flex; + flex-direction: column; + gap: 0; + margin-bottom: 0.9rem; +} +#signal-split-control { + position: absolute; + top: 50%; + right: 0.32rem; + transform: translateY(-50%); + z-index: 9; + display: none; + flex-direction: column; + align-items: center; + gap: 0.24rem; + padding: 0.24rem 0.2rem; + border: 1px solid var(--btn-border); + border-radius: 6px; + background: var(--btn-bg); + box-shadow: inset 0 1px 0 color-mix(in srgb, #ffffff 6%, transparent); +} +#signal-split-slider { + writing-mode: vertical-lr; + direction: rtl; + width: 0.5rem; + height: 5.4rem; + margin: 0; + accent-color: var(--accent-green); + cursor: ns-resize; +} +#signal-split-value { + min-width: 2.4rem; + text-align: center; + font-size: 0.6rem; + font-weight: 600; + letter-spacing: 0.03em; + color: var(--text); +} +#signal-overlay-canvas { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 0; + pointer-events: none; + z-index: 4; +} +#fast-freq-marker { + display: none; + position: absolute; + top: 0; + left: 0; + width: 2px; + height: 100%; + background: #ff1744; + opacity: 0.85; + pointer-events: none; + z-index: 5; + will-change: transform; +} +#fast-bw-left, #fast-bw-right { + display: none; + position: absolute; + top: 0; + left: 0; + height: 100%; + pointer-events: none; + z-index: 3; + will-change: transform, width; +} +#fast-bw-left { + background: linear-gradient(to right, transparent, rgba(255,23,68,0.10)); +} +#fast-bw-right { + background: linear-gradient(to left, transparent, rgba(255,23,68,0.10)); +} +#rds-ps-overlay { + display: none; + position: absolute; + inset: 0; + z-index: 5; + pointer-events: none; +} +.rds-ps-overlay-item { + position: absolute; + transform: translate(-50%, -50%); + pointer-events: auto; + cursor: pointer; + color: var(--text-heading); + padding: 0.34rem 0.9rem 0.28rem; + border: 1px solid color-mix(in srgb, var(--border-light) 72%, transparent); + border-radius: 6px; + background: color-mix(in srgb, var(--card-bg) 92%, transparent); + box-shadow: + 0 8px 18px color-mix(in srgb, var(--bg) 16%, transparent), + inset 0 1px 0 color-mix(in srgb, var(--text) 10%, transparent); + text-shadow: 0 1px 10px color-mix(in srgb, var(--bg) 68%, transparent); + display: flex; + flex-direction: column; + align-items: center; + gap: 0.16rem; + text-align: center; + max-width: min(92vw, 24rem); + overflow: hidden; + text-overflow: ellipsis; +} +.rds-ps { + cursor: pointer; +} +.rds-ps-main { + display: block; + font-family: 'DSEG14 Classic', monospace; + font-size: clamp(1rem, 2.2vw, 1.45rem); + letter-spacing: 0.08em; + white-space: pre; +} +.rds-ps-gap { + color: color-mix(in srgb, currentColor 34%, var(--text-muted)); +} +.rds-ps-fallback { + display: block; + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: clamp(0.72rem, 1.4vw, 0.95rem); + font-weight: 700; + letter-spacing: 0.04em; + white-space: nowrap; +} +.rds-ps-meta { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.4rem; + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: clamp(0.58rem, 1.1vw, 0.78rem); + letter-spacing: 0.04em; + color: var(--text-muted); + white-space: nowrap; +} +.rds-ps-meta-text { + display: inline-block; +} +.rds-ps-flags { + display: inline-flex; + align-items: center; + gap: 0.25rem; +} +.rds-flag { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 1.9em; + padding: 0.05rem 0.35rem; + border-radius: 999px; + border: 1px solid color-mix(in srgb, var(--border-light) 72%, transparent); + font-size: 0.92em; + font-weight: 700; + letter-spacing: 0.03em; +} +.rds-flag-active { + color: color-mix(in srgb, var(--accent-red) 30%, #fff); + background: color-mix(in srgb, var(--accent-red) 68%, transparent); + border-color: color-mix(in srgb, var(--accent-red) 46%, transparent); + box-shadow: 0 0 10px color-mix(in srgb, var(--accent-red) 28%, transparent); +} +.rds-flag-inactive { + color: var(--text-muted); + background: color-mix(in srgb, var(--card-bg) 62%, transparent); +} +#aprs-bar-overlay, +#ais-bar-overlay, +#vdes-bar-overlay, +#ft8-bar-overlay, +#cw-bar-overlay { + display: none; + position: absolute; + top: 50%; + left: 0.45rem; + right: 0.45rem; + width: auto; + max-width: none; + transform: translateY(-50%); + z-index: 5; + pointer-events: auto; + cursor: default; + user-select: text; + color: var(--text-heading); + padding: 0.22rem 0.55rem 0.24rem; + border: 1px solid color-mix(in srgb, var(--border-light) 72%, transparent); + border-radius: 6px; + background: color-mix(in srgb, var(--card-bg) 92%, transparent); + box-shadow: + 0 10px 24px color-mix(in srgb, var(--bg) 14%, transparent), + inset 0 1px 0 color-mix(in srgb, var(--text) 8%, transparent), + inset 0 0 0 1px color-mix(in srgb, var(--text) 4%, transparent); + max-height: min(58%, 9.5rem); + overflow-y: auto; + flex-direction: column; + gap: 0.12rem; +} +.aprs-bar-header { + position: sticky; + top: 0; + z-index: 1; + background: color-mix(in srgb, var(--card-bg) 95%, transparent); + display: flex; + align-items: center; + justify-content: flex-start; + gap: 0.32rem; + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: clamp(0.6rem, 0.9vw, 0.75rem); + font-weight: 700; + letter-spacing: 0.06em; + color: var(--accent-green); + text-transform: uppercase; + padding: 0; + margin-bottom: 0.02rem; + border-bottom: 1px solid color-mix(in srgb, var(--border-light) 22%, transparent); + opacity: 0.9; +} +.aprs-bar-title { + display: inline-flex; + align-items: center; + gap: 0.1rem; + min-width: 0; + flex: 0 0 auto; +} +.aprs-bar-title-word { + display: inline-block; +} +.aprs-bar-window { + display: inline-flex; + align-items: center; + color: var(--text-muted); + font-size: 0.72em; + font-weight: 600; + letter-spacing: 0.03em; + text-transform: none; + white-space: nowrap; +} +.aprs-bar-actions { + margin-left: auto; + display: inline-flex; + align-items: center; + gap: 0.38rem; + flex: 0 0 auto; +} +.aprs-bar-clear-wrap { + display: inline-flex; + align-items: center; + flex: 0 0 auto; + padding: 0; + align-self: center; +} +.aprs-bar-clear { + display: inline; + background: transparent; + border: none; + border-radius: 0; + padding: 0; + line-height: 1; + font-family: inherit; + font-size: 0.8em; + font-weight: 600; + letter-spacing: 0.03em; + color: var(--text-muted); + cursor: pointer; + opacity: 0.82; + text-transform: uppercase; + white-space: nowrap; + transition: opacity 120ms, color 120ms; +} +.aprs-bar-clear:hover { + opacity: 1; + color: var(--accent-green); + text-decoration: underline; +} +.aprs-bar-clear-wrap:hover { + color: inherit; +} +.aprs-bar-close { + display: inline-flex; + align-items: center; + justify-content: center; + width: 1.05rem; + height: 1.05rem; + padding: 0; + border: none; + border-radius: 999px; + background: transparent; + color: var(--text-muted); + font-family: inherit; + font-size: 0.95em; + font-weight: 700; + line-height: 1; + cursor: pointer; + opacity: 0.82; + transition: opacity 120ms, color 120ms, background-color 120ms; +} +.aprs-bar-close:hover { + opacity: 1; + color: var(--accent-green); + background: color-mix(in srgb, var(--btn-bg) 70%, transparent); +} +.aprs-bar-frame { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: clamp(0.56rem, 0.92vw, 0.7rem); + line-height: 1.12; + padding: 0.08rem 0; + border-bottom: 1px solid color-mix(in srgb, var(--border-light) 18%, transparent); + opacity: 1; +} +.aprs-bar-frame:last-child { + border-bottom: none; +} +.aprs-bar-frame-main { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + padding-right: 0.15rem; +} +.aprs-bar-pin { + display: inline-flex; + align-items: center; + justify-content: center; + background: color-mix(in srgb, var(--btn-bg) 74%, transparent); + border: 1px solid color-mix(in srgb, var(--border-light) 28%, transparent); + border-radius: 4px; + padding: 0; + margin-right: 0.28em; + width: 1.55em; + height: 1.55em; + font-size: 0.72em; + line-height: 1; + cursor: pointer; + vertical-align: middle; + opacity: 0.82; + transition: opacity 120ms, border-color 120ms, background-color 120ms; +} +.aprs-bar-pin:hover { + opacity: 1; + background: color-mix(in srgb, var(--btn-bg) 92%, transparent); + border-color: color-mix(in srgb, var(--accent-green) 28%, var(--border-light)); +} +.aprs-bar-frame + .aprs-bar-frame { + opacity: 0.78; +} +.aprs-bar-frame + .aprs-bar-frame + .aprs-bar-frame { + opacity: 0.62; +} +.aprs-bar-frame + .aprs-bar-frame + .aprs-bar-frame + .aprs-bar-frame { + opacity: 0.46; +} +.aprs-bar-frame + .aprs-bar-frame + .aprs-bar-frame + .aprs-bar-frame + .aprs-bar-frame { + opacity: 0.34; +} +.aprs-bar-time { + color: color-mix(in srgb, var(--text-muted) 92%, transparent); + margin-right: 0.42em; + font-size: 0.94em; +} +.aprs-bar-call { + color: var(--accent-green); + font-weight: 600; +} +.aprs-bar-crc { + color: var(--accent-red); + margin-left: 0.3em; +} +.overview-toolbar { + display: flex; + align-items: center; + justify-content: flex-end; + gap: 0.75rem; + margin-bottom: 0; + position: absolute; + top: calc(var(--header-waterfall-overlap) + 0.2rem); + right: 0.15rem; + z-index: 2; +} +.overview-label { + margin-left: auto; + color: var(--text-heading); + font-size: 0.82rem; + font-weight: 700; + letter-spacing: 0.04em; + text-transform: uppercase; +} +.overview-control { + display: inline-flex; + align-items: center; + gap: 0.4rem; + color: var(--text-muted); + font-size: 0.8rem; + white-space: nowrap; +} +.overview-control .status-input { + width: auto; + min-width: 4.6rem; + padding-top: 0.22rem; + padding-bottom: 0.22rem; + font-size: 0.85rem; +} +#overview-canvas { + width: 100%; + height: var(--overview-plot-height); + display: block; +} +.header-left { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + gap: 0; + flex-shrink: 0; +} +.top-bar-actions { + display: flex; + align-items: center; + gap: 0.45rem 0.6rem; + min-width: 0; + flex-wrap: wrap; +} +.header-bar-btn.header-audio-btn { + width: 2rem; + height: 2rem; + min-height: 0; + padding: 2px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid var(--border-light); + border-radius: 6px; + background: var(--input-bg); + color: var(--text-muted); + cursor: pointer; + flex-shrink: 0; +} +.header-audio-btn svg { + width: 100%; + height: 100%; +} +.header-audio-btn.audio-active { + color: #00d17f; + border-color: #00d17f; +} +.header-bar-btn.header-rec-btn { + height: 2rem; + min-height: 0; + padding: 0 0.45rem; + font-size: 0.65rem; + font-weight: 700; + letter-spacing: 0.04em; + border: 1px solid var(--border-light); + border-radius: 6px; + background: var(--input-bg); + color: var(--text-muted); + cursor: pointer; + flex-shrink: 0; +} +.header-rec-btn.rec-active { + color: #ff3b30; + border-color: #ff3b30; + background: rgba(255, 59, 48, 0.12); + animation: rec-pulse 1.5s ease-in-out infinite; +} +/* ── Recorder page ──────────────────────────────────────────────────────── */ +.recorder-controls-bar { + display: flex; + gap: 0.75rem; + align-items: center; + margin-bottom: 1.25rem; +} +.recorder-action-btn { + padding: 0.45rem 1rem; + border: 1px solid var(--border-light); + border-radius: 6px; + background: var(--input-bg); + color: var(--text-primary); + font-size: 0.85rem; + cursor: pointer; + transition: border-color 0.15s, color 0.15s, background-color 0.15s; +} +.recorder-action-btn:hover:not(:disabled) { border-color: var(--accent-green); color: var(--accent-green); } +.recorder-action-btn:disabled { opacity: 0.4; cursor: default; } +.recorder-action-btn.recorder-stop:not(:disabled) { border-color: #ff3b30; color: #ff3b30; } +.recorder-action-btn.recorder-stop:hover:not(:disabled) { background: rgba(255,59,48,0.1); } +.recorder-status-indicator { + font-size: 0.8rem; + color: var(--text-muted); +} +.recorder-status-indicator.rec-active { + color: #ff3b30; + font-weight: 600; + animation: rec-pulse 1.5s ease-in-out infinite; +} +@keyframes rec-pulse { + 0%, 100% { opacity: 1; } + 50% { opacity: 0.6; } +} +.tab.rec-active .tab-icon { color: #ff3b30; } +.recorder-filter-bar { + display: flex; + gap: 0.6rem; + align-items: center; + margin-bottom: 0.6rem; +} +.recorder-filter-input { flex: 3; min-width: 16rem; } +.recorder-sort-select { flex: 1; width: auto; min-width: 7rem; max-width: 10rem; } +.recorder-section { margin-bottom: 1.5rem; } +.recorder-section-heading { + font-size: 0.85rem; + font-weight: 600; + color: var(--text-secondary); + margin-bottom: 0.5rem; +} +.recorder-list { font-size: 0.82rem; } +.recorder-empty { color: var(--text-muted); font-style: italic; margin: 0; } +.recorder-table { + width: 100%; + border-collapse: collapse; + font-size: 0.82rem; +} +.recorder-table th, +.recorder-table td { + padding: 0.35rem 0.6rem; + text-align: left; + border-bottom: 1px solid var(--border-light); +} +.recorder-table th { + font-weight: 600; + color: var(--text-secondary); + font-size: 0.75rem; + text-transform: uppercase; + letter-spacing: 0.03em; +} +.recorder-table td:first-child, +.recorder-table th:first-child { width: 100%; } +.recorder-table td:nth-child(2), +.recorder-table th:nth-child(2) { white-space: nowrap; } +.recorder-table td:last-child, +.recorder-table th:last-child { text-align: right; white-space: nowrap; } +.recorder-table .rec-file-actions { + display: flex; + align-items: center; + justify-content: flex-end; + gap: 0.4rem; +} +.recorder-table .rec-file-btn { + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + margin: 0; + padding: 0.2rem 0.5rem; + height: 1.55rem; + font-size: 0.78rem; + font-family: inherit; + line-height: 1; + text-align: center; + text-decoration: none; + border: 1px solid var(--btn-border); + border-radius: 0.25rem; + background: var(--btn-bg); + color: var(--text); + cursor: pointer; +} +.recorder-table .rec-file-btn:hover { background: color-mix(in srgb, var(--btn-bg) 75%, var(--accent-green)); border-color: color-mix(in srgb, var(--btn-border) 60%, var(--accent-green)); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent-green) 18%, transparent); } +.recorder-table .rec-file-btn:active { background: color-mix(in srgb, var(--btn-bg) 55%, var(--accent-green)); border-color: var(--accent-green); box-shadow: none; transform: translateY(1px); } +.recorder-table .rec-file-btn.rec-delete-btn { color: var(--accent-red); border-color: var(--accent-red); } +.recorder-table .rec-file-btn.rec-delete-btn:hover { background: color-mix(in srgb, var(--btn-bg) 75%, var(--accent-red)); border-color: var(--accent-red); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent-red) 18%, transparent); } +.recorder-table tr.rec-player-row > td { + padding: 0.4rem 0.6rem 0.6rem; + background: color-mix(in srgb, var(--btn-bg) 55%, transparent); + border-top: 0; +} +.recorder-table .rec-player-audio { + display: block; + width: 100%; + height: 2.1rem; + border-radius: 0.25rem; + outline: none; +} +.recorder-page-bar { + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.8rem; + padding: 0.9rem 0.2rem 0; +} +.header-rig-switch { + display: flex; + align-items: center; + gap: 0.35rem; +} +.header-rig-switch select { + min-width: 8rem; + height: 2rem; + padding: 0.15rem 0.35rem; + border: 1px solid var(--border-light); + border-radius: 6px; + background: var(--input-bg); + color: var(--text); + font-size: 0.85rem; +} +.header-rig-switch button { + height: 2rem; + padding: 0 0.65rem; + font-size: 0.78rem; + white-space: nowrap; +} +.header-bar-btn { + height: 2rem; + padding: 0 0.65rem; + font-size: 0.78rem; + white-space: nowrap; +} +/* Theme toggle: styled to match the active theme */ +#theme-toggle { + background: #1e2a3a; + color: #e7edf9; + border-color: #3a5274; +} +[data-theme="light"] #theme-toggle { + background: #dde3ed; + color: #1a2336; + border-color: #a0aec0; +} +.header-style-pick { + display: flex; + align-items: center; +} +.header-style-pick select { + height: 2rem; + padding: 0.15rem 0.35rem; + border: 1px solid var(--border-light); + border-radius: 6px; + background: var(--input-bg); + color: var(--text); + font-size: 0.85rem; +} +.header-logo { height: 4.6em; width: auto; flex-shrink: 0; filter: drop-shadow(0 4px 12px rgba(0,0,0,0.35)); } +.subtitle { color: var(--text-muted); font-size: 0.95rem; } +.subtitle a { color: var(--accent-green); text-decoration: none; } +.subtitle a:hover { text-decoration: underline; } +.band-tag { display: inline-block; padding: 2px 6px; border-radius: 6px; background: var(--btn-bg); color: var(--text); font-size: 0.82rem; border: 1px solid var(--border-light); margin-left: 6px; } +.signal { display: flex; gap: 0.6rem; align-items: center; } +.signal-bar { flex: 1 1 auto; height: 12px; border-radius: 999px; background: var(--btn-bg); border: 1px solid var(--border-light); overflow: hidden; } +.signal-bar-fill { height: 100%; width: 0%; background: linear-gradient(90deg, var(--accent-green), var(--accent-yellow), var(--accent-red)); transition: width 300ms ease-out; } +.signal-value { font-size: 0.95rem; color: var(--text-heading); min-width: 48px; text-align: right; } +.meter { display: flex; gap: 0.6rem; align-items: center; } +.meter-bar { flex: 1 1 auto; height: 12px; border-radius: 999px; background: var(--btn-bg); border: 1px solid var(--border-light); overflow: hidden; } +.meter-fill { height: 100%; width: 0%; background: linear-gradient(90deg, var(--accent-green), var(--accent-yellow), var(--accent-red)); transition: width 150ms ease; } +.meter-value { font-size: 0.95rem; color: var(--text-heading); min-width: 64px; text-align: right; } +#content { display: flex; flex-direction: column; gap: 1.1rem; min-height: 0; flex: 1 1 auto; overflow: visible; position: relative; } +.tab-panel { flex: 1 1 auto; min-height: 0; overflow: visible; display: flex; flex-direction: column; } +.sub-tab-panel { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; } +.tab-bar { + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + margin-bottom: 0.85rem; + padding: 0.45rem 0 0.7rem; + border-bottom: 1px solid color-mix(in srgb, var(--border-light) 55%, transparent); + position: relative; + z-index: 2; +} +.tab-bar-left { + display: flex; + align-items: center; + gap: 1rem; + min-width: 0; + flex: 1 1 auto; +} +.tab-bar .header-main { + display: flex; + align-items: center; + gap: 0.7rem; + max-width: min(100%, 24rem); + padding: 0; + margin-left: 0; + transform: none; + flex-shrink: 0; + border-radius: 0; + background: transparent; + backdrop-filter: none; + -webkit-backdrop-filter: none; + box-shadow: none; +} +.tab-bar .header-logo { + height: 2.6rem; +} +.tab-bar .title { + font-size: 1.05rem; + line-height: 1.1; +} +.tab-bar .subtitle { + font-size: 0.78rem; + line-height: 1.15; +} +.tab-bar-nav { + display: flex; + align-items: center; + gap: 0.2rem; + min-width: 0; + flex-wrap: wrap; +} +.tab { + background: transparent; + border: none; + border-bottom: 2px solid transparent; + border-radius: 0; + padding: 0.5rem 0.95rem; + color: var(--text-muted); + cursor: pointer; + font-size: 0.95rem; + height: auto; +} +.tab.active { border-bottom-color: var(--accent-green); color: var(--accent-green); font-weight: 600; } +.tab:hover:not(.active) { color: var(--text); } +/* Tab icons — hidden on desktop, shown on mobile bottom nav */ +.tab-icon { + display: none; + width: 20px; + height: 20px; + flex-shrink: 0; +} +.tab-label { display: block; } +.about-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1rem; } +.about-card { background: var(--card-bg); border: 1px solid var(--border); border-radius: 0.5rem; padding: 0; overflow: hidden; } +.about-card-title { display: flex; align-items: center; gap: 0.5rem; padding: 0.6rem 0.75rem; font-size: 0.8rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-heading); border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--card-bg) 50%, var(--bg)); } +.about-card-icon { width: 15px; height: 15px; flex-shrink: 0; } +.about-table { width: 100%; border-collapse: collapse; } +.about-table td { padding: 0.4rem 0.75rem; border-bottom: 1px solid color-mix(in srgb, var(--border) 50%, transparent); font-size: 0.85rem; } +.about-table tr:last-child td { border-bottom: none; } +.about-table td:first-child { color: var(--text-muted); width: 40%; } +.about-status-on { color: #00d17f; } +.about-status-off { color: var(--text-muted); } +.plugin-item { padding: 0.5rem 0.6rem; border-bottom: 1px solid var(--border); color: var(--text); } +.plugin-item:last-child { border-bottom: none; } +.footer { display: flex; justify-content: space-between; align-items: baseline; margin-top: auto; padding-top: 1rem; flex-shrink: 0; } +.full-row { grid-column: 1 / -1; } +.copyright { color: var(--text-muted); font-size: 0.75rem; opacity: 0.7; } +.copyright a { color: var(--accent-green); text-decoration: none; } +.copyright a:hover { text-decoration: underline; } +.gh-link-wrap { + display: inline-flex; + vertical-align: middle; + margin: 0 0.15rem; +} +.gh-link { + display: inline-flex; + align-items: center; + gap: 0.34rem; + padding: 0.18rem 0.5rem; + border-radius: 999px; + border: 1px solid color-mix(in srgb, var(--border-light) 72%, transparent); + background: color-mix(in srgb, var(--btn-bg) 78%, transparent); + color: var(--text-heading); + line-height: 1; + box-shadow: inset 0 1px 0 color-mix(in srgb, #ffffff 8%, transparent); +} +.gh-link:hover { + text-decoration: none; + border-color: color-mix(in srgb, var(--accent-green) 48%, var(--border-light)); + background: color-mix(in srgb, var(--btn-bg) 90%, transparent); +} +.gh-link-icon { + width: 0.95rem; + height: 0.95rem; + flex-shrink: 0; + fill: currentColor; +} + +.vol-label { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.15rem; + color: var(--text-muted); + font-size: 0.82rem; + white-space: nowrap; +} +.vol-pct { + font-size: 0.72rem; + color: var(--text-muted); + line-height: 1; +} +.sql-auto-btn { + font-size: 0.68rem; + padding: 0 5px; + height: 1.2rem; + min-height: 0; + line-height: 1; + border-radius: 3px; + cursor: pointer; +} +.vol-slider { + -webkit-appearance: none; + appearance: none; + width: 80px; + height: 6px; + border-radius: 3px; + background: var(--btn-bg); + border: 1px solid var(--border-light); + outline: none; + cursor: pointer; +} +.vol-slider::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 14px; + height: 14px; + border-radius: 50%; + background: var(--accent-green); + border: none; + cursor: pointer; +} +.vol-slider::-moz-range-thumb { + width: 14px; + height: 14px; + border-radius: 50%; + background: var(--accent-green); + border: none; + cursor: pointer; +} +#audio-level { + flex: 1 1 auto; + height: 12px; + border-radius: 999px; + background: var(--audio-level-bg); + border: 1px solid var(--audio-level-border); + overflow: hidden; + min-width: 80px; +} +#audio-level-fill { + height: 100%; + width: 0%; + background: linear-gradient(90deg, var(--audio-level-fill-start), var(--audio-level-fill-end)); + transition: width 100ms ease; +} + +.sub-tab-bar { display: flex; border-bottom: 1px solid var(--border); margin-bottom: 0.75rem; overflow-x: auto; -webkit-overflow-scrolling: touch; } +.sub-tab { flex-shrink: 0; background: transparent; border: none; border-bottom: 2px solid transparent; border-radius: 0; padding: 0.35rem 0.75rem; color: var(--text-muted); cursor: pointer; font-size: 0.85rem; height: auto; } +.sub-tab.active { border-bottom-color: var(--accent-green); color: var(--accent-green); font-weight: 600; } +.sub-tab:hover:not(.active) { color: var(--text); } +/* ── Shortcut help overlay (F1) ─────────────────────────────────────── */ +.shortcut-overlay { + position: fixed; + inset: 0; + z-index: 9600; + display: flex; + align-items: center; + justify-content: center; + padding: 1.2rem; + background: rgba(7, 13, 26, 0.82); + opacity: 1; + visibility: visible; + transition: opacity 140ms ease, visibility 140ms ease; +} +.shortcut-overlay.is-hidden { + opacity: 0; + visibility: hidden; + pointer-events: none; +} +.shortcut-overlay-card { + min-width: min(22rem, calc(100vw - 2.4rem)); + max-width: min(28rem, calc(100vw - 2.4rem)); + padding: 1.2rem 1.4rem; + border-radius: 0.9rem; + border: 1px solid color-mix(in srgb, var(--border-light) 72%, transparent); + background: color-mix(in srgb, var(--card-bg) 92%, transparent); + box-shadow: 0 18px 40px rgba(0, 0, 0, 0.22); +} +.shortcut-overlay-title { + font-size: 1.05rem; + font-weight: 800; + color: var(--text-heading); + margin-bottom: 0.8rem; + text-align: center; +} +.shortcut-table { + width: 100%; + border-collapse: collapse; +} +.shortcut-table td { + padding: 0.32rem 0.4rem; + font-size: 0.88rem; + color: var(--text); + border-bottom: 1px solid color-mix(in srgb, var(--border-light) 40%, transparent); +} +.shortcut-table tr:last-child td { + border-bottom: none; +} +.shortcut-key { + width: 5rem; + text-align: right; + padding-right: 0.9rem !important; +} +.shortcut-key kbd, +.shortcut-overlay-hint kbd { + display: inline-block; + min-width: 1.6em; + padding: 0.12em 0.45em; + border: 1px solid var(--border); + border-radius: 0.3rem; + background: var(--bg); + font-family: inherit; + font-size: 0.82rem; + font-weight: 600; + text-align: center; + color: var(--text); + box-shadow: 0 1px 0 color-mix(in srgb, var(--border) 60%, transparent); +} +.shortcut-overlay-hint { + margin-top: 0.7rem; + text-align: center; + font-size: 0.76rem; + color: var(--text-muted); +} + +.decode-history-overlay { + position: fixed; + inset: 0; + z-index: 9500; + display: flex; + align-items: center; + justify-content: center; + padding: 1.2rem; + background: rgba(7, 13, 26, 0.82); + pointer-events: none; + opacity: 1; + visibility: visible; + transition: opacity 140ms ease, visibility 140ms ease; +} +.decode-history-overlay.is-hidden { + opacity: 0; + visibility: hidden; +} +.decode-history-overlay.content-overlay { + position: absolute; + border-radius: 0 0 0.9rem 0.9rem; +} +.decode-history-overlay.content-overlay.conn-lost-fullscreen { + position: fixed; + border-radius: 0; +} +#server-lost-banner { + display: none; + align-items: center; + justify-content: center; + gap: 0.5rem; + padding: 0.45rem 0.75rem; + background: color-mix(in srgb, var(--accent-red) 18%, var(--card-bg)); + border: 1px solid color-mix(in srgb, var(--accent-red) 40%, var(--border)); + border-radius: 0.4rem; + color: var(--accent-red); + font-size: 0.82rem; + font-weight: 600; + margin-bottom: 0.5rem; +} +#server-lost-banner .banner-dot { + width: 7px; height: 7px; border-radius: 50%; + background: var(--accent-red); + animation: banner-pulse 1.5s ease-in-out infinite; +} +@keyframes banner-pulse { + 0%, 100% { opacity: 1; } + 50% { opacity: 0.3; } +} +#tab-main.server-disconnected #content { + pointer-events: none; + filter: saturate(0.3) brightness(0.7); + opacity: 0.55; + transition: filter 0.4s ease, opacity 0.4s ease; +} +#tab-main.server-disconnected #server-lost-banner { display: flex; } +#tab-main:not(.server-disconnected) #content { + transition: filter 0.3s ease, opacity 0.3s ease; +} +.decode-history-overlay-card { + min-width: min(26rem, calc(100vw - 2.4rem)); + max-width: min(30rem, calc(100vw - 2.4rem)); + padding: 0.9rem 1rem; + border-radius: 0.9rem; + border: 1px solid color-mix(in srgb, var(--border-light) 72%, transparent); + background: color-mix(in srgb, var(--card-bg) 88%, transparent); + box-shadow: 0 18px 40px rgba(0, 0, 0, 0.22); + text-align: center; +} +.decode-history-overlay-title { + font-size: 0.98rem; + font-weight: 800; + color: var(--text-heading); +} +.decode-history-overlay-sub { + margin-top: 0.24rem; + font-size: 0.82rem; + color: var(--text-muted); +} +#tab-map { + display: flex; + flex-direction: column; + min-height: 0; + gap: 0.85rem; +} +/* map-loading uses the shared .decode-history-overlay .content-overlay classes */ +#map-stage { + position: relative; + flex: 0 1 auto; + min-height: 0; + overflow: hidden; + border-radius: 6px; + border: 1px solid color-mix(in srgb, var(--border-light) 78%, transparent); + background: + linear-gradient(180deg, color-mix(in srgb, var(--card-bg) 86%, transparent), color-mix(in srgb, var(--card-bg) 64%, transparent)), + color-mix(in srgb, var(--input-bg) 88%, transparent); +} +#aprs-map { + width: 100%; + min-height: 0; + border-radius: 0; +} +.map-qso-summary { + display: flex; + flex-direction: column; + gap: 0.75rem; + padding: 0.9rem 1rem 1rem; + border-radius: 0.8rem; + border: 1px solid color-mix(in srgb, var(--border-light) 76%, transparent); + background: + linear-gradient(180deg, color-mix(in srgb, var(--card-bg) 90%, transparent), color-mix(in srgb, var(--input-bg) 82%, transparent)); + box-shadow: inset 0 1px 0 color-mix(in srgb, white 5%, transparent); +} +.map-qso-summary-head { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 0.75rem; +} +.map-qso-summary-title { + font-size: 0.88rem; + font-weight: 800; + letter-spacing: 0.08em; + text-transform: uppercase; + color: var(--text-heading); +} +.map-qso-summary-subtitle { + margin-top: 0.18rem; + font-size: 0.78rem; + color: var(--text-muted); +} +.map-qso-summary-list { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); + gap: 0.65rem; +} +.map-qso-summary-empty { + padding: 0.85rem 0.9rem; + border-radius: 0.75rem; + border: 1px dashed color-mix(in srgb, var(--border-light) 76%, transparent); + background: color-mix(in srgb, var(--input-bg) 84%, transparent); + color: var(--text-muted); + font-size: 0.82rem; +} +button.map-qso-card { + display: flex; + appearance: none; + -webkit-appearance: none; + width: 100%; + flex-direction: column; + align-items: stretch; + gap: 0.5rem; + min-width: 0; + margin: 0; + padding: 0.8rem 0.85rem; + box-sizing: border-box; + min-height: 0; + height: auto; + border-radius: 0.75rem; + border: 1px solid color-mix(in srgb, var(--border-light) 74%, transparent); + background: color-mix(in srgb, var(--card-bg) 78%, transparent); + font: inherit; + color: inherit; + line-height: inherit; + text-align: left; + cursor: pointer; + box-shadow: none; + transition: border-color 120ms ease, background-color 120ms ease, transform 120ms ease, box-shadow 120ms ease; +} +button.map-qso-card:hover:not(:disabled) { + border-color: color-mix(in srgb, var(--accent-green) 38%, var(--border-light)); + background: color-mix(in srgb, var(--card-bg) 70%, transparent); + box-shadow: none; +} +button.map-qso-card.is-selected { + border-color: color-mix(in srgb, var(--accent-green) 62%, var(--border-light)); + background: color-mix(in srgb, var(--accent-green) 10%, var(--card-bg)); + box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent-green) 18%, transparent); +} +button.map-qso-card:active:not(:disabled) { + transform: translateY(1px); + background: color-mix(in srgb, var(--card-bg) 66%, transparent); + border-color: color-mix(in srgb, var(--accent-green) 46%, var(--border-light)); + box-shadow: none; +} +button.map-qso-card:focus-visible { + outline: 2px solid color-mix(in srgb, var(--accent-green) 52%, transparent); + outline-offset: 2px; +} +.map-qso-card-head { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 0.75rem; +} +.map-qso-card-rank { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 1.6rem; + min-height: 1.6rem; + padding: 0 0.4rem; + border-radius: 999px; + background: color-mix(in srgb, var(--accent-green) 16%, transparent); + color: var(--accent-green); + font-size: 0.76rem; + font-weight: 800; +} +.map-qso-card-distance { + flex: 0 0 auto; + font-size: 0.95rem; + font-weight: 800; + color: var(--text-heading); + white-space: nowrap; +} +.map-qso-card-body { + display: flex; + flex-direction: column; + gap: 0.24rem; + min-width: 0; +} +.map-qso-card-pair { + font-size: 0.92rem; + font-weight: 700; + color: var(--text); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.map-qso-card-meta { + display: flex; + flex-wrap: wrap; + gap: 0.35rem 0.45rem; + align-items: center; +} +.map-qso-card-pill { + display: inline-flex; + align-items: center; + min-height: 1.35rem; + padding: 0.04rem 0.42rem; + border-radius: 999px; + border: 1px solid color-mix(in srgb, var(--border-light) 74%, transparent); + background: color-mix(in srgb, var(--input-bg) 86%, transparent); + color: var(--text-muted); + font-size: 0.7rem; + font-weight: 700; + letter-spacing: 0.04em; + text-transform: uppercase; +} +.map-qso-card-grids { + color: var(--text-muted); + font-size: 0.78rem; +} +.map-qso-card-band { + color: var(--text); + border-color: color-mix(in srgb, var(--band-color, var(--accent-green)) 40%, transparent); + background: color-mix(in srgb, var(--band-color, var(--accent-green)) 14%, transparent); +} +.map-qso-card-rx { + text-transform: none; + font-weight: 600; + color: var(--text-muted); + border-color: color-mix(in srgb, var(--accent-blue, #5b9bd5) 35%, transparent); + background: color-mix(in srgb, var(--accent-blue, #5b9bd5) 10%, transparent); +} +.map-overlay-panel { + position: absolute; + right: 0.7rem; + bottom: 0.7rem; + z-index: 410; + display: flex; + flex-direction: column; + gap: 0.45rem; + width: min(30rem, calc(100% - 4.9rem)); + max-height: calc(100% - 1.4rem); + padding: 0.7rem 0.75rem; + border-radius: 0.8rem; + border: 1px solid color-mix(in srgb, var(--border-light) 74%, transparent); + background: color-mix(in srgb, var(--card-bg) 82%, transparent); + box-shadow: 0 16px 30px rgba(0, 0, 0, 0.24); + backdrop-filter: blur(6px); + -webkit-backdrop-filter: blur(6px); + will-change: backdrop-filter; + overflow: auto; + transition: opacity 140ms ease, transform 140ms ease, visibility 140ms ease; +} +.map-overlay-panel.is-hidden { + opacity: 0; + visibility: hidden; + transform: translateY(0.25rem); + pointer-events: none; +} +.map-corner-controls { + position: absolute; + top: 0.7rem; + right: 0.7rem; + z-index: 410; + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 0.4rem; +} +.map-fullscreen-btn { + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 1.9rem; + padding: 0.18rem 0.65rem; + border-radius: 6px; + border: 1px solid color-mix(in srgb, var(--border-light) 74%, transparent); + background: color-mix(in srgb, var(--card-bg) 82%, transparent); + color: var(--text); + font-size: 0.76rem; + font-weight: 700; + letter-spacing: 0.02em; + cursor: pointer; +} +.map-fullscreen-btn:hover { + border-color: color-mix(in srgb, var(--accent-green) 34%, var(--border-light)); + color: var(--text-heading); +} +.map-overlay-toggle-btn { + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 1.9rem; + padding: 0.18rem 0.65rem; + border-radius: 6px; + border: 1px solid color-mix(in srgb, var(--border-light) 74%, transparent); + background: color-mix(in srgb, var(--card-bg) 82%, transparent); + color: var(--text); + font-size: 0.76rem; + font-weight: 700; + letter-spacing: 0.02em; + cursor: pointer; +} +.map-overlay-toggle-btn:hover { + border-color: color-mix(in srgb, var(--accent-green) 34%, var(--border-light)); + color: var(--text-heading); +} +.map-band-legend { + position: absolute; + left: 0.7rem; + bottom: 0.7rem; + z-index: 410; + display: flex; + flex-direction: column; + gap: 0.45rem; + width: min(14rem, calc(100% - 5.8rem)); + max-height: min(40%, 18rem); + padding: 0.65rem 0.7rem; + border-radius: 0.8rem; + border: 1px solid color-mix(in srgb, var(--border-light) 74%, transparent); + background: color-mix(in srgb, var(--card-bg) 78%, transparent); + box-shadow: 0 16px 30px rgba(0, 0, 0, 0.2); + backdrop-filter: blur(6px); + -webkit-backdrop-filter: blur(6px); + will-change: backdrop-filter; + overflow: auto; +} +.map-band-legend.is-empty { + display: none; +} +.map-band-legend-title { + font-size: 0.72rem; + font-weight: 800; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--text-muted); +} +.map-band-legend-list { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(5.4rem, 1fr)); + gap: 0.35rem 0.55rem; +} +.map-band-legend-item { + display: inline-flex; + align-items: center; + gap: 0.4rem; + min-width: 0; +} +.map-band-legend-swatch { + flex: 0 0 auto; + width: 0.78rem; + height: 0.78rem; + border-radius: 999px; + background: var(--legend-color, var(--accent-green)); + box-shadow: 0 0 0 1px color-mix(in srgb, var(--legend-color, var(--accent-green)) 44%, rgba(255, 255, 255, 0.18)); +} +.map-band-legend-text { + min-width: 0; + font-size: 0.76rem; + font-weight: 700; + color: var(--text); + white-space: nowrap; +} +#map-stage:fullscreen, +#map-stage:-webkit-full-screen, +#map-stage.map-fake-fullscreen { + background: var(--bg); + width: 100%; + height: 100%; + padding: 0; + box-sizing: border-box; +} +/* CSS-based fake fullscreen for browsers that block the Fullscreen API + (notably mobile Safari, which only allows fullscreen for

    ~W;RdhI(|VF>)^8EAnsDjE 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