from msg_container import MsgContainer from nmea.receiver import Nmea class Gsv(Nmea): class Msg: def __init__(self): self.number_of_msg = None self.seq_number = None self.sat_vis = None self.sat_id = [] self.elevation = [] self.azimuth = [] self.snr = [] self.checksum = None def __repr__(self): return f"sat_vis: {self.sat_vis}, sat_id: {self.sat_id}, elevation: {self.elevation}, azimuth: {self.azimuth}, snr: {self.snr}" def __init__(self, name: str, tid: str): Nmea.__init__(self, name, tid=tid, msg_type="GSV") self.msg = None self.data = Gsv.Msg() def on_recv(self, msg: MsgContainer): msg_data = msg.data.decode(encoding="utf-8") data_list = msg_data.split(',') self.msg = data_list[0] data = self.data data.number_of_msg = data_list[1] data.seq_number = data_list[2] data.sat_vis = data_list[3] data_set_size = 4 num_sats_in_msg = int(len(data_list[3:-2])/4) for n in range(num_sats_in_msg): data.sat_id.append(data_list[data_set_size*n+4]) data.elevation.append(data_list[data_set_size*n+5]) data.azimuth.append(data_list[data_set_size*n+6]) data.snr.append(data_list[data_set_size*n+7]) data.checksum = data_list[data_set_size*(num_sats_in_msg-1)+8] if self.data.number_of_msg == self.data.seq_number: print(data) self.data = Gsv.Msg()