mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-20 23:05:17 +03:00
mixerMode removed
This commit is contained in:
parent
bea8bd2abb
commit
9df8e5cfea
13 changed files with 34 additions and 119 deletions
|
@ -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:
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue