diff --git a/src/main/programming/logic_condition.c b/src/main/programming/logic_condition.c index d96871a43e..89d3a9aefb 100644 --- a/src/main/programming/logic_condition.c +++ b/src/main/programming/logic_condition.c @@ -89,7 +89,8 @@ static int logicConditionCompute( int32_t currentVaue, logicOperation_e operation, int32_t operandA, - int32_t operandB + int32_t operandB, + timeMs_t *timeout ) { int temporaryValue; vtxDeviceCapability_t vtxDeviceCapability; @@ -162,6 +163,12 @@ static int logicConditionCompute( return currentVaue; break; + case LOGIC_CONDITION_EDGE: + if (operandA && timeout == 0) { + + } + break; + case LOGIC_CONDITION_GVAR_SET: gvSet(operandA, operandB); return operandB; @@ -425,7 +432,8 @@ void logicConditionProcess(uint8_t i) { logicConditionStates[i].value, logicConditions(i)->operation, operandAValue, - operandBValue + operandBValue, + &logicConditionStates[i].timeout, ); logicConditionStates[i].value = newValue; @@ -786,6 +794,7 @@ void logicConditionReset(void) { for (uint8_t i = 0; i < MAX_LOGIC_CONDITIONS; i++) { logicConditionStates[i].value = 0; logicConditionStates[i].flags = 0; + logicConditionStates[i].timeout = 0; } } diff --git a/src/main/programming/logic_condition.h b/src/main/programming/logic_condition.h index 1d1f106dd3..09c7a38cc5 100644 --- a/src/main/programming/logic_condition.h +++ b/src/main/programming/logic_condition.h @@ -76,7 +76,8 @@ typedef enum { LOGIC_CONDITION_MAX = 44, LOGIC_CONDITION_FLIGHT_AXIS_ANGLE_OVERRIDE = 45, LOGIC_CONDITION_FLIGHT_AXIS_RATE_OVERRIDE = 46, - LOGIC_CONDITION_LAST = 47, + LOGIC_CONDITION_EDGE = 47, + LOGIC_CONDITION_LAST = 48, } logicOperation_e; typedef enum logicOperandType_s { @@ -188,6 +189,7 @@ PG_DECLARE_ARRAY(logicCondition_t, MAX_LOGIC_CONDITIONS, logicConditions); typedef struct logicConditionState_s { int value; uint8_t flags; + timeMs_t timeout; } logicConditionState_t; typedef struct rcChannelOverride_s {