00001 #ifndef NDPluginROI_H 00002 #define NDPluginROI_H 00003 00004 #include <epicsTypes.h> 00005 #include <asynStandardInterfaces.h> 00006 00007 #include "NDPluginDriver.h" 00008 00009 /* ROI general parameters */ 00010 #define NDPluginROINameString "NAME" /* (asynOctet, r/w) Name of this ROI */ 00011 00012 /* ROI definition */ 00013 #define NDPluginROIDim0MinString "DIM0_MIN" /* (asynInt32, r/w) Starting element of ROI in each dimension */ 00014 #define NDPluginROIDim0SizeString "DIM0_SIZE" /* (asynInt32, r/w) Size of ROI in each dimension */ 00015 #define NDPluginROIDim0MaxSizeString "DIM0_MAX_SIZE" /* (asynInt32, r/o) Maximum size of ROI in each dimension */ 00016 #define NDPluginROIDim0BinString "DIM0_BIN" /* (asynInt32, r/w) Binning of ROI in each dimension */ 00017 #define NDPluginROIDim0ReverseString "DIM0_REVERSE" /* (asynInt32, r/w) Reversal of ROI in each dimension */ 00018 #define NDPluginROIDim1MinString "DIM1_MIN" /* (asynInt32, r/w) Starting element of ROI in each dimension */ 00019 #define NDPluginROIDim1SizeString "DIM1_SIZE" /* (asynInt32, r/w) Size of ROI in each dimension */ 00020 #define NDPluginROIDim1MaxSizeString "DIM1_MAX_SIZE" /* (asynInt32, r/o) Maximum size of ROI in each dimension */ 00021 #define NDPluginROIDim1BinString "DIM1_BIN" /* (asynInt32, r/w) Binning of ROI in each dimension */ 00022 #define NDPluginROIDim1ReverseString "DIM1_REVERSE" /* (asynInt32, r/w) Reversal of ROI in each dimension */ 00023 #define NDPluginROIDim2MinString "DIM2_MIN" /* (asynInt32, r/w) Starting element of ROI in each dimension */ 00024 #define NDPluginROIDim2SizeString "DIM2_SIZE" /* (asynInt32, r/w) Size of ROI in each dimension */ 00025 #define NDPluginROIDim2MaxSizeString "DIM2_MAX_SIZE" /* (asynInt32, r/o) Maximum size of ROI in each dimension */ 00026 #define NDPluginROIDim2BinString "DIM2_BIN" /* (asynInt32, r/w) Binning of ROI in each dimension */ 00027 #define NDPluginROIDim2ReverseString "DIM2_REVERSE" /* (asynInt32, r/w) Reversal of ROI in each dimension */ 00028 #define NDPluginROIDataTypeString "ROI_DATA_TYPE" /* (asynInt32, r/w) Data type for ROI. -1 means automatic. */ 00029 #define NDPluginROIEnableScaleString "ENABLE_SCALE" /* (asynInt32, r/w) Disable/Enable scaling */ 00030 #define NDPluginROIScaleString "SCALE_VALUE" /* (asynFloat64, r/w) Scaling value, used as divisor */ 00031 00035 class NDPluginROI : public NDPluginDriver { 00036 public: 00037 NDPluginROI(const char *portName, int queueSize, int blockingCallbacks, 00038 const char *NDArrayPort, int NDArrayAddr, 00039 int maxBuffers, size_t maxMemory, 00040 int priority, int stackSize); 00041 /* These methods override the virtual methods in the base class */ 00042 void processCallbacks(NDArray *pArray); 00043 00044 protected: 00045 /* ROI general parameters */ 00046 int NDPluginROIName; 00047 #define FIRST_NDPLUGIN_ROI_PARAM NDPluginROIName 00048 00049 /* ROI definition */ 00050 int NDPluginROIDim0Min; 00051 int NDPluginROIDim0Size; 00052 int NDPluginROIDim0MaxSize; 00053 int NDPluginROIDim0Bin; 00054 int NDPluginROIDim0Reverse; 00055 int NDPluginROIDim1Min; 00056 int NDPluginROIDim1Size; 00057 int NDPluginROIDim1MaxSize; 00058 int NDPluginROIDim1Bin; 00059 int NDPluginROIDim1Reverse; 00060 int NDPluginROIDim2Min; 00061 int NDPluginROIDim2Size; 00062 int NDPluginROIDim2MaxSize; 00063 int NDPluginROIDim2Bin; 00064 int NDPluginROIDim2Reverse; 00065 int NDPluginROIDataType; 00066 int NDPluginROIEnableScale; 00067 int NDPluginROIScale; 00068 00069 #define LAST_NDPLUGIN_ROI_PARAM NDPluginROIScale 00070 00071 private: 00072 }; 00073 #define NUM_NDPLUGIN_ROI_PARAMS (&LAST_NDPLUGIN_ROI_PARAM - &FIRST_NDPLUGIN_ROI_PARAM + 1) 00074 00075 #endif