Take serial numbers from a pool the whole entry shares
Each station worked out its next number as the highest in its log plus one, so two operators typing at the same moment both sent the same number and one of the two contacts was wrong in the sponsor's log. SerialNumberPool holds the highest number taken per band, which is N1MM's QSONumbers array. A number is taken at the first character of the callsign, as N1MM takes it, and ReserveNr tells the other stations before the contact is worked. A number at or below one this station has used is answered with the whole pool, N1MM's QSONRS, and the station that is behind counts on from there. The pool also goes out when a contest is opened and when the numbers are started again. Contest.NumbersByBand says whether the numbers run per band or as one sequence for the station. CQ WPX runs one per band for a multi-two and a multi-multi; every other contest here runs one sequence. The band index in the message is N1MM's, so the array lines up with theirs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015NZkFxHde1iifAQemFTHxf
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
using Nonemm.Core;
|
||||
|
||||
namespace Nonemm.Contests;
|
||||
|
||||
/// Reading the entry's class off the Cabrillo categories. N1MM reads the
|
||||
/// number of transmitters off the operator category on Cabrillo 2.0 and off
|
||||
/// the transmitter category after it, so both are checked here and an entry
|
||||
/// written either way is read.
|
||||
public static class EntryCategories
|
||||
{
|
||||
public static bool IsMultiOperator(ContestEntry entry) =>
|
||||
entry.OperatorCategory.StartsWith("MULTI", StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
public static bool IsMultiOne(ContestEntry entry) => Is(entry, "MULTI-ONE", "ONE");
|
||||
|
||||
public static bool IsMultiTwo(ContestEntry entry) => Is(entry, "MULTI-TWO", "TWO");
|
||||
|
||||
public static bool IsMultiMulti(ContestEntry entry) => Is(entry, "MULTI-MULTI", "UNLIMITED");
|
||||
|
||||
private static bool Is(ContestEntry entry, string operatorCategory, string transmitterCategory) =>
|
||||
IsMultiOperator(entry)
|
||||
&& (entry.OperatorCategory.Equals(operatorCategory, StringComparison.OrdinalIgnoreCase)
|
||||
|| entry.TransmitterCategory.Equals(transmitterCategory, StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
Reference in New Issue
Block a user