1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-20 23:05:17 +03:00

mixerMode removed

This commit is contained in:
Pawel Spychalski (DzikuVx) 2018-03-28 11:43:05 +02:00
parent bea8bd2abb
commit 9df8e5cfea
13 changed files with 34 additions and 119 deletions

View file

@ -476,7 +476,7 @@ static bool testBlackboxConditionUncached(FlightLogFieldCondition condition)
return getMotorCount() >= condition - FLIGHT_LOG_FIELD_CONDITION_AT_LEAST_MOTORS_1 + 1; return getMotorCount() >= condition - FLIGHT_LOG_FIELD_CONDITION_AT_LEAST_MOTORS_1 + 1;
case FLIGHT_LOG_FIELD_CONDITION_TRICOPTER: case FLIGHT_LOG_FIELD_CONDITION_TRICOPTER:
return mixerConfig()->mixerMode == MIXER_TRI || mixerConfig()->mixerMode == MIXER_CUSTOM_TRI; return mixerConfig()->platformType == PLATFORM_TRICOPTER;
case FLIGHT_LOG_FIELD_CONDITION_NONZERO_PID_D_0: case FLIGHT_LOG_FIELD_CONDITION_NONZERO_PID_D_0:
case FLIGHT_LOG_FIELD_CONDITION_NONZERO_PID_D_1: case FLIGHT_LOG_FIELD_CONDITION_NONZERO_PID_D_1:

View file

@ -18,6 +18,7 @@
#pragma once #pragma once
#include "drivers/io_types.h" #include "drivers/io_types.h"
#include "flight/mixer.h"
#if defined(TARGET_MOTOR_COUNT) #if defined(TARGET_MOTOR_COUNT)
#define MAX_PWM_MOTORS TARGET_MOTOR_COUNT #define MAX_PWM_MOTORS TARGET_MOTOR_COUNT
@ -43,12 +44,6 @@ typedef struct rangefinderIOConfig_s {
ioTag_t echoTag; ioTag_t echoTag;
} rangefinderIOConfig_t; } rangefinderIOConfig_t;
typedef enum {
PLATFORM_MULTIROTOR = 0,
PLATFORM_AIRPLANE = 1,
PLATFORM_HELICOPTER = 2
} flyingPlatformType_e;
typedef struct drv_pwm_config_s { typedef struct drv_pwm_config_s {
int flyingPlatformType; int flyingPlatformType;

View file

@ -1966,40 +1966,6 @@ static void cliGpsPassthrough(char *cmdline)
} }
#endif #endif
static void cliMixer(char *cmdline)
{
int len;
len = strlen(cmdline);
if (len == 0) {
cliPrintLinef("Mixer: %s", mixerNames[mixerConfigMutable()->mixerMode - 1]);
return;
} else if (sl_strncasecmp(cmdline, "list", len) == 0) {
cliPrint("Available mixers: ");
for (uint32_t i = 0; ; i++) {
if (mixerNames[i] == NULL)
break;
cliPrintf("%s ", mixerNames[i]);
}
cliPrintLinefeed();
return;
}
for (uint32_t i = 0; ; i++) {
if (mixerNames[i] == NULL) {
cliPrintLine("Invalid name");
return;
}
if (sl_strncasecmp(cmdline, mixerNames[i], len) == 0) {
mixerConfigMutable()->mixerMode = i + 1;
break;
}
}
cliMixer("");
}
static void cliMotor(char *cmdline) static void cliMotor(char *cmdline)
{ {
int motor_index = 0; int motor_index = 0;
@ -2529,11 +2495,6 @@ static void printConfig(const char *cmdline, bool doDiff)
//printResource(dumpMask, &defaultConfig); //printResource(dumpMask, &defaultConfig);
cliPrintHashLine("mixer"); cliPrintHashLine("mixer");
const bool equalsDefault = mixerConfig_Copy.mixerMode == mixerConfig()->mixerMode;
const char *formatMixer = "mixer %s";
cliDefaultPrintLinef(dumpMask, equalsDefault, formatMixer, mixerNames[mixerConfig()->mixerMode - 1]);
cliDumpPrintLinef(dumpMask, equalsDefault, formatMixer, mixerNames[mixerConfig_Copy.mixerMode - 1]);
cliDumpPrintLinef(dumpMask, customMotorMixer(0)->throttle == 0.0f, "\r\nmmix reset\r\n"); cliDumpPrintLinef(dumpMask, customMotorMixer(0)->throttle == 0.0f, "\r\nmmix reset\r\n");
printMotorMix(dumpMask, customMotorMixer_CopyArray, customMotorMixer(0)); printMotorMix(dumpMask, customMotorMixer_CopyArray, customMotorMixer(0));
@ -2696,9 +2657,6 @@ const clicmd_t cmdTable[] = {
CLI_COMMAND_DEF("led", "configure leds", NULL, cliLed), CLI_COMMAND_DEF("led", "configure leds", NULL, cliLed),
#endif #endif
CLI_COMMAND_DEF("map", "configure rc channel order", "[<map>]", cliMap), CLI_COMMAND_DEF("map", "configure rc channel order", "[<map>]", cliMap),
CLI_COMMAND_DEF("mixer", "configure mixer",
"list\r\n"
"\t<name>", cliMixer),
CLI_COMMAND_DEF("mmix", "custom motor mixer", NULL, cliMotorMix), CLI_COMMAND_DEF("mmix", "custom motor mixer", NULL, cliMotorMix),
CLI_COMMAND_DEF("motor", "get/set motor", "<index> [<value>]", cliMotor), CLI_COMMAND_DEF("motor", "get/set motor", "<index> [<value>]", cliMotor),
CLI_COMMAND_DEF("name", "name of craft", NULL, cliName), CLI_COMMAND_DEF("name", "name of craft", NULL, cliName),

View file

@ -610,7 +610,7 @@ void processRx(timeUs_t currentTimeUs)
} }
} }
if (mixerConfig()->mixerMode == MIXER_FLYING_WING || mixerConfig()->mixerMode == MIXER_AIRPLANE || mixerConfig()->mixerMode == MIXER_CUSTOM_AIRPLANE) { if (mixerConfig()->platformType == PLATFORM_AIRPLANE) {
DISABLE_FLIGHT_MODE(HEADFREE_MODE); DISABLE_FLIGHT_MODE(HEADFREE_MODE);
} }
@ -754,10 +754,8 @@ void taskMainPidLoop(timeUs_t currentTimeUs)
// motors do not spin up while we are trying to arm or disarm. // motors do not spin up while we are trying to arm or disarm.
// Allow yaw control for tricopters if the user wants the servo to move even when unarmed. // Allow yaw control for tricopters if the user wants the servo to move even when unarmed.
if (isUsingSticksForArming() && rcData[THROTTLE] <= rxConfig()->mincheck if (isUsingSticksForArming() && rcData[THROTTLE] <= rxConfig()->mincheck
&& !((mixerConfig()->mixerMode == MIXER_TRI || mixerConfig()->mixerMode == MIXER_CUSTOM_TRI) && servoConfig()->tri_unarmed_servo) && !((mixerConfig()->platformType == PLATFORM_TRICOPTER) && servoConfig()->tri_unarmed_servo)
&& mixerConfig()->mixerMode != MIXER_AIRPLANE && mixerConfig()->platformType != PLATFORM_AIRPLANE
&& mixerConfig()->mixerMode != MIXER_FLYING_WING
&& mixerConfig()->mixerMode != MIXER_CUSTOM_AIRPLANE
) { ) {
rcCommand[YAW] = 0; rcCommand[YAW] = 0;
} }

