areaDetector 1-8
|
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 00019 #define FILEPLUGIN_NAME "FilePluginFileName" 00020 #define FILEPLUGIN_NUMBER "FilePluginFileNumber" 00021 #define FILEPLUGIN_DESTINATION "FilePluginDestination" 00022 00027 class NDPluginFile : public NDPluginDriver { 00028 public: 00029 NDPluginFile(const char *portName, int queueSize, int blockingCallbacks, 00030 const char *NDArrayPort, int NDArrayAddr, int maxAddr, int numParams, 00031 int maxBuffers, size_t maxMemory, int interfaceMask, int interruptMask, 00032 int asynFlags, int autoConnect, int priority, int stackSize); 00033 00034 /* These methods override those in the base class */ 00035 virtual void processCallbacks(NDArray *pArray); 00036 virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value); 00037 virtual asynStatus writeNDArray(asynUser *pasynUser, void *genericPointer); 00038 00048 virtual asynStatus openFile(const char *fileName, NDFileOpenMode_t openMode, NDArray *pArray) = 0; 00049 00052 virtual asynStatus readFile(NDArray **pArray) = 0; 00053 00058 virtual asynStatus writeFile(NDArray *pArray) = 0; 00059 00062 virtual asynStatus closeFile() = 0; 00063 00064 int supportsMultipleArrays; 00067 private: 00068 asynStatus openFileBase(NDFileOpenMode_t openMode, NDArray *pArray); 00069 asynStatus readFileBase(); 00070 asynStatus writeFileBase(); 00071 asynStatus closeFileBase(); 00072 asynStatus doCapture(int capture); 00073 void freeCaptureBuffer(int numCapture); 00074 asynStatus attrFileNameCheck(); 00075 asynStatus attrFileNameSet(); 00076 bool attrIsProcessingRequired(NDAttributeList* pAttrList); 00077 00078 NDArray **pCapture; 00079 epicsMutexId fileMutexId; 00080 bool useAttrFilePrefix; 00081 }; 00082 00083 #define NUM_NDPLUGIN_FILE_PARAMS 0 00084 00085 #endif