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