Display RNode hardware errors if available

This commit is contained in:
Mark Qvist 2024-10-05 15:24:59 +02:00
parent ca21e47910
commit 86c3b18f84
1 changed files with 39 additions and 32 deletions

View File

@ -300,6 +300,7 @@ class SidebandApp(MDApp):
self.hardware_rnode_ready = False self.hardware_rnode_ready = False
self.hardware_modem_ready = False self.hardware_modem_ready = False
self.hardware_serial_ready = False self.hardware_serial_ready = False
self.hw_error_dialog = None
self.final_load_completed = False self.final_load_completed = False
self.service_last_available = 0 self.service_last_available = 0
@ -432,6 +433,7 @@ class SidebandApp(MDApp):
def check_errors(dt): def check_errors(dt):
if self.sideband.getpersistent("startup.errors.rnode") != None: if self.sideband.getpersistent("startup.errors.rnode") != None:
if self.hw_error_dialog == None or (self.hw_error_dialog != None and not self.hw_error_dialog.is_open):
description = self.sideband.getpersistent("startup.errors.rnode")["description"] description = self.sideband.getpersistent("startup.errors.rnode")["description"]
self.sideband.setpersistent("startup.errors.rnode", None) self.sideband.setpersistent("startup.errors.rnode", None)
yes_button = MDRectangleFlatButton( yes_button = MDRectangleFlatButton(
@ -445,9 +447,11 @@ class SidebandApp(MDApp):
# elevation=0, # elevation=0,
) )
def dl_yes(s): def dl_yes(s):
self.hw_error_dialog.is_open = False
self.hw_error_dialog.dismiss() self.hw_error_dialog.dismiss()
yes_button.bind(on_release=dl_yes) yes_button.bind(on_release=dl_yes)
self.hw_error_dialog.open() self.hw_error_dialog.open()
self.hw_error_dialog.is_open = True
Clock.schedule_once(check_errors, 1.5) Clock.schedule_once(check_errors, 1.5)
@ -936,6 +940,7 @@ class SidebandApp(MDApp):
if RNS.vendor.platformutils.is_android(): if RNS.vendor.platformutils.is_android():
rnode_errors = self.sideband.getpersistent("runtime.errors.rnode") rnode_errors = self.sideband.getpersistent("runtime.errors.rnode")
if rnode_errors != None: if rnode_errors != None:
if self.hw_error_dialog == None or (self.hw_error_dialog != None and not self.hw_error_dialog.is_open):
description = rnode_errors["description"] description = rnode_errors["description"]
self.sideband.setpersistent("runtime.errors.rnode", None) self.sideband.setpersistent("runtime.errors.rnode", None)
yes_button = MDRectangleFlatButton( yes_button = MDRectangleFlatButton(
@ -944,14 +949,16 @@ class SidebandApp(MDApp):
) )
self.hw_error_dialog = MDDialog( self.hw_error_dialog = MDDialog(
title="Hardware Error", title="Hardware Error",
text="While connecting an RNode, Reticulum reported the following error:\n\n[i]"+str(description)+"[/i]", text="While communicating with an RNode, Reticulum reported the following error:\n\n[i]"+str(description)+"[/i]",
buttons=[ yes_button ], buttons=[ yes_button ],
# elevation=0, # elevation=0,
) )
def dl_yes(s): def dl_yes(s):
self.hw_error_dialog.dismiss() self.hw_error_dialog.dismiss()
self.hw_error_dialog.is_open = False
yes_button.bind(on_release=dl_yes) yes_button.bind(on_release=dl_yes)
self.hw_error_dialog.open() self.hw_error_dialog.open()
self.hw_error_dialog.is_open = True
if self.root.ids.screen_manager.current == "messages_screen": if self.root.ids.screen_manager.current == "messages_screen":