clean up camera capture driver

This commit is contained in:
DanielePettenuzzo
2019-02-10 18:07:44 -05:00
committed by Daniel Agar
parent 42e2bd47c4
commit ea9d6899ae
3 changed files with 11 additions and 21 deletions
+6 -15
View File
@@ -77,7 +77,7 @@ CameraCapture::CameraCapture() :
_p_camera_capture_edge = param_find("CAM_CAP_EDGE"); _p_camera_capture_edge = param_find("CAM_CAP_EDGE");
param_get(_p_camera_capture_edge, &_camera_capture_edge); param_get(_p_camera_capture_edge, &_camera_capture_edge);
if (_camera_capture_feedback != 0) { if (_camera_capture_feedback) {
struct camera_trigger_s trigger = {}; struct camera_trigger_s trigger = {};
_trigger_pub = orb_advertise(ORB_ID(camera_trigger), &trigger); _trigger_pub = orb_advertise(ORB_ID(camera_trigger), &trigger);
} }
@@ -97,7 +97,7 @@ CameraCapture::capture_callback(uint32_t chan_index,
struct camera_trigger_s trigger {}; struct camera_trigger_s trigger {};
if (_camera_capture_mode == 0) { if (_camera_capture_mode == 0) {
trigger.timestamp = hrt_absolute_time(); trigger.timestamp = edge_time;
} else { } else {
trigger.timestamp = edge_time - ((edge_time - _last_fall_time) / 2); // Get timestamp of mid-exposure trigger.timestamp = edge_time - ((edge_time - _last_fall_time) / 2); // Get timestamp of mid-exposure
@@ -105,7 +105,7 @@ CameraCapture::capture_callback(uint32_t chan_index,
trigger.seq = _capture_seq++; trigger.seq = _capture_seq++;
if (_camera_capture_feedback != 0) { if (_camera_capture_feedback) {
orb_publish(ORB_ID(camera_trigger), _trigger_pub, &trigger); orb_publish(ORB_ID(camera_trigger), _trigger_pub, &trigger);
} }
@@ -196,21 +196,12 @@ CameraCapture::set_capture_control(bool enabled)
{ {
if (enabled) { if (enabled) {
// register callbacks // register callbacks
switch (_camera_capture_edge) { if (!_camera_capture_edge) {
case 0:
up_input_capture_set(5, Rising, 0, &CameraCapture::capture_trampoline, this);
break;
case 1:
up_input_capture_set(5, Falling, 0, &CameraCapture::capture_trampoline, this); up_input_capture_set(5, Falling, 0, &CameraCapture::capture_trampoline, this);
break;
case 2: } else {
up_input_capture_set(5, Both, 0, &CameraCapture::capture_trampoline, this); up_input_capture_set(5, Rising, 0, &CameraCapture::capture_trampoline, this);
break;
default:
break;
} }
_capture_enabled = true; _capture_enabled = true;
@@ -77,9 +77,8 @@ PARAM_DEFINE_INT32(CAM_CAP_MODE, 0);
/** /**
* Camera capture edge * Camera capture edge
* *
* @value 0 Rising edge * @value 0 Falling edge
* @value 1 Falling edge * @value 1 Rising edge
* @value 2 Both edges
* *
* @group Camera Control * @group Camera Control
* @reboot_required true * @reboot_required true
@@ -248,7 +248,7 @@ CameraTrigger::CameraTrigger() :
_turning_on(false), _turning_on(false),
_last_shoot_position(0.0f, 0.0f), _last_shoot_position(0.0f, 0.0f),
_valid_position(false), _valid_position(false),
_camera_capture_feedback(0), _camera_capture_feedback(false),
_command_sub(-1), _command_sub(-1),
_lpos_sub(-1), _lpos_sub(-1),
_trigger_pub(nullptr), _trigger_pub(nullptr),
@@ -318,7 +318,7 @@ CameraTrigger::CameraTrigger() :
param_set_no_notification(_p_activation_time, &(_activation_time)); param_set_no_notification(_p_activation_time, &(_activation_time));
} }
if (_camera_capture_feedback == 0) { if (!_camera_capture_feedback) {
// Advertise critical publishers here, because we cannot advertise in interrupt context // Advertise critical publishers here, because we cannot advertise in interrupt context
struct camera_trigger_s trigger = {}; struct camera_trigger_s trigger = {};
_trigger_pub = orb_advertise(ORB_ID(camera_trigger), &trigger); _trigger_pub = orb_advertise(ORB_ID(camera_trigger), &trigger);
@@ -750,7 +750,7 @@ CameraTrigger::engage(void *arg)
// Trigger the camera // Trigger the camera
trig->_camera_interface->trigger(true); trig->_camera_interface->trigger(true);
if (trig->_test_shot || (trig->_camera_capture_feedback != 0)) { if (trig->_test_shot || trig->_camera_capture_feedback) {
// do not send messages or increment frame count for test shots // do not send messages or increment frame count for test shots
return; return;
} }