diff --git a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt index 47b05ffd..6d7f8e3c 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -473,7 +473,7 @@ class MeshService : Service(), Logging { } // given a nodeNum, return a db entry - creating if necessary - private fun getOrCreateNodeInfo(n: Int) = nodeDBbyNodeNum.getOrPut(n) { + private fun getOrCreateNodeInfo(n: Int, channel: Int = 0) = nodeDBbyNodeNum.getOrPut(n) { val userId = DataPacket.nodeNumToDefaultId(n) val defaultUser = user { id = userId @@ -486,6 +486,7 @@ class MeshService : Service(), Logging { num = n, user = defaultUser, longName = defaultUser.longName, + channel = channel, ) } @@ -527,9 +528,10 @@ class MeshService : Service(), Logging { private inline fun updateNodeInfo( nodeNum: Int, withBroadcast: Boolean = true, + channel: Int = 0, crossinline updateFn: (NodeEntity) -> Unit, ) { - val info = getOrCreateNodeInfo(nodeNum) + val info = getOrCreateNodeInfo(nodeNum, channel) updateFn(info) if (info.user.id.isNotEmpty() && haveNodeDB) { @@ -1174,7 +1176,7 @@ class MeshService : Service(), Logging { // Do not generate redundant broadcasts of node change for this bookkeeping updateNodeInfo call // because apps really only care about important updates of node state - which handledReceivedData will give them - updateNodeInfo(fromNum, withBroadcast = false) { + updateNodeInfo(fromNum, withBroadcast = false, channel = packet.channel) { // Update our last seen based on any valid timestamps. If the device didn't provide a timestamp make one it.lastHeard = packet.rxTime it.snr = packet.rxSnr