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 NDFileDeleteDriverFileString "DELETE_DRIVER_FILE"
00069 #define NDAttributesFileString "ND_ATTRIBUTES_FILE"
00071
00072 #define NDArrayDataString "ARRAY_DATA"
00073 #define NDArrayCallbacksString "ARRAY_CALLBACKS"
00080 class epicsShareFunc asynNDArrayDriver : public asynPortDriver {
00081 public:
00082 asynNDArrayDriver(const char *portName, int maxAddr, int numParams, int maxBuffers, size_t maxMemory,
00083 int interfaceMask, int interruptMask,
00084 int asynFlags, int autoConnect, int priority, int stackSize);
00085
00086
00087 virtual asynStatus writeOctet(asynUser *pasynUser, const char *value, size_t maxChars,
00088 size_t *nActual);
00089 virtual asynStatus readGenericPointer(asynUser *pasynUser, void *genericPointer);
00090 virtual asynStatus writeGenericPointer(asynUser *pasynUser, void *genericPointer);
00091 virtual void report(FILE *fp, int details);
00092
00093
00094 virtual int checkPath();
00095 virtual int createFileName(int maxChars, char *fullFileName);
00096 virtual int createFileName(int maxChars, char *filePath, char *fileName);
00097 virtual int readNDAttributesFile(const char *fileName);
00098 virtual int getAttributes(NDAttributeList *pAttributeList);
00099
00100 protected:
00101 int NDPortNameSelf;
00102 #define FIRST_NDARRAY_PARAM NDPortNameSelf
00103 int NDArraySizeX;
00104 int NDArraySizeY;
00105 int NDArraySizeZ;
00106 int NDArraySize;
00107 int NDNDimensions;
00108 int NDDimensions;
00109 int NDDataType;
00110 int NDColorMode;
00111 int NDUniqueId;
00112 int NDTimeStamp;
00113 int NDBayerPattern;
00114 int NDArrayCounter;
00115 int NDFilePath;
00116 int NDFilePathExists;
00117 int NDFileName;
00118 int NDFileNumber;
00119 int NDFileTemplate;
00120 int NDAutoIncrement;
00121 int NDFullFileName;
00122 int NDFileFormat;
00123 int NDAutoSave;
00124 int NDWriteFile;
00125 int NDReadFile;
00126 int NDFileWriteMode;
00127 int NDFileNumCapture;
00128 int NDFileNumCaptured;
00129 int NDFileCapture;
00130 int NDFileDeleteDriverFile;
00131 int NDAttributesFile;
00132 int NDArrayData;
00133 int NDArrayCallbacks;
00134 #define LAST_NDARRAY_PARAM NDArrayCallbacks
00135
00136 NDArray **pArrays;
00137 NDArrayPool *pNDArrayPool;
00138 class NDAttributeList *pAttributeList;
00140 };
00141
00142 #define NUM_NDARRAY_PARAMS (&LAST_NDARRAY_PARAM - &FIRST_NDARRAY_PARAM + 1)
00143 #endif