Add mechanism to check if acquirePeriod is valid
This commit is contained in:
+20
-7
@@ -187,6 +187,7 @@ Hama::Hama(const char* portName, int cameraId, int maxBuffers, size_t maxMemory,
|
||||
createParam(hAcqControlString, asynParamInt32, &hAcqControl);
|
||||
|
||||
setIntegerParam(NDArrayCallbacks, 1);
|
||||
setStringParam (ADStatusMessage, "Idle");
|
||||
callParamCallbacks();
|
||||
|
||||
connectCamera();
|
||||
@@ -790,6 +791,7 @@ void Hama::imageTask(){
|
||||
lock();
|
||||
|
||||
status = startAcquire();
|
||||
setStringParam (ADStatusMessage, "Acquiring");
|
||||
setIntegerParam(hAcqControl, 1);
|
||||
callParamCallbacks();
|
||||
|
||||
@@ -908,6 +910,7 @@ void Hama::imageTask(){
|
||||
setIntegerParam(ADAcquire, 0);
|
||||
setIntegerParam(hAcqControl, 0);
|
||||
setIntegerParam(ADStatus, ADStatusIdle);
|
||||
setStringParam (ADStatusMessage, "Acquisition Done");
|
||||
}
|
||||
callParamCallbacks();
|
||||
}
|
||||
@@ -964,17 +967,28 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value) {
|
||||
|
||||
if (index == ADAcquire) {
|
||||
if (value && adstatus != ADStatusAcquire) {
|
||||
/* Send an event to wake up the acq task.*/
|
||||
puts("Requested acquire start event. Sending acquire start event signal to thread");
|
||||
int evr_counts = 0;
|
||||
getIntegerParam(evrCounts, &evr_counts);
|
||||
printf("EVR counts on Acquire: %d\n", evr_counts);
|
||||
epicsEventSignal(this->startEvent_);
|
||||
double readoutTime, acquirePeriod, acquireTime;
|
||||
status = getDoubleParam(hTimingReadoutTime, &readoutTime);
|
||||
status = getDoubleParam(ADAcquireTime, &acquireTime);
|
||||
status = getDoubleParam(ADAcquirePeriod, &acquirePeriod);
|
||||
|
||||
if (acquirePeriod < (readoutTime + acquireTime)) {
|
||||
setStringParam (ADStatusMessage,
|
||||
"Acquire Period must be greater than ReadoutTime + AcquireTime");
|
||||
setIntegerParam(ADAcquire, 0);
|
||||
setIntegerParam(ADStatus, ADStatusAborted);
|
||||
}
|
||||
else {
|
||||
/* Send an event to wake up the acq task.*/
|
||||
setStringParam (ADStatusMessage, "");
|
||||
epicsEventSignal(this->startEvent_);
|
||||
}
|
||||
}
|
||||
else if (!value && (adstatus == ADStatusAcquire || adstatus == ADStatusError || adstatus == ADStatusWaiting)) {
|
||||
/* This was a command to stop acquisition */
|
||||
setIntegerParam(ADStatus, ADStatusAborted);
|
||||
setIntegerParam(hAcqControl, 0);
|
||||
setStringParam (ADStatusMessage, "Acquisition aborted by user");
|
||||
stopAcquire();
|
||||
}
|
||||
}
|
||||
@@ -1387,7 +1401,6 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value) {
|
||||
//}
|
||||
}
|
||||
|
||||
setIntegerParam(index, value);
|
||||
/* Do callbacks so higher layers see any changes */
|
||||
status = (asynStatus) callParamCallbacks();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user