kopia lustrzana https://github.com/cyoung/stratux
Initial gpsd support.
rodzic
1159a37baf
commit
498f904b55
2
Makefile
2
Makefile
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
}
|
Ładowanie…
Reference in New Issue