camera_trigger : reset distance counters to ensure consistent triggering after pausing/disabling

This commit is contained in:
Mohammed Kabir
2017-05-11 19:00:52 +02:00
committed by Lorenz Meier
parent 0b93568aa3
commit 6a38118c73
+12 -3
View File
@@ -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