Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DxStation now sends 'R' after callsign correction #371

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 21 additions & 5 deletions DxOper.pas
Original file line number Diff line number Diff line change
Expand Up @@ -251,19 +251,35 @@ procedure TDxOperator.DecPatience;

Parameter AValue is an optional Patience value.
If AValue > 0, Patience is set to this value;
else if Patience=FULL_PATIENCE, no changes;
else if RunMode = rmSingle, Patience is set to 4;
otherwise Patience is incremented by 2 (up to maximum of 4).

Note: When MorePatience was introduced in May 2024, a bug (Issue #370) was
introduced causing the DxStation to not send an 'R' after the user corrected
a callsign. The case involved the user sending a corrected callsign using
the Enter key while leaving the exchange fields blank (user sends
'<his incorrect call> ?'. In this case, the DxOperator.MsgReceived function
would call MorePatience for the '?' and the Patience value was set to 4.
This caused DxOperator.GetReply() to send the wrong response:
DxOperator.GetReply(osNeedEnd, Patience=5) --> 'R <HisCall>'
DxOperator.GetReply(osNeedEnd, Patience=4) --> '<HisCall>'
To fix this problem, MorePatience will maintain an existing Patience value
of 5 (FULL_PATIENCE) and not set it to 4. Resolved in October 2024.
}
procedure TDxOperator.MorePatience(AValue: integer);
begin
if State = osDone then Exit;

if AValue > 0 then
Patience := Min(AValue, FULL_PATIENCE)
else if RunMode = rmSingle then
Patience := 4
else
Patience := Min(Patience + 2, 4);
else if Patience < FULL_PATIENCE then
begin
if RunMode = rmSingle then
Patience := 4
else
Patience := Min(Patience + 2, 4);
end;
end;


Expand Down Expand Up @@ -419,7 +435,7 @@ procedure TDxOperator.MsgReceived(AMsg: TStationMessages);
osNeedNr, osNeedCall, osNeedCallNr, osNeedEnd: State := osFailed;
end;
Exit;
end;
end;

if msgHisCall in AMsg then
case IsMyCall(Tst.Me.HisCall, True) of
Expand Down
5 changes: 4 additions & 1 deletion Readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Contest Simulator
freeware

Version 1.85 - ARRL Sweepstakes Contest
Version 1.85.1 - ARRL Sweepstakes Contest
The sixth release of the Morse Runner Community Edition

Copyright (C) 2004-2016 Alex Shovkoplyas, VE3NEA
Expand Down Expand Up @@ -314,6 +314,9 @@ SUBMITTING YOUR SCORE

VERSION HISTORY

Version 1.85.1 (October 2024)
- DxStation now sends 'R' after callsign correction (W7SST)

Version 1.85 (September 2024)
- Add ARRL Sweepstakes Contest (W7SST)

Expand Down