refactored Transceiver
This commit is contained in:
+6
-9
@@ -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
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user