Repository navigation
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## dev #946 +/- ##
============================================
- Coverage 42.06% 41.97% -0.10%
Complexity 309 309
============================================
Files 282 283 +1
Lines 34300 34516 +216
Branches 4145 4189 +44
============================================
+ Hits 14429 14487 +58
- Misses 19547 19701 +154
- Partials 324 328 +4
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Review round 1This is the Claude
Fix commit: 8a605b6. I also updated the PR body: the instruction set changed, and the draft APK predates this fix. Tests run locally ( Not verified on hardware: |
- Android: XIEGU_G106 collided with HAMLIB (26), a duplicate switch case; move it to 28 (27 is claimed by the open QMX PR patrickrb#946) and add a uniqueness test over InstructionSet. - Android: the keepalive re-entered setPTT(true) from the poll thread, so racing an unkey could re-key the rig indefinitely. It now resends the frame only, under a lock shared with setPTT. - rigaddress.txt is append-only: move the new G106(USB) row to the end and pin it in GOLDEN_ORDER. - Desktop: only the G106 backend rejects a connection on failed PTT-off (FLrig/Hamlib keep their lazy behaviour); drive the keepalive off a monotonic clock; end the over when a keepalive fails. - Desktop: move audioDeviceLabel to a tested module and stop calling every generic C-Media card a DE-19. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Append a 'QRP Labs QMX' row to rigaddress.txt mirroring the QDX (KENWOOD_TS590 instruction set, 9600 baud). USB detection (0483:A34C) was already in place; the radio was just missing from the picker. Appended at the end rather than next to the QDX because the selected rig is persisted as a raw list index. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The QMX entry reused the KENWOOD_TS590 instruction set, which sends MD2;. That is harmless on the digital-only QDX but selects USB voice on SSB-capable QMX firmware, so FT8 needed a manual switch to Digi (reported on real hardware in #925). Give the QMX its own instruction set and a KenwoodTS590Rig subclass that sends MD6;, the QMX CAT manual's digital mode. Frequency, PTT, VFO and meter commands are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8a605b6 to
4ba9178
Compare
Debug APKDownload FT8AF-pr946-4ba9178-debug.zip (built from 4ba9178, run) Unzip it and install the Uninstalling deletes all of the app data: the QSO log, settings, and saved logbook and rig configuration. Export your log as ADIF before you do this on a phone you operate from. |
Fixes #945 (Android half): "Android does not recognize the QMX."
Debug APK
Download FT8AF-pr945-6f3d5a2-debug.apk (built from 6f3d5a2, before the MD6 change in 8a605b6; it still sends MD2; to the QMX, so rebuild to test mode switching)
dev. Theft8af-releaseCI artifact is unsigned, so Android won't install it. The APK uses the same debug signing key as the PR Wrap frequency-picker alternate chips instead of squeezing them (#930) #932 build, so it installs over that build.Manual test checklist
Steps 3 and 4 need hardware. Step 3 is for the founder or the #945 reporter.
What changed
assets/rigaddress.txt: addedQRP Labs QMX,00,9600,27. Instruction set 27 (QRPLABS_QMX, new) is the QDX's KENWOOD_TS590 CAT path viaQrpLabsQmxRig, except the mode command isMD6;(QMX digital mode) instead ofMD2;, which selects USB voice on SSB-capable QMX firmware (found on real hardware in Add QRP Labs QMX via the hamlib backend #925). Baud doesn't matter over USB CDC. USB detection was already in place:device_filter.xmllists ST CDC0483:A34C, which usesCdcAcmSerialDriver. The QMX was just missing from the picker.ConfigFragment→writeConfig("model", i)). Inserting after the QDX would shift every later entry, so users with Wolf SDR, (tr)uSDX, FT-891 (Hamlib), or IC-7300MK2 selected would silently get the wrong rig after upgrading.RigAddressAssetTestalready enforces this append-only rule.RigAddressAssetTest: added the QMX toGOLDEN_ORDER. Addedqmx_isListedWithItsOwnInstructionSetAndQdxBaud, plusQrpLabsQmxRigTest(sendsMD6;, TS-590 still sendsMD2;, TS-590 frequency framing). Changed the "last entry" test from IC-7300MK2 to the QMX.QRP Labs QMX (Hamlib)row (809,9600,26). The task only allowed it if I could confirm thatHamlibRigopens model 2057 cleanly, and I can't run the native lib here: no emulator or device. The Kenwood row is the same path the QDX already uses. A Hamlib row can follow once someone checks it on a device.Risks
MD6;= Digi is from the QMX CAT manual and the Add QRP Labs QMX via the hamlib backend #925 hardware test (via hamlib); this exact path hasn't been tested on a real QMX.Tested automatically
./gradlew testDebugUnitTest: 4036 tests, 0 failures, 0 errors (local, JDK 17).RigAddressAssetTest: 6/6 pass.assembleDebugsucceeded.apksigner verifypasses, andassets/rigaddress.txtinside the APK ends with the QMX row.Review
@copilotas reviewer returns OK, but no reviewer gets attached (same on Wrap frequency-picker alternate chips instead of squeezing them (#930) #932), so Copilot review looks disabled on this repo. I self-reviewed the diff (asset row + test) and found nothing to fix.Build APKrun failed inlintVitalAnalyzeReleasewith a 502 Bad Gateway from dl.google.com while resolvinglint-gradledeps. That is an infrastructure flake, not this change; I re-ran the failed jobs and they passed. All CI checks are green on 6f3d5a2 (Build APK, unit tests & coverage, instrumented emulator tests, lint/detekt/ktlint, codecov).Out of scope: the desktop/Linux libhamlib4 conflict (second half of #945).
desktop/linux/run-ft8af.shondevalready handles it.🤖 Generated with Claude Code