From 9d60dfbc1fbb75c82fd35908f60aba5dbcd7729f Mon Sep 17 00:00:00 2001 From: "Heesterman, Peter J" Date: Thu, 28 Nov 2019 12:06:03 +0000 Subject: [PATCH] Added call to mMultiTrack.storeTrackAttributes(pArray->pAttributeList) in order to store the attributes. Also, removed unnecessary use of NUM_ANDOR_DET_PARAMS and NUM_SR_PARAMS. --- andorApp/src/andorCCD.cpp | 8 ++++++-- andorApp/src/andorCCD.h | 17 +++++++---------- andorApp/src/shamrock.cpp | 3 --- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/andorApp/src/andorCCD.cpp b/andorApp/src/andorCCD.cpp index 5a8a15b..660a7b9 100755 --- a/andorApp/src/andorCCD.cpp +++ b/andorApp/src/andorCCD.cpp @@ -115,7 +115,7 @@ static void exitHandler(void *drvPvt); AndorCCD::AndorCCD(const char *portName, const char *installPath, int cameraSerial, int shamrockID, int maxBuffers, size_t maxMemory, int priority, int stackSize) - : ADDriver(portName, 1, NUM_ANDOR_DET_PARAMS, maxBuffers, maxMemory, + : ADDriver(portName, 1, 0, maxBuffers, maxMemory, asynEnumMask, asynEnumMask, ASYN_CANBLOCK, 1, priority, stackSize), mExiting(false), mExited(0), mShamrockId(shamrockID), mMultiTrack(this), mSPEDoc(0), mInitOK(false) @@ -1478,10 +1478,11 @@ void AndorCCD::dataTask(void) epicsTimeStamp startTime; NDArray *pArray; int autoSave; + int readOutMode; static const char *functionName = "dataTask"; printf("%s:%s: Data thread started...\n", driverName, functionName); - + this->lock(); while(!mExiting) { @@ -1504,6 +1505,7 @@ void AndorCCD::dataTask(void) status = setupAcquisition(); if (status != asynSuccess) continue; getIntegerParam(ADShutterMode, &adShutterMode); + getIntegerParam(AndorReadOutMode, &readOutMode); if (adShutterMode == ADShutterModeEPICS) { ADDriver::setShutter(ADShutterOpen); } @@ -1576,6 +1578,8 @@ void AndorCCD::dataTask(void) dims[0] = sizeX; dims[1] = sizeY; pArray = this->pNDArrayPool->alloc(nDims, dims, dataType, 0, NULL); + if (readOutMode == ARRandomTrack) + mMultiTrack.storeTrackAttributes(pArray->pAttributeList); // Read the oldest array // Is there still an image available? status = GetNumberNewImages(&firstImage, &lastImage); diff --git a/andorApp/src/andorCCD.h b/andorApp/src/andorCCD.h index c233636..0dbf210 100755 --- a/andorApp/src/andorCCD.h +++ b/andorApp/src/andorCCD.h @@ -4,7 +4,7 @@ * @author Matthew Pearson * @date June 2009 * - * Updated Dec 2011 for Asyn 4-17 and areaDetector 1-7 + * Updated Dec 2011 for Asyn 4-17 and areaDetector 1-7 * * Major updates to get callbacks working, etc. by Mark Rivers Feb. 2011 * Updated by Peter Heesterman to support multi-track operation Oct. 2019 @@ -91,7 +91,7 @@ class AndorCCD : public ADDriver { virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value); virtual asynStatus writeInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements); virtual void report(FILE *fp, int details); - virtual asynStatus readEnum(asynUser *pasynUser, char *strings[], int values[], int severities[], + virtual asynStatus readEnum(asynUser *pasynUser, char *strings[], int values[], int severities[], size_t nElements, size_t *nIn); // Should be private, but are called from C so must be public @@ -100,7 +100,7 @@ class AndorCCD : public ADDriver { protected: int AndorCoolerParam; - #define FIRST_ANDOR_PARAM AndorCoolerParam +#define FIRST_ANDOR_PARAM AndorCoolerParam int AndorTempStatusMessage; int AndorMessage; int AndorShutterMode; @@ -133,7 +133,7 @@ class AndorCCD : public ADDriver { /** * Additional image mode to those in ADImageMode_t */ - static const epicsInt32 AImageFastKinetics; + static const epicsInt32 AImageFastKinetics; /** * List of acquisiton modes. @@ -204,7 +204,7 @@ class AndorCCD : public ADDriver { char *mInstallPath; bool mExiting; int mExited; - + /** * ADC speed parameters */ @@ -229,7 +229,7 @@ class AndorCCD : public ADDriver { float mAccumulatePeriod; int mMinShutterOpenTime; int mMinShutterCloseTime; - + // Shamrock spectrometer ID int mShamrockId; @@ -241,7 +241,7 @@ class AndorCCD : public ADDriver { // EM Gain parameters int mEmGainRangeLow; int mEmGainRangeHigh; - + // SPE file header tagCSMAHEAD *mSPEHeader; xmlDocPtr mSPEDoc; @@ -250,7 +250,4 @@ class AndorCCD : public ADDriver { bool mInitOK; }; -#define NUM_ANDOR_DET_PARAMS ((int)(&LAST_ANDOR_PARAM - &FIRST_ANDOR_PARAM + 1)) - #endif //ANDORCCD_H - diff --git a/andorApp/src/shamrock.cpp b/andorApp/src/shamrock.cpp index b2b4b6f..74bd555 100644 --- a/andorApp/src/shamrock.cpp +++ b/andorApp/src/shamrock.cpp @@ -102,9 +102,6 @@ private: bool flipperMirrorIsPresent_[MAX_FLIPPER_MIRRORS]; }; -/** Number of asynPortDriver parameters this driver supports. */ -#define NUM_SR_PARAMS ((int)(&LAST_SR_PARAM - &FIRST_SR_PARAM + 1)) - /** Configuration function to configure one spectrograph. * * This function need to be called once for each spectrography to be used by the IOC. A call to this