Added airtime config options, improved periodic data persist

This commit is contained in:
Mark Qvist 2023-09-13 20:07:07 +02:00
parent 25178d8f50
commit 18b952e612
1 changed files with 21 additions and 3 deletions

View File

@ -133,6 +133,7 @@ class Reticulum:
JOB_INTERVAL = 5*60 JOB_INTERVAL = 5*60
CLEAN_INTERVAL = 15*60 CLEAN_INTERVAL = 15*60
PERSIST_INTERVAL = 60*60*12 PERSIST_INTERVAL = 60*60*12
GRACIOUS_PERSIST_INTERVAL = 60*5
router = None router = None
config = None config = None
@ -288,7 +289,6 @@ class Reticulum:
if now > self.last_data_persist+Reticulum.PERSIST_INTERVAL: if now > self.last_data_persist+Reticulum.PERSIST_INTERVAL:
self.__persist_data() self.__persist_data()
self.last_data_persist = time.time()
time.sleep(Reticulum.JOB_INTERVAL) time.sleep(Reticulum.JOB_INTERVAL)
@ -835,6 +835,8 @@ class Reticulum:
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
st_alock = float(c["airtime_limit_short"]) if "airtime_limit_short" in c else None
lt_alock = float(c["airtime_limit_long"]) if "airtime_limit_long" in c else None
port = c["port"] if "port" in c else None port = c["port"] if "port" in c else None
@ -852,7 +854,9 @@ class Reticulum:
cr = codingrate, cr = codingrate,
flow_control = flow_control, flow_control = flow_control,
id_interval = id_interval, id_interval = id_interval,
id_callsign = id_callsign id_callsign = id_callsign,
st_alock = st_alock,
lt_alock = lt_alock
) )
if "outgoing" in c and c.as_bool("outgoing") == False: if "outgoing" in c and c.as_bool("outgoing") == False:
@ -960,11 +964,13 @@ class Reticulum:
RNS.Transport.interfaces.append(interface) RNS.Transport.interfaces.append(interface)
def _should_persist_data(self): def _should_persist_data(self):
self.__persist_data() if time.time() > self.last_data_persist+Reticulum.GRACIOUS_PERSIST_INTERVAL:
self.__persist_data()
def __persist_data(self): def __persist_data(self):
RNS.Transport.persist_data() RNS.Transport.persist_data()
RNS.Identity.persist_data() RNS.Identity.persist_data()
self.last_data_persist = time.time()
def __clean_caches(self): def __clean_caches(self):
RNS.log("Cleaning resource and packet caches...", RNS.LOG_EXTREME) RNS.log("Cleaning resource and packet caches...", RNS.LOG_EXTREME)
@ -1089,6 +1095,18 @@ class Reticulum:
else: else:
ifstats["tunnelstate"] = None ifstats["tunnelstate"] = None
if hasattr(interface, "r_airtime_short"):
ifstats["airtime_short"] = interface.r_airtime_short
if hasattr(interface, "r_airtime_long"):
ifstats["airtime_long"] = interface.r_airtime_long
if hasattr(interface, "r_channel_load_short"):
ifstats["channel_load_short"] = interface.r_channel_load_short
if hasattr(interface, "r_channel_load_long"):
ifstats["channel_load_long"] = interface.r_channel_load_long
if hasattr(interface, "bitrate"): if hasattr(interface, "bitrate"):
if interface.bitrate != None: if interface.bitrate != None:
ifstats["bitrate"] = interface.bitrate ifstats["bitrate"] = interface.bitrate