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