1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-26 01:35:41 +03:00

Merge pull request #1025 from martinbudden/bf_servos

Moved #defines out of mixer function definitions
This commit is contained in:
borisbstyle 2016-09-15 01:25:47 +02:00 committed by GitHub
commit 7122689038
4 changed files with 40 additions and 48 deletions

View file

@ -678,10 +678,6 @@ void activateConfig(void)
setAccelerationFilter(masterConfig.acc_lpf_hz); setAccelerationFilter(masterConfig.acc_lpf_hz);
mixerUseConfigs( mixerUseConfigs(
#ifdef USE_SERVOS
masterConfig.servoConf,
&masterConfig.gimbalConfig,
#endif
&masterConfig.flight3DConfig, &masterConfig.flight3DConfig,
&masterConfig.escAndServoConfig, &masterConfig.escAndServoConfig,
&masterConfig.mixerConfig, &masterConfig.mixerConfig,
@ -689,6 +685,10 @@ void activateConfig(void)
&masterConfig.rxConfig &masterConfig.rxConfig
); );
#ifdef USE_SERVOS
servoUseConfigs(masterConfig.servoConf, &masterConfig.gimbalConfig);
#endif
imuRuntimeConfig.dcm_kp = masterConfig.dcm_kp / 10000.0f; imuRuntimeConfig.dcm_kp = masterConfig.dcm_kp / 10000.0f;
imuRuntimeConfig.dcm_ki = masterConfig.dcm_ki / 10000.0f; imuRuntimeConfig.dcm_ki = masterConfig.dcm_ki / 10000.0f;
imuRuntimeConfig.acc_unarmedcal = masterConfig.acc_unarmedcal; imuRuntimeConfig.acc_unarmedcal = masterConfig.acc_unarmedcal;

View file

