Hops Away implementation (#966)

* Initial Hops Away feature

* Generate our own hopsAway, comparing hopStart to hopLimit

* Remove import of hopsAway from device nodeInfo, as this only shows 0 when hopStart isn't included on packets (with this info, we can't differentiate between a node which is Hops Away but on old firmware, or nodes which are on new firmware but direct. Both are 0)

Check if hopStart is 0 but hopLimit is not 0, if true set hopsAway to -1.

Show nodes with hopsAway with -1 with a (!) appended to the RSSI details, to show this probably isn't true. (eg they are using old firmware)

Change the default of hopsAway to -1, until we know it is direct (0) or hops away (1+)

* tidy up: move from nested if else to when

* Revert Project_Default.xml

* Move hopsAway when block in to updateNodeInfo() block above it.

Move hopsAway var to end of NodeInfo Class.

Schema update due to change above.

* hopsAway now follows firmware implementation.
hopsAway now imported from radio (installNodeInfo)

* reformat

---------

Co-authored-by: andrekir <andrekir@pm.me>
This commit is contained in:
Dayle Drinkwater 2024-04-21 12:14:35 +01:00 committed by GitHub
parent 261af4be62
commit 47b2ecc8aa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 459 additions and 9 deletions

View file

@ -1019,8 +1019,12 @@ class MeshService : Service(), Logging {
updateNodeInfoTime(it, rxTime)
it.snr = packet.rxSnr
it.rssi = packet.rxRssi
}
// Generate our own hopsAway, comparing hopStart to hopLimit.
if (packet.hopStart != 0 && packet.hopLimit <= packet.hopStart) {
it.hopsAway = packet.hopStart - packet.hopLimit
}
}
handleReceivedData(packet)
}
}
@ -1314,6 +1318,7 @@ class MeshService : Service(), Logging {
}
it.channel = info.channel
it.hopsAway = info.hopsAway
}
}