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.
This commit is contained in:
Heesterman, Peter J
2019-11-28 12:06:03 +00:00
parent 5e34010855
commit 9d60dfbc1f
3 changed files with 13 additions and 15 deletions

View File

@@ -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);

View File

@@ -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

View File

@@ -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