From fd86014308081cef876774b5c3d2b0d605976bca Mon Sep 17 00:00:00 2001 From: Dominic Clifton Date: Thu, 8 Jan 2015 06:43:35 +0000 Subject: [PATCH] Update RX_MSP to support 18 channels. Fix MSP_SET_RAW_RC / channel mapping problem. --- src/main/io/serial_msp.c | 14 ++++++++++---- src/main/rx/rx.c | 4 ++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/io/serial_msp.c b/src/main/io/serial_msp.c index b43409bf5..8e5382aaf 100644 --- a/src/main/io/serial_msp.c +++ b/src/main/io/serial_msp.c @@ -1145,10 +1145,16 @@ static bool processInCommand(void) magHold = read16(); break; case MSP_SET_RAW_RC: - // FIXME need support for more than 8 channels - for (i = 0; i < 8; i++) - rcData[i] = read16(); - rxMspFrameRecieve(); + { + uint8_t channelCount = currentPort->dataSize / sizeof(uint16_t); + if (channelCount > MAX_SUPPORTED_RC_CHANNEL_COUNT) { + headSerialError(0); + } else { + for (i = 0; i < channelCount; i++) + rcData[i] = read16(); + rxMspFrameRecieve(); + } + } break; case MSP_SET_ACC_TRIM: currentProfile->accelerometerTrims.values.pitch = read16(); diff --git a/src/main/rx/rx.c b/src/main/rx/rx.c index 60ebc9726..648305731 100644 --- a/src/main/rx/rx.c +++ b/src/main/rx/rx.c @@ -265,6 +265,10 @@ void processRxChannels(void) { uint8_t chan; + if (feature(FEATURE_RX_MSP)) { + return; // rcData will have already been updated by MSP_SET_RAW_RC + } + bool shouldCheckPulse = true; if (feature(FEATURE_FAILSAFE) && feature(FEATURE_RX_PPM)) { -- 2.11.4.GIT