1#ifndef EIGER_DETECTOR_H
2#define EIGER_DETECTOR_H
17#define EigDataSourceStr "DATA_SOURCE"
20#define EigFWEnableStr "FW_ENABLE"
21#define EigFWClearStr "CLEAR"
22#define EigFWCompressionStr "COMPRESSION"
23#define EigFWNamePatternStr "NAME_PATTERN"
24#define EigFWNImgsPerFileStr "NIMAGES_PER_FILE"
25#define EigFWAutoRemoveStr "AUTO_REMOVE"
26#define EigFWFreeStr "FW_FREE"
27#define EigFWStateStr "FW_STATE"
28#define EigFWImgNumStartStr "FW_IMG_NUM_START"
29#define EigFWHD5FormatStr "FWHDF5_FORMAT"
32#define EigWavelengthStr "WAVELENGTH"
33#define EigAutoSummationStr "AUTO_SUMMATION"
36#define EigDescriptionStr "DESCRIPTION"
39#define EigOmegaStr "OMEGA"
42#define EigPhotonEnergyStr "PHOTON_ENERGY"
43#define EigThresholdStr "THRESHOLD"
44#define EigThreshold1EnableStr "THRESHOLD1_ENABLE"
45#define EigThreshold2Str "THRESHOLD2"
46#define EigThreshold2EnableStr "THRESHOLD2_ENABLE"
47#define EigThresholdDiffEnableStr "THRESHOLD_DIFF_ENABLE"
48#define EigTriggerStr "TRIGGER"
49#define EigTriggerExpStr "TRIGGER_EXPOSURE"
50#define EigNTriggersStr "NUM_TRIGGERS"
51#define EigManualTriggerStr "MANUAL_TRIGGER"
52#define EigTriggerStartDelayStr "TRIGGER_START_DELAY"
53#define EigExtGateModeStr "EXT_GATE_MODE"
54#define EigCompressionAlgoStr "COMPRESSION_ALGO"
56#define EigROIModeStr "ROI_MODE"
59#define EigStateStr "STATE"
60#define EigErrorStr "ERROR"
61#define EigInitializeStr "INITIALIZE"
62#define EigThTemp0Str "TH_TEMP_0"
63#define EigThHumid0Str "TH_HUMID_0"
64#define EigLink0Str "LINK_0"
65#define EigLink1Str "LINK_1"
66#define EigLink2Str "LINK_2"
67#define EigLink3Str "LINK_3"
68#define EigDCUBufFreeStr "DCU_BUF_FREE"
71#define EigArmedStr "ARMED"
72#define EigSequenceIdStr "SEQ_ID"
73#define EigPendingFilesStr "PENDING_FILES"
74#define EigHVResetTimeStr "HV_RESET_TIME"
75#define EigHVResetStr "HV_RESET"
76#define EigHVStateStr "HV_STATE"
77#define EigSignedDataStr "SIGNED_DATA"
80#define EigSaveFilesStr "SAVE_FILES"
81#define EigFileOwnerStr "FILE_OWNER"
82#define EigFileOwnerGroupStr "FILE_OWNER_GROUP"
83#define EigFilePermsStr "FILE_PERMISSIONS"
86#define EigMonitorEnableStr "MONITOR_ENABLE"
87#define EigMonitorTimeoutStr "MONITOR_TIMEOUT"
88#define EigMonitorStateStr "MONITOR_STATE"
89#define EigMonitorBufSizeStr "MONITOR_BUF_SIZE"
92#define EigStreamEnableStr "STREAM_ENABLE"
93#define EigStreamDroppedStr "STREAM_DROPPED"
94#define EigStreamStateStr "STREAM_STATE"
95#define EigStreamDecompressStr "STREAM_DECOMPRESS"
96#define EigStreamVersionStr "STREAM_VERSION"
99#define EigWavelengthEpsilonStr "WAVELENGTH_EPSILON"
100#define EigEnergyEpsilonStr "ENERGY_EPSILON"
106 eigerDetector(
const char *portName,
const char *serverHostname,
107 int maxBuffers,
size_t maxMemory,
int priority,
int stackSize);
110 virtual asynStatus
writeInt32 (asynUser *pasynUser, epicsInt32 value);
111 virtual asynStatus
writeFloat64(asynUser *pasynUser, epicsFloat64 value);
112 virtual asynStatus
writeOctet (asynUser *pasynUser,
const char *value,
113 size_t nChars,
size_t *nActual);
114 void report(FILE *fp,
int details);
115 virtual asynStatus
drvUserCreate(asynUser *pasynUser,
const char *drvInfo,
116 const char **pptypeName,
size_t *psize);
252 epicsEvent mStartEvent, mStopEvent, mTriggerEvent, mStreamEvent, mStreamDoneEvent,
253 mPollDoneEvent, mInitializeEvent;
254 epicsMessageQueue mPollQueue, mDownloadQueue, mParseQueue, mSaveQueue,
256 bool mPollStop, mPollComplete, mStreamComplete;
257 unsigned int mFrameNumber;
258 uid_t mFsUid, mFsGid;
261 std::map<std::string, sys_t> mSubSystemMap;
264 asynStatus initParams (
void);
267 asynStatus parseH5File (
char *
buf,
size_t len);
268 asynStatus parseTiffFile (
char *
buf,
size_t len);
271 asynStatus eigerStatus (
void);
274 bool acquiring (
void);
Class from which areaDetector drivers are directly derived.
Definition ADDriver.h:132
Definition eigerParam.h:44
Definition eigerParam.h:131
Definition stream2Api.h:13
Definition streamApi.h:24
Definition eigerDetector.h:104
void monitorTask(void)
Definition eigerDetector.cpp:1300
EigerParam * mFileOwner
Definition eigerDetector.h:169
stream_version
Definition eigerDetector.h:152
@ STREAM_VERSION_STREAM2
Definition eigerDetector.h:154
@ STREAM_VERSION_STREAM
Definition eigerDetector.h:153
EigerParam * mArmed
Definition eigerDetector.h:165
roi_mode
Definition eigerDetector.h:130
@ ROI_MODE_DISABLED
Definition eigerDetector.h:131
@ ROI_MODE_4M
Definition eigerDetector.h:132
EigerParam * mTemperatureActual
Definition eigerDetector.h:241
EigerParam * mLink3
Definition eigerDetector.h:207
EigerParam * mMonitorBufSize
Definition eigerDetector.h:223
EigerParam * mSDKVersion
Definition eigerDetector.h:238
EigerParam * mState
Definition eigerDetector.h:199
void reapTask(void)
Definition eigerDetector.cpp:1266
EigerParam * mSerialNumber
Definition eigerDetector.h:240
EigerParam * mInitialize
Definition eigerDetector.h:174
EigerParam * mHVState
Definition eigerDetector.h:200
EigerParam * mFWState
Definition eigerDetector.h:216
EigerParam * mStreamDecompress
Definition eigerDetector.h:173
EigerParam * mDataSource
Definition eigerDetector.h:159
EigerParam * mMonitorState
Definition eigerDetector.h:224
EigerParam * mFirmwareVersion
Definition eigerDetector.h:239
EigerParam * mDCUBufFree
Definition eigerDetector.h:208
EigerParam * mManualTrigger
Definition eigerDetector.h:163
void controlTask(void)
Definition eigerDetector.cpp:747
EigerParam * mSequenceId
Definition eigerDetector.h:166
EigerParam * mHVResetTime
Definition eigerDetector.h:175
EigerParam * mAutoSummation
Definition eigerDetector.h:196
void initializeTask()
Definition eigerDetector.cpp:1492
EigerParam * mFilePerms
Definition eigerDetector.h:171
EigerParam * mNDArraySizeY
Definition eigerDetector.h:243
EigerParam * mStreamVersion
Definition eigerDetector.h:230
EigerParam * mHVReset
Definition eigerDetector.h:176
EigerParam * mNumExposures
Definition eigerDetector.h:236
EigerParam * mTrigger
Definition eigerDetector.h:161
EigerParam * mSaveFiles
Definition eigerDetector.h:168
EigerParam * mFWClear
Definition eigerDetector.h:218
EigerParam * mFWEnable
Definition eigerDetector.h:211
void report(FILE *fp, int details)
Report status of the driver.
Definition eigerDetector.cpp:728
EigerParam * mMonitorTimeout
Definition eigerDetector.h:172
virtual asynStatus drvUserCreate(asynUser *pasynUser, const char *drvInfo, const char **pptypeName, size_t *psize)
Definition eigerDetector.cpp:1891
void saveTask(void)
Definition eigerDetector.cpp:1180
EigerParam * mWavelength
Definition eigerDetector.h:185
EigerParam * mFWAutoRemove
Definition eigerDetector.h:160
EigerParam * mThreshold2
Definition eigerDetector.h:189
EigerParam * mMonitorEnable
Definition eigerDetector.h:222
EigerParam * mTriggerExp
Definition eigerDetector.h:162
EigerParam * mDescription
Definition eigerDetector.h:182
void pollTask(void)
Definition eigerDetector.cpp:1035
EigerParam * mEnergyEpsilon
Definition eigerDetector.h:178
void parseTask(void)
Definition eigerDetector.cpp:1160
EigerParam * mFWNImgsPerFile
Definition eigerDetector.h:214
EigerParam * mAcquireTime
Definition eigerDetector.h:233
EigerParam * mLink0
Definition eigerDetector.h:204
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value)
Sets an int32 parameter.
Definition eigerDetector.cpp:454
trigger_mode
Definition eigerDetector.h:142
@ TRIGGER_MODE_EXTG
Definition eigerDetector.h:148
@ TRIGGER_MODE_EXTS
Definition eigerDetector.h:145
@ TRIGGER_MODE_INTS
Definition eigerDetector.h:143
@ TRIGGER_MODE_EXTE
Definition eigerDetector.h:146
@ TRIGGER_MODE_INTE
Definition eigerDetector.h:144
@ TRIGGER_MODE_CONTINUOUS
Definition eigerDetector.h:147
EigerParam * mAcquirePeriod
Definition eigerDetector.h:234
EigerParam * mROIMode
Definition eigerDetector.h:195
EigerParam * mThHumid0
Definition eigerDetector.h:203
EigerParam * mCompressionAlgo
Definition eigerDetector.h:194
EigerParam * mStreamEnable
Definition eigerDetector.h:227
compression_algo
Definition eigerDetector.h:136
@ COMP_ALGO_BSLZ4
Definition eigerDetector.h:138
@ COMP_ALGO_LZ4
Definition eigerDetector.h:137
EigerParam * mTriggerMode
Definition eigerDetector.h:237
EigerParam * mError
Definition eigerDetector.h:201
EigerParam * mSignedData
Definition eigerDetector.h:179
EigerParam * mNTriggers
Definition eigerDetector.h:192
EigerParam * mThresholdDiffEnable
Definition eigerDetector.h:191
EigerParam * mFWCompression
Definition eigerDetector.h:212
EigerParam * mExtGateMode
Definition eigerDetector.h:193
EigerParam * mTriggerStartDelay
Definition eigerDetector.h:164
EigerParam * mFWFree
Definition eigerDetector.h:217
EigerParam * mFileOwnerGroup
Definition eigerDetector.h:170
virtual asynStatus writeOctet(asynUser *pasynUser, const char *value, size_t nChars, size_t *nActual)
Called when asyn clients call pasynOctet->write().
Definition eigerDetector.cpp:652
void downloadTask(void)
Definition eigerDetector.cpp:1130
EigerParam * mLink2
Definition eigerDetector.h:206
EigerParam * mThreshold
Definition eigerDetector.h:187
EigerParam * mThreshold2Enable
Definition eigerDetector.h:190
EigerParam * mNumImages
Definition eigerDetector.h:235
EigerParam * mLink1
Definition eigerDetector.h:205
EigerParam * mFWImgNumStart
Definition eigerDetector.h:215
EigerParam * mPendingFiles
Definition eigerDetector.h:167
EigerParam * mThTemp0
Definition eigerDetector.h:202
EigerParam * mFWHDF5Format
Definition eigerDetector.h:219
EigerParam * mWavelengthEpsilon
Definition eigerDetector.h:177
EigerParam * mStreamDropped
Definition eigerDetector.h:228
EigerParam * mFWNamePattern
Definition eigerDetector.h:213
void streamTask(void)
Definition eigerDetector.cpp:1332
EigerParam * mThreshold1Enable
Definition eigerDetector.h:188
EigerParam * mStreamState
Definition eigerDetector.h:229
EigerParam * mPhotonEnergy
Definition eigerDetector.h:186
virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value)
Definition eigerDetector.cpp:580
EigerParam * mNDArraySizeX
Definition eigerDetector.h:242
eigerModel_t
Definition eigerDetector.h:11
@ Eiger1
Definition eigerDetector.h:12
@ Eiger2
Definition eigerDetector.h:13
eigerAPIVersion_t
Definition restApi.h:13
unsigned char * buf
Definition udp_client_pixirad_single.cpp:70