diff --git a/modules/gps/gps.go b/modules/gps/gps.go index 2734a3b4..65c92596 100644 --- a/modules/gps/gps.go +++ b/modules/gps/gps.go @@ -106,21 +106,12 @@ func (mod *GPS) readLine() (line string, err error) { } func (mod *GPS) Show() error { - if mod.Session.GPS.GNGGA.Time.Valid { - fmt.Printf("latitude:%f longitude:%f quality:%s satellites:%d altitude:%f\n", - mod.Session.GPS.GNGGA.Latitude, - mod.Session.GPS.GNGGA.Longitude, - mod.Session.GPS.GNGGA.FixQuality, - mod.Session.GPS.GNGGA.NumSatellites, - mod.Session.GPS.GNGGA.Altitude) - } else { - fmt.Printf("latitude:%f longitude:%f quality:%s satellites:%d altitude:%f\n", - mod.Session.GPS.GPGGA.Latitude, - mod.Session.GPS.GPGGA.Longitude, - mod.Session.GPS.GPGGA.FixQuality, - mod.Session.GPS.GPGGA.NumSatellites, - mod.Session.GPS.GPGGA.Altitude) - } + fmt.Printf("latitude:%f longitude:%f quality:%s satellites:%d altitude:%f\n", + mod.Session.GPS.Latitude, + mod.Session.GPS.Longitude, + mod.Session.GPS.FixQuality, + mod.Session.GPS.NumSatellites, + mod.Session.GPS.Altitude) mod.Session.Refresh() @@ -133,7 +124,6 @@ func (mod *GPS) Start() error { } return mod.SetRunning(true, func() { - defer mod.serial.Close() for mod.Running() { @@ -141,9 +131,21 @@ func (mod *GPS) Start() error { if s, err := nmea.Parse(line); err == nil { // http://aprs.gids.nl/nmea/#gga if m, ok := s.(nmea.GNGGA); ok { - mod.Session.GPS.GNGGA = m + mod.Session.GPS.Latitude = m.Latitude + mod.Session.GPS.Longitude = m.Longitude + mod.Session.GPS.FixQuality = m.FixQuality + mod.Session.GPS.NumSatellites = m.NumSatellites + mod.Session.GPS.HDOP = m.HDOP + mod.Session.GPS.Altitude = m.Altitude + mod.Session.GPS.Separation = m.Separation } else if m, ok := s.(nmea.GPGGA); ok { - mod.Session.GPS.GPGGA = m + mod.Session.GPS.Latitude = m.Latitude + mod.Session.GPS.Longitude = m.Longitude + mod.Session.GPS.FixQuality = m.FixQuality + mod.Session.GPS.NumSatellites = m.NumSatellites + mod.Session.GPS.HDOP = m.HDOP + mod.Session.GPS.Altitude = m.Altitude + mod.Session.GPS.Separation = m.Separation } } else { mod.Debug("error parsing line '%s': %s", line, err) diff --git a/session/session.go b/session/session.go index b2befd2f..237690a1 100644 --- a/session/session.go +++ b/session/session.go @@ -21,8 +21,6 @@ import ( "github.com/bettercap/bettercap/network" "github.com/bettercap/bettercap/packets" - "github.com/adrianmo/go-nmea" - "github.com/evilsocket/islazy/fs" "github.com/evilsocket/islazy/log" "github.com/evilsocket/islazy/ops" @@ -74,8 +72,13 @@ func (mm ModuleList) MarshalJSON() ([]byte, error) { } type GPS struct { - GNGGA nmea.GNGGA - GPGGA nmea.GPGGA + Latitude float64 // Latitude. + Longitude float64 // Longitude. + FixQuality string // Quality of fix. + NumSatellites int64 // Number of satellites in use. + HDOP float64 // Horizontal dilution of precision. + Altitude float64 // Altitude. + Separation float64 // Geoidal separation } type Session struct {