Skip to content

LdDl/go-gpsd

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

go-gpsd

GPSD client for Go.

Installation

# go get github.com/LdDl/go-gpsd

go-gpsd has no external dependencies.

Usage

go-gpsd is a streaming client for GPSD's JSON service and as such can be used only in async manner unlike clients for other languages which support both async and sync modes.

import ("github.com/LdDl/go-gpsd")

func main() {
	gps := gpsd.Dial("localhost:2947")
}

After Dialing the server, you should install stream filters. Stream filters allow you to capture only certain types of GPSD reports.

gps.AddFilter("TPV", tpvFilter)

Filter functions have a type of gps.Filter and should receive one argument of type interface{}.

tpvFilter := func(r interface{}) {
	report := r.(*gpsd.TPVReport)
	fmt.Println("Location updated", report.Lat, report.Lon)
}

Due to the nature of GPSD reports your filter will manually have to cast the type of the argument it received to a proper *gpsd.Report struct pointer.

After installing all needed filters, call the Watch method to start observing reports. Please note that at this time installed filters can't be removed.

done := gps.Watch()
<-done

Watch() will span a new goroutine in which all data processing will happen, done channel won't send anything.

Currently supported GPSD report types

  • VERSION (gpsd.VERSIONReport)
  • TPV (gpsd.TPVReport)
  • SKY (gpsd.SKYReport)
  • ATT (gpsd.ATTReport)
  • GST (gpsd.GSTReport)
  • PPS (gpsd.PPSReport)
  • Devices (gpsd.DEVICESReport)
  • DEVICE (gpsd.DEVICEReport)
  • ERROR (gpsd.ERRORReport)

Documentation

For complete library docs, visit GoDoc.org or take a look at the gpsd.go file in this repository.

GPSD's documentation on their JSON protocol can be found at http://catb.org/gpsd/gpsd_json.html

License

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%