57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
package qso
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
type QSO struct {
|
|
Call string
|
|
Band string
|
|
Mode string
|
|
Freq string
|
|
QSODate string
|
|
TimeOn string
|
|
RSTR string
|
|
RSTS string
|
|
Country string
|
|
GridSquare string
|
|
StationCallsign string
|
|
}
|
|
|
|
func NewQSO() QSO {
|
|
return *&QSO{}
|
|
}
|
|
|
|
func (q *QSO) ExtractQSOData(msg []string) {
|
|
for _, entry := range msg {
|
|
entry = strings.Trim(entry, " ")
|
|
|
|
switch {
|
|
case strings.Contains(entry, "FREQ:"):
|
|
q.Freq = "<" + entry
|
|
case strings.Contains(entry, "CALL:"):
|
|
q.Call = "<" + entry
|
|
case strings.Contains(entry, "BAND:"):
|
|
q.Band = "<" + entry
|
|
case strings.Contains(entry, "MODE:"):
|
|
q.Mode = "<" + entry
|
|
case strings.Contains(entry, "QSO_DATE:"):
|
|
if q.QSODate == "" {
|
|
q.QSODate = "<" + entry
|
|
}
|
|
case strings.Contains(entry, "TIME_ON:"):
|
|
q.TimeOn = "<" + entry
|
|
case strings.Contains(entry, "RST_RCVD:"):
|
|
q.RSTR = "<" + entry
|
|
case strings.Contains(entry, "RST_SENT:"):
|
|
q.RSTS = "<" + entry
|
|
case strings.Contains(entry, "COUNTRY:"):
|
|
q.Country = "<" + entry
|
|
case strings.Contains(entry, "GRIDSQUARE:"):
|
|
q.GridSquare = "<" + entry
|
|
case strings.Contains(entry, "STATION_CALLSIGN:"):
|
|
q.StationCallsign = "<" + entry
|
|
}
|
|
}
|
|
}
|