diff --git a/adafruit_gps.py b/adafruit_gps.py index 281f256..115b4b1 100644 --- a/adafruit_gps.py +++ b/adafruit_gps.py @@ -115,6 +115,7 @@ def __init__(self, uart, debug=False): self.total_mess_num = None self.mess_num = None self.debug = debug + self.raw_sentence = None def update(self): """Check for updated data from the GPS module and process it @@ -175,7 +176,12 @@ def datetime(self): """Return struct_time object to feed rtc.set_time_source() function""" return self.timestamp_utc - def _parse_sentence(self): + @property + def raw_sentence(self): + """Return raw_sentence which is the raw NMEA sentence read from the GPS""" + return self.raw_sentence + + def _read_sentence(self): # Parse any NMEA sentence that is available. # pylint: disable=len-as-condition # This needs to be refactored when it can be tested. @@ -200,8 +206,23 @@ def _parse_sentence(self): actual ^= ord(sentence[i]) if actual != expected: return None # Failed to validate checksum. - # Remove checksum once validated. - sentence = sentence[:-3] + + # copy the raw sentence + self.raw_sentence = sentence + + return sentence + # At this point we don't have a valid sentence + return None + + def _parse_sentence(self): + sentence = self._read_sentence() + + # sentence is a valid NMEA with a valid checksum + if sentence is None: + return None + + # Remove checksum once validated. + sentence = sentence[:-3] # Parse out the type of sentence (first string after $ up to comma) # and then grab the rest as data within the sentence. delimiter = sentence.find(',')