import struct from ubx.messages.msg import UbxMsg class Ver(UbxMsg): def __init__(self): UbxMsg.__init__(self, 0x0A, 0x04) class Group1: @classmethod def from_bytes(cls, data: bytes): obj = Ver.Group1() obj.extension = data[0:30].split(b"\x00", 1)[0].decode("ascii", errors="replace") return obj.__dict__ @classmethod def from_bytes(cls, data: bytes): obj = Ver() obj.sw_version = data[0:30].split(b"\x00", 1)[0].decode("ascii", errors="replace") obj.hw_version = data[30:40].split(b"\x00", 1)[0].decode("ascii", errors="replace") obj.extensions = [] offset = 40 remain = len(data) - offset group_size = 30 n = offset while remain >= group_size: extension = cls.Group1.from_bytes(data[n:n + group_size]) n += group_size remain -= group_size obj.extensions.append(extension) if remain: print(f"Ver.from_bytes: {remain} trailing bytes unparsed (payload size mismatch)") return obj.__dict__