Carry alternating CQ on after a contact

Alternating CQ ran off every message the keyer finished, so working a
station that answered started a CQ on the other radio, and Escape --
which stopped it outright -- was the way around that. It now follows
N1MM: only the CQ message carries the alternation to the other radio,
anything else holds it where it is, and so does Escape. The next CQ
picks it up again, which is what the CQ after a logged contact does, so
Ctrl+B is needed once rather than after every contact.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RoGtneMQaz4M9w7Kk49AVD
This commit is contained in:
2026-08-31 13:29:44 +00:00
parent 12dab9644a
commit 921033cd93
6 changed files with 99 additions and 10 deletions

View File

@@ -84,6 +84,15 @@ public sealed partial class EntryWindow
// the BARTG contest sends the time, and logs the one it sent
Logging.StampSentTime();
}
// only a CQ carries alternating CQ on to the other radio
if (index == Esm.CallCq)
{
session.Alternating?.CarryOn();
}
else
{
session.Alternating?.Hold();
}
string text = prefix + plan.Text;
// the box has to point at this radio before the key does
await session.PointTransmitAtAsync(radioNumber);

View File

@@ -352,7 +352,9 @@ public sealed partial class EntryWindow : Window
case Key.Escape:
e.Handled = true;
sending = false;
session.Alternating?.Stop();
// N1MM's Escape holds alternating CQ where it is rather than
// switching it off; the next CQ carries it on
session.Alternating?.Hold();
_ = session.Keyer?.AbortAsync();
Logging.Wipe();
ResetEsm();
@@ -618,7 +620,7 @@ public sealed partial class EntryWindow : Window
private void OnStopSending(object? sender, RoutedEventArgs e)
{
sending = false;
session.Alternating?.Stop();
session.Alternating?.Hold();
_ = session.Keyer?.AbortAsync();
Status("stopped sending");
}