diff --git a/src/main/blackbox/blackbox.c b/src/main/blackbox/blackbox.c index 2e764b213a..b0a1f2b8b1 100644 --- a/src/main/blackbox/blackbox.c +++ b/src/main/blackbox/blackbox.c @@ -52,7 +52,8 @@ #include "io/beeper.h" #include "io/display.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "io/gimbal.h" #include "io/gps.h" @@ -530,7 +531,7 @@ static void writeIntraframe(void) * Write the throttle separately from the rest of the RC data so we can apply a predictor to it. * Throttle lies in range [minthrottle..maxthrottle]: */ - blackboxWriteUnsignedVB(blackboxCurrent->rcCommand[THROTTLE] - masterConfig.escAndServoConfig.minthrottle); + blackboxWriteUnsignedVB(blackboxCurrent->rcCommand[THROTTLE] - masterConfig.motorConfig.minthrottle); if (testBlackboxCondition(FLIGHT_LOG_FIELD_CONDITION_VBAT)) { /* @@ -574,7 +575,7 @@ static void writeIntraframe(void) blackboxWriteSigned16VBArray(blackboxCurrent->debug, 4); //Motors can be below minthrottle when disarmed, but that doesn't happen much - blackboxWriteUnsignedVB(blackboxCurrent->motor[0] - masterConfig.escAndServoConfig.minthrottle); + blackboxWriteUnsignedVB(blackboxCurrent->motor[0] - masterConfig.motorConfig.minthrottle); //Motors tend to be similar to each other so use the first motor's value as a predictor of the others for (x = 1; x < motorCount; x++) { @@ -931,7 +932,7 @@ void stopInTestMode(void) */ bool inMotorTestMode(void) { static uint32_t resetTime = 0; - uint16_t inactiveMotorCommand = (feature(FEATURE_3D) ? masterConfig.flight3DConfig.neutral3d : masterConfig.escAndServoConfig.mincommand); + uint16_t inactiveMotorCommand = (feature(FEATURE_3D) ? masterConfig.flight3DConfig.neutral3d : masterConfig.motorConfig.mincommand); int i; bool atLeastOneMotorActivated = false; @@ -1198,8 +1199,8 @@ static bool blackboxWriteSysinfo() BLACKBOX_PRINT_HEADER_LINE("Firmware date:%s %s", buildDate, buildTime); BLACKBOX_PRINT_HEADER_LINE("Craft name:%s", masterConfig.name); BLACKBOX_PRINT_HEADER_LINE("P interval:%d/%d", masterConfig.blackbox_rate_num, masterConfig.blackbox_rate_denom); - BLACKBOX_PRINT_HEADER_LINE("minthrottle:%d", masterConfig.escAndServoConfig.minthrottle); - BLACKBOX_PRINT_HEADER_LINE("maxthrottle:%d", masterConfig.escAndServoConfig.maxthrottle); + BLACKBOX_PRINT_HEADER_LINE("minthrottle:%d", masterConfig.motorConfig.minthrottle); + BLACKBOX_PRINT_HEADER_LINE("maxthrottle:%d", masterConfig.motorConfig.maxthrottle); BLACKBOX_PRINT_HEADER_LINE("gyro.scale:0x%x", castFloatBytesToInt(gyro.scale)); BLACKBOX_PRINT_HEADER_LINE("acc_1G:%u", acc.acc_1G); diff --git a/src/main/blackbox/blackbox_io.c b/src/main/blackbox/blackbox_io.c index 18a18c5186..7532d58b09 100644 --- a/src/main/blackbox/blackbox_io.c +++ b/src/main/blackbox/blackbox_io.c @@ -32,7 +32,8 @@ #include "io/beeper.h" #include "io/display.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "rx/rx.h" #include "fc/rc_controls.h" #include "io/osd.h" diff --git a/src/main/config/config.c b/src/main/config/config.c index f4786be177..fb5cb7eaf2 100755 --- a/src/main/config/config.c +++ b/src/main/config/config.c @@ -52,7 +52,8 @@ #include "io/beeper.h" #include "io/serial.h" #include "io/gimbal.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "fc/rc_curves.h" #include "io/ledstrip.h" @@ -235,19 +236,25 @@ void resetSensorAlignment(sensorAlignmentConfig_t *sensorAlignmentConfig) sensorAlignmentConfig->mag_align = ALIGN_DEFAULT; } -void resetEscAndServoConfig(escAndServoConfig_t *escAndServoConfig) +void resetMotorConfig(motorConfig_t *motorConfig) { #ifdef BRUSHED_MOTORS - escAndServoConfig->minthrottle = 1000; + motorConfig->minthrottle = 1000; #else - escAndServoConfig->minthrottle = 1070; + motorConfig->minthrottle = 1070; #endif - escAndServoConfig->maxthrottle = 2000; - escAndServoConfig->mincommand = 1000; - escAndServoConfig->servoCenterPulse = 1500; - escAndServoConfig->maxEscThrottleJumpMs = 0; + motorConfig->maxthrottle = 2000; + motorConfig->mincommand = 1000; + motorConfig->maxEscThrottleJumpMs = 0; } +#ifdef USE_SERVOS +void resetServoConfig(servoConfig_t *servoConfig) +{ + servoConfig->servoCenterPulse = 1500; +} +#endif + void resetFlight3DConfig(flight3DConfig_t *flight3DConfig) { flight3DConfig->deadband3d_low = 1406; @@ -368,7 +375,7 @@ controlRateConfig_t *getControlRateConfig(uint8_t profileIndex) uint16_t getCurrentMinthrottle(void) { - return masterConfig.escAndServoConfig.minthrottle; + return masterConfig.motorConfig.minthrottle; } // Default settings @@ -485,7 +492,10 @@ void createDefaultConfig(master_t *config) config->airplaneConfig.fixedwing_althold_dir = 1; // Motor/ESC/Servo - resetEscAndServoConfig(&config->escAndServoConfig); + resetMotorConfig(&config->motorConfig); +#ifdef USE_SERVOS + resetServoConfig(&config->servoConfig); +#endif resetFlight3DConfig(&config->flight3DConfig); #ifdef BRUSHED_MOTORS @@ -639,7 +649,7 @@ static void resetConf(void) void activateControlRateConfig(void) { - generateThrottleCurve(currentControlRateProfile, &masterConfig.escAndServoConfig); + generateThrottleCurve(currentControlRateProfile, &masterConfig.motorConfig); } void activateConfig(void) @@ -652,7 +662,7 @@ void activateConfig(void) useRcControlsConfig( masterConfig.modeActivationConditions, - &masterConfig.escAndServoConfig, + &masterConfig.motorConfig, ¤tProfile->pidProfile ); @@ -674,7 +684,7 @@ void activateConfig(void) mixerUseConfigs( &masterConfig.flight3DConfig, - &masterConfig.escAndServoConfig, + &masterConfig.motorConfig, &masterConfig.mixerConfig, &masterConfig.airplaneConfig, &masterConfig.rxConfig @@ -700,7 +710,7 @@ void activateConfig(void) ¤tProfile->pidProfile, &masterConfig.barometerConfig, &masterConfig.rcControlsConfig, - &masterConfig.escAndServoConfig + &masterConfig.motorConfig ); #ifdef BARO diff --git a/src/main/config/config_eeprom.c b/src/main/config/config_eeprom.c index e52d3050b3..ea163077cc 100644 --- a/src/main/config/config_eeprom.c +++ b/src/main/config/config_eeprom.c @@ -45,7 +45,8 @@ #include "io/beeper.h" #include "io/serial.h" #include "io/gimbal.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "fc/rc_curves.h" #include "io/ledstrip.h" diff --git a/src/main/config/config_master.h b/src/main/config/config_master.h index 6996068a9c..4883df44e5 100644 --- a/src/main/config/config_master.h +++ b/src/main/config/config_master.h @@ -28,7 +28,8 @@ typedef struct master_s { // motor/esc/servo related stuff motorMixer_t customMotorMixer[MAX_SUPPORTED_MOTORS]; - escAndServoConfig_t escAndServoConfig; + motorConfig_t motorConfig; + servoConfig_t servoConfig; flight3DConfig_t flight3DConfig; uint16_t motor_pwm_rate; // The update rate of motor outputs (50-498Hz) diff --git a/src/main/config/feature.c b/src/main/config/feature.c index 77b9069f35..4e4acf488f 100644 --- a/src/main/config/feature.c +++ b/src/main/config/feature.c @@ -45,7 +45,8 @@ #include "io/beeper.h" #include "io/serial.h" #include "io/gimbal.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "fc/rc_curves.h" #include "io/ledstrip.h" diff --git a/src/main/fc/mw.c b/src/main/fc/mw.c index 0f67e4b028..85c140ddad 100644 --- a/src/main/fc/mw.c +++ b/src/main/fc/mw.c @@ -53,7 +53,8 @@ #include "io/beeper.h" #include "io/display.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "fc/rc_curves.h" #include "io/gimbal.h" diff --git a/src/main/fc/rc_controls.c b/src/main/fc/rc_controls.c index dcbeedf8b1..1402d2b6ca 100644 --- a/src/main/fc/rc_controls.c +++ b/src/main/fc/rc_controls.c @@ -47,7 +47,7 @@ #include "io/gps.h" #include "io/beeper.h" -#include "io/escservo.h" +#include "io/motors.h" #include "fc/rc_controls.h" #include "fc/rc_curves.h" #include "io/vtx.h" @@ -62,7 +62,7 @@ #include "fc/mw.h" -static escAndServoConfig_t *escAndServoConfig; +static motorConfig_t *motorConfig; static pidProfile_t *pidProfile; // true if arming is done via the sticks (as opposed to a switch) @@ -516,7 +516,7 @@ static void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t case ADJUSTMENT_THROTTLE_EXPO: newValue = constrain((int)controlRateConfig->thrExpo8 + delta, 0, 100); // FIXME magic numbers repeated in serial_cli.c controlRateConfig->thrExpo8 = newValue; - generateThrottleCurve(controlRateConfig, escAndServoConfig); + generateThrottleCurve(controlRateConfig, motorConfig); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_THROTTLE_EXPO, newValue); break; case ADJUSTMENT_PITCH_ROLL_RATE: @@ -709,9 +709,9 @@ int32_t getRcStickDeflection(int32_t axis, uint16_t midrc) { return MIN(ABS(rcData[axis] - midrc), 500); } -void useRcControlsConfig(modeActivationCondition_t *modeActivationConditions, escAndServoConfig_t *escAndServoConfigToUse, pidProfile_t *pidProfileToUse) +void useRcControlsConfig(modeActivationCondition_t *modeActivationConditions, motorConfig_t *motorConfig, pidProfile_t *pidProfileToUse) { - escAndServoConfig = escAndServoConfigToUse; + motorConfig = motorConfig; pidProfile = pidProfileToUse; isUsingSticksToArm = !isModeActivationConditionPresent(modeActivationConditions, BOXARM); diff --git a/src/main/fc/rc_controls.h b/src/main/fc/rc_controls.h index dd25f7fa57..87008c129e 100644 --- a/src/main/fc/rc_controls.h +++ b/src/main/fc/rc_controls.h @@ -263,5 +263,5 @@ bool isUsingSticksForArming(void); int32_t getRcStickDeflection(int32_t axis, uint16_t midrc); bool isModeActivationConditionPresent(modeActivationCondition_t *modeActivationConditions, boxId_e modeId); struct pidProfile_s; -struct escAndServoConfig_s; -void useRcControlsConfig(modeActivationCondition_t *modeActivationConditions, struct escAndServoConfig_s *escAndServoConfigToUse, struct pidProfile_s *pidProfileToUse); +struct motorConfig_s; +void useRcControlsConfig(modeActivationCondition_t *modeActivationConditions, struct motorConfig_s *motorConfigToUse, struct pidProfile_s *pidProfileToUse); diff --git a/src/main/fc/rc_curves.c b/src/main/fc/rc_curves.c index ee69070d46..760f276f9a 100644 --- a/src/main/fc/rc_curves.c +++ b/src/main/fc/rc_curves.c @@ -23,7 +23,7 @@ #include "config/config.h" #include "config/feature.h" -#include "io/escservo.h" +#include "io/motors.h" #include "fc/rc_curves.h" #include "fc/rc_controls.h" @@ -34,10 +34,10 @@ #define THROTTLE_LOOKUP_LENGTH 12 static int16_t lookupThrottleRC[THROTTLE_LOOKUP_LENGTH]; // lookup table for expo & mid THROTTLE -void generateThrottleCurve(controlRateConfig_t *controlRateConfig, escAndServoConfig_t *escAndServoConfig) +void generateThrottleCurve(controlRateConfig_t *controlRateConfig, motorConfig_t *motorConfig) { uint8_t i; - uint16_t minThrottle = (feature(FEATURE_3D && IS_RC_MODE_ACTIVE(BOX3DDISABLESWITCH)) ? PWM_RANGE_MIN : escAndServoConfig->minthrottle); + uint16_t minThrottle = (feature(FEATURE_3D && IS_RC_MODE_ACTIVE(BOX3DDISABLESWITCH)) ? PWM_RANGE_MIN : motorConfig->minthrottle); for (i = 0; i < THROTTLE_LOOKUP_LENGTH; i++) { int16_t tmp = 10 * i - controlRateConfig->thrMid8; @@ -47,7 +47,7 @@ void generateThrottleCurve(controlRateConfig_t *controlRateConfig, escAndServoCo if (tmp < 0) y = controlRateConfig->thrMid8; lookupThrottleRC[i] = 10 * controlRateConfig->thrMid8 + tmp * (100 - controlRateConfig->thrExpo8 + (int32_t) controlRateConfig->thrExpo8 * (tmp * tmp) / (y * y)) / 10; - lookupThrottleRC[i] = minThrottle + (int32_t) (escAndServoConfig->maxthrottle - minThrottle) * lookupThrottleRC[i] / 1000; // [MINTHROTTLE;MAXTHROTTLE] + lookupThrottleRC[i] = minThrottle + (int32_t) (motorConfig->maxthrottle - minThrottle) * lookupThrottleRC[i] / 1000; // [MINTHROTTLE;MAXTHROTTLE] } } diff --git a/src/main/fc/rc_curves.h b/src/main/fc/rc_curves.h index 9c1b361c2e..41132a98f3 100644 --- a/src/main/fc/rc_curves.h +++ b/src/main/fc/rc_curves.h @@ -18,8 +18,8 @@ #pragma once struct controlRateConfig_s; -struct escAndServoConfig_s; -void generateThrottleCurve(struct controlRateConfig_s *controlRateConfig, struct escAndServoConfig_s *escAndServoConfig); +struct motorConfig_s; +void generateThrottleCurve(struct controlRateConfig_s *controlRateConfig, struct motorConfig_s *motorConfig); int16_t rcLookupThrottle(int32_t tmp); diff --git a/src/main/flight/altitudehold.c b/src/main/flight/altitudehold.c index ee2a2322a4..a6eea2088b 100644 --- a/src/main/flight/altitudehold.c +++ b/src/main/flight/altitudehold.c @@ -40,7 +40,7 @@ #include "rx/rx.h" #include "fc/rc_controls.h" -#include "io/escservo.h" +#include "io/motors.h" #include "flight/mixer.h" #include "flight/pid.h" @@ -60,19 +60,19 @@ int32_t vario = 0; // variometer in cm/s static barometerConfig_t *barometerConfig; static pidProfile_t *pidProfile; static rcControlsConfig_t *rcControlsConfig; -static escAndServoConfig_t *escAndServoConfig; +static motorConfig_t *motorConfig; void configureAltitudeHold( pidProfile_t *initialPidProfile, barometerConfig_t *intialBarometerConfig, rcControlsConfig_t *initialRcControlsConfig, - escAndServoConfig_t *initialEscAndServoConfig + motorConfig_t *initialMotorConfig ) { pidProfile = initialPidProfile; barometerConfig = intialBarometerConfig; rcControlsConfig = initialRcControlsConfig; - escAndServoConfig = initialEscAndServoConfig; + motorConfig = initialMotorConfig; } #if defined(BARO) || defined(SONAR) @@ -100,7 +100,7 @@ static void applyMultirotorAltHold(void) AltHold = EstAlt; isAltHoldChanged = 0; } - rcCommand[THROTTLE] = constrain(initialThrottleHold + altHoldThrottleAdjustment, escAndServoConfig->minthrottle, escAndServoConfig->maxthrottle); + rcCommand[THROTTLE] = constrain(initialThrottleHold + altHoldThrottleAdjustment, motorConfig->minthrottle, motorConfig->maxthrottle); } } else { // slow alt changes, mostly used for aerial photography @@ -114,7 +114,7 @@ static void applyMultirotorAltHold(void) velocityControl = 0; isAltHoldChanged = 0; } - rcCommand[THROTTLE] = constrain(initialThrottleHold + altHoldThrottleAdjustment, escAndServoConfig->minthrottle, escAndServoConfig->maxthrottle); + rcCommand[THROTTLE] = constrain(initialThrottleHold + altHoldThrottleAdjustment, motorConfig->minthrottle, motorConfig->maxthrottle); } } diff --git a/src/main/flight/altitudehold.h b/src/main/flight/altitudehold.h index da16978814..b8d369b6db 100644 --- a/src/main/flight/altitudehold.h +++ b/src/main/flight/altitudehold.h @@ -25,10 +25,10 @@ void calculateEstimatedAltitude(uint32_t currentTime); struct pidProfile_s; struct barometerConfig_s; struct rcControlsConfig_s; -struct escAndServoConfig_s; -void configureAltitudeHold(struct pidProfile_s *initialPidProfile, struct barometerConfig_s *intialBarometerConfig, struct rcControlsConfig_s *initialRcControlsConfig, struct escAndServoConfig_s *initialEscAndServoConfig); +struct motorConfig_s; +void configureAltitudeHold(struct pidProfile_s *initialPidProfile, struct barometerConfig_s *intialBarometerConfig, struct rcControlsConfig_s *initialRcControlsConfig, struct motorConfig_s *initialMotorConfig); -struct airplaneConfig_t; +struct airplaneConfig_s; void applyAltHold(struct airplaneConfig_s *airplaneConfig); void updateAltHoldState(void); void updateSonarAltHoldState(void); diff --git a/src/main/flight/failsafe.c b/src/main/flight/failsafe.c index 86c8aef763..3df88b66ee 100644 --- a/src/main/flight/failsafe.c +++ b/src/main/flight/failsafe.c @@ -27,7 +27,7 @@ #include "rx/rx.h" #include "drivers/system.h" #include "io/beeper.h" -#include "io/escservo.h" +#include "io/motors.h" #include "fc/rc_controls.h" #include "fc/runtime_config.h" diff --git a/src/main/flight/mixer.c b/src/main/flight/mixer.c index 76e5681673..09fcbe1f94 100755 --- a/src/main/flight/mixer.c +++ b/src/main/flight/mixer.c @@ -40,7 +40,8 @@ #include "rx/rx.h" #include "io/gimbal.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "sensors/sensors.h" @@ -64,7 +65,7 @@ int16_t motor_disarmed[MAX_SUPPORTED_MOTORS]; static mixerConfig_t *mixerConfig; static flight3DConfig_t *flight3DConfig; -static escAndServoConfig_t *escAndServoConfig; +static motorConfig_t *motorConfig; static airplaneConfig_t *airplaneConfig; static rxConfig_t *rxConfig; static bool syncPwmWithPidLoop = false; @@ -337,13 +338,13 @@ static motorMixer_t *customMixers; void mixerUseConfigs( flight3DConfig_t *flight3DConfigToUse, - escAndServoConfig_t *escAndServoConfigToUse, + motorConfig_t *motorConfigToUse, mixerConfig_t *mixerConfigToUse, airplaneConfig_t *airplaneConfigToUse, rxConfig_t *rxConfigToUse) { flight3DConfig = flight3DConfigToUse; - escAndServoConfig = escAndServoConfigToUse; + motorConfig = motorConfigToUse; mixerConfig = mixerConfigToUse; airplaneConfig = airplaneConfigToUse; rxConfig = rxConfigToUse; @@ -548,7 +549,7 @@ void mixerResetDisarmedMotors(void) int i; // set disarmed motor values for (i = 0; i < MAX_SUPPORTED_MOTORS; i++) - motor_disarmed[i] = feature(FEATURE_3D) ? flight3DConfig->neutral3d : escAndServoConfig->mincommand; + motor_disarmed[i] = feature(FEATURE_3D) ? flight3DConfig->neutral3d : motorConfig->mincommand; } #ifdef USE_SERVOS @@ -659,7 +660,7 @@ void writeAllMotors(int16_t mc) void stopMotors(void) { - writeAllMotors(feature(FEATURE_3D) ? flight3DConfig->neutral3d : escAndServoConfig->mincommand); + writeAllMotors(feature(FEATURE_3D) ? flight3DConfig->neutral3d : motorConfig->mincommand); delay(50); // give the timers and ESCs a chance to react. } @@ -798,25 +799,25 @@ void mixTable(void *pidProfilePtr) if ((rcCommand[THROTTLE] <= (rxConfig->midrc - flight3DConfig->deadband3d_throttle))) { // Out of band handling throttleMax = flight3DConfig->deadband3d_low; - throttleMin = escAndServoConfig->minthrottle; + throttleMin = motorConfig->minthrottle; throttlePrevious = rcCommand[THROTTLE]; throttle = rcCommand[THROTTLE] + flight3DConfig->deadband3d_throttle; } else if (rcCommand[THROTTLE] >= (rxConfig->midrc + flight3DConfig->deadband3d_throttle)) { // Positive handling - throttleMax = escAndServoConfig->maxthrottle; + throttleMax = motorConfig->maxthrottle; throttleMin = flight3DConfig->deadband3d_high; throttlePrevious = rcCommand[THROTTLE]; throttle = rcCommand[THROTTLE] - flight3DConfig->deadband3d_throttle; } else if ((throttlePrevious <= (rxConfig->midrc - flight3DConfig->deadband3d_throttle))) { // Deadband handling from negative to positive throttle = throttleMax = flight3DConfig->deadband3d_low; - throttleMin = escAndServoConfig->minthrottle; + throttleMin = motorConfig->minthrottle; } else { // Deadband handling from positive to negative - throttleMax = escAndServoConfig->maxthrottle; + throttleMax = motorConfig->maxthrottle; throttle = throttleMin = flight3DConfig->deadband3d_high; } } else { throttle = rcCommand[THROTTLE]; - throttleMin = escAndServoConfig->minthrottle; - throttleMax = escAndServoConfig->maxthrottle; + throttleMin = motorConfig->minthrottle; + throttleMax = motorConfig->maxthrottle; } throttleRange = throttleMax - throttleMin; @@ -840,34 +841,34 @@ void mixTable(void *pidProfilePtr) motor[i] = rollPitchYawMix[i] + constrain(throttle * currentMixer[i].throttle, throttleMin, throttleMax); if (isFailsafeActive) { - motor[i] = constrain(motor[i], escAndServoConfig->mincommand, escAndServoConfig->maxthrottle); + motor[i] = constrain(motor[i], motorConfig->mincommand, motorConfig->maxthrottle); } else if (feature(FEATURE_3D)) { if (throttlePrevious <= (rxConfig->midrc - flight3DConfig->deadband3d_throttle)) { - motor[i] = constrain(motor[i], escAndServoConfig->minthrottle, flight3DConfig->deadband3d_low); + motor[i] = constrain(motor[i], motorConfig->minthrottle, flight3DConfig->deadband3d_low); } else { - motor[i] = constrain(motor[i], flight3DConfig->deadband3d_high, escAndServoConfig->maxthrottle); + motor[i] = constrain(motor[i], flight3DConfig->deadband3d_high, motorConfig->maxthrottle); } } else { - motor[i] = constrain(motor[i], escAndServoConfig->minthrottle, escAndServoConfig->maxthrottle); + motor[i] = constrain(motor[i], motorConfig->minthrottle, motorConfig->maxthrottle); } // Motor stop handling if (feature(FEATURE_MOTOR_STOP) && ARMING_FLAG(ARMED) && !feature(FEATURE_3D) && !isAirmodeActive()) { if (((rcData[THROTTLE]) < rxConfig->mincheck)) { - motor[i] = escAndServoConfig->mincommand; + motor[i] = motorConfig->mincommand; } } } // Anti Desync feature for ESC's. Limit rapid throttle changes - if (escAndServoConfig->maxEscThrottleJumpMs) { - const int16_t maxThrottleStep = constrain(escAndServoConfig->maxEscThrottleJumpMs / (1000 / targetPidLooptime), 2, 10000); + if (motorConfig->maxEscThrottleJumpMs) { + const int16_t maxThrottleStep = constrain(motorConfig->maxEscThrottleJumpMs / (1000 / targetPidLooptime), 2, 10000); // Only makes sense when it's within the range if (maxThrottleStep < throttleRange) { static int16_t motorPrevious[MAX_SUPPORTED_MOTORS]; - motor[i] = constrain(motor[i], escAndServoConfig->minthrottle, motorPrevious[i] + maxThrottleStep); // Only limit accelerating situation + motor[i] = constrain(motor[i], motorConfig->minthrottle, motorPrevious[i] + maxThrottleStep); // Only limit accelerating situation motorPrevious[i] = motor[i]; } } diff --git a/src/main/flight/mixer.h b/src/main/flight/mixer.h index 980fabd031..10ab08a08a 100644 --- a/src/main/flight/mixer.h +++ b/src/main/flight/mixer.h @@ -178,7 +178,7 @@ typedef struct servoParam_s { } __attribute__ ((__packed__)) servoParam_t; struct gimbalConfig_s; -struct escAndServoConfig_s; +struct motorConfig_s; struct rxConfig_s; extern int16_t servo[MAX_SUPPORTED_SERVOS]; @@ -189,12 +189,12 @@ void filterServos(void); extern int16_t motor[MAX_SUPPORTED_MOTORS]; extern int16_t motor_disarmed[MAX_SUPPORTED_MOTORS]; -struct escAndServoConfig_s; +struct motorConfig_s; struct rxConfig_s; void mixerUseConfigs( flight3DConfig_t *flight3DConfigToUse, - struct escAndServoConfig_s *escAndServoConfigToUse, + struct motorConfig_s *motorConfigToUse, mixerConfig_t *mixerConfigToUse, airplaneConfig_t *airplaneConfigToUse, struct rxConfig_s *rxConfigToUse); diff --git a/src/main/flight/navigation.h b/src/main/flight/navigation.h index 8adb9918d4..33bb184f23 100644 --- a/src/main/flight/navigation.h +++ b/src/main/flight/navigation.h @@ -52,7 +52,7 @@ void GPS_reset_home_position(void); void GPS_reset_nav(void); void GPS_set_next_wp(int32_t* lat, int32_t* lon); void gpsUseProfile(gpsProfile_t *gpsProfileToUse); -void gpsUsePIDs(pidProfile_t *pidProfile); +void gpsUsePIDs(struct pidProfile_s *pidProfile); void updateGpsStateForHomeAndHoldMode(void); void updateGpsWaypointsAndMode(void); diff --git a/src/main/io/ledstrip.c b/src/main/io/ledstrip.c index 061fb4579d..412e462adf 100644 --- a/src/main/io/ledstrip.c +++ b/src/main/io/ledstrip.c @@ -55,7 +55,8 @@ #include "io/ledstrip.h" #include "io/beeper.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "io/gimbal.h" #include "io/serial.h" #include "io/gps.h" diff --git a/src/main/io/escservo.h b/src/main/io/motors.h similarity index 87% rename from src/main/io/escservo.h rename to src/main/io/motors.h index fe37d26445..91381b4025 100644 --- a/src/main/io/escservo.h +++ b/src/main/io/motors.h @@ -17,12 +17,11 @@ #pragma once -typedef struct escAndServoConfig_s { +typedef struct motorConfig_s { // PWM values, in milliseconds, common range is 1000-2000 (1 to 2ms) uint16_t minthrottle; // Set the minimum throttle command sent to the ESC (Electronic Speed Controller). This is the minimum value that allow motors to run at a idle speed. uint16_t maxthrottle; // This is the maximum value for the ESCs at full power this value can be increased up to 2000 uint16_t mincommand; // This is the value for the ESCs when they are not armed. In some cases, this value must be lowered down to 900 for some specific ESCs - uint16_t servoCenterPulse; // This is the value for servos when they should be in the middle. e.g. 1500. uint16_t maxEscThrottleJumpMs; -} escAndServoConfig_t; +} motorConfig_t; diff --git a/src/main/io/osd.c b/src/main/io/osd.c index cbb9f8c15b..e85cc9e8d6 100755 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -74,7 +74,8 @@ #include "io/serial.h" #include "io/flashfs.h" #include "io/gps.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "io/gimbal.h" #include "io/ledstrip.h" diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index 2c8c5a1a68..62a0b1233c 100755 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -51,7 +51,8 @@ #include "drivers/buf_writer.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "io/gps.h" #include "io/gimbal.h" #include "fc/rc_controls.h" @@ -670,11 +671,13 @@ const clivalue_t valueTable[] = { { "max_aux_channels", VAR_UINT8 | MASTER_VALUE, &masterConfig.rxConfig.max_aux_channel, .config.minmax = { 0, 13 } }, { "debug_mode", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.debug_mode, .config.lookup = { TABLE_DEBUG } }, - { "min_throttle", VAR_UINT16 | MASTER_VALUE, &masterConfig.escAndServoConfig.minthrottle, .config.minmax = { PWM_RANGE_ZERO, PWM_RANGE_MAX } }, - { "max_throttle", VAR_UINT16 | MASTER_VALUE, &masterConfig.escAndServoConfig.maxthrottle, .config.minmax = { PWM_RANGE_ZERO, PWM_RANGE_MAX } }, - { "min_command", VAR_UINT16 | MASTER_VALUE, &masterConfig.escAndServoConfig.mincommand, .config.minmax = { PWM_RANGE_ZERO, PWM_RANGE_MAX } }, - { "servo_center_pulse", VAR_UINT16 | MASTER_VALUE, &masterConfig.escAndServoConfig.servoCenterPulse, .config.minmax = { PWM_RANGE_ZERO, PWM_RANGE_MAX } }, - { "max_esc_throttle_jump", VAR_UINT16 | MASTER_VALUE, &masterConfig.escAndServoConfig.maxEscThrottleJumpMs, .config.minmax = { 0, 1000 } }, + { "min_throttle", VAR_UINT16 | MASTER_VALUE, &masterConfig.motorConfig.minthrottle, .config.minmax = { PWM_RANGE_ZERO, PWM_RANGE_MAX } }, + { "max_throttle", VAR_UINT16 | MASTER_VALUE, &masterConfig.motorConfig.maxthrottle, .config.minmax = { PWM_RANGE_ZERO, PWM_RANGE_MAX } }, + { "min_command", VAR_UINT16 | MASTER_VALUE, &masterConfig.motorConfig.mincommand, .config.minmax = { PWM_RANGE_ZERO, PWM_RANGE_MAX } }, + { "max_esc_throttle_jump", VAR_UINT16 | MASTER_VALUE, &masterConfig.motorConfig.maxEscThrottleJumpMs, .config.minmax = { 0, 1000 } }, +#ifdef USE_SERVOS + { "servo_center_pulse", VAR_UINT16 | MASTER_VALUE, &masterConfig.servoConfig.servoCenterPulse, .config.minmax = { PWM_RANGE_ZERO, PWM_RANGE_MAX } }, +#endif { "3d_deadband_low", VAR_UINT16 | MASTER_VALUE, &masterConfig.flight3DConfig.deadband3d_low, .config.minmax = { PWM_RANGE_ZERO, PWM_RANGE_MAX } }, // FIXME upper limit should match code in the mixer, 1500 currently { "3d_deadband_high", VAR_UINT16 | MASTER_VALUE, &masterConfig.flight3DConfig.deadband3d_high, .config.minmax = { PWM_RANGE_ZERO, PWM_RANGE_MAX } }, // FIXME lower limit should match code in the mixer, 1500 currently, diff --git a/src/main/io/serial_msp.c b/src/main/io/serial_msp.c index d9498edf73..00aff0b5f0 100755 --- a/src/main/io/serial_msp.c +++ b/src/main/io/serial_msp.c @@ -51,7 +51,8 @@ #include "rx/msp.h" #include "io/beeper.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "io/gps.h" #include "io/gimbal.h" @@ -110,7 +111,7 @@ extern uint16_t cycleTime; // FIXME dependency on mw.c extern uint16_t rssi; // FIXME dependency on mw.c extern void resetProfile(profile_t *profile); -void useRcControlsConfig(modeActivationCondition_t *modeActivationConditions, escAndServoConfig_t *escAndServoConfigToUse, pidProfile_t *pidProfileToUse); +void useRcControlsConfig(modeActivationCondition_t *modeActivationConditions, motorConfig_t *motorConfigToUse, pidProfile_t *pidProfileToUse); const char * const flightControllerIdentifier = BETAFLIGHT_IDENTIFIER; // 4 UPPER CASE alpha numeric characters that identify the flight controller. static const char * const boardIdentifier = TARGET_BOARD_IDENTIFIER; @@ -926,9 +927,9 @@ static bool processOutCommand(uint8_t cmdMSP) headSerialReply(2 * 5 + 3 + 3 + 2 + 4); serialize16(masterConfig.rxConfig.midrc); - serialize16(masterConfig.escAndServoConfig.minthrottle); - serialize16(masterConfig.escAndServoConfig.maxthrottle); - serialize16(masterConfig.escAndServoConfig.mincommand); + serialize16(masterConfig.motorConfig.minthrottle); + serialize16(masterConfig.motorConfig.maxthrottle); + serialize16(masterConfig.motorConfig.mincommand); serialize16(masterConfig.failsafeConfig.failsafe_throttle); @@ -1425,7 +1426,7 @@ static bool processInCommand(void) mac->range.startStep = read8(); mac->range.endStep = read8(); - useRcControlsConfig(masterConfig.modeActivationConditions, &masterConfig.escAndServoConfig, ¤tProfile->pidProfile); + useRcControlsConfig(masterConfig.modeActivationConditions, &masterConfig.motorConfig, ¤tProfile->pidProfile); } else { headSerialError(0); } @@ -1481,9 +1482,9 @@ static bool processInCommand(void) if (tmp < 1600 && tmp > 1400) masterConfig.rxConfig.midrc = tmp; - masterConfig.escAndServoConfig.minthrottle = read16(); - masterConfig.escAndServoConfig.maxthrottle = read16(); - masterConfig.escAndServoConfig.mincommand = read16(); + masterConfig.motorConfig.minthrottle = read16(); + masterConfig.motorConfig.maxthrottle = read16(); + masterConfig.motorConfig.mincommand = read16(); masterConfig.failsafeConfig.failsafe_throttle = read16(); diff --git a/src/main/io/servos.h b/src/main/io/servos.h new file mode 100644 index 0000000000..6aca9ebc24 --- /dev/null +++ b/src/main/io/servos.h @@ -0,0 +1,23 @@ +/* + * This file is part of Cleanflight. + * + * Cleanflight is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Cleanflight is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Cleanflight. If not, see . + */ + +#pragma once + +typedef struct servoConfig_s { + // PWM values, in milliseconds, common range is 1000-2000 (1 to 2ms) + uint16_t servoCenterPulse; // This is the value for servos when they should be in the middle. e.g. 1500. +} servoConfig_t; diff --git a/src/main/io/vtx.c b/src/main/io/vtx.c index 6c6f6ab94e..91ae8a2329 100644 --- a/src/main/io/vtx.c +++ b/src/main/io/vtx.c @@ -49,7 +49,7 @@ #include "io/beeper.h" #include "io/serial.h" #include "io/gimbal.h" -#include "io/escservo.h" +#include "io/motors.h" #include "fc/rc_controls.h" #include "fc/rc_curves.h" #include "io/ledstrip.h" diff --git a/src/main/main.c b/src/main/main.c index 4f2167480b..3f168f09d1 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -69,7 +69,8 @@ #include "io/serial.h" #include "io/flashfs.h" #include "io/gps.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "io/gimbal.h" #include "io/ledstrip.h" @@ -289,7 +290,7 @@ void init(void) #ifdef USE_SERVOS pwm_params.useServos = isMixerUsingServos(); pwm_params.useChannelForwarding = feature(FEATURE_CHANNEL_FORWARDING); - pwm_params.servoCenterPulse = masterConfig.escAndServoConfig.servoCenterPulse; + pwm_params.servoCenterPulse = masterConfig.servoConfig.servoCenterPulse; pwm_params.servoPwmRate = masterConfig.servo_pwm_rate; #endif @@ -299,7 +300,7 @@ void init(void) pwm_params.useFastPwm = (masterConfig.motor_pwm_protocol != PWM_TYPE_CONVENTIONAL && masterConfig.motor_pwm_protocol != PWM_TYPE_BRUSHED); pwm_params.pwmProtocolType = masterConfig.motor_pwm_protocol; pwm_params.motorPwmRate = use_unsyncedPwm ? masterConfig.motor_pwm_rate : 0; - pwm_params.idlePulse = masterConfig.escAndServoConfig.mincommand; + pwm_params.idlePulse = masterConfig.motorConfig.mincommand; if (feature(FEATURE_3D)) pwm_params.idlePulse = masterConfig.flight3DConfig.neutral3d; diff --git a/src/main/target/ALIENFLIGHTF1/config.c b/src/main/target/ALIENFLIGHTF1/config.c index 4a6b684b98..df417c0766 100644 --- a/src/main/target/ALIENFLIGHTF1/config.c +++ b/src/main/target/ALIENFLIGHTF1/config.c @@ -47,7 +47,8 @@ #include "io/beeper.h" #include "io/serial.h" #include "io/gimbal.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "fc/rc_curves.h" #include "io/ledstrip.h" diff --git a/src/main/target/ALIENFLIGHTF3/config.c b/src/main/target/ALIENFLIGHTF3/config.c index 4ffee53046..6268d31fc1 100644 --- a/src/main/target/ALIENFLIGHTF3/config.c +++ b/src/main/target/ALIENFLIGHTF3/config.c @@ -50,7 +50,8 @@ #include "io/beeper.h" #include "io/serial.h" #include "io/gimbal.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "fc/rc_curves.h" #include "io/ledstrip.h" diff --git a/src/main/target/ALIENFLIGHTF4/config.c b/src/main/target/ALIENFLIGHTF4/config.c index 4a2d100f3d..914dbc8826 100644 --- a/src/main/target/ALIENFLIGHTF4/config.c +++ b/src/main/target/ALIENFLIGHTF4/config.c @@ -50,7 +50,8 @@ #include "io/beeper.h" #include "io/serial.h" #include "io/gimbal.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "fc/rc_curves.h" #include "io/ledstrip.h" diff --git a/src/main/target/BLUEJAYF4/config.c b/src/main/target/BLUEJAYF4/config.c index b0b4dfca85..eaf989d546 100644 --- a/src/main/target/BLUEJAYF4/config.c +++ b/src/main/target/BLUEJAYF4/config.c @@ -50,7 +50,8 @@ #include "io/beeper.h" #include "io/serial.h" #include "io/gimbal.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "fc/rc_curves.h" #include "io/ledstrip.h" diff --git a/src/main/target/COLIBRI/config.c b/src/main/target/COLIBRI/config.c index eca3b79046..fd80365488 100644 --- a/src/main/target/COLIBRI/config.c +++ b/src/main/target/COLIBRI/config.c @@ -53,7 +53,8 @@ #include "io/beeper.h" #include "io/serial.h" #include "io/gimbal.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "fc/rc_curves.h" #include "io/ledstrip.h" @@ -84,8 +85,8 @@ void targetConfiguration(master_t *config) config->mixerMode = MIXER_HEX6X; config->rxConfig.serialrx_provider = 2; - config->escAndServoConfig.minthrottle = 1070; - config->escAndServoConfig.maxthrottle = 2000; + config->motorConfig.minthrottle = 1070; + config->motorConfig.maxthrottle = 2000; config->boardAlignment.pitchDegrees = 10; //config->rcControlsConfig.deadband = 10; diff --git a/src/main/target/COLIBRI_RACE/config.c b/src/main/target/COLIBRI_RACE/config.c index 63d4cd2a95..ab50da768e 100644 --- a/src/main/target/COLIBRI_RACE/config.c +++ b/src/main/target/COLIBRI_RACE/config.c @@ -50,7 +50,8 @@ #include "io/beeper.h" #include "io/serial.h" #include "io/gimbal.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "fc/rc_curves.h" #include "io/ledstrip.h" @@ -78,8 +79,8 @@ // alternative defaults settings for COLIBRI RACE targets void targetConfiguration(master_t *config) { - config->escAndServoConfig.minthrottle = 1025; - config->escAndServoConfig.maxthrottle = 1980; + config->motorConfig.minthrottle = 1025; + config->motorConfig.maxthrottle = 1980; config->batteryConfig.vbatmaxcellvoltage = 45; config->batteryConfig.vbatmincellvoltage = 30; } diff --git a/src/main/target/COLIBRI_RACE/i2c_bst.c b/src/main/target/COLIBRI_RACE/i2c_bst.c index f2d2ba4085..afdff94005 100644 --- a/src/main/target/COLIBRI_RACE/i2c_bst.c +++ b/src/main/target/COLIBRI_RACE/i2c_bst.c @@ -31,7 +31,8 @@ #include "rx/rx.h" #include "rx/msp.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "io/gps.h" #include "io/gimbal.h" @@ -72,7 +73,7 @@ #include "bus_bst.h" #include "i2c_bst.h" -void useRcControlsConfig(modeActivationCondition_t *modeActivationConditions, escAndServoConfig_t *escAndServoConfigToUse, pidProfile_t *pidProfileToUse); +void useRcControlsConfig(modeActivationCondition_t *modeActivationConditions, motorConfig_t *motorConfigToUse, pidProfile_t *pidProfileToUse); #define BST_PROTOCOL_VERSION 0 @@ -749,9 +750,9 @@ static bool bstSlaveProcessFeedbackCommand(uint8_t bstRequest) case BST_MISC: bstWrite16(masterConfig.rxConfig.midrc); - bstWrite16(masterConfig.escAndServoConfig.minthrottle); - bstWrite16(masterConfig.escAndServoConfig.maxthrottle); - bstWrite16(masterConfig.escAndServoConfig.mincommand); + bstWrite16(masterConfig.motorConfig.minthrottle); + bstWrite16(masterConfig.motorConfig.maxthrottle); + bstWrite16(masterConfig.motorConfig.mincommand); bstWrite16(masterConfig.failsafeConfig.failsafe_throttle); @@ -1062,7 +1063,7 @@ static bool bstSlaveProcessWriteCommand(uint8_t bstWriteCommand) mac->range.startStep = bstRead8(); mac->range.endStep = bstRead8(); - useRcControlsConfig(masterConfig.modeActivationConditions, &masterConfig.escAndServoConfig, ¤tProfile->pidProfile); + useRcControlsConfig(masterConfig.modeActivationConditions, &masterConfig.motorConfig, ¤tProfile->pidProfile); } else { ret = BST_FAILED; } @@ -1114,9 +1115,9 @@ static bool bstSlaveProcessWriteCommand(uint8_t bstWriteCommand) if (tmp < 1600 && tmp > 1400) masterConfig.rxConfig.midrc = tmp; - masterConfig.escAndServoConfig.minthrottle = bstRead16(); - masterConfig.escAndServoConfig.maxthrottle = bstRead16(); - masterConfig.escAndServoConfig.mincommand = bstRead16(); + masterConfig.motorConfig.minthrottle = bstRead16(); + masterConfig.motorConfig.maxthrottle = bstRead16(); + masterConfig.motorConfig.mincommand = bstRead16(); masterConfig.failsafeConfig.failsafe_throttle = bstRead16(); diff --git a/src/main/target/MOTOLAB/config.c b/src/main/target/MOTOLAB/config.c index 5a38264fd6..e0314ad935 100755 --- a/src/main/target/MOTOLAB/config.c +++ b/src/main/target/MOTOLAB/config.c @@ -50,7 +50,8 @@ #include "io/beeper.h" #include "io/serial.h" #include "io/gimbal.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "fc/rc_controls.h" #include "fc/rc_curves.h" #include "io/ledstrip.h" diff --git a/src/main/target/RACEBASE/config.c b/src/main/target/RACEBASE/config.c index 65147d3db2..b1fb9c6107 100755 --- a/src/main/target/RACEBASE/config.c +++ b/src/main/target/RACEBASE/config.c @@ -54,7 +54,8 @@ #include "io/beeper.h" #include "io/serial.h" #include "io/gimbal.h" -#include "io/escservo.h" +#include "io/motors.h" +#include "io/servos.h" #include "io/ledstrip.h" #include "io/gps.h" #include "io/osd.h" diff --git a/src/main/telemetry/smartport.c b/src/main/telemetry/smartport.c index 402bf6a4f4..2152a9096a 100644 --- a/src/main/telemetry/smartport.c +++ b/src/main/telemetry/smartport.c @@ -31,7 +31,7 @@ #include "rx/msp.h" #include "io/beeper.h" -#include "io/escservo.h" +#include "io/motors.h" #include "fc/rc_controls.h" #include "io/gps.h" #include "io/gimbal.h"