Skip to content

Commit b355551

Browse files
authored
Merge pull request iNavFlight#8747 from iNavFlight/MrD_Update-flight-mode-operand-in-programming
Update Flight Mode operand in programming framework
2 parents 90451dc + 881bfaf commit b355551

File tree

3 files changed

+33
-16
lines changed

3 files changed

+33
-16
lines changed

docs/Programming Framework.md

+20-14
Original file line numberDiff line numberDiff line change
@@ -143,19 +143,24 @@ IPF can be edited using INAV Configurator user interface, of via CLI
143143

144144
#### FLIGHT_MODE
145145

146-
| Operand Value | Name | Notes |
147-
|---------------|-----------|-------|
148-
| 0 | FAILSAFE | |
149-
| 1 | MANUAL | |
150-
| 2 | RTH | |
151-
| 3 | POSHOLD | |
152-
| 4 | CRUISE | |
153-
| 5 | ALTHOLD | |
154-
| 6 | ANGLE | |
155-
| 7 | HORIZON | |
156-
| 8 | AIR | |
157-
| 9 | USER1 | |
158-
| 10 | USER2 | |
146+
| Operand Value | Name | Notes |
147+
|---------------|-------------------|-------|
148+
| 0 | FAILSAFE | |
149+
| 1 | MANUAL | |
150+
| 2 | RTH | |
151+
| 3 | POSHOLD | |
152+
| 4 | CRUISE | |
153+
| 5 | ALTHOLD | |
154+
| 6 | ANGLE | |
155+
| 7 | HORIZON | |
156+
| 8 | AIR | |
157+
| 9 | USER1 | |
158+
| 10 | USER2 | |
159+
| 11 | COURSE_HOLD | |
160+
| 12 | USER3 | |
161+
| 13 | USER4 | |
162+
| 14 | ACRO | |
163+
| 15 | WAYPOINT_MISSION | |
159164

160165
#### WAYPOINTS
161166

@@ -195,7 +200,8 @@ All flags are reseted on ARM and DISARM event.
195200

196201
| bit | Decimal | Function |
197202
|-------|-----------|-----------|
198-
| 0 | 1 | Latch - after activation LC will stay active until LATCH flag is reseted |
203+
| 0 | 1 | Latch - after activation LC will stay active until LATCH flag is reset |
204+
| 1 | 2 | Timeout satisfied - Used in timed operands to determine if the timeout has been met |
199205

200206
## Global variables
201207

src/main/programming/logic_condition.c

+11-2
Original file line numberDiff line numberDiff line change
@@ -808,12 +808,16 @@ static int logicConditionGetFlightModeOperandValue(int operand) {
808808
return (bool) FLIGHT_MODE(NAV_POSHOLD_MODE);
809809
break;
810810

811+
case LOGIC_CONDITION_OPERAND_FLIGHT_MODE_WAYPOINT_MISSION:
812+
return (bool) FLIGHT_MODE(NAV_WP_MODE);
813+
break;
814+
811815
case LOGIC_CONDITION_OPERAND_FLIGHT_MODE_COURSE_HOLD:
812-
return (bool) FLIGHT_MODE(NAV_COURSE_HOLD_MODE);
816+
return ((bool) FLIGHT_MODE(NAV_COURSE_HOLD_MODE) && !(bool)FLIGHT_MODE(NAV_ALTHOLD_MODE));
813817
break;
814818

815819
case LOGIC_CONDITION_OPERAND_FLIGHT_MODE_CRUISE:
816-
return (bool)(FLIGHT_MODE(NAV_COURSE_HOLD_MODE) && FLIGHT_MODE(NAV_ALTHOLD_MODE));
820+
return (bool) (FLIGHT_MODE(NAV_COURSE_HOLD_MODE) && FLIGHT_MODE(NAV_ALTHOLD_MODE));
817821
break;
818822

819823
case LOGIC_CONDITION_OPERAND_FLIGHT_MODE_ALTHOLD:
@@ -832,6 +836,11 @@ static int logicConditionGetFlightModeOperandValue(int operand) {
832836
return (bool) FLIGHT_MODE(AIRMODE_ACTIVE);
833837
break;
834838

839+
case LOGIC_CONDITION_OPERAND_FLIGHT_MODE_ACRO:
840+
return (((bool) FLIGHT_MODE(ANGLE_MODE) || (bool) FLIGHT_MODE(HORIZON_MODE) || (bool) FLIGHT_MODE(MANUAL_MODE) || (bool) FLIGHT_MODE(NAV_RTH_MODE) ||
841+
(bool) FLIGHT_MODE(NAV_POSHOLD_MODE) || (bool) FLIGHT_MODE(NAV_COURSE_HOLD_MODE) || (bool) FLIGHT_MODE(NAV_WP_MODE)) == false);
842+
break;
843+
835844
case LOGIC_CONDITION_OPERAND_FLIGHT_MODE_USER1:
836845
return IS_RC_MODE_ACTIVE(BOXUSER1);
837846
break;

src/main/programming/logic_condition.h

+2
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ typedef enum {
152152
LOGIC_CONDITION_OPERAND_FLIGHT_MODE_COURSE_HOLD, // 11
153153
LOGIC_CONDITION_OPERAND_FLIGHT_MODE_USER3, // 12
154154
LOGIC_CONDITION_OPERAND_FLIGHT_MODE_USER4, // 13
155+
LOGIC_CONDITION_OPERAND_FLIGHT_MODE_ACRO, // 14
156+
LOGIC_CONDITION_OPERAND_FLIGHT_MODE_WAYPOINT_MISSION, // 15
155157
} logicFlightModeOperands_e;
156158

157159
typedef enum {

0 commit comments

Comments
 (0)