From 902e2644057d5ce46397aa7100e8f34b0aee5dfd Mon Sep 17 00:00:00 2001 From: Vance Vagell Date: Mon, 20 Jan 2025 22:56:16 -0500 Subject: [PATCH] Bug fix for UHF implementation, where app restart would sometimes fail to apply the saved UHF/VHF setting properly, and it would think the firmware is not responding. --- .../vagell/kv4pht/radio/RadioAudioService.java | 10 ++++++---- .../com/vagell/kv4pht/ui/MainActivity.java | 18 +++++++++++++++++- .../kv4p_ht_esp32_wroom_32.ino | 2 -- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/android-src/KV4PHT/app/src/main/java/com/vagell/kv4pht/radio/RadioAudioService.java b/android-src/KV4PHT/app/src/main/java/com/vagell/kv4pht/radio/RadioAudioService.java index 76c84e4..a3e20b3 100644 --- a/android-src/KV4PHT/app/src/main/java/com/vagell/kv4pht/radio/RadioAudioService.java +++ b/android-src/KV4PHT/app/src/main/java/com/vagell/kv4pht/radio/RadioAudioService.java @@ -967,10 +967,12 @@ public void setRadioType(String radioType) { setMaxRadioFreq(UHF_MAX_FREQ); } - // Re-init connection to ESP32 so it knows what kind of module it has. - setMode(MODE_STARTUP); - checkedFirmwareVersion = false; - checkFirmwareVersion(); + if (mode != MODE_STARTUP) { + // Re-init connection to ESP32 so it knows what kind of module it has. + setMode(MODE_STARTUP); + checkedFirmwareVersion = false; + checkFirmwareVersion(); + } } } diff --git a/android-src/KV4PHT/app/src/main/java/com/vagell/kv4pht/ui/MainActivity.java b/android-src/KV4PHT/app/src/main/java/com/vagell/kv4pht/ui/MainActivity.java index c8ba6cf..68e0be6 100644 --- a/android-src/KV4PHT/app/src/main/java/com/vagell/kv4pht/ui/MainActivity.java +++ b/android-src/KV4PHT/app/src/main/java/com/vagell/kv4pht/ui/MainActivity.java @@ -496,7 +496,23 @@ public void forceTunedToFreq(String newFreqStr) { radioAudioService.setCallbacks(callbacks); radioAudioService.setChannelMemories(viewModel.getChannelMemories()); - radioAudioService.start(); + + // Can only retrieve moduleType from DB async, so we do that and tell radioAudioService. + threadPoolExecutor.execute(new Runnable() { + @Override + public void run() { + final AppSetting moduleTypeSetting = viewModel.appDb.appSettingDao().getByName("moduleType"); + + runOnUiThread(new Runnable() { + @Override + public void run() { + radioAudioService.setRadioType(moduleTypeSetting.value.equals("UHF") ? + RadioAudioService.RADIO_MODULE_UHF : RadioAudioService.RADIO_MODULE_VHF); + radioAudioService.start(); + } + }); + } + }); } @Override diff --git a/microcontroller-src/kv4p_ht_esp32_wroom_32/kv4p_ht_esp32_wroom_32.ino b/microcontroller-src/kv4p_ht_esp32_wroom_32/kv4p_ht_esp32_wroom_32.ino index 83b12dc..9584a5c 100644 --- a/microcontroller-src/kv4p_ht_esp32_wroom_32/kv4p_ht_esp32_wroom_32.ino +++ b/microcontroller-src/kv4p_ht_esp32_wroom_32/kv4p_ht_esp32_wroom_32.ino @@ -306,8 +306,6 @@ void loop() { Serial.write(VERSION_PREFIX, sizeof(VERSION_PREFIX)); // "VERSION" Serial.write(FIRMWARE_VER, sizeof(FIRMWARE_VER)); // "00000007" (or whatever) - - // Append radio module info to end, "f" (found) or "x" (can't contact module). uint8_t radioModuleStatusArray[1] = { radioModuleStatus }; Serial.write(radioModuleStatusArray, 1); // "f" (or "x" if there's a problem with radio module)