Initial gpsd support.

pull/486/head
Jason McNew 2016-09-04 06:04:58 +00:00
rodzic 1159a37baf
commit 498f904b55
4 zmienionych plików z 58 dodań i 5 usunięć

Wyświetl plik

@ -14,7 +14,7 @@ all:
xgen_gdl90:
go get -t -d -v ./main ./test ./linux-mpu9150/mpu ./godump978 ./mpu6050 ./uatparse
go build $(BUILDINFO) -p 4 main/gen_gdl90.go main/traffic.go main/ry835ai.go main/network.go main/managementinterface.go main/sdr.go main/ping.go main/uibroadcast.go main/monotonic.go main/datalog.go main/equations.go
go build $(BUILDINFO) -p 4 main/gen_gdl90.go main/traffic.go main/ry835ai.go main/network.go main/managementinterface.go main/sdr.go main/ping.go main/uibroadcast.go main/monotonic.go main/datalog.go main/equations.go main/gpsd.go
xdump1090:
git submodule update --init

Wyświetl plik

@ -6,9 +6,9 @@
# ublox7: VK-172, RY725AI
# ublox6: VK-162
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a8", SYMLINK+="ublox8"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a7", SYMLINK+="ublox7"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a6", SYMLINK+="ublox6"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a8", SYMLINK+="ublox8", SYMLINK+="gps%n", TAG+="systemd", ENV{SYSTEMD_WANTS}="gpsdctl@%k.service"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a7", SYMLINK+="ublox7", SYMLINK+="gps%n", TAG+="systemd", ENV{SYSTEMD_WANTS}="gpsdctl@%k.service"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a6", SYMLINK+="ublox6", SYMLINK+="gps%n", TAG+="systemd", ENV{SYSTEMD_WANTS}="gpsdctl@%k.service"
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a7", SYMLINK+="vk172"
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a6", SYMLINK+="vk162"

Wyświetl plik

@ -1302,7 +1302,8 @@ func main() {
//FIXME: Only do this if data logging is enabled.
initDataLog()
initRY835AI()
// initRY835AI()
initGpsd()
// Start the heartbeat message loop in the background, once per second.
go heartBeatSender()

52
main/gpsd.go 100644
Wyświetl plik

@ -0,0 +1,52 @@
package main
import (
"github.com/stratoberry/go-gpsd"
"log"
"sync"
)
func processTPV(r interface{}) {
tpv := r.(*gpsd.TPVReport)
log.Printf("TPV", tpv.Mode, tpv.Time)
mySituation.mu_GPS.Lock()
defer func() {
if globalSettings.DEBUG {
logSituation()
}
mySituation.mu_GPS.Unlock()
}()
mySituation.Lat = float32(tpv.Lat)
mySituation.Lng = float32(tpv.Lon)
mySituation.Accuracy = float32((tpv.Epx + tpv.Epy) / 2)
mySituation.Alt = float32(tpv.Alt)
mySituation.AccuracyVert = float32(tpv.Epv)
mySituation.GPSVertVel = float32(tpv.Climb)
mySituation.LastFixLocalTime = tpv.Time
mySituation.TrueCourse = float32(tpv.Track)
mySituation.GroundSpeed = uint16(tpv.Speed)
mySituation.LastGroundTrackTime = tpv.Time
}
func initGpsd() {
log.Printf("Initializing GPS\n")
mySituation.mu_GPS = &sync.Mutex{}
mySituation.mu_Attitude = &sync.Mutex{}
satelliteMutex = &sync.Mutex{}
Satellites = make(map[string]SatelliteInfo)
var gps *gpsd.Session
var err error
if gps, err = gpsd.Dial(gpsd.DefaultAddress); err != nil {
log.Printf("Failed to connect to gpsd: %s", err)
}
gps.AddFilter("TPV", processTPV)
gps.Watch()
}