mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-24 00:35:34 +03:00
RTH on failsafe can now be set via CLI. Disabled RC input when executing failsafe RTH.
This commit is contained in:
parent
ed0f85c41b
commit
6850fe324f
2 changed files with 13 additions and 7 deletions
|
@ -1504,23 +1504,23 @@ void resetNavigation(void)
|
||||||
*-----------------------------------------------------------*/
|
*-----------------------------------------------------------*/
|
||||||
static void processNavigationRCAdjustments(void)
|
static void processNavigationRCAdjustments(void)
|
||||||
{
|
{
|
||||||
/* Process pilot's RC input */
|
/* Process pilot's RC input. Disable all pilot's input when in FAILSAFE_MODE */
|
||||||
navigationFSMStateFlags_t navStateFlags = navGetStateFlags(posControl.navState);
|
navigationFSMStateFlags_t navStateFlags = navGetStateFlags(posControl.navState);
|
||||||
if (navStateFlags & NAV_RC_ALT) {
|
if ((navStateFlags & NAV_RC_ALT) && (!FLIGHT_MODE(FAILSAFE_MODE))) {
|
||||||
posControl.flags.isAdjustingAltitude = adjustAltitudeFromRCInput();
|
posControl.flags.isAdjustingAltitude = adjustAltitudeFromRCInput();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
posControl.flags.isAdjustingAltitude = false;
|
posControl.flags.isAdjustingAltitude = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (navStateFlags & NAV_RC_POS) {
|
if ((navStateFlags & NAV_RC_POS) && (!FLIGHT_MODE(FAILSAFE_MODE))) {
|
||||||
posControl.flags.isAdjustingPosition = adjustPositionFromRCInput();
|
posControl.flags.isAdjustingPosition = adjustPositionFromRCInput();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
posControl.flags.isAdjustingPosition = false;
|
posControl.flags.isAdjustingPosition = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (navStateFlags & NAV_RC_YAW) {
|
if ((navStateFlags & NAV_RC_YAW) && (!FLIGHT_MODE(FAILSAFE_MODE))) {
|
||||||
posControl.flags.isAdjustingHeading = adjustHeadingFromRCInput();
|
posControl.flags.isAdjustingHeading = adjustHeadingFromRCInput();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1547,6 +1547,8 @@ void applyWaypointNavigationAndAltitudeHold(void)
|
||||||
|
|
||||||
// No navigation when disarmed
|
// No navigation when disarmed
|
||||||
if (!ARMING_FLAG(ARMED)) {
|
if (!ARMING_FLAG(ARMED)) {
|
||||||
|
// If we are disarmed, abort forced RTH
|
||||||
|
posControl.flags.forcedRTHActivated = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1849,7 +1851,6 @@ void abortForcedRTH(void)
|
||||||
rthState_e getStateOfForcedRTH(void)
|
rthState_e getStateOfForcedRTH(void)
|
||||||
{
|
{
|
||||||
if (navGetStateFlags(posControl.navState) & NAV_AUTO_RTH) {
|
if (navGetStateFlags(posControl.navState) & NAV_AUTO_RTH) {
|
||||||
|
|
||||||
if (posControl.navState == NAV_STATE_RTH_2D_FINISHED || posControl.navState == NAV_STATE_RTH_3D_FINISHED) {
|
if (posControl.navState == NAV_STATE_RTH_2D_FINISHED || posControl.navState == NAV_STATE_RTH_3D_FINISHED) {
|
||||||
return RTH_HAS_LANDED;
|
return RTH_HAS_LANDED;
|
||||||
}
|
}
|
||||||
|
|
|
@ -357,6 +357,9 @@ static const char * const lookupTableSerialRX[] = {
|
||||||
"XB-B-RJ01"
|
"XB-B-RJ01"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const char * const lookupTableFailsafeProcedure[] = {
|
||||||
|
"SET-THR", "RTH"
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct lookupTableEntry_s {
|
typedef struct lookupTableEntry_s {
|
||||||
const char * const *values;
|
const char * const *values;
|
||||||
|
@ -378,6 +381,7 @@ typedef enum {
|
||||||
TABLE_GIMBAL_MODE,
|
TABLE_GIMBAL_MODE,
|
||||||
TABLE_PID_CONTROLLER,
|
TABLE_PID_CONTROLLER,
|
||||||
TABLE_SERIAL_RX,
|
TABLE_SERIAL_RX,
|
||||||
|
TABLE_FAILSAFE_PROCEDURE,
|
||||||
} lookupTableIndex_e;
|
} lookupTableIndex_e;
|
||||||
|
|
||||||
static const lookupTableEntry_t lookupTables[] = {
|
static const lookupTableEntry_t lookupTables[] = {
|
||||||
|
@ -394,7 +398,8 @@ static const lookupTableEntry_t lookupTables[] = {
|
||||||
{ lookupTableCurrentSensor, sizeof(lookupTableCurrentSensor) / sizeof(char *) },
|
{ lookupTableCurrentSensor, sizeof(lookupTableCurrentSensor) / sizeof(char *) },
|
||||||
{ lookupTableGimbalMode, sizeof(lookupTableGimbalMode) / sizeof(char *) },
|
{ lookupTableGimbalMode, sizeof(lookupTableGimbalMode) / sizeof(char *) },
|
||||||
{ lookupTablePidController, sizeof(lookupTablePidController) / sizeof(char *) },
|
{ lookupTablePidController, sizeof(lookupTablePidController) / sizeof(char *) },
|
||||||
{ lookupTableSerialRX, sizeof(lookupTableSerialRX) / sizeof(char *) }
|
{ lookupTableSerialRX, sizeof(lookupTableSerialRX) / sizeof(char *) },
|
||||||
|
{ lookupTableFailsafeProcedure, sizeof(lookupTableFailsafeProcedure) / sizeof(char *) },
|
||||||
};
|
};
|
||||||
|
|
||||||
#define VALUE_TYPE_OFFSET 0
|
#define VALUE_TYPE_OFFSET 0
|
||||||
|
@ -627,7 +632,7 @@ const clivalue_t valueTable[] = {
|
||||||
{ "failsafe_throttle", VAR_UINT16 | MASTER_VALUE, &masterConfig.failsafeConfig.failsafe_throttle, .config.minmax = { PWM_RANGE_MIN, PWM_RANGE_MAX }, 0 },
|
{ "failsafe_throttle", VAR_UINT16 | MASTER_VALUE, &masterConfig.failsafeConfig.failsafe_throttle, .config.minmax = { PWM_RANGE_MIN, PWM_RANGE_MAX }, 0 },
|
||||||
{ "failsafe_kill_switch", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.failsafeConfig.failsafe_kill_switch, .config.lookup = { TABLE_OFF_ON }, 0 },
|
{ "failsafe_kill_switch", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.failsafeConfig.failsafe_kill_switch, .config.lookup = { TABLE_OFF_ON }, 0 },
|
||||||
{ "failsafe_throttle_low_delay",VAR_UINT16 | MASTER_VALUE, &masterConfig.failsafeConfig.failsafe_throttle_low_delay, .config.minmax = { 0, 300 }, 0 },
|
{ "failsafe_throttle_low_delay",VAR_UINT16 | MASTER_VALUE, &masterConfig.failsafeConfig.failsafe_throttle_low_delay, .config.minmax = { 0, 300 }, 0 },
|
||||||
{ "failsafe_procedure", VAR_UINT8 | MASTER_VALUE, &masterConfig.failsafeConfig.failsafe_procedure, .config.minmax = { 0, 1 }, 0 },
|
{ "failsafe_procedure", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.failsafeConfig.failsafe_procedure, .config.lookup = { TABLE_FAILSAFE_PROCEDURE }, 0 },
|
||||||
|
|
||||||
{ "rx_min_usec", VAR_UINT16 | MASTER_VALUE, &masterConfig.rxConfig.rx_min_usec, .config.minmax = { PWM_PULSE_MIN, PWM_PULSE_MAX }, 0 },
|
{ "rx_min_usec", VAR_UINT16 | MASTER_VALUE, &masterConfig.rxConfig.rx_min_usec, .config.minmax = { PWM_PULSE_MIN, PWM_PULSE_MAX }, 0 },
|
||||||
{ "rx_max_usec", VAR_UINT16 | MASTER_VALUE, &masterConfig.rxConfig.rx_max_usec, .config.minmax = { PWM_PULSE_MIN, PWM_PULSE_MAX }, 0 },
|
{ "rx_max_usec", VAR_UINT16 | MASTER_VALUE, &masterConfig.rxConfig.rx_max_usec, .config.minmax = { PWM_PULSE_MIN, PWM_PULSE_MAX }, 0 },
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue