From 11459f7bb9cd6f37aabd13d597bdbee28b033384 Mon Sep 17 00:00:00 2001 From: mikeller Date: Thu, 23 Mar 2017 00:17:11 +1300 Subject: [PATCH] Reinstated 'MSP_BF_CONFIG' / 'MSP_SET_BF_CONFIG' as workaround to make it work with Betaflight configurator. --- src/main/fc/fc_msp.c | 34 ++++++++++++++++++++++++++++++++++ src/main/msp/msp_protocol.h | 7 ++++--- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/main/fc/fc_msp.c b/src/main/fc/fc_msp.c index 00a3e12c4..389d17184 100755 --- a/src/main/fc/fc_msp.c +++ b/src/main/fc/fc_msp.c @@ -1014,6 +1014,21 @@ static bool mspFcProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst, mspPostProcessFn sbufWriteData(dst, rxConfig()->rcmap, MAX_MAPPABLE_RX_INPUTS); break; + case MSP_BF_CONFIG: + sbufWriteU8(dst, mixerConfig()->mixerMode); + + sbufWriteU32(dst, featureMask()); + + sbufWriteU8(dst, rxConfig()->serialrx_provider); + + sbufWriteU16(dst, boardAlignment()->rollDegrees); + sbufWriteU16(dst, boardAlignment()->pitchDegrees); + sbufWriteU16(dst, boardAlignment()->yawDegrees); + + sbufWriteU16(dst, 0); // was currentMeterScale, see MSP_CURRENT_METER_CONFIG + sbufWriteU16(dst, 0); //was currentMeterOffset, see MSP_CURRENT_METER_CONFIG + break; + case MSP_CF_SERIAL_CONFIG: for (int i = 0; i < SERIAL_PORT_COUNT; i++) { if (!serialIsPortAvailable(serialConfig()->portConfigs[i].identifier)) { @@ -1881,6 +1896,25 @@ static mspResult_e mspFcProcessInCommand(uint8_t cmdMSP, sbuf_t *src) } break; + case MSP_SET_BF_CONFIG: +#ifdef USE_QUAD_MIXER_ONLY + sbufReadU8(src); // mixerMode ignored +#else + mixerConfigMutable()->mixerMode = sbufReadU8(src); // mixerMode +#endif + + featureClearAll(); + featureSet(sbufReadU32(src)); // features bitmap + + rxConfigMutable()->serialrx_provider = sbufReadU8(src); // serialrx_type + + boardAlignmentMutable()->rollDegrees = sbufReadU16(src); // board_align_roll + boardAlignmentMutable()->pitchDegrees = sbufReadU16(src); // board_align_pitch + boardAlignmentMutable()->yawDegrees = sbufReadU16(src); // board_align_ + sbufReadU16(src); // was currentMeterScale, see MSP_SET_CURRENT_METER_CONFIG + sbufReadU16(src); // was currentMeterOffset see MSP_SET_CURRENT_METER_CONFIG + break; + case MSP_SET_CF_SERIAL_CONFIG: { uint8_t portConfigSize = sizeof(uint8_t) + sizeof(uint16_t) + (sizeof(uint8_t) * 4); diff --git a/src/main/msp/msp_protocol.h b/src/main/msp/msp_protocol.h index 48ff9d2f1..badc00299 100644 --- a/src/main/msp/msp_protocol.h +++ b/src/main/msp/msp_protocol.h @@ -159,9 +159,10 @@ #define MSP_RX_MAP 64 //out message get channel map (also returns number of channels total) #define MSP_SET_RX_MAP 65 //in message set rx map, numchannels to set comes from MSP_RX_MAP -// Use more specific commands, e.g. MSP_FEATURE_CONFIG, MSP_BATTERY_CONFIG, etc. -// DEPRECATED -#define MSP_BF_CONFIG 66 //out message baseflight-specific settings that aren't covered elsewhere -// DEPRECATED -#define MSP_SET_BF_CONFIG 67 //in message baseflight-specific settings save +// FIXME - Provided for backwards compatibility with configurator code until configurator is updated. +// DEPRECATED - DO NOT USE "MSP_BF_CONFIG" and MSP_SET_BF_CONFIG. In Cleanflight, isolated commands already exist and should be used instead. +#define MSP_BF_CONFIG 66 //out message baseflight-specific settings that aren't covered elsewhere +#define MSP_SET_BF_CONFIG 67 //in message baseflight-specific settings save #define MSP_REBOOT 68 //in message reboot settings -- 2.11.4.GIT