From 3bc4454c0e237988a3af5bb053c23fe50c8d7599 Mon Sep 17 00:00:00 2001 From: niccellular <79813408+niccellular@users.noreply.github.com> Date: Fri, 21 Mar 2025 21:51:52 -0400 Subject: [PATCH] Expose wantAck in Mesh Packet (#1703) * Expose wantAck in Mesh Packet * Update DataPacket.kt * Update DataPacket.kt * Update DataPacket.kt * Update DataPacket.kt * Refactor: Change wantAck field type in DataPacket - Changed the `wantAck` field in `DataPacket` from `Int` to `Boolean`. - Updated read/write and equals/hashcode functions accordingly. * Update MeshService.kt * Update MeshService.kt --------- Co-authored-by: Ben Meadors Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com> --- app/src/main/java/com/geeksville/mesh/DataPacket.kt | 6 ++++++ .../main/java/com/geeksville/mesh/service/MeshService.kt | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/geeksville/mesh/DataPacket.kt b/app/src/main/java/com/geeksville/mesh/DataPacket.kt index 94c6d6f61..b855359bb 100644 --- a/app/src/main/java/com/geeksville/mesh/DataPacket.kt +++ b/app/src/main/java/com/geeksville/mesh/DataPacket.kt @@ -58,6 +58,7 @@ data class DataPacket( var status: MessageStatus? = MessageStatus.UNKNOWN, var hopLimit: Int = 0, var channel: Int = 0, // channel index + var wantAck: Boolean = true, // If true, the receiver should send an ack back ) : Parcelable { /** @@ -118,6 +119,7 @@ data class DataPacket( parcel.readParcelableCompat(MessageStatus::class.java.classLoader), parcel.readInt(), parcel.readInt(), + parcel.readInt() == 1, ) override fun equals(other: Any?): Boolean { @@ -135,6 +137,7 @@ data class DataPacket( if (!bytes!!.contentEquals(other.bytes!!)) return false if (status != other.status) return false if (hopLimit != other.hopLimit) return false + if (wantAck != other.wantAck) return false return true } @@ -149,6 +152,7 @@ data class DataPacket( result = 31 * result + status.hashCode() result = 31 * result + hopLimit result = 31 * result + channel + result = 31 * result + wantAck.hashCode() return result } @@ -162,6 +166,7 @@ data class DataPacket( parcel.writeParcelable(status, flags) parcel.writeInt(hopLimit) parcel.writeInt(channel) + parcel.writeInt(if (wantAck) 1 else 0) } override fun describeContents(): Int { @@ -179,6 +184,7 @@ data class DataPacket( status = parcel.readParcelableCompat(MessageStatus::class.java.classLoader) hopLimit = parcel.readInt() channel = parcel.readInt() + wantAck = parcel.readInt() == 1 } companion object CREATOR : Parcelable.Creator { 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 b9f944f33..2827bf9a7 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -655,6 +655,7 @@ class MeshService : Service(), Logging { bytes = data.payload.toByteArray(), hopLimit = packet.hopLimit, channel = if (packet.pkiEncrypted) DataPacket.PKC_CHANNEL_INDEX else packet.channel, + wantAck = packet.wantAck, ) } } @@ -662,7 +663,7 @@ class MeshService : Service(), Logging { private fun toMeshPacket(p: DataPacket): MeshPacket { return newMeshPacketTo(p.to!!).buildMeshPacket( id = p.id, - wantAck = true, + wantAck = p.wantAck, hopLimit = p.hopLimit, channel = p.channel, ) {