00001 #ifndef NDPluginStdArrays_H
00002 #define NDPluginStdArrays_H
00003
00004 #include <epicsTypes.h>
00005 #include <asynStandardInterfaces.h>
00006
00007 #include "NDPluginDriver.h"
00008
00010 typedef enum
00011 {
00012 NDPluginStdArraysData
00013 = NDPluginDriverLastParam,
00014 NDPluginStdArraysLastParam
00015 } NDPluginStdArraysParam_t;
00016
00021 class NDPluginStdArrays : public NDPluginDriver {
00022 public:
00023 NDPluginStdArrays(const char *portName, int queueSize, int blockingCallbacks,
00024 const char *NDArrayPort, int NDArrayAddr, size_t maxMemory,
00025 int priority, int stackSize);
00026
00027
00028 void processCallbacks(NDArray *pArray);
00029 virtual asynStatus readInt8Array(asynUser *pasynUser, epicsInt8 *value,
00030 size_t nElements, size_t *nIn);
00031 virtual asynStatus readInt16Array(asynUser *pasynUser, epicsInt16 *value,
00032 size_t nElements, size_t *nIn);
00033 virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *value,
00034 size_t nElements, size_t *nIn);
00035 virtual asynStatus readFloat32Array(asynUser *pasynUser, epicsFloat32 *value,
00036 size_t nElements, size_t *nIn);
00037 virtual asynStatus readFloat64Array(asynUser *pasynUser, epicsFloat64 *value,
00038 size_t nElements, size_t *nIn);
00039 asynStatus drvUserCreate(asynUser *pasynUser, const char *drvInfo,
00040 const char **pptypeName, size_t *psize);
00041 private:
00042
00043 template <typename epicsType> asynStatus readArray(asynUser *pasynUser, epicsType *value,
00044 size_t nElements, size_t *nIn, NDDataType_t outputType);
00045
00046 };
00047
00048
00049 #endif