refactored

This commit is contained in:
2026-03-15 15:03:23 +01:00
parent 06f4c36b15
commit 7ce91a34dc
5 changed files with 70 additions and 9 deletions
+3 -1
View File
@@ -9,11 +9,13 @@ class MsgReceiver(MsgSink):
self.filter = filter self.filter = filter
def is_msg(self, msg: MsgContainer): def is_msg(self, msg: MsgContainer):
res = False
try: try:
data = msg.data.decode(encoding="utf-8") data = msg.data.decode(encoding="utf-8")
return re.match(self.filter, data) res = re.match(self.filter, data) is not None
except UnicodeDecodeError: except UnicodeDecodeError:
pass pass
return res
def on_recv(self, msg: MsgContainer): def on_recv(self, msg: MsgContainer):
print(f"{self.name}: {msg}") print(f"{self.name}: {msg}")
+11 -8
View File
@@ -6,7 +6,7 @@ from msg_container import MsgContainer
from packetizer import Packetizer from packetizer import Packetizer
from transceiver import Transceiver from transceiver import Transceiver
from a_backend import ABackend from a_backend import ABackend
from msg_receiver import MsgReceiver from nmea.GLL import Gll
class NetworkBackend(ABackend): class NetworkBackend(ABackend):
def __init__(self, servers: list[dict]): def __init__(self, servers: list[dict]):
@@ -98,14 +98,17 @@ if __name__ == "__main__":
xcvr_1.register_recv(packetizer_0) xcvr_1.register_recv(packetizer_0)
xcvr_2.register_recv(packetizer_1) xcvr_2.register_recv(packetizer_1)
rx_1 = MsgReceiver('Rx1', '^.?GPGSV.*') # rx_1 = MsgReceiver('Rx1', '^.?GPGSV.*')
rx_2 = MsgReceiver('Rx2', '^.?GNGLL.*') # rx_2 = MsgReceiver('Rx2', '^.?GNGLL.*')
# rx_3 = Gga('Rx3', 'GP')
rx_4 = Gll('Rx4', '--')
# Register all Rx to all sources # Register all Rx to all sources
packetizer_0.register_recv(rx_1) # packetizer_0.register_recv(rx_1)
packetizer_0.register_recv(rx_2) # packetizer_0.register_recv(rx_2)
packetizer_1.register_recv(rx_1) # packetizer_1.register_recv(rx_1)
packetizer_1.register_recv(rx_2) # packetizer_1.register_recv(rx_2)
packetizer_0.register_recv(rx_4)
packetizer_1.register_recv(rx_4)
# Connect all sources # Connect all sources
mc.connect() mc.connect()
+11
View File
@@ -0,0 +1,11 @@
from msg_container import MsgContainer
from receiver import Nmea
class Gga(Nmea):
def __init__(self, name: str, tid: str):
Nmea.__init__(self, name, tid=tid, msg_type="GGA")
def on_recv(self, msg: MsgContainer):
data = msg.data.decode(encoding="utf-8")
print(data)
+36
View File
@@ -0,0 +1,36 @@
from msg_container import MsgContainer
from nmea.receiver import Nmea
class Gll(Nmea):
class Msg:
def __init__(self):
self.latitude = None
self.ns_indicator = None
self.longitude = None
self.ew_indicator = None
self.utc_time = None
self.status = None
self.checksum = None
def __repr__(self):
return f"{self.latitude:.8f}{self.ns_indicator},{self.longitude:.8f}{self.ew_indicator}"
def __init__(self, name: str, tid: str):
Nmea.__init__(self, name, tid=tid, msg_type="GLL")
self.msg = None
self.data = Gll.Msg()
def on_recv(self, msg: MsgContainer):
data = msg.data.decode(encoding="utf-8")
data_list = data.split(',')
self.msg = data_list[0]
self.data.latitude = float(data_list[1])/100
self.data.ns_indicator = data_list[2]
self.data.longitude = float(data_list[3])/100
self.data.ew_indicator = data_list[4]
self.data.utc_time = data_list[5]
self.data.status = data_list[6]
self.data.checksum = data_list[7]
print(self.data)
+9
View File
@@ -0,0 +1,9 @@
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}.*")