Skip to content

Commit 884daef

Browse files
committed
Find my radio: settings handoff and config-file clues; dummy-rig console warning
HandoffBuilder turns a verified rig into the exact fields for WSJT-X / JS8Call, Fldigi, and Winlink Express, one copyable line each, using the programs' own labels. ConfigClueService reads WSJT-X.ini and JS8Call.ini (Rig, CATSerialPort, CATSerialRate, PTTMethod): the configured port is probed first, the configured radio stands in when none is chosen in the Connection panel, its family and baud move to the front of the sweep, and after verification each program gets a one-line verdict — already matches, or which of Rig / Serial Port / Baud Rate to change. The raw console now prints a warning beside any command sent with Hamlib model 1, the dummy rig, so simulated replies cannot pass as real. 19 strings in five languages. Version 0.6.9.
1 parent d138d9e commit 884daef

17 files changed

Lines changed: 451 additions & 15 deletions

‎App.xaml.cs‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@ private static void RegisterServices(IServiceCollection services, SettingsServic
121121
services.AddTransient<EnvironmentCheckService>();
122122
services.AddSingleton<DiscoveryDataService>();
123123
services.AddTransient<DiscoveryEngine>();
124+
services.AddTransient<ConfigClueService>();
125+
services.AddTransient<HandoffBuilder>();
124126
services.AddTransient<LogExportService>();
125127

126128
// ViewModels

‎BrandingInfo.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public static class BrandingInfo
1212
public const string AppName = "RigCheck";
1313
public const string SuiteName = "ShackDesk";
1414
public const string FullName = "RigCheck by ShackDesk";
15-
public const string Version = "0.6.8";
15+
public const string Version = "0.6.9";
1616
public const string Tagline = "Know your rig is ready";
1717

1818
// ── Developer / publisher ────────────────────────────────────

‎CHANGELOG.md‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,18 @@ All notable changes to RigCheck are documented here.
55
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66
Version numbers: patch (x.x.1) for landed features and fixes, minor (x.1.0) for milestones.
77

8+
## [0.6.9] - 2026-09-21
9+
10+
Find my radio hands you the settings; Hamlib's dummy rig can no longer pass unnoticed.
11+
12+
### Added
13+
- Settings handoff after a verified find: the exact fields for WSJT-X / JS8Call (File › Settings ›
14+
Radio), Fldigi (Rig Control › Hamlib), and Winlink Express, each as one copyable line
15+
- RigCheck reads what WSJT-X and JS8Call are configured to use (`WSJT-X.ini`, `JS8Call.ini`):
16+
their port is probed first, their radio stands in when none is chosen, and after the sweep
17+
each program gets a one-line verdict — already matches, or exactly which fields to change
18+
- The raw console warns beside every command sent to Hamlib model 1, the dummy rig
19+
820
## [0.6.8] - 2026-09-21
921

1022
Find my radio — the second half of the 0.7.0 milestone, first cut.

‎Models/Models.cs‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,3 +276,21 @@ public record ProbeEvent(
276276
string Message,
277277
string? Bytes = null, // hex dump of what was sent or received
278278
DiscoveredRig? Rig = null);
279+
280+
/// <summary>
281+
/// What one of the operator's digital-mode programs is configured to use,
282+
/// read from its own settings file. Values are the program's own strings
283+
/// ("Eight", "Two", "Hardware"), not RigCheck's.
284+
/// </summary>
285+
public record ConfigClue(
286+
string App, // "WSJT-X", "JS8Call"
287+
string FilePath,
288+
string RigName, // Hamlib display name, e.g. "Icom IC-7300"
289+
int ModelId, // resolved Hamlib model, 0 if unknown
290+
string Port, // "COM3", or "localhost:4532" for rigctl mode
291+
int Baud, // 0 = not set
292+
string DataBits,
293+
string StopBits,
294+
string Handshake,
295+
string PttMethod,
296+
bool UseRigctld);

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ model to pick, **Find my radio** works it out:
187187
frequency inside an amateur band is taken as its family's most likely model.
188188
4. Every find is verified with the same Hamlib test suite as **Run Tests**, and the best
189189
verified one is written into the Connection panel.
190-
5. A rigctld already listening on 4532 is reported as a working connection; Flrig on 12345
190+
6. A rigctld already listening on 4532 is reported as a working connection; Flrig on 12345
191191
is noted.
192192

193193
Everything sent and received is shown in the results panel, with a Copy button per line, and

‎Resources/Strings.de.resx‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,4 +378,23 @@ Fortfahren?</value></data>
378378
<data name="Disc_VerifyFailed" xml:space="preserve"><value>{0} an {1}: {2} Test(s) fehlgeschlagen</value></data>
379379
<data name="Disc_Applied" xml:space="preserve"><value>Verbindungseinstellungen auf {0} (Modell {1}), {2}, {3} Baud gesetzt — Tests ausführen verwendet diese jetzt</value></data>
380380
<data name="Export_Transcript" xml:space="preserve"><value>PROTOKOLL „MEIN FUNKGERÄT FINDEN“</value></data>
381+
<data name="Console_DummyRig" xml:space="preserve"><value>Modell 1 ist das Dummy-Gerät von Hamlib — jede Antwort unten ist simuliert, nicht von einem Funkgerät</value></data>
382+
<data name="Handoff_Heading" xml:space="preserve"><value>Einzugebende Einstellungen — Zeile für Ihr Programm kopieren</value></data>
383+
<data name="Handoff_WsjtxPath" xml:space="preserve"><value>WSJT-X und JS8Call: File › Settings › Radio</value></data>
384+
<data name="Handoff_Wsjtx" xml:space="preserve"><value>Rig: {0} · Serial Port: {1} · Baud Rate: {2} · Data Bits: Eight · Stop Bits: {3} · Handshake: None · PTT Method: {4}</value></data>
385+
<data name="Handoff_WsjtxNet" xml:space="preserve"><value>Rig: Hamlib NET rigctl · Network Server: {0}</value></data>
386+
<data name="Handoff_FldigiPath" xml:space="preserve"><value>Fldigi: Configure › Rig Control › Hamlib</value></data>
387+
<data name="Handoff_Fldigi" xml:space="preserve"><value>Rig: {0} · Device: {1} · Baud rate: {2} · Stopbits: {3} · PTT via Hamlib command</value></data>
388+
<data name="Handoff_FldigiNet" xml:space="preserve"><value>Rig: Hamlib NET rigctl · Device: {0}</value></data>
389+
<data name="Handoff_WinlinkPath" xml:space="preserve"><value>Winlink Express: Session › Radio Setup (eigene Geräteliste — das nächstliegende Modell wählen)</value></data>
390+
<data name="Handoff_Winlink" xml:space="preserve"><value>Radio: {0} · Serial Port: {1} · Baud: {2} · PTT: {3}</value></data>
391+
<data name="Handoff_Clue" xml:space="preserve"><value>{0} ist für {1} an {2} mit {3} Baud konfiguriert</value></data>
392+
<data name="Handoff_ClueRigctl" xml:space="preserve"><value>{0} ist auf rigctl unter {1} konfiguriert</value></data>
393+
<data name="Handoff_DiffMatch" xml:space="preserve"><value>{0} hat diese Einstellungen bereits</value></data>
394+
<data name="Handoff_DiffChange" xml:space="preserve"><value>{0} ist auf {1} an {2} mit {3} Baud eingestellt — ändern Sie {4}</value></data>
395+
<data name="Handoff_DiffRig" xml:space="preserve"><value>Rig auf {0}</value></data>
396+
<data name="Handoff_DiffPort" xml:space="preserve"><value>Serial Port auf {0}</value></data>
397+
<data name="Handoff_DiffBaud" xml:space="preserve"><value>Baud Rate auf {0}</value></data>
398+
<data name="Handoff_DiffRigctl" xml:space="preserve"><value>{0} verwendet rigctl ({1}) — das funktioniert, solange rigctld läuft</value></data>
399+
<data name="Handoff_DiffSerialVsRigctld" xml:space="preserve"><value>{0} ist auf {1} an {2} mit {3} Baud eingestellt — so lassen oder auf Hamlib NET rigctl umstellen, um das Funkgerät über rigctld zu teilen</value></data>
381400
</root>

‎Resources/Strings.es.resx‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,4 +378,23 @@ Los detalles se han guardado en el registro. Si esto sigue ocurriendo, infórmel
378378
<data name="Disc_VerifyFailed" xml:space="preserve"><value>{0} en {1}: {2} prueba(s) fallaron</value></data>
379379
<data name="Disc_Applied" xml:space="preserve"><value>Panel de Conexión establecido en {0} (modelo {1}), {2}, {3} baudios — Ejecutar pruebas usa estos valores ahora</value></data>
380380
<data name="Export_Transcript" xml:space="preserve"><value>TRANSCRIPCIÓN DE BUSCAR MI RADIO</value></data>
381+
<data name="Console_DummyRig" xml:space="preserve"><value>El modelo 1 es la radio ficticia de Hamlib — todas las respuestas de abajo son simuladas, no de una radio</value></data>
382+
<data name="Handoff_Heading" xml:space="preserve"><value>Ajustes que debe introducir — copie la línea de su programa</value></data>
383+
<data name="Handoff_WsjtxPath" xml:space="preserve"><value>WSJT-X y JS8Call: File › Settings › Radio</value></data>
384+
<data name="Handoff_Wsjtx" xml:space="preserve"><value>Rig: {0} · Serial Port: {1} · Baud Rate: {2} · Data Bits: Eight · Stop Bits: {3} · Handshake: None · PTT Method: {4}</value></data>
385+
<data name="Handoff_WsjtxNet" xml:space="preserve"><value>Rig: Hamlib NET rigctl · Network Server: {0}</value></data>
386+
<data name="Handoff_FldigiPath" xml:space="preserve"><value>Fldigi: Configure › Rig Control › Hamlib</value></data>
387+
<data name="Handoff_Fldigi" xml:space="preserve"><value>Rig: {0} · Device: {1} · Baud rate: {2} · Stopbits: {3} · PTT via Hamlib command</value></data>
388+
<data name="Handoff_FldigiNet" xml:space="preserve"><value>Rig: Hamlib NET rigctl · Device: {0}</value></data>
389+
<data name="Handoff_WinlinkPath" xml:space="preserve"><value>Winlink Express: Session › Radio Setup (tiene su propia lista de radios — elija el modelo más cercano)</value></data>
390+
<data name="Handoff_Winlink" xml:space="preserve"><value>Radio: {0} · Serial Port: {1} · Baud: {2} · PTT: {3}</value></data>
391+
<data name="Handoff_Clue" xml:space="preserve"><value>{0} está configurado para {1} en {2} a {3} baudios</value></data>
392+
<data name="Handoff_ClueRigctl" xml:space="preserve"><value>{0} está configurado para usar rigctl en {1}</value></data>
393+
<data name="Handoff_DiffMatch" xml:space="preserve"><value>{0} ya tiene estos ajustes</value></data>
394+
<data name="Handoff_DiffChange" xml:space="preserve"><value>{0} está configurado con {1} en {2} a {3} baudios — cambie {4}</value></data>
395+
<data name="Handoff_DiffRig" xml:space="preserve"><value>Rig a {0}</value></data>
396+
<data name="Handoff_DiffPort" xml:space="preserve"><value>Serial Port a {0}</value></data>
397+
<data name="Handoff_DiffBaud" xml:space="preserve"><value>Baud Rate a {0}</value></data>
398+
<data name="Handoff_DiffRigctl" xml:space="preserve"><value>{0} usa rigctl ({1}) — eso funciona siempre que rigctld esté en ejecución</value></data>
399+
<data name="Handoff_DiffSerialVsRigctld" xml:space="preserve"><value>{0} está configurado con {1} en {2} a {3} baudios — déjelo así, o cámbielo a Hamlib NET rigctl para compartir la radio a través de rigctld</value></data>
381400
</root>

‎Resources/Strings.fr.resx‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,4 +378,23 @@ Continuer ?</value></data>
378378
<data name="Disc_VerifyFailed" xml:space="preserve"><value>{0} sur {1} : {2} test(s) échoué(s)</value></data>
379379
<data name="Disc_Applied" xml:space="preserve"><value>Panneau Connexion réglé sur {0} (modèle {1}), {2}, {3} bauds — Lancer les tests utilise ces réglages maintenant</value></data>
380380
<data name="Export_Transcript" xml:space="preserve"><value>TRANSCRIPTION DE TROUVER MA RADIO</value></data>
381+
<data name="Console_DummyRig" xml:space="preserve"><value>Le modèle 1 est la radio factice de Hamlib — toutes les réponses ci-dessous sont simulées, pas issues d'une radio</value></data>
382+
<data name="Handoff_Heading" xml:space="preserve"><value>Réglages à saisir — copiez la ligne de votre programme</value></data>
383+
<data name="Handoff_WsjtxPath" xml:space="preserve"><value>WSJT-X et JS8Call : File › Settings › Radio</value></data>
384+
<data name="Handoff_Wsjtx" xml:space="preserve"><value>Rig: {0} · Serial Port: {1} · Baud Rate: {2} · Data Bits: Eight · Stop Bits: {3} · Handshake: None · PTT Method: {4}</value></data>
385+
<data name="Handoff_WsjtxNet" xml:space="preserve"><value>Rig: Hamlib NET rigctl · Network Server: {0}</value></data>
386+
<data name="Handoff_FldigiPath" xml:space="preserve"><value>Fldigi : Configure › Rig Control › Hamlib</value></data>
387+
<data name="Handoff_Fldigi" xml:space="preserve"><value>Rig: {0} · Device: {1} · Baud rate: {2} · Stopbits: {3} · PTT via Hamlib command</value></data>
388+
<data name="Handoff_FldigiNet" xml:space="preserve"><value>Rig: Hamlib NET rigctl · Device: {0}</value></data>
389+
<data name="Handoff_WinlinkPath" xml:space="preserve"><value>Winlink Express : Session › Radio Setup (sa propre liste de radios — choisissez le modèle le plus proche)</value></data>
390+
<data name="Handoff_Winlink" xml:space="preserve"><value>Radio: {0} · Serial Port: {1} · Baud: {2} · PTT: {3}</value></data>
391+
<data name="Handoff_Clue" xml:space="preserve"><value>{0} est configuré pour {1} sur {2} à {3} bauds</value></data>
392+
<data name="Handoff_ClueRigctl" xml:space="preserve"><value>{0} est configuré pour utiliser rigctl à {1}</value></data>
393+
<data name="Handoff_DiffMatch" xml:space="preserve"><value>{0} a déjà ces réglages</value></data>
394+
<data name="Handoff_DiffChange" xml:space="preserve"><value>{0} est réglé sur {1} sur {2} à {3} bauds — changez {4}</value></data>
395+
<data name="Handoff_DiffRig" xml:space="preserve"><value>Rig en {0}</value></data>
396+
<data name="Handoff_DiffPort" xml:space="preserve"><value>Serial Port en {0}</value></data>
397+
<data name="Handoff_DiffBaud" xml:space="preserve"><value>Baud Rate en {0}</value></data>
398+
<data name="Handoff_DiffRigctl" xml:space="preserve"><value>{0} utilise rigctl ({1}) — cela fonctionne tant que rigctld tourne</value></data>
399+
<data name="Handoff_DiffSerialVsRigctld" xml:space="preserve"><value>{0} est réglé sur {1} sur {2} à {3} bauds — gardez cela, ou passez à Hamlib NET rigctl pour partager la radio via rigctld</value></data>
381400
</root>

‎Resources/Strings.ja.resx‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,4 +378,23 @@
378378
<data name="Disc_VerifyFailed" xml:space="preserve"><value>{1} の {0}: {2} 件のテストが失敗</value></data>
379379
<data name="Disc_Applied" xml:space="preserve"><value>「接続」パネルを {0}(モデル {1})、{2}、{3} ボーに設定しました — 「テストを実行」はこの設定を使います</value></data>
380380
<data name="Export_Transcript" xml:space="preserve"><value>「無線機を探す」の記録</value></data>
381+
<data name="Console_DummyRig" xml:space="preserve"><value>モデル 1 は Hamlib のダミーリグです — 以下の応答はすべてシミュレーションで、無線機からのものではありません</value></data>
382+
<data name="Handoff_Heading" xml:space="preserve"><value>入力する設定 — お使いのプログラムの行をコピーしてください</value></data>
383+
<data name="Handoff_WsjtxPath" xml:space="preserve"><value>WSJT-X と JS8Call: File › Settings › Radio</value></data>
384+
<data name="Handoff_Wsjtx" xml:space="preserve"><value>Rig: {0} · Serial Port: {1} · Baud Rate: {2} · Data Bits: Eight · Stop Bits: {3} · Handshake: None · PTT Method: {4}</value></data>
385+
<data name="Handoff_WsjtxNet" xml:space="preserve"><value>Rig: Hamlib NET rigctl · Network Server: {0}</value></data>
386+
<data name="Handoff_FldigiPath" xml:space="preserve"><value>Fldigi: Configure › Rig Control › Hamlib</value></data>
387+
<data name="Handoff_Fldigi" xml:space="preserve"><value>Rig: {0} · Device: {1} · Baud rate: {2} · Stopbits: {3} · PTT via Hamlib command</value></data>
388+
<data name="Handoff_FldigiNet" xml:space="preserve"><value>Rig: Hamlib NET rigctl · Device: {0}</value></data>
389+
<data name="Handoff_WinlinkPath" xml:space="preserve"><value>Winlink Express: Session › Radio Setup(独自の無線機一覧 — 最も近い機種を選択)</value></data>
390+
<data name="Handoff_Winlink" xml:space="preserve"><value>Radio: {0} · Serial Port: {1} · Baud: {2} · PTT: {3}</value></data>
391+
<data name="Handoff_Clue" xml:space="preserve"><value>{0} は {2} の {1}({3} ボー)に設定されています</value></data>
392+
<data name="Handoff_ClueRigctl" xml:space="preserve"><value>{0} は {1} の rigctl を使う設定です</value></data>
393+
<data name="Handoff_DiffMatch" xml:space="preserve"><value>{0} はすでにこの設定です</value></data>
394+
<data name="Handoff_DiffChange" xml:space="preserve"><value>{0} は {2} の {1}({3} ボー)に設定されています — {4} に変更してください</value></data>
395+
<data name="Handoff_DiffRig" xml:space="preserve"><value>Rig を {0}</value></data>
396+
<data name="Handoff_DiffPort" xml:space="preserve"><value>Serial Port を {0}</value></data>
397+
<data name="Handoff_DiffBaud" xml:space="preserve"><value>Baud Rate を {0}</value></data>
398+
<data name="Handoff_DiffRigctl" xml:space="preserve"><value>{0} は rigctl({1})を使用します — rigctld が動作していれば動きます</value></data>
399+
<data name="Handoff_DiffSerialVsRigctld" xml:space="preserve"><value>{0} は {2} の {1}({3} ボー)に設定されています — そのままにするか、rigctld 経由で無線機を共有するために Hamlib NET rigctl に切り替えてください</value></data>
381400
</root>

‎Resources/Strings.resx‎

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,4 +1213,65 @@ Continue?</value>
12131213
<data name="Export_Transcript" xml:space="preserve">
12141214
<value>FIND MY RADIO TRANSCRIPT</value>
12151215
</data>
1216+
<data name="Console_DummyRig" xml:space="preserve">
1217+
<value>Model 1 is Hamlib's dummy rig — every reply below is simulated, not from a radio</value>
1218+
<comment>Shown in the raw console whenever a command is sent with Hamlib model 1.</comment>
1219+
</data>
1220+
<data name="Handoff_Heading" xml:space="preserve">
1221+
<value>Settings to enter — copy the line for your program</value>
1222+
</data>
1223+
<data name="Handoff_WsjtxPath" xml:space="preserve">
1224+
<value>WSJT-X and JS8Call: File › Settings › Radio</value>
1225+
</data>
1226+
<data name="Handoff_Wsjtx" xml:space="preserve">
1227+
<value>Rig: {0} · Serial Port: {1} · Baud Rate: {2} · Data Bits: Eight · Stop Bits: {3} · Handshake: None · PTT Method: {4}</value>
1228+
<comment>Field labels as they appear in WSJT-X. Translate only if WSJT-X is translated in your language. {0} rig name, {1} port, {2} baud, {3} stop bits, {4} PTT method.</comment>
1229+
</data>
1230+
<data name="Handoff_WsjtxNet" xml:space="preserve">
1231+
<value>Rig: Hamlib NET rigctl · Network Server: {0}</value>
1232+
</data>
1233+
<data name="Handoff_FldigiPath" xml:space="preserve">
1234+
<value>Fldigi: Configure › Rig Control › Hamlib</value>
1235+
</data>
1236+
<data name="Handoff_Fldigi" xml:space="preserve">
1237+
<value>Rig: {0} · Device: {1} · Baud rate: {2} · Stopbits: {3} · PTT via Hamlib command</value>
1238+
<comment>Field labels as they appear in Fldigi. {0} rig, {1} device, {2} baud, {3} stop bits.</comment>
1239+
</data>
1240+
<data name="Handoff_FldigiNet" xml:space="preserve">
1241+
<value>Rig: Hamlib NET rigctl · Device: {0}</value>
1242+
</data>
1243+
<data name="Handoff_WinlinkPath" xml:space="preserve">
1244+
<value>Winlink Express: Session › Radio Setup (its own radio list — pick the nearest model)</value>
1245+
</data>
1246+
<data name="Handoff_Winlink" xml:space="preserve">
1247+
<value>Radio: {0} · Serial Port: {1} · Baud: {2} · PTT: {3}</value>
1248+
</data>
1249+
<data name="Handoff_Clue" xml:space="preserve">
1250+
<value>{0} is configured for {1} on {2} at {3} baud</value>
1251+
</data>
1252+
<data name="Handoff_ClueRigctl" xml:space="preserve">
1253+
<value>{0} is configured to use rigctl at {1}</value>
1254+
</data>
1255+
<data name="Handoff_DiffMatch" xml:space="preserve">
1256+
<value>{0} already has these settings</value>
1257+
</data>
1258+
<data name="Handoff_DiffChange" xml:space="preserve">
1259+
<value>{0} is set to {1} on {2} at {3} baud — change {4}</value>
1260+
<comment>{0} program, {1} its configured rig, {2} its port, {3} its baud, {4} comma list built from Handoff_DiffRig/Port/Baud.</comment>
1261+
</data>
1262+
<data name="Handoff_DiffRig" xml:space="preserve">
1263+
<value>Rig to {0}</value>
1264+
</data>
1265+
<data name="Handoff_DiffPort" xml:space="preserve">
1266+
<value>Serial Port to {0}</value>
1267+
</data>
1268+
<data name="Handoff_DiffBaud" xml:space="preserve">
1269+
<value>Baud Rate to {0}</value>
1270+
</data>
1271+
<data name="Handoff_DiffRigctl" xml:space="preserve">
1272+
<value>{0} uses rigctl ({1}) — that works whenever rigctld is running</value>
1273+
</data>
1274+
<data name="Handoff_DiffSerialVsRigctld" xml:space="preserve">
1275+
<value>{0} is set to {1} on {2} at {3} baud — keep that, or switch it to Hamlib NET rigctl to share the radio through rigctld</value>
1276+
</data>
12161277
</root>

0 commit comments

Comments
 (0)