diff --git a/src/main/config/config.c b/src/main/config/config.c index 4f66857f31..02525dda7a 100755 --- a/src/main/config/config.c +++ b/src/main/config/config.c @@ -366,11 +366,11 @@ static void resetMixerConfig(mixerConfig_t *mixerConfig) } #ifdef USE_SERVOS -static void resetServoConfig(servoConfig_t *servoConfig) +static void resetServoConfig(servoMixerConfig_t *servoMixerConfig) { - servoConfig->tri_unarmed_servo = 1; - servoConfig->servo_lowpass_freq = 400; - servoConfig->servo_lowpass_enable = 0; + servoMixerConfig->tri_unarmed_servo = 1; + servoMixerConfig->servo_lowpass_freq = 400; + servoMixerConfig->servo_lowpass_enable = 0; } #endif @@ -488,7 +488,7 @@ static void resetConf(void) resetMixerConfig(&masterConfig.mixerConfig); #ifdef USE_SERVOS - resetServoConfig(&masterConfig.servoConfig); + resetServoConfig(&masterConfig.servoMixerConfig); resetServoPwmConfig(&masterConfig.servoPwmConfig); #endif @@ -729,7 +729,7 @@ void activateConfig(void) mixerUseConfigs(&masterConfig.flight3DConfig, &masterConfig.motorConfig, &masterConfig.mixerConfig, &masterConfig.rxConfig); #ifdef USE_SERVOS - servosUseConfigs(&masterConfig.servoConfig, currentProfile->servoConf, ¤tProfile->gimbalConfig, &masterConfig.rxConfig); + servosUseConfigs(&masterConfig.servoMixerConfig, currentProfile->servoConf, ¤tProfile->gimbalConfig, &masterConfig.rxConfig); #endif imuRuntimeConfig.dcm_kp_acc = masterConfig.dcm_kp_acc / 10000.0f; diff --git a/src/main/config/config_master.h b/src/main/config/config_master.h index e1bb5850b5..db5e3ed1a8 100644 --- a/src/main/config/config_master.h +++ b/src/main/config/config_master.h @@ -79,7 +79,7 @@ typedef struct master_s { // mixer-related configuration mixerConfig_t mixerConfig; - servoConfig_t servoConfig; + servoMixerConfig_t servoMixerConfig; #ifdef GPS gpsConfig_t gpsConfig; diff --git a/src/main/fc/mw.c b/src/main/fc/mw.c index aab640c477..080bccb92d 100755 --- a/src/main/fc/mw.c +++ b/src/main/fc/mw.c @@ -567,7 +567,7 @@ void taskMainPidLoop(void) 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.servoConfig.tri_unarmed_servo) + && !((masterConfig.mixerMode == MIXER_TRI || masterConfig.mixerMode == MIXER_CUSTOM_TRI) && masterConfig.servoMixerConfig.tri_unarmed_servo) #endif && masterConfig.mixerMode != MIXER_AIRPLANE && masterConfig.mixerMode != MIXER_FLYING_WING diff --git a/src/main/flight/servos.c b/src/main/flight/servos.c index 76fd9396fe..f0b2f8f518 100755 --- a/src/main/flight/servos.c +++ b/src/main/flight/servos.c @@ -66,7 +66,7 @@ extern mixerConfig_t *mixerConfig; static rxConfig_t *rxConfig; -servoConfig_t *servoConfig; +servoMixerConfig_t *servoMixerConfig; static uint8_t servoRuleCount = 0; static servoMixer_t currentServoMixer[MAX_SERVO_RULES]; @@ -135,9 +135,9 @@ const mixerRules_t servoMixers[] = { static servoMixer_t *customServoMixers; -void servosUseConfigs(servoConfig_t *servoConfigToUse, servoParam_t *servoParamsToUse, gimbalConfig_t *gimbalConfigToUse, rxConfig_t *rxConfigToUse) +void servosUseConfigs(servoMixerConfig_t *servoMixerConfigToUse, servoParam_t *servoParamsToUse, gimbalConfig_t *gimbalConfigToUse, rxConfig_t *rxConfigToUse) { - servoConfig = servoConfigToUse; + servoMixerConfig = servoMixerConfigToUse; servoConf = servoParamsToUse; gimbalConfig = gimbalConfigToUse; rxConfig = rxConfigToUse; @@ -301,7 +301,7 @@ void writeServos(void) /* * in case of tricopters, there might me a need to zero servo output when unarmed */ - if ((currentMixerMode == MIXER_TRI || currentMixerMode == MIXER_CUSTOM_TRI) && !ARMING_FLAG(ARMED) && !servoConfig->tri_unarmed_servo) { + if ((currentMixerMode == MIXER_TRI || currentMixerMode == MIXER_CUSTOM_TRI) && !ARMING_FLAG(ARMED) && !servoMixerConfig->tri_unarmed_servo) { zeroServoValue = true; } @@ -448,11 +448,11 @@ void filterServos(void) { int servoIdx; - if (servoConfig->servo_lowpass_enable) { + if (servoMixerConfig->servo_lowpass_enable) { // Initialize servo lowpass filter (servos are calculated at looptime rate) if (!servoFilterIsSet) { for (servoIdx = 0; servoIdx < MAX_SUPPORTED_SERVOS; servoIdx++) { - biquadFilterInitLPF(&servoFitlerState[servoIdx], servoConfig->servo_lowpass_freq, gyro.targetLooptime); + biquadFilterInitLPF(&servoFitlerState[servoIdx], servoMixerConfig->servo_lowpass_freq, gyro.targetLooptime); } servoFilterIsSet = true; diff --git a/src/main/flight/servos.h b/src/main/flight/servos.h index d34e53059f..70fa96093d 100644 --- a/src/main/flight/servos.h +++ b/src/main/flight/servos.h @@ -77,11 +77,11 @@ typedef enum { #define FLAPERON_THROW_MIN 100 #define FLAPERON_THROW_MAX 400 -typedef struct servoConfig_s { +typedef struct servoMixerConfig_s { uint8_t tri_unarmed_servo; // send tail servo correction pulses even when unarmed int16_t servo_lowpass_freq; // lowpass servo filter frequency selection; 1/1000ths of loop freq int8_t servo_lowpass_enable; // enable/disable lowpass filter -} servoConfig_t; +} servoMixerConfig_t; typedef struct servoMixer_s { uint8_t targetChannel; // servo that receives the output of the rule @@ -127,6 +127,6 @@ void filterServos(void); void servoMixerLoadMix(int index, servoMixer_t *customServoMixers); void loadCustomServoMixer(void); int servoDirection(int servoIndex, int fromChannel); -void servosUseConfigs(servoConfig_t *servoConfigToUse, servoParam_t *servoParamsToUse, gimbalConfig_t *gimbalConfigToUse, struct rxConfig_s *rxConfigToUse); +void servosUseConfigs(servoMixerConfig_t *servoConfigToUse, servoParam_t *servoParamsToUse, gimbalConfig_t *gimbalConfigToUse, struct rxConfig_s *rxConfigToUse); void servosInit(servoMixer_t *customServoMixers); diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index 02b67b4f4c..dd07b8178c 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -756,9 +756,9 @@ const clivalue_t valueTable[] = { #ifdef USE_SERVOS { "flaperon_throw_offset", VAR_INT16 | PROFILE_VALUE, &masterConfig.profile[0].flaperon_throw_offset, .config.minmax = { FLAPERON_THROW_MIN, FLAPERON_THROW_MAX}, 0 }, { "flaperon_throw_inverted", VAR_UINT8 | PROFILE_VALUE | MODE_LOOKUP, &masterConfig.profile[0].flaperon_throw_inverted, .config.lookup = { TABLE_OFF_ON }, 0 }, - { "tri_unarmed_servo", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.servoConfig.tri_unarmed_servo, .config.lookup = { TABLE_OFF_ON }, 0 }, - { "servo_lowpass_freq", VAR_INT16 | MASTER_VALUE, &masterConfig.servoConfig.servo_lowpass_freq, .config.minmax = { 10, 400}, 0 }, - { "servo_lowpass_enable", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.servoConfig.servo_lowpass_enable, .config.lookup = { TABLE_OFF_ON }, 0 }, + { "tri_unarmed_servo", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.servoMixerConfig.tri_unarmed_servo, .config.lookup = { TABLE_OFF_ON }, 0 }, + { "servo_lowpass_freq", VAR_INT16 | MASTER_VALUE, &masterConfig.servoMixerConfig.servo_lowpass_freq, .config.minmax = { 10, 400}, 0 }, + { "servo_lowpass_enable", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.servoMixerConfig.servo_lowpass_enable, .config.lookup = { TABLE_OFF_ON }, 0 }, { "gimbal_mode", VAR_UINT8 | PROFILE_VALUE | MODE_LOOKUP, &masterConfig.profile[0].gimbalConfig.mode, .config.lookup = { TABLE_GIMBAL_MODE }, 0 }, { "servo_center_pulse", VAR_UINT16 | MASTER_VALUE, &masterConfig.servoPwmConfig.servoCenterPulse, .config.minmax = { PWM_RANGE_ZERO, PWM_RANGE_MAX }, 0 }, { "servo_pwm_rate", VAR_UINT16 | MASTER_VALUE, &masterConfig.servoPwmConfig.servoPwmRate, .config.minmax = { 50, 498 }, 0 },