Skip to content

Add a remote control service to the CLI and GUI - #24

Merged
cboulay merged 1 commit into
masterfrom
cboulay/remote-control
Nov 8, 2026
Merged

cboulay merged 1 commit into
masterfrom
cboulay/remote-control

Conversation

@cboulay

@cboulay cboulay commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #23 (the trigger command needs it); merge that first.

Summary

  • Line-based TCP service on 127.0.0.1 only (no auth) that does everything the GUI does: status, set <key> <value>, load/save <file>, link/unlink, impedance on|off, trigger [width_us], shutdown_ampserver, help. One OK .../ERROR ... reply per line; commands block until done.
  • Off by default: --remote-port <port> (CLI) or <remoteport> in the config file (CLI and GUI, read at startup).
  • Command dispatch is in the core (RemoteControl.cpp); CLI and GUI implement a small RemoteControlTarget. GUI remote commands run their UI work on the UI thread, so the window always reflects the state.
  • With remote control the CLI keeps running until Ctrl+C, even when unlinked or if the first link fails.
  • GUI now keeps config settings it has no field for (e.g. systemdelayms) instead of resetting them.
  • README: new Remote Control section.

Test plan

  • scripts/remote_control_test.py against the NA500 mock (CLI)
  • Same against a GES 500 (fw 0.4.9), CLI and GUI, incl. 5/5 BNC loopback triggers, impedance on/off, save/load, clean Ctrl+C exit
  • shutdown_ampserver on real hardware (not run: it kills the amp's AmpServer)
  • Windows/Linux builds (CI)

🤖 Generated with Claude Code

@cboulay
cboulay added this pull request to stack #25 November 7, 2026 23:12
@cboulay
cboulay force-pushed the cboulay/remote-control branch 2 times, most recently from f650850 to 087bbad Compare November 8, 2026 00:16
Base automatically changed from cboulay/na500-bnc-output to master November 8, 2026 00:21
A line-based TCP service on 127.0.0.1 that does everything the GUI does:
status, set/load/save settings, link/unlink, impedance on/off, shutdown the
AmpServer, and fire the NA500's BNC output trigger. Each command line gets
one "OK ..." / "ERROR ..." reply line; commands block until done.

It is off by default: --remote-port <port> (CLI) or <remoteport> in the
config file (CLI and GUI). The command dispatch lives in the core
(RemoteControl.cpp); the CLI and GUI implement a small RemoteControlTarget.
In the GUI, remote commands run their UI work on the UI thread, so the
window always shows the current state. With remote control the CLI keeps
running until Ctrl+C, even when unlinked or if the first link fails.

The GUI now keeps settings it has no field for (e.g. systemdelayms) from
the loaded config instead of resetting them to defaults.

scripts/remote_control_test.py exercises the service end to end; it passes
against the NA500 mock and a GES 500 (fw 0.4.9, CLI and GUI), including
BNC out -> BNC in loopback.

Co-Authored-By: Claude <noreply@anthropic.com>
@cboulay
cboulay force-pushed the cboulay/remote-control branch from 087bbad to e6e6ec6 Compare November 8, 2026 00:21
@cboulay
cboulay merged commit e170469 into master Nov 8, 2026
6 checks passed
@cboulay
cboulay deleted the cboulay/remote-control branch November 8, 2026 00:25
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.

1 participant