00001 #ifndef asynNDArrayDriver_H
00002 #define asynNDArrayDriver_H
00003
00004 #include "asynPortDriver.h"
00005 #include "NDArray.h"
00006
00008 #define MAX_FILENAME_LEN 256
00009
00011 typedef enum {
00012 NDFileModeSingle,
00013 NDFileModeCapture,
00015 NDFileModeStream
00016 } NDFileMode_t;
00017
00018
00023
00024 #define NDPortNameSelfString "PORT_NAME_SELF"
00026
00027
00028
00029 #define NDArraySizeXString "ARRAY_SIZE_X"
00030 #define NDArraySizeYString "ARRAY_SIZE_Y"
00031 #define NDArraySizeZString "ARRAY_SIZE_Z"
00032 #define NDArraySizeString "ARRAY_SIZE"
00033 #define NDNDimensionsString "ARRAY_NDIMENSIONS"
00034 #define NDDimensionsString "ARRAY_DIMENSIONS"
00035 #define NDDataTypeString "DATA_TYPE"
00036 #define NDColorModeString "COLOR_MODE"
00037 #define NDUniqueIdString "UNIQUE_ID"
00038 #define NDTimeStampString "TIME_STAMP"
00039 #define NDBayerPatternString "BAYER_PATTERN"
00041
00042 #define NDArrayCounterString "ARRAY_COUNTER"
00044
00045
00046
00047
00048
00049
00050 #define NDFilePathString "FILE_PATH"
00051 #define NDFilePathExistsString "FILE_PATH_EXISTS"
00052 #define NDFileNameString "FILE_NAME"
00053 #define NDFileNumberString "FILE_NUMBER"
00054 #define NDFileTemplateString "FILE_TEMPLATE"
00055 #define NDAutoIncrementString "AUTO_INCREMENT"
00056 #define NDFullFileNameString "FULL_FILE_NAME"
00057 #define NDFileFormatString "FILE_FORMAT"
00058 #define NDAutoSaveString "AUTO_SAVE"
00059 #define NDWriteFileString "WRITE_FILE"
00060 #define NDReadFileString "READ_FILE"
00061 #define NDFileWriteModeString "WRITE_MODE"
00062 #define NDFileNumCaptureString "NUM_CAPTURE"
00063 #define NDFileNumCapturedString "NUM_CAPTURED"
00064 #define NDFileCaptureString "CAPTURE"
00066 #define NDAttributesFileString "ND_ATTRIBUTES_FILE"
00068
00069 #define NDArrayDataString "ARRAY_DATA"
00070 #define NDArrayCallbacksString "ARRAY_CALLBACKS"
00077 class epicsShareFunc asynNDArrayDriver : public asynPortDriver {
00078 public:
00079 asynNDArrayDriver(const char *portName, int maxAddr, int numParams, int maxBuffers, size_t maxMemory,
00080 int interfaceMask, int interruptMask,
00081 int asynFlags, int autoConnect, int priority, int stackSize);
00082
00083
00084 virtual asynStatus writeOctet(asynUser *pasynUser, const char *value, size_t maxChars,
00085 size_t *nActual);
00086 virtual asynStatus readGenericPointer(asynUser *pasynUser, void *genericPointer);
00087 virtual asynStatus writeGenericPointer(asynUser *pasynUser, void *genericPointer);
00088 virtual void report(FILE *fp, int details);
00089
00090
00091 virtual int checkPath();
00092 virtual int createFileName(int maxChars, char *fullFileName);
00093 virtual int createFileName(int maxChars, char *filePath, char *fileName);
00094 virtual int readNDAttributesFile(const char *fileName);
00095 virtual int getAttributes(NDAttributeList *pAttributeList);
00096
00097 protected:
00098 int NDPortNameSelf;
00099 #define FIRST_NDARRAY_PARAM NDPortNameSelf
00100 int NDArraySizeX;
00101 int NDArraySizeY;
00102 int NDArraySizeZ;
00103 int NDArraySize;
00104 int NDNDimensions;
00105 int NDDimensions;
00106 int NDDataType;
00107 int NDColorMode;
00108 int NDUniqueId;
00109 int NDTimeStamp;
00110 int NDBayerPattern;
00111 int NDArrayCounter;
00112 int NDFilePath;
00113 int NDFilePathExists;
00114 int NDFileName;
00115 int NDFileNumber;
00116 int NDFileTemplate;
00117 int NDAutoIncrement;
00118 int NDFullFileName;
00119 int NDFileFormat;
00120 int NDAutoSave;
00121 int NDWriteFile;
00122 int NDReadFile;
00123 int NDFileWriteMode;
00124 int NDFileNumCapture;
00125 int NDFileNumCaptured;
00126 int NDFileCapture;
00127 int NDAttributesFile;
00128 int NDArrayData;
00129 int NDArrayCallbacks;
00130 #define LAST_NDARRAY_PARAM NDArrayCallbacks
00131
00132 NDArray **pArrays;
00133 NDArrayPool *pNDArrayPool;
00134 class NDAttributeList *pAttributeList;
00136 };
00137
00138 #define NUM_NDARRAY_PARAMS (&LAST_NDARRAY_PARAM - &FIRST_NDARRAY_PARAM + 1)
00139 #endif