From a306c4466dfbf368f756cb7918c57ae64c0190b6 Mon Sep 17 00:00:00 2001 From: geeksville Date: Sun, 26 Jan 2020 10:44:42 -0800 Subject: [PATCH] pass pack exceptions via RemoteExceptions --- .../main/aidl/com/geeksville/mesh/IMeshService.aidl | 10 +++++----- app/src/main/java/com/geeksville/mesh/MeshService.kt | 11 +++++------ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl b/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl index 8a7215cb..a07ccf40 100644 --- a/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl +++ b/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl @@ -3,22 +3,22 @@ package com.geeksville.mesh; // Declare any non-default types here with import statements +/** +* Note - these calls might throw RemoteException to indicate mesh error states +*/ interface IMeshService { /** * Set the ID info for this node - @return null for success, or an error message for failure */ - String setOwner(String myId, String longName, String shortName); + void setOwner(String myId, String longName, String shortName); /* Send an opaque packet to a specified node name typ is defined in mesh.proto Data.Type. For now juse use 0 to mean opaque bytes. - - @return null for success, or an error message for failure */ - String sendData(String destId, in byte[] payload, int typ); + void sendData(String destId, in byte[] payload, int typ); /** Get the IDs of everyone on the mesh. You should also subscribe for NODE_CHANGE broadcasts. diff --git a/app/src/main/java/com/geeksville/mesh/MeshService.kt b/app/src/main/java/com/geeksville/mesh/MeshService.kt index d435e26d..57396f69 100644 --- a/app/src/main/java/com/geeksville/mesh/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/MeshService.kt @@ -9,9 +9,8 @@ import android.os.IBinder import com.geeksville.android.Logging import com.geeksville.mesh.MeshProtos.MeshPacket import com.geeksville.mesh.MeshProtos.ToRadio -import com.geeksville.util.exceptionReporter -import com.geeksville.util.exceptionsToStrings import com.geeksville.util.toOneLineString +import com.geeksville.util.toRemoteExceptions import com.google.protobuf.ByteString import java.nio.charset.Charset @@ -292,7 +291,7 @@ class MeshService : Service(), Logging { // per https://blog.classycode.com/dealing-with-exceptions-in-aidl-9ba904c6d63 override fun setOwner(myId: String, longName: String, shortName: String) = - exceptionsToStrings { + toRemoteExceptions { error("TODO setOwner $myId : $longName : $shortName") val user = MeshProtos.User.newBuilder().also { @@ -312,7 +311,7 @@ class MeshService : Service(), Logging { } override fun sendData(destId: String, payloadIn: ByteArray, typ: Int) = - exceptionsToStrings { + toRemoteExceptions { info("sendData $destId <- ${payloadIn.size} bytes") // encapsulate our payload in the proper protobufs and fire it off @@ -328,14 +327,14 @@ class MeshService : Service(), Logging { }) } - override fun getOnline(): Array = exceptionReporter { + override fun getOnline(): Array = toRemoteExceptions { val r = nodeDBbyID.keys.toTypedArray() info("in getOnline, count=${r.size}") // return arrayOf("+16508675309") r } - override fun isConnected(): Boolean = exceptionReporter { + override fun isConnected(): Boolean = toRemoteExceptions { val r = this@MeshService.isConnected info("in isConnected=r") r