00001
00002
00003
00004
00005
00006
00007
00008 #ifndef DRV_NDFileNexus_H
00009 #define DRV_NDFileNexus_H
00010
00011 #include "NDPluginFile.h"
00012 #include <napi.h>
00013 #include <tinyxml.h>
00014
00015
00016
00017 #define NDNexusFileVersion 1.0
00018
00019 typedef enum {
00020 NDFileNexusTemplatePath = NDPluginFileLastParam,
00021 NDFileNexusTemplateFile,
00022 NDFileNexusLastParam
00023 } NDFileNexusParam_t;
00024
00025 static asynParamString_t NDFileNexusParamString[] = {
00026 {NDFileNexusTemplatePath, "TEMPLATE_FILE_PATH"},
00027 {NDFileNexusTemplateFile, "TEMPLATE_FILE_NAME"},
00028 };
00029
00030 #define NUM_ND_FILE_NEXUS_PARAMS (sizeof(NDFileNexusParamString)/sizeof(NDFileNexusParamString[0]))
00031
00038 class NDFileNexus : public NDPluginFile {
00039 public:
00040 NDFileNexus(const char *portName, int queueSize, int blockingCallbacks,
00041 const char *NDArrayPort, int NDArrayAddr,
00042 int priority, int stackSize);
00043
00044
00045 virtual asynStatus openFile(const char *fileName, NDFileOpenMode_t openMode, NDArray *pArray);
00046 virtual asynStatus readFile(NDArray **pArray);
00047 virtual asynStatus writeFile(NDArray *pArray);
00048 virtual asynStatus closeFile();
00049 asynStatus drvUserCreate(asynUser *pasynUser, const char *drvInfo,
00050 const char **pptypeName, size_t *psize);
00051
00052 private:
00053 NXhandle nxFileHandle;
00054 int bitsPerSample;
00055 NDColorMode_t colorMode;
00056 TiXmlDocument configDoc;
00057 TiXmlElement *rootNode;
00058 NDAttributeList *pFileAttributes;
00059 int processNode(TiXmlNode *curNode, NDArray *);
00060 void getAttrTypeNSize(NDAttribute *pAttr, int *retType, int *retSize);
00061 void iterateNodes(TiXmlNode *curNode, NDArray *pArray);
00062 void findConstText(TiXmlNode *curNode, char *outtext);
00063 void * allocConstValue(int dataType, int length);
00064 void constTextToDataType(char *inText, int dataType, void *pValue);
00065 int typeStringToVal( const char * typeStr );
00066
00067 };
00068
00069 #endif
00070