From 0f63835a7f4f4685a108be88b3e2604608ae1f7e Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Mon, 14 Dec 2020 21:30:00 +0800 Subject: [PATCH] get ready for the new short channelsettings --- .../java/com/geeksville/mesh/model/Channel.kt | 20 ++++++++++++++++++- app/src/main/proto | 2 +- build.gradle | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/model/Channel.kt b/app/src/main/java/com/geeksville/mesh/model/Channel.kt index e698dbccb..1af4da1e5 100644 --- a/app/src/main/java/com/geeksville/mesh/model/Channel.kt +++ b/app/src/main/java/com/geeksville/mesh/model/Channel.kt @@ -4,6 +4,7 @@ import android.graphics.Bitmap import android.net.Uri import android.util.Base64 import com.geeksville.mesh.MeshProtos +import com.google.protobuf.ByteString import com.google.zxing.BarcodeFormat import com.google.zxing.MultiFormatWriter import com.journeyapps.barcodescanner.BarcodeEncoder @@ -52,9 +53,26 @@ data class Channel( constructor(url: Uri) : this(urlToSettings(url)) - val name: String get() = settings.name + /// Return the name of our channel as a human readable string. If empty string, assume "Default" per mesh.proto spec + val name: String get() = if(settings.name.isEmpty()) defaultChannelName else settings.name val modemConfig: MeshProtos.ChannelSettings.ModemConfig get() = settings.modemConfig + val psk get() = if(settings.psk.size() != 1) + settings.psk // A standard PSK + else { + // One of our special 1 byte PSKs, see mesh.proto for docs. + val pskIndex = settings.psk.byteAt(0).toInt() + + if(pskIndex == 0) + ByteString.EMPTY // Treat as an empty PSK (no encryption) + else { + // Treat an index of 1 as the old channelDefaultKey and work up from there + val bytes = channelDefaultKey.clone() + bytes[bytes.size - 1] = (0xff and (bytes[bytes.size - 1] + pskIndex - 1)).toByte() + ByteString.copyFrom(bytes) + } + } + /** * Return a name that is formatted as #channename-suffix * diff --git a/app/src/main/proto b/app/src/main/proto index aac0044b2..8729bad7f 160000 --- a/app/src/main/proto +++ b/app/src/main/proto @@ -1 +1 @@ -Subproject commit aac0044b2dcca5daa86c6532c1d8c43475956d31 +Subproject commit 8729bad7f6cfa461be02e3ea65fbde29435b3fe3 diff --git a/build.gradle b/build.gradle index 4a2c8ff60..e0bb43c82 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.4.20' + ext.kotlin_version = '1.4.21' ext.coroutines_version = "1.3.9" repositories {