core

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 20, 2025 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const FilterPlaceholder = "."

FilterPlaceholder can be used as placeholder for a missed character in the callsign.

View Source
const RadioKeyer = "radio"
View Source
const SpotQualityTags = "?BQV"

Variables

Bands are all supported HF bands.

Modes are all relevant modes.

Functions

func BandmapByFrequency added in v0.13.0

func BandmapByFrequency(a, b BandmapEntry) bool

func BandmapByValue added in v0.20.2

func BandmapByValue(a, b BandmapEntry) bool

func BinCountForDuration added in v1.0.0

func BinCountForDuration(duration time.Duration) int

func IsExchangeField added in v0.10.0

func IsExchangeField(name string) bool

func IsWorkedSpot added in v0.22.0

func IsWorkedSpot(entry BandmapEntry) bool

Types

type AnnotatedCallsign

type AnnotatedCallsign struct {
	Callsign          callsign.Callsign
	Assembly          MatchingAssembly
	Duplicate         bool
	Worked            bool
	ExactMatch        bool
	Points            int
	Multis            int
	PredictedExchange []string
	Name              string
	UserText          string
	OnFrequency       bool

	Comparable any
	Compare    func(any, any) bool
}

AnnotatedCallsign contains a callsign with additional information retrieved from databases and the logbook.

func (AnnotatedCallsign) LessThan added in v0.9.0

type AsyncRunner added in v0.5.0

type AsyncRunner func(func())

type Band

type Band string

Band represents an amateur radio band.

const (
	NoBand   Band = ""
	Band160m Band = "160m"
	Band80m  Band = "80m"
	Band60m  Band = "60m"
	Band40m  Band = "40m"
	Band30m  Band = "30m"
	Band20m  Band = "20m"
	Band17m  Band = "17m"
	Band15m  Band = "15m"
	Band12m  Band = "12m"
	Band10m  Band = "10m"
)

All HF bands.

func (*Band) String

func (band *Band) String() string

type BandGraph added in v0.12.0

type BandGraph struct {
	Band       Band
	DataPoints []BandScore
	Max        BandScore
	// contains filtered or unexported fields
}

func NewBandGraph added in v0.12.0

func NewBandGraph(band Band, startTime time.Time, duration time.Duration) BandGraph

func (*BandGraph) Add added in v0.12.0

func (g *BandGraph) Add(timestamp time.Time, score QSOScore)

func (*BandGraph) Bindex added in v0.12.0

func (g *BandGraph) Bindex(timestamp time.Time) int

Bindex returns the index of the bin corresponding to the given timestamp.

func (BandGraph) Copy added in v0.20.0

func (g BandGraph) Copy() BandGraph

func (BandGraph) ElapsedTime added in v1.0.0

func (g BandGraph) ElapsedTime(timestamp time.Time) time.Duration

func (BandGraph) ElapsedTimePercent added in v1.0.0

func (g BandGraph) ElapsedTimePercent(timestamp time.Time) float64

func (BandGraph) PercentAsDuration added in v1.0.0

func (g BandGraph) PercentAsDuration(percent float64) time.Duration

func (BandGraph) ScaleHourlyGoalToBin added in v0.12.0

func (g BandGraph) ScaleHourlyGoalToBin(goal int) float64

func (BandGraph) String added in v0.12.0

func (g BandGraph) String() string

type BandScore added in v0.2.0

type BandScore struct {
	QSOs       int
	Duplicates int
	Points     int
	Multis     int
}

func (*BandScore) Add added in v0.2.0

func (s *BandScore) Add(other BandScore)

func (*BandScore) AddQSO added in v0.10.0

func (s *BandScore) AddQSO(qso QSOScore)

func (BandScore) Max added in v0.14.0

func (s BandScore) Max(other BandScore) BandScore

func (BandScore) PointsPerQSO added in v0.3.0

func (s BandScore) PointsPerQSO() float64

func (BandScore) QSOsPerMulti added in v0.3.0

func (s BandScore) QSOsPerMulti() float64

func (BandScore) Result added in v0.3.0

func (s BandScore) Result() int

func (BandScore) String added in v0.2.0

func (s BandScore) String() string

type BandSummary added in v0.13.0

type BandSummary struct {
	Band        Band
	Points      int
	MultiValues map[conval.Property]map[string]bool

	MaxPoints bool
	MaxMultis bool
	Active    bool
	Visible   bool
}

func (*BandSummary) AddMultiValues added in v0.17.0

