1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-25 01:05:21 +03:00

Add ability to check actions on next WP

This commit is contained in:
Darren Lines 2022-12-19 13:01:32 +00:00
parent fe2e151583
commit 812308a482
2 changed files with 37 additions and 7 deletions

View file

@ -457,6 +457,16 @@ static int logicConditionGetWaypointOperandValue(int operand) {
return NAV_Status.activeWpAction; return NAV_Status.activeWpAction;
break; break;
case LOGIC_CONDITION_OPERAND_WAYPOINTS_NEXT_WAYPOINT_ACTION:
{
uint8_t wpIndex = posControl.activeWaypointIndex + 1;
if ((wpIndex > 0) && (wpIndex < NAV_MAX_WAYPOINTS)) {
return posControl.waypointList[wpIndex].action;
}
return false;
}
break;
case LOGIC_CONDITION_OPERAND_WAYPOINTS_WAYPOINT_DISTANCE: case LOGIC_CONDITION_OPERAND_WAYPOINTS_WAYPOINT_DISTANCE:
{ {
uint32_t distance = 0; uint32_t distance = 0;
@ -509,6 +519,22 @@ static int logicConditionGetWaypointOperandValue(int operand) {
return (NAV_Status.activeWpIndex > 0) ? ((posControl.waypointList[NAV_Status.activeWpIndex-1].p3 & NAV_WP_USER4) == NAV_WP_USER4) : 0; return (NAV_Status.activeWpIndex > 0) ? ((posControl.waypointList[NAV_Status.activeWpIndex-1].p3 & NAV_WP_USER4) == NAV_WP_USER4) : 0;
break; break;
case LOGIC_CONDITION_OPERAND_WAYPOINTS_USER1_ACTION_NEXT_WP:
return (NAV_Status.activeWpIndex > 0) ? ((posControl.waypointList[NAV_Status.activeWpIndex].p3 & NAV_WP_USER1) == NAV_WP_USER1) : 0;
break;
case LOGIC_CONDITION_OPERAND_WAYPOINTS_USER2_ACTION_NEXT_WP:
return (NAV_Status.activeWpIndex > 0) ? ((posControl.waypointList[NAV_Status.activeWpIndex].p3 & NAV_WP_USER2) == NAV_WP_USER2) : 0;
break;
case LOGIC_CONDITION_OPERAND_WAYPOINTS_USER3_ACTION_NEXT_WP:
return (NAV_Status.activeWpIndex > 0) ? ((posControl.waypointList[NAV_Status.activeWpIndex].p3 & NAV_WP_USER3) == NAV_WP_USER3) : 0;
break;
case LOGIC_CONDITION_OPERAND_WAYPOINTS_USER4_ACTION_NEXT_WP:
return (NAV_Status.activeWpIndex > 0) ? ((posControl.waypointList[NAV_Status.activeWpIndex].p3 & NAV_WP_USER4) == NAV_WP_USER4) : 0;
break;
default: default:
return 0; return 0;
break; break;

View file

@ -153,13 +153,17 @@ typedef enum {
LOGIC_CONDITION_OPERAND_WAYPOINTS_IS_WP, // 0/1 // 0 LOGIC_CONDITION_OPERAND_WAYPOINTS_IS_WP, // 0/1 // 0
LOGIC_CONDITION_OPERAND_WAYPOINTS_WAYPOINT_INDEX, // 1 LOGIC_CONDITION_OPERAND_WAYPOINTS_WAYPOINT_INDEX, // 1
LOGIC_CONDITION_OPERAND_WAYPOINTS_WAYPOINT_ACTION, // 2 LOGIC_CONDITION_OPERAND_WAYPOINTS_WAYPOINT_ACTION, // 2
LOGIC_CONDITION_OPERAND_WAYPOINTS_WAYPOINT_DISTANCE, // 3 LOGIC_CONDITION_OPERAND_WAYPOINTS_NEXT_WAYPOINT_ACTION, // 3
LOGIC_CONDTIION_OPERAND_WAYPOINTS_DISTANCE_FROM_WAYPOINT, // 4 LOGIC_CONDITION_OPERAND_WAYPOINTS_WAYPOINT_DISTANCE, // 4
LOGIC_CONDITION_OPERAND_WAYPOINTS_USER1_ACTION, // 5 LOGIC_CONDTIION_OPERAND_WAYPOINTS_DISTANCE_FROM_WAYPOINT, // 5
LOGIC_CONDITION_OPERAND_WAYPOINTS_USER2_ACTION, // 6 LOGIC_CONDITION_OPERAND_WAYPOINTS_USER1_ACTION, // 6
LOGIC_CONDITION_OPERAND_WAYPOINTS_USER3_ACTION, // 7 LOGIC_CONDITION_OPERAND_WAYPOINTS_USER2_ACTION, // 7
LOGIC_CONDITION_OPERAND_WAYPOINTS_USER4_ACTION, // 8 LOGIC_CONDITION_OPERAND_WAYPOINTS_USER3_ACTION, // 8
LOGIC_CONDITION_OPERAND_WAYPOINTS_USER4_ACTION, // 9
LOGIC_CONDITION_OPERAND_WAYPOINTS_USER1_ACTION_NEXT_WP, // 10
LOGIC_CONDITION_OPERAND_WAYPOINTS_USER2_ACTION_NEXT_WP, // 11
LOGIC_CONDITION_OPERAND_WAYPOINTS_USER3_ACTION_NEXT_WP, // 12
LOGIC_CONDITION_OPERAND_WAYPOINTS_USER4_ACTION_NEXT_WP, // 13
} logicWaypointOperands_e; } logicWaypointOperands_e;
typedef enum { typedef enum {