added placeholder for LEVEL and sync triggers

This commit is contained in:
Jim Larsson
2024-12-05 16:21:56 +01:00
parent 994242e524
commit eaebcece9d
2 changed files with 9 additions and 38 deletions

3
.gitignore vendored
View File

@@ -14,3 +14,6 @@ ecdc-kafka-ca.crt
.pre-commit-config.yaml
.clang-format
.iocsh_history
build
build.sh

View File

@@ -842,17 +842,6 @@ void Orca::imageTask() {
int triggerMode = DCAMPROP_TRIGGERSOURCE__INTERNAL;
int triggerActive, triggerTimes;
// Functionality DCAM_IDPROP_TRIGGERACTIVE
// DCAMPROP_TRIGGERACTIVE__EDGE:
// CONDITIONS: ALL DCAM_IDPROP_SENSORMODE
// DCAMPROP_TRIGGERACTIVE__LEVEL:
// CONDITIONS: @ DCAMPROP_SENSORMODE__AREA, SPLITVIEW
// DCAMPROP_TRIGGERACTIVE__SYNCREADOUT:
// CONDITIONS: @ DCAMPROP_SENSORMODE__AREA, SPLITVIEW
// What is SPLITVIEW?
lock();
while (1) {
getIntegerParam(ADAcquire, &acquire);
@@ -922,7 +911,7 @@ void Orca::imageTask() {
double timestamp;
getIntegerParam(hTriggerSource, &triggerMode);
0
if (triggerMode == DCAMPROP_TRIGGERSOURCE__EXTERNAL) {
getIntegerParam(evrCounts, &evr_counts);
@@ -1001,40 +990,19 @@ void Orca::imageTask() {
epicsTimeGetCurrent(&prev_trigger_time);
evr_counts_since_last_start_previous = evr_counts_since_last_start;
}
// implement DCAM_IDPROP_TRIGGERACTIVE
// /* DCAM_IDPROP_TRIGGERACTIVE */
// DCAMPROP_TRIGGERACTIVE__EDGE = 1, /* "EDGE" */
// DCAMPROP_TRIGGERACTIVE__LEVEL = 2, /* "LEVEL" */
// DCAMPROP_TRIGGERACTIVE__SYNCREADOUT = 3, /* "SYNCREADOUT" */
// DCAMPROP_TRIGGERACTIVE__POINT = 4, /* "POINT" */
getIntegerParam(hTriggerActive, &triggerActive);
// if (triggerActive == DCAMPROP_TRIGGERACTIVE__EDGE) {
// Exposure is initiated rising of falling edge of the trigger signal.
// 1. Edge trigger mode. 2. Global reset edge trigger mode.
// } else if (triggerActive == DCAMPROP_TRIGGERACTIVE__LEVEL) {
// 1. Level trigger mode. 2. Global reset level trigger mode.
// The width of the trigger signal determines the exposure time.
// } else if (triggerActive == DCAMPROP_TRIGGERACTIVE__SYNCREADOUT) {
// Exposure is started by an external trigger (e.g., rising edge) and
// exposure is ended by an external trigger. It also supports pulse count
// readout.
// }
// getIntegerParam(hTriggerActive, &triggerActive);
if (triggerActive == DCAMPROP_TRIGGERACTIVE__SYNCREADOUT) {
// getIntegerParam(hTriggerTimes, &triggerTimes);
pass
} else if (triggerActive == DCAMPROP_TRIGGERACTIVE__LEVEL) {
pass
} else {
// Checks if the elapsed time since last frame is longer than the exposure,
// stop waiting for image and put in timeout status.
getDoubleParam(ADAcquirePeriod, &acqusitionRate);
getIntegerParam(ADStatus, &acqStatus);
maxAcqusitionTime = acqusitionRate * 2;
maxAcqusitionTime = acqusitionRate * 2; // arbitrary time longer than the acqusiontime.
epicsTimeGetCurrent(&currentAcqTime);
if ((epicsTimeDiffInSeconds(&currentAcqTime, &prevAcqTime) >
maxAcqusitionTime) &&