areaDetector 1-8
/home/epics/devel/areaDetector/ADApp/pluginSrc/NDPluginROI.h
Go to the documentation of this file.
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 NDPluginROIDim0EnableString         "DIM0_ENABLE"       /* (asynInt32,   r/w) If set then do ROI in this dimension */
00019 #define NDPluginROIDim1MinString            "DIM1_MIN"          /* (asynInt32,   r/w) Starting element of ROI in each dimension */
00020 #define NDPluginROIDim1SizeString           "DIM1_SIZE"         /* (asynInt32,   r/w) Size of ROI in each dimension */
00021 #define NDPluginROIDim1MaxSizeString        "DIM1_MAX_SIZE"     /* (asynInt32,   r/o) Maximum size of ROI in each dimension */
00022 #define NDPluginROIDim1BinString            "DIM1_BIN"          /* (asynInt32,   r/w) Binning of ROI in each dimension */
00023 #define NDPluginROIDim1ReverseString        "DIM1_REVERSE"      /* (asynInt32,   r/w) Reversal of ROI in each dimension */
00024 #define NDPluginROIDim1EnableString         "DIM1_ENABLE"       /* (asynInt32,   r/w) If set then do ROI in this dimension */
00025 #define NDPluginROIDim2MinString            "DIM2_MIN"          /* (asynInt32,   r/w) Starting element of ROI in each dimension */
00026 #define NDPluginROIDim2SizeString           "DIM2_SIZE"         /* (asynInt32,   r/w) Size of ROI in each dimension */
00027 #define NDPluginROIDim2MaxSizeString        "DIM2_MAX_SIZE"     /* (asynInt32,   r/o) Maximum size of ROI in each dimension */
00028 #define NDPluginROIDim2BinString            "DIM2_BIN"          /* (asynInt32,   r/w) Binning of ROI in each dimension */
00029 #define NDPluginROIDim2ReverseString        "DIM2_REVERSE"      /* (asynInt32,   r/w) Reversal of ROI in each dimension */
00030 #define NDPluginROIDim2EnableString         "DIM2_ENABLE"       /* (asynInt32,   r/w) If set then do ROI in this dimension */
00031 #define NDPluginROIDataTypeString           "ROI_DATA_TYPE"     /* (asynInt32,   r/w) Data type for ROI.  -1 means automatic. */
00032 #define NDPluginROIEnableScaleString        "ENABLE_SCALE"      /* (asynInt32,   r/w) Disable/Enable scaling */
00033 #define NDPluginROIScaleString              "SCALE_VALUE"       /* (asynFloat64, r/w) Scaling value, used as divisor */
00034 
00038 class NDPluginROI : public NDPluginDriver {
00039 public:
00040     NDPluginROI(const char *portName, int queueSize, int blockingCallbacks, 
00041                  const char *NDArrayPort, int NDArrayAddr,
00042                  int maxBuffers, size_t maxMemory,
00043                  int priority, int stackSize);
00044     /* These methods override the virtual methods in the base class */
00045     void processCallbacks(NDArray *pArray);
00046 
00047 protected:
00048     /* ROI general parameters */
00049     int NDPluginROIName;
00050     #define FIRST_NDPLUGIN_ROI_PARAM NDPluginROIName
00051 
00052     /* ROI definition */
00053     int NDPluginROIDim0Min;
00054     int NDPluginROIDim0Size;
00055     int NDPluginROIDim0MaxSize;
00056     int NDPluginROIDim0Bin;
00057     int NDPluginROIDim0Reverse;
00058     int NDPluginROIDim0Enable;
00059     int NDPluginROIDim1Min;
00060     int NDPluginROIDim1Size;
00061     int NDPluginROIDim1MaxSize;
00062     int NDPluginROIDim1Bin;
00063     int NDPluginROIDim1Reverse;
00064     int NDPluginROIDim1Enable;    
00065     int NDPluginROIDim2Min;
00066     int NDPluginROIDim2Size;
00067     int NDPluginROIDim2MaxSize;
00068     int NDPluginROIDim2Bin;
00069     int NDPluginROIDim2Reverse;
00070     int NDPluginROIDim2Enable;    
00071     int NDPluginROIDataType;
00072     int NDPluginROIEnableScale;
00073     int NDPluginROIScale;
00074 
00075     #define LAST_NDPLUGIN_ROI_PARAM NDPluginROIScale
00076                                 
00077 private:
00078 };
00079 #define NUM_NDPLUGIN_ROI_PARAMS (&LAST_NDPLUGIN_ROI_PARAM - &FIRST_NDPLUGIN_ROI_PARAM + 1)
00080     
00081 #endif