diff --git a/src/main/config/config.c b/src/main/config/config.c index 736aad70d8..485c0793a5 100644 --- a/src/main/config/config.c +++ b/src/main/config/config.c @@ -309,7 +309,7 @@ static void resetConf(void) setControlRateProfile(0); masterConfig.version = EEPROM_CONF_VERSION; - masterConfig.mixerConfiguration = MULTITYPE_QUADX; + masterConfig.mixerMode = MIXER_QUADX; featureClearAll(); #if defined(CJMCU) || defined(SPARKY) featureSet(FEATURE_RX_PPM); diff --git a/src/main/config/config_master.h b/src/main/config/config_master.h index e3f1eeb03a..6b1f1a16d1 100644 --- a/src/main/config/config_master.h +++ b/src/main/config/config_master.h @@ -23,7 +23,7 @@ typedef struct master_t { uint16_t size; uint8_t magic_be; // magic number, should be 0xBE - uint8_t mixerConfiguration; + uint8_t mixerMode; uint32_t enabledFeatures; uint16_t looptime; // imu loop time in us uint8_t emf_avoidance; // change pll settings to avoid noise in the uhf band diff --git a/src/main/flight/imu.c b/src/main/flight/imu.c index ffdbeb234f..a9eb8b0de5 100644 --- a/src/main/flight/imu.c +++ b/src/main/flight/imu.c @@ -103,7 +103,7 @@ void calculateAccZLowPassFilterRCTimeConstant(float accz_lpf_cutoff) fc_acc = 0.5f / (M_PI * accz_lpf_cutoff); // calculate RC time constant used in the accZ lpf } -void computeIMU(rollAndPitchTrims_t *accelerometerTrims, uint8_t mixerConfiguration) +void computeIMU(rollAndPitchTrims_t *accelerometerTrims, uint8_t mixerMode) { static int16_t gyroYawSmooth = 0; @@ -120,7 +120,7 @@ void computeIMU(rollAndPitchTrims_t *accelerometerTrims, uint8_t mixerConfigurat gyroData[FD_ROLL] = gyroADC[FD_ROLL]; gyroData[FD_PITCH] = gyroADC[FD_PITCH]; - if (mixerConfiguration == MULTITYPE_TRI) { + if (mixerMode == MIXER_TRI) { gyroData[FD_YAW] = (gyroYawSmooth * 2 + gyroADC[FD_YAW]) / 3; gyroYawSmooth = gyroData[FD_YAW]; } else { diff --git a/src/main/flight/imu.h b/src/main/flight/imu.h index d8039f2b59..de5ac89f01 100644 --- a/src/main/flight/imu.h +++ b/src/main/flight/imu.h @@ -33,7 +33,7 @@ typedef struct imuRuntimeConfig_s { void configureImu(imuRuntimeConfig_t *initialImuRuntimeConfig, pidProfile_t *initialPidProfile, accDeadband_t *initialAccDeadband); void calculateEstimatedAltitude(uint32_t currentTime); -void computeIMU(rollAndPitchTrims_t *accelerometerTrims, uint8_t mixerConfiguration); +void computeIMU(rollAndPitchTrims_t *accelerometerTrims, uint8_t mixerMode); void calculateThrottleAngleScale(uint16_t throttle_correction_angle); int16_t calculateThrottleAngleCorrection(uint8_t throttle_correction_value); void calculateAccZLowPassFilterRCTimeConstant(float accz_lpf_cutoff); diff --git a/src/main/flight/mixer.c b/src/main/flight/mixer.c index fe8de6742b..4b8eef340e 100644 --- a/src/main/flight/mixer.c +++ b/src/main/flight/mixer.c @@ -62,7 +62,7 @@ static rxConfig_t *rxConfig; static gimbalConfig_t *gimbalConfig; static motorMixer_t currentMixer[MAX_SUPPORTED_MOTORS]; -static multiType_e currentMixerConfiguration; +static mixerMode_e currentMixerMode; static const motorMixer_t mixerQuadX[] = { { 1.0f, -1.0f, 1.0f, -1.0f }, // REAR_R @@ -188,29 +188,29 @@ static const motorMixer_t mixerDualcopter[] = { const mixer_t mixers[] = { // Mo Se Mixtable { 0, 0, NULL }, // entry 0 - { 3, 1, mixerTri }, // MULTITYPE_TRI - { 4, 0, mixerQuadP }, // MULTITYPE_QUADP - { 4, 0, mixerQuadX }, // MULTITYPE_QUADX - { 2, 1, mixerBi }, // MULTITYPE_BI - { 0, 1, NULL }, // * MULTITYPE_GIMBAL - { 6, 0, mixerY6 }, // MULTITYPE_Y6 - { 6, 0, mixerHex6P }, // MULTITYPE_HEX6 - { 1, 1, NULL }, // * MULTITYPE_FLYING_WING - { 4, 0, mixerY4 }, // MULTITYPE_Y4 - { 6, 0, mixerHex6X }, // MULTITYPE_HEX6X - { 8, 0, mixerOctoX8 }, // MULTITYPE_OCTOX8 - { 8, 0, mixerOctoFlatP }, // MULTITYPE_OCTOFLATP - { 8, 0, mixerOctoFlatX }, // MULTITYPE_OCTOFLATX - { 1, 1, NULL }, // * MULTITYPE_AIRPLANE - { 0, 1, NULL }, // * MULTITYPE_HELI_120_CCPM - { 0, 1, NULL }, // * MULTITYPE_HELI_90_DEG - { 4, 0, mixerVtail4 }, // MULTITYPE_VTAIL4 - { 6, 0, mixerHex6H }, // MULTITYPE_HEX6H - { 0, 1, NULL }, // * MULTITYPE_PPM_TO_SERVO - { 2, 1, mixerDualcopter }, // MULTITYPE_DUALCOPTER - { 1, 1, NULL }, // MULTITYPE_SINGLECOPTER - { 4, 0, mixerAtail4 }, // MULTITYPE_ATAIL4 - { 0, 0, NULL }, // MULTITYPE_CUSTOM + { 3, 1, mixerTri }, // MIXER_TRI + { 4, 0, mixerQuadP }, // MIXER_QUADP + { 4, 0, mixerQuadX }, // MIXER_QUADX + { 2, 1, mixerBi }, // MIXER_BI + { 0, 1, NULL }, // * MIXER_GIMBAL + { 6, 0, mixerY6 }, // MIXER_Y6 + { 6, 0, mixerHex6P }, // MIXER_HEX6 + { 1, 1, NULL }, // * MIXER_FLYING_WING + { 4, 0, mixerY4 }, // MIXER_Y4 + { 6, 0, mixerHex6X }, // MIXER_HEX6X + { 8, 0, mixerOctoX8 }, // MIXER_OCTOX8 + { 8, 0, mixerOctoFlatP }, // MIXER_OCTOFLATP + { 8, 0, mixerOctoFlatX }, // MIXER_OCTOFLATX + { 1, 1, NULL }, // * MIXER_AIRPLANE + { 0, 1, NULL }, // * MIXER_HELI_120_CCPM + { 0, 1, NULL }, // * MIXER_HELI_90_DEG + { 4, 0, mixerVtail4 }, // MIXER_VTAIL4 + { 6, 0, mixerHex6H }, // MIXER_HEX6H + { 0, 1, NULL }, // * MIXER_PPM_TO_SERVO + { 2, 1, mixerDualcopter }, // MIXER_DUALCOPTER + { 1, 1, NULL }, // MIXER_SINGLECOPTER + { 4, 0, mixerAtail4 }, // MIXER_ATAIL4 + { 0, 0, NULL }, // MIXER_CUSTOM }; #endif @@ -258,14 +258,14 @@ static motorMixer_t *customMixers; #ifndef USE_QUAD_MIXER_ONLY -void mixerInit(multiType_e mixerConfiguration, motorMixer_t *initialCustomMixers) +void mixerInit(mixerMode_e mixerMode, motorMixer_t *initialCustomMixers) { - currentMixerConfiguration = mixerConfiguration; + currentMixerMode = mixerMode; customMixers = initialCustomMixers; // enable servos for mixes that require them. note, this shifts motor counts. - useServo = mixers[currentMixerConfiguration].useServo; + 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; @@ -277,7 +277,7 @@ void mixerUsePWMOutputConfiguration(pwmOutputConfiguration_t *pwmOutputConfigura servoCount = pwmOutputConfiguration->servoCount; - if (currentMixerConfiguration == MULTITYPE_CUSTOM) { + if (currentMixerMode == MIXER_CUSTOM) { // load custom mixer into currentMixer for (i = 0; i < MAX_SUPPORTED_MOTORS; i++) { // check if done @@ -287,11 +287,11 @@ void mixerUsePWMOutputConfiguration(pwmOutputConfiguration_t *pwmOutputConfigura motorCount++; } } else { - motorCount = mixers[currentMixerConfiguration].motorCount; + motorCount = mixers[currentMixerMode].motorCount; // copy motor-based mixers - if (mixers[currentMixerConfiguration].motor) { + if (mixers[currentMixerMode].motor) { for (i = 0; i < motorCount; i++) - currentMixer[i] = mixers[currentMixerConfiguration].motor[i]; + currentMixer[i] = mixers[currentMixerMode].motor[i]; } } @@ -307,8 +307,8 @@ void mixerUsePWMOutputConfiguration(pwmOutputConfiguration_t *pwmOutputConfigura } // set flag that we're on something with wings - if (currentMixerConfiguration == MULTITYPE_FLYING_WING || - currentMixerConfiguration == MULTITYPE_AIRPLANE) + if (currentMixerMode == MIXER_FLYING_WING || + currentMixerMode == MIXER_AIRPLANE) ENABLE_STATE(FIXED_WING); else DISABLE_STATE(FIXED_WING); @@ -335,9 +335,9 @@ void mixerLoadMix(int index, motorMixer_t *customMixers) #else -void mixerInit(multiType_e mixerConfiguration, motorMixer_t *initialCustomMixers) +void mixerInit(mixerMode_e mixerMode, motorMixer_t *initialCustomMixers) { - currentMixerConfiguration = mixerConfiguration; + currentMixerMode = mixerMode; customMixers = initialCustomMixers; @@ -359,7 +359,6 @@ void mixerUsePWMOutputConfiguration(pwmOutputConfiguration_t *pwmOutputConfigura } #endif - void mixerResetMotors(void) { int i; @@ -379,13 +378,13 @@ void writeServos(void) if (!useServo) return; - switch (currentMixerConfiguration) { - case MULTITYPE_BI: + switch (currentMixerMode) { + case MIXER_BI: pwmWriteServo(0, servo[4]); pwmWriteServo(1, servo[5]); break; - case MULTITYPE_TRI: + case MIXER_TRI: if (mixerConfig->tri_unarmed_servo) { // if unarmed flag set, we always move servo pwmWriteServo(0, servo[5]); @@ -398,22 +397,22 @@ void writeServos(void) } break; - case MULTITYPE_FLYING_WING: + case MIXER_FLYING_WING: pwmWriteServo(0, servo[3]); pwmWriteServo(1, servo[4]); break; - case MULTITYPE_GIMBAL: + case MIXER_GIMBAL: updateGimbalServos(); break; - case MULTITYPE_DUALCOPTER: + case MIXER_DUALCOPTER: pwmWriteServo(0, servo[4]); pwmWriteServo(1, servo[5]); break; - case MULTITYPE_AIRPLANE: - case MULTITYPE_SINGLECOPTER: + case MIXER_AIRPLANE: + case MIXER_SINGLECOPTER: pwmWriteServo(0, servo[3]); pwmWriteServo(1, servo[4]); pwmWriteServo(2, servo[5]); @@ -517,26 +516,26 @@ void mixTable(void) #ifndef USE_QUAD_MIXER_ONLY // airplane / servo mixes - switch (currentMixerConfiguration) { - case MULTITYPE_BI: + switch (currentMixerMode) { + case MIXER_BI: servo[4] = (servoDirection(4, 2) * axisPID[YAW]) + (servoDirection(4, 1) * axisPID[PITCH]) + determineServoMiddleOrForwardFromChannel(4); // LEFT servo[5] = (servoDirection(5, 2) * axisPID[YAW]) + (servoDirection(5, 1) * axisPID[PITCH]) + determineServoMiddleOrForwardFromChannel(5); // RIGHT break; - case MULTITYPE_TRI: + case MIXER_TRI: servo[5] = (servoDirection(5, 1) * axisPID[YAW]) + determineServoMiddleOrForwardFromChannel(5); // REAR break; - case MULTITYPE_GIMBAL: + case MIXER_GIMBAL: servo[0] = (((int32_t)servoConf[0].rate * inclination.values.pitchDeciDegrees) / 50) + determineServoMiddleOrForwardFromChannel(0); servo[1] = (((int32_t)servoConf[1].rate * inclination.values.rollDeciDegrees) / 50) + determineServoMiddleOrForwardFromChannel(1); break; - case MULTITYPE_AIRPLANE: + case MIXER_AIRPLANE: airplaneMixer(); break; - case MULTITYPE_FLYING_WING: + case MIXER_FLYING_WING: if (!ARMING_FLAG(ARMED)) servo[7] = escAndServoConfig->mincommand; else @@ -555,14 +554,14 @@ void mixTable(void) servo[4] += determineServoMiddleOrForwardFromChannel(4); break; - case MULTITYPE_DUALCOPTER: + case MIXER_DUALCOPTER: for (i = 4; i < 6; i++) { servo[i] = axisPID[5 - i] * servoDirection(i, 1); // mix and setup direction servo[i] += determineServoMiddleOrForwardFromChannel(i); } break; - case MULTITYPE_SINGLECOPTER: + case MIXER_SINGLECOPTER: for (i = 3; i < 7; i++) { servo[i] = (axisPID[YAW] * servoDirection(i, 2)) + (axisPID[(6 - i) >> 1] * servoDirection(i, 1)); // mix and setup direction servo[i] += determineServoMiddleOrForwardFromChannel(i); diff --git a/src/main/flight/mixer.h b/src/main/flight/mixer.h index 2d3d1c700d..f198fd11dd 100644 --- a/src/main/flight/mixer.h +++ b/src/main/flight/mixer.h @@ -20,33 +20,33 @@ #define MAX_SUPPORTED_MOTORS 12 #define MAX_SUPPORTED_SERVOS 8 -typedef enum MultiType +// Note: this is called MultiType/MULTITYPE_* in baseflight. +typedef enum mixerMode { - MULTITYPE_TRI = 1, - MULTITYPE_QUADP = 2, - MULTITYPE_QUADX = 3, - MULTITYPE_BI = 4, - MULTITYPE_GIMBAL = 5, - MULTITYPE_Y6 = 6, - MULTITYPE_HEX6 = 7, - MULTITYPE_FLYING_WING = 8, - MULTITYPE_Y4 = 9, - MULTITYPE_HEX6X = 10, - MULTITYPE_OCTOX8 = 11, - MULTITYPE_OCTOFLATP = 12, - MULTITYPE_OCTOFLATX = 13, - MULTITYPE_AIRPLANE = 14, // airplane / singlecopter / dualcopter (not yet properly supported) - MULTITYPE_HELI_120_CCPM = 15, - MULTITYPE_HELI_90_DEG = 16, - MULTITYPE_VTAIL4 = 17, - MULTITYPE_HEX6H = 18, - MULTITYPE_PPM_TO_SERVO = 19, // PPM -> servo relay - MULTITYPE_DUALCOPTER = 20, - MULTITYPE_SINGLECOPTER = 21, - MULTITYPE_ATAIL4 = 22, - MULTITYPE_CUSTOM = 23, - MULTITYPE_LAST = 24 -} multiType_e; + MIXER_TRI = 1, + MIXER_QUADP = 2, + MIXER_QUADX = 3, + MIXER_BI = 4, + MIXER_GIMBAL = 5, + MIXER_Y6 = 6, + MIXER_HEX6 = 7, + MIXER_FLYING_WING = 8, + MIXER_Y4 = 9, + MIXER_HEX6X = 10, + MIXER_OCTOX8 = 11, + MIXER_OCTOFLATP = 12, + MIXER_OCTOFLATX = 13, + MIXER_AIRPLANE = 14, // airplane / singlecopter / dualcopter (not yet properly supported) + MIXER_HELI_120_CCPM = 15, + MIXER_HELI_90_DEG = 16, + MIXER_VTAIL4 = 17, + MIXER_HEX6H = 18, + MIXER_PPM_TO_SERVO = 19, // PPM -> servo relay + MIXER_DUALCOPTER = 20, + MIXER_SINGLECOPTER = 21, + MIXER_ATAIL4 = 22, + MIXER_CUSTOM = 23 +} mixerMode_e; // Custom mixer data per motor typedef struct motorMixer_t { diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index 5525de67ca..c3c647b39e 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -119,7 +119,7 @@ static char cliBuffer[48]; static uint32_t bufferIndex = 0; #ifndef USE_QUAD_MIXER_ONLY -// sync this with multiType_e +// sync this with mixerMode_e static const char * const mixerNames[] = { "TRI", "QUADP", "QUADX", "BI", "GIMBAL", "Y6", "HEX6", @@ -783,7 +783,7 @@ static void cliDump(char *cmdline) printf("\r\n# mixer\r\n"); #ifndef USE_QUAD_MIXER_ONLY - printf("mixer %s\r\n", mixerNames[masterConfig.mixerConfiguration - 1]); + printf("mixer %s\r\n", mixerNames[masterConfig.mixerMode - 1]); if (masterConfig.customMixer[0].throttle != 0.0f) { for (i = 0; i < MAX_SUPPORTED_MOTORS; i++) { @@ -1032,7 +1032,7 @@ static void cliMixer(char *cmdline) len = strlen(cmdline); if (len == 0) { - printf("Current mixer: %s\r\n", mixerNames[masterConfig.mixerConfiguration - 1]); + printf("Current mixer: %s\r\n", mixerNames[masterConfig.mixerMode - 1]); return; } else if (strncasecmp(cmdline, "list", len) == 0) { cliPrint("Available mixers: "); @@ -1051,7 +1051,7 @@ static void cliMixer(char *cmdline) break; } if (strncasecmp(cmdline, mixerNames[i], len) == 0) { - masterConfig.mixerConfiguration = i + 1; + masterConfig.mixerMode = i + 1; printf("Mixer set to %s\r\n", mixerNames[i]); break; } diff --git a/src/main/io/serial_msp.c b/src/main/io/serial_msp.c index dd7775ffc4..27268a7795 100644 --- a/src/main/io/serial_msp.c +++ b/src/main/io/serial_msp.c @@ -225,7 +225,7 @@ const char *boardIdentifier = TARGET_BOARD_IDENTIFIER; // // DEPRECATED - See MSP_API_VERSION and MSP_MIXER -#define MSP_IDENT 100 //out message multitype + multiwii version + protocol version + capability variable +#define MSP_IDENT 100 //out message mixerMode + multiwii version + protocol version + capability variable #define MSP_STATUS 101 //out message cycletime & errors_count & sensor present & box activation & current setting number @@ -616,7 +616,7 @@ void mspInit(serialConfig_t *serialConfig) } #endif - if (masterConfig.mixerConfiguration == MULTITYPE_FLYING_WING || masterConfig.mixerConfiguration == MULTITYPE_AIRPLANE) + if (masterConfig.mixerMode == MIXER_FLYING_WING || masterConfig.mixerMode == MIXER_AIRPLANE) activeBoxIds[activeBoxIdCount++] = BOXPASSTHRU; activeBoxIds[activeBoxIdCount++] = BOXBEEPERON; @@ -711,7 +711,7 @@ static bool processOutCommand(uint8_t cmdMSP) case MSP_IDENT: headSerialReply(7); serialize8(MW_VERSION); - serialize8(masterConfig.mixerConfiguration); // type of multicopter + serialize8(masterConfig.mixerMode); serialize8(MSP_PROTOCOL_VERSION); serialize32(CAP_DYNBALANCE | (masterConfig.airplaneConfig.flaps_speed ? CAP_FLAPS : 0)); // "capability" break; @@ -1027,7 +1027,7 @@ static bool processOutCommand(uint8_t cmdMSP) case MSP_MIXER: headSerialReply(1); - serialize8(masterConfig.mixerConfiguration); + serialize8(masterConfig.mixerMode); break; case MSP_RX_CONFIG: @@ -1052,7 +1052,7 @@ static bool processOutCommand(uint8_t cmdMSP) case MSP_CONFIG: headSerialReply(1 + 4 + 1 + 2 + 2 + 2 + 2 + 2); - serialize8(masterConfig.mixerConfiguration); + serialize8(masterConfig.mixerMode); serialize32(featureMask()); @@ -1342,7 +1342,7 @@ static bool processInCommand(void) #ifndef USE_QUAD_MIXER_ONLY case MSP_SET_MIXER: - masterConfig.mixerConfiguration = read8(); + masterConfig.mixerMode = read8(); break; #endif @@ -1367,9 +1367,9 @@ static bool processInCommand(void) case MSP_SET_CONFIG: #ifdef USE_QUAD_MIXER_ONLY - read8(); // multitype ignored + read8(); // mixerMode ignored #else - masterConfig.mixerConfiguration = read8(); // multitype + masterConfig.mixerMode = read8(); // mixerMode #endif featureClearAll(); diff --git a/src/main/main.c b/src/main/main.c index 4e5d560be1..eb12aa9d44 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -96,7 +96,7 @@ void initTelemetry(void); void serialInit(serialConfig_t *initialSerialConfig); failsafe_t* failsafeInit(rxConfig_t *intialRxConfig); pwmOutputConfiguration_t *pwmInit(drv_pwm_config_t *init); -void mixerInit(multiType_e mixerConfiguration, motorMixer_t *customMixers); +void mixerInit(mixerMode_e mixerMode, motorMixer_t *customMixers); void mixerUsePWMOutputConfiguration(pwmOutputConfiguration_t *pwmOutputConfiguration); void rxInit(rxConfig_t *rxConfig, failsafe_t *failsafe); void beepcodeInit(failsafe_t *initialFailsafe); @@ -264,7 +264,7 @@ void init(void) LED1_OFF; imuInit(); - mixerInit(masterConfig.mixerConfiguration, masterConfig.customMixer); + mixerInit(masterConfig.mixerMode, masterConfig.customMixer); #ifdef MAG if (sensors(SENSOR_MAG)) @@ -275,7 +275,7 @@ void init(void) memset(&pwm_params, 0, sizeof(pwm_params)); // when using airplane/wing mixer, servo/motor outputs are remapped - if (masterConfig.mixerConfiguration == MULTITYPE_AIRPLANE || masterConfig.mixerConfiguration == MULTITYPE_FLYING_WING) + if (masterConfig.mixerMode == MIXER_AIRPLANE || masterConfig.mixerMode == MIXER_FLYING_WING) pwm_params.airplane = true; else pwm_params.airplane = false; @@ -345,7 +345,7 @@ void init(void) previousTime = micros(); - if (masterConfig.mixerConfiguration == MULTITYPE_GIMBAL) { + if (masterConfig.mixerMode == MIXER_GIMBAL) { accSetCalibrationCycles(CALIBRATING_ACC_CYCLES); } gyroSetCalibrationCycles(CALIBRATING_GYRO_CYCLES); diff --git a/src/main/mw.c b/src/main/mw.c index 58c56f85cb..93427736f8 100644 --- a/src/main/mw.c +++ b/src/main/mw.c @@ -574,7 +574,7 @@ void processRx(void) DISABLE_FLIGHT_MODE(PASSTHRU_MODE); } - if (masterConfig.mixerConfiguration == MULTITYPE_FLYING_WING || masterConfig.mixerConfiguration == MULTITYPE_AIRPLANE) { + if (masterConfig.mixerMode == MIXER_FLYING_WING || masterConfig.mixerMode == MIXER_AIRPLANE) { DISABLE_FLIGHT_MODE(HEADFREE_MODE); } } @@ -627,7 +627,7 @@ void loop(void) if (masterConfig.looptime == 0 || (int32_t)(currentTime - loopTime) >= 0) { loopTime = currentTime + masterConfig.looptime; - computeIMU(¤tProfile->accelerometerTrims, masterConfig.mixerConfiguration); + computeIMU(¤tProfile->accelerometerTrims, masterConfig.mixerMode); // Measure loop rate just after reading the sensors currentTime = micros();