package com.geeksville.mesh import android.os.Parcel import android.os.Parcelable import kotlinx.serialization.Serializable // MyNodeInfo sent via special protobuf from radio @Serializable data class MyNodeInfo( val myNodeNum: Int, val hasGPS: Boolean, val region: String?, val model: String?, val firmwareVersion: String?, val couldUpdate: Boolean, // this application contains a software load we _could_ install if you want val shouldUpdate: Boolean, // this device has old firmware val currentPacketId: Long, val nodeNumBits: Int, val packetIdBits: Int, val messageTimeoutMsec: Int, val minAppVersion: Int ) : Parcelable { /** A human readable description of the software/hardware version */ val firmwareString: String get() = "$model $region/$firmwareVersion" constructor(parcel: Parcel) : this( parcel.readInt(), parcel.readByte() != 0.toByte(), parcel.readString(), parcel.readString(), parcel.readString(), parcel.readByte() != 0.toByte(), parcel.readByte() != 0.toByte(), parcel.readLong(), parcel.readInt(), parcel.readInt(), parcel.readInt(), parcel.readInt() ) { } override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeInt(myNodeNum) parcel.writeByte(if (hasGPS) 1 else 0) parcel.writeString(region) parcel.writeString(model) parcel.writeString(firmwareVersion) parcel.writeByte(if (couldUpdate) 1 else 0) parcel.writeByte(if (shouldUpdate) 1 else 0) parcel.writeLong(currentPacketId) parcel.writeInt(nodeNumBits) parcel.writeInt(packetIdBits) parcel.writeInt(messageTimeoutMsec) parcel.writeInt(minAppVersion) } override fun describeContents(): Int { return 0 } companion object CREATOR : Parcelable.Creator { override fun createFromParcel(parcel: Parcel): MyNodeInfo { return MyNodeInfo(parcel) } override fun newArray(size: Int): Array { return arrayOfNulls(size) } } }