mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-17 05:15:23 +03:00
Add modulus operator support
This commit is contained in:
parent
ee06203151
commit
2eecf30603
3 changed files with 33 additions and 23 deletions
|
@ -51,6 +51,7 @@ IPF can be edited using INAV Configurator user interface, of via CLI
|
|||
| 15 | SUB | Substract `Operand B` from `Operand A` and returns the result |
|
||||
| 16 | MUL | Multiply `Operand A` by `Operand B` and returns the result |
|
||||
| 17 | DIV | Divide `Operand A` by `Operand B` and returns the result |
|
||||
| 17 | MOD | Divide `Operand A` by `Operand B` and returns the remainder |
|
||||
| 18 | GVAR SET | Store value from `Operand B` into the Global Variable addressed by `Operand B`. Bear in mind, that operand `Global Variable` means: Value stored in Global Variable of an index! To store in GVAR 1 use `Value 1` not `Global Variable 1` |
|
||||
| 19 | GVAR INC | Increase the GVAR indexed by `Operand A` with value from `Operand B` |
|
||||
| 20 | GVAR DEC | Decrease the GVAR indexed by `Operand A` with value from `Operand B` |
|
||||
|
|
|
@ -194,6 +194,14 @@ static int logicConditionCompute(
|
|||
}
|
||||
break;
|
||||
|
||||
case LOGIC_CONDITION_MODULUS:
|
||||
if (operandB != 0) {
|
||||
return constrain(operandA % operandB, INT16_MIN, INT16_MAX);
|
||||
} else {
|
||||
return operandA;
|
||||
}
|
||||
break;
|
||||
|
||||
case LOGIC_CONDITION_OVERRIDE_ARMING_SAFETY:
|
||||
LOGIC_CONDITION_GLOBAL_FLAG_ENABLE(LOGIC_CONDITION_GLOBAL_FLAG_OVERRIDE_ARMING_SAFETY);
|
||||
return true;
|
||||
|
|
|
@ -47,29 +47,30 @@ typedef enum {
|
|||
LOGIC_CONDITION_SUB = 15,
|
||||
LOGIC_CONDITION_MUL = 16,
|
||||
LOGIC_CONDITION_DIV = 17,
|
||||
LOGIC_CONDITION_GVAR_SET = 18,
|
||||
LOGIC_CONDITION_GVAR_INC = 19,
|
||||
LOGIC_CONDITION_GVAR_DEC = 20,
|
||||
LOGIC_CONDITION_PORT_SET = 21,
|
||||
LOGIC_CONDITION_OVERRIDE_ARMING_SAFETY = 22,
|
||||
LOGIC_CONDITION_OVERRIDE_THROTTLE_SCALE = 23,
|
||||
LOGIC_CONDITION_SWAP_ROLL_YAW = 24,
|
||||
LOGIC_CONDITION_SET_VTX_POWER_LEVEL = 25,
|
||||
LOGIC_CONDITION_INVERT_ROLL = 26,
|
||||
LOGIC_CONDITION_INVERT_PITCH = 27,
|
||||
LOGIC_CONDITION_INVERT_YAW = 28,
|
||||
LOGIC_CONDITION_OVERRIDE_THROTTLE = 29,
|
||||
LOGIC_CONDITION_SET_VTX_BAND = 30,
|
||||
LOGIC_CONDITION_SET_VTX_CHANNEL = 31,
|
||||
LOGIC_CONDITION_SET_OSD_LAYOUT = 32,
|
||||
LOGIC_CONDITION_SIN = 33,
|
||||
LOGIC_CONDITION_COS = 34,
|
||||
LOGIC_CONDITION_TAN = 35,
|
||||
LOGIC_CONDITION_MAP_INPUT = 36,
|
||||
LOGIC_CONDITION_MAP_OUTPUT = 37,
|
||||
LOGIC_CONDITION_RC_CHANNEL_OVERRIDE = 38,
|
||||
LOGIC_CONDITION_SET_HEADING_TARGET = 39,
|
||||
LOGIC_CONDITION_LAST = 40,
|
||||
LOGIC_CONDITION_MODULUS = 18,
|
||||
LOGIC_CONDITION_GVAR_SET = 19,
|
||||
LOGIC_CONDITION_GVAR_INC = 20,
|
||||
LOGIC_CONDITION_GVAR_DEC = 21,
|
||||
LOGIC_CONDITION_PORT_SET = 22,
|
||||
LOGIC_CONDITION_OVERRIDE_ARMING_SAFETY = 23,
|
||||
LOGIC_CONDITION_OVERRIDE_THROTTLE_SCALE = 24,
|
||||
LOGIC_CONDITION_SWAP_ROLL_YAW = 25,
|
||||
LOGIC_CONDITION_SET_VTX_POWER_LEVEL = 26,
|
||||
LOGIC_CONDITION_INVERT_ROLL = 27,
|
||||
LOGIC_CONDITION_INVERT_PITCH = 28,
|
||||
LOGIC_CONDITION_INVERT_YAW = 29,
|
||||
LOGIC_CONDITION_OVERRIDE_THROTTLE = 30,
|
||||
LOGIC_CONDITION_SET_VTX_BAND = 31,
|
||||
LOGIC_CONDITION_SET_VTX_CHANNEL = 32,
|
||||
LOGIC_CONDITION_SET_OSD_LAYOUT = 33,
|
||||
LOGIC_CONDITION_SIN = 34,
|
||||
LOGIC_CONDITION_COS = 35,
|
||||
LOGIC_CONDITION_TAN = 36,
|
||||
LOGIC_CONDITION_MAP_INPUT = 37,
|
||||
LOGIC_CONDITION_MAP_OUTPUT = 38,
|
||||
LOGIC_CONDITION_RC_CHANNEL_OVERRIDE = 39,
|
||||
LOGIC_CONDITION_SET_HEADING_TARGET = 40,
|
||||
LOGIC_CONDITION_LAST = 41,
|
||||
} logicOperation_e;
|
||||
|
||||
typedef enum logicOperandType_s {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue