16 #include <libxml/parser.h>
22 #define MAX_ENUM_STRING_SIZE 26
23 #define MAX_ADC_SPEEDS 16
24 #define MAX_PREAMP_GAINS 16
25 #define MAX_VS_PERIODS 16
27 #define AndorCoolerParamString "ANDOR_COOLER"
28 #define AndorTempStatusMessageString "ANDOR_TEMP_STAT"
29 #define AndorMessageString "ANDOR_MESSAGE"
30 #define AndorShutterModeString "ANDOR_SHUTTER_MODE"
31 #define AndorShutterExTTLString "ANDOR_SHUTTER_EXTTL"
32 #define AndorPalFileNameString "ANDOR_PAL_FILE_PATH"
33 #define AndorAccumulatePeriodString "ANDOR_ACCUMULATE_PERIOD"
34 #define AndorPreAmpGainString "ANDOR_PREAMP_GAIN"
35 #define AndorEmGainString "ANDOR_EM_GAIN"
36 #define AndorEmGainModeString "ANDOR_EM_GAIN_MODE"
37 #define AndorEmGainAdvancedString "ANDOR_EM_GAIN_ADVANCED"
38 #define AndorAdcSpeedString "ANDOR_ADC_SPEED"
39 #define AndorBaselineClampString "ANDOR_BASELINE_CLAMP"
40 #define AndorReadOutModeString "ANDOR_READOUT_MODE"
41 #define AndorFrameTransferModeString "ANDOR_FT_MODE"
42 #define AndorVerticalShiftPeriodString "ANDOR_VS_PERIOD"
43 #define AndorVerticalShiftAmplitudeString "ANDOR_VS_AMPLITUDE"
85 AndorCCD(
const char *portName,
const char *installPath,
int cameraSerial,
int shamrockID,
86 int maxBuffers,
size_t maxMemory,
int priority,
int stackSize);
93 virtual void report(FILE *fp,
int details);
94 virtual asynStatus
readEnum(asynUser *pasynUser,
char *strings[],
int values[],
int severities[],
95 size_t nElements,
size_t *nIn);
103 #define FIRST_ANDOR_PARAM AndorCoolerParam
120 #define LAST_ANDOR_PARAM AndorVerticalShiftAmplitude
124 unsigned int checkStatus(
unsigned int returnStatus);
125 asynStatus setupAcquisition();
126 asynStatus setupShutter(
int command);
127 void saveDataFrame(
int frameNumber);
128 void setupADCSpeeds();
129 void setupTrackDefn(
int minX,
int sizeX,
int binX);
130 void setupPreAmpGains();
131 void setupVerticalShiftPeriods();
132 unsigned int SaveAsSPE(
char *fullFileName);
136 static const epicsInt32 AImageFastKinetics;
141 static const epicsUInt32 AASingle;
142 static const epicsUInt32 AAAccumulate;
143 static const epicsUInt32 AAKinetics;
144 static const epicsUInt32 AAFastKinetics;
145 static const epicsUInt32 AARunTillAbort;
146 static const epicsUInt32 AATimeDelayedInt;
151 static const epicsUInt32 ATInternal;
152 static const epicsUInt32 ATExternal;
153 static const epicsUInt32 ATExternalStart;
154 static const epicsUInt32 ATExternalExposure;
155 static const epicsUInt32 ATExternalFVB;
156 static const epicsUInt32 ATSoftware;
161 static const epicsUInt32 ASIdle;
162 static const epicsUInt32 ASTempCycle;
163 static const epicsUInt32 ASAcquiring;
164 static const epicsUInt32 ASAccumTimeNotMet;
165 static const epicsUInt32 ASKineticTimeNotMet;
166 static const epicsUInt32 ASErrorAck;
167 static const epicsUInt32 ASAcqBuffer;
168 static const epicsUInt32 ASSpoolError;
173 static const epicsInt32 ARFullVerticalBinning;
174 static const epicsInt32 ARMultiTrack;
175 static const epicsInt32 ARRandomTrack;
176 static const epicsInt32 ARSingleTrack;
177 static const epicsInt32 ARImage;
182 static const epicsInt32 AShutterFullyAuto;
183 static const epicsInt32 AShutterAlwaysOpen;
184 static const epicsInt32 AShutterAlwaysClosed;
185 static const epicsInt32 AShutterOpenFVP;
186 static const epicsInt32 AShutterOpenAny;
191 static const epicsInt32 AFFTIFF;
192 static const epicsInt32 AFFBMP;
193 static const epicsInt32 AFFSIF;
194 static const epicsInt32 AFFEDF;
195 static const epicsInt32 AFFRAW;
196 static const epicsInt32 AFFFITS;
197 static const epicsInt32 AFFSPE;
199 epicsEventId statusEvent;
200 epicsEventId dataEvent;
201 double mPollingPeriod;
202 double mFastPollingPeriod;
203 unsigned int mAcquiringData;
215 int mTotalPreAmpGains;
228 float mAcquirePeriod;
229 float mAccumulatePeriod;
230 int mMinShutterOpenTime;
231 int mMinShutterCloseTime;
237 AndorCapabilities mCapabilities;
243 int mEmGainRangeHigh;
#define MAX_PREAMP_GAINS
Definition: andorCCD.h:24
#define MAX_ADC_SPEEDS
Definition: andorCCD.h:23
#define MAX_VS_PERIODS
Definition: andorCCD.h:25
Class from which areaDetector drivers are directly derived.
Definition: ADDriver.h:132
Driver for Andor CCD cameras using version 2 of their SDK; inherits from ADDriver class in ADCore.
Definition: andorCCD.h:83
virtual ~AndorCCD()
Destructor.
Definition: andorCCD.cpp:374
virtual asynStatus writeInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements)
Definition: andorCCD.cpp:930
int AndorShutterExTTL
Definition: andorCCD.h:107
int AndorVerticalShiftAmplitude
Definition: andorCCD.h:119
int AndorFrameTransferMode
Definition: andorCCD.h:117
int AndorEmGainAdvanced
Definition: andorCCD.h:113
int AndorAccumulatePeriod
Definition: andorCCD.h:109
int AndorEmGainMode
Definition: andorCCD.h:112
int AndorMessage
Definition: andorCCD.h:105
int AndorPreAmpGain
Definition: andorCCD.h:110
int AndorEmGain
Definition: andorCCD.h:111
void dataTask(void)
Do data readout from the detector.
Definition: andorCCD.cpp:1522
int AndorAdcSpeed
Definition: andorCCD.h:114
virtual asynStatus readEnum(asynUser *pasynUser, char *strings[], int values[], int severities[], size_t nElements, size_t *nIn)
Definition: andorCCD.cpp:456
int AndorReadOutMode
Definition: andorCCD.h:116
int AndorCoolerParam
Definition: andorCCD.h:102
int AndorVerticalShiftPeriod
Definition: andorCCD.h:118
int AndorBaselineClamp
Definition: andorCCD.h:115
virtual void report(FILE *fp, int details)
Report status of the driver.
Definition: andorCCD.cpp:551
void statusTask(void)
Update status of detector.
Definition: andorCCD.cpp:1112
int AndorPalFileName
Definition: andorCCD.h:108
AndorCCD(const char *portName, const char *installPath, int cameraSerial, int shamrockID, int maxBuffers, size_t maxMemory, int priority, int stackSize)
Constructor for Andor driver; most parameters are simply passed to ADDriver::ADDriver.
Definition: andorCCD.cpp:115
int AndorShutterMode
Definition: andorCCD.h:106
virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value)
Called when asyn clients call pasynFloat64->write().
Definition: andorCCD.cpp:802
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value)
Called when asyn clients call pasynInt32->write().
Definition: andorCCD.cpp:647
int AndorTempStatusMessage
Definition: andorCCD.h:104
Area Detector class enabling multi-ROI driver for the Andor CCD.
Definition: CCDMultiTrack.h:19
list value
Definition: makeDbAndEdl.py:234
Structure defining an ADC speed for the ADAndor driver.
Definition: andorCCD.h:49
int BitDepth
Definition: andorCCD.h:54
float HSSpeed
Definition: andorCCD.h:53
char * EnumString
Definition: andorCCD.h:55
int HSSpeedIndex
Definition: andorCCD.h:52
int EnumValue
Definition: andorCCD.h:56
int ADCIndex
Definition: andorCCD.h:50
int AmpIndex
Definition: andorCCD.h:51
Structure defining a pre-amp gain for the ADAndor driver.
Definition: andorCCD.h:63
char * EnumString
Definition: andorCCD.h:65
int EnumValue
Definition: andorCCD.h:66
float Gain
Definition: andorCCD.h:64
Definition: andorCCD.h:72
int Index
Definition: andorCCD.h:74
float Period
Definition: andorCCD.h:73
char * EnumString
Definition: andorCCD.h:75
int EnumValue
Definition: andorCCD.h:76
Definition: SPEHeader.h:101