import struct from ubx.messages.msg import UbxMsg class Sig(UbxMsg): def __init__(self): UbxMsg.__init__(self, 0x01, 0x43) class Group1: @classmethod def from_bytes(cls, data: bytes): obj = Sig.Group1() obj.gnss_id = struct.unpack("B", data[0:1])[0] obj.sv_id = struct.unpack("B", data[1:2])[0] obj.sig_id = struct.unpack("B", data[2:3])[0] obj.freq_id = struct.unpack("B", data[3:4])[0] obj.pr_res = struct.unpack("= group_size: signal = cls.Group1.from_bytes(data[n:n + group_size]) n += group_size remain -= group_size obj.signals.append(signal) if remain: print(f"Sig.from_bytes: {remain} trailing bytes unparsed (payload size mismatch)") return obj.__dict__ class Sat(UbxMsg): def __init__(self): UbxMsg.__init__(self, 0x01, 0x35) class Group1: @classmethod def from_bytes(cls, data: bytes): obj = Sat.Group1() obj.gnss_id = struct.unpack("B", data[0:1])[0] obj.sv_id = struct.unpack("B", data[1:2])[0] obj.cno = struct.unpack("B", data[2:3])[0] obj.elev = struct.unpack("B", data[3:4])[0] obj.azim = struct.unpack("= group_size: satellite = cls.Group1.from_bytes(data[n:n + group_size]) n += group_size remain -= group_size obj.satellites.append(satellite) if remain: print(f"Sat.from_bytes: {remain} trailing bytes unparsed (payload size mismatch)") return obj.__dict__