areaDetector  3-5-0
EPICS areaDetector framework
ADDriver.h
Go to the documentation of this file.
1 #ifndef ADDriver_H
2 #define ADDriver_H
3 
4 #include <epicsTypes.h>
5 #include <epicsMessageQueue.h>
6 #include <epicsTime.h>
7 #include <asynStandardInterfaces.h>
8 
9 #include "asynNDArrayDriver.h"
10 
11 
13 #define AREA_DETECTOR_OK 0
14 
15 #define AREA_DETECTOR_ERROR -1
16 
18 typedef enum
19 {
23 
25 typedef enum
26 {
31 
33 typedef enum
34 {
46 } ADStatus_t;
47 
49 typedef enum
50 {
55 
56 /* Enumeration of frame types */
57 typedef enum
58 {
64 
65 /* Enumeration of trigger modes */
66 typedef enum
67 {
71 
76  /* String asyn interface access Description */
77 #define ADManufacturerString "MANUFACTURER"
78 #define ADModelString "MODEL"
79 #define ADSerialNumberString "SERIAL_NUMBER"
80 #define ADSDKVersionString "SDK_VERSION"
81 #define ADFirmwareVersionString "FIRMWARE_VERSION"
83 #define ADGainString "GAIN"
85  /* Parameters that control the detector binning */
86 #define ADBinXString "BIN_X"
87 #define ADBinYString "BIN_Y"
89  /* Parameters the control the region of the detector to be read out.
90  * ADMinX, ADMinY, ADSizeX, and ADSizeY are in unbinned pixel units */
91 #define ADMinXString "MIN_X"
92 #define ADMinYString "MIN_Y"
93 #define ADSizeXString "SIZE_X"
94 #define ADSizeYString "SIZE_Y"
95 #define ADMaxSizeXString "MAX_SIZE_X"
96 #define ADMaxSizeYString "MAX_SIZE_Y"
98  /* Parameters that control the orientation of the image */
99 #define ADReverseXString "REVERSE_X"
100 #define ADReverseYString "REVERSE_Y"
102  /* Parameters defining the acquisition parameters. */
103 #define ADFrameTypeString "FRAME_TYPE"
104 #define ADImageModeString "IMAGE_MODE"
105 #define ADTriggerModeString "TRIGGER_MODE"
106 #define ADNumExposuresString "NEXPOSURES"
107 #define ADNumImagesString "NIMAGES"
108 #define ADAcquireTimeString "ACQ_TIME"
109 #define ADAcquirePeriodString "ACQ_PERIOD"
110 #define ADStatusString "STATUS"
111 #define ADAcquireString "ACQUIRE"
112 #define ADAcquireBusyString "ACQUIRE_BUSY"
113 #define ADWaitForPluginsString "WAIT_FOR_PLUGINS"
115  /* Shutter parameters */
116 #define ADShutterControlString "SHUTTER_CONTROL"
117 #define ADShutterControlEPICSString "SHUTTER_CONTROL_EPICS"
118 #define ADShutterStatusString "SHUTTER_STATUS"
119 #define ADShutterModeString "SHUTTER_MODE"
120 #define ADShutterOpenDelayString "SHUTTER_OPEN_DELAY"
121 #define ADShutterCloseDelayString "SHUTTER_CLOSE_DELAY"
123  /* Temperature parameters */
124 #define ADTemperatureString "TEMPERATURE"
125 #define ADTemperatureActualString "TEMPERATURE_ACTUAL"
127  /* Statistics on number of images collected and the image rate */
128 #define ADNumImagesCounterString "NIMAGES_COUNTER"
129 #define ADNumExposuresCounterString "NEXPOSURES_COUNTER"
130 #define ADTimeRemainingString "TIME_REMAINING"
132  /* Status reading */
133 #define ADReadStatusString "READ_STATUS"
135  /* Status message strings */
136 #define ADStatusMessageString "STATUS_MESSAGE"
137 #define ADStringToServerString "STRING_TO_SERVER"
138 #define ADStringFromServerString "STRING_FROM_SERVER"
141 class epicsShareClass ADDriver : public asynNDArrayDriver {
142 public:
143  /* This is the constructor for the class. */
144  ADDriver(const char *portName, int maxAddr, int numParams, int maxBuffers, size_t maxMemory,
145  int interfaceMask, int interruptMask,
146  int asynFlags, int autoConnect, int priority, int stackSize);
147 
148  /* These are the methods that we override from asynPortDriver */
149  virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
150  virtual asynStatus setIntegerParam(int index, int value);
151  virtual asynStatus setIntegerParam(int list, int index, int value);
152 
153  /* These are the methods that are new to this class */
154  virtual void setShutter(int open);
155 
156 protected:
158  #define FIRST_AD_PARAM ADManufacturer
159  int ADModel;
163  int ADGain;
164  int ADBinX;
165  int ADBinY;
166  int ADMinX;
167  int ADMinY;
168  int ADSizeX;
169  int ADSizeY;
183  int ADStatus;
200 };
201 
202 #endif
ADShutterMode_t
Enumeration of shutter modes.
Definition: ADDriver.h:25
Class from which areaDetector drivers are directly derived.
Definition: ADDriver.h:141
Normal frame type.
Definition: ADDriver.h:59
int ADMaxSizeX
Definition: ADDriver.h:170
Shutter open.
Definition: ADDriver.h:21
int ADTriggerMode
Definition: ADDriver.h:184
int ADImageMode
Definition: ADDriver.h:175
int ADManufacturer
Definition: ADDriver.h:157
int ADSizeY
Definition: ADDriver.h:169
int ADMaxSizeY
Definition: ADDriver.h:171
int ADModel
Definition: ADDriver.h:159
Shutter controlled directly by detector.
Definition: ADDriver.h:29
int ADBinY
Definition: ADDriver.h:165
Detector is not connected.
Definition: ADDriver.h:44
int ADStringFromServer
Definition: ADDriver.h:199
int ADShutterStatus
Definition: ADDriver.h:190
int ADNumExposures
Definition: ADDriver.h:176
list value
Definition: makeDbAndEdl.py:234
int ADStatus
Definition: ADDriver.h:183
Detector aquisition has been aborted.
Definition: ADDriver.h:45
External trigger input.
Definition: ADDriver.h:69
int ADShutterMode
Definition: ADDriver.h:191
int ADFrameType
Definition: ADDriver.h:174
Detector is waiting for something, typically for the acquire period to elapse.
Definition: ADDriver.h:42
int ADNumImagesCounter
Definition: ADDriver.h:179
Background frame type.
Definition: ADDriver.h:60
int ADTimeRemaining
Definition: ADDriver.h:182
int ADShutterControl
Definition: ADDriver.h:188
int ADShutterControlEPICS
Definition: ADDriver.h:189
int ADTemperatureActual
Definition: ADDriver.h:195
int ADAcquirePeriod
Definition: ADDriver.h:181
int ADTemperature
Definition: ADDriver.h:194
Detector is saving data.
Definition: ADDriver.h:39
ADImageMode_t
Enumeration of image collection modes.
Definition: ADDriver.h:49
Don't use shutter.
Definition: ADDriver.h:27
int ADStatusMessage
Definition: ADDriver.h:197
ADTriggerMode_t
Definition: ADDriver.h:66
Flat field (no sample) frame type.
Definition: ADDriver.h:61
int ADShutterCloseDelay
Definition: ADDriver.h:193
Detector has encountered an error.
Definition: ADDriver.h:41
int ADWaitForPlugins
Definition: ADDriver.h:187
int ADSerialNumber
Definition: ADDriver.h:160
Detector is aborting an operation.
Definition: ADDriver.h:40
ADFrameType_t
Definition: ADDriver.h:57
Double correlation frame type, used to remove zingers.
Definition: ADDriver.h:62
ADShutterStatus_t
Enumeration of shutter status.
Definition: ADDriver.h:18
int ADFirmwareVersion
Definition: ADDriver.h:162
int ADMinY
Definition: ADDriver.h:167
Shutter closed.
Definition: ADDriver.h:20
int ADShutterOpenDelay
Definition: ADDriver.h:192
Shutter controlled by EPICS PVs.
Definition: ADDriver.h:28
int ADSDKVersion
Definition: ADDriver.h:161
int ADAcquireBusy
Definition: ADDriver.h:186
int ADReadStatus
Definition: ADDriver.h:196
int ADGain
Definition: ADDriver.h:163
int ADStringToServer
Definition: ADDriver.h:198
int ADNumExposuresCounter
Definition: ADDriver.h:177
Collect ADNumImages images per Acquire command.
Definition: ADDriver.h:52
int ADReverseY
Definition: ADDriver.h:173
Collect images continuously until Acquire is set to 0.
Definition: ADDriver.h:53
Detector is initializing, typically at startup.
Definition: ADDriver.h:43
int ADAcquire
Definition: ADDriver.h:185
int ADMinX
Definition: ADDriver.h:166
Detector is acquiring.
Definition: ADDriver.h:36
int ADNumImages
Definition: ADDriver.h:178
Detector is idle.
Definition: ADDriver.h:35
Detector is reading out.
Definition: ADDriver.h:37
int ADReverseX
Definition: ADDriver.h:172
int ADSizeX
Definition: ADDriver.h:168
ADStatus_t
Enumeration of detector status.
Definition: ADDriver.h:33
Internal trigger from detector.
Definition: ADDriver.h:68
int ADBinX
Definition: ADDriver.h:164
Detector is correcting data.
Definition: ADDriver.h:38
int ADAcquireTime
Definition: ADDriver.h:180
Collect a single image per Acquire command.
Definition: ADDriver.h:51