From ea032c90f2402b4eb2092d0cc42211c601a40999 Mon Sep 17 00:00:00 2001 From: Nathan Clack Date: Thu, 18 Jan 2024 12:33:06 -0800 Subject: [PATCH 1/3] execute_trigger forces a software trigger in all modes --- acquire-common | 2 +- src/dcam.camera.c | 21 +++++++++++++++++++++ tests/abort-finite-acquisition.cpp | 3 ++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/acquire-common b/acquire-common index 6f4e6ff..be50934 160000 --- a/acquire-common +++ b/acquire-common @@ -1 +1 @@ -Subproject commit 6f4e6ff976b313d5046fbfc3703a17399fe6440c +Subproject commit be50934d7f562976463f3942eb79eb9757008075 diff --git a/src/dcam.camera.c b/src/dcam.camera.c index 6fd4dcc..2da936c 100644 --- a/src/dcam.camera.c +++ b/src/dcam.camera.c @@ -888,7 +888,28 @@ enum DeviceStatusCode aq_dcam_fire_software_trigger(struct Camera* self_) { struct Dcam4Camera* self = containerof(self_, struct Dcam4Camera, camera); + + const HDCAM h = self->hdcam; + int trigger_source; + DCAM(prop_read(i32, h, DCAM_IDPROP_TRIGGERSOURCE, &trigger_source)); + + if (trigger_source != DCAMPROP_TRIGGERSOURCE__SOFTWARE) { + + // Force a software trigger, by temporarily disabling external + // triggering, firing a software trigger, and re-enabling the + // external trigger. + + DCAM(dcamprop_setvalue( + h, DCAM_IDPROP_TRIGGERSOURCE, DCAMPROP_TRIGGERSOURCE__SOFTWARE)); + } + DCAM(dcamcap_firetrigger(self->hdcam, 0)); + + if (trigger_source != DCAMPROP_TRIGGERSOURCE__SOFTWARE) { + // restore + DCAM(dcamprop_setvalue(h, DCAM_IDPROP_TRIGGERSOURCE, trigger_source)); + } + return Device_Ok; Error: return Device_Err; diff --git a/tests/abort-finite-acquisition.cpp b/tests/abort-finite-acquisition.cpp index df6ecda..0e3fe43 100644 --- a/tests/abort-finite-acquisition.cpp +++ b/tests/abort-finite-acquisition.cpp @@ -89,7 +89,8 @@ main() }; props.video[0].camera.settings.exposure_time_us = 1e4; props.video[0].max_frame_count = 10; - props.video[0].camera.settings.input_triggers.frame_start.line = 0; + props.video[0].camera.settings.input_triggers.frame_start.line = + 0; // Ext. Trig props.video[0].camera.settings.input_triggers.frame_start.enable = 1; OK(acquire_configure(runtime, &props)); From 02ab8bbb521ffcaa5fb2fb23d7c5df6424b24414 Mon Sep 17 00:00:00 2001 From: Nathan Clack Date: Thu, 18 Jan 2024 12:43:59 -0800 Subject: [PATCH 2/3] Update src/dcam.camera.c --- src/dcam.camera.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dcam.camera.c b/src/dcam.camera.c index 2da936c..fdb5d33 100644 --- a/src/dcam.camera.c +++ b/src/dcam.camera.c @@ -895,7 +895,7 @@ aq_dcam_fire_software_trigger(struct Camera* self_) if (trigger_source != DCAMPROP_TRIGGERSOURCE__SOFTWARE) { - // Force a software trigger, by temporarily disabling external + // Force a software trigger by temporarily disabling external // triggering, firing a software trigger, and re-enabling the // external trigger. From 8b0a174fb18a8208076d83767142e023b803924d Mon Sep 17 00:00:00 2001 From: Alan Liddell Date: Fri, 19 Jan 2024 12:03:32 -0500 Subject: [PATCH 3/3] Update acquire-common. --- acquire-common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/acquire-common b/acquire-common index be50934..6a1cb04 160000 --- a/acquire-common +++ b/acquire-common @@ -1 +1 @@ -Subproject commit be50934d7f562976463f3942eb79eb9757008075 +Subproject commit 6a1cb0444413bf9b421db497d544dec73b948851