From a736b3adfc7aad49a97fb8e12a2a4c6bf1858fd7 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Thu, 21 Nov 2024 12:25:59 +0100 Subject: [PATCH] Internal interface config handling for KISSInterface --- RNS/Interfaces/KISSInterface.py | 21 +++++++++++++- RNS/Reticulum.py | 49 ++------------------------------- 2 files changed, 22 insertions(+), 48 deletions(-) diff --git a/RNS/Interfaces/KISSInterface.py b/RNS/Interfaces/KISSInterface.py index 4dad095..fb9b307 100644 --- a/RNS/Interfaces/KISSInterface.py +++ b/RNS/Interfaces/KISSInterface.py @@ -52,6 +52,7 @@ class KISS(): class KISSInterface(Interface): MAX_CHUNK = 32768 BITRATE_GUESS = 1200 + DEFAULT_IFAC_SIZE = 8 owner = None port = None @@ -61,7 +62,7 @@ class KISSInterface(Interface): stopbits = None serial = None - def __init__(self, owner, name, port, speed, databits, parity, stopbits, preamble, txtail, persistence, slottime, flow_control, beacon_interval, beacon_data): + def __init__(self, owner, configuration): import importlib if importlib.util.find_spec('serial') != None: import serial @@ -71,6 +72,24 @@ class KISSInterface(Interface): RNS.panic() super().__init__() + + c = configuration + name = c["name"] + preamble = int(c["preamble"]) if "preamble" in c else None + txtail = int(c["txtail"]) if "txtail" in c else None + persistence = int(c["persistence"]) if "persistence" in c else None + slottime = int(c["slottime"]) if "slottime" in c else None + flow_control = c.as_bool("flow_control") if "flow_control" in c else False + port = c["port"] if "port" in c else None + speed = int(c["speed"]) if "speed" in c else 9600 + databits = int(c["databits"]) if "databits" in c else 8 + parity = c["parity"] if "parity" in c else "N" + stopbits = int(c["stopbits"]) if "stopbits" in c else 1 + beacon_interval = int(c["id_interval"]) if "id_interval" in c else None + beacon_data = c["id_callsign"] if "id_callsign" in c else None + + if port == None: + raise ValueError("No port specified for serial interface") self.HW_MTU = 564 diff --git a/RNS/Reticulum.py b/RNS/Reticulum.py index 75dd6bc..bd7a3ad 100755 --- a/RNS/Reticulum.py +++ b/RNS/Reticulum.py @@ -623,53 +623,8 @@ class Reticulum: interface_post_init(interface) if c["type"] == "KISSInterface": - preamble = int(c["preamble"]) if "preamble" in c else None - txtail = int(c["txtail"]) if "txtail" in c else None - persistence = int(c["persistence"]) if "persistence" in c else None - slottime = int(c["slottime"]) if "slottime" in c else None - flow_control = c.as_bool("flow_control") if "flow_control" in c else False - port = c["port"] if "port" in c else None - speed = int(c["speed"]) if "speed" in c else 9600 - databits = int(c["databits"]) if "databits" in c else 8 - parity = c["parity"] if "parity" in c else "N" - stopbits = int(c["stopbits"]) if "stopbits" in c else 1 - beacon_interval = int(c["id_interval"]) if "id_interval" in c else None - beacon_data = c["id_callsign"] if "id_callsign" in c else None - - if port == None: - raise ValueError("No port specified for serial interface") - - interface = KISSInterface.KISSInterface( - RNS.Transport, - name, - port, - speed, - databits, - parity, - stopbits, - preamble, - txtail, - persistence, - slottime, - flow_control, - beacon_interval, - beacon_data - ) - - if "outgoing" in c and c.as_bool("outgoing") == False: - interface.OUT = False - else: - interface.OUT = True - - interface.mode = interface_mode - - interface.announce_cap = announce_cap - if configured_bitrate: - interface.bitrate = configured_bitrate - if ifac_size != None: - interface.ifac_size = ifac_size - else: - interface.ifac_size = 8 + interface = KISSInterface.KISSInterface(RNS.Transport, interface_config) + interface_post_init(interface) if c["type"] == "AX25KISSInterface": preamble = int(c["preamble"]) if "preamble" in c else None