From ebf084cff0691ee174044400fb4d451704834948 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Thu, 21 Nov 2024 12:16:44 +0100 Subject: [PATCH] Internal interface config handling for SerialInterface --- RNS/Interfaces/I2PInterface.py | 1 + RNS/Interfaces/SerialInterface.py | 14 ++++++++++++- RNS/Reticulum.py | 35 ++----------------------------- 3 files changed, 16 insertions(+), 34 deletions(-) diff --git a/RNS/Interfaces/I2PInterface.py b/RNS/Interfaces/I2PInterface.py index acd8a2c..9f3384e 100644 --- a/RNS/Interfaces/I2PInterface.py +++ b/RNS/Interfaces/I2PInterface.py @@ -829,6 +829,7 @@ class I2PInterfacePeer(Interface): class I2PInterface(Interface): BITRATE_GUESS = 256*1000 + DEFAULT_IFAC_SIZE = 16 def __init__(self, owner, configuration): super().__init__() diff --git a/RNS/Interfaces/SerialInterface.py b/RNS/Interfaces/SerialInterface.py index 89f73c6..0672ed0 100755 --- a/RNS/Interfaces/SerialInterface.py +++ b/RNS/Interfaces/SerialInterface.py @@ -42,6 +42,7 @@ class HDLC(): class SerialInterface(Interface): MAX_CHUNK = 32768 + DEFAULT_IFAC_SIZE = 8 owner = None port = None @@ -51,7 +52,7 @@ class SerialInterface(Interface): stopbits = None serial = None - def __init__(self, owner, name, port, speed, databits, parity, stopbits): + def __init__(self, owner, configuration): import importlib if importlib.util.find_spec('serial') != None: import serial @@ -62,6 +63,17 @@ class SerialInterface(Interface): super().__init__() + c = configuration + name = c["name"] + 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 + + if port == None: + raise ValueError("No port specified for serial interface") + self.HW_MTU = 564 self.pyserial = serial diff --git a/RNS/Reticulum.py b/RNS/Reticulum.py index 8acf5e0..0a071e0 100755 --- a/RNS/Reticulum.py +++ b/RNS/Reticulum.py @@ -615,39 +615,8 @@ class Reticulum: interface_post_init(interface) if c["type"] == "SerialInterface": - 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 - - if port == None: - raise ValueError("No port specified for serial interface") - - interface = SerialInterface.SerialInterface( - RNS.Transport, - name, - port, - speed, - databits, - parity, - stopbits - ) - - 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 = SerialInterface.SerialInterface(RNS.Transport, interface_config) + interface_post_init(interface) if c["type"] == "PipeInterface": command = c["command"] if "command" in c else None