From 34a8e676d1c131d18be9bfa10785a540a3ab6689 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 10 Mar 2019 09:33:47 +0100 Subject: [PATCH] Options debug continued (not finished) --- radio/src/gui/128x64/model_setup.cpp | 28 +++++++++++++++++++++++----- radio/src/pulses/pxx2.cpp | 2 ++ radio/src/telemetry/frsky_pxx2.cpp | 14 ++++++++------ 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 3ea09b3c1..293c65cd0 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1933,10 +1933,12 @@ void menuModelReceiverOptions(event_t event) drawReceiverName(FW * 13, 0, reusableBuffer.receiverSetup.receiverId); lcdInvertLine(0); - if (event == EVT_ENTRY || (reusableBuffer.receiverSetup.state == 0x00 && get_tmr10ms() >= reusableBuffer.receiverSetup.updateTime)) { + if (event == EVT_ENTRY || (reusableBuffer.receiverSetup.state == 0xFF && get_tmr10ms() >= reusableBuffer.receiverSetup.updateTime)) { reusableBuffer.receiverSetup.updateTime = get_tmr10ms() + 500/*5s*/; reusableBuffer.receiverSetup.timeout = 0; + reusableBuffer.receiverSetup.state = 0x00; // Get options moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_RECEIVER_SETTINGS; + TRACE("GET polling"); } #if defined(SIMU) @@ -1944,7 +1946,9 @@ void menuModelReceiverOptions(event_t event) #endif if (reusableBuffer.receiverSetup.state != 0) { + bool changed = false; for (uint8_t k=0; k0 ? BLINK|INVERS : INVERS) : 0); @@ -1954,10 +1958,19 @@ void menuModelReceiverOptions(event_t event) switch (i) { case ITEM_RECEIVER_TELEMETRY: - reusableBuffer.receiverSetup.telemetryEnabled = editCheckBox(reusableBuffer.receiverSetup.telemetryEnabled , RECEIVER_OPTIONS_2ND_COLUMN, y, "Telemetry", attr, event); + previousValue = reusableBuffer.receiverSetup.telemetryEnabled; + reusableBuffer.receiverSetup.telemetryEnabled = editCheckBox(reusableBuffer.receiverSetup.telemetryEnabled, RECEIVER_OPTIONS_2ND_COLUMN, y, + "Telemetry", attr, event); + if (previousValue != reusableBuffer.receiverSetup.telemetryEnabled) + changed = true; break; + + case ITEM_RECEIVER_PWM_RATE: - reusableBuffer.receiverSetup.pwmRate = editCheckBox(reusableBuffer.receiverSetup.pwmRate , RECEIVER_OPTIONS_2ND_COLUMN, y, "9ms PWM", attr, event); + previousValue = reusableBuffer.receiverSetup.pwmRate; + reusableBuffer.receiverSetup.pwmRate = editCheckBox(reusableBuffer.receiverSetup.pwmRate, RECEIVER_OPTIONS_2ND_COLUMN, y, "9ms PWM", attr, event); + if (previousValue != reusableBuffer.receiverSetup.telemetryEnabled) + changed = true; break; default: @@ -1971,8 +1984,7 @@ void menuModelReceiverOptions(event_t event) channel = checkIncDec(event, channel, 0, sentModuleChannels(g_moduleIdx)); if (checkIncDec_Ret) { reusableBuffer.receiverSetup.channelMapping[pin] = channel; - reusableBuffer.receiverSetup.state = 0x40; - moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_RECEIVER_SETTINGS; + changed = true; } } } @@ -1989,6 +2001,12 @@ void menuModelReceiverOptions(event_t event) break; } } + if (changed) { + reusableBuffer.receiverSetup.state = 0x40; // Set options + reusableBuffer.receiverSetup.timeout = 0; + moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_RECEIVER_SETTINGS; + TRACE("CHange detected, sending SET"); + } } else { lcdDrawText(4 * FW, 4 * FH, "Waiting for RX..."); diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp index fa4947249..54c41cdcc 100644 --- a/radio/src/pulses/pxx2.cpp +++ b/radio/src/pulses/pxx2.cpp @@ -147,11 +147,13 @@ void Pxx2Pulses::setupReceiverSettingsFrame(uint8_t module) if (reusableBuffer.receiverSetup.timeout) { if (get_tmr10ms() > reusableBuffer.receiverSetup.timeout) { reusableBuffer.receiverSetup.timeout = 0; + reusableBuffer.receiverSetup.state = 0xFF; moduleSettings[module].mode = MODULE_MODE_NORMAL; } setupChannelsFrame(module); } else { + TRACE("Frame is %d", reusableBuffer.receiverSetup.state); addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_RX_SETTINGS); Pxx2Transport::addByte(reusableBuffer.receiverSetup.state + reusableBuffer.receiverSetup.receiverId); uint8_t flag1 = 0; diff --git a/radio/src/telemetry/frsky_pxx2.cpp b/radio/src/telemetry/frsky_pxx2.cpp index dea10b66c..ab899e446 100644 --- a/radio/src/telemetry/frsky_pxx2.cpp +++ b/radio/src/telemetry/frsky_pxx2.cpp @@ -18,6 +18,7 @@ * GNU General Public License for more details. */ +#include #include "opentx.h" class Pxx2Telemetry @@ -64,13 +65,14 @@ void processReceiverSettingsFrame(uint8_t module, uint8_t * frame) if (moduleSettings[module].mode != MODULE_MODE_RECEIVER_SETTINGS) { return; } - - for (uint8_t pin=0; pin<24; pin++) { - reusableBuffer.receiverSetup.channelMapping[pin] = frame[5 + pin]; + TRACE("Processing Frame"); + if (reusableBuffer.receiverSetup.state == 0x00) { + TRACE("Frame is GET"); + for (uint8_t pin = 0; pin < 24; pin++) { + reusableBuffer.receiverSetup.channelMapping[pin] = frame[5 + pin]; + } + reusableBuffer.receiverSetup.pwmRate = frame[4] & 0x30; } - - reusableBuffer.receiverSetup.pwmRate = frame[4] & 0x30; - reusableBuffer.receiverSetup.state = 0xFF; moduleSettings[module].mode = MODULE_MODE_NORMAL; }