From 9acddacb1c4afe424767e04766e259a00870baab Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Thu, 19 Mar 2026 08:11:28 +0100 Subject: [PATCH] added UBX:RXM:RAWX --- network_backend.py | 6 ++++++ ubx/messages/__init__.py | 0 ubx/messages/nav.py | 12 ++++++----- ubx/messages/rxm.py | 45 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 ubx/messages/__init__.py create mode 100644 ubx/messages/rxm.py diff --git a/network_backend.py b/network_backend.py index ed3c5bc..7788e5d 100644 --- a/network_backend.py +++ b/network_backend.py @@ -19,6 +19,7 @@ from queue import Queue from ubx.ubx import frame_create from ubx.msg import UbxMsg from ubx.messages.nav import Sig +from ubx.messages.rxm import RawX class NetworkBackend(ABackend): def __init__(self, servers: list[dict]): @@ -148,6 +149,8 @@ if __name__ == "__main__": ] ubx_rx_list = [ UbxReceiver(Sig(), 0x01, 0x43), + UbxReceiver(RawX(), 0x02, 0x15), + UbxReceiver(UbxMsg(), 0x05, 0x01), UbxReceiver(UbxMsg(), 0x05, 0x00), ] @@ -198,6 +201,9 @@ if __name__ == "__main__": # Poll UBX-NAV-SIG (0x01 0x43) frame = frame_create(0x01, 0x43, b'') transceiver[grm].send(frame) + # Poll UBX-RXM-RAWX (0x02 0x15) + frame = frame_create(0x02, 0x15, b'') + transceiver[grm].send(frame) except ValueError: break diff --git a/ubx/messages/__init__.py b/ubx/messages/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ubx/messages/nav.py b/ubx/messages/nav.py index d7c855f..e94df55 100644 --- a/ubx/messages/nav.py +++ b/ubx/messages/nav.py @@ -27,11 +27,13 @@ class Sig(ubx.msg.UbxMsg): obj.num_signals = struct.unpack("B", data[5:6])[0] obj.reserved = struct.unpack("BB", data[6:8])[0] obj.signals = [] - remain = len(data) - 8 - n = 0 + offset = 8 + remain = len(data) - offset + group_size = 16 + n = offset while remain: - signal = cls.Group1.from_bytes(data[n:n + 16]) - n += 16 - remain -= 16 + signal = cls.Group1.from_bytes(data[n:n + group_size]) + n += group_size + remain -= group_size obj.signals.append(signal) return obj.__dict__ diff --git a/ubx/messages/rxm.py b/ubx/messages/rxm.py new file mode 100644 index 0000000..767da03 --- /dev/null +++ b/ubx/messages/rxm.py @@ -0,0 +1,45 @@ +import struct +import ubx.msg + +class RawX(ubx.msg.UbxMsg): + class Group1: + @classmethod + def from_bytes(cls, data: bytes): + obj = RawX.Group1() + obj.pr_mes = struct.unpack("