View file

@ -345,7 +345,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
// DEPRECATED - Use MSP_API_VERSION // DEPRECATED - Use MSP_API_VERSION
case MSP_IDENT: case MSP_IDENT:
sbufWriteU8(dst, MW_VERSION); sbufWriteU8(dst, MW_VERSION);
sbufWriteU8(dst, mixerConfig()->mixerMode); sbufWriteU8(dst, 3); //We no longer have mixerMode, just sent 3 (QuadX) as fallback
sbufWriteU8(dst, MSP_PROTOCOL_VERSION); sbufWriteU8(dst, MSP_PROTOCOL_VERSION);
sbufWriteU32(dst, CAP_PLATFORM_32BIT | CAP_DYNBALANCE | CAP_FLAPS | CAP_NAVCAP | CAP_EXTAUX); // "capability" sbufWriteU32(dst, CAP_PLATFORM_32BIT | CAP_DYNBALANCE | CAP_FLAPS | CAP_NAVCAP | CAP_EXTAUX); // "capability"
break; break;
@ -821,7 +821,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
break; break;
case MSP_MIXER: case MSP_MIXER:
sbufWriteU8(dst, mixerConfig()->mixerMode); sbufWriteU8(dst, 3); // mixerMode no longer supported, send 3 (QuadX) as fallback
break; break;
case MSP_RX_CONFIG: case MSP_RX_CONFIG:
@ -867,7 +867,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
break; break;
case MSP_BF_CONFIG: case MSP_BF_CONFIG:
sbufWriteU8(dst, mixerConfig()->mixerMode); sbufWriteU8(dst, 3); // mixerMode no longer supported, send 3 (QuadX) as fallback
sbufWriteU32(dst, featureMask()); sbufWriteU32(dst, featureMask());
@ -2162,7 +2162,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
case MSP_SET_MIXER: case MSP_SET_MIXER:
if (dataSize >= 1) { if (dataSize >= 1) {
mixerConfigMutable()->mixerMode = sbufReadU8(src); sbufReadU8(src); //This is ignored, no longer supporting mixerMode
mixerUpdateStateFlags(); // Required for correct preset functionality mixerUpdateStateFlags(); // Required for correct preset functionality
} else } else
return MSP_RESULT_ERROR; return MSP_RESULT_ERROR;
@ -2227,7 +2227,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
case MSP_SET_BF_CONFIG: case MSP_SET_BF_CONFIG:
if (dataSize >= 16) { if (dataSize >= 16) {
mixerConfigMutable()->mixerMode = sbufReadU8(src); // mixerMode sbufReadU8(src); // mixerMode no longer supported, just swallow
mixerUpdateStateFlags(); // Required for correct preset functionality mixerUpdateStateFlags(); // Required for correct preset functionality
featureClearAll(); featureClearAll();

View file

@ -91,7 +91,7 @@ tables:
values: ["PERCENT", "MAH", "MWH"] values: ["PERCENT", "MAH", "MWH"]
enum: smartportFuelUnit_e enum: smartportFuelUnit_e
- name: platform_type - name: platform_type
values: ["MULTIROTOR", "AIRPLANE", "HELICOPTER"] values: ["MULTIROTOR", "AIRPLANE", "HELICOPTER", "TRICOPTER", "ROVER", "BOAT"]
enum: flyingPlatformType_e enum: flyingPlatformType_e
groups: groups:

View file

@ -71,7 +71,6 @@ PG_RESET_TEMPLATE(flight3DConfig_t, flight3DConfig,
PG_REGISTER_WITH_RESET_TEMPLATE(mixerConfig_t, mixerConfig, PG_MIXER_CONFIG, 1); PG_REGISTER_WITH_RESET_TEMPLATE(mixerConfig_t, mixerConfig, PG_MIXER_CONFIG, 1);
PG_RESET_TEMPLATE(mixerConfig_t, mixerConfig, PG_RESET_TEMPLATE(mixerConfig_t, mixerConfig,
.mixerMode = MIXER_QUADX,
.yaw_motor_direction = 1, .yaw_motor_direction = 1,
.yaw_jump_prevention_limit = 200, .yaw_jump_prevention_limit = 200,
.platformType = PLATFORM_MULTIROTOR, .platformType = PLATFORM_MULTIROTOR,

View file

@ -28,36 +28,14 @@
#define YAW_JUMP_PREVENTION_LIMIT_LOW 80 #define YAW_JUMP_PREVENTION_LIMIT_LOW 80
#define YAW_JUMP_PREVENTION_LIMIT_HIGH 500 #define YAW_JUMP_PREVENTION_LIMIT_HIGH 500
typedef enum {
// Note: this is called MultiType/MULTITYPE_* in baseflight. PLATFORM_MULTIROTOR = 0,
typedef enum mixerMode PLATFORM_AIRPLANE = 1,
{ PLATFORM_HELICOPTER = 2,
MIXER_TRI = 1, PLATFORM_TRICOPTER = 3,
MIXER_QUADP = 2, PLATFORM_ROVER = 4,
MIXER_QUADX = 3, PLATFORM_BOAT = 5
MIXER_BICOPTER = 4, } flyingPlatformType_e;
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,
MIXER_CUSTOM_AIRPLANE = 24,
MIXER_CUSTOM_TRI = 25
} mixerMode_e;
#define DEFAULT_MIXER MIXER_QUADX #define DEFAULT_MIXER MIXER_QUADX
@ -77,7 +55,6 @@ typedef struct motorMixer_s {
PG_DECLARE_ARRAY(motorMixer_t, MAX_SUPPORTED_MOTORS, customMotorMixer); PG_DECLARE_ARRAY(motorMixer_t, MAX_SUPPORTED_MOTORS, customMotorMixer);
typedef struct mixerConfig_s { typedef struct mixerConfig_s {
uint8_t mixerMode;
int8_t yaw_motor_direction; int8_t yaw_motor_direction;
uint16_t yaw_jump_prevention_limit; // make limit configurable (original fixed value was 100) uint16_t yaw_jump_prevention_limit; // make limit configurable (original fixed value was 100)
uint8_t platformType; uint8_t platformType;

View file

@ -235,8 +235,7 @@ void writeServos(void)
/* /*
* in case of tricopters, there might me a need to zero servo output when unarmed * in case of tricopters, there might me a need to zero servo output when unarmed
*/ */
const mixerMode_e currentMixerMode = mixerConfig()->mixerMode; if (mixerConfig()->platformType == PLATFORM_TRICOPTER && !ARMING_FLAG(ARMED) && !servoConfig()->tri_unarmed_servo) {
if ((currentMixerMode == MIXER_TRI || currentMixerMode == MIXER_CUSTOM_TRI) && !ARMING_FLAG(ARMED) && !servoConfig()->tri_unarmed_servo) {
zeroServoValue = true; zeroServoValue = true;
} }

View file

@ -31,7 +31,6 @@
void targetConfiguration(void) void targetConfiguration(void)
{ {
mixerConfigMutable()->mixerMode = MIXER_HEX6X;
rxConfigMutable()->serialrx_provider = SERIALRX_SBUS; rxConfigMutable()->serialrx_provider = SERIALRX_SBUS;
rxConfigMutable()->receiverType = RX_TYPE_SERIAL; rxConfigMutable()->receiverType = RX_TYPE_SERIAL;
serialConfigMutable()->portConfigs[2].functionMask = FUNCTION_RX_SERIAL; serialConfigMutable()->portConfigs[2].functionMask = FUNCTION_RX_SERIAL;

View file

@ -43,7 +43,7 @@
void targetConfiguration(void) void targetConfiguration(void)
{ {
systemConfigMutable()->asyncMode = ASYNC_MODE_NONE; systemConfigMutable()->asyncMode = ASYNC_MODE_NONE;
mixerConfigMutable()->mixerMode = MIXER_QUADX; mixerConfigMutable()->platformType = PLATFORM_MULTIROTOR;
featureSet(FEATURE_VBAT); featureSet(FEATURE_VBAT);
featureSet(FEATURE_GPS); featureSet(FEATURE_GPS);

View file

@ -50,5 +50,5 @@ void targetConfiguration(void)
serialConfigMutable()->portConfigs[6].functionMask = FUNCTION_TELEMETRY_SMARTPORT; serialConfigMutable()->portConfigs[6].functionMask = FUNCTION_TELEMETRY_SMARTPORT;
telemetryConfigMutable()->smartportUartUnidirectional = 1; telemetryConfigMutable()->smartportUartUnidirectional = 1;
mixerConfigMutable()->mixerMode = MIXER_AIRPLANE; mixerConfigMutable()->platformType = PLATFORM_AIRPLANE;
} }

View file

@ -428,34 +428,24 @@ void mavlinkSendHUDAndHeartbeat(void)
mavModes |= MAV_MODE_FLAG_SAFETY_ARMED; mavModes |= MAV_MODE_FLAG_SAFETY_ARMED;
uint8_t mavSystemType; uint8_t mavSystemType;
switch (mixerConfig()->mixerMode) switch (mixerConfig()->platformType)
{ {
case MIXER_TRI: case PLATFORM_MULTIROTOR:
mavSystemType = MAV_TYPE_TRICOPTER;
break;
case MIXER_QUADP:
case MIXER_QUADX:
case MIXER_Y4:
case MIXER_VTAIL4:
mavSystemType = MAV_TYPE_QUADROTOR; mavSystemType = MAV_TYPE_QUADROTOR;
break; break;
case MIXER_Y6: case PLATFORM_TRICOPTER:
case MIXER_HEX6: mavSystemType = MAV_TYPE_TRICOPTER;
case MIXER_HEX6X:
mavSystemType = MAV_TYPE_HEXAROTOR;
break; break;
case MIXER_OCTOX8: case PLATFORM_AIRPLANE:
case MIXER_OCTOFLATP:
case MIXER_OCTOFLATX:
mavSystemType = MAV_TYPE_OCTOROTOR;
break;
case MIXER_FLYING_WING:
case MIXER_AIRPLANE:
case MIXER_CUSTOM_AIRPLANE:
mavSystemType = MAV_TYPE_FIXED_WING; mavSystemType = MAV_TYPE_FIXED_WING;
break; break;
case MIXER_HELI_120_CCPM: case PLATFORM_ROVER:
case MIXER_HELI_90_DEG: mavSystemType = MAV_TYPE_GROUND_ROVER;
break;
case PLATFORM_BOAT:
mavSystemType = MAV_TYPE_SURFACE_BOAT;
break;
case PLATFORM_HELICOPTER:
mavSystemType = MAV_TYPE_HELICOPTER; mavSystemType = MAV_TYPE_HELICOPTER;
break; break;
default: default: