diff --git a/src/drivers/camera_trigger/camera_trigger.cpp b/src/drivers/camera_trigger/camera_trigger.cpp index d585e41c4a..cb61e40d89 100644 --- a/src/drivers/camera_trigger/camera_trigger.cpp +++ b/src/drivers/camera_trigger/camera_trigger.cpp @@ -122,6 +122,7 @@ private: param_t _p_mode; param_t _p_activation_time; param_t _p_interval; + param_t _p_pin; static constexpr uint32_t _gpios[6] = { GPIO_GPIO0_OUTPUT, @@ -177,6 +178,7 @@ CameraTrigger::CameraTrigger() : _p_interval = param_find("TRIG_INTERVAL"); _p_activation_time = param_find("TRIG_ACT_TIME"); _p_mode = param_find("TRIG_ACT_TIME"); + _p_pin = param_find("TRIG_PIN"); struct camera_trigger_s trigger = {}; @@ -213,6 +215,11 @@ CameraTrigger::start() param_get(_p_activation_time, &_activation_time); param_get(_p_interval, &_interval); param_get(_p_mode, &_mode); + param_get(_p_pin, &_pin); + + if (_pin < 1 || _pin > static_cast(sizeof(_gpios) / sizeof(_gpios[0]))) { + _pin = TRIGGER_PIN_DEFAULT; + } stm32_configgpio(_gpios[_pin - 1]); diff --git a/src/drivers/camera_trigger/camera_trigger_params.c b/src/drivers/camera_trigger/camera_trigger_params.c index 2098773992..d5d40648e0 100644 --- a/src/drivers/camera_trigger/camera_trigger_params.c +++ b/src/drivers/camera_trigger/camera_trigger_params.c @@ -84,3 +84,14 @@ PARAM_DEFINE_FLOAT(TRIG_ACT_TIME, 0.5f); * @group Camera trigger */ PARAM_DEFINE_INT32(TRIG_MODE, 0); + +/** + * Camera trigger pin + * + * Selects which pin is used, ranges from 1 to 6 (AUX1-AUX6) + * + * @min 1 + * @max 6 + * @group Camera trigger + */ +PARAM_DEFINE_INT32(TRIG_PIN, 1);