import struct from ubx.msg_types import * UBX_SYNC_WORD = struct.pack('BB', UBX_SYNC1, UBX_SYNC2) def checksum(data: bytes) -> bytes: ck_a = 0 ck_b = 0 for i in range(len(data)): ck_a = (ck_a + data[i]) & 0xFF ck_b = (ck_b + ck_a) & 0xFF return struct.pack("BB", ck_a, ck_b) def frame_create(_class: int, _id: int, _data: bytes = b'') -> bytes: _hdr = struct.pack('B', _class) _hdr += struct.pack('B', _id) _hdr += struct.pack(' Hdr|None: hdr = Hdr(0,0,0) if len(frame) < 4: return None hdr.mclass = struct.unpack('B', frame[0:1])[0] hdr.mid = struct.unpack('B', frame[1:2])[0] hdr.length = struct.unpack('