core

package
v0.18.2 Latest Latest
Warning

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

Go to latest
Published: Feb 9, 2024 License: MIT Imports: 10 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"

Variables

Bands are all supported HF bands.

Modes are all relevant modes.

Functions

func BandmapByDescendingValue added in v0.18.0

func BandmapByDescendingValue(a, b BandmapEntry) bool

func BandmapByFrequency added in v0.13.0

func BandmapByFrequency(a, b BandmapEntry) bool

func IsExchangeField added in v0.10.0

func IsExchangeField(name string) 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

	Comparable interface{}
	Compare    func(interface{}, interface{}) 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

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 {
	Index     int
	Label     string
	Call      callsign.Callsign
	Frequency Frequency
	Band      Band
	Mode      Mode
	LastHeard time.Time
	Source    SpotType
	SpotCount int

	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 BandmapFrame added in v0.13.0

type BandmapFrame struct {
	Frequency          Frequency
	ActiveBand         Band
	VisibleBand        Band
	Mode               Mode
	Bands              []BandSummary
	Entries            []BandmapEntry
	NearestEntry       BandmapEntry
	RevealNearestEntry bool
}

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 Descending added in v0.13.0

func Descending(o BandmapOrder) BandmapOrder

type BandmapWeights added in v0.18.0

type BandmapWeights struct {
	TotalPoints float64
	TotalMultis float64
	AgeSeconds  float64
	Spots       float64
	Source      float64
}

type Callinfo added in v0.13.0

type Callinfo struct {
	Call callsign.Callsign

	DXCCName          string
	PrimaryPrefix     string
	Continent         string
	ITUZone           int
	CQZone            int
	UserText          string
	PredictedExchange []string
	ExchangeText      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
	WeightedValue float64
}

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 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"`
}

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"`
}

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
}

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) 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
)

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
}

type SpotFilter added in v0.13.0

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

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"
)

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 {
	Notify(any)
	Refresh()
	SetFrequency(Frequency)
	SetBand(Band)
	SetMode(Mode)
}

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 Workmode

type Workmode int

Workmode is either search&pounce or run.

const (
	SearchPounce Workmode = iota
	Run
)

All work modes.

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