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