diff --git a/src/drivers/camera_trigger/camera_trigger.cpp b/src/drivers/camera_trigger/camera_trigger.cpp index 6700ef18b8..bdd8a7cd4a 100644 --- a/src/drivers/camera_trigger/camera_trigger.cpp +++ b/src/drivers/camera_trigger/camera_trigger.cpp @@ -581,15 +581,15 @@ CameraTrigger::cycle_trampoline(void *arg) if (cmd.param1 > 0.0f) { trig->_distance = cmd.param1; - //param_set(trig->_p_distance, &(trig->_distance)); + param_set(trig->_p_distance, &(trig->_distance)); trig->_trigger_enabled = true; trig->_trigger_paused = false; - } else if (commandParamToInt(param1) == 0) { + } else if (commandParamToInt(cmd.param1) == 0) { trig->_trigger_paused = true; - } else if (commandParamToInt(param1) == -1) { + } else if (commandParamToInt(cmd.param1) == -1) { trig->_trigger_enabled = false; } @@ -664,6 +664,15 @@ CameraTrigger::cycle_trampoline(void *arg) hrt_call_after(&trig->_disengagecall, 0, (hrt_callout)&CameraTrigger::disengage, trig); + // reset distance counter if needed + if (trig->_trigger_mode == TRIGGER_MODE_DISTANCE_ON_CMD || + trig->_trigger_mode == TRIGGER_MODE_DISTANCE_ALWAYS_ON) { + + // this will force distance counter reinit on getting enabled/unpaused + trig->_valid_position = false; + + } + } // only run on state changes, not every loop iteration