areaDetector 1-9
|
00001 #ifndef NDPluginStdArrays_H 00002 #define NDPluginStdArrays_H 00003 00004 #include <epicsTypes.h> 00005 #include <asynStandardInterfaces.h> 00006 00007 #include "NDPluginDriver.h" 00008 00009 #define NDPluginStdArraysDataString "STD_ARRAY_DATA" /* (asynXXXArray, r/w) Array data waveform */ 00010 00015 class NDPluginStdArrays : public NDPluginDriver { 00016 public: 00017 NDPluginStdArrays(const char *portName, int queueSize, int blockingCallbacks, 00018 const char *NDArrayPort, int NDArrayAddr, size_t maxMemory, 00019 int priority, int stackSize); 00020 00021 /* These methods override the virtual methods in the base class */ 00022 void processCallbacks(NDArray *pArray); 00023 virtual asynStatus readInt8Array(asynUser *pasynUser, epicsInt8 *value, 00024 size_t nElements, size_t *nIn); 00025 virtual asynStatus readInt16Array(asynUser *pasynUser, epicsInt16 *value, 00026 size_t nElements, size_t *nIn); 00027 virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *value, 00028 size_t nElements, size_t *nIn); 00029 virtual asynStatus readFloat32Array(asynUser *pasynUser, epicsFloat32 *value, 00030 size_t nElements, size_t *nIn); 00031 virtual asynStatus readFloat64Array(asynUser *pasynUser, epicsFloat64 *value, 00032 size_t nElements, size_t *nIn); 00033 protected: 00034 int NDPluginStdArraysData; 00035 #define FIRST_NDPLUGIN_STDARRAYS_PARAM NDPluginStdArraysData 00036 #define LAST_NDPLUGIN_STDARRAYS_PARAM NDPluginStdArraysData 00037 private: 00038 /* These methods are just for this class */ 00039 template <typename epicsType> asynStatus readArray(asynUser *pasynUser, epicsType *value, 00040 size_t nElements, size_t *nIn, NDDataType_t outputType); 00041 template <typename epicsType, typename interruptType> void arrayInterruptCallback(NDArray *pArray, 00042 NDArrayPool *pNDArrayPool, 00043 void *interruptPvt, int *initialized, NDDataType_t signedType); 00044 00045 }; 00046 00047 #define NUM_NDPLUGIN_STDARRAYS_PARAMS ((int)(&LAST_NDPLUGIN_STDARRAYS_PARAM - &FIRST_NDPLUGIN_STDARRAYS_PARAM + 1)) 00048 00049 #endif