diff --git a/src/main/fc/fc_core.c b/src/main/fc/fc_core.c index 9593ddd9ad..a61204dee9 100644 --- a/src/main/fc/fc_core.c +++ b/src/main/fc/fc_core.c @@ -679,18 +679,19 @@ void processRx(timeUs_t currentTimeUs) bool emergRearmAngleEnforce = STATE(MULTIROTOR) && emergRearmStabiliseTimeout > US2MS(currentTimeUs); bool autoEnableAngle = failsafeRequiresAngleMode() || navigationRequiresAngleMode() || emergRearmAngleEnforce; - /* Disable modes initially, will be enabled as required with priority ANGLE > HORIZON > ATTITUDE HOLD */ + /* Disable stabilised modes initially, will be enabled as required with priority ANGLE > HORIZON > ANGLEHOLD + * MANUAL mode has priority over these modes except when ANGLE auto enabled */ DISABLE_FLIGHT_MODE(ANGLE_MODE); DISABLE_FLIGHT_MODE(HORIZON_MODE); - DISABLE_FLIGHT_MODE(ATTIHOLD_MODE); + DISABLE_FLIGHT_MODE(ANGLEHOLD_MODE); - if (sensors(SENSOR_ACC)) { + if (sensors(SENSOR_ACC) && (!FLIGHT_MODE(MANUAL_MODE) || autoEnableAngle)) { if (IS_RC_MODE_ACTIVE(BOXANGLE) || autoEnableAngle) { ENABLE_FLIGHT_MODE(ANGLE_MODE); } else if (IS_RC_MODE_ACTIVE(BOXHORIZON)) { ENABLE_FLIGHT_MODE(HORIZON_MODE); - } else if (STATE(AIRPLANE) && IS_RC_MODE_ACTIVE(BOXATTIHOLD)) { - ENABLE_FLIGHT_MODE(ATTIHOLD_MODE); + } else if (STATE(AIRPLANE) && IS_RC_MODE_ACTIVE(BOXANGLEHOLD)) { + ENABLE_FLIGHT_MODE(ANGLEHOLD_MODE); } } diff --git a/src/main/fc/fc_msp_box.c b/src/main/fc/fc_msp_box.c index 2258045f94..5728fd6933 100644 --- a/src/main/fc/fc_msp_box.c +++ b/src/main/fc/fc_msp_box.c @@ -102,7 +102,7 @@ static const box_t boxes[CHECKBOX_ITEM_COUNT + 1] = { { .boxId = BOXMULTIFUNCTION, .boxName = "MULTI FUNCTION", .permanentId = 61 }, { .boxId = BOXMIXERPROFILE, .boxName = "MIXER PROFILE 2", .permanentId = 62 }, { .boxId = BOXMIXERTRANSITION, .boxName = "MIXER TRANSITION", .permanentId = 63 }, - { .boxId = BOXATTIHOLD, .boxName = "ATTITUDE HOLD", .permanentId = 64 }, + { .boxId = BOXANGLEHOLD, .boxName = "ANGLE HOLD", .permanentId = 64 }, { .boxId = CHECKBOX_ITEM_COUNT, .boxName = NULL, .permanentId = 0xFF } }; @@ -281,7 +281,7 @@ void initActiveBoxIds(void) ADD_ACTIVE_BOX(BOXAUTOLEVEL); } if (sensors(SENSOR_ACC)) { - ADD_ACTIVE_BOX(BOXATTIHOLD); + ADD_ACTIVE_BOX(BOXANGLEHOLD); } } @@ -436,7 +436,7 @@ void packBoxModeFlags(boxBitmask_t * mspBoxModeFlags) CHECK_ACTIVE_BOX(IS_ENABLED(currentMixerProfileIndex), BOXMIXERPROFILE); CHECK_ACTIVE_BOX(IS_ENABLED(IS_RC_MODE_ACTIVE(BOXMIXERTRANSITION)), BOXMIXERTRANSITION); #endif - CHECK_ACTIVE_BOX(IS_ENABLED(IS_RC_MODE_ACTIVE(BOXATTIHOLD)), BOXATTIHOLD); + CHECK_ACTIVE_BOX(IS_ENABLED(IS_RC_MODE_ACTIVE(BOXANGLEHOLD)), BOXANGLEHOLD); memset(mspBoxModeFlags, 0, sizeof(boxBitmask_t)); for (uint32_t i = 0; i < activeBoxIdCount; i++) { if (activeBoxes[activeBoxIds[i]]) { diff --git a/src/main/fc/rc_modes.h b/src/main/fc/rc_modes.h index 47166fc7e2..fa1827a6ad 100644 --- a/src/main/fc/rc_modes.h +++ b/src/main/fc/rc_modes.h @@ -81,7 +81,7 @@ typedef enum { BOXMULTIFUNCTION = 52, BOXMIXERPROFILE = 53, BOXMIXERTRANSITION = 54, - BOXATTIHOLD = 55, + BOXANGLEHOLD = 55, CHECKBOX_ITEM_COUNT } boxId_e; diff --git a/src/main/fc/runtime_config.c b/src/main/fc/runtime_config.c index c37e306e8e..daeb9cbbcd 100644 --- a/src/main/fc/runtime_config.c +++ b/src/main/fc/runtime_config.c @@ -158,8 +158,8 @@ flightModeForTelemetry_e getFlightModeForTelemetry(void) if (FLIGHT_MODE(HORIZON_MODE)) return FLM_HORIZON; - if (FLIGHT_MODE(ATTIHOLD_MODE)) - return FLM_ATTIHOLD; + if (FLIGHT_MODE(ANGLEHOLD_MODE)) + return FLM_ANGLEHOLD; return STATE(AIRMODE_ACTIVE) ? FLM_ACRO_AIR : FLM_ACRO; } diff --git a/src/main/fc/runtime_config.h b/src/main/fc/runtime_config.h index e35d8cf2e8..c532b77eee 100644 --- a/src/main/fc/runtime_config.h +++ b/src/main/fc/runtime_config.h @@ -104,7 +104,7 @@ typedef enum { TURN_ASSISTANT = (1 << 14), TURTLE_MODE = (1 << 15), SOARING_MODE = (1 << 16), - ATTIHOLD_MODE = (1 << 17), + ANGLEHOLD_MODE = (1 << 17), } flightModeFlags_e; extern uint32_t flightModeFlags; @@ -163,7 +163,7 @@ typedef enum { FLM_CRUISE, FLM_LAUNCH, FLM_FAILSAFE, - FLM_ATTIHOLD, + FLM_ANGLEHOLD, FLM_COUNT } flightModeForTelemetry_e; diff --git a/src/main/flight/pid.c b/src/main/flight/pid.c index 64cc5289b4..c825367a0e 100644 --- a/src/main/flight/pid.c +++ b/src/main/flight/pid.c @@ -159,7 +159,8 @@ typedef void (*pidControllerFnPtr)(pidState_t *pidState, flight_dynamics_index_t static EXTENDED_FASTRAM pidControllerFnPtr pidControllerApplyFn; static EXTENDED_FASTRAM filterApplyFnPtr dTermLpfFilterApplyFn; static EXTENDED_FASTRAM bool levelingEnabled = false; -static EXTENDED_FASTRAM bool attiHoldIsLevel = false; +static EXTENDED_FASTRAM bool restartAngleHoldMode = true; +static EXTENDED_FASTRAM bool angleHoldIsLevel = false; #define FIXED_WING_LEVEL_TRIM_MAX_ANGLE 10.0f // Max angle auto trimming can demand #define FIXED_WING_LEVEL_TRIM_DIVIDER 50.0f @@ -1065,58 +1066,57 @@ void checkItermFreezingActive(pidState_t *pidState, flight_dynamics_index_t axis } -bool isAttiholdLevel(void) +bool isAngleHoldLevel(void) { - return attiHoldIsLevel; + return angleHoldIsLevel; } -void updateAttihold(float *angleTarget, uint8_t axis) +void updateAngleHold(float *angleTarget, uint8_t axis) { - int8_t navAttiHoldAxis = navCheckActiveAttiHoldAxis(); - static bool restartAttiMode = true; + int8_t navAngleHoldAxis = navCheckActiveAngleHoldAxis(); + // static bool restartAngleHoldMode = true; - if (!restartAttiMode) { // reset flags for when attitude hold is inactive - restartAttiMode = !FLIGHT_MODE(ATTIHOLD_MODE) && navAttiHoldAxis == -1; - attiHoldIsLevel = restartAttiMode ? false: attiHoldIsLevel; + if (!restartAngleHoldMode) { // set restart flag when attitude hold is inactive + restartAngleHoldMode = !FLIGHT_MODE(ANGLEHOLD_MODE) && navAngleHoldAxis == -1; } - if ((FLIGHT_MODE(ATTIHOLD_MODE) || axis == navAttiHoldAxis) && !isFlightAxisAngleOverrideActive(axis)) { - /* attiHoldTarget stores attitude values using a zero datum when level. - * This requires attiHoldTarget pitch to be corrected for fixedWingLevelTrim so it is 0 + if ((FLIGHT_MODE(ANGLEHOLD_MODE) || axis == navAngleHoldAxis) && !isFlightAxisAngleOverrideActive(axis)) { + /* angleHoldTarget stores attitude values using a zero datum when level. + * This requires angleHoldTarget pitch to be corrected for fixedWingLevelTrim so it is 0 * when the craft is level even though attitude pitch is non zero in this case. * angleTarget pitch is corrected back to fixedWingLevelTrim datum on return from function */ - static int16_t attiHoldTarget[2]; + static int16_t angleHoldTarget[2]; - if (restartAttiMode) { // set target attitude to current attitude on activation - attiHoldTarget[FD_ROLL] = attitude.raw[FD_ROLL]; - attiHoldTarget[FD_PITCH] = attitude.raw[FD_PITCH] + DEGREES_TO_DECIDEGREES(fixedWingLevelTrim); - restartAttiMode = false; + if (restartAngleHoldMode) { // set target attitude to current attitude on activation + angleHoldTarget[FD_ROLL] = attitude.raw[FD_ROLL]; + angleHoldTarget[FD_PITCH] = attitude.raw[FD_PITCH] + DEGREES_TO_DECIDEGREES(fixedWingLevelTrim); + restartAngleHoldMode = false; } // set flag indicating attitude hold is level - if (FLIGHT_MODE(ATTIHOLD_MODE)) { - attiHoldIsLevel = attiHoldTarget[FD_ROLL] == 0 && attiHoldTarget[FD_PITCH] == 0; + if (FLIGHT_MODE(ANGLEHOLD_MODE)) { + angleHoldIsLevel = angleHoldTarget[FD_ROLL] == 0 && angleHoldTarget[FD_PITCH] == 0; } else { - attiHoldIsLevel = attiHoldTarget[navAttiHoldAxis] == 0; + angleHoldIsLevel = angleHoldTarget[navAngleHoldAxis] == 0; } uint16_t bankLimit = pidProfile()->max_angle_inclination[axis]; // use Nav bank angle limits if Nav active - if (navAttiHoldAxis == FD_ROLL) { + if (navAngleHoldAxis == FD_ROLL) { bankLimit = DEGREES_TO_DECIDEGREES(navConfig()->fw.max_bank_angle); - } else if (navAttiHoldAxis == FD_PITCH) { + } else if (navAngleHoldAxis == FD_PITCH) { bankLimit = DEGREES_TO_DECIDEGREES(navConfig()->fw.max_climb_angle); } int16_t levelTrim = axis == FD_PITCH ? DEGREES_TO_DECIDEGREES(fixedWingLevelTrim) : 0; if (calculateRollPitchCenterStatus() == CENTERED) { - attiHoldTarget[axis] = ABS(attiHoldTarget[axis]) < 30 ? 0 : attiHoldTarget[axis]; // snap to level when within 3 degs of level - *angleTarget = constrain(attiHoldTarget[axis] - levelTrim, -bankLimit, bankLimit); + angleHoldTarget[axis] = ABS(angleHoldTarget[axis]) < 30 ? 0 : angleHoldTarget[axis]; // snap to level when within 3 degs of level + *angleTarget = constrain(angleHoldTarget[axis] - levelTrim, -bankLimit, bankLimit); } else { *angleTarget = constrain(attitude.raw[axis] + *angleTarget + levelTrim, -bankLimit, bankLimit); - attiHoldTarget[axis] = attitude.raw[axis] + levelTrim; + angleHoldTarget[axis] = attitude.raw[axis] + levelTrim; } } } @@ -1174,20 +1174,23 @@ void FAST_CODE pidController(float dT) // Step 3: Run control for ANGLE_MODE, HORIZON_MODE and ATTI_MODE const float horizonRateMagnitude = FLIGHT_MODE(HORIZON_MODE) ? calcHorizonRateMagnitude() : 0.0f; levelingEnabled = false; + angleHoldIsLevel = false; for (uint8_t axis = FD_ROLL; axis <= FD_PITCH; axis++) { - if (FLIGHT_MODE(ANGLE_MODE) || FLIGHT_MODE(HORIZON_MODE) || FLIGHT_MODE(ATTIHOLD_MODE) || isFlightAxisAngleOverrideActive(axis)) { + if (FLIGHT_MODE(ANGLE_MODE) || FLIGHT_MODE(HORIZON_MODE) || FLIGHT_MODE(ANGLEHOLD_MODE) || isFlightAxisAngleOverrideActive(axis)) { // If axis angle override, get the correct angle from Logic Conditions float angleTarget = getFlightAxisAngleOverride(axis, computePidLevelTarget(axis)); if (STATE(AIRPLANE)) { // update attitude hold mode - updateAttihold(&angleTarget, axis); + updateAngleHold(&angleTarget, axis); } // Apply the Level PID controller pidLevel(angleTarget, &pidState[axis], axis, horizonRateMagnitude, dT); canUseFpvCameraMix = false; // FPVANGLEMIX is incompatible with ANGLE/HORIZON levelingEnabled = true; + } else { + restartAngleHoldMode = true; } } @@ -1335,7 +1338,7 @@ bool isFixedWingLevelTrimActive(void) return IS_RC_MODE_ACTIVE(BOXAUTOLEVEL) && !areSticksDeflected() && (FLIGHT_MODE(ANGLE_MODE) || FLIGHT_MODE(HORIZON_MODE)) && !FLIGHT_MODE(SOARING_MODE) && !FLIGHT_MODE(MANUAL_MODE) && - !navigationIsControllingAltitude() && !(navCheckActiveAttiHoldAxis() == FD_PITCH && !attiHoldIsLevel); + !navigationIsControllingAltitude() && !(navCheckActiveAngleHoldAxis() == FD_PITCH && !angleHoldIsLevel); } void updateFixedWingLevelTrim(timeUs_t currentTimeUs) diff --git a/src/main/flight/pid.h b/src/main/flight/pid.h index 508861f85c..e0a8b9d310 100644 --- a/src/main/flight/pid.h +++ b/src/main/flight/pid.h @@ -220,4 +220,4 @@ pidType_e pidIndexGetType(pidIndex_e pidIndex); bool isFixedWingLevelTrimActive(void); void updateFixedWingLevelTrim(timeUs_t currentTimeUs); float getFixedWingLevelTrim(void); -bool isAttiholdLevel(void); +bool isAngleHoldLevel(void); diff --git a/src/main/io/osd.c b/src/main/io/osd.c index 0617394961..ed16da53ae 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -1726,7 +1726,7 @@ static bool osdDrawSingleElement(uint8_t item) tfp_sprintf(buff, "%5d", (int)getMAhDrawn()); // Use 5 digits to allow packs below 100Ah buff[5] = SYM_MAH; buff[6] = '\0'; - } else + } else #endif { if (osdFormatCentiNumber(buff, getMAhDrawn() * 100, 1000, 0, (mah_digits - 2), mah_digits, false)) { @@ -1760,7 +1760,7 @@ static bool osdDrawSingleElement(uint8_t item) tfp_sprintf(buff, " NF"); else if (currentBatteryProfile->capacity.unit == BAT_CAPACITY_UNIT_MAH) { uint8_t mah_digits = osdConfig()->mAh_precision; // Initialize to config value - + #ifndef DISABLE_MSP_BF_COMPAT // IF BFCOMPAT is not supported, there's no need to check for it if (isBfCompatibleVideoSystem(osdConfig())) { //BFcompat is unable to work with scaled values and it only has mAh symbol to work with @@ -1768,7 +1768,7 @@ static bool osdDrawSingleElement(uint8_t item) buff[5] = SYM_MAH; buff[6] = '\0'; unitsDrawn = true; - } else + } else #endif { if (osdFormatCentiNumber(buff, getBatteryRemainingCapacity() * 100, 1000, 0, (mah_digits - 2), mah_digits, false)) { @@ -2266,8 +2266,8 @@ static bool osdDrawSingleElement(uint8_t item) p = "ANGL"; else if (FLIGHT_MODE(HORIZON_MODE)) p = "HOR "; - else if (FLIGHT_MODE(ATTIHOLD_MODE)) - p = "ATTI"; + else if (FLIGHT_MODE(ANGLEHOLD_MODE)) + p = "AHLD"; displayWrite(osdDisplayPort, elemPosX, elemPosY, p); return true; @@ -5198,14 +5198,14 @@ textAttributes_t osdGetSystemMessage(char *buff, size_t buff_size, bool isCenter if (STATE(LANDING_DETECTED)) { messages[messageCount++] = OSD_MESSAGE_STR(OSD_MSG_LANDED); } - if (IS_RC_MODE_ACTIVE(BOXATTIHOLD)) { - int8_t navAttiHoldAxis = navCheckActiveAttiHoldAxis(); - if (isAttiholdLevel()) { - messages[messageCount++] = OSD_MESSAGE_STR(OSD_MSG_ATTI_LEVEL); - } else if (navAttiHoldAxis == FD_ROLL) { - messages[messageCount++] = OSD_MESSAGE_STR(OSD_MSG_ATTI_ROLL); - } else if (navAttiHoldAxis == FD_PITCH) { - messages[messageCount++] = OSD_MESSAGE_STR(OSD_MSG_ATTI_PITCH); + if (IS_RC_MODE_ACTIVE(BOXANGLEHOLD)) { + int8_t navAngleHoldAxis = navCheckActiveAngleHoldAxis(); + if (isAngleHoldLevel()) { + messages[messageCount++] = OSD_MESSAGE_STR(OSD_MSG_ANGLEHOLD_LEVEL); + } else if (navAngleHoldAxis == FD_ROLL) { + messages[messageCount++] = OSD_MESSAGE_STR(OSD_MSG_ANGLEHOLD_ROLL); + } else if (navAngleHoldAxis == FD_PITCH) { + messages[messageCount++] = OSD_MESSAGE_STR(OSD_MSG_ANGLEHOLD_PITCH); } } } diff --git a/src/main/io/osd.h b/src/main/io/osd.h index 0c2106f8e2..23d2ec87c1 100644 --- a/src/main/io/osd.h +++ b/src/main/io/osd.h @@ -118,9 +118,9 @@ #define OSD_MSG_UNABLE_ARM "UNABLE TO ARM" #define OSD_MSG_SAVING_SETTNGS "** SAVING SETTINGS **" #define OSD_MSG_SETTINGS_SAVED "** SETTINGS SAVED **" -#define OSD_MSG_ATTI_ROLL "(ATTI ROLL)" -#define OSD_MSG_ATTI_PITCH "(ATTI PITCH)" -#define OSD_MSG_ATTI_LEVEL "(ATTI LEVEL)" +#define OSD_MSG_ANGLEHOLD_ROLL "(ANGLEHOLD ROLL)" +#define OSD_MSG_ANGLEHOLD_PITCH "(ANGLEHOLD PITCH)" +#define OSD_MSG_ANGLEHOLD_LEVEL "(ANGLEHOLD LEVEL)" #ifdef USE_DEV_TOOLS #define OSD_MSG_GRD_TEST_MODE "GRD TEST > MOTORS DISABLED" @@ -416,7 +416,7 @@ typedef struct osdConfig_s { #ifdef USE_WIND_ESTIMATOR bool estimations_wind_compensation; // use wind compensation for estimated remaining flight/distance -#endif +#endif uint8_t coordinate_digits; bool osd_failsafe_switch_layout; uint8_t plus_code_digits; // Number of digits to use in OSD_PLUS_CODE diff --git a/src/main/io/osd_dji_hd.c b/src/main/io/osd_dji_hd.c index 165a909b16..c040b7b762 100644 --- a/src/main/io/osd_dji_hd.c +++ b/src/main/io/osd_dji_hd.c @@ -300,7 +300,7 @@ static void djiPackBoxModeBitmask(boxBitmask_t * flightModeBitmask) case FLM_ALTITUDE_HOLD: case FLM_POSITION_HOLD: case FLM_MISSION: - case FLM_ATTIHOLD: + case FLM_ANGLEHOLD: default: // Unsupported ATM, keep at ANGLE bitArraySet(flightModeBitmask->bits, 1); // DJI: 1 << 1 : ANGLE diff --git a/src/main/navigation/navigation.c b/src/main/navigation/navigation.c index 21b266ed7f..c566c94bfa 100644 --- a/src/main/navigation/navigation.c +++ b/src/main/navigation/navigation.c @@ -4566,11 +4566,11 @@ int32_t navigationGetHeadingError(void) return wrap_18000(posControl.desiredState.yaw - posControl.actualState.cog); } -int8_t navCheckActiveAttiHoldAxis(void) +int8_t navCheckActiveAngleHoldAxis(void) { int8_t activeAxis = -1; - if (IS_RC_MODE_ACTIVE(BOXATTIHOLD)) { + if (IS_RC_MODE_ACTIVE(BOXANGLEHOLD)) { navigationFSMStateFlags_t stateFlags = navGetCurrentStateFlags(); bool altholdActive = stateFlags & NAV_REQUIRE_ANGLE_FW && !(stateFlags & NAV_REQUIRE_ANGLE); diff --git a/src/main/navigation/navigation.h b/src/main/navigation/navigation.h index fbf11fff90..d4ee6e078e 100644 --- a/src/main/navigation/navigation.h +++ b/src/main/navigation/navigation.h @@ -627,7 +627,7 @@ bool isEstimatedAglTrusted(void); void checkManualEmergencyLandingControl(bool forcedActivation); float updateBaroAltitudeRate(float newBaroAltRate, bool updateValue); -int8_t navCheckActiveAttiHoldAxis(void); +int8_t navCheckActiveAngleHoldAxis(void); /* Returns the heading recorded when home position was acquired. * Note that the navigation system uses deg*100 as unit and angles diff --git a/src/main/programming/logic_condition.c b/src/main/programming/logic_condition.c index 7e265da317..2278f2bb5b 100644 --- a/src/main/programming/logic_condition.c +++ b/src/main/programming/logic_condition.c @@ -775,7 +775,7 @@ static int logicConditionGetFlightOperandValue(int operand) { case LOGIC_CONDITION_OPERAND_FLIGHT_ACTIVE_PROFILE: // int return getConfigProfile() + 1; break; - + case LOGIC_CONDITION_OPERAND_FLIGHT_ACTIVE_MIXER_PROFILE: // int return currentMixerProfileIndex + 1; break; @@ -849,8 +849,8 @@ static int logicConditionGetFlightModeOperandValue(int operand) { return (bool) FLIGHT_MODE(HORIZON_MODE); break; - case LOGIC_CONDITION_OPERAND_FLIGHT_MODE_ATTIMODE: - return (bool) FLIGHT_MODE(ATTIHOLD_MODE); + case LOGIC_CONDITION_OPERAND_FLIGHT_MODE_ANGLEHOLD: + return (bool) FLIGHT_MODE(ANGLEHOLD_MODE); break; case LOGIC_CONDITION_OPERAND_FLIGHT_MODE_AIR: diff --git a/src/main/programming/logic_condition.h b/src/main/programming/logic_condition.h index ac95aecd14..5d91fcda17 100644 --- a/src/main/programming/logic_condition.h +++ b/src/main/programming/logic_condition.h @@ -157,7 +157,7 @@ typedef enum { LOGIC_CONDITION_OPERAND_FLIGHT_MODE_USER4, // 13 LOGIC_CONDITION_OPERAND_FLIGHT_MODE_ACRO, // 14 LOGIC_CONDITION_OPERAND_FLIGHT_MODE_WAYPOINT_MISSION, // 15 - LOGIC_CONDITION_OPERAND_FLIGHT_MODE_ATTIMODE, // 16 + LOGIC_CONDITION_OPERAND_FLIGHT_MODE_ANGLEHOLD, // 16 } logicFlightModeOperands_e; typedef enum { diff --git a/src/main/telemetry/crsf.c b/src/main/telemetry/crsf.c index d8b486fba2..5eca10d8a3 100755 --- a/src/main/telemetry/crsf.c +++ b/src/main/telemetry/crsf.c @@ -352,8 +352,8 @@ static void crsfFrameFlightMode(sbuf_t *dst) flightMode = "ANGL"; } else if (FLIGHT_MODE(HORIZON_MODE)) { flightMode = "HOR"; - } else if (FLIGHT_MODE(ATTIHOLD_MODE)) { - flightMode = "ATTI"; + } else if (FLIGHT_MODE(ANGLEHOLD_MODE)) { + flightMode = "AHLD"; } #ifdef USE_GPS } else if (feature(FEATURE_GPS) && navConfig()->general.flags.extra_arming_safety && (!STATE(GPS_FIX) || !STATE(GPS_FIX_HOME))) { diff --git a/src/main/telemetry/mavlink.c b/src/main/telemetry/mavlink.c index f05bfbbb40..187f959b17 100644 --- a/src/main/telemetry/mavlink.c +++ b/src/main/telemetry/mavlink.c @@ -191,7 +191,7 @@ static APM_COPTER_MODE inavToArduCopterMap(flightModeForTelemetry_e flightMode) case FLM_ACRO_AIR: return COPTER_MODE_ACRO; case FLM_ANGLE: return COPTER_MODE_STABILIZE; case FLM_HORIZON: return COPTER_MODE_STABILIZE; - case FLM_ATTIHOLD: return COPTER_MODE_STABILIZE; + case FLM_ANGLEHOLD: return COPTER_MODE_STABILIZE; case FLM_ALTITUDE_HOLD: return COPTER_MODE_ALT_HOLD; case FLM_POSITION_HOLD: return COPTER_MODE_POSHOLD; case FLM_RTH: return COPTER_MODE_RTL; @@ -221,7 +221,7 @@ static APM_PLANE_MODE inavToArduPlaneMap(flightModeForTelemetry_e flightMode) case FLM_ACRO_AIR: return PLANE_MODE_ACRO; case FLM_ANGLE: return PLANE_MODE_FLY_BY_WIRE_A; case FLM_HORIZON: return PLANE_MODE_STABILIZE; - case FLM_ATTIHOLD: return PLANE_MODE_STABILIZE; + case FLM_ANGLEHOLD: return PLANE_MODE_STABILIZE; case FLM_ALTITUDE_HOLD: return PLANE_MODE_FLY_BY_WIRE_B; case FLM_POSITION_HOLD: return PLANE_MODE_LOITER; case FLM_RTH: return PLANE_MODE_RTL;