Conversation
Two defects in the CAT liveness watchdog made the status chip go red on a working link, with no line in debug.log to explain it: 1. The watchdog armed itself on the app's OWN command. setOperationBand pushed the target dial through BaseRig.setFreq(), which fires onRigResponded() as if the rig had answered. On any rig/transport that accepts commands but never answers a frequency read (one-way links, write-only CAT modes, adapters that drop replies) the watchdog was armed by our write and declared the rig dead 8 s later while PTT and retunes kept working. It also made USB Diagnostics report "CAT Response: pass" for a rig that had never spoken. 2. A trip was terminal. The watchdog stopped itself on ERROR, so a single missed 8 s window (ATU tune, a rig menu, a Bluetooth hiccup, a mangled reply) left the chip red until the operator tapped it. Fix: - BaseRig.setCommandedFreq(): same bookkeeping as setFreq() but no liveness signal; setOperationBand uses it. Only replies parsed from the rig arm the watchdog now. - CatLivenessTracker: the arm/trip/recover state pulled out of MainViewModel as a pure class. A trip is a transition; probing continues and the next genuine reply flips the chip back to CONNECTED. - Trip and recovery are written to debug.log so field reports show why. Tests: CatLivenessTrackerTest (10) covers arming only on replies, one trip per quiet period, PR #450's TX-edge re-arm, recovery, re-trip, stop/restart. BaseRigFreqSignalTest (4, Robolectric) pins setFreq vs setCommandedFreq. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sharing debug.log used to need 7 taps on the version text to unlock a hidden Debug row. About now always shows "Share logs" (opens the share sheet straight away, or a toast when no log exists yet) and "View logs" (the existing viewer). The debug-mode flag, its config hydration and the enabled/disabled toasts are removed. The share intent is split into internal helpers covered by DebugLogShareTest. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Point the GitHub bug-report body at Settings -> About -> Share logs (the old Debug row no longer exists), and cover shareDebugLog's success path. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Apply chip-state writes under the CatLivenessTracker monitor, atomic with the transition that caused them: the watchdog's ERROR on trip (written before the tick's probe goes out), the recovery's CONNECTED, and the connector's stop+ERROR / stop+afterDisconnect. A reply can no longer heal between a trip and its ERROR (chip stuck red, tracker untripped), and a recovery can no longer overwrite a connector error. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…by VID+PID (#817) A Discord user with an FT-891 (Silicon Labs CP2105 dual UART) could not get CAT working: every row of "Select Serial Port" printed raw hex (\0x03E9\0x10C4\0xEA70\0x1) so nothing told them which of the two identical rows was the CAT interface, and when they picked the wrong one the USB Diagnostics page only said "CAT Response: fail". The issue proposed auto-selecting the CAT interface from a VID:PID table and auto-probing ports x baud rates when CAT is silent. Both are deliberately NOT implemented: on the same 10C4:EA70 chip Yaesu carries CAT on the Enhanced interface (0) while Kenwood's TS-890S manual says to use the Standard one (1), so any table keyed on the chip is wrong for someone; and walking baud rates on the frame-less 5-byte Yaesu protocol can decode garbage as an opcode (0x08 = PTT on). The app states facts and leaves the choice to the operator. What changes: - Picker rows now read "Silicon Labs CP2105 · Port 1 of 2 · Enhanced" / "... Port 2 of 2 · Standard" (SerialPortLabel, pure + unit-tested). The role is only ever the chip's own interface name, never "CAT"/"PTT". The same label feeds the legacy picker and the web log page via information(). - The picker shows a one-line note when a dual-port chip is listed: Yaesu uses Enhanced for CAT, Kenwood TS-890S/TS-990S uses Standard. - CableSerialPort.prepare() and isDevicePresent() match the picked device by deviceId+VID+PID, then VID+PID, instead of "last device with this vendor id" — an FT-891 plus a Digirig (both Silicon Labs) could open the wrong chip depending on HashMap order. The match is logged to debug.log. - listSerialPorts() lists CDC-class devices that no prober claims (prepare() already fell back to CdcAcmSerialDriver for them, so they could connect but never appeared) — gated on an actual Communications-class interface so the rig's audio codec is not offered as a serial port. - USB Diagnostics gains a "CAT Port" row ("Port 2 of 2 · Standard · 4800 bd") and a hint under the card when the port is open but CAT is silent: the Enhanced/Standard note on a dual-port chip, a baud/model note otherwise. In FT-710 cable mode (read loop intentionally off) CAT Response is now an informational row with a note instead of a permanent red. Not changed: USB auto-connect still opens the first enumerated port, and a manual pick is still not persisted (a wrong pick self-heals on restart). Tests: SerialPortLabelTest, CableSerialPortDeviceMatchTest, SerialPortPickerHintTest, UsbDiagnosticsLogicTest (+14 cases). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Fix CAT chip turning red while CAT still works (#781)
Put Share logs / View logs in Settings > About (no 7-tap unlock)
- Chip names no longer depend on getSimpleName(): R8 renames the driver classes in release, so map class literals to stable family keys. - USB Diagnostics counts a CDC-ACM fallback device (Communications control interface) as a serial device, the same rule the picker uses. - VID/PID/permission rows describe the connected CAT port's device (deviceId+VID+PID, then VID+PID after a replug) before the generic ranking. - CAT hints are suppressed without a USB port or once CAT answered, then pick the FT-710 / dual-port / generic explanation. - FT-710 hint text matches the informational (not red) row. - UsbDiagnosticsLogicTest back to LF line endings. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
USB CAT: readable serial port picker, VID+PID device match, diagnostics hint (#817)
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## staging #822 +/- ##
=============================================
+ Coverage 41.94% 42.04% +0.09%
Complexity 239 239
=============================================
Files 276 276
Lines 33103 33177 +74
Branches 3855 3871 +16
=============================================
+ Hits 13886 13949 +63
- Misses 18936 18945 +9
- Partials 281 283 +2
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Promotes #818, #819 and #820 to staging.
What's in this promotion
#818: CAT chip no longer turns red while CAT works (#781).
setOperationBandnow usesBaseRig.setCommandedFreq(), which is not a liveness signal. Only real rig replies arm the watchdog, and USB Diagnostics no longer shows "CAT Response: pass" for a rig that never replied.CatLivenessTrackerkeeps probing after a trip, and the next reply turns the chip back to CONNECTED.debug.log(CAT liveness: …).#819: Share logs / View logs in Settings → About.
debug.login one tap (or shows a toast when there's no log yet), and View logs, the existing viewer.debugModeEnabledconfig row is ignored.#820: Readable USB serial port picker, VID+PID device match, diagnostics hints (#817, partial).
Silicon Labs CP2105 · Port 1 of 2 · Enhancedinstead of raw hex. When a CP2105 is attached, a hint explains that Yaesu rigs use the Enhanced port for CAT and Kenwood TS-890S/TS-990S use Standard.Port 2 of 2 · Standard · 4800 bd.Testing
🤖 Generated with Claude Code