From 390413bd8afe57a2cf21382445bcd8cb2f75a62f Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Fri, 5 Mar 2021 14:14:17 +0800 Subject: [PATCH] fix channel setting --- app/src/main/java/com/geeksville/mesh/MainActivity.kt | 3 +++ .../java/com/geeksville/mesh/service/MeshService.kt | 11 ++++++++++- .../java/com/geeksville/mesh/ui/ChannelFragment.kt | 3 +-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/MainActivity.kt b/app/src/main/java/com/geeksville/mesh/MainActivity.kt index 61127e5c..136169f6 100644 --- a/app/src/main/java/com/geeksville/mesh/MainActivity.kt +++ b/app/src/main/java/com/geeksville/mesh/MainActivity.kt @@ -667,6 +667,9 @@ class MainActivity : AppCompatActivity(), Logging, model.radioConfig.value = RadioConfigProtos.RadioConfig.parseFrom(service.radioConfig) + model.channels.value = + ChannelSet(AppOnlyProtos.ChannelSet.parseFrom(service.channels)) + updateNodesFromDevice() // we have a connection to our device now, do the channel change 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 01347877..5b61c8b5 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -542,7 +542,10 @@ class MeshService : Service(), Logging { }.build() } - TODO("Need to send channels to device") + debug("Sending channels to device") + asChannels.forEach { + setChannel(it) + } channels = asChannels.toTypedArray() } @@ -1387,6 +1390,12 @@ class MeshService : Service(), Logging { }) } + private fun setChannel(channel: ChannelProtos.Channel) { + sendToRadio(newMeshPacketTo(myNodeNum).buildAdminPacket(wantResponse = true) { + setChannel = channel + }) + } + /** * Start the modern (REV2) API configuration flow */ diff --git a/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt index ad7dbcc3..d4c5e830 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt @@ -78,7 +78,6 @@ class ChannelFragment : ScreenFragment("Channel"), Logging { /// Pull the latest data from the model (discarding any user edits) private fun setGUIfromModel() { - val radioConfig = model.radioConfig.value val channels = model.channels.value binding.editableCheckbox.isChecked = false // start locked @@ -231,7 +230,7 @@ class ChannelFragment : ScreenFragment("Channel"), Logging { shareChannel() } - model.radioConfig.observe(viewLifecycleOwner, { + model.channels.observe(viewLifecycleOwner, { setGUIfromModel() })