Skip to content

Commit

Permalink
add EU-DX rules
Browse files Browse the repository at this point in the history
  • Loading branch information
zcsahok committed Jul 8, 2024
1 parent 28e8fc4 commit e02d5f4
Show file tree
Hide file tree
Showing 6 changed files with 146 additions and 0 deletions.
44 changes: 44 additions & 0 deletions rules/eudx/eudx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
########################
# EU-DX contest #
########################
# https://www.eudx-contest.com/rules/
#
# Provided by: HA5CQZ
#
CONTEST_MODE
LOGFILE=eudx.log

CABRILLO=UNIVERSAL
CABRILLO-CONTEST=EUDXC

#================================
# Select one of following blocks:
#--------------------------------
#
# non-EU stations send ITU zone
#
#CABRILLO-EXCHANGE=00
#F3=@ ++5NN-- 00
#S&P_TU_MSG=TU ++5NN-- 00
#PLUGIN_CONFIG=DX
#--------------------------------
#
# EU stations send region code
#
CABRILLO-EXCHANGE=XX00
F3=@ ++5NN-- XX00
S&P_TU_MSG=TU ++5NN-- XX00
PLUGIN_CONFIG=IT
#================================

MIXED

# Scoring:
# (handled by eudx.py)


# Multipliers:
# EU regions and DXCC countries per band
# (handled by eudx.py)
GENERIC_MULT=BAND

87 changes: 87 additions & 0 deletions rules/eudx/eudx.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
"""
EU-DX contest
https://www.eudx-contest.com/
"""
import re

MY_COUNTRY = None
MY_PREFIX = None
MY_CONTINENT = None

EU_REGION_PATTERN = re.compile('([A-Z]{2})\d{2}') # two letters and two numbers

EU_COUNTRIES = ['AT', 'BE', 'BG', 'CZ', 'CY', 'HR', 'DK', 'EE',
'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV',
'LT', 'LX', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK',
'SI', 'ES', 'SE']

#
# - EU stations shall provide their ISO_3166-1_alpha-2 country code
# as used in the contest (NOT the DXCC country code)
# - non-EU stations shall use simply DX
#
def init(cfg):
global MY_COUNTRY
if cfg in EU_COUNTRIES:
MY_COUNTRY = cfg
else:
MY_COUNTRY = 'DX' # normalize to DX

dxcc = tlf.get_dxcc(tlf.MY_CALL)
global MY_PREFIX
MY_PREFIX = dxcc.main_prefix
global MY_CONTINENT
MY_CONTINENT = dxcc.continent


# a. European Union stations:
# - your own country 2 points,
# - another European Union country 10 points,
# - with a non-European Union country in your continent 3 points,
# - another continent 5 points.
# b. Non- European Union stations:
# - European Union 10 points,
# - your own country 2 points,
# - a different country in your continent 3 points,
# - another continent 5 points.
def score(qso):
xchg = qso.exchange.strip()

m = EU_REGION_PATTERN.match(xchg)
if m:
eu_country = m.group(1)
else:
eu_country = None

if MY_COUNTRY != 'DX':
if eu_country == MY_COUNTRY:
return 2
if eu_country:
return 10
dxcc = tlf.get_dxcc(qso.call)
if dxcc.continent == MY_CONTINENT:
return 3
else:
return 5
else:
if eu_country:
return 10
dxcc = tlf.get_dxcc(qso.call)
if dxcc.main_prefix == MY_PREFIX:
return 2
if dxcc.continent == MY_CONTINENT:
return 3
else:
return 5



def check_exchange(qso):
xchg = qso.exchange.strip()
dxcc = tlf.get_dxcc(qso.call)
mult = dxcc.main_prefix

if EU_REGION_PATTERN.match(xchg):
mult += ' ' + xchg

return {'mult1_value': mult}
11 changes: 11 additions & 0 deletions test/rules/eudx/eudx.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
40CW 31-Jan-24 19:53 0001 OE1AAA 599 599 AT03 OE AT03 10
40CW 31-Jan-24 19:53 0002 OE3BBB 599 599 AT04 AT04 10
40CW 31-Jan-24 19:54 0003 OE5CCC 599 599 AT03 10
40CW 31-Jan-24 19:54 0004 LZ1DDD 599 599 BG01 LZ BG01 10
20CW 31-Jan-24 19:54 0005 LZ2EEE 599 599 BG01 LZ BG01 10
40SSB 31-Jan-24 19:56 0006 LZ1DDD 599 599 BG01 10
40CW 31-Jan-24 19:57 0007 IS9FFF 599 599 IT15 IS IT15 2
40CW 31-Jan-24 19:58 0008 IG9X 599 599 IT17 IG9 IT17 2
40CW 31-Jan-24 19:59 0009 I9QQQ 599 599 IT04 I IT04 2
40CW 31-Jan-24 20:00 0010 K1WWW 599 599 07 K 5
40CW 31-Jan-24 20:01 0011 ER9RRR 599 599 29 ER 3
2 changes: 2 additions & 0 deletions test/rules/eudx/logcfg.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
RULES=eudx
CALL=IK1AAA
1 change: 1 addition & 0 deletions test/rules/eudx/rules/eudx
1 change: 1 addition & 0 deletions test/rules/eudx/rules/eudx.py

0 comments on commit e02d5f4

Please sign in to comment.