gps: add support for GLL sentence type, add original sentence to gps errors

Signed-off-by: deadprogram <ron@hybridgroup.com>
This commit is contained in:
deadprogram
2023-01-14 12:32:45 +01:00
committed by Ron Evans
parent 5b461ec2d1
commit 0b62d4fb4a
2 changed files with 29 additions and 9 deletions
+12 -8
View File
@@ -17,22 +17,25 @@ var (
errUnknownNMEASentence = errors.New("unsupported NMEA sentence type")
errInvalidGGASentence = errors.New("invalid GGA NMEA sentence")
errInvalidRMCSentence = errors.New("invalid RMC NMEA sentence")
errInvalidGLLSentence = errors.New("invalid GLL NMEA sentence")
)
type GPSError struct {
Info string
Err error
Err error
Info string
Sentence string
}
func newGPSError(err error, info string) GPSError {
func newGPSError(err error, sentence string, info string) GPSError {
return GPSError{
Info: info,
Err: err,
Info: info,
Err: err,
Sentence: sentence,
}
}
func (ge GPSError) Error() string {
return ge.Err.Error() + " " + ge.Info
return ge.Err.Error() + " " + ge.Info + " " + ge.Sentence
}
// Device wraps a connection to a GPS device.
@@ -156,8 +159,9 @@ func validSentence(sentence string) error {
}
checksum := strings.ToUpper(hex.EncodeToString([]byte{cs}))
if checksum != sentence[len(sentence)-2:len(sentence)] {
return newGPSError(errInvalidNMEAChecksum, "expected "+sentence[len(sentence)-2:len(sentence)]+
" got "+checksum)
return newGPSError(errInvalidNMEAChecksum, sentence,
"expected "+sentence[len(sentence)-2:len(sentence)]+
" got "+checksum)
}
return nil