diff --git a/src/main/flight/mixer.c b/src/main/flight/mixer.c index ac4381758d..252c621c52 100755 --- a/src/main/flight/mixer.c +++ b/src/main/flight/mixer.c @@ -370,27 +370,7 @@ int servoDirection(int servoIndex, int inputSource) } #endif -#ifndef USE_QUAD_MIXER_ONLY - -void loadCustomServoMixer(void) -{ - uint8_t i; - - // reset settings - servoRuleCount = 0; - memset(currentServoMixer, 0, sizeof(currentServoMixer)); - - // load custom mixer into currentServoMixer - for (i = 0; i < MAX_SERVO_RULES; i++) { - // check if done - if (customServoMixers[i].rate == 0) - break; - - currentServoMixer[i] = customServoMixers[i]; - servoRuleCount++; - } -} - +#ifdef USE_SERVOS void mixerInit(mixerMode_e mixerMode, motorMixer_t *initialCustomMotorMixers, servoMixer_t *initialCustomServoMixers) { currentMixerMode = mixerMode; @@ -409,7 +389,15 @@ void mixerInit(mixerMode_e mixerMode, motorMixer_t *initialCustomMotorMixers, se servo[i] = DEFAULT_SERVO_MIDDLE; } } +#else +void mixerInit(mixerMode_e mixerMode, motorMixer_t *initialCustomMixers) +{ + currentMixerMode = mixerMode; + customMixers = initialCustomMixers; +} +#endif +#ifdef USE_SERVOS void mixerUsePWMOutputConfiguration(pwmOutputConfiguration_t *pwmOutputConfiguration) { int i; @@ -474,8 +462,44 @@ void mixerUsePWMOutputConfiguration(pwmOutputConfiguration_t *pwmOutputConfigura mixerResetDisarmedMotors(); } +#else +void mixerUsePWMOutputConfiguration(pwmOutputConfiguration_t *pwmOutputConfiguration) +{ + UNUSED(pwmOutputConfiguration); + motorCount = 4; +#ifdef USE_SERVOS + servoCount = 0; +#endif + uint8_t i; + for (i = 0; i < motorCount; i++) { + currentMixer[i] = mixerQuadX[i]; + } + mixerResetDisarmedMotors(); +} +#endif +#ifndef USE_QUAD_MIXER_ONLY +#ifdef USE_SERVOS +void loadCustomServoMixer(void) +{ + uint8_t i; + + // reset settings + servoRuleCount = 0; + memset(currentServoMixer, 0, sizeof(currentServoMixer)); + + // load custom mixer into currentServoMixer + for (i = 0; i < MAX_SERVO_RULES; i++) { + // check if done + if (customServoMixers[i].rate == 0) + break; + + currentServoMixer[i] = customServoMixers[i]; + servoRuleCount++; + } +} + void servoMixerLoadMix(int index, servoMixer_t *customServoMixers) { int i; @@ -489,6 +513,8 @@ void servoMixerLoadMix(int index, servoMixer_t *customServoMixers) for (i = 0; i < servoMixers[index].servoRuleCount; i++) customServoMixers[i] = servoMixers[index].rule[i]; } +#endif + void mixerLoadMix(int index, motorMixer_t *customMixers) { @@ -507,30 +533,6 @@ void mixerLoadMix(int index, motorMixer_t *customMixers) } } -#else - -void mixerInit(mixerMode_e mixerMode, motorMixer_t *initialCustomMixers) -{ - currentMixerMode = mixerMode; - - customMixers = initialCustomMixers; -} - -void mixerUsePWMOutputConfiguration(pwmOutputConfiguration_t *pwmOutputConfiguration) -{ - UNUSED(pwmOutputConfiguration); - motorCount = 4; -#ifdef USE_SERVOS - servoCount = 0; -#endif - - uint8_t i; - for (i = 0; i < motorCount; i++) { - currentMixer[i] = mixerQuadX[i]; - } - - mixerResetDisarmedMotors(); -} #endif void mixerResetDisarmedMotors(void) @@ -661,6 +663,7 @@ void StopPwmAllMotors() } #ifndef USE_QUAD_MIXER_ONLY +#ifdef USE_SERVOS STATIC_UNIT_TESTED void servoMixer(void) { int16_t input[INPUT_SOURCE_COUNT]; // Range [-500:+500] @@ -737,7 +740,7 @@ STATIC_UNIT_TESTED void servoMixer(void) servo[i] += determineServoMiddleOrForwardFromChannel(i); } } - +#endif #endif void mixTable(void) @@ -823,7 +826,7 @@ void mixTable(void) // motor outputs are used as sources for servo mixing, so motors must be calculated before servos. -#if !defined(USE_QUAD_MIXER_ONLY) || defined(USE_SERVOS) +#if !defined(USE_QUAD_MIXER_ONLY) && defined(USE_SERVOS) // airplane / servo mixes switch (currentMixerMode) { diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index 1a2e240b3c..51dc598836 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -1608,7 +1608,7 @@ static void cliDump(char *cmdline) // print custom servo mixer if exists printf("smix reset\r\n"); - +#ifdef USE_SERVOS for (i = 0; i < MAX_SERVO_RULES; i++) { if (masterConfig.customServoMixer[i].rate == 0) @@ -1626,6 +1626,7 @@ static void cliDump(char *cmdline) ); } +#endif #endif cliPrint("\r\n\r\n# feature\r\n"); diff --git a/src/main/mw.c b/src/main/mw.c index e703b971c2..58707f36cf 100644 --- a/src/main/mw.c +++ b/src/main/mw.c @@ -794,7 +794,9 @@ void loop(void) // Allow yaw control for tricopters if the user wants the servo to move even when unarmed. if (isUsingSticksForArming() && rcData[THROTTLE] <= masterConfig.rxConfig.mincheck #ifndef USE_QUAD_MIXER_ONLY +#ifdef USE_SERVOS && !((masterConfig.mixerMode == MIXER_TRI || masterConfig.mixerMode == MIXER_CUSTOM_TRI) && masterConfig.mixerConfig.tri_unarmed_servo) +#endif && masterConfig.mixerMode != MIXER_AIRPLANE && masterConfig.mixerMode != MIXER_FLYING_WING #endif