From 50d70ccce0edc6713e56cca61f99beaf45b1f3f2 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Mon, 16 Mar 2026 10:00:06 +0100 Subject: [PATCH] refactored --- nmea/receiver.py | 9 ------ packetizer.py => receiver/ascii_packetizer.py | 0 msg_receiver.py => receiver/ascii_receiver.py | 2 +- receiver/nmea_receiver.py | 9 ++++++ receiver/ubx_packetizer.py | 31 +++++++++++++++++++ 5 files changed, 41 insertions(+), 10 deletions(-) delete mode 100644 nmea/receiver.py rename packetizer.py => receiver/ascii_packetizer.py (100%) rename msg_receiver.py => receiver/ascii_receiver.py (93%) create mode 100644 receiver/nmea_receiver.py create mode 100644 receiver/ubx_packetizer.py diff --git a/nmea/receiver.py b/nmea/receiver.py deleted file mode 100644 index 42d1943..0000000 --- a/nmea/receiver.py +++ /dev/null @@ -1,9 +0,0 @@ -from msg_receiver import MsgReceiver - - -class Nmea(MsgReceiver): - def __init__(self, name: str, tid: str, msg_type: str): - if tid == "--": - MsgReceiver.__init__(self, name, filter=f"^\\$..{msg_type}.*") - else: - MsgReceiver.__init__(self, name, filter=f"^\\${tid}{msg_type}.*") diff --git a/packetizer.py b/receiver/ascii_packetizer.py similarity index 100% rename from packetizer.py rename to receiver/ascii_packetizer.py diff --git a/msg_receiver.py b/receiver/ascii_receiver.py similarity index 93% rename from msg_receiver.py rename to receiver/ascii_receiver.py index d93140a..7ab6c30 100644 --- a/msg_receiver.py +++ b/receiver/ascii_receiver.py @@ -2,7 +2,7 @@ from msg_container import MsgContainer from msg_sink import MsgSink import re -class MsgReceiver(MsgSink): +class AsciiReceiver(MsgSink): def __init__(self, name: str, filter: str): super().__init__() self.name = name diff --git a/receiver/nmea_receiver.py b/receiver/nmea_receiver.py new file mode 100644 index 0000000..3383383 --- /dev/null +++ b/receiver/nmea_receiver.py @@ -0,0 +1,9 @@ +from receiver.ascii_receiver import AsciiReceiver + + +class NmeaReceiver(AsciiReceiver): + def __init__(self, name: str, tid: str, msg_type: str): + if tid == "--": + AsciiReceiver.__init__(self, name, filter=f"^\\$..{msg_type}.*") + else: + AsciiReceiver.__init__(self, name, filter=f"^\\${tid}{msg_type}.*") diff --git a/receiver/ubx_packetizer.py b/receiver/ubx_packetizer.py new file mode 100644 index 0000000..91de594 --- /dev/null +++ b/receiver/ubx_packetizer.py @@ -0,0 +1,31 @@ +from msg_container import MsgContainer +from msg_sink import MsgSink +from msg_source import MsgSource +from struct import pack + +class Packetizer(MsgSink, MsgSource): + def __init__(self): + MsgSink.__init__(self) + MsgSource.__init__(self) + self.packet = b'' + self.wait_sync = True + + def on_recv(self, msg: MsgContainer): + name = msg.name + data = msg.data + for n in range (len(data)): + d = data[n] + if d == 13 or d == 10: + timestamp = msg.timestamp + self.wait_sync = False + if len(self.packet) > 0: + self.call_sinks(MsgContainer(name, timestamp, self.packet)) + self.wait_sync = True + self.packet = b'' + elif not self.wait_sync: + self.packet += pack('B', d) + + + + def is_msg(self, msg: MsgContainer): + return True \ No newline at end of file