30static const char *driverName =
"PerkinElmer";
79 PerkinElmer(
const char *portName,
int IDType,
const char *IDValue,
80 int maxBuffers,
size_t maxMemory,
81 int priority,
int stackSize);
84 virtual asynStatus
writeInt32(asynUser *pasynUser, epicsInt32 value);
85 virtual asynStatus
writeFloat64(asynUser *pasynUser, epicsFloat64 value);
86 void report(FILE *fp,
int details);
96#define PE_FIRST_PARAM PE_Initialize
138 epicsEventId acquireStopEvent_;
139 epicsUInt16 *pAcqBuffer_;
140 epicsUInt16 *pOffsetBuffer_;
142 epicsUInt16 *pBadPixelMap_;
143 int *pPixelCorrectionList_;
144 unsigned int uiNumFrameBuffers_;
145 unsigned int uiNumBuffersInUse_;
148 unsigned int uiNumSensors_;
150 unsigned int uiChannelType_;
153 unsigned int uiDevFrames_;
154 unsigned int uiRows_;
155 unsigned int uiColumns_;
156 unsigned int uiDataType_;
157 unsigned int uiSortFlags_;
158 CHwHeaderInfo cHwHeaderInfo_;
159 CHwHeaderInfoEx cHwHeaderInfoEx_;
166 bool acquireSettingsChanged_;
167 bool doSoftwareTriggers_;
169 bool initializeDetector (
void);
170 void setBinning(
void);
171 void reportSensors(FILE *fp,
int details);
173 void acquireSetup(
void);
174 void acquireStop(
void);
175 void acquireNormalImage(
void);
176 void acquireOffsetImage(
void);
177 void acquireGainImage(
void);
178 void doSoftwareTrigger(
void);
180 asynStatus loadGainFile(
void);
181 asynStatus saveGainFile(
void);
182 asynStatus loadPixelCorrectionFile();
183 asynStatus setTriggerOut();
185 void reportXISStatus(
int errorCode,
const char *functionName,
const char *formatString, ...);
190#define PE_SystemIDString "PE_SYSTEMID"
191#define PE_InitializeString "PE_INITIALIZE"
192#define PE_CorrectionsDirectoryString "PE_CORRECTIONS_DIRECTORY"
193#define PE_AcquireOffsetString "PE_ACQUIRE_OFFSET"
194#define PE_NumOffsetFramesString "PE_NUM_OFFSET_FRAMES"
195#define PE_CurrentOffsetFrameString "PE_CURRENT_OFFSET_FRAME"
196#define PE_UseOffsetString "PE_USE_OFFSET"
197#define PE_OffsetAvailableString "PE_OFFSET_AVAILABLE"
198#define PE_OffsetConstantString "PE_OFFSET_CONSTANT"
199#define PE_AcquireGainString "PE_ACQUIRE_GAIN"
200#define PE_NumGainFramesString "PE_NUM_GAIN_FRAMES"
201#define PE_CurrentGainFrameString "PE_CURRENT_GAIN_FRAME"
202#define PE_UseGainString "PE_USE_GAIN"
203#define PE_GainAvailableString "PE_GAIN_AVAILABLE"
204#define PE_GainFileString "PE_GAIN_FILE"
205#define PE_LoadGainFileString "PE_LOAD_GAIN_FILE"
206#define PE_SaveGainFileString "PE_SAVE_GAIN_FILE"
207#define PE_UsePixelCorrectionString "PE_USE_PIXEL_CORRECTION"
208#define PE_PixelCorrectionAvailableString "PE_PIXEL_CORRECTION_AVAILABLE"
209#define PE_PixelCorrectionFileString "PE_PIXEL_CORRECTION_FILE"
210#define PE_LoadPixelCorrectionFileString "PE_LOAD_PIXEL_CORRECTION_FILE"
211#define PE_GainString "PE_GAIN"
212#define PE_NumFrameBuffersString "PE_NUM_FRAME_BUFFERS"
213#define PE_TriggerString "PE_TRIGGER"
214#define PE_SyncModeString "PE_SYNC_MODE"
215#define PE_FrameBufferIndexString "PE_FRAME_BUFFER_INDEX"
216#define PE_ImageNumberString "PE_IMAGE_NUMBER"
217#define PE_SkipFramesString "PE_SKIP_FRAMES"
218#define PE_NumFramesToSkipString "PE_NUM_FRAMES_TO_SKIP"
219#define PE_TriggerOutSignalString "PE_TRIGGER_OUT_SIGNAL"
220#define PE_TriggerOutEPLengthString "PE_TRIGGER_OUT_EP_LENGTH"
221#define PE_TriggerOutEPFirstFrameString "PE_TRIGGER_OUT_EP_FIRST_FRAME"
222#define PE_TriggerOutEPLastFrameString "PE_TRIGGER_OUT_EP_LAST_FRAME"
223#define PE_TriggerOutEPDelay1String "PE_TRIGGER_OUT_EP_DELAY1"
224#define PE_TriggerOutEPDelay2String "PE_TRIGGER_OUT_EP_DELAY2"
225#define PE_TriggerOutDDDDelayString "PE_TRIGGER_OUT_DDD_DELAY"
226#define PE_TriggerOutEdgeString "PE_TRIGGER_OUT_EDGE"
@ ADImageSingle
Collect a single image per Acquire command.
Definition ADDriver.h:50
@ ADImageContinuous
Collect images continuously until Acquire is set to 0.
Definition ADDriver.h:52
@ ADImageMultiple
Collect ADNumImages images per Acquire command.
Definition ADDriver.h:51
PEAcquisitionMode_t
Definition PerkinElmer.h:36
@ PE_ACQUIRE_ACQUISITION
Definition PerkinElmer.h:37
@ PE_ACQUIRE_OFFSET
Definition PerkinElmer.h:38
@ PE_ACQUIRE_GAIN
Definition PerkinElmer.h:39
PESyncMode_t
Definition PerkinElmer.h:61
@ PE_SYNC_LINEWISE
Definition PerkinElmer.h:64
@ PE_SYNC_DDD_CLEAR
Definition PerkinElmer.h:62
@ PE_SYNC_DDD_NOCLEAR
Definition PerkinElmer.h:63
@ PE_SYNC_AUTOTRIGGER
Definition PerkinElmer.h:66
@ PE_SYNC_FRAMEWISE
Definition PerkinElmer.h:65
PEImageMode_t
Definition PerkinElmer.h:45
@ PEImageAverage
Definition PerkinElmer.h:49
@ PEImageSingle
Definition PerkinElmer.h:46
@ PEImageMultiple
Definition PerkinElmer.h:47
@ PEImageContinuous
Definition PerkinElmer.h:48
PETimingMode_t
Definition PerkinElmer.h:53
@ PE_FREE_RUNNING
Definition PerkinElmer.h:56
@ PE_SOFT_TRIGGER
Definition PerkinElmer.h:57
@ PE_EXTERNAL_TRIGGER
Definition PerkinElmer.h:55
@ PE_INTERNAL_TRIGGER
Definition PerkinElmer.h:54
Class from which areaDetector drivers are directly derived.
Definition ADDriver.h:132
Driver for the Perkin Elmer flat panel amorphous silicon detectors.
Definition PerkinElmer.h:77
int PE_NumGainFrames
Definition PerkinElmer.h:105
int PE_TriggerOutEPLength
Definition PerkinElmer.h:125
int PE_TriggerOutSignal
Definition PerkinElmer.h:124
int PE_Trigger
Definition PerkinElmer.h:118
int PE_GainFile
Definition PerkinElmer.h:109
int PE_AcquireGain
Definition PerkinElmer.h:104
int PE_SaveGainFile
Definition PerkinElmer.h:111
int PE_GainAvailable
Definition PerkinElmer.h:108
int PE_ImageNumber
Definition PerkinElmer.h:121
int PE_NumFrameBuffers
Definition PerkinElmer.h:117
int PE_PixelCorrectionAvailable
Definition PerkinElmer.h:113
int PE_LoadPixelCorrectionFile
Definition PerkinElmer.h:115
int PE_OffsetAvailable
Definition PerkinElmer.h:102
int PE_CorrectionsDirectory
Definition PerkinElmer.h:97
int PE_CurrentGainFrame
Definition PerkinElmer.h:106
int PE_SyncMode
Definition PerkinElmer.h:119
int PE_TriggerOutEPFirstFrame
Definition PerkinElmer.h:126
int PE_NumFramesToSkip
Definition PerkinElmer.h:123
int PE_UseGain
Definition PerkinElmer.h:107
void report(FILE *fp, int details)
Report status of the driver.
Definition PerkinElmer.cpp:583
int PE_TriggerOutEdge
Definition PerkinElmer.h:131
int PE_UsePixelCorrection
Definition PerkinElmer.h:112
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value)
Called when asyn clients call pasynInt32->write().
Definition PerkinElmer.cpp:1062
int PE_TriggerOutDDDDelay
Definition PerkinElmer.h:130
int PE_OffsetConstant
Definition PerkinElmer.h:103
int PE_SkipFrames
Definition PerkinElmer.h:122
int PE_NumOffsetFrames
Definition PerkinElmer.h:99
int PE_TriggerOutEPDelay2
Definition PerkinElmer.h:129
void endAcqCallback(HACQDESC hAcqDesc)
callback function that is called by XISL at end of acquisition
Definition PerkinElmer.cpp:997
void acquireStopTask(void)
Definition PerkinElmer.cpp:1526
int PE_Gain
Definition PerkinElmer.h:116
int PE_PixelCorrectionFile
Definition PerkinElmer.h:114
int PE_LoadGainFile
Definition PerkinElmer.h:110
virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value)
Called when asyn clients call pasynFloat64->write().
Definition PerkinElmer.cpp:1178
int PE_FrameBufferIndex
Definition PerkinElmer.h:120
int PE_CurrentOffsetFrame
Definition PerkinElmer.h:100
int PE_TriggerOutEPDelay1
Definition PerkinElmer.h:128
int PE_Initialize
Definition PerkinElmer.h:95
void endFrameCallback(HACQDESC hAcqDesc)
callback function that is called by XISL every frame at end of data transfer
Definition PerkinElmer.cpp:791
~PerkinElmer()
Destructor for Perkin Elmer driver; most parameters are simply passed to ADDriver::ADDriver.
Definition PerkinElmer.cpp:218
int PE_AcquireOffset
Definition PerkinElmer.h:98
int PE_UseOffset
Definition PerkinElmer.h:101
int PE_TriggerOutEPLastFrame
Definition PerkinElmer.h:127
#define DWORD
Definition pco_structures.h:443