from msg_container import MsgContainer from receiver.nmea_receiver import NmeaReceiver class Gsv(NmeaReceiver): 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.signal_id = None self.checksum = None def __repr__(self): return f"{self.__dict__}" def __init__(self, name: str, tid: str): NmeaReceiver.__init__(self, name, tid=tid, msg_type="GSV") self.msg = None self.data = Gsv.Msg() def on_recv(self, msg: MsgContainer): data_list = msg.data.split(b',') 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.signal_id = data_list[data_set_size*(num_sats_in_msg-1)+8].split(b'*')[0] data.checksum = data_list[data_set_size*(num_sats_in_msg-1)+8].split(b'*')[1] if self.data.number_of_msg == self.data.seq_number: self.data = Gsv.Msg() print(f"{self.name}:{self.msg} {data}")