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

@ -35,7 +35,8 @@ class NodeInfoPreviewParameterProvider: PreviewParameterProvider<NodeInfo> {
shortName = "MM",
id = "mickeyMouseId",
hwModel = MeshProtos.HardwareModel.TBEAM
)
),
hopsAway = 0
)
private val minnieMouse = mickeyMouse.copy(
@ -48,7 +49,8 @@ class NodeInfoPreviewParameterProvider: PreviewParameterProvider<NodeInfo> {
),
snr = 12.5F,
rssi = -42,
position = null
position = null,
hopsAway = 1
)
private val donaldDuck = NodeInfo(
@ -81,7 +83,8 @@ class NodeInfoPreviewParameterProvider: PreviewParameterProvider<NodeInfo> {
gasResistance = 0.0F,
voltage = 3.7F,
current = 0.0F
)
),
hopsAway = 2
)
private val unknown = donaldDuck.copy(