From 9ef510d8485ab68f5b53789d9c42d478d60e1df3 Mon Sep 17 00:00:00 2001 From: pascallanger Date: Thu, 16 Jul 2020 09:27:56 +0200 Subject: [PATCH] Update DSM autobind behavior (#7820) Authored-by: Pascal Langer --- radio/src/telemetry/spektrum.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/radio/src/telemetry/spektrum.cpp b/radio/src/telemetry/spektrum.cpp index 285cd8ac2..aab694db0 100644 --- a/radio/src/telemetry/spektrum.cpp +++ b/radio/src/telemetry/spektrum.cpp @@ -497,7 +497,6 @@ void processDSMBindPacket(uint8_t module, const uint8_t *packet) else if (channels < 3) { channels = 3; } - g_model.moduleData[module].channelsCount = channels - 8; switch(packet[6]) { case 0xa2: @@ -505,6 +504,9 @@ void processDSMBindPacket(uint8_t module, const uint8_t *packet) break; case 0x12: g_model.moduleData[module].subType = MM_RF_DSM2_SUBTYPE_DSM2_11; + if (channels == 7) { + channels = 12; // change the number of channels if 7 + } break; case 0x01: case 0x02: @@ -512,8 +514,15 @@ void processDSMBindPacket(uint8_t module, const uint8_t *packet) break; default: // 0xb2 or unknown g_model.moduleData[module].subType = MM_RF_DSM2_SUBTYPE_DSMX_11; + if (channels == 7) { + channels = 12; // change the number of channels if 7 + } break; } + + g_model.moduleData[module].channelsCount = channels - 8; + g_model.moduleData[module].multi.optionValue &= 0xFD; // clear the 11ms servo refresh rate flag + storageDirty(EE_MODEL); }