mirror of
https://github.com/markqvist/Reticulum.git
synced 2024-11-22 13:40:19 +00:00
Compare commits
4 Commits
e4ab81d95a
...
d1df6d70e1
Author | SHA1 | Date | |
---|---|---|---|
|
d1df6d70e1 | ||
|
8a50528111 | ||
|
9523595282 | ||
|
a762af035a |
@ -80,7 +80,7 @@ class AX25KISSInterface(Interface):
|
|||||||
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
preamble = int(c["preamble"]) if "preamble" in c else None
|
preamble = int(c["preamble"]) if "preamble" in c else None
|
||||||
txtail = int(c["txtail"]) if "txtail" in c else None
|
txtail = int(c["txtail"]) if "txtail" in c else None
|
||||||
|
@ -85,7 +85,7 @@ class KISSInterface(Interface):
|
|||||||
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
preamble = int(c["preamble"]) if "preamble" in c else None
|
preamble = int(c["preamble"]) if "preamble" in c else None
|
||||||
txtail = int(c["txtail"]) if "txtail" in c else None
|
txtail = int(c["txtail"]) if "txtail" in c else None
|
||||||
@ -97,7 +97,7 @@ class KISSInterface(Interface):
|
|||||||
databits = int(c["databits"]) if "databits" in c else 8
|
databits = int(c["databits"]) if "databits" in c else 8
|
||||||
parity = c["parity"] if "parity" in c else "N"
|
parity = c["parity"] if "parity" in c else "N"
|
||||||
stopbits = int(c["stopbits"]) if "stopbits" in c else 1
|
stopbits = int(c["stopbits"]) if "stopbits" in c else 1
|
||||||
beacon_interval = int(c["beacon_interval"]) if "beacon_interval" in c else None
|
beacon_interval = int(c["beacon_interval"]) if "beacon_interval" in c and c["beacon_interval"] != None else None
|
||||||
beacon_data = c["beacon_data"] if "beacon_data" in c else None
|
beacon_data = c["beacon_data"] if "beacon_data" in c else None
|
||||||
|
|
||||||
self.HW_MTU = 564
|
self.HW_MTU = 564
|
||||||
|
@ -343,24 +343,24 @@ class RNodeInterface(Interface):
|
|||||||
|
|
||||||
|
|
||||||
def __init__(self, owner, configuration):
|
def __init__(self, owner, configuration):
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
allow_bluetooth = c["allow_bluetooth"]
|
allow_bluetooth = c.as_bool("allow_bluetooth") if "allow_bluetooth" in c else False
|
||||||
target_device_name = c["target_device_name"]
|
target_device_name = c["target_device_name"] if "target_device_name" in c else None
|
||||||
target_device_address = c["target_device_address"]
|
target_device_address = c["target_device_address"] if "target_device_address" in c else None
|
||||||
ble_name = c["ble_name"]
|
ble_name = c["ble_name"] if "ble_name" in c else None
|
||||||
ble_addr = c["ble_addr"]
|
ble_addr = c["ble_addr"] if "ble_addr" in c else None
|
||||||
force_ble = c["force_ble"]
|
force_ble = c["force_ble"] if "force_ble" in c else False
|
||||||
frequency = int(c["frequency"]) if "frequency" in c else None
|
frequency = int(c["frequency"]) if "frequency" in c else 0
|
||||||
bandwidth = int(c["bandwidth"]) if "bandwidth" in c else None
|
bandwidth = int(c["bandwidth"]) if "bandwidth" in c else 0
|
||||||
txpower = int(c["txpower"]) if "txpower" in c else None
|
txpower = int(c["txpower"]) if "txpower" in c else 0
|
||||||
sf = int(c["spreadingfactor"]) if "spreadingfactor" in c else None
|
sf = int(c["spreadingfactor"]) if "spreadingfactor" in c else 0
|
||||||
cr = int(c["codingrate"]) if "codingrate" in c else None
|
cr = int(c["codingrate"]) if "codingrate" in c else 0
|
||||||
flow_control = c.as_bool("flow_control") if "flow_control" in c else False
|
flow_control = c.as_bool("flow_control") if "flow_control" in c else False
|
||||||
id_interval = int(c["id_interval"]) if "id_interval" in c else None
|
id_interval = int(c["id_interval"]) if "id_interval" in c and c["id_interval"] != None else None
|
||||||
id_callsign = c["id_callsign"] if "id_callsign" in c else None
|
id_callsign = c["id_callsign"] if "id_callsign" in c else None
|
||||||
st_alock = float(c["airtime_limit_short"]) if "airtime_limit_short" in c else None
|
st_alock = float(c["airtime_limit_short"]) if "airtime_limit_short" in c and c["airtime_limit_short"] != None else None
|
||||||
lt_alock = float(c["airtime_limit_long"]) if "airtime_limit_long" in c else None
|
lt_alock = float(c["airtime_limit_long"]) if "airtime_limit_long" in c and c["airtime_limit_long"] != None else None
|
||||||
port = c["port"] if "port" in c else None
|
port = c["port"] if "port" in c else None
|
||||||
|
|
||||||
import importlib
|
import importlib
|
||||||
|
@ -75,7 +75,7 @@ class SerialInterface(Interface):
|
|||||||
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
port = c["port"] if "port" in c else None
|
port = c["port"] if "port" in c else None
|
||||||
speed = int(c["speed"]) if "speed" in c else 9600
|
speed = int(c["speed"]) if "speed" in c else 9600
|
||||||
|
@ -88,7 +88,7 @@ class AutoInterface(Interface):
|
|||||||
return socket.if_nametoindex(ifname)
|
return socket.if_nametoindex(ifname)
|
||||||
|
|
||||||
def __init__(self, owner, configuration):
|
def __init__(self, owner, configuration):
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
group_id = c["group_id"] if "group_id" in c else None
|
group_id = c["group_id"] if "group_id" in c else None
|
||||||
discovery_scope = c["discovery_scope"] if "discovery_scope" in c else None
|
discovery_scope = c["discovery_scope"] if "discovery_scope" in c else None
|
||||||
@ -97,7 +97,7 @@ class AutoInterface(Interface):
|
|||||||
data_port = int(c["data_port"]) if "data_port" in c else None
|
data_port = int(c["data_port"]) if "data_port" in c else None
|
||||||
allowed_interfaces = c.as_list("devices") if "devices" in c else None
|
allowed_interfaces = c.as_list("devices") if "devices" in c else None
|
||||||
ignored_interfaces = c.as_list("ignored_devices") if "ignored_devices" in c else None
|
ignored_interfaces = c.as_list("ignored_devices") if "ignored_devices" in c else None
|
||||||
configured_bitrate = c["configured_bitrate"]
|
configured_bitrate = c["configured_bitrate"] if "configured_bitrate" in c else None
|
||||||
|
|
||||||
from RNS.vendor.ifaddr import niwrapper
|
from RNS.vendor.ifaddr import niwrapper
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
@ -834,14 +834,14 @@ class I2PInterface(Interface):
|
|||||||
def __init__(self, owner, configuration):
|
def __init__(self, owner, configuration):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
rns_storagepath = c["storagepath"]
|
rns_storagepath = c["storagepath"]
|
||||||
peers = c.as_list("peers") if "peers" in c else None
|
peers = c.as_list("peers") if "peers" in c else None
|
||||||
connectable = c.as_bool("connectable") if "connectable" in c else False
|
connectable = c.as_bool("connectable") if "connectable" in c else False
|
||||||
ifac_size = c["ifac_size"]
|
ifac_size = c["ifac_size"] if "ifac_size" in c else None
|
||||||
ifac_netname = c["ifac_netname"]
|
ifac_netname = c["ifac_netname"] if "ifac_netname" in c else None
|
||||||
ifac_netkey = c["ifac_netkey"]
|
ifac_netkey = c["ifac_netkey"] if "ifac_netkey" in c else None
|
||||||
|
|
||||||
self.HW_MTU = 1064
|
self.HW_MTU = 1064
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ import RNS
|
|||||||
import time
|
import time
|
||||||
import threading
|
import threading
|
||||||
from collections import deque
|
from collections import deque
|
||||||
|
from RNS.vendor.configobj import ConfigObj
|
||||||
|
|
||||||
class Interface:
|
class Interface:
|
||||||
IN = False
|
IN = False
|
||||||
@ -239,3 +240,14 @@ class Interface:
|
|||||||
|
|
||||||
def detach(self):
|
def detach(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_config_obj(config_in):
|
||||||
|
if type(config_in) == ConfigObj:
|
||||||
|
return config_in
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
return ConfigObj(config_in)
|
||||||
|
except Exception as e:
|
||||||
|
RNS.log(f"Could not parse supplied configuration data. The contained exception was: {e}", RNS.LOG_ERROR)
|
||||||
|
raise SystemError("Invalid configuration data supplied")
|
@ -73,7 +73,7 @@ class KISSInterface(Interface):
|
|||||||
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
preamble = int(c["preamble"]) if "preamble" in c else None
|
preamble = int(c["preamble"]) if "preamble" in c else None
|
||||||
txtail = int(c["txtail"]) if "txtail" in c else None
|
txtail = int(c["txtail"]) if "txtail" in c else None
|
||||||
@ -338,7 +338,13 @@ class KISSInterface(Interface):
|
|||||||
if time.time() > self.first_tx + self.beacon_i:
|
if time.time() > self.first_tx + self.beacon_i:
|
||||||
RNS.log("Interface "+str(self)+" is transmitting beacon data: "+str(self.beacon_d.decode("utf-8")), RNS.LOG_DEBUG)
|
RNS.log("Interface "+str(self)+" is transmitting beacon data: "+str(self.beacon_d.decode("utf-8")), RNS.LOG_DEBUG)
|
||||||
self.first_tx = None
|
self.first_tx = None
|
||||||
self.processOutgoing(self.beacon_d)
|
|
||||||
|
# Pad to minimum length
|
||||||
|
frame = bytearray(self.beacon_d)
|
||||||
|
while len(frame) < 15:
|
||||||
|
frame.append(0x00)
|
||||||
|
|
||||||
|
self.processOutgoing(bytes(frame))
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.online = False
|
self.online = False
|
||||||
|
@ -54,7 +54,7 @@ class PipeInterface(Interface):
|
|||||||
def __init__(self, owner, configuration):
|
def __init__(self, owner, configuration):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
command = c["command"] if "command" in c else None
|
command = c["command"] if "command" in c else None
|
||||||
respawn_delay = c.as_float("respawn_delay") if "respawn_delay" in c else None
|
respawn_delay = c.as_float("respawn_delay") if "respawn_delay" in c else None
|
||||||
|
@ -132,13 +132,13 @@ class RNodeInterface(Interface):
|
|||||||
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
frequency = int(c["frequency"]) if "frequency" in c else None
|
frequency = int(c["frequency"]) if "frequency" in c else 0
|
||||||
bandwidth = int(c["bandwidth"]) if "bandwidth" in c else None
|
bandwidth = int(c["bandwidth"]) if "bandwidth" in c else 0
|
||||||
txpower = int(c["txpower"]) if "txpower" in c else None
|
txpower = int(c["txpower"]) if "txpower" in c else 0
|
||||||
sf = int(c["spreadingfactor"]) if "spreadingfactor" in c else None
|
sf = int(c["spreadingfactor"]) if "spreadingfactor" in c else 0
|
||||||
cr = int(c["codingrate"]) if "codingrate" in c else None
|
cr = int(c["codingrate"]) if "codingrate" in c else 0
|
||||||
flow_control = c.as_bool("flow_control") if "flow_control" in c else False
|
flow_control = c.as_bool("flow_control") if "flow_control" in c else False
|
||||||
id_interval = int(c["id_interval"]) if "id_interval" in c else None
|
id_interval = int(c["id_interval"]) if "id_interval" in c else None
|
||||||
id_callsign = c["id_callsign"] if "id_callsign" in c else None
|
id_callsign = c["id_callsign"] if "id_callsign" in c else None
|
||||||
|
@ -188,7 +188,7 @@ class RNodeMultiInterface(Interface):
|
|||||||
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
|
|
||||||
count = 0
|
count = 0
|
||||||
|
@ -63,7 +63,7 @@ class SerialInterface(Interface):
|
|||||||
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
port = c["port"] if "port" in c else None
|
port = c["port"] if "port" in c else None
|
||||||
speed = int(c["speed"]) if "speed" in c else 9600
|
speed = int(c["speed"]) if "speed" in c else 9600
|
||||||
|
@ -85,10 +85,10 @@ class TCPClientInterface(Interface):
|
|||||||
def __init__(self, owner, configuration, connected_socket=None):
|
def __init__(self, owner, configuration, connected_socket=None):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
target_ip = c["target_host"]
|
target_ip = c["target_host"] if "target_host" in c else None
|
||||||
target_port = int(c["target_port"])
|
target_port = int(c["target_port"]) if "target_port" in c else None
|
||||||
kiss_framing = False
|
kiss_framing = False
|
||||||
if "kiss_framing" in c and c.as_bool("kiss_framing") == True:
|
if "kiss_framing" in c and c.as_bool("kiss_framing") == True:
|
||||||
kiss_framing = True
|
kiss_framing = True
|
||||||
@ -468,7 +468,7 @@ class TCPServerInterface(Interface):
|
|||||||
def __init__(self, owner, configuration):
|
def __init__(self, owner, configuration):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
device = c["device"] if "device" in c else None
|
device = c["device"] if "device" in c else None
|
||||||
port = int(c["port"]) if "port" in c else None
|
port = int(c["port"]) if "port" in c else None
|
||||||
|
@ -48,7 +48,7 @@ class UDPInterface(Interface):
|
|||||||
def __init__(self, owner, configuration):
|
def __init__(self, owner, configuration):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
c = configuration
|
c = Interface.get_config_obj(configuration)
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
device = c["device"] if "device" in c else None
|
device = c["device"] if "device" in c else None
|
||||||
port = int(c["port"]) if "port" in c else None
|
port = int(c["port"]) if "port" in c else None
|
||||||
|
Loading…
Reference in New Issue
Block a user