mirror of
https://github.com/liberatedsystems/Sideband_CE.git
synced 2024-09-03 04:13:27 +02:00
Cleanup
This commit is contained in:
parent
acb67dc9a2
commit
8731be2293
@ -728,8 +728,9 @@ class SidebandApp(MDApp):
|
|||||||
if self.conversations_view != None:
|
if self.conversations_view != None:
|
||||||
self.conversations_view.update()
|
self.conversations_view.update()
|
||||||
|
|
||||||
if self.sideband.getstate("lxm_uri_ingest.result", allow_cache=True):
|
imr = self.sideband.getstate("lxm_uri_ingest.result", allow_cache=True)
|
||||||
info_text = self.sideband.getstate("lxm_uri_ingest.result", allow_cache=True)
|
if imr != None and imr != "None":
|
||||||
|
info_text = str(imr)
|
||||||
self.sideband.setstate("lxm_uri_ingest.result", False)
|
self.sideband.setstate("lxm_uri_ingest.result", False)
|
||||||
ok_button = MDRectangleFlatButton(text="OK",font_size=dp(18))
|
ok_button = MDRectangleFlatButton(text="OK",font_size=dp(18))
|
||||||
dialog = MDDialog(
|
dialog = MDDialog(
|
||||||
@ -744,8 +745,9 @@ class SidebandApp(MDApp):
|
|||||||
ok_button.bind(on_release=dl_ok)
|
ok_button.bind(on_release=dl_ok)
|
||||||
dialog.open()
|
dialog.open()
|
||||||
|
|
||||||
if self.sideband.getstate("hardware_operation.error", allow_cache=True):
|
hwe = self.sideband.getstate("hardware_operation.error", allow_cache=True)
|
||||||
info_text = self.sideband.getstate("hardware_operation.error", allow_cache=True)
|
if hwe != None and hwe != "None":
|
||||||
|
info_text = str(hwe)
|
||||||
self.sideband.setstate("hardware_operation.error", False)
|
self.sideband.setstate("hardware_operation.error", False)
|
||||||
ok_button = MDRectangleFlatButton(text="OK",font_size=dp(18))
|
ok_button = MDRectangleFlatButton(text="OK",font_size=dp(18))
|
||||||
dialog = MDDialog(
|
dialog = MDDialog(
|
||||||
@ -3467,6 +3469,12 @@ class SidebandApp(MDApp):
|
|||||||
if self.object_details_screen != None:
|
if self.object_details_screen != None:
|
||||||
context_dest = self.object_details_screen.object_hash
|
context_dest = self.object_details_screen.object_hash
|
||||||
if not self.object_details_screen.object_hash == self.sideband.lxmf_destination.hash:
|
if not self.object_details_screen.object_hash == self.sideband.lxmf_destination.hash:
|
||||||
|
if self.sideband.has_conversation(context_dest):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
self.sideband.create_conversation(context_dest)
|
||||||
|
self.sideband.setstate("app.flags.new_conversations", True)
|
||||||
|
|
||||||
self.open_conversation(context_dest)
|
self.open_conversation(context_dest)
|
||||||
|
|
||||||
def telemetry_send_update(self, sender=None):
|
def telemetry_send_update(self, sender=None):
|
||||||
|
@ -119,6 +119,7 @@ class SidebandCore():
|
|||||||
self.telemeter = None
|
self.telemeter = None
|
||||||
self.telemetry_running = False
|
self.telemetry_running = False
|
||||||
self.latest_telemetry = None
|
self.latest_telemetry = None
|
||||||
|
self.latest_packed_telemetry = None
|
||||||
self.telemetry_changes = 0
|
self.telemetry_changes = 0
|
||||||
self.pending_telemetry_send = False
|
self.pending_telemetry_send = False
|
||||||
self.pending_telemetry_send_try = 0
|
self.pending_telemetry_send_try = 0
|
||||||
@ -735,16 +736,20 @@ class SidebandCore():
|
|||||||
|
|
||||||
def should_send_telemetry(self, context_dest):
|
def should_send_telemetry(self, context_dest):
|
||||||
try:
|
try:
|
||||||
existing_conv = self._db_conversation(context_dest)
|
if self.config["telemetry_enabled"]:
|
||||||
if existing_conv != None:
|
existing_conv = self._db_conversation(context_dest)
|
||||||
cd = existing_conv["data"]
|
if existing_conv != None:
|
||||||
if cd != None and "telemetry" in cd and cd["telemetry"] == True:
|
cd = existing_conv["data"]
|
||||||
return True
|
if cd != None and "telemetry" in cd and cd["telemetry"] == True:
|
||||||
else:
|
|
||||||
if self.is_trusted(context_dest, conv_data=existing_conv) and self.config["telemetry_send_to_trusted"]:
|
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
if self.is_trusted(context_dest, conv_data=existing_conv) and self.config["telemetry_send_to_trusted"]:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@ -1015,13 +1020,15 @@ class SidebandCore():
|
|||||||
desired_method = LXMF.LXMessage.DIRECT
|
desired_method = LXMF.LXMessage.DIRECT
|
||||||
|
|
||||||
lxm_fields = self.get_message_fields(to_addr, is_authorized_telemetry_request=is_authorized_telemetry_request, signal_already_sent=True)
|
lxm_fields = self.get_message_fields(to_addr, is_authorized_telemetry_request=is_authorized_telemetry_request, signal_already_sent=True)
|
||||||
if lxm_fields == False:
|
if lxm_fields == False and stream == None:
|
||||||
return "already_sent"
|
return "already_sent"
|
||||||
|
|
||||||
if stream != None and len(stream) > 0:
|
if stream != None and len(stream) > 0:
|
||||||
|
if lxm_fields == False:
|
||||||
|
lxm_fields = {}
|
||||||
lxm_fields[LXMF.FIELD_TELEMETRY_STREAM] = stream
|
lxm_fields[LXMF.FIELD_TELEMETRY_STREAM] = stream
|
||||||
|
|
||||||
if lxm_fields != None and (LXMF.FIELD_TELEMETRY in lxm_fields or LXMF.FIELD_TELEMETRY_STREAM in lxm_fields):
|
if lxm_fields != None and lxm_fields != False and (LXMF.FIELD_TELEMETRY in lxm_fields or LXMF.FIELD_TELEMETRY_STREAM in lxm_fields):
|
||||||
if LXMF.FIELD_TELEMETRY in lxm_fields:
|
if LXMF.FIELD_TELEMETRY in lxm_fields:
|
||||||
telemeter = Telemeter.from_packed(lxm_fields[LXMF.FIELD_TELEMETRY])
|
telemeter = Telemeter.from_packed(lxm_fields[LXMF.FIELD_TELEMETRY])
|
||||||
telemetry_timebase = telemeter.read_all()["time"]["utc"]
|
telemetry_timebase = telemeter.read_all()["time"]["utc"]
|
||||||
@ -1654,27 +1661,31 @@ class SidebandCore():
|
|||||||
# TODO: Clean out these temporary values at some interval.
|
# TODO: Clean out these temporary values at some interval.
|
||||||
# Probably expire after 14 days or so.
|
# Probably expire after 14 days or so.
|
||||||
self.setpersistent("temp.peer_appearance."+RNS.hexrep(context_dest, delimit=False), ae)
|
self.setpersistent("temp.peer_appearance."+RNS.hexrep(context_dest, delimit=False), ae)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if not from_bulk_telemetry:
|
data_dict = conv["data"]
|
||||||
data_dict = conv["data"]
|
if data_dict == None:
|
||||||
if data_dict == None:
|
data_dict = {}
|
||||||
data_dict = {}
|
|
||||||
|
|
||||||
if not "appearance" in data_dict:
|
if not "appearance" in data_dict:
|
||||||
data_dict["appearance"] = None
|
data_dict["appearance"] = None
|
||||||
|
|
||||||
if data_dict["appearance"] != appearance:
|
if from_bulk_telemetry and data_dict["appearance"] != SidebandCore.DEFAULT_APPEARANCE:
|
||||||
data_dict["appearance"] = appearance
|
RNS.log("Aborting appearance update from bulk transfer, since conversation already has appearance set: "+str(appearance)+" / "+str(data_dict["appearance"]), RNS.LOG_DEBUG)
|
||||||
packed_dict = msgpack.packb(data_dict)
|
return
|
||||||
|
|
||||||
db = self.__db_connect()
|
if data_dict["appearance"] != appearance:
|
||||||
dbc = db.cursor()
|
data_dict["appearance"] = appearance
|
||||||
|
packed_dict = msgpack.packb(data_dict)
|
||||||
query = "UPDATE conv set data = ? where dest_context = ?"
|
|
||||||
data = (packed_dict, context_dest)
|
db = self.__db_connect()
|
||||||
dbc.execute(query, data)
|
dbc = db.cursor()
|
||||||
result = dbc.fetchall()
|
|
||||||
db.commit()
|
query = "UPDATE conv set data = ? where dest_context = ?"
|
||||||
|
data = (packed_dict, context_dest)
|
||||||
|
dbc.execute(query, data)
|
||||||
|
result = dbc.fetchall()
|
||||||
|
db.commit()
|
||||||
|
|
||||||
def _db_get_appearance(self, context_dest, conv = None, raw=False):
|
def _db_get_appearance(self, context_dest, conv = None, raw=False):
|
||||||
if context_dest == self.lxmf_destination.hash:
|
if context_dest == self.lxmf_destination.hash:
|
||||||
@ -1690,6 +1701,9 @@ class SidebandCore():
|
|||||||
data_dict = conv["data"]
|
data_dict = conv["data"]
|
||||||
else:
|
else:
|
||||||
data_dict = {}
|
data_dict = {}
|
||||||
|
|
||||||
|
if data_dict != None:
|
||||||
|
if not "appearance" in data_dict or data_dict["appearance"] == None:
|
||||||
apd = self.getpersistent("temp.peer_appearance."+RNS.hexrep(context_dest, delimit=False))
|
apd = self.getpersistent("temp.peer_appearance."+RNS.hexrep(context_dest, delimit=False))
|
||||||
if apd != None:
|
if apd != None:
|
||||||
try:
|
try:
|
||||||
@ -1698,7 +1712,6 @@ class SidebandCore():
|
|||||||
RNS.log("Could not get appearance data from database: "+str(e),RNS.LOG_ERROR)
|
RNS.log("Could not get appearance data from database: "+str(e),RNS.LOG_ERROR)
|
||||||
data_dict = None
|
data_dict = None
|
||||||
|
|
||||||
if data_dict != None:
|
|
||||||
try:
|
try:
|
||||||
if data_dict != None and "appearance" in data_dict:
|
if data_dict != None and "appearance" in data_dict:
|
||||||
def htf(cbytes):
|
def htf(cbytes):
|
||||||
@ -2098,16 +2111,21 @@ class SidebandCore():
|
|||||||
packed_telemetry = self._db_save_telemetry(context_dest, lxm.fields[LXMF.FIELD_TELEMETRY], physical_link=physical_link, source_dest=context_dest)
|
packed_telemetry = self._db_save_telemetry(context_dest, lxm.fields[LXMF.FIELD_TELEMETRY], physical_link=physical_link, source_dest=context_dest)
|
||||||
|
|
||||||
if LXMF.FIELD_TELEMETRY_STREAM in lxm.fields:
|
if LXMF.FIELD_TELEMETRY_STREAM in lxm.fields:
|
||||||
|
max_timebase = self.getpersistent(f"telemetry.{RNS.hexrep(context_dest, delimit=False)}.timebase") or 0
|
||||||
if lxm.fields[LXMF.FIELD_TELEMETRY_STREAM] != None and len(lxm.fields[LXMF.FIELD_TELEMETRY_STREAM]) > 0:
|
if lxm.fields[LXMF.FIELD_TELEMETRY_STREAM] != None and len(lxm.fields[LXMF.FIELD_TELEMETRY_STREAM]) > 0:
|
||||||
for telemetry_entry in lxm.fields[LXMF.FIELD_TELEMETRY_STREAM]:
|
for telemetry_entry in lxm.fields[LXMF.FIELD_TELEMETRY_STREAM]:
|
||||||
tsource = telemetry_entry[0]
|
tsource = telemetry_entry[0]
|
||||||
ttstamp = telemetry_entry[1]
|
ttstamp = telemetry_entry[1]
|
||||||
tpacked = telemetry_entry[2]
|
tpacked = telemetry_entry[2]
|
||||||
appearance = telemetry_entry[3]
|
appearance = telemetry_entry[3]
|
||||||
|
max_timebase = max(max_timebase, ttstamp)
|
||||||
if self._db_save_telemetry(tsource, tpacked, via = context_dest):
|
if self._db_save_telemetry(tsource, tpacked, via = context_dest):
|
||||||
RNS.log("Saved telemetry stream entry from "+RNS.prettyhexrep(tsource), RNS.LOG_WARNING)
|
RNS.log("Saved telemetry stream entry from "+RNS.prettyhexrep(tsource), RNS.LOG_DEBUG)
|
||||||
if appearance != None:
|
if appearance != None:
|
||||||
self._db_update_appearance(tsource, ttstamp, appearance, from_bulk_telemetry=True)
|
self._db_update_appearance(tsource, ttstamp, appearance, from_bulk_telemetry=True)
|
||||||
|
RNS.log("Updated appearance entry from "+RNS.prettyhexrep(tsource), RNS.LOG_DEBUG)
|
||||||
|
|
||||||
|
self.setpersistent(f"telemetry.{RNS.hexrep(context_dest, delimit=False)}.timebase", max_timebase)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
RNS.log("Received telemetry stream field with no data: "+str(lxm.fields[LXMF.FIELD_TELEMETRY_STREAM]), RNS.LOG_DEBUG)
|
RNS.log("Received telemetry stream field with no data: "+str(lxm.fields[LXMF.FIELD_TELEMETRY_STREAM]), RNS.LOG_DEBUG)
|
||||||
@ -3074,9 +3092,9 @@ class SidebandCore():
|
|||||||
telemeter = Telemeter.from_packed(self.latest_packed_telemetry)
|
telemeter = Telemeter.from_packed(self.latest_packed_telemetry)
|
||||||
telemetry_timebase = telemeter.read_all()["time"]["utc"]
|
telemetry_timebase = telemeter.read_all()["time"]["utc"]
|
||||||
if telemetry_timebase > (self.getpersistent(f"telemetry.{RNS.hexrep(context_dest, delimit=False)}.last_send_success_timebase") or 0):
|
if telemetry_timebase > (self.getpersistent(f"telemetry.{RNS.hexrep(context_dest, delimit=False)}.last_send_success_timebase") or 0):
|
||||||
RNS.log("Embedding telemetry in message since current telemetry is newer than latest successful timebase", RNS.LOG_DEBUG)
|
RNS.log("Embedding own telemetry in message since current telemetry is newer than latest successful timebase", RNS.LOG_DEBUG)
|
||||||
else:
|
else:
|
||||||
RNS.log("Not embedding telemetry in message since current telemetry is not newer than latest successful timebase", RNS.LOG_DEBUG)
|
RNS.log("Not embedding own telemetry in message since current telemetry is not newer than latest successful timebase", RNS.LOG_DEBUG)
|
||||||
send_telemetry = False
|
send_telemetry = False
|
||||||
send_appearance = False
|
send_appearance = False
|
||||||
if signal_already_sent:
|
if signal_already_sent:
|
||||||
|
@ -29,8 +29,6 @@ class Announces():
|
|||||||
self.list = None
|
self.list = None
|
||||||
|
|
||||||
if not self.app.root.ids.screen_manager.has_screen("announces_screen"):
|
if not self.app.root.ids.screen_manager.has_screen("announces_screen"):
|
||||||
# TODO: Remove
|
|
||||||
RNS.log("Adding announces screen", RNS.LOG_WARNING)
|
|
||||||
self.screen = Builder.load_string(layout_announces_screen)
|
self.screen = Builder.load_string(layout_announces_screen)
|
||||||
self.screen.app = self.app
|
self.screen.app = self.app
|
||||||
self.ids = self.screen.ids
|
self.ids = self.screen.ids
|
||||||
|
@ -341,7 +341,7 @@ class RVDetails(MDRecycleView):
|
|||||||
else:
|
else:
|
||||||
if via != None and via == by:
|
if via != None and via == by:
|
||||||
vstr = self.app.sideband.peer_display_name(via)
|
vstr = self.app.sideband.peer_display_name(via)
|
||||||
formatted_values = f"Received from and collected by [b]{vstr}[/b]"
|
formatted_values = f"Received from, and collected by [b]{vstr}[/b]"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if via != None:
|
if via != None:
|
||||||
@ -421,12 +421,20 @@ class RVDetails(MDRecycleView):
|
|||||||
else:
|
else:
|
||||||
alt_str = RNS.prettydistance(alt)
|
alt_str = RNS.prettydistance(alt)
|
||||||
formatted_values = f"Coordinates [b]{fcoords}[/b], altitude [b]{alt_str}[/b]"
|
formatted_values = f"Coordinates [b]{fcoords}[/b], altitude [b]{alt_str}[/b]"
|
||||||
speed_formatted_values = f"Speed [b]{speed} Km/h[/b], heading [b]{heading}°[/b]"
|
if speed != None:
|
||||||
|
if speed > 0.000001:
|
||||||
|
speed_formatted_values = f"Speed [b]{speed} Km/h[/b], heading [b]{heading}°[/b]"
|
||||||
|
else:
|
||||||
|
speed_formatted_values = f"Speed [b]0 Km/h[/b]"
|
||||||
|
else:
|
||||||
|
speed_formatted_values = None
|
||||||
extra_formatted_values = f"Uncertainty [b]{accuracy} meters[/b]"+updated_str
|
extra_formatted_values = f"Uncertainty [b]{accuracy} meters[/b]"+updated_str
|
||||||
|
|
||||||
data = {"icon": s["icon"], "text": f"{formatted_values}"}
|
data = {"icon": s["icon"], "text": f"{formatted_values}"}
|
||||||
|
|
||||||
extra_entries.append({"icon": "map-marker-question", "text": extra_formatted_values})
|
extra_entries.append({"icon": "map-marker-question", "text": extra_formatted_values})
|
||||||
|
if speed_formatted_values != None:
|
||||||
|
extra_entries.append({"icon": "speedometer", "text": speed_formatted_values})
|
||||||
|
|
||||||
if "distance" in s:
|
if "distance" in s:
|
||||||
if "orthodromic" in s["distance"]:
|
if "orthodromic" in s["distance"]:
|
||||||
@ -513,8 +521,6 @@ class RVDetails(MDRecycleView):
|
|||||||
|
|
||||||
extra_entries.append({"icon": rh_icon, "text": rh_formatted_text})
|
extra_entries.append({"icon": rh_icon, "text": rh_formatted_text})
|
||||||
|
|
||||||
extra_entries.append({"icon": "speedometer", "text": speed_formatted_values})
|
|
||||||
|
|
||||||
def select(e=None):
|
def select(e=None):
|
||||||
geo_uri = f"geo:{lat},{lon}"
|
geo_uri = f"geo:{lat},{lon}"
|
||||||
def lj():
|
def lj():
|
||||||
|
@ -22,6 +22,7 @@ from datetime import datetime
|
|||||||
|
|
||||||
if RNS.vendor.platformutils.get_platform() == "android":
|
if RNS.vendor.platformutils.get_platform() == "android":
|
||||||
from ui.helpers import ts_format
|
from ui.helpers import ts_format
|
||||||
|
from android.permissions import request_permissions, check_permission
|
||||||
else:
|
else:
|
||||||
from .helpers import ts_format
|
from .helpers import ts_format
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user