From ab31542fd822c48a036218e47393299c620cb2ea Mon Sep 17 00:00:00 2001 From: geeksville Date: Mon, 30 Mar 2020 17:36:09 -0700 Subject: [PATCH] bootstrap the mesh service if someone sets our radio macaddr late --- .../mesh/service/RadioInterfaceService.kt | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/service/RadioInterfaceService.kt b/app/src/main/java/com/geeksville/mesh/service/RadioInterfaceService.kt index 6a3f4ea46..f834c4a46 100644 --- a/app/src/main/java/com/geeksville/mesh/service/RadioInterfaceService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/RadioInterfaceService.kt @@ -7,6 +7,7 @@ import android.bluetooth.BluetoothManager import android.content.Context import android.content.Intent import android.os.IBinder +import android.os.RemoteException import androidx.core.content.edit import com.geeksville.android.BinaryLogFile import com.geeksville.android.GeeksvilleApplication @@ -177,8 +178,15 @@ class RadioInterfaceService : Service(), Logging { ) // Force the service to reconnect - runningService?.let { - it.setEnabled(addr != null) + val s = runningService + if (s != null) { + info("Setting enable on the running radio service") + s.setEnabled(addr != null) + } else { + if (addr != null) { + info("We have a device addr now, starting mesh service") + MeshService.startService(context) + } } } } @@ -452,15 +460,17 @@ class RadioInterfaceService : Service(), Logging { override fun restartNodeInfo() = doWrite(BTM_NODEINFO_CHARACTER, ByteArray(0)) override fun readMyNode() = - doRead(BTM_MYNODE_CHARACTER) ?: throw Exception("Device returned empty MyNodeInfo") + doRead(BTM_MYNODE_CHARACTER) + ?: throw RemoteException("Device returned empty MyNodeInfo") override fun sendToRadio(a: ByteArray) = handleSendToRadio(a) override fun readRadioConfig() = - doRead(BTM_RADIO_CHARACTER) ?: throw Exception("Device returned empty RadioConfig") + doRead(BTM_RADIO_CHARACTER) + ?: throw RemoteException("Device returned empty RadioConfig") override fun readOwner() = - doRead(BTM_OWNER_CHARACTER) ?: throw Exception("Device returned empty Owner") + doRead(BTM_OWNER_CHARACTER) ?: throw RemoteException("Device returned empty Owner") override fun writeOwner(owner: ByteArray) = doWrite(BTM_OWNER_CHARACTER, owner)