func (s *BandSummary) AddMultiValues(values map[conval.Property]string)

func (*BandSummary) Multis added in v0.13.0

func (s *BandSummary) Multis() int

type BandmapEntry added in v0.13.0

type BandmapEntry struct {
	ID        BandmapEntryID
	Label     string
	Call      callsign.Callsign
	Frequency Frequency
	Band      Band
	Mode      Mode
	LastHeard time.Time
	Source    SpotType
	SpotCount int
	Quality   SpotQuality

	Info Callinfo
}

func (BandmapEntry) OnFrequency added in v0.17.0

func (e BandmapEntry) OnFrequency(frequency Frequency) bool

OnFrequency indicates if this entry is on the given frequency, within the defined threshold.

func (BandmapEntry) ProximityFactor added in v0.13.0

func (e BandmapEntry) ProximityFactor(frequency Frequency) float64

ProximityFactor increases the closer the given frequency is to this entry's frequency. 0.0 = not in proximity, 1.0 = exactly on frequency the sign indiciates if the entry's frequency is above (>0) or below (<0) the reference frequency

type BandmapEntryID added in v0.20.2

type BandmapEntryID uint64
const NoEntryID BandmapEntryID = 0

type BandmapFilter added in v0.20.2

type BandmapFilter func(entry BandmapEntry) bool

func And added in v0.22.0

func And(filters ...BandmapFilter) BandmapFilter

func FromContinent added in v0.20.2

func FromContinent(continent string) BandmapFilter

func FromDXCC added in v0.20.2

func FromDXCC(primaryPrefix string) BandmapFilter

func FromSource added in v0.20.2

func FromSource(source SpotType) BandmapFilter

func HeardAfter added in v0.20.2

func HeardAfter(deadline time.Time) BandmapFilter

func InMode added in v0.20.2

func InMode(mode Mode) BandmapFilter

func Not added in v0.22.0

func Not(filter BandmapFilter) BandmapFilter

func OnBand added in v0.20.2

func OnBand(band Band) BandmapFilter

func OnFrequency added in v0.22.0

func OnFrequency(frequency Frequency) BandmapFilter

func Or added in v0.22.0

func Or(filters ...BandmapFilter) BandmapFilter

func WithQuality added in v0.20.2

func WithQuality(quality SpotQuality) BandmapFilter

type BandmapFrame added in v0.13.0

type BandmapFrame struct {
	Frequency         Frequency
	ActiveBand        Band
	VisibleBand       Band
	Mode              Mode
	Bands             []BandSummary
	Entries           []BandmapEntry
	Index             BandmapFrameIndex
	SelectedEntry     BandmapEntry
	NearestEntry      BandmapEntry
	HighestValueEntry BandmapEntry
}

func (BandmapFrame) EntryByID added in v0.20.2

func (f BandmapFrame) EntryByID(id BandmapEntryID) (BandmapEntry, bool)

func (BandmapFrame) IndexOf added in v0.20.2

func (f BandmapFrame) IndexOf(id BandmapEntryID) (int, bool)

type BandmapFrameIndex added in v0.20.2

type BandmapFrameIndex map[BandmapEntryID]int

func NewFrameIndex added in v0.20.2

func NewFrameIndex(entries []BandmapEntry) BandmapFrameIndex

type BandmapOrder added in v0.13.0

type BandmapOrder func(BandmapEntry, BandmapEntry) bool

func BandmapByDistance added in v0.13.0

func BandmapByDistance(referenceFrequency Frequency) BandmapOrder

func BandmapByDistanceAndDescendingID added in v0.22.0

func BandmapByDistanceAndDescendingID(referenceFrequency Frequency) BandmapOrder

func Descending added in v0.13.0

func Descending(o BandmapOrder) BandmapOrder

type BandmapWeights added in v0.18.0

type BandmapWeights struct {
	AgeSeconds float64
	Spots      float64
	Source     float64
	Quality    float64
}

type Callinfo added in v0.13.0

type Callinfo struct {
	Input     string
	Call      callsign.Callsign
	CallValid bool

	DXCCEntity dxcc.Prefix
	Azimuth    latlon.Degrees
	Distance   latlon.Km

	PredictedExchange []string

	UserText string

	Worked        bool // already worked on another band/mode, but does not count as duplicate
	Duplicate     bool // counts as duplicate
	Points        int
	Multis        int
	MultiValues   map[conval.Property]string
	Value         int
	WeightedValue float64
}

