mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-26 17:55:28 +03:00
updates
This commit is contained in:
parent
1bdca4e02c
commit
c9ff9cd099
4 changed files with 25 additions and 36 deletions
|
@ -190,9 +190,6 @@ tables:
|
||||||
- name: nav_fw_wp_turn_smoothing
|
- name: nav_fw_wp_turn_smoothing
|
||||||
values: ["OFF", "ON", "ON-CUT"]
|
values: ["OFF", "ON", "ON-CUT"]
|
||||||
enum: wpFwTurnSmoothing_e
|
enum: wpFwTurnSmoothing_e
|
||||||
- name: mixer_switch_on_event
|
|
||||||
values: ["OFF", "ON", "ON_FS_ONLY"]
|
|
||||||
enum: mixerProfileSwitchOnEvent_e
|
|
||||||
|
|
||||||
constants:
|
constants:
|
||||||
RPYL_PID_MIN: 0
|
RPYL_PID_MIN: 0
|
||||||
|
@ -1178,16 +1175,14 @@ groups:
|
||||||
type: bool
|
type: bool
|
||||||
- name: mixer_switch_on_rth
|
- name: mixer_switch_on_rth
|
||||||
description: "If set to on, mixer_profile will switch when it is heading home"
|
description: "If set to on, mixer_profile will switch when it is heading home"
|
||||||
default_value: "OFF"
|
default_value: OFF
|
||||||
field: mixer_config.switchOnRTH
|
field: mixer_config.switchOnRTH
|
||||||
table: mixer_switch_on_event
|
type: bool
|
||||||
type: uint8_t
|
|
||||||
- name: mixer_switch_on_land
|
- name: mixer_switch_on_land
|
||||||
description: "If set to on, mixer_profile will switch when Landing"
|
description: "If set to on, mixer_profile will switch when Landing"
|
||||||
default_value: "OFF"
|
default_value: OFF
|
||||||
field: mixer_config.switchOnLand
|
field: mixer_config.switchOnLand
|
||||||
table: mixer_switch_on_event
|
type: bool
|
||||||
type: uint8_t
|
|
||||||
- name: mixer_switch_trans_timer
|
- name: mixer_switch_trans_timer
|
||||||
description: "If swith mixer_profile on failsafe is required, Activate MixerTransion mode for this many decisecond(0.1s) before the actual mixer_profile switch"
|
description: "If swith mixer_profile on failsafe is required, Activate MixerTransion mode for this many decisecond(0.1s) before the actual mixer_profile switch"
|
||||||
default_value: 0
|
default_value: 0
|
||||||
|
|
|
@ -93,7 +93,7 @@ void mixerConfigInit(void)
|
||||||
setConfigProfile(getConfigMixerProfile());
|
setConfigProfile(getConfigMixerProfile());
|
||||||
pidInit();
|
pidInit();
|
||||||
pidInitFilters();
|
pidInitFilters();
|
||||||
pidResetErrorAccumulators();
|
// pidResetErrorAccumulators();
|
||||||
schedulePidGainsUpdate();
|
schedulePidGainsUpdate();
|
||||||
navigationUsePIDs(); // set navigation pid gains
|
navigationUsePIDs(); // set navigation pid gains
|
||||||
}
|
}
|
||||||
|
@ -118,24 +118,16 @@ bool checkMixerATRequired(mixerProfileATRequest_e required_action)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((required_action == MIXERAT_REQUEST_RTH) && (currentMixerConfig.switchOnRTH!=MIXERAT_ON_EVENT_OFF) && STATE(MULTIROTOR))
|
if ((required_action == MIXERAT_REQUEST_RTH) && (currentMixerConfig.switchOnRTH) && STATE(MULTIROTOR))
|
||||||
{
|
{
|
||||||
if ((currentMixerConfig.switchOnRTH==MIXERAT_ON_EVENT_ON_FS_ONLY) && (!FLIGHT_MODE(FAILSAFE_MODE)))
|
//check next mixer_profile setting is valid, need to be false
|
||||||
{
|
return mixerConfigByIndex(nextProfileIndex)->switchOnRTH? false:true;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
//check next mixer_profile setting is valid
|
|
||||||
return mixerConfigByIndex(nextProfileIndex)->switchOnRTH == MIXERAT_ON_EVENT_OFF ? true:false;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if ((required_action == MIXERAT_REQUEST_LAND) && (currentMixerConfig.switchOnLand!=MIXERAT_ON_EVENT_OFF) && STATE(AIRPLANE))
|
else if ((required_action == MIXERAT_REQUEST_LAND) && (currentMixerConfig.switchOnLand) && STATE(AIRPLANE))
|
||||||
{
|
{
|
||||||
if ((currentMixerConfig.switchOnLand==MIXERAT_ON_EVENT_ON_FS_ONLY) && (!FLIGHT_MODE(FAILSAFE_MODE)))
|
//check next mixer_profile setting is valid, need to be false
|
||||||
{
|
return mixerConfigByIndex(nextProfileIndex)->switchOnLand? false:true;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
//check next mixer_profile setting is valid
|
|
||||||
return mixerConfigByIndex(nextProfileIndex)->switchOnLand == MIXERAT_ON_EVENT_OFF ? true:false;
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,12 +9,6 @@
|
||||||
#define MAX_MIXER_PROFILE_COUNT 2
|
#define MAX_MIXER_PROFILE_COUNT 2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
MIXERAT_ON_EVENT_OFF, //no request, stats checking only
|
|
||||||
MIXERAT_ON_EVENT_ON,
|
|
||||||
MIXERAT_ON_EVENT_ON_FS_ONLY,
|
|
||||||
} mixerProfileSwitchOnEvent_e;
|
|
||||||
|
|
||||||
typedef struct mixerConfig_s {
|
typedef struct mixerConfig_s {
|
||||||
int8_t motorDirectionInverted;
|
int8_t motorDirectionInverted;
|
||||||
uint8_t platformType;
|
uint8_t platformType;
|
||||||
|
@ -23,8 +17,8 @@ typedef struct mixerConfig_s {
|
||||||
uint8_t outputMode;
|
uint8_t outputMode;
|
||||||
bool motorstopOnLow;
|
bool motorstopOnLow;
|
||||||
bool PIDProfileLinking;
|
bool PIDProfileLinking;
|
||||||
mixerProfileSwitchOnEvent_e switchOnRTH;
|
bool switchOnRTH;
|
||||||
mixerProfileSwitchOnEvent_e switchOnLand;
|
bool switchOnLand;
|
||||||
int16_t switchTransitionTimer;
|
int16_t switchTransitionTimer;
|
||||||
} mixerConfig_t;
|
} mixerConfig_t;
|
||||||
typedef struct mixerProfile_s {
|
typedef struct mixerProfile_s {
|
||||||
|
|
|
@ -982,14 +982,22 @@ static const navigationFSMStateDescriptor_t navFSM[NAV_STATE_COUNT] = {
|
||||||
.mwError = MW_NAV_ERROR_NONE,
|
.mwError = MW_NAV_ERROR_NONE,
|
||||||
.onEvent = {
|
.onEvent = {
|
||||||
[NAV_FSM_EVENT_TIMEOUT] = NAV_STATE_MIXERAT_IN_PROGRESS, // re-process the state
|
[NAV_FSM_EVENT_TIMEOUT] = NAV_STATE_MIXERAT_IN_PROGRESS, // re-process the state
|
||||||
[NAV_FSM_EVENT_SWITCH_TO_IDLE] = NAV_STATE_IDLE,
|
[NAV_FSM_EVENT_SWITCH_TO_RTH_HEAD_HOME] = NAV_STATE_RTH_HEAD_HOME, //switch to its pending state
|
||||||
[NAV_FSM_EVENT_SWITCH_TO_RTH_HEAD_HOME] = NAV_STATE_RTH_HEAD_HOME, // re-process the state
|
[NAV_FSM_EVENT_SWITCH_TO_RTH_LANDING] = NAV_STATE_RTH_LANDING, //switch to its pending state
|
||||||
[NAV_FSM_EVENT_SWITCH_TO_RTH_LANDING] = NAV_STATE_RTH_LANDING,
|
[NAV_FSM_EVENT_SWITCH_TO_IDLE] = NAV_STATE_MIXERAT_ABORT,
|
||||||
|
[NAV_FSM_EVENT_SWITCH_TO_ALTHOLD] = NAV_STATE_MIXERAT_ABORT,
|
||||||
|
[NAV_FSM_EVENT_SWITCH_TO_POSHOLD_3D] = NAV_STATE_MIXERAT_ABORT,
|
||||||
|
[NAV_FSM_EVENT_SWITCH_TO_RTH] = NAV_STATE_MIXERAT_ABORT,
|
||||||
|
[NAV_FSM_EVENT_SWITCH_TO_WAYPOINT] = NAV_STATE_MIXERAT_ABORT,
|
||||||
|
[NAV_FSM_EVENT_SWITCH_TO_EMERGENCY_LANDING] = NAV_STATE_MIXERAT_ABORT,
|
||||||
|
[NAV_FSM_EVENT_SWITCH_TO_LAUNCH] = NAV_STATE_MIXERAT_ABORT,
|
||||||
|
[NAV_FSM_EVENT_SWITCH_TO_COURSE_HOLD] = NAV_STATE_MIXERAT_ABORT,
|
||||||
|
[NAV_FSM_EVENT_SWITCH_TO_CRUISE] = NAV_STATE_MIXERAT_ABORT,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[NAV_STATE_MIXERAT_ABORT] = {
|
[NAV_STATE_MIXERAT_ABORT] = {
|
||||||
.persistentId = NAV_PERSISTENT_ID_MIXERAT_ABORT,
|
.persistentId = NAV_PERSISTENT_ID_MIXERAT_ABORT,
|
||||||
.onEntry = navOnEnteringState_NAV_STATE_MIXERAT_ABORT,
|
.onEntry = navOnEnteringState_NAV_STATE_MIXERAT_ABORT, //will not switch to its pending state
|
||||||
.timeoutMs = 10,
|
.timeoutMs = 10,
|
||||||
.stateFlags = NAV_CTL_ALT | NAV_REQUIRE_ANGLE | NAV_REQUIRE_THRTILT,
|
.stateFlags = NAV_CTL_ALT | NAV_REQUIRE_ANGLE | NAV_REQUIRE_THRTILT,
|
||||||
.mapToFlightModes = NAV_ALTHOLD_MODE,
|
.mapToFlightModes = NAV_ALTHOLD_MODE,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue