forked from VE3NEA/MorseRunner
-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
200 nil if ghosted before logging (#313)
There are four commits in this fix. Please refer to my large comment in Issue #200 for full description of the fix, including state diagrams. An engineering build of these changes are available [here](https://1drv.ms/u/c/353d3bde42947823/EZPYMf4gn4BLp-z6n0grDuoBRUjnro7PGXjgHh8oatOuAg?e=S7zqU2) The checkin notes for the 4 commits are listed below... ``` 1. Add comments to existing code, DxOperator, TOperatorState. 2. Fix caller ghosting after entering call and exchange info This is the first of three parts to fix the ghosting issue. Here, one of the root causes of caller ghosting is when the DxOperator.Patience value was not increased after receiving the last transmission from user. Thus, it would timeout sooner than expected. To fix this problem, the Patience value increased by calling TDxOperator.MorePatience. This is basically saying that when the DxOperator receives a transmission from the User, they will continue to work the QSO without loosing patience and giving up - thus the notion of "more patience" in introduced. This fixes issue #200. See Issue #200 for more information. 3. Fix ghosting by stations leaving the QSO early after calling them This is the second of three parts to fix the ghosting issue. This fix addresses the second root cause of caller ghosting where a Dx station would disappear almost immediately after being created. This would occur about 10% of the time. The user would enter and send the Dx station's callsign, only to discover that the station goes silent and does not return its exchange information. The root cause for this second problem was traced back to a call to the random function RndRayleigh(4). The result of this call is used to set the value of DxOperator.Patience. Patience represents operator patience, an expression of how patient the Dx operator will be while waiting for a responce from the user. RndRayleigh(4) will return a random integer value with a Mean of 4. The problem is, 11% of the time, this value could be 0 or 1. Given a value of 0 or 1, other logic will cause the DxStation would disappear almost immediately. This was fixed by replacing the RndRayleight(4) call with '2 + RndRayleigh(3)'. This change makes sure that a minimum value of 2 is returned. The new Mean is now 5 instead of 4. This fixes issue #200. See Issue #200 for more information. 4. Fix problem where ghosted calls are not added to log This is the third of three changes addressing the issue of caller ghosting. A ghosted call was originally handled as a failed QSO after the Dx Station timeout out due to User inactivity. Once failed, it was deleted from the simulation before the QSO was logged by the user. With this fix, DxStation will stop sending and remaining in the set of active stations. This allows the QSO to be logged as usual by the user. This fixes issue #200. See Issue #200 for more information. ```
- Loading branch information
Showing
3 changed files
with
246 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.