Added link mode to object details screen

pull/72/merge
Mark Qvist 2025-05-06 19:11:54 +02:00
parent 922dd91d7f
commit 0e552d4b9d
2 changed files with 41 additions and 2 deletions

View File

@ -148,7 +148,7 @@ class SidebandCore():
self.log_announce(destination_hash, app_data, dest_type=SidebandCore.aspect_filter, stamp_cost=sc, link_stats=link_stats) self.log_announce(destination_hash, app_data, dest_type=SidebandCore.aspect_filter, stamp_cost=sc, link_stats=link_stats)
def __init__(self, owner_app, config_path = None, is_service=False, is_client=False, android_app_dir=None, verbose=False, quiet=False, owner_service=None, service_context=None, is_daemon=False, load_config_only=False): def __init__(self, owner_app, config_path = None, is_service=False, is_client=False, android_app_dir=None, verbose=False, quiet=False, owner_service=None, service_context=None, is_daemon=False, load_config_only=False, rns_config_path=None):
self.is_service = is_service self.is_service = is_service
self.is_client = is_client self.is_client = is_client
self.is_daemon = is_daemon self.is_daemon = is_daemon
@ -209,7 +209,7 @@ class SidebandCore():
self.cache_dir = self.app_dir+"/cache" self.cache_dir = self.app_dir+"/cache"
self.rns_configdir = None self.rns_configdir = rns_config_path
core_path = os.path.abspath(__file__) core_path = os.path.abspath(__file__)
if "core.pyc" in core_path: if "core.pyc" in core_path:
@ -1960,6 +1960,38 @@ class SidebandCore():
RNS.log(ed, RNS.LOG_DEBUG) RNS.log(ed, RNS.LOG_DEBUG)
return None return None
def _get_destination_lmd(self, destination_hash):
try:
mr = self.message_router
oh = destination_hash
ol = None
if oh in mr.direct_links:
ol = mr.direct_links[oh]
elif oh in mr.backchannel_links:
ol = mr.backchannel_links[oh]
if ol != None: return ol.get_mode()
return None
except Exception as e:
RNS.trace_exception(e)
return None
def get_destination_lmd(self, destination_hash):
if not RNS.vendor.platformutils.is_android():
return self._get_destination_lmd(destination_hash)
else:
if self.is_service:
return self._get_destination_lmd(destination_hash)
else:
try:
return self.service_rpc_request({"get_destination_lmd": destination_hash})
except Exception as e:
ed = "Error while getting destination link mode over RPC: "+str(e)
RNS.log(ed, RNS.LOG_DEBUG)
return None
def __start_rpc_listener(self): def __start_rpc_listener(self):
try: try:
RNS.log("Starting RPC listener", RNS.LOG_DEBUG) RNS.log("Starting RPC listener", RNS.LOG_DEBUG)

View File

@ -830,12 +830,19 @@ class RVDetails(MDRecycleView):
ler = self.delegate.app.sideband.get_destination_establishment_rate(self.delegate.object_hash) ler = self.delegate.app.sideband.get_destination_establishment_rate(self.delegate.object_hash)
mtu = self.delegate.app.sideband.get_destination_mtu(self.delegate.object_hash) or RNS.Reticulum.MTU mtu = self.delegate.app.sideband.get_destination_mtu(self.delegate.object_hash) or RNS.Reticulum.MTU
edr = self.delegate.app.sideband.get_destination_edr(self.delegate.object_hash) edr = self.delegate.app.sideband.get_destination_edr(self.delegate.object_hash)
lmd = self.delegate.app.sideband.get_destination_lmd(self.delegate.object_hash)
if ler: if ler:
lers = RNS.prettyspeed(ler, "b") lers = RNS.prettyspeed(ler, "b")
mtus = RNS.prettysize(mtu) mtus = RNS.prettysize(mtu)
edrs = f"{RNS.prettyspeed(edr)}" if edr != None else "" edrs = f"{RNS.prettyspeed(edr)}" if edr != None else ""
self.entries.append({"icon": "lock-check-outline", "text": f"Link established, LER is [b]{lers}[/b], MTU is [b]{mtus}[/b]", "on_release": pass_job}) self.entries.append({"icon": "lock-check-outline", "text": f"Link established, LER is [b]{lers}[/b], MTU is [b]{mtus}[/b]", "on_release": pass_job})
if edr: self.entries.append({"icon": "approximately-equal", "text": f"Expected data rate is [b]{edrs}[/b]", "on_release": pass_job}) if edr: self.entries.append({"icon": "approximately-equal", "text": f"Expected data rate is [b]{edrs}[/b]", "on_release": pass_job})
if lmd != None:
if lmd in RNS.Link.MODE_DESCRIPTIONS: lmds = RNS.Link.MODE_DESCRIPTIONS[lmd]
else: lmds = "unknown"
if lmds == "AES_128_CBC": lmds = "X25519/AES128"
elif lmds == "AES_256_CBC": lmds = "X25519/AES256"
self.entries.append({"icon": "link-lock", "text": f"Link mode is [b]{lmds}[/b]", "on_release": pass_job})
except Exception as e: except Exception as e:
RNS.trace_exception(e) RNS.trace_exception(e)