mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-08-21 15:09:00 +00:00
gps: export some errors for checking/supression from client
Signed-off-by: deadprogram <ron@hybridgroup.com>
This commit is contained in:
+7
-8
@@ -11,16 +11,15 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
errInvalidNMEASentenceLength = errors.New("invalid NMEA sentence length")
|
||||
errInvalidNMEAChecksum = errors.New("invalid NMEA sentence checksum")
|
||||
errEmptyNMEASentence = errors.New("cannot parse empty NMEA sentence")
|
||||
errUnknownNMEASentence = errors.New("unsupported NMEA sentence type")
|
||||
ErrInvalidNMEASentenceLength = errors.New("invalid NMEA sentence length")
|
||||
ErrInvalidNMEASentence = errors.New("invalid NMEA sentence format")
|
||||
ErrEmptyNMEASentence = errors.New("cannot parse empty NMEA sentence")
|
||||
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")
|
||||
errGPSCommandRejected = errors.New("GPS command rejected (NAK)")
|
||||
errNoACKToGPSCommand = errors.New("no ACK to GPS command")
|
||||
errInvalidNMEASentanceFormat = errors.New("invalid NMEA sentence format")
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -151,15 +150,15 @@ func (gps *Device) WriteBytes(bytes []byte) {
|
||||
// It has to end with a '*' character following by a checksum.
|
||||
func validSentence(sentence string) error {
|
||||
if len(sentence) < minimumNMEALength || sentence[0] != startingDelimiter || sentence[len(sentence)-3] != checksumDelimiter {
|
||||
return errInvalidNMEASentenceLength
|
||||
return ErrInvalidNMEASentenceLength
|
||||
}
|
||||
var cs byte = 0
|
||||
for i := 1; i < len(sentence)-3; i++ {
|
||||
cs ^= sentence[i]
|
||||
}
|
||||
checksum := strings.ToUpper(hex.EncodeToString([]byte{cs}))
|
||||
if checksum != sentence[len(sentence)-2:len(sentence)] {
|
||||
return errInvalidNMEASentanceFormat
|
||||
if checksum != sentence[len(sentence)-2:] {
|
||||
return ErrInvalidNMEASentence
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user