diff --git a/RNS/Interfaces/Interface.py b/RNS/Interfaces/Interface.py index 6a501121..9ddb0539 100755 --- a/RNS/Interfaces/Interface.py +++ b/RNS/Interfaces/Interface.py @@ -158,6 +158,11 @@ class Interface: self.ifac_violations = 0 self.packet_filter_hits = 0 + self.reports_phy_stats = False + self.r_stat_rssi = None + self.r_stat_snr = None + self.r_stat_q = None + def get_hash(self): if not self.__hash: self.__hash = RNS.Identity.full_hash(str(self).encode("utf-8")) return self.__hash diff --git a/RNS/Interfaces/RNodeInterface.py b/RNS/Interfaces/RNodeInterface.py index ed57cc48..42524bff 100644 --- a/RNS/Interfaces/RNodeInterface.py +++ b/RNS/Interfaces/RNodeInterface.py @@ -258,6 +258,7 @@ class RNodeInterface(Interface): self.r_stat_tx = None self.r_stat_rssi = None self.r_stat_snr = None + self.r_stat_q = None self.r_st_alock = None self.r_lt_alock = None self.r_random = None @@ -278,6 +279,7 @@ class RNodeInterface(Interface): self.r_noise_floor = None self.r_interference = None self.r_interference_l = None + self.reports_phy_stats = True self.r_battery_state = RNodeInterface.BATTERY_STATE_UNKNOWN self.r_battery_percent = 0 @@ -702,9 +704,6 @@ class RNodeInterface(Interface): def process_incoming(self, data): self.rxb += len(data) self.owner.inbound(data, self) - self.r_stat_rssi = None - self.r_stat_snr = None - def process_outgoing(self,data): datalen = len(data) diff --git a/RNS/Interfaces/RNodeMultiInterface.py b/RNS/Interfaces/RNodeMultiInterface.py index 424394f4..97b74abd 100644 --- a/RNS/Interfaces/RNodeMultiInterface.py +++ b/RNS/Interfaces/RNodeMultiInterface.py @@ -269,6 +269,7 @@ class RNodeMultiInterface(Interface): self.r_stat_tx = None self.r_stat_rssi = None self.r_stat_snr = None + self.r_stat_q = None self.r_st_alock = None self.r_lt_alock = None self.r_random = None @@ -276,6 +277,8 @@ class RNodeMultiInterface(Interface): self.packet_queue = [] self.interface_ready = False self.announce_rate_target = None + self.reports_phy_stats = True + self.validcfg = True if id_interval != None and id_callsign != None: @@ -1127,8 +1130,6 @@ class RNodeSubInterface(Interface): def process_incoming(self, data): self.rxb += len(data) self.owner.inbound(data, self) - self.r_stat_rssi = None - self.r_stat_snr = None def process_outgoing(self,data): if self.online: diff --git a/RNS/Transport.py b/RNS/Transport.py index 9ea62012..97630dc0 100755 --- a/RNS/Transport.py +++ b/RNS/Transport.py @@ -1909,21 +1909,19 @@ class Transport: if packet.receiving_interface != None: if not packet.receiving_interface.online: return - if hasattr(packet.receiving_interface, "r_stat_rssi"): + if packet.receiving_interface.reports_phy_stats: if packet.receiving_interface.r_stat_rssi != None: packet.rssi = packet.receiving_interface.r_stat_rssi Transport.local_client_rssi_cache.append([packet.packet_hash, packet.rssi]) while len(Transport.local_client_rssi_cache) > Transport.LOCAL_CLIENT_CACHE_MAXSIZE: Transport.local_client_rssi_cache.pop(0) - if hasattr(packet.receiving_interface, "r_stat_snr"): if packet.receiving_interface.r_stat_snr != None: packet.snr = packet.receiving_interface.r_stat_snr Transport.local_client_snr_cache.append([packet.packet_hash, packet.snr]) while len(Transport.local_client_snr_cache) > Transport.LOCAL_CLIENT_CACHE_MAXSIZE: Transport.local_client_snr_cache.pop(0) - if hasattr(packet.receiving_interface, "r_stat_q"): if packet.receiving_interface.r_stat_q != None: packet.q = packet.receiving_interface.r_stat_q Transport.local_client_q_cache.append([packet.packet_hash, packet.q])