quadEM  7-0
NDPluginProcess.h
Go to the documentation of this file.
1 #ifndef NDPluginProcess_H
2 #define NDPluginProcess_H
3 
4 #include "NDPluginDriver.h"
5 
6 /* Background array subtraction */
7 #define NDPluginProcessSaveBackgroundString "SAVE_BACKGROUND" /* (asynInt32, r/w) Save the current frame as background */
8 #define NDPluginProcessEnableBackgroundString "ENABLE_BACKGROUND" /* (asynInt32, r/w) Enable background subtraction? */
9 #define NDPluginProcessValidBackgroundString "VALID_BACKGROUND" /* (asynInt32, r/o) Is there a valid background */
10 
11 /* Flat field normalization */
12 #define NDPluginProcessSaveFlatFieldString "SAVE_FLAT_FIELD" /* (asynInt32, r/w) Save the current frame as flat field */
13 #define NDPluginProcessEnableFlatFieldString "ENABLE_FLAT_FIELD" /* (asynInt32, r/w) Enable flat field normalization? */
14 #define NDPluginProcessValidFlatFieldString "VALID_FLAT_FIELD" /* (asynInt32, r/o) Is there a valid flat field */
15 #define NDPluginProcessScaleFlatFieldString "SCALE_FLAT_FIELD" /* (asynInt32, r/o) Scale factor after dividing by flat field */
16 
17 /* Offset and scaling */
18 #define NDPluginProcessEnableOffsetScaleString "ENABLE_OFFSET_SCALE" /* (asynInt32, r/w) Enable offset and scale? */
19 #define NDPluginProcessAutoOffsetScaleString "AUTO_OFFSET_SCALE" /* (asynInt32, r/w) Oneshot calc of scale and offset value from min and max values */
20 #define NDPluginProcessScaleString "SCALE" /* (asynFloat64, r/w) Scale value */
21 #define NDPluginProcessOffsetString "OFFSET" /* (asynFloat64, r/w) Offset value */
22 
23 /* High and low clipping */
24 #define NDPluginProcessLowClipString "LOW_CLIP" /* (asynFloat64, r/w) Low clip value */
25 #define NDPluginProcessEnableLowClipString "ENABLE_LOW_CLIP" /* (asynInt32, r/w) Enable low clipping? */
26 #define NDPluginProcessHighClipString "HIGH_CLIP" /* (asynFloat64, r/w) High clip value */
27 #define NDPluginProcessEnableHighClipString "ENABLE_HIGH_CLIP" /* (asynInt32, r/w) Enable high clipping? */
28 
29 /* Recursive filter */
30 #define NDPluginProcessEnableFilterString "ENABLE_FILTER" /* (asynInt32, r/w) Enable frame filtering? */
31 #define NDPluginProcessResetFilterString "RESET_FILTER" /* (asynInt32, r/w) Reset frame filtering when 1 */
32 #define NDPluginProcessAutoResetFilterString "AUTO_RESET_FILTER" /* (asynInt32, r/w) Auto-reset filter on N */
33 #define NDPluginProcessFilterCallbacksString "FILTER_CALLBACKS" /* (asynInt32, r/w) Only do callbacks on N */
34 #define NDPluginProcessNumFilterString "NUM_FILTER" /* (asynInt32, r/w) Number of frames to filter */
35 #define NDPluginProcessNumFilteredString "NUM_FILTERED" /* (asynInt32, r/o) Number of frames filtered */
36 #define NDPluginProcessOOffsetString "FILTER_OOFFSET" /* (asynFloat64, r/w) Output offset */
37 #define NDPluginProcessOScaleString "FILTER_OSCALE" /* (asynFloat64, r/w) Output scale */
38 #define NDPluginProcessOC1String "FILTER_OC1" /* (asynFloat64, r/w) Output coefficient 1 */
39 #define NDPluginProcessOC2String "FILTER_OC2" /* (asynFloat64, r/w) Output coefficient 2 */
40 #define NDPluginProcessOC3String "FILTER_OC3" /* (asynFloat64, r/w) Output coefficient 3 */
41 #define NDPluginProcessOC4String "FILTER_OC4" /* (asynFloat64, r/w) Output coefficient 4 */
42 #define NDPluginProcessFOffsetString "FILTER_FOFFSET" /* (asynFloat64, r/w) Filter offset */
43 #define NDPluginProcessFScaleString "FILTER_FSCALE" /* (asynFloat64, r/w) Filter scale */
44 #define NDPluginProcessFC1String "FILTER_FC1" /* (asynFloat64, r/w) Filter coefficient 1 */
45 #define NDPluginProcessFC2String "FILTER_FC2" /* (asynFloat64, r/w) Filter coefficient 2 */
46 #define NDPluginProcessFC3String "FILTER_FC3" /* (asynFloat64, r/w) Filter coefficient 3 */
47 #define NDPluginProcessFC4String "FILTER_FC4" /* (asynFloat64, r/w) Filter coefficient 4 */
48 #define NDPluginProcessROffsetString "FILTER_ROFFSET" /* (asynFloat64, r/w) Reset offset */
49 #define NDPluginProcessRC1String "FILTER_RC1" /* (asynFloat64, r/w) Reset coefficient 1 */
50 #define NDPluginProcessRC2String "FILTER_RC2" /* (asynFloat64, r/w) Reset coefficient 2 */
51 
52 /* Output data type */
53 #define NDPluginProcessDataTypeString "PROCESS_DATA_TYPE" /* (asynInt32, r/w) Output type. -1 means automatic. */
54 
55 
63 public:
64  NDPluginProcess(const char *portName, int queueSize, int blockingCallbacks,
65  const char *NDArrayPort, int NDArrayAddr,
66  int maxBuffers, size_t maxMemory,
67  int priority, int stackSize);
68  /* These methods override the virtual methods in the base class */
69  void processCallbacks(NDArray *pArray);
70  asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
71 
72 protected:
73  /* Background array subtraction */
75  #define FIRST_NDPLUGIN_PROCESS_PARAM NDPluginProcessSaveBackground
78 
79  /* Flat field normalization */
84 
85  /* Scale and offset */
90 
91  /* High and low clipping */
96 
97  /* Frame filtering */
119 
120  /* Output data type */
122 
123 private:
124  NDArray *pBackground;
125  size_t nBackgroundElements;
126  NDArray *pFlatField;
127  size_t nFlatFieldElements;
128  NDArray *pFilter;
129  int numFiltered;
130 };
131 
132 #endif
Class from which actual plugin drivers are derived; derived from asynNDArrayDriver.
Definition: NDPluginDriver.h:58
int NDPluginProcessScaleFlatField
Definition: NDPluginProcess.h:83
int NDPluginProcessEnableFlatField
Definition: NDPluginProcess.h:81
int NDPluginProcessEnableOffsetScale
Definition: NDPluginProcess.h:86
int NDPluginProcessEnableHighClip
Definition: NDPluginProcess.h:95
int NDPluginProcessFC4
Definition: NDPluginProcess.h:115
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value)
Called when asyn clients call pasynInt32->write().
Definition: NDPluginDriver.cpp:678
int NDPluginProcessAutoOffsetScale
Definition: NDPluginProcess.h:87
int NDPluginProcessValidBackground
Definition: NDPluginProcess.h:77
int NDPluginProcessFilterCallbacks
Definition: NDPluginProcess.h:101
Does image processing operations.
Definition: NDPluginProcess.h:62
int NDPluginProcessROffset
Definition: NDPluginProcess.h:116
int NDPluginProcessResetFilter
Definition: NDPluginProcess.h:99
int NDPluginProcessValidFlatField
Definition: NDPluginProcess.h:82
int NDPluginProcessSaveFlatField
Definition: NDPluginProcess.h:80
int NDPluginProcessOC2
Definition: NDPluginProcess.h:107
int NDPluginProcessOC1
Definition: NDPluginProcess.h:106
int NDPluginProcessFScale
Definition: NDPluginProcess.h:111
int NDPluginProcessRC1
Definition: NDPluginProcess.h:117
int NDPluginProcessFC2
Definition: NDPluginProcess.h:113
int NDPluginProcessFOffset
Definition: NDPluginProcess.h:110
int NDPluginProcessSaveBackground
Definition: NDPluginProcess.h:74
int NDPluginProcessNumFilter
Definition: NDPluginProcess.h:102
int NDPluginProcessOOffset
Definition: NDPluginProcess.h:104
virtual void processCallbacks(NDArray *pArray)=0
int NDPluginProcessDataType
Definition: NDPluginProcess.h:121
#define NDPLUGIN_API
Definition: NDPluginAPI.h:41
int NDPluginProcessEnableLowClip
Definition: NDPluginProcess.h:93
int NDPluginProcessEnableBackground
Definition: NDPluginProcess.h:76
int NDPluginProcessAutoResetFilter
Definition: NDPluginProcess.h:100
int NDPluginProcessRC2
Definition: NDPluginProcess.h:118
int NDPluginProcessOC3
Definition: NDPluginProcess.h:108
int NDPluginProcessNumFiltered
Definition: NDPluginProcess.h:103
int NDPluginProcessFC1
Definition: NDPluginProcess.h:112
int NDPluginProcessEnableFilter
Definition: NDPluginProcess.h:98
int NDPluginProcessOffset
Definition: NDPluginProcess.h:89
N-dimensional array class; each array has a set of dimensions, a data type, pointer to data...
Definition: NDArray.h:93
int NDPluginProcessHighClip
Definition: NDPluginProcess.h:94
int NDPluginProcessOScale
Definition: NDPluginProcess.h:105
int NDPluginProcessLowClip
Definition: NDPluginProcess.h:92
int NDPluginProcessFC3
Definition: NDPluginProcess.h:114
int NDPluginProcessScale
Definition: NDPluginProcess.h:88
int NDPluginProcessOC4
Definition: NDPluginProcess.h:109