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);
90 virtual asynStatus
writeInt32(asynUser *pasynUser, epicsInt32 value);
91 virtual asynStatus
writeFloat64(asynUser *pasynUser, epicsFloat64 value);
92 virtual asynStatus
writeInt32Array(asynUser *pasynUser, epicsInt32 *value,
size_t nElements);
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:376
virtual asynStatus writeInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements)
Definition andorCCD.cpp:933
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:1525
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:458
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:553
void statusTask(void)
Update status of detector.
Definition andorCCD.cpp:1115
int AndorPalFileName
Definition andorCCD.h:108
int AndorShutterMode
Definition andorCCD.h:106
virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value)
Called when asyn clients call pasynFloat64->write().
Definition andorCCD.cpp:805
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value)
Called when asyn clients call pasynInt32->write().
Definition andorCCD.cpp:649
int AndorTempStatusMessage
Definition andorCCD.h:104
Area Detector class enabling multi-ROI driver for the Andor CCD.
Definition CCDMultiTrack.h:19
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
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