def _handle(self, nmeadata): for sentence, sen_time in nmeadata: try: if type(sentence) in [ types.GGA, types.GLL, types.GSV, types.MWD ]: data = sensordataobject() data.Time_Created = sen_time if type(sentence) == types.GGA: data.GPS_LatLon = str((sentence.lat, sentence.lat_dir, sentence.lon, sentence.lon_dir)) data.GPS_SatCount = int(sentence.num_sats) data.GPS_Quality = int(sentence.gps_qual) elif type(sentence) == types.GLL: data.GPS_LatLon = str((sentence.lat, sentence.lat_dir, sentence.lon, sentence.lon_dir)) elif type(sentence) == types.GSV: data.GPS_SatCount = int(sentence.num_sv_in_view) elif type(sentence) == types.MWD: data.Wind_Direction_True = int(sentence.direction_true) data.Wind_Speed_True = int(sentence.wind_speed_meters) self.fireEvent(sensordata(data), "navdata") else: hfoslog("[NMEA] Unhandled sentence acquired: ", sentence) except Exception as e: hfoslog("[NMEA] Error during sending: ", nmeadata, e, type(e), lvl=error)
def _handle(self, nmeadata): for sentence, sen_time in nmeadata: try: if type(sentence) in [types.GGA, types.GLL, types.GSV, types.MWD]: data = sensordataobject() data.Time_Created = sen_time if type(sentence) == types.GGA: data.GPS_LatLon = str((sentence.lat, sentence.lat_dir, sentence.lon, sentence.lon_dir)) data.GPS_SatCount = int(sentence.num_sats) data.GPS_Quality = int(sentence.gps_qual) elif type(sentence) == types.GLL: data.GPS_LatLon = str((sentence.lat, sentence.lat_dir, sentence.lon, sentence.lon_dir)) elif type(sentence) == types.GSV: data.GPS_SatCount = int(sentence.num_sv_in_view) elif type(sentence) == types.MWD: data.Wind_Direction_True = int(sentence.direction_true) data.Wind_Speed_True = int(sentence.wind_speed_meters) self.fireEvent(sensordata(data), "navdata") else: hfoslog("[NMEA] Unhandled sentence acquired: ", sentence) except Exception as e: hfoslog("[NMEA] Error during sending: ", nmeadata, e, type(e), lvl=error)
def __init__(self, *args): """ Initialize the navigation data component. :param args: """ super(NavData, self).__init__(*args) self.referenceframe = sensordataobject() self.referenceages = {} self.changed = False self.interval = 1 self.passiveinterval = 10 self.intervalcount = 0 Timer(self.interval, Event.create('navdatapush'), self.channel, persist=True).register(self)