00001 #ifndef ADDriver_H
00002 #define ADDriver_H
00003
00004 #include <epicsTypes.h>
00005 #include <epicsMessageQueue.h>
00006 #include <epicsTime.h>
00007 #include <asynStandardInterfaces.h>
00008
00009 #include "asynNDArrayDriver.h"
00010
00011
00013 #define AREA_DETECTOR_OK 0
00014
00015 #define AREA_DETECTOR_ERROR -1
00016
00018 typedef enum
00019 {
00020 ADShutterClosed,
00021 ADShutterOpen
00022 } ADShutterStatus_t;
00023
00025 typedef enum
00026 {
00027 ADShutterModeNone,
00028 ADShutterModeEPICS,
00029 ADShutterModeDetector
00030 } ADShutterMode_t;
00031
00033 typedef enum
00034 {
00035 ADStatusIdle,
00036 ADStatusAcquire,
00037 ADStatusReadout,
00038 ADStatusCorrect,
00039 ADStatusSaving,
00040 ADStatusAborting,
00041 ADStatusError,
00042 ADStatusWaiting
00043 } ADStatus_t;
00044
00046 typedef enum
00047 {
00048 ADImageSingle,
00049 ADImageMultiple,
00050 ADImageContinuous
00051 } ADImageMode_t;
00052
00053
00054 typedef enum
00055 {
00056 ADFrameNormal,
00057 ADFrameBackground,
00058 ADFrameFlatField,
00059 ADFrameDoubleCorrelation
00060 } ADFrameType_t;
00061
00062
00063 typedef enum
00064 {
00065 ADTriggerInternal,
00066 ADTriggerExternal
00067 } ADTriggerMode_t;
00068
00073
00074 #define ADManufacturerString "MANUFACTURER"
00075 #define ADModelString "MODEL"
00077 #define ADGainString "GAIN"
00079
00080 #define ADBinXString "BIN_X"
00081 #define ADBinYString "BIN_Y"
00083
00084
00085 #define ADMinXString "MIN_X"
00086 #define ADMinYString "MIN_Y"
00087 #define ADSizeXString "SIZE_X"
00088 #define ADSizeYString "SIZE_Y"
00089 #define ADMaxSizeXString "MAX_SIZE_X"
00090 #define ADMaxSizeYString "MAX_SIZE_Y"
00092
00093 #define ADReverseXString "REVERSE_X"
00094 #define ADReverseYString "REVERSE_Y"
00096
00097 #define ADFrameTypeString "FRAME_TYPE"
00098 #define ADImageModeString "IMAGE_MODE"
00099 #define ADTriggerModeString "TRIGGER_MODE"
00100 #define ADNumExposuresString "NEXPOSURES"
00101 #define ADNumImagesString "NIMAGES"
00102 #define ADAcquireTimeString "ACQ_TIME"
00103 #define ADAcquirePeriodString "ACQ_PERIOD"
00104 #define ADStatusString "STATUS"
00105 #define ADAcquireString "ACQUIRE"
00107
00108 #define ADShutterControlString "SHUTTER_CONTROL"
00109 #define ADShutterControlEPICSString "SHUTTER_CONTROL_EPICS"
00110 #define ADShutterStatusString "SHUTTER_STATUS"
00111 #define ADShutterModeString "SHUTTER_MODE"
00112 #define ADShutterOpenDelayString "SHUTTER_OPEN_DELAY"
00113 #define ADShutterCloseDelayString "SHUTTER_CLOSE_DELAY"
00115
00116 #define ADTemperatureString "TEMPERATURE"
00118
00119 #define ADNumImagesCounterString "NIMAGES_COUNTER"
00120 #define ADNumExposuresCounterString "NEXPOSURES_COUNTER"
00121 #define ADTimeRemainingString "TIME_REMAINING"
00123
00124 #define ADReadStatusString "READ_STATUS"
00126
00127 #define ADStatusMessageString "STATUS_MESSAGE"
00128 #define ADStringToServerString "STRING_TO_SERVER"
00129 #define ADStringFromServerString "STRING_FROM_SERVER"
00132 class ADDriver : public asynNDArrayDriver {
00133 public:
00134
00135 ADDriver(const char *portName, int maxAddr, int numParams, int maxBuffers, size_t maxMemory,
00136 int interfaceMask, int interruptMask,
00137 int asynFlags, int autoConnect, int priority, int stackSize);
00138
00139
00140 virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
00141
00142
00143 void setShutter(int open);
00144
00145 protected:
00146 int ADManufacturer;
00147 #define FIRST_AD_PARAM ADManufacturer
00148 int ADModel;
00149 int ADGain;
00150 int ADBinX;
00151 int ADBinY;
00152 int ADMinX;
00153 int ADMinY;
00154 int ADSizeX;
00155 int ADSizeY;
00156 int ADMaxSizeX;
00157 int ADMaxSizeY;
00158 int ADReverseX;
00159 int ADReverseY;
00160 int ADFrameType;
00161 int ADImageMode;
00162 int ADNumExposures;
00163 int ADNumExposuresCounter;
00164 int ADNumImages;
00165 int ADNumImagesCounter;
00166 int ADAcquireTime;
00167 int ADAcquirePeriod;
00168 int ADTimeRemaining;
00169 int ADStatus;
00170 int ADTriggerMode;
00171 int ADAcquire;
00172 int ADShutterControl;
00173 int ADShutterControlEPICS;
00174 int ADShutterStatus;
00175 int ADShutterMode;
00176 int ADShutterOpenDelay;
00177 int ADShutterCloseDelay;
00178 int ADTemperature;
00179 int ADReadStatus;
00180 int ADStatusMessage;
00181 int ADStringToServer;
00182 int ADStringFromServer;
00183 #define LAST_AD_PARAM ADStringFromServer
00184 };
00185 #define NUM_AD_PARAMS (&LAST_AD_PARAM - &FIRST_AD_PARAM + 1)
00186
00187 #endif