refactored Transceiver

This commit is contained in:
2026-03-25 06:33:18 +01:00
parent 888dd850f3
commit 2e01a70d53
2 changed files with 11 additions and 11 deletions
+6 -9
View File
@@ -39,22 +39,18 @@ class NetworkBackend(ABackend):
self.loop_enable = False self.loop_enable = False
self.thread.join() self.thread.join()
def create_xcvr(self, name: str) -> Transceiver:
obj = Transceiver(self, name)
if not self.register_xcvr(obj):
raise Exception(f"No socket found for \"{name}\"")
return obj
self.sel.register(name, selectors.EVENT_READ, data=None)
def register_xcvr(self, xcvr: Transceiver): def register_xcvr(self, xcvr: Transceiver):
found = False found = False
for sock in self.sock_list: for sock in self.sock_list:
if xcvr.name in sock['name']: if xcvr.name in sock['name']:
found = True found = True
sock['xcvr'] = xcvr sock['xcvr'] = xcvr
xcvr.on_register(self)
break break
return found if not found:
raise Exception(f"No socket found for \"{xcvr.name}\"")
def find_by_addr(self, addr): def find_by_addr(self, addr):
for sock in self.sock_list: for sock in self.sock_list:
if sock['addr'] == addr: if sock['addr'] == addr:
@@ -165,7 +161,8 @@ if __name__ == "__main__":
# Receiver-1.1 / # Receiver-1.1 /
# Create transceiver # Create transceiver
transceiver[grm] = mc.create_xcvr(grm) transceiver[grm] = Transceiver(grm)
mc.register_xcvr(transceiver[grm])
# Create NMEA-Packetizer # Create NMEA-Packetizer
nmea_packetizer = NmeaPacketizer() nmea_packetizer = NmeaPacketizer()
+5 -2
View File
@@ -3,14 +3,17 @@ from a_backend import ABackend
from msg.container import * from msg.container import *
class Transceiver(MsgTalker): class Transceiver(MsgTalker):
def __init__(self, backend: ABackend, name: str): def __init__(self, name: str):
MsgTalker.__init__(self) MsgTalker.__init__(self)
self.backend = backend
self.name = name self.name = name
self.backend = None
def on_recv(self, msg: MsgContainer): def on_recv(self, msg: MsgContainer):
self.call_listener(msg) self.call_listener(msg)
def on_register(self, backend: ABackend):
self.backend = backend
def send(self, data: bytes): def send(self, data: bytes):
self.backend.send(self.name, data) self.backend.send(self.name, data)