From deb36b6647255d8d0e2019a7732145c399a18344 Mon Sep 17 00:00:00 2001 From: James Rich <2199651+jamesarich@users.noreply.github.com> Date: Sun, 29 Jun 2025 12:45:09 +0000 Subject: [PATCH] fix: Refactor BLE exceptions and handle ServiceAction exceptions (#2294) --- .../com/geeksville/mesh/service/BLEException.kt | 6 +++--- .../com/geeksville/mesh/service/MeshService.kt | 15 +++++++++------ .../mesh/service/RadioNotConnectedException.kt | 4 +++- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/service/BLEException.kt b/app/src/main/java/com/geeksville/mesh/service/BLEException.kt index fe3e60342..f434231a1 100644 --- a/app/src/main/java/com/geeksville/mesh/service/BLEException.kt +++ b/app/src/main/java/com/geeksville/mesh/service/BLEException.kt @@ -17,10 +17,10 @@ package com.geeksville.mesh.service -import java.io.IOException -import java.util.* +import android.os.RemoteException +import java.util.UUID -open class BLEException(msg: String) : IOException(msg) +open class BLEException(msg: String) : RemoteException(msg) open class BLECharacteristicNotFoundException(uuid: UUID) : BLEException("Can't get characteristic $uuid") 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 46dd2d7a9..02ef2b014 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -81,6 +81,7 @@ import com.geeksville.mesh.repository.radio.RadioServiceConnectionState import com.geeksville.mesh.telemetry import com.geeksville.mesh.user import com.geeksville.mesh.util.anonymize +import com.geeksville.mesh.util.ignoreException import com.geeksville.mesh.util.toOneLineString import com.geeksville.mesh.util.toPIIString import com.geeksville.mesh.util.toRemoteExceptions @@ -1932,12 +1933,14 @@ class MeshService : Service(), Logging { } private fun onServiceAction(action: ServiceAction) { - when (action) { - is ServiceAction.GetDeviceMetadata -> getDeviceMetadata(action.destNum) - is ServiceAction.Favorite -> favoriteNode(action.node) - is ServiceAction.Ignore -> ignoreNode(action.node) - is ServiceAction.Reaction -> sendReaction(action) - is ServiceAction.AddSharedContact -> importContact(action.contact) + ignoreException { + when (action) { + is ServiceAction.GetDeviceMetadata -> getDeviceMetadata(action.destNum) + is ServiceAction.Favorite -> favoriteNode(action.node) + is ServiceAction.Ignore -> ignoreNode(action.node) + is ServiceAction.Reaction -> sendReaction(action) + is ServiceAction.AddSharedContact -> importContact(action.contact) + } } } diff --git a/app/src/main/java/com/geeksville/mesh/service/RadioNotConnectedException.kt b/app/src/main/java/com/geeksville/mesh/service/RadioNotConnectedException.kt index da02f0e04..3390557c6 100644 --- a/app/src/main/java/com/geeksville/mesh/service/RadioNotConnectedException.kt +++ b/app/src/main/java/com/geeksville/mesh/service/RadioNotConnectedException.kt @@ -17,5 +17,7 @@ package com.geeksville.mesh.service +import android.os.RemoteException + open class RadioNotConnectedException(message: String = "Not connected to radio") : - BLEException(message) \ No newline at end of file + RemoteException(message) \ No newline at end of file