type CallinfoFrame added in v0.22.0

type CallinfoFrame struct {
	NormalizedCallInput string
	DXCCEntity          dxcc.Prefix
	Azimuth             latlon.Degrees
	Distance            latlon.Km

	CallsignOnFrequency AnnotatedCallsign

	PredictedExchange []string

	Points int
	Multis int
	Value  int

	UserInfo string

	Supercheck []AnnotatedCallsign
}

func (CallinfoFrame) BestMatchOnFrequency added in v0.22.0

func (f CallinfoFrame) BestMatchOnFrequency() AnnotatedCallsign

func (CallinfoFrame) GetMatch added in v0.22.0

func (f CallinfoFrame) GetMatch(i int) string

type CallsignEnteredListener added in v0.20.0

type CallsignEnteredListener interface {
	CallsignEntered(callsign string)
}

type CallsignLoggedListener added in v0.20.0

type CallsignLoggedListener interface {
	CallsignLogged(callsign string, frequency Frequency)
}

type Clock

type Clock interface {
	Now() time.Time
}

Clock represents a source of the current time.

type Contest added in v0.6.0

type Contest struct {
	Definition             *conval.Definition
	Name                   string
	ExchangeValues         []string
	GenerateSerialExchange bool
	GenerateReport         bool
	StartTime              time.Time

	MyExchangeFields         []ExchangeField
	MyReportExchangeField    ExchangeField
	MyNumberExchangeField    ExchangeField
	TheirExchangeFields      []ExchangeField
	TheirReportExchangeField ExchangeField
	TheirNumberExchangeField ExchangeField

	OperationModeSprint   bool
	CallHistoryFilename   string
	CallHistoryFieldNames []string

	QSOsGoal   int
	PointsGoal int
	MultisGoal int
}

func (Contest) Bands added in v0.13.0

func (c Contest) Bands() []Band

func (Contest) Finished added in v0.12.0

func (c Contest) Finished(now time.Time) bool

func (Contest) Running added in v0.12.0

func (c Contest) Running(now time.Time) bool

func (Contest) Started added in v0.12.0

func (c Contest) Started(now time.Time) bool

func (*Contest) UpdateExchangeFields added in v0.10.0

func (c *Contest) UpdateExchangeFields()

type ESMState added in v1.0.0

type ESMState int

ESMState represents the current state of the ESM state machine.

const (
	ESMCallsignEmpty ESMState = iota
	ESMCallsignInvalid
	ESMCallsignValid
	ESMExchangeInvalid
	ESMExchangeValid
	ESMUnknown
)

type EntryField

type EntryField string

EntryField represents an entry field in the visual part.

const (
	CallsignField EntryField = "callsign"
	BandField     EntryField = "band"
	ModeField     EntryField = "mode"
	OtherField    EntryField = "other"
)

The entry fields.

func MyExchangeField added in v0.10.0

func MyExchangeField(index int) EntryField

func TheirExchangeField added in v0.10.0

func TheirExchangeField(index int) EntryField

func (EntryField) ExchangeIndex added in v0.10.0

func (f EntryField) ExchangeIndex() int

func (EntryField) IsMyExchange added in v0.10.0

func (f EntryField) IsMyExchange() bool

func (EntryField) IsTheirExchange added in v0.10.0

func (f EntryField) IsTheirExchange() bool

func (EntryField) NextExchangeField added in v0.10.0

func (f EntryField) NextExchangeField() EntryField

type ExchangeField added in v0.10.0

type ExchangeField struct {
	Field            EntryField
	CanContainSerial bool
	CanContainReport bool
	EmptyAllowed     bool
	Properties       conval.ExchangeField

	Short    string
	Name     string
	Hint     string
	ReadOnly bool
}

func DefinitionsToExchangeFields added in v0.10.0

func DefinitionsToExchangeFields(fieldDefinitions []conval.ExchangeField, exchangeEntryField func(int) EntryField) []ExchangeField

type Frequency added in v0.4.0

type Frequency float64

Frequency in Hz.

func (Frequency) String added in v0.4.0

func (f Frequency) String() string

type Hour added in v0.3.1

type Hour time.Time

Hour is used as reference to calculate the number of QSOs per hour.

func HourOf added in v0.3.1

func HourOf(t time.Time) Hour

HourOf returns the given time to the hour.

type Keyer added in v0.6.0

type Keyer struct {
	Name    string    `json:"name"`
	Type    KeyerType `json:"type"`
	Address string    `json:"address"`
}

