00001 #ifndef asynNDArrayDriver_H
00002 #define asynNDArrayDriver_H
00003
00004 #include "asynPortDriver.h"
00005 #include "NDArray.h"
00006 #include "PVAttribute.h"
00007
00008
00010 #define MAX_FILENAME_LEN 256
00011
00013 typedef enum {
00014 NDFileModeSingle,
00015 NDFileModeCapture,
00017 NDFileModeStream
00018 } NDFileMode_t;
00019
00020
00024 typedef enum
00025 {
00026
00027 NDPortNameSelf,
00029
00030
00031
00032 NDArraySizeX,
00033 NDArraySizeY,
00034 NDArraySizeZ,
00035 NDArraySize,
00036 NDDataType,
00037 NDColorMode,
00039
00040 NDArrayCounter,
00042
00043
00044
00045
00046
00047
00048 NDFilePath,
00049 NDFileName,
00050 NDFileNumber,
00051 NDFileTemplate,
00052 NDAutoIncrement,
00053 NDFullFileName,
00054 NDFileFormat,
00055 NDAutoSave,
00056 NDWriteFile,
00057 NDReadFile,
00058 NDFileWriteMode,
00059 NDFileNumCapture,
00060 NDFileNumCaptured,
00061 NDFileCapture,
00063 NDAttributesFile,
00065
00066 NDArrayData,
00067 NDArrayCallbacks,
00069 NDLastStdParam
00071 } NDStdDriverParam_t;
00072
00073 #define NUM_ND_STANDARD_PARAMS (sizeof(NDStdDriverParamString)/sizeof(NDStdDriverParamString[0]))
00074
00075
00081 class asynNDArrayDriver : public asynPortDriver {
00082 public:
00083 asynNDArrayDriver(const char *portName, int maxAddr, int paramTableSize, int maxBuffers, size_t maxMemory,
00084 int interfaceMask, int interruptMask,
00085 int asynFlags, int autoConnect, int priority, int stackSize);
00086
00087
00088 virtual asynStatus writeOctet(asynUser *pasynUser, const char *value, size_t maxChars,
00089 size_t *nActual);
00090 virtual asynStatus readGenericPointer(asynUser *pasynUser, void *genericPointer);
00091 virtual asynStatus writeGenericPointer(asynUser *pasynUser, void *genericPointer);
00092 virtual asynStatus drvUserCreate(asynUser *pasynUser, const char *drvInfo,
00093 const char **pptypeName, size_t *psize);
00094 virtual void report(FILE *fp, int details);
00095
00096
00097 virtual int createFileName(int maxChars, char *fullFileName);
00098 virtual int createFileName(int maxChars, char *filePath, char *fileName);
00099 virtual int readNDAttributesFile(const char *fileName);
00100 virtual int getAttributes(NDAttributeList *pAttributeList);
00101
00102 protected:
00103 NDArray **pArrays;
00104 NDArrayPool *pNDArrayPool;
00105 class NDAttributeList *pAttributeList;
00107 };
00108
00109 #endif