Merge pull request #740 from EdgeTX/pfeerick/issue465

Correctly turn off or restore MPM to normal after running spectrum analyser
This commit is contained in:
Raphael Coeffic
2021-09-17 11:40:36 +02:00
committed by GitHub
2 changed files with 20 additions and 12 deletions
@@ -1,7 +1,8 @@
/*
* Copyright (C) OpenTX
* Copyright (C) EdgeTX
*
* Based on code named
* opentx - https://github.com/opentx/opentx
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
@@ -200,6 +201,7 @@ RadioSpectrumAnalyser::RadioSpectrumAnalyser(uint8_t moduleIdx) :
Page(ICON_RADIO_TOOLS),
moduleIdx(moduleIdx)
{
setCloseHandler([=]() { stop(); });
init();
buildHeader(&header);
buildBody(&body);
@@ -221,10 +223,15 @@ void RadioSpectrumAnalyser::buildBody(FormWindow * window)
void RadioSpectrumAnalyser::init()
{
#if defined(INTERNAL_MODULE_MULTI)
if (moduleIdx == INTERNAL_MODULE && g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_NONE) {
reusableBuffer.spectrumAnalyser.moduleOFF = true;
setModuleType(INTERNAL_MODULE, MODULE_TYPE_MULTIMODULE);
}
if (moduleIdx == INTERNAL_MODULE &&
g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_NONE) {
reusableBuffer.spectrumAnalyser.moduleOFF = true;
// this needs to be set BEFORE the module is set to prevent proto list scanning
moduleState[moduleIdx].mode = MODULE_MODE_SPECTRUM_ANALYSER;
setModuleType(INTERNAL_MODULE, MODULE_TYPE_MULTIMODULE);
} else {
reusableBuffer.spectrumAnalyser.moduleOFF = false;
}
#endif
if (isModuleR9MAccess(moduleIdx)) {
@@ -261,15 +268,14 @@ void RadioSpectrumAnalyser::start()
void RadioSpectrumAnalyser::stop()
{
new MessageDialog(this, STR_MODULE, STR_STOPPING);
if (isModulePXX2(moduleIdx)) {
moduleState[moduleIdx].readModuleInformation(&reusableBuffer.moduleSetup.pxx2.moduleInformation, PXX2_HW_INFO_TX_ID, PXX2_HW_INFO_TX_ID);
}
else if (isModuleMultimodule(moduleIdx)) {
moduleState[moduleIdx].readModuleInformation(
&reusableBuffer.moduleSetup.pxx2.moduleInformation, PXX2_HW_INFO_TX_ID,
PXX2_HW_INFO_TX_ID);
} else if (isModuleMultimodule(moduleIdx)) {
moduleState[moduleIdx].mode = MODULE_MODE_NORMAL;
if (reusableBuffer.spectrumAnalyser.moduleOFF)
setModuleType(INTERNAL_MODULE, MODULE_TYPE_NONE);
else
moduleState[moduleIdx].mode = MODULE_MODE_NORMAL;
}
/* wait 1s to resume normal operation before leaving */
// watchdogSuspend(1000);
+3 -1
View File
@@ -205,7 +205,9 @@ void MultiRfProtocols::fillList(std::function<void(const RfProto&)> addProto) co
bool MultiRfProtocols::triggerScan()
{
if (scanState == ScanStop) {
if (scanState == ScanStop
&& moduleState[moduleIdx].mode == MODULE_MODE_NORMAL) {
proto2idx.clear();
protoList.clear();
scanState = ScanBegin;