mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-15 12:25:17 +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:
parent
bce0cec406
commit
775a080768
2 changed files with 47 additions and 30 deletions
|
@ -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;
|
||||||
|
@ -739,6 +748,10 @@ int logicConditionGetOperandValue(logicOperandType_e type, int operand) {
|
||||||
retVal = programmingPidGetOutput(operand);
|
retVal = programmingPidGetOutput(operand);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case LOGIC_CONDITION_OPERAND_TYPE_WAYPOINTS:
|
||||||
|
retVal = logicConditionGetWaypointOperandValue(operand);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -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),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue