Added interface mode settings when transport is active

This commit is contained in:
Mark Qvist 2022-10-18 15:06:25 +02:00
parent a55143d2c8
commit 4593286589
4 changed files with 172 additions and 25 deletions

View File

@ -10,7 +10,7 @@ source.exclude_patterns = app_storage/*,venv/*,Makefile,./Makefil*,requirements,
version.regex = __version__ = ['"](.*)['"]
version.filename = %(source.dir)s/main.py
android.numeric_version = 20221016
android.numeric_version = 20221018
requirements = python3==3.9.5,hostpython3==3.9.5,cryptography,cffi,pycparser,kivy==2.1.0,pygments,sdl2,sdl2_ttf==2.0.15,pillow,lxmf==0.1.9,netifaces,libbz2,pydenticon,usb4a,usbserial4a
p4a.local_recipes = ../Others/python-for-android/pythonforandroid/recipes

View File

@ -1,6 +1,6 @@
__debug_build__ = False
__disable_shaders__ = True
__version__ = "0.2.4"
__version__ = "0.2.5"
__variant__ = "beta"
import sys
@ -1044,6 +1044,9 @@ class SidebandApp(MDApp):
def con_collapse_serial(collapse=True):
self.widget_hide(self.root.ids.connectivity_serial_fields, collapse)
def con_collapse_transport(collapse=True):
self.widget_hide(self.root.ids.connectivity_transport_fields, collapse)
def save_connectivity(sender=None, event=None):
self.sideband.config["connect_transport"] = self.root.ids.connectivity_enable_transport.active
self.sideband.config["connect_local"] = self.root.ids.connectivity_use_local.active
@ -1071,6 +1074,13 @@ class SidebandApp(MDApp):
self.sideband.config["connect_modem_ifac_netname"] = self.root.ids.connectivity_modem_ifac_netname.text
self.sideband.config["connect_modem_ifac_passphrase"] = self.root.ids.connectivity_modem_ifac_passphrase.text
self.sideband.config["connect_ifmode_local"] = self.root.ids.connectivity_local_ifmode.text.lower()
self.sideband.config["connect_ifmode_tcp"] = self.root.ids.connectivity_tcp_ifmode.text.lower()
self.sideband.config["connect_ifmode_i2p"] = self.root.ids.connectivity_i2p_ifmode.text.lower()
self.sideband.config["connect_ifmode_rnode"] = self.root.ids.connectivity_rnode_ifmode.text.lower()
self.sideband.config["connect_ifmode_modem"] = self.root.ids.connectivity_modem_ifmode.text.lower()
self.sideband.config["connect_ifmode_serial"] = self.root.ids.connectivity_serial_ifmode.text.lower()
con_collapse_local(collapse=not self.root.ids.connectivity_use_local.active)
con_collapse_tcp(collapse=not self.root.ids.connectivity_use_tcp.active)
con_collapse_i2p(collapse=not self.root.ids.connectivity_use_i2p.active)
@ -1078,6 +1088,7 @@ class SidebandApp(MDApp):
con_collapse_bluetooth(collapse=not self.root.ids.connectivity_use_bluetooth.active)
con_collapse_modem(collapse=not self.root.ids.connectivity_use_modem.active)
con_collapse_serial(collapse=not self.root.ids.connectivity_use_serial.active)
con_collapse_transport(collapse=not self.sideband.config["connect_transport"])
self.sideband.save_configuration()
@ -1115,6 +1126,37 @@ class SidebandApp(MDApp):
if not sender.focus:
save_connectivity(sender, event)
def ifmode_validate(sender=None, event=None):
if not sender.focus:
all_valid = True
iftypes = ["local", "tcp", "i2p", "rnode", "modem", "serial"]
for iftype in iftypes:
element = self.root.ids["connectivity_"+iftype+"_ifmode"]
modes = ["full", "gateway", "access point", "roaming", "boundary"]
value = element.text.lower()
if value in ["", "f"] or value.startswith("fu"):
value = "full"
elif value in ["g", "gw"] or value.startswith("ga"):
value = "gateway"
elif value in ["a", "ap", "a p", "accesspoint", "access point", "ac", "acc", "acce", "acces"] or value.startswith("access"):
value = "access point"
elif value in ["r"] or value.startswith("ro"):
value = "roaming"
elif value in ["b", "edge"] or value.startswith("bo"):
value = "boundary"
else:
value = "full"
if value in modes:
element.text = value.capitalize()
element.error = False
else:
element.error = True
all_valid = False
if all_valid:
save_connectivity(sender, event)
if RNS.vendor.platformutils.get_platform() == "android":
if not self.sideband.getpersistent("service.is_controlling_connectivity"):
info = "Sideband is connected via a shared Reticulum instance running on this system.\n\n"
@ -1128,7 +1170,6 @@ class SidebandApp(MDApp):
info += "For changes to connectivity to take effect, you must shut down and restart Sideband.\n"
self.root.ids.connectivity_info.text = info
self.root.ids.connectivity_enable_transport.active = self.sideband.config["connect_transport"]
self.root.ids.connectivity_use_local.active = self.sideband.config["connect_local"]
con_collapse_local(collapse=not self.root.ids.connectivity_use_local.active)
self.root.ids.connectivity_local_groupid.text = self.sideband.config["connect_local_groupid"]
@ -1156,7 +1197,6 @@ class SidebandApp(MDApp):
self.root.ids.connectivity_use_bluetooth.active = False
con_collapse_bluetooth(collapse=not self.root.ids.connectivity_use_bluetooth.active)
self.root.ids.connectivity_use_modem.active = self.sideband.config["connect_modem"]
con_collapse_modem(collapse=not self.root.ids.connectivity_use_modem.active)
self.root.ids.connectivity_modem_ifac_netname.text = self.sideband.config["connect_modem_ifac_netname"]
@ -1167,47 +1207,53 @@ class SidebandApp(MDApp):
self.root.ids.connectivity_serial_ifac_netname.text = self.sideband.config["connect_serial_ifac_netname"]
self.root.ids.connectivity_serial_ifac_passphrase.text = self.sideband.config["connect_serial_ifac_passphrase"]
self.root.ids.connectivity_enable_transport.active = self.sideband.config["connect_transport"]
con_collapse_transport(collapse=not self.sideband.config["connect_transport"])
self.root.ids.connectivity_enable_transport.bind(active=save_connectivity)
self.root.ids.connectivity_local_ifmode.text = self.sideband.config["connect_ifmode_local"].capitalize()
self.root.ids.connectivity_tcp_ifmode.text = self.sideband.config["connect_ifmode_tcp"].capitalize()
self.root.ids.connectivity_i2p_ifmode.text = self.sideband.config["connect_ifmode_i2p"].capitalize()
self.root.ids.connectivity_rnode_ifmode.text = self.sideband.config["connect_ifmode_rnode"].capitalize()
self.root.ids.connectivity_modem_ifmode.text = self.sideband.config["connect_ifmode_modem"].capitalize()
self.root.ids.connectivity_serial_ifmode.text = self.sideband.config["connect_ifmode_serial"].capitalize()
self.root.ids.connectivity_use_local.bind(active=save_connectivity)
self.root.ids.connectivity_local_groupid.bind(on_text_validate=save_connectivity)
self.root.ids.connectivity_local_ifac_netname.bind(on_text_validate=save_connectivity)
self.root.ids.connectivity_local_ifac_passphrase.bind(on_text_validate=save_connectivity)
self.root.ids.connectivity_use_tcp.bind(active=save_connectivity)
self.root.ids.connectivity_tcp_host.bind(on_text_validate=save_connectivity)
self.root.ids.connectivity_tcp_port.bind(on_text_validate=save_connectivity)
self.root.ids.connectivity_tcp_ifac_netname.bind(on_text_validate=save_connectivity)
self.root.ids.connectivity_tcp_ifac_passphrase.bind(on_text_validate=save_connectivity)
self.root.ids.connectivity_use_i2p.bind(active=save_connectivity)
self.root.ids.connectivity_i2p_b32.bind(on_text_validate=save_connectivity)
self.root.ids.connectivity_i2p_ifac_netname.bind(on_text_validate=save_connectivity)
self.root.ids.connectivity_i2p_ifac_passphrase.bind(on_text_validate=save_connectivity)
self.root.ids.connectivity_rnode_ifac_netname.bind(on_text_validate=save_connectivity)
self.root.ids.connectivity_rnode_ifac_passphrase.bind(on_text_validate=save_connectivity)
self.root.ids.connectivity_use_bluetooth.bind(active=save_connectivity)
self.root.ids.connectivity_use_rnode.bind(active=serial_connectivity_save)
self.root.ids.connectivity_use_modem.bind(active=serial_connectivity_save)
self.root.ids.connectivity_use_serial.bind(active=serial_connectivity_save)
self.root.ids.connectivity_local_groupid.bind(focus=focus_save)
self.root.ids.connectivity_local_ifac_netname.bind(focus=focus_save)
self.root.ids.connectivity_local_ifac_passphrase.bind(focus=focus_save)
self.root.ids.connectivity_use_tcp.bind(active=save_connectivity)
self.root.ids.connectivity_tcp_host.bind(focus=focus_save)
self.root.ids.connectivity_tcp_port.bind(focus=focus_save)
self.root.ids.connectivity_tcp_ifac_netname.bind(focus=focus_save)
self.root.ids.connectivity_tcp_ifac_passphrase.bind(focus=focus_save)
self.root.ids.connectivity_use_i2p.bind(active=save_connectivity)
self.root.ids.connectivity_i2p_b32.bind(focus=focus_save)
self.root.ids.connectivity_i2p_ifac_netname.bind(focus=focus_save)
self.root.ids.connectivity_i2p_ifac_passphrase.bind(focus=focus_save)
self.root.ids.connectivity_use_rnode.bind(active=serial_connectivity_save)
self.root.ids.connectivity_rnode_ifac_netname.bind(focus=focus_save)
self.root.ids.connectivity_rnode_ifac_passphrase.bind(focus=focus_save)
self.root.ids.connectivity_use_modem.bind(active=serial_connectivity_save)
self.root.ids.connectivity_modem_ifac_netname.bind(focus=focus_save)
self.root.ids.connectivity_modem_ifac_passphrase.bind(focus=focus_save)
self.root.ids.connectivity_use_serial.bind(active=serial_connectivity_save)
self.root.ids.connectivity_serial_ifac_netname.bind(focus=focus_save)
self.root.ids.connectivity_serial_ifac_passphrase.bind(focus=focus_save)
self.root.ids.connectivity_local_ifmode.bind(focus=ifmode_validate)
self.root.ids.connectivity_tcp_ifmode.bind(focus=ifmode_validate)
self.root.ids.connectivity_i2p_ifmode.bind(focus=ifmode_validate)
self.root.ids.connectivity_rnode_ifmode.bind(focus=ifmode_validate)
self.root.ids.connectivity_modem_ifmode.bind(focus=ifmode_validate)
self.root.ids.connectivity_serial_ifmode.bind(focus=ifmode_validate)
self.root.ids.connectivity_use_bluetooth.bind(active=save_connectivity)
else:
info = ""

View File

@ -208,6 +208,13 @@ class SidebandCore():
self.config["connect_modem"] = False
self.config["connect_modem_ifac_netname"] = ""
self.config["connect_modem_ifac_passphrase"] = ""
self.config["connect_ifmode_local"] = "full"
self.config["connect_ifmode_tcp"] = "full"
self.config["connect_ifmode_i2p"] = "full"
self.config["connect_ifmode_rnode"] = "full"
self.config["connect_ifmode_modem"] = "full"
self.config["connect_ifmode_serial"] = "full"
self.config["connect_ifmode_bluetooth"] = "full"
# Hardware
self.config["hw_rnode_frequency"] = None
self.config["hw_rnode_modulation"] = "LoRa"
@ -264,6 +271,7 @@ class SidebandCore():
self.config["lxmf_sync_interval"] = 43200
if not "notifications_on" in self.config:
self.config["notifications_on"] = True
if not "connect_transport" in self.config:
self.config["connect_transport"] = False
if not "connect_rnode" in self.config:
@ -284,6 +292,22 @@ class SidebandCore():
self.config["connect_modem_ifac_netname"] = ""
if not "connect_modem_ifac_passphrase" in self.config:
self.config["connect_modem_ifac_passphrase"] = ""
if not "connect_ifmode_local" in self.config:
self.config["connect_ifmode_local"] = "full"
if not "connect_ifmode_tcp" in self.config:
self.config["connect_ifmode_tcp"] = "full"
if not "connect_ifmode_i2p" in self.config:
self.config["connect_ifmode_i2p"] = "full"
if not "connect_ifmode_rnode" in self.config:
self.config["connect_ifmode_rnode"] = "full"
if not "connect_ifmode_modem" in self.config:
self.config["connect_ifmode_modem"] = "full"
if not "connect_ifmode_serial" in self.config:
self.config["connect_ifmode_serial"] = "full"
if not "connect_ifmode_bluetooth" in self.config:
self.config["connect_ifmode_bluetooth"] = "full"
if not "hw_rnode_frequency" in self.config:
self.config["hw_rnode_frequency"] = None
if not "hw_rnode_modulation" in self.config:

View File

@ -520,7 +520,6 @@ MDNavigationLayout:
font_size: dp(24)
# disabled: True
MDBoxLayout:
orientation: "horizontal"
padding: [0,0,dp(24),0]
@ -539,6 +538,84 @@ MDNavigationLayout:
pos_hint: {"center_y": 0.3}
# disabled: True
MDBoxLayout:
id: connectivity_transport_fields
orientation: "vertical"
size_hint_y: None
height: self.minimum_height
padding: [0, 0, 0, dp(32)]
# MDLabel:
# id: connectivity_modes_info
# markup: True
# text: "With Transport enabled, you can configure the interface modes for any enabled interfaces. Changing interface modes affects how Reticulum processes traffic and announces. For more information, refer to the Reticulum Manual."
# size_hint_y: None
# text_size: self.width, None
# height: self.texture_size[1]
MDBoxLayout:
orientation: "horizontal"
spacing: "24dp"
size_hint_y: None
height: self.minimum_height
padding: [dp(0), dp(12), dp(0), dp(12)]
MDTextField:
id: connectivity_local_ifmode
hint_text: "Local Interface Mode"
text: ""
font_size: dp(24)
MDTextField:
id: connectivity_tcp_ifmode
hint_text: "TCP Interface Mode"
text: ""
font_size: dp(24)
MDBoxLayout:
orientation: "horizontal"
spacing: "24dp"
size_hint_y: None
height: self.minimum_height
padding: [dp(0), dp(12), dp(0), dp(12)]
MDTextField:
id: connectivity_i2p_ifmode
hint_text: "I2P Mode"
text: ""
font_size: dp(24)
MDTextField:
id: connectivity_rnode_ifmode
hint_text: "RNode Mode"
text: ""
font_size: dp(24)
MDBoxLayout:
orientation: "horizontal"
spacing: "24dp"
size_hint_y: None
height: self.minimum_height
padding: [dp(0), dp(12), dp(0), dp(12)]
MDTextField:
id: connectivity_modem_ifmode
hint_text: "Modem Mode"
text: ""
font_size: dp(24)
MDTextField:
id: connectivity_serial_ifmode
hint_text: "Serial Mode"
text: ""
font_size: dp(24)
# MDTextField:
# id: connectivity_bluetooth_ifmode
# hint_text: "Bluetooth Mode"
# text: ""
# font_size: dp(24)
MDScreen:
name: "guide_screen"