From fa17c4efe19a2cbe3945e6c49e381b0f96468424 Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Mon, 15 Mar 2021 10:31:44 +0800 Subject: [PATCH] fix new hwmodel based on testing with the simulator --- .../geeksville/mesh/service/MeshService.kt | 24 +++++++++---------- .../geeksville/mesh/service/MockInterface.kt | 2 +- .../geeksville/mesh/ui/SettingsFragment.kt | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) 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 a9860cbfd..ca3e479c2 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -375,10 +375,10 @@ class MeshService : Service(), Logging { } } - private fun installNewNodeDB(newMyNodeInfo: MyNodeInfo, nodes: Array) { + private fun installNewNodeDB(ni: MyNodeInfo, nodes: Array) { discardNodeDB() // Get rid of any old state - myNodeInfo = newMyNodeInfo + myNodeInfo = ni // put our node array into our two different map representations nodeDBbyNodeNum.putAll(nodes.map { Pair(it.num, it) }) @@ -1228,15 +1228,13 @@ class MeshService : Service(), Logging { val isBluetoothInterface = a != null && a.startsWith("x") var hwModelStr = myInfo.hwModelDeprecated - if(hwModelStr.isEmpty()) { - try { - val ni = toNodeInfo(myNodeNum) - val asStr = ni.user?.hwModelString - if (asStr != null) - hwModelStr = asStr - } catch(_: NodeNumNotFoundException) { - warn("Can't find local node to get hardware model") - } + if (hwModelStr.isEmpty()) { + val nodeNum = + myInfo.myNodeNum // Note: can't use the normal property because myNodeInfo not yet setup + val ni = nodeDBbyNodeNum[nodeNum] // can't use toNodeInfo because too early + val asStr = ni?.user?.hwModelString + if (asStr != null) + hwModelStr = asStr } val mi = with(myInfo) { MyNodeInfo( @@ -1397,7 +1395,7 @@ class MeshService : Service(), Logging { else { discardNodeDB() debug("Installing new node DB") - myNodeInfo = newMyNodeInfo + myNodeInfo = newMyNodeInfo// Install myNodeInfo as current newNodes.forEach(::installNodeInfo) newNodes.clear() // Just to save RAM ;-) @@ -1405,6 +1403,8 @@ class MeshService : Service(), Logging { haveNodeDB = true // we now have nodes from real hardware regenMyNodeInfo() // we have a node db now, so can possibly find a better hwmodel + myNodeInfo = newMyNodeInfo // we might have just updated myNodeInfo + sendAnalytics() requestRadioConfig() diff --git a/app/src/main/java/com/geeksville/mesh/service/MockInterface.kt b/app/src/main/java/com/geeksville/mesh/service/MockInterface.kt index edaa0c462..80d4495be 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MockInterface.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MockInterface.kt @@ -162,7 +162,7 @@ class MockInterface(private val service: RadioInterfaceService) : Logging, IRadi myInfo = MeshProtos.MyNodeInfo.newBuilder().apply { myNodeNum = MY_NODE messageTimeoutMsec = 5 * 60 * 1000 - firmwareVersion = service.getString(R.string.cur_firmware_version) + firmwareVersion = "1.2.8" // Pretend to be running an older 1.2 version numBands = 13 maxChannels = 8 }.build() diff --git a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt index 46b780ecf..fde6466bd 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt @@ -610,7 +610,7 @@ class SettingsFragment : ScreenFragment("Settings"), Logging { statusText.text = getString(R.string.must_set_region) connected == MeshService.ConnectionState.CONNECTED -> { - val fwStr = info?.firmwareString ?: "" + val fwStr = info?.firmwareString ?: "unknown" statusText.text = getString(R.string.connected_to).format(fwStr) } connected == MeshService.ConnectionState.DISCONNECTED ->