add camera trigger feedback (input capture when camera actually takes the photo)

This commit is contained in:
DanielePettenuzzo
2018-08-19 19:02:48 +02:00
committed by Daniel Agar
parent 5229882470
commit 42afc88285
5 changed files with 45 additions and 13 deletions
+11 -4
View File
@@ -171,6 +171,7 @@ private:
bool _turning_on;
matrix::Vector2f _last_shoot_position;
bool _valid_position;
int32_t _hotshoe_trigger_feedback;
int _command_sub;
int _lpos_sub;
@@ -183,6 +184,7 @@ private:
param_t _p_interval;
param_t _p_distance;
param_t _p_interface;
param_t _p_hotshoe_trigger_feedback;
trigger_mode_t _trigger_mode;
@@ -246,6 +248,7 @@ CameraTrigger::CameraTrigger() :
_turning_on(false),
_last_shoot_position(0.0f, 0.0f),
_valid_position(false),
_hotshoe_trigger_feedback(0),
_command_sub(-1),
_lpos_sub(-1),
_trigger_pub(nullptr),
@@ -269,12 +272,14 @@ CameraTrigger::CameraTrigger() :
_p_activation_time = param_find("TRIG_ACT_TIME");
_p_mode = param_find("TRIG_MODE");
_p_interface = param_find("TRIG_INTERFACE");
_p_hotshoe_trigger_feedback = param_find("CAM_HSHOE_FBACK");
param_get(_p_activation_time, &_activation_time);
param_get(_p_interval, &_interval);
param_get(_p_distance, &_distance);
param_get(_p_mode, (int32_t *)&_trigger_mode);
param_get(_p_interface, (int32_t *)&_camera_interface_mode);
param_get(_p_hotshoe_trigger_feedback, &_hotshoe_trigger_feedback);
switch (_camera_interface_mode) {
#ifdef __PX4_NUTTX
@@ -313,9 +318,11 @@ CameraTrigger::CameraTrigger() :
param_set_no_notification(_p_activation_time, &(_activation_time));
}
// Advertise critical publishers here, because we cannot advertise in interrupt context
struct camera_trigger_s trigger = {};
_trigger_pub = orb_advertise(ORB_ID(camera_trigger), &trigger);
if (_hotshoe_trigger_feedback == 0) {
// Advertise critical publishers here, because we cannot advertise in interrupt context
struct camera_trigger_s trigger = {};
_trigger_pub = orb_advertise(ORB_ID(camera_trigger), &trigger);
}
}
@@ -743,7 +750,7 @@ CameraTrigger::engage(void *arg)
// Trigger the camera
trig->_camera_interface->trigger(true);
if (trig->_test_shot) {
if (trig->_test_shot || (trig->_hotshoe_trigger_feedback != 0)) {
// do not send messages or increment frame count for test shots
return;
}