mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
fix : avoid our node to be a relaynode candidate (#4037)
This commit is contained in:
parent
9833795864
commit
d8a1f88bda
3 changed files with 20 additions and 5 deletions
|
|
@ -82,15 +82,23 @@ data class Packet(
|
|||
companion object {
|
||||
const val RELAY_NODE_SUFFIX_MASK = 0xFF
|
||||
|
||||
fun getRelayNode(relayNodeId: Int, nodes: List<Node>): Node? {
|
||||
fun getRelayNode(relayNodeId: Int, nodes: List<Node>, ourNodeNum: Int?): Node? {
|
||||
val relayNodeIdSuffix = relayNodeId and RELAY_NODE_SUFFIX_MASK
|
||||
val candidateRelayNodes = nodes.filter { (it.num and RELAY_NODE_SUFFIX_MASK) == relayNodeIdSuffix }
|
||||
|
||||
val candidateRelayNodes =
|
||||
nodes.filter {
|
||||
it.num != ourNodeNum &&
|
||||
it.lastHeard != 0 &&
|
||||
(it.num and RELAY_NODE_SUFFIX_MASK) == relayNodeIdSuffix
|
||||
}
|
||||
|
||||
val closestRelayNode =
|
||||
if (candidateRelayNodes.size == 1) {
|
||||
candidateRelayNodes.first()
|
||||
} else {
|
||||
candidateRelayNodes.minByOrNull { it.hopsAway }
|
||||
}
|
||||
|
||||
return closestRelayNode
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue