areaDetector 1-9
|
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