00001 #ifndef NDPluginFile_H
00002 #define NDPluginFile_H
00003
00004 #include <epicsTypes.h>
00005 #include <epicsMutex.h>
00006
00007 #include "NDPluginDriver.h"
00008
00010 #define NDFileModeRead 0x01
00011
00012 #define NDFileModeWrite 0x02
00013
00014 #define NDFileModeAppend 0x04
00015
00016 #define NDFileModeMultiple 0x08
00017 typedef int NDFileOpenMode_t;
00018
00023 class NDPluginFile : public NDPluginDriver {
00024 public:
00025 NDPluginFile(const char *portName, int queueSize, int blockingCallbacks,
00026 const char *NDArrayPort, int NDArrayAddr, int maxAddr, int numParams,
00027 int maxBuffers, size_t maxMemory, int interfaceMask, int interruptMask,
00028 int asynFlags, int autoConnect, int priority, int stackSize);
00029
00030
00031 virtual void processCallbacks(NDArray *pArray);
00032 virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
00033 virtual asynStatus writeNDArray(asynUser *pasynUser, void *genericPointer);
00034
00044 virtual asynStatus openFile(const char *fileName, NDFileOpenMode_t openMode, NDArray *pArray) = 0;
00045
00048 virtual asynStatus readFile(NDArray **pArray) = 0;
00049
00054 virtual asynStatus writeFile(NDArray *pArray) = 0;
00055
00058 virtual asynStatus closeFile() = 0;
00059
00060 int supportsMultipleArrays;
00063 private:
00064 asynStatus openFileBase(NDFileOpenMode_t openMode, NDArray *pArray);
00065 asynStatus readFileBase();
00066 asynStatus writeFileBase();
00067 asynStatus closeFileBase();
00068 asynStatus doCapture(int capture);
00069 NDArray **pCapture;
00070 epicsMutexId fileMutexId;
00071 };
00072
00073 #define NUM_NDPLUGIN_FILE_PARAMS 0
00074
00075 #endif