@ -336,20 +336,12 @@ static servoMixer_t *customServoMixers;
static motorMixer_t *customMixers; static motorMixer_t *customMixers;
void mixerUseConfigs( void mixerUseConfigs(
#ifdef USE_SERVOS
servoParam_t *servoConfToUse,
gimbalConfig_t *gimbalConfigToUse,
#endif
flight3DConfig_t *flight3DConfigToUse, flight3DConfig_t *flight3DConfigToUse,
escAndServoConfig_t *escAndServoConfigToUse, escAndServoConfig_t *escAndServoConfigToUse,
mixerConfig_t *mixerConfigToUse, mixerConfig_t *mixerConfigToUse,
airplaneConfig_t *airplaneConfigToUse, airplaneConfig_t *airplaneConfigToUse,
rxConfig_t *rxConfigToUse) rxConfig_t *rxConfigToUse)
{ {
#ifdef USE_SERVOS
servoConf = servoConfToUse;
gimbalConfig = gimbalConfigToUse;
#endif
flight3DConfig = flight3DConfigToUse; flight3DConfig = flight3DConfigToUse;
escAndServoConfig = escAndServoConfigToUse; escAndServoConfig = escAndServoConfigToUse;
mixerConfig = mixerConfigToUse; mixerConfig = mixerConfigToUse;
@ -358,6 +350,12 @@ void mixerUseConfigs(
} }
#ifdef USE_SERVOS #ifdef USE_SERVOS
void servoUseConfigs(servoParam_t *servoConfToUse, gimbalConfig_t *gimbalConfigToUse)
{
servoConf = servoConfToUse;
gimbalConfig = gimbalConfigToUse;
}
int16_t determineServoMiddleOrForwardFromChannel(servoIndex_e servoIndex) int16_t determineServoMiddleOrForwardFromChannel(servoIndex_e servoIndex)
{ {
uint8_t channelToForwardFrom = servoConf[servoIndex].forwardFromChannel; uint8_t channelToForwardFrom = servoConf[servoIndex].forwardFromChannel;
@ -378,8 +376,31 @@ int servoDirection(int servoIndex, int inputSource)
else else
return 1; return 1;
} }
void servoInit(servoMixer_t *initialCustomServoMixers)
{
customServoMixers = initialCustomServoMixers;
// enable servos for mixes that require them. note, this shifts motor counts.
useServo = mixers[currentMixerMode].useServo;
// if we want camstab/trig, that also enables servos, even if mixer doesn't
if (feature(FEATURE_SERVO_TILT))
useServo = 1;
// give all servos a default command
for (uint8_t i = 0; i < MAX_SUPPORTED_SERVOS; i++) {
servo[i] = DEFAULT_SERVO_MIDDLE;
}
}
#endif #endif
void mixerInit(mixerMode_e mixerMode, motorMixer_t *initialCustomMixers)
{
currentMixerMode = mixerMode;
customMixers = initialCustomMixers;
}
#ifndef USE_QUAD_MIXER_ONLY #ifndef USE_QUAD_MIXER_ONLY
void loadCustomServoMixer(void) void loadCustomServoMixer(void)
@ -401,25 +422,6 @@ void loadCustomServoMixer(void)
} }
} }
void mixerInit(mixerMode_e mixerMode, motorMixer_t *initialCustomMotorMixers, servoMixer_t *initialCustomServoMixers)
{
currentMixerMode = mixerMode;
customMixers = initialCustomMotorMixers;
customServoMixers = initialCustomServoMixers;
// enable servos for mixes that require them. note, this shifts motor counts.
useServo = mixers[currentMixerMode].useServo;
// if we want camstab/trig, that also enables servos, even if mixer doesn't
if (feature(FEATURE_SERVO_TILT))
useServo = 1;
// give all servos a default command
for (uint8_t i = 0; i < MAX_SUPPORTED_SERVOS; i++) {
servo[i] = DEFAULT_SERVO_MIDDLE;
}
}
void mixerUsePWMOutputConfiguration(pwmOutputConfiguration_t *pwmOutputConfiguration, bool use_unsyncedPwm) void mixerUsePWMOutputConfiguration(pwmOutputConfiguration_t *pwmOutputConfiguration, bool use_unsyncedPwm)
{ {
int i; int i;
@ -521,13 +523,6 @@ void mixerLoadMix(int index, motorMixer_t *customMixers)
#else #else
void mixerInit(mixerMode_e mixerMode, motorMixer_t *initialCustomMixers)
{
currentMixerMode = mixerMode;
customMixers = initialCustomMixers;
}
void mixerUsePWMOutputConfiguration(pwmOutputConfiguration_t *pwmOutputConfiguration, bool use_unsyncedPwm) void mixerUsePWMOutputConfiguration(pwmOutputConfiguration_t *pwmOutputConfiguration, bool use_unsyncedPwm)
{ {
UNUSED(pwmOutputConfiguration); UNUSED(pwmOutputConfiguration);

View file

@ -193,10 +193,6 @@ struct escAndServoConfig_s;
struct rxConfig_s; struct rxConfig_s;
void mixerUseConfigs( void mixerUseConfigs(
#ifdef USE_SERVOS
servoParam_t *servoConfToUse,
struct gimbalConfig_s *gimbalConfigToUse,
#endif
flight3DConfig_t *flight3DConfigToUse, flight3DConfig_t *flight3DConfigToUse,
struct escAndServoConfig_s *escAndServoConfigToUse, struct escAndServoConfig_s *escAndServoConfigToUse,
mixerConfig_t *mixerConfigToUse, mixerConfig_t *mixerConfigToUse,
@ -206,13 +202,15 @@ void mixerUseConfigs(
void writeAllMotors(int16_t mc); void writeAllMotors(int16_t mc);
void mixerLoadMix(int index, motorMixer_t *customMixers); void mixerLoadMix(int index, motorMixer_t *customMixers);
#ifdef USE_SERVOS #ifdef USE_SERVOS
void mixerInit(mixerMode_e mixerMode, motorMixer_t *customMotorMixers, servoMixer_t *customServoMixers); void servoInit(servoMixer_t *customServoMixers);
struct servoParam_s;
struct gimbalConfig_s;
void servoUseConfigs(struct servoParam_s *servoConfToUse, struct gimbalConfig_s *gimbalConfigToUse);
void servoMixerLoadMix(int index, servoMixer_t *customServoMixers); void servoMixerLoadMix(int index, servoMixer_t *customServoMixers);
void loadCustomServoMixer(void); void loadCustomServoMixer(void);
int servoDirection(int servoIndex, int fromChannel); int servoDirection(int servoIndex, int fromChannel);
#else
void mixerInit(mixerMode_e mixerMode, motorMixer_t *customMotorMixers);
#endif #endif
void mixerInit(mixerMode_e mixerMode, motorMixer_t *customMotorMixers);
struct pwmOutputConfiguration_s; struct pwmOutputConfiguration_s;
void mixerUsePWMOutputConfiguration(struct pwmOutputConfiguration_s *pwmOutputConfiguration, bool use_unsyncedPwm); void mixerUsePWMOutputConfiguration(struct pwmOutputConfiguration_s *pwmOutputConfiguration, bool use_unsyncedPwm);
void mixerResetDisarmedMotors(void); void mixerResetDisarmedMotors(void);

View file

@ -240,10 +240,9 @@ void init(void)
serialInit(&masterConfig.serialConfig, feature(FEATURE_SOFTSERIAL), SERIAL_PORT_NONE); serialInit(&masterConfig.serialConfig, feature(FEATURE_SOFTSERIAL), SERIAL_PORT_NONE);
#endif #endif
#ifdef USE_SERVOS
mixerInit(masterConfig.mixerMode, masterConfig.customMotorMixer, masterConfig.customServoMixer);
#else
mixerInit(masterConfig.mixerMode, masterConfig.customMotorMixer); mixerInit(masterConfig.mixerMode, masterConfig.customMotorMixer);
#ifdef USE_SERVOS
servoInit(masterConfig.customServoMixer);
#endif #endif
drv_pwm_config_t pwm_params; drv_pwm_config_t pwm_params;