diff --git a/docs/ADEiger/eiger.rst b/docs/ADEiger/eiger.rst index 54d8f13..34d5dd6 100644 --- a/docs/ADEiger/eiger.rst +++ b/docs/ADEiger/eiger.rst @@ -187,8 +187,7 @@ can be given with the command:: sudo setcap cap_setuid,cap_setgid+ep eigerDetectorApp All files on the detector disk can be deleted at once by processing -the FWClear PV. This is only available with the Eiger1 and Simplon API version -1.6.0. +the FWClear PV. If the last data file of a series won't be full (e.g. series_1_data_000002.h5 with 20 images) then it will only appear on @@ -725,9 +724,9 @@ FileWriter Interface - FWAutoRemove, FWAutoRemove_RBV - bo, bi * - filewriter/config/clear - - Writing to this PV clears *all* files on the detector server disk. Eiger1 only. + - Writing to this PV clears *all* files on the detector server disk. - FWClear - - ao + - bo Stream Interface ~~~~~~~~~~~~~~~~ diff --git a/eigerApp/Db/eiger1.template b/eigerApp/Db/eiger1.template index eeef3c5..b92b0fa 100644 --- a/eigerApp/Db/eiger1.template +++ b/eigerApp/Db/eiger1.template @@ -52,14 +52,3 @@ record(ai, "$(P)$(R)DCUBufferFree_RBV") field(VAL, "0") field(PREC, "1") } - -#################### -# FileWriter Setup # -#################### - -# FileWriter clear all files -record(ao, "$(P)$(R)FWClear") { - field(DTYP, "asynInt32") - field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))CLEAR") - field(DESC, "Clear files in the detector") -} diff --git a/eigerApp/Db/eigerBase.template b/eigerApp/Db/eigerBase.template index 68801ee..4711e6e 100644 --- a/eigerApp/Db/eigerBase.template +++ b/eigerApp/Db/eigerBase.template @@ -598,6 +598,15 @@ record(bi,"$(P)$(R)FWAutoRemove_RBV") { field(SCAN, "I/O Intr") } +# FileWriter clear all files +record(bo, "$(P)$(R)FWClear") { + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))CLEAR") + field(DESC, "Clear files in the detector") + field(ZNAM, "Clear") + field(ONAM, "Clear") +} + # FileWriter free buffer space record(ai, "$(P)$(R)FWFree_RBV") { diff --git a/eigerApp/src/eigerDetector.cpp b/eigerApp/src/eigerDetector.cpp index cf6e6ba..ab2bb5b 100644 --- a/eigerApp/src/eigerDetector.cpp +++ b/eigerApp/src/eigerDetector.cpp @@ -328,6 +328,7 @@ eigerDetector::eigerDetector (const char *portName, const char *serverHostname, mFWImgNumStart = mParams.create(EigFWImgNumStartStr, asynParamInt32, SSFWConfig, "image_nr_start"); mFWState = mParams.create(EigFWStateStr, asynParamOctet, SSFWStatus, "state"); mFWFree = mParams.create(EigFWFreeStr, asynParamFloat64, SSFWStatus, "buffer_free"); + mFWClear = mParams.create(EigFWClearStr, asynParamInt32, SSFWCommand, "clear"); // Monitor API Parameters mMonitorEnable = mParams.create(EigMonitorEnableStr, asynParamInt32, SSMonConfig, "mode"); @@ -385,7 +386,6 @@ eigerDetector::eigerDetector (const char *portName, const char *serverHostname, mParams.getByIndex(i)->setEnumValues(linkEnum); } mDCUBufFree = mParams.create(EigDCUBufFreeStr, asynParamFloat64, SSDetStatus, "builder/dcu_buffer_free"); - mFWClear = mParams.create(EigFWClearStr, asynParamInt32, SSFWCommand, "clear"); } else if (mEigerModel == Eiger2 || mEigerModel == Pilatus4) { @@ -516,7 +516,7 @@ asynStatus eigerDetector::writeInt32 (asynUser *pasynUser, epicsInt32 value) } setIntegerParam(ADAcquire, value); } - else if (mAPIVersion == API_1_6_0 && function == mFWClear->getIndex()) + else if (function == mFWClear->getIndex()) { status = (asynStatus) mFWClear->put(1); mFWFree->fetch();