Skip to content

Commit

Permalink
DxStation now sends 'R' after callsign correction (#371)
Browse files Browse the repository at this point in the history
- this problem was introduced in 1.85
- 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.
- Issue #370
  • Loading branch information
w7sst authored Oct 14, 2024
2 parents eacfdc5 + a184ae9 commit 5767d92
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 6 deletions.
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

0 comments on commit 5767d92

Please sign in to comment.