diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 57edeab45..1a8dff303 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1957,17 +1957,22 @@ void menuModelReceiverOptions(event_t event) case ITEM_RECEIVER_TELEMETRY: previousValue = reusableBuffer.receiverSetup.telemetryEnabled; reusableBuffer.receiverSetup.telemetryEnabled = editCheckBox(reusableBuffer.receiverSetup.telemetryEnabled, RECEIVER_OPTIONS_2ND_COLUMN, y, - "Telemetry", attr, event) & PXX2_RECV_OPTION_MASK_TELEMETRY; - if (previousValue != reusableBuffer.receiverSetup.telemetryEnabled) + "Telemetry", attr, event); + if (previousValue != reusableBuffer.receiverSetup.telemetryEnabled) { changed = true; + TRACE("TELEM CHANGED (%d , %d)", previousValue, reusableBuffer.receiverSetup.telemetryEnabled); + } break; case ITEM_RECEIVER_PWM_RATE: previousValue = reusableBuffer.receiverSetup.pwmRate; - reusableBuffer.receiverSetup.pwmRate = editCheckBox(reusableBuffer.receiverSetup.pwmRate, RECEIVER_OPTIONS_2ND_COLUMN, y, "9ms PWM", attr, event) & PXX2_RECV_OPTION_MASK_FASTPWM; - if (previousValue != reusableBuffer.receiverSetup.telemetryEnabled) + reusableBuffer.receiverSetup.pwmRate = editCheckBox(reusableBuffer.receiverSetup.pwmRate, RECEIVER_OPTIONS_2ND_COLUMN, y, "9ms PWM", attr, event); + TRACE("pwmRate : %d", reusableBuffer.receiverSetup.pwmRate); + if (previousValue != reusableBuffer.receiverSetup.pwmRate) { changed = true; + TRACE("pwmRate CHANGED (%d , %d)", previousValue, reusableBuffer.receiverSetup.pwmRate); + } break; default: @@ -2001,6 +2006,7 @@ void menuModelReceiverOptions(event_t event) if (changed) { reusableBuffer.receiverSetup.timeout = 0; moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_RECEIVER_SET_SETTINGS; + TRACE("Change detected"); } } else { diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp index 54bd9a06f..312403408 100644 --- a/radio/src/pulses/pxx2.cpp +++ b/radio/src/pulses/pxx2.cpp @@ -147,6 +147,7 @@ void Pxx2Pulses::setupRegisterFrame(uint8_t module) void Pxx2Pulses::setupReceiverSetSettingsFrame(uint8_t module) { + TRACE("Sending SET frame"); addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_RX_SETTINGS); Pxx2Transport::addByte(0x40 + reusableBuffer.receiverSetup.receiverId); uint8_t flag1 = 0; @@ -166,14 +167,12 @@ void Pxx2Pulses::setupReceiverSetSettingsFrame(uint8_t module) void Pxx2Pulses::setupReceiverGetSettingsFrame(uint8_t module) { + TRACE("Sending GET frame"); addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_RX_SETTINGS); Pxx2Transport::addByte(reusableBuffer.receiverSetup.state + reusableBuffer.receiverSetup.receiverId); - uint8_t flag1 = 0; - if (reusableBuffer.receiverSetup.pwmRate) - flag1 |= 0x10; - Pxx2Transport::addByte(flag1); + Pxx2Transport::addByte(0x00); for (int i = 0; i < 24; i++) { - Pxx2Transport::addByte(reusableBuffer.receiverSetup.channelMapping[i]); + Pxx2Transport::addByte(0x00); } reusableBuffer.receiverSetup.timeout = get_tmr10ms() + 20/*200ms*/; reusableBuffer.receiverSetup.state = RECEIVER_WAITING_RESPONSE; diff --git a/radio/src/telemetry/frsky_pxx2.cpp b/radio/src/telemetry/frsky_pxx2.cpp index 7df61e9f6..866af26c0 100644 --- a/radio/src/telemetry/frsky_pxx2.cpp +++ b/radio/src/telemetry/frsky_pxx2.cpp @@ -62,15 +62,17 @@ void processGetHardwareInfoFrame(uint8_t module, uint8_t * frame) void processReceiverSettingsFrame(uint8_t module, uint8_t * frame) { - if (reusableBuffer.receiverSetup.state == RECEIVER_WAITING_RESPONSE) { - for (uint8_t pin = 0; pin < 24; pin++) { - reusableBuffer.receiverSetup.channelMapping[pin] = frame[5 + pin]; - } - reusableBuffer.receiverSetup.pwmRate = frame[4] & 0x30; - reusableBuffer.receiverSetup.state = RECEIVER_OK; - reusableBuffer.receiverSetup.timeout = 0; - moduleSettings[module].mode = MODULE_MODE_NORMAL; + TRACE("Got Option frame"); + for (uint8_t pin = 0; pin < 24; pin++) { + reusableBuffer.receiverSetup.channelMapping[pin] = frame[5 + pin]; } + if(frame[4] & PXX2_RECV_OPTION_MASK_FASTPWM) + reusableBuffer.receiverSetup.pwmRate = 1; + if(frame[4] & PXX2_RECV_OPTION_MASK_TELEMETRY) + reusableBuffer.receiverSetup.telemetryEnabled = 1; + reusableBuffer.receiverSetup.state = RECEIVER_OK; + reusableBuffer.receiverSetup.timeout = 0; + moduleSettings[module].mode = MODULE_MODE_NORMAL; } void processRegisterFrame(uint8_t module, uint8_t * frame)