type KeyerPreset added in v0.12.0

type KeyerPreset struct {
	Name      string   `json:"name"`
	SPMacros  []string `json:"sp_macros"`
	RunMacros []string `json:"run_macros"`
	SPLabels  []string `json:"sp_labels"`
	RunLabels []string `json:"run_labels"`
}

type KeyerSettings added in v0.15.0

type KeyerSettings struct {
	WPM                   int      `json:"wpm"`
	Preset                string   `json:"preset"`
	SPMacros              []string `json:"sp_macros"`
	RunMacros             []string `json:"run_macros"`
	SPLabels              []string `json:"sp_labels"`
	RunLabels             []string `json:"run_labels"`
	ParrotIntervalSeconds int      `json:"parrot_interval_seconds"`
}

type KeyerType added in v0.12.0

type KeyerType string
const (
	KeyerTypeCWDaemon KeyerType = "cwdaemon"
)

type KeyerValues

type KeyerValues struct {
	TheirCall   string
	MyNumber    QSONumber
	MyReport    RST
	MyXchange   string
	MyExchange  string
	MyExchanges []string
}

KeyerValues contains the values that can be used as variables in the keyer templates.

type MatchingAssembly added in v0.9.0

type MatchingAssembly []MatchingPart

func (MatchingAssembly) String added in v0.9.0

func (m MatchingAssembly) String() string

type MatchingOperation added in v0.8.0

type MatchingOperation int
const (
	Matching MatchingOperation = iota
	Insert
	Delete
	Substitute
	FalseFriend
)

type MatchingPart added in v0.9.0

type MatchingPart struct {
	OP    MatchingOperation
	Value string
}

type Mode

type Mode string

Mode represents the mode.

const (
	NoMode      Mode = ""
	ModeCW      Mode = "CW"
	ModeSSB     Mode = "SSB"
	ModeFM      Mode = "FM"
	ModeRTTY    Mode = "RTTY"
	ModeDigital Mode = "DIGI"
)

All relevant modes.

func (*Mode) String

func (mode *Mode) String() string

type QSO

type QSO struct {
	Callsign      callsign.Callsign
	Time          time.Time
	Frequency     Frequency
	Band          Band
	Mode          Mode
	MyReport      RST
	MyNumber      QSONumber
	MyExchange    []string
	TheirReport   RST
	TheirNumber   QSONumber
	TheirExchange []string
	LogTimestamp  time.Time
	DXCC          dxcc.Prefix
	Points        int
	Multis        int
	Duplicate     bool
	Workmode      Workmode
}

QSO contains the details about one radio contact.

func (*QSO) String

func (qso *QSO) String() string

type QSONumber

type QSONumber int

QSONumber is the unique number of a QSO in the log, either on my or on their side.

func (*QSONumber) String

func (nr *QSONumber) String() string

type QSORate added in v0.3.1

type QSORate struct {
	LastHourRate QSOsPerHour
	Last5MinRate QSOsPerHour
	QSOsPerHours QSOsPerHours
	SinceLastQSO time.Duration

	LastHourPoints int
	Last5MinPoints int
	LastHourMultis int
	Last5MinMultis int
}

QSORate contains all statistics regarding the rate of QSOs in a contest.

func (QSORate) SinceLastQSOFormatted added in v0.4.0

func (r QSORate) SinceLastQSOFormatted() string

type QSOScore added in v0.10.0

type QSOScore struct {
	Points    int
	Multis    int
	Duplicate bool
}

type QSOsPerHour added in v0.3.1

type QSOsPerHour int

QSOsPerHour is the rate of QSOs per one hour

type QSOsPerHours added in v0.3.1

type QSOsPerHours map[Hour]QSOsPerHour

QSOsPerHours contains the complete QSO rate statistic mapping each Hour in the contest to the rate of QSOs within this Hour

type RST

type RST string

RST represents a signal report using the "Readability/Signalstrength/Tone" system.

func (RST) String

func (rst RST) String() string

type Radio added in v0.15.0

type Radio struct {
	Name    string            `json:"name"`
	Type    RadioType         `json:"type"`
	Address string            `json:"address"`
	Keyer   string            `json:"keyer"`
	Options map[string]string `json:"options"`
}

type RadioType added in v0.15.0

type RadioType string
const (
	RadioTypeHamlib RadioType = "hamlib"
	RadioTypeTCI    RadioType = "tci"
)

type Score added in v0.2.0

