From cd85f584cfd1257c09644effb479b1b1c4ba4d02 Mon Sep 17 00:00:00 2001 From: RomanBapst Date: Wed, 24 Jul 2019 10:56:47 +0200 Subject: [PATCH] camera trigger: do not try to start if interface was not created Signed-off-by: RomanBapst --- src/drivers/camera_trigger/camera_trigger.cpp | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/drivers/camera_trigger/camera_trigger.cpp b/src/drivers/camera_trigger/camera_trigger.cpp index 44062d07f0..ad6756a10f 100644 --- a/src/drivers/camera_trigger/camera_trigger.cpp +++ b/src/drivers/camera_trigger/camera_trigger.cpp @@ -133,7 +133,7 @@ public: /** * Start the task. */ - void start(); + bool start(); /** * Stop the task. @@ -427,9 +427,17 @@ CameraTrigger::shoot_once() } } -void +bool CameraTrigger::start() { + if (_camera_interface == nullptr) { + if (camera_trigger::g_camera_trigger != nullptr) { + delete (camera_trigger::g_camera_trigger); + } + + return false; + } + if ((_trigger_mode == TRIGGER_MODE_INTERVAL_ALWAYS_ON || _trigger_mode == TRIGGER_MODE_DISTANCE_ALWAYS_ON) && _camera_interface->has_power_control() && @@ -456,6 +464,8 @@ CameraTrigger::start() // start to monitor at high rate for trigger enable command ScheduleNow(); + + return true; } void @@ -827,7 +837,11 @@ int camera_trigger_main(int argc, char *argv[]) return 1; } - camera_trigger::g_camera_trigger->start(); + if (!camera_trigger::g_camera_trigger->start()) { + PX4_WARN("failed to start camera trigger"); + return 1; + } + return 0; }