Repository navigation
feat(hl2): transmit AM, DSB and FM through TXA. Principle II. - #5977
Conversation
|
Bad news first: this PR was stacked on #5906, which is closed, so until now its diff still removed
Tested locally at The body is updated to match. 73, ON8ST |
|
The "six tests only" limit in the body is replaced by a full-suite run. It was not green, so that first. Built The one failure is Still true: no CI lane builds OFF (#5796), and no radio has been keyed on this head. 73, ON8ST |
|
Merged main into this branch (
Not verified: no radio keyed on this head; the OFF build was not rerun. 73, ON8ST |
|
Not verified: no radio was keyed on this head, and the option-OFF build was not rerun (last run at 73, ON8ST |
|
Still a draft; this is housekeeping, nothing is keyed. Merged
Full ctest on macOS, TXA build: 769 of 770; the one that fails is the clean-main failure #6008. 73, ON8ST |
04ca15b to
c310a5a
Compare
Rebase the effective change from PR aethersdr#5977 onto current main, consolidating the obsolete aethersdr#5906 stack and subsequent merge resolutions. Keep AETHER_HL2_TX_TXA and its phasing fallback intact. Preserve mode-specific TXA filtering, explicit AM/FM parameters, CTCSS-off policy, offline DSP coverage and user documentation. Refs aethersdr#5678. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Rebase the effective change from PR aethersdr#5977 onto current main, consolidating the obsolete aethersdr#5906 stack and subsequent merge resolutions. Keep AETHER_HL2_TX_TXA and its phasing fallback intact. Preserve mode-specific TXA filtering, explicit AM/FM parameters, CTCSS-off policy, offline DSP coverage and user documentation. Refs aethersdr#5678. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
c310a5a to
980e5d2
Compare
jensenpat
left a comment
There was a problem hiding this comment.
Reviewed 980e5d219d5d7c4f35cb4b11f7003de34c5a34a4, rebased onto main 5813556e0709e31d5535281b3eda02da3b2338d8. No blockers found. This delivers AM, DSB and simplex FM/NFM from row 1.2 of #5678; that tracking issue stays open. The accepted TXA direction and compile-time fallback are preserved.
| Scope | Claimed | Verdict |
|---|---|---|
| HL2 backend, mode vocabulary, TX DSP and level policy | AM/DSB/FM TX with mode-specific passbands and build-shaped refusal list | In scope; no new wire command, seam verb or capability boolean |
| WDSP channel configuration and C API declarations | Explicit carrier/deviation settings and CTCSS off at every TX open | In scope; finite/range validation is TX-only; HL2 is the only production WDSP TX consumer |
| Five existing socket-free test sources | DSP spectra, transitions and capability declarations for each build | In scope; no synthetic peer or new socket-owning test |
| CMake option text and BUILD-OPTIONS.md | Keep the phasing fallback and explain its SSB-only restriction | In scope; option/default unchanged |
| HERMES, capability map, user guide and HL2 log source citation | Describe enabled modes and remaining restrictions | In scope; SAM/CTCSS wording corrected and moved citation refreshed |
Blockers: none. Non-blocking documentation nits were fixed in the reviewed commit: docs/user/docs/hermes-lite-2.md:139 and :201 now describe SAM as a receive-only detector choice; docs/architecture/radio-capabilities-map.md:250 accurately distinguishes TXA's existing CTCSS encoder from the absent tone-control verb. docs/user/src/components/LogAnalyzer/rules.json:893 follows the moved HL2 diagnostic. No findings remain open.
Local verification: option-OFF build and six flag-sensitive CTests passed again at the final head 980e5d219. The default TXA build and seven selected socket-free CTests passed at c310a5aa2; after the clean rebase over KPA500, HL2/WDSP production code and all seven test sources are byte-identical, so that component evidence is reused. Fresh platform CI verifies integration with the new main. All runs were headless (QT_QPA_PLATFORM=offscreen). The paced TXA test also passed again with the matching Qt 6.12 Keychain dependency, eliminating an initial local duplicate-Qt warning. That same dependency was used for the OFF suite and mutation check.
The emitted IQ checks measured AM carrier 0.50000 with equal 0.12500 sidebands (−12.04 dBc), DSB sidebands 0.25000 with carrier suppression above the asserted 60 dB threshold, and FM deviation 1676.4 Hz (half level: 838.2 Hz; half deviation setting: 838.1 Hz), envelope spread 0.0021 and 100 Hz component 0.00 Hz. USB→AM→USB mode/passband transitions passed. Reversing the capability build-option condition made the FM/NFM declaration assertion fail; restoring it left a clean tree and the expected receive-only policy in each configuration. The mutation was not committed.
I traced connect-time configuration, TX-slice mode changes, TX-slice selection and mode-before-filter ordering through Hl2Backend→Hl2TxDsp→WdspChannel→WDSP TXA. AM/DSB/FM retain the existing TX intent gates; SAM/WBFM/WFM/DRM refusals and both alias spellings remain, and the option-OFF build keeps all eight receive-only strings. TUNE's existing carrier generation is untouched. The shared WDSP changes are gated to Transmit; receive paths retain their configuration.
All four architecture gates pass and emit identical findings on main and this head. The manifest was regenerated without a diff; no ratchet baseline, GUI include, workflow, dependency or runtime switch was added. Build-option, test-registration, WDSP-link, generated-reference and log-analyzer checks pass. The docs site builds locally and in CI.
No live radio was contacted or keyed. The demo bridge cannot exercise this HL2-only transmit modulator; no bridge/UI/RF claim is made. Earlier RF measurements from 806affbd are historical evidence, not current-head RF validation. Sanitizers and a local full suite were not run. The separate automated code-review skill is unavailable here; the source pass was performed manually.
Freshness: current main is 5813556e0 (2026-10-17 15:31:49 UTC); the earliest CI run for this head was created 2026-10-17 15:32:58 UTC. All four live required checks (build, check-macos, check-windows and Static checks), Docs and sanitizer configuration are green on this head. Platform CI, Static Checks, Docs. The merge tree is clean against that current main, the commit signature is verified, and there are zero unresolved threads or blocking reviews. Approval is pinned to this exact head; post-merge main verification is separate.
…III. (#6542) Fixes #6235 Option 1 from #6235, in the form @NF0T and I settled on in the thread. No ruling was given between options 1 and 2; if the envelope peak (option 2) is wanted, close this. ## Limits, first - **Text only. No reading changes.** The gauge still shows the same number: on an HL2, the peak of the audio block after the ALC, before the modulator. - **The gap this describes was measured offline**, on synthesized speech through the transmit DSP (figures in #6235): with limited audio the envelope stood 5 to 6 dB above the gauge. Nothing was keyed. Real microphone audio was not measured. - **Flex operators read one word less.** The shared accessible description loses "SSB" and becomes "post-software-ALC peak (dBFS)". It stays true for the Flex firmware meter of the same name; `docs/architecture/flex-meter-learnings.md` and `tx-audio-signal-path.md`, which describe that Flex meter, are not touched. - **Since #5977 the same gauge also runs in AM, DSB and FM on an HL2** (one audio path, `Hl2TxDsp::processAudioBlock`), so dropping "SSB" is correct there too. Not keyed in any mode. - No test pins these strings, before or after. ## Change - `PhoneCwApplet.cpp` (three sites), `PhoneCwApplet.h`, `MeterModel.h`: "post-software-ALC SSB peak (dBFS)" becomes "post-software-ALC peak (dBFS)". - `Hl2TxDsp.cpp`: the comment that said the value is "the signal reaching the wire" now says it is the audio peak before the modulator, at the ALC target while the ALC reduces. - `Hl2Backend.cpp`: two comments, and the HL2 meter's description "Post-ALC transmit peak" becomes "Post-ALC audio peak, before the modulator". - `docs/user/docs/hermes-lite-2.md`: one line saying what the ALC gauge shows on an HL2, and that it is not the transmitted envelope. Full ctest at `c5886fa0` (`08859e04` merged with `main` 7864ef5; macOS, Qt 6.12.0, `-j8`): 801 tests, 799 passed. - `vkamp_connection_test` failed and passed on the serial rerun (#5254). - `kpa500_advanced_widget_test` timed out. It does the same on clean `main` 94e3cd4 here, and only in our launchd test runner: it hangs in `backupSelectionRechecksReadAvailability`. Started from a terminal it passes 9 of 9 in 0.3 s. This PR touches no KPA500 file. At `c5886fa0`, `check_engine_boundary`, `check_test_registration` and `check_qsettings` (`--strict`) and `gen_touchpoint_manifest.py --check` pass. `check_a11y` on the two `PhoneCwApplet` files at `08859e04`: 2 findings, the same 2 as on the base. 73, ON8ST 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Enables Hermes-Lite 2 AM, DSB and simplex FM/NFM transmit in the default WDSP TXA build, addressing row 1.2 of #5678. The TXA build uses a symmetric audio passband, explicitly sets the AM carrier level to 0.5 and FM deviation to 5000 Hz, and disables TXA's default-on CTCSS encoder on every transmit-channel open. No tone or repeater-offset control is added.
AETHER_HL2_TX_TXA=OFFretains the phasing modulator and its existing receive-only restriction for AM, DSB, FM and NFM. SAM, WBFM/WFM and DRM remain receive-only in both builds. Existing TX intent gates and TUNE generation remain intact. #5678 stays open.The branch is rebased onto main
5813556e0709e31d5535281b3eda02da3b2338d8, with the obsolete #5906 stack and intervening merge commits consolidated into the effective change. on8st retains authorship and the existing AI co-author credit.Validation
c310a5aa27be0d355a69514f632e74c922f20770(before the final clean rebase): seven selected socket-free CTests passed withQT_QPA_PLATFORM=offscreen(hl2_txdsp_test,wdsp_channel_test,hl2_family_transition_test,hl2_fm_controls_declaration_test,hl2_mode_vocabulary_test,hl2_dsp_readback_test,control_receive_test).AETHER_HL2_TX_TXA=OFF: all six flag-sensitive CTests passed again at final head980e5d219d5d7c4f35cb4b11f7003de34c5a34a4, including the phasing modulator's bit-identity evidence and the longer receive-only list.hl2_fm_controls_declaration_testfail its FM/NFM capability assertion. The mutation was restored and is absent from this head.npm ci && npm run buildpassed. Build-option, test-registration, WDSP-link, generated-reference and log-analyzer checks passed.The tests exercise real WDSP DSP channels offline and do not open a radio connection. The automation bridge's demo backend cannot exercise HL2 transmit modulation; no live hardware was contacted or keyed during this review. RF measurements from the earlier
806affbdhead remain historical evidence only and are not proof of this rebased head. Sanitizers and a local full-suite run were not run in this pass. No CI lane builds the option-OFF configuration (#5796).The user guide and capability map describe the current mode policy. The log analyzer's moved HL2 source citation is refreshed. The AM carrier and FM deviation remain fixed internal parameters; no operator control reaches them. Speech-level FM deviation can be below 5 kHz because pre-emphasis precedes modulation. AM carrier power is one quarter of PEP.
Generated with OpenAI Codex (GPT-6 Astra)