areaDetector 3-14
EPICS areaDetector framework
simDetector.h
Go to the documentation of this file.
1#include <epicsEvent.h>
2#include "ADDriver.h"
3
4#define DRIVER_VERSION 2
5#define DRIVER_REVISION 11
6#define DRIVER_MODIFICATION 0
7
9class epicsShareClass simDetector : public ADDriver {
10public:
11 simDetector(const char *portName, int maxSizeX, int maxSizeY, NDDataType_t dataType,
12 int maxBuffers, size_t maxMemory,
13 int priority, int stackSize);
14
15 /* These are the methods that we override from ADDriver */
16 virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
17 virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value);
18 virtual void setShutter(int open);
19 virtual void report(FILE *fp, int details);
20 void simTask();
22protected:
24 #define FIRST_SIM_DETECTOR_PARAM SimGainX
57
58private:
59 /* These are the methods that are new to this class */
60 template <typename epicsType> int computeArray(int sizeX, int sizeY);
61 template <typename epicsType> int computeLinearRampArray(int sizeX, int sizeY);
62 template <typename epicsType> int computePeaksArray(int sizeX, int sizeY);
63 template <typename epicsType> int computeSineArray(int sizeX, int sizeY);
64 int computeImage();
65
66 /* Our data */
67 epicsEventId startEventId_;
68 epicsEventId stopEventId_;
69 NDArray *pRaw_;
70 NDArray *pBackground_;
71 bool useBackground_;
72 NDArray *pRamp_;
73 NDArray *pPeak_;
74 NDArrayInfo arrayInfo_;
75 double *xSine1_;
76 double *xSine2_;
77 double *ySine1_;
78 double *ySine2_;
79 double xSineCounter_;
80 double ySineCounter_;
81};
82
89
94
95#define SimGainXString "SIM_GAIN_X"
96#define SimGainYString "SIM_GAIN_Y"
97#define SimGainRedString "SIM_GAIN_RED"
98#define SimGainGreenString "SIM_GAIN_GREEN"
99#define SimGainBlueString "SIM_GAIN_BLUE"
100#define SimOffsetString "SIM_OFFSET"
101#define SimNoiseString "SIM_NOISE"
102#define SimResetImageString "RESET_IMAGE"
103#define SimModeString "SIM_MODE"
104#define SimPeakStartXString "SIM_PEAK_START_X"
105#define SimPeakStartYString "SIM_PEAK_START_Y"
106#define SimPeakWidthXString "SIM_PEAK_WIDTH_X"
107#define SimPeakWidthYString "SIM_PEAK_WIDTH_Y"
108#define SimPeakNumXString "SIM_PEAK_NUM_X"
109#define SimPeakNumYString "SIM_PEAK_NUM_Y"
110#define SimPeakStepXString "SIM_PEAK_STEP_X"
111#define SimPeakStepYString "SIM_PEAK_STEP_Y"
112#define SimPeakHeightVariationString "SIM_PEAK_HEIGHT_VARIATION"
113#define SimXSineOperationString "SIM_XSINE_OPERATION"
114#define SimXSine1AmplitudeString "SIM_XSINE1_AMPLITUDE"
115#define SimXSine1FrequencyString "SIM_XSINE1_FREQUENCY"
116#define SimXSine1PhaseString "SIM_XSINE1_PHASE"
117#define SimXSine2AmplitudeString "SIM_XSINE2_AMPLITUDE"
118#define SimXSine2FrequencyString "SIM_XSINE2_FREQUENCY"
119#define SimXSine2PhaseString "SIM_XSINE2_PHASE"
120#define SimYSineOperationString "SIM_YSINE_OPERATION"
121#define SimYSine1AmplitudeString "SIM_YSINE1_AMPLITUDE"
122#define SimYSine1FrequencyString "SIM_YSINE1_FREQUENCY"
123#define SimYSine1PhaseString "SIM_YSINE1_PHASE"
124#define SimYSine2AmplitudeString "SIM_YSINE2_AMPLITUDE"
125#define SimYSine2FrequencyString "SIM_YSINE2_FREQUENCY"
126#define SimYSine2PhaseString "SIM_YSINE2_PHASE"
NDDataType_t dataType
Definition ADPylon.cpp:60
NDDataType_t
Enumeration of NDArray data types.
Definition NDAttribute.h:30
Class from which areaDetector drivers are directly derived.
Definition ADDriver.h:132
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value)
Sets an int32 parameter.
Definition ADDriver.cpp:84
virtual void setShutter(int open)
Set the shutter position.
Definition ADDriver.cpp:29
N-dimensional array class; each array has a set of dimensions, a data type, pointer to data,...
Definition NDArray.h:99
virtual void report(FILE *fp, int details)
Report status of the driver.
Definition asynNDArrayDriver.cpp:753
Simulation detector driver; demonstrates most of the features that areaDetector drivers can support.
Definition simDetector.h:9
int SimYSine1Frequency
Definition simDetector.h:52
int SimGainGreen
Definition simDetector.h:27
int SimXSineOperation
Definition simDetector.h:43
int SimPeakWidthX
Definition simDetector.h:35
int SimGainBlue
Definition simDetector.h:28
int SimGainY
Definition simDetector.h:25
int SimResetImage
Definition simDetector.h:31
int SimPeakStepX
Definition simDetector.h:39
int SimYSine2Phase
Definition simDetector.h:56
int SimPeakStartX
Definition simDetector.h:33
int SimXSine1Phase
Definition simDetector.h:46
int SimXSine2Amplitude
Definition simDetector.h:47
int SimXSine1Amplitude
Definition simDetector.h:44
int SimPeakNumX
Definition simDetector.h:37
int SimXSine2Phase
Definition simDetector.h:49
int SimXSine1Frequency
Definition simDetector.h:45
int simOffset
Definition simDetector.h:29
int SimYSineOperation
Definition simDetector.h:50
int SimNoise
Definition simDetector.h:30
int SimPeakHeightVariation
Definition simDetector.h:41
int SimPeakNumY
Definition simDetector.h:38
int SimMode
Definition simDetector.h:32
int SimYSine2Frequency
Definition simDetector.h:55
int SimGainX
Definition simDetector.h:23
int SimYSine1Phase
Definition simDetector.h:53
int SimPeakStartY
Definition simDetector.h:34
int SimPeakWidthY
Definition simDetector.h:36
int SimXSine2Frequency
Definition simDetector.h:48
int SimYSine1Amplitude
Definition simDetector.h:51
int SimPeakStepY
Definition simDetector.h:40
int SimGainRed
Definition simDetector.h:26
int SimOffset
Definition simDetector.h:42
int SimYSine2Amplitude
Definition simDetector.h:54
SimModes_t
Definition simDetector.h:83
@ SimModeOffsetNoise
Definition simDetector.h:87
@ SimModePeaks
Definition simDetector.h:85
@ SimModeSine
Definition simDetector.h:86
@ SimModeLinearRamp
Definition simDetector.h:84
SimSineOperation_t
Definition simDetector.h:90
@ SimSineOperationAdd
Definition simDetector.h:91
@ SimSineOperationMultiply
Definition simDetector.h:92
Structure returned by NDArray::getInfo.
Definition NDArray.h:78