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, ) {