@@ -12,6 +12,8 @@ import (
1212 "github.com/ftl/hamradio/locator"
1313)
1414
15+ const TimestampLayout = "2006-01-02 1504"
16+
1517func NewLog () * Log {
1618 return & Log {
1719 Custom : make (map [Tag ]string ),
@@ -54,38 +56,38 @@ func (t Tag) IsCustom() bool {
5456}
5557
5658const (
57- StartOfLogTag Tag = "START-OF-LOG"
58- EndOfLogTag Tag = "END-OF-LOG"
59- CallsignTag Tag = "CALLSIGN"
60- ContestTag Tag = "CONTEST"
61- CategoryAssistedTag Tag = "CATEGORY-ASSISTED"
62- CategoryBandTag Tag = "CATEGORY-BAND"
63- CategoryModeTag Tag = "CATEGORY-MODE"
64- CategoryOperatorTag Tag = "CATEGORY-OPERATOR"
65- CategoryPowerTag Tag = "CATEGORY-POWER"
66- CategoryStationTag Tag = "CATEGORY-STATION"
67- CategoryTimeTag Tag = "CATEGORY-TIME"
68- CategoryTransmitterTag Tag = "CATEGORY-TRANSMITTER"
69- CategoryOverlayTag Tag = "CATEGORY-OVERLAY"
70- CertificateTag Tag = "CERTIFICATE"
71- ClaimedScoreTag Tag = "CLAIMED-SCORE"
72- ClubTag Tag = "CLUB"
73- CratedByTag Tag = "CREATED-BY"
74- EmailTag Tag = "EMAIL"
75- GridLocatorTag Tag = "GRID-LOCATOR"
76- LocationTag Tag = "LOCATION"
77- NameTag Tag = "NAME"
78- AddressTag Tag = "ADDRESS"
79- AddressCityTag Tag = "ADDRESS-CITY"
80- AddressStateProviceTag Tag = "ADDRESS-STATE-PROVINCE"
81- AddressPostalcodeTag Tag = "ADDRESS-POSTALCODE"
82- AddressCountryTag Tag = "ADDRESS-COUNTRY"
83- OperatorsTag Tag = "OPERATORS"
84- OfftimeTag Tag = "OFFTIME"
85- SoapboxTag Tag = "SOAPBOX"
86- QSOTag Tag = "QSO"
87- XQSOTag Tag = "X-QSO"
88- XPrefix = "X-"
59+ StartOfLogTag Tag = "START-OF-LOG"
60+ EndOfLogTag Tag = "END-OF-LOG"
61+ CallsignTag Tag = "CALLSIGN"
62+ ContestTag Tag = "CONTEST"
63+ CategoryAssistedTag Tag = "CATEGORY-ASSISTED"
64+ CategoryBandTag Tag = "CATEGORY-BAND"
65+ CategoryModeTag Tag = "CATEGORY-MODE"
66+ CategoryOperatorTag Tag = "CATEGORY-OPERATOR"
67+ CategoryPowerTag Tag = "CATEGORY-POWER"
68+ CategoryStationTag Tag = "CATEGORY-STATION"
69+ CategoryTimeTag Tag = "CATEGORY-TIME"
70+ CategoryTransmitterTag Tag = "CATEGORY-TRANSMITTER"
71+ CategoryOverlayTag Tag = "CATEGORY-OVERLAY"
72+ CertificateTag Tag = "CERTIFICATE"
73+ ClaimedScoreTag Tag = "CLAIMED-SCORE"
74+ ClubTag Tag = "CLUB"
75+ CreatedByTag Tag = "CREATED-BY"
76+ EmailTag Tag = "EMAIL"
77+ GridLocatorTag Tag = "GRID-LOCATOR"
78+ LocationTag Tag = "LOCATION"
79+ NameTag Tag = "NAME"
80+ AddressTag Tag = "ADDRESS"
81+ AddressCityTag Tag = "ADDRESS-CITY"
82+ AddressStateProvinceTag Tag = "ADDRESS-STATE-PROVINCE"
83+ AddressPostalcodeTag Tag = "ADDRESS-POSTALCODE"
84+ AddressCountryTag Tag = "ADDRESS-COUNTRY"
85+ OperatorsTag Tag = "OPERATORS"
86+ OfftimeTag Tag = "OFFTIME"
87+ SoapboxTag Tag = "SOAPBOX"
88+ QSOTag Tag = "QSO"
89+ XQSOTag Tag = "X-QSO"
90+ XPrefix = "X-"
8991)
9092
9193type ContestIdentifier string
@@ -276,32 +278,69 @@ func (f QSOFrequency) ToBand() CategoryBand {
276278 if f .IsFrequency () {
277279 kHz := f .ToKilohertz ()
278280 switch {
279- case kHz < 3500 :
281+ case kHz < 3_500 :
280282 return Band160m
281- case kHz < 7000 :
283+ case kHz < 7_000 :
282284 return Band80m
283- case kHz < 14000 :
285+ case kHz < 14_000 :
284286 return Band40m
285- case kHz < 21000 :
287+ case kHz < 21_000 :
286288 return Band20m
287- case kHz < 28000 :
289+ case kHz < 28_000 :
288290 return Band15m
289- default :
291+ case kHz < 50_000_000 :
290292 return Band10m
293+ case kHz < 70_000_000 :
294+ return Band6m
295+ case kHz < 144_000_000 :
296+ return Band4m
297+ case kHz < 222_000_000 :
298+ return Band2m
299+ case kHz < 430_000_000 :
300+ return Band222
301+ case kHz < 900_000_000 :
302+ return Band432
303+ case kHz < 1_200_000_000 :
304+ return Band902
305+ case kHz < 2_300_000_000 :
306+ return Band1_2G
307+ default :
308+ return Band2_3G
291309 }
292310 }
293311 switch f {
294- case "50" :
312+ case Frequency50MHz :
295313 return Band6m
296- case "70" :
314+ case Frequency70MHz :
297315 return Band4m
298- case "144" :
316+ case Frequency144MHz :
299317 return Band2m
300318 default :
301319 return CategoryBand (strings .ToUpper (string (f )))
302320 }
303321}
304322
323+ const (
324+ Frequency50MHz QSOFrequency = "50"
325+ Frequency70MHz QSOFrequency = "70"
326+ Frequency144MHz QSOFrequency = "144"
327+ Frequency222MHz QSOFrequency = "222"
328+ Frequency432MHz QSOFrequency = "432"
329+ Frequency902MHz QSOFrequency = "902"
330+ Frequency1_2GHz QSOFrequency = "1.2G"
331+ Frequency2_3GHz QSOFrequency = "2.3G"
332+ Frequency3_4GHz QSOFrequency = "3.4G"
333+ Frequency5_7GHz QSOFrequency = "5.7G"
334+ Frequency10GHz QSOFrequency = "10G"
335+ Frequency24GHz QSOFrequency = "24G"
336+ Frequency47GHz QSOFrequency = "47G"
337+ Frequency75GHz QSOFrequency = "75G"
338+ Frequency122GHz QSOFrequency = "122G"
339+ Frequency134GHz QSOFrequency = "134G"
340+ Frequency241GHz QSOFrequency = "241G"
341+ FrequencyLight QSOFrequency = "LIGHT"
342+ )
343+
305344type QSOMode string
306345
307346const (
@@ -314,6 +353,5 @@ const (
314353
315354type QSOInfo struct {
316355 Call callsign.Callsign
317- RST string
318356 Exchange []string
319357}
0 commit comments