1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-15 20:35:29 +03:00

Initial code

This will break LCs backwards compatibility. But a small conversion tool will be simple to make.
This commit is contained in:
Darren Lines 2022-11-22 13:40:36 +00:00
parent bce0cec406
commit 775a080768
2 changed files with 47 additions and 30 deletions

View file

@ -442,6 +442,27 @@ void logicConditionProcess(uint8_t i) {
} }
} }
static int logicConditionGetWaypointOperandValue(int operand) {
switch (operand) {
case LOGIC_CONDITION_OPERAND_WAYPOINTS_IS_WP: // 0/1
return (navGetCurrentStateFlags() & NAV_AUTO_WP) ? 1 : 0;
break;
case LOGIC_CONDITION_OPERAND_WAYPOINTS_WAYPOINT_INDEX:
return NAV_Status.activeWpNumber;
break;
case LOGIC_CONDITION_OPERAND_WAYPOINTS_WAYPOINT_ACTION:
return NAV_Status.activeWpAction;
break;
default:
return 0;
break;
}
}
static int logicConditionGetFlightOperandValue(int operand) { static int logicConditionGetFlightOperandValue(int operand) {
switch (operand) { switch (operand) {
@ -555,10 +576,6 @@ static int logicConditionGetFlightOperandValue(int operand) {
return (navGetCurrentStateFlags() & NAV_AUTO_RTH) ? 1 : 0; return (navGetCurrentStateFlags() & NAV_AUTO_RTH) ? 1 : 0;
break; break;
case LOGIC_CONDITION_OPERAND_FLIGHT_IS_WP: // 0/1
return (navGetCurrentStateFlags() & NAV_AUTO_WP) ? 1 : 0;
break;
case LOGIC_CONDITION_OPERAND_FLIGHT_IS_LANDING: // 0/1 case LOGIC_CONDITION_OPERAND_FLIGHT_IS_LANDING: // 0/1
return (navGetCurrentStateFlags() & NAV_CTL_LAND) ? 1 : 0; return (navGetCurrentStateFlags() & NAV_CTL_LAND) ? 1 : 0;
break; break;
@ -579,14 +596,6 @@ static int logicConditionGetFlightOperandValue(int operand) {
return axisPID[PITCH]; return axisPID[PITCH];
break; break;
case LOGIC_CONDITION_OPERAND_FLIGHT_WAYPOINT_INDEX:
return NAV_Status.activeWpNumber;
break;
case LOGIC_CONDITION_OPERAND_FLIGHT_WAYPOINT_ACTION:
return NAV_Status.activeWpAction;
break;
case LOGIC_CONDITION_OPERAND_FLIGHT_3D_HOME_DISTANCE: //in m case LOGIC_CONDITION_OPERAND_FLIGHT_3D_HOME_DISTANCE: //in m
return constrain(calc_length_pythagorean_2D(GPS_distanceToHome, getEstimatedActualPosition(Z) / 100.0f), 0, INT16_MAX); return constrain(calc_length_pythagorean_2D(GPS_distanceToHome, getEstimatedActualPosition(Z) / 100.0f), 0, INT16_MAX);
break; break;
@ -740,6 +749,10 @@ int logicConditionGetOperandValue(logicOperandType_e type, int operand) {
} }
break; break;
case LOGIC_CONDITION_OPERAND_TYPE_WAYPOINTS:
retVal = logicConditionGetWaypointOperandValue(operand);
break;
default: default:
break; break;
} }

View file

@ -87,6 +87,7 @@ typedef enum logicOperandType_s {
LOGIC_CONDITION_OPERAND_TYPE_LC, // Result of different LC and LC operand LOGIC_CONDITION_OPERAND_TYPE_LC, // Result of different LC and LC operand
LOGIC_CONDITION_OPERAND_TYPE_GVAR, // Value from a global variable LOGIC_CONDITION_OPERAND_TYPE_GVAR, // Value from a global variable
LOGIC_CONDITION_OPERAND_TYPE_PID, // Value from a Programming PID LOGIC_CONDITION_OPERAND_TYPE_PID, // Value from a Programming PID
LOGIC_CONDITION_OPERAND_TYPE_WAYPOINTS,
LOGIC_CONDITION_OPERAND_TYPE_LAST LOGIC_CONDITION_OPERAND_TYPE_LAST
} logicOperandType_e; } logicOperandType_e;
@ -114,24 +115,21 @@ typedef enum {
LOGIC_CONDITION_OPERAND_FLIGHT_IS_POSITION_CONTROL, // 0/1 // 20 LOGIC_CONDITION_OPERAND_FLIGHT_IS_POSITION_CONTROL, // 0/1 // 20
LOGIC_CONDITION_OPERAND_FLIGHT_IS_EMERGENCY_LANDING, // 0/1 // 21 LOGIC_CONDITION_OPERAND_FLIGHT_IS_EMERGENCY_LANDING, // 0/1 // 21
LOGIC_CONDITION_OPERAND_FLIGHT_IS_RTH, // 0/1 // 22 LOGIC_CONDITION_OPERAND_FLIGHT_IS_RTH, // 0/1 // 22
LOGIC_CONDITION_OPERAND_FLIGHT_IS_WP, // 0/1 // 23 LOGIC_CONDITION_OPERAND_FLIGHT_IS_LANDING, // 0/1 // 23 - was 24
LOGIC_CONDITION_OPERAND_FLIGHT_IS_LANDING, // 0/1 // 24 LOGIC_CONDITION_OPERAND_FLIGHT_IS_FAILSAFE, // 0/1 // 24 - was 25
LOGIC_CONDITION_OPERAND_FLIGHT_IS_FAILSAFE, // 0/1 // 25 LOGIC_CONDITION_OPERAND_FLIGHT_STABILIZED_ROLL, // 25 - was 26
LOGIC_CONDITION_OPERAND_FLIGHT_STABILIZED_ROLL, // 26 LOGIC_CONDITION_OPERAND_FLIGHT_STABILIZED_PITCH, // 26 - was 27
LOGIC_CONDITION_OPERAND_FLIGHT_STABILIZED_PITCH, // 27 LOGIC_CONDITION_OPERAND_FLIGHT_STABILIZED_YAW, // 27 - was 28
LOGIC_CONDITION_OPERAND_FLIGHT_STABILIZED_YAW, // 28 LOGIC_CONDITION_OPERAND_FLIGHT_3D_HOME_DISTANCE, // 28 - was 31
LOGIC_CONDITION_OPERAND_FLIGHT_WAYPOINT_INDEX, // 29 LOGIC_CONDITION_OPERAND_FLIGHT_CRSF_LQ, // 29 - was 32
LOGIC_CONDITION_OPERAND_FLIGHT_WAYPOINT_ACTION, // 30 LOGIC_CONDITION_OPERAND_FLIGHT_CRSF_SNR, // 39 - was 33
LOGIC_CONDITION_OPERAND_FLIGHT_3D_HOME_DISTANCE, // 31 LOGIC_CONDITION_OPERAND_FLIGHT_GPS_VALID, // 0/1 // 31 - was 34
LOGIC_CONDITION_OPERAND_FLIGHT_CRSF_LQ, // 32 LOGIC_CONDITION_OPERAND_FLIGHT_LOITER_RADIUS, // 32 - was 35
LOGIC_CONDITION_OPERAND_FLIGHT_CRSF_SNR, // 33 LOGIC_CONDITION_OPERAND_FLIGHT_ACTIVE_PROFILE, //int // 33 - was 36
LOGIC_CONDITION_OPERAND_FLIGHT_GPS_VALID, // 0/1 // 34 LOGIC_CONDITION_OPERAND_FLIGHT_BATT_CELLS, // 34 - was 37
LOGIC_CONDITION_OPERAND_FLIGHT_LOITER_RADIUS, // 35 LOGIC_CONDITION_OPERAND_FLIGHT_AGL_STATUS, //0,1,2 // 35 - was 38
LOGIC_CONDITION_OPERAND_FLIGHT_ACTIVE_PROFILE, //int // 36 LOGIC_CONDITION_OPERAND_FLIGHT_AGL, //0,1,2 // 36 - was 39
LOGIC_CONDITION_OPERAND_FLIGHT_BATT_CELLS, // 37 LOGIC_CONDITION_OPERAND_FLIGHT_RANGEFINDER_RAW, //int // 37 - was 40
LOGIC_CONDITION_OPERAND_FLIGHT_AGL_STATUS, //0,1,2 // 38
LOGIC_CONDITION_OPERAND_FLIGHT_AGL, //0,1,2 // 39
LOGIC_CONDITION_OPERAND_FLIGHT_RANGEFINDER_RAW, //int // 40
} logicFlightOperands_e; } logicFlightOperands_e;
typedef enum { typedef enum {
@ -151,6 +149,12 @@ typedef enum {
LOGIC_CONDITION_OPERAND_FLIGHT_MODE_USER4, // 13 LOGIC_CONDITION_OPERAND_FLIGHT_MODE_USER4, // 13
} logicFlightModeOperands_e; } logicFlightModeOperands_e;
typedef enum {
LOGIC_CONDITION_OPERAND_WAYPOINTS_IS_WP, // 0/1 // 1
LOGIC_CONDITION_OPERAND_WAYPOINTS_WAYPOINT_INDEX, // 2
LOGIC_CONDITION_OPERAND_WAYPOINTS_WAYPOINT_ACTION, // 3
} logicWaypointOperands_e;
typedef enum { typedef enum {
LOGIC_CONDITION_GLOBAL_FLAG_OVERRIDE_ARMING_SAFETY = (1 << 0), LOGIC_CONDITION_GLOBAL_FLAG_OVERRIDE_ARMING_SAFETY = (1 << 0),
LOGIC_CONDITION_GLOBAL_FLAG_OVERRIDE_THROTTLE_SCALE = (1 << 1), LOGIC_CONDITION_GLOBAL_FLAG_OVERRIDE_THROTTLE_SCALE = (1 << 1),