Skip to content

Commit

Permalink
RIG.PTT implemented
Browse files Browse the repository at this point in the history
  • Loading branch information
PiotrTopa committed Jul 4, 2022
1 parent 02df79c commit 901f4a8
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 7 deletions.
3 changes: 2 additions & 1 deletion dispatcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ func dispatchStateChangeEvents(events <-chan model.Js8callEvent) (<-chan model.W
defer close(websocketEvents)
defer close(dbObjects)

//var f func(*model.Js8callEvent, chan<- model.WebsocketEvent, chan<- model.DbObj) error
f := defaultNotifier
for event := range events {
switch event.Type {
Expand All @@ -49,6 +48,8 @@ func dispatchStateChangeEvents(events <-chan model.Js8callEvent) (<-chan model.W
f = rigStatusNotifier
case model.EVENT_TYPE_STATION_CALLSIGN, model.EVENT_TYPE_STATION_GRID, model.EVENT_TYPE_STATION_INFO, model.EVENT_TYPE_STATION_STATUS:
f = stationInfoNotifier
case model.EVENT_TYPE_RIG_PTT:
f = rigPttNotifier
default:
f = defaultNotifier
}
Expand Down
3 changes: 2 additions & 1 deletion model/js8callEvent.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ var (
EVENT_TYPE_STATION_GRID = "STATION.GRID"

// event types as seen in Websocket communication
WS_EVENT_TYPE_RIG_PTT = "RIG.PTT"
WS_EVENT_TYPE_RIG_STATUS = "RIG.STATUS"
WS_EVENT_TYPE_STATION_INFO = "STATION.INFO"
)
Expand Down Expand Up @@ -44,7 +45,7 @@ type Js8callEventParams struct {
Command string `json:"CMD"`
Extra string `json:"EXTRA"`
PTT bool `json:"PTT"`
Tones []uint8 `json:"TONES"`
Tones []int `json:"TONES"`
UTC int64 `json:"UTC"`
Selected string `json:"SELECTED"`
Band string `json:"BAND"`
Expand Down
22 changes: 22 additions & 0 deletions model/rigPtt.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package model

import (
"errors"
)

type RigPttWsEvent struct {
Enabled bool
}

func (o *RigPttWsEvent) Type() string {
return WS_EVENT_TYPE_RIG_PTT
}

func CreateRigPttWsEvent(event *Js8callEvent) (*RigPttWsEvent, error) {
if event.Type != EVENT_TYPE_RIG_PTT {
return nil, errors.New("wrong event type, cannot parse params")
}
o := new(RigPttWsEvent)
o.Enabled = event.Params.PTT
return o, nil
}
2 changes: 1 addition & 1 deletion model/rigStatus.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ type RigStatusWsEvent struct {
}

func (o *RigStatusWsEvent) Type() string {
return EVENT_TYPE_RIG_STATUS
return WS_EVENT_TYPE_RIG_STATUS
}

func CreateRigStatusWsEvent(event *Js8callEvent) (*RigStatusWsEvent, error) {
Expand Down
8 changes: 5 additions & 3 deletions model/txPacket.go → model/txFrame.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
)

var (
SQL_TX_FRAME_INSERT = "INSERT INTO `TX_FRAME` (`TIMESTAMP`, `CHANNEL`, `DIAL`, `FREQ`, `OFFSET`, `MODE`, `SPEED`, `SELECTED`, `TONES`) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
SQL_TX_FRAME_INSERT = "INSERT INTO `TX_FRAME` (`TIMESTAMP`, `CHANNEL`, `DIAL`, `FREQ`, `OFFSET`, `MODE`, `SPEED`, `SELECTED`, `TONES`) values(?, ?, ?, ?, ?, ?, ?, ?, ?)"
)

type TxFrameObj struct {
Expand All @@ -22,7 +22,7 @@ type TxFrameObj struct {
Mode string
Speed string
Selected string
Tones string
Tones []int
}

func CreateTxFrameObj(event *Js8callEvent) (*TxFrameObj, error) {
Expand All @@ -32,6 +32,7 @@ func CreateTxFrameObj(event *Js8callEvent) (*TxFrameObj, error) {

o := new(TxFrameObj)
o.Timestamp = time.Now().UTC()
o.Tones = event.Params.Tones
return o, nil
}

Expand All @@ -55,6 +56,7 @@ func (obj *TxFrameObj) Insert(db *sql.DB) error {
if err != nil {
return fmt.Errorf("unable to marshall tones %w", err)
}
fmt.Print("Marshalled: ", string(marshalledTones))

res, err := stmt.Exec(
toSqlTime(obj.Timestamp),
Expand All @@ -65,7 +67,7 @@ func (obj *TxFrameObj) Insert(db *sql.DB) error {
&obj.Mode,
&obj.Speed,
&obj.Selected,
&marshalledTones,
string(marshalledTones),
)
if err != nil {
return fmt.Errorf("error executing SQL query inserting new TxFrame record, becouse of %w", err)
Expand Down
15 changes: 14 additions & 1 deletion rigStatus.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package main

import "github.com/PiotrTopa/js8web/model"
import (
"errors"

"github.com/PiotrTopa/js8web/model"
)

var rigStatusCache model.RigStatusWsEvent = model.RigStatusWsEvent{}

Expand All @@ -21,3 +25,12 @@ func rigStatusNotifier(event *model.Js8callEvent, websocketEvents chan<- model.W
}
return nil
}

func rigPttNotifier(event *model.Js8callEvent, websocketEvents chan<- model.WebsocketEvent, databaseObjects chan<- model.DbObj) error {
wsEvent, err := model.CreateRigPttWsEvent(event)
if err != nil {
return errors.New("can not convert TxFrame event to db object")
}
websocketEvents <- wsEvent
return nil
}

0 comments on commit 901f4a8

Please sign in to comment.