Skip to content

rigctl: append RPRT terminator to all bare-mode getters (#3120). Principle I.#3127

Merged
ten9876 merged 1 commit into
mainfrom
aetherclaude/issue-3120
May 25, 2026
Merged

rigctl: append RPRT terminator to all bare-mode getters (#3120). Principle I.#3127
ten9876 merged 1 commit into
mainfrom
aetherclaude/issue-3120

Conversation

@aethersdr-agent

Copy link
Copy Markdown
Contributor

Summary

Fixes #3120

What was changed

rigctl: append RPRT terminator to all bare-mode getters (#3120). Principle I.

Files modified

  • src/core/RigctlProtocol.cpp
  • tests/rigctld_test.cpp
 src/core/RigctlProtocol.cpp | 20 ++++++-------
 tests/rigctld_test.cpp      | 68 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 78 insertions(+), 10 deletions(-)

Generated by AetherClaude (automated agent for AetherSDR)


🤖 aethersdr-agent · cost: $10.2367 · model: claude-opus-4-7

…ciple I.

Hamlib's NET rigctl reference appends RPRT N to every response in both
bare and extended modes. AetherSDR's bare-mode long-form getters omitted
the terminator on 10 commands (chk_vfo, get_powerstat, hamlib_version,
get_split_freq_mode, get_vfo_list, get_modes, get_rptr_shift,
get_rptr_offs, get_ctcss_tone, get_dcs_code). Clients other than
WSJT-X — fldigi, JTDX, hamlib-cli, etc. — may stall waiting for the
missing terminator the same way WSJT-X stalled on get_lock_mode in
#3115.

Mechanical sweep: each bare branch now returns the value lines plus
rprt(0), mirroring the Hamlib reference exactly. Extended-mode
branches already carried the terminator and are unchanged. Short-form
single-character getters are left alone — they follow a different
convention that omits RPRT (see cmdGetFreq and siblings).

Each new bare-mode terminator gets a regression assertion in
tests/rigctld_test.cpp section 13 (13.11–13.20), following the
13.10 / #3115 pattern of asserting the exact two-line
{value, "RPRT 0"} response. get_split_freq_mode is 4 lines bare
(freq, mode, passband, RPRT 0) and accepts the alternate "RPRT -1"
shape when no TX slice exists.

Principle I (FlexLib / upstream-protocol authority): Hamlib's NET
rigctl backend is the reference for this on-wire protocol; the bare-mode
omission was a divergence from that reference. Restoring conformance
is the load-bearing principle.

Blast radius: codegraph impact on processCommand reports
risk_score=0.104 with 5 high-risk downstream model accessors
(RadioModel::transmitModel/sendCmd/isConnected/sendCmdPublic,
SliceModel::sliceId). These are read by the cmd handlers that the
unchanged branches dispatch to; the edits here are purely textual
additions to return values and do not touch handler bodies or any
downstream model state. The PreToolUse file-level hook flagged
risk_score=0.182 with MainWindow as a transitive caller via header
inclusion — same conclusion: text-only return-value change, no
behavioural ripple.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@aethersdr-agent aethersdr-agent Bot requested review from a team as code owners May 25, 2026 08:41
@aethersdr-agent aethersdr-agent Bot enabled auto-merge (squash) May 25, 2026 08:41
@ten9876 ten9876 merged commit 1f16fb6 into main May 25, 2026
4 checks passed
@ten9876 ten9876 deleted the aetherclaude/issue-3120 branch May 25, 2026 09:09
G6PWY-Chris pushed a commit to G6PWY-Chris/AetherSDR that referenced this pull request Jun 22, 2026
…). Principle I. (aethersdr#3127)

## Summary

Fixes aethersdr#3120

### What was changed

rigctl: append RPRT terminator to all bare-mode getters (aethersdr#3120).
Principle I.

### Files modified

- `src/core/RigctlProtocol.cpp`
- `tests/rigctld_test.cpp`

```
 src/core/RigctlProtocol.cpp | 20 ++++++-------
 tests/rigctld_test.cpp      | 68 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 78 insertions(+), 10 deletions(-)
```

---
Generated by AetherClaude (automated agent for AetherSDR)

---
<sub>🤖 aethersdr-agent · cost: $10.2367 · model: claude-opus-4-7</sub>

Co-authored-by: aethersdr-agent[bot] <273844287+aethersdr-agent[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

audit: bare-mode rigctl getters missing RPRT terminator (Hamlib protocol compliance)

1 participant