mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-24 00:35:34 +03:00
separate function for only roll/pitch stick deflection
This commit is contained in:
parent
dac60f7a73
commit
156c947d3c
4 changed files with 9 additions and 3 deletions
|
@ -103,6 +103,11 @@ bool areSticksDeflected(void)
|
||||||
return (ABS(rcCommand[ROLL]) > rcControlsConfig()->control_deadband) || (ABS(rcCommand[PITCH]) > rcControlsConfig()->control_deadband) || (ABS(rcCommand[YAW]) > rcControlsConfig()->control_deadband);
|
return (ABS(rcCommand[ROLL]) > rcControlsConfig()->control_deadband) || (ABS(rcCommand[PITCH]) > rcControlsConfig()->control_deadband) || (ABS(rcCommand[YAW]) > rcControlsConfig()->control_deadband);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isRollPitchStickDeflected(void)
|
||||||
|
{
|
||||||
|
return (ABS(rcCommand[ROLL]) > rcControlsConfig()->control_deadband) || (ABS(rcCommand[PITCH]) > rcControlsConfig()->control_deadband);
|
||||||
|
}
|
||||||
|
|
||||||
throttleStatus_e FAST_CODE NOINLINE calculateThrottleStatus(throttleStatusType_e type)
|
throttleStatus_e FAST_CODE NOINLINE calculateThrottleStatus(throttleStatusType_e type)
|
||||||
{
|
{
|
||||||
int value;
|
int value;
|
||||||
|
|
|
@ -108,6 +108,7 @@ bool checkStickPosition(stickPositions_e stickPos);
|
||||||
|
|
||||||
bool areSticksInApModePosition(uint16_t ap_mode);
|
bool areSticksInApModePosition(uint16_t ap_mode);
|
||||||
bool areSticksDeflected(void);
|
bool areSticksDeflected(void);
|
||||||
|
bool isRollPitchStickDeflected(void);
|
||||||
throttleStatus_e calculateThrottleStatus(throttleStatusType_e type);
|
throttleStatus_e calculateThrottleStatus(throttleStatusType_e type);
|
||||||
rollPitchStatus_e calculateRollPitchCenterStatus(void);
|
rollPitchStatus_e calculateRollPitchCenterStatus(void);
|
||||||
void processRcStickPositions(throttleStatus_e throttleStatus);
|
void processRcStickPositions(throttleStatus_e throttleStatus);
|
||||||
|
|
|
@ -1728,7 +1728,7 @@ static navigationFSMEvent_t navOnEnteringState_NAV_STATE_LAUNCH_WAIT(navigationF
|
||||||
//allow to leave NAV_LAUNCH_MODE if it has being enabled as feature by moving sticks with low throttle.
|
//allow to leave NAV_LAUNCH_MODE if it has being enabled as feature by moving sticks with low throttle.
|
||||||
if (feature(FEATURE_FW_LAUNCH)) {
|
if (feature(FEATURE_FW_LAUNCH)) {
|
||||||
throttleStatus_e throttleStatus = calculateThrottleStatus(THROTTLE_STATUS_TYPE_RC);
|
throttleStatus_e throttleStatus = calculateThrottleStatus(THROTTLE_STATUS_TYPE_RC);
|
||||||
if ((throttleStatus == THROTTLE_LOW) && (areSticksDeflected())) {
|
if ((throttleStatus == THROTTLE_LOW) && (isRollPitchStickDeflected())) {
|
||||||
abortFixedWingLaunch();
|
abortFixedWingLaunch();
|
||||||
return NAV_FSM_EVENT_SWITCH_TO_IDLE;
|
return NAV_FSM_EVENT_SWITCH_TO_IDLE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -251,7 +251,7 @@ static inline bool isLaunchMaxAltitudeReached(void)
|
||||||
|
|
||||||
static inline bool areSticksMoved(timeMs_t initialTime, timeUs_t currentTimeUs)
|
static inline bool areSticksMoved(timeMs_t initialTime, timeUs_t currentTimeUs)
|
||||||
{
|
{
|
||||||
return (initialTime + currentStateElapsedMs(currentTimeUs)) > navConfig()->fw.launch_min_time && areSticksDeflected();
|
return (initialTime + currentStateElapsedMs(currentTimeUs)) > navConfig()->fw.launch_min_time && isRollPitchStickDeflected();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void resetPidsIfNeeded(void) {
|
static void resetPidsIfNeeded(void) {
|
||||||
|
@ -435,7 +435,7 @@ static fixedWingLaunchEvent_t fwLaunchState_FW_LAUNCH_STATE_FINISH(timeUs_t curr
|
||||||
const timeMs_t elapsedTimeMs = currentStateElapsedMs(currentTimeUs);
|
const timeMs_t elapsedTimeMs = currentStateElapsedMs(currentTimeUs);
|
||||||
const timeMs_t endTimeMs = navConfig()->fw.launch_end_time;
|
const timeMs_t endTimeMs = navConfig()->fw.launch_end_time;
|
||||||
|
|
||||||
if (areSticksDeflected()) {
|
if (isRollPitchStickDeflected()) {
|
||||||
return FW_LAUNCH_EVENT_ABORT; // cancel the launch and do the FW_LAUNCH_STATE_IDLE state
|
return FW_LAUNCH_EVENT_ABORT; // cancel the launch and do the FW_LAUNCH_STATE_IDLE state
|
||||||
}
|
}
|
||||||
if (elapsedTimeMs > endTimeMs) {
|
if (elapsedTimeMs > endTimeMs) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue