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
00072 typedef enum
00073 {
00074
00075 ADManufacturer
00076 = NDLastStdParam,
00077 ADModel,
00079 ADGain,
00081
00082 ADBinX,
00083 ADBinY,
00085
00086
00087 ADMinX,
00088 ADMinY,
00089 ADSizeX,
00090 ADSizeY,
00091 ADMaxSizeX,
00092 ADMaxSizeY,
00094
00095 ADReverseX,
00096 ADReverseY,
00098
00099 ADFrameType,
00100 ADImageMode,
00101 ADTriggerMode,
00102 ADNumExposures,
00103 ADNumImages,
00104 ADAcquireTime,
00105 ADAcquirePeriod,
00106 ADStatus,
00107 ADAcquire,
00109
00110 ADShutterControl,
00111 ADShutterControlEPICS,
00112 ADShutterStatus,
00113 ADShutterMode,
00114 ADShutterOpenDelay,
00115 ADShutterCloseDelay,
00117
00118 ADTemperature,
00120
00121 ADNumImagesCounter,
00122 ADNumExposuresCounter,
00123 ADTimeRemaining,
00125
00126 ADReadStatus,
00128
00129 ADStatusMessage,
00130 ADStringToServer,
00131 ADStringFromServer,
00133 ADLastStdParam
00135 } ADStdDriverParam_t;
00136
00138 class ADDriver : public asynNDArrayDriver {
00139 public:
00140
00141 ADDriver(const char *portName, int maxAddr, int paramTableSize, int maxBuffers, size_t maxMemory,
00142 int interfaceMask, int interruptMask,
00143 int asynFlags, int autoConnect, int priority, int stackSize);
00144
00145
00146 virtual asynStatus drvUserCreate(asynUser *pasynUser, const char *drvInfo,
00147 const char **pptypeName, size_t *psize);
00148 virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
00149
00150
00151 void setShutter(int open);
00152 };
00153
00154
00155 #endif