type Score struct {
	ScorePerBand map[Band]BandScore
	GraphPerBand map[Band]BandGraph
}

func NewScore added in v0.12.0

func NewScore() Score

func (Score) Copy added in v0.20.0

func (s Score) Copy() Score

func (Score) Result added in v0.10.0

func (s Score) Result() BandScore

func (Score) StackedGraphPerBand added in v0.13.0

func (s Score) StackedGraphPerBand() []BandGraph

func (Score) String added in v0.2.0

func (s Score) String() string

type Service added in v0.5.0

type Service int
const (
	NoService Service = iota
	RadioService
	KeyerService
	DXCCService
	SCPService
	CallHistoryService
	MapService
)

type ServiceStatusListener added in v0.5.0

type ServiceStatusListener interface {
	StatusChanged(service Service, avialable bool)
}

type ServiceStatusListenerFunc added in v0.5.0

type ServiceStatusListenerFunc func(Service, bool)

func (ServiceStatusListenerFunc) StatusChanged added in v0.5.0

func (f ServiceStatusListenerFunc) StatusChanged(service Service, available bool)

type Settings added in v0.6.0

type Settings interface {
	Station() Station
	Contest() Contest
}

type Spot added in v0.13.0

type Spot struct {
	Call      callsign.Callsign
	Frequency Frequency
	Band      Band
	Mode      Mode
	Time      time.Time
	Source    SpotType
}

func (Spot) IsWorked added in v1.0.0

func (s Spot) IsWorked() bool

type SpotFilter added in v0.13.0

type SpotFilter string
const (
	AllSpots              SpotFilter = ""
	OwnContinentSpotsOnly SpotFilter = "continent"
	OwnCountrySpotsOnly   SpotFilter = "country"
)

type SpotQuality added in v0.20.0

type SpotQuality int
const (
	UnknownSpotQuality SpotQuality = iota
	BustedSpotQuality
	QSYSpotQuality
	ValidSpotQuality
)

func (SpotQuality) Tag added in v0.20.0

func (q SpotQuality) Tag() string

type SpotSource added in v0.13.0

type SpotSource struct {
	Name            string     `json:"name"`
	Type            SpotType   `json:"type"`
	HostAddress     string     `json:"host_address"`
	Username        string     `json:"username"`
	Password        string     `json:"password,omitempty"`
	Filter          SpotFilter `json:"filter,omitempty"`
	IgnoreTimestamp bool       `json:"ignore_timestamp,omitempty"`
}

type SpotType added in v0.13.0

type SpotType string
const (
	WorkedSpot  SpotType = "worked"
	ManualSpot  SpotType = "manual"
	SkimmerSpot SpotType = "skimmer"
	RBNSpot     SpotType = "rbn"
	ClusterSpot SpotType = "cluster"
	UnknownSpot SpotType = ""
)

func (SpotType) Priority added in v0.14.0

func (t SpotType) Priority() int

type Station added in v0.6.0

type Station struct {
	Callsign callsign.Callsign
	Operator callsign.Callsign
	Locator  locator.Locator
}

type VFO added in v0.13.0

type VFO interface {
	XITControl
	Notify(any)
	Refresh()
	SetFrequency(Frequency)
	SetBand(Band)
	SetMode(Mode)
	SetXIT(bool, Frequency)
}

type VFOBandListener added in v0.13.0

type VFOBandListener interface {
	VFOBandChanged(Band)
}

type VFOFrequencyListener added in v0.13.0

type VFOFrequencyListener interface {
	VFOFrequencyChanged(Frequency)
}

type VFOModeListener added in v0.13.0

type VFOModeListener interface {
	VFOModeChanged(Mode)
}

type VFOPTTListener added in v0.22.4

type VFOPTTListener interface {
	VFOPTTChanged(bool)
}

type VFOXITListener added in v0.22.2

type VFOXITListener interface {
	VFOXITChanged(bool, Frequency)
}

type Workmode

type Workmode int

Workmode is either search&pounce or run.

const (
	UnknownWorkmode Workmode = iota
	SearchPounce
	Run
)

All work modes.

func (*Workmode) String added in v0.22.1

func (workmode *Workmode) String() string

type XITControl added in v0.22.2

type XITControl interface {
	XITActive() bool
	SetXITActive(bool)
}

Directories

Path Synopsis
Package callhistory provides access to call history files.
Package callhistory provides access to call history files.
export
csv
The package persist allows to store data between sessions of hellocontest.
The package persist allows to store data between sessions of hellocontest.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL