15#define MAX_ENUM_STRING_SIZE 26
17#define FastCCDPollingPeriodString "POLL_PERIOD"
19#define FastCCDFramestoreString "FRAMESTORE"
21#define FastCCDMux1String "FCCD_MUX1"
22#define FastCCDMux2String "FCCD_MUX2"
24#define FastCCDFirmwarePathString "FIRMWARE_PATH"
25#define FastCCDBiasPathString "BIAS_PATH"
26#define FastCCDClockPathString "CLOCK_PATH"
27#define FastCCDFCRICPathString "FCRIC_PATH"
29#define FastCCDFirmwareUploadString "FIRMWARE_UPLOAD"
30#define FastCCDClockUploadString "CLOCK_UPLOAD"
31#define FastCCDBiasUploadString "BIAS_UPLOAD"
32#define FastCCDFCRICUploadString "FCRIC_UPLOAD"
34#define FastCCDPowerString "CIN_POWER"
35#define FastCCDFPPowerString "CIN_FP_POWER"
36#define FastCCDCameraPowerString "CAMERA_POWER"
37#define FastCCDCameraPowerModeString "CAMERA_POWER_MODE"
39#define FastCCDBiasString "BIAS"
40#define FastCCDClocksString "CLOCKS"
42#define FastCCDFPGAStatusString "FPGA_STATUS"
43#define FastCCDDCMStatusString "DCM_STATUS"
45#define FastCCDBaseBoardIDString "BASE_BOARD_ID"
46#define FastCCDBaseSerialNumString "BASE_SERIAL_NUM"
47#define FastCCDBaseFPGAVersionString "BASE_FPGA_VER"
48#define FastCCDFabBoardIDString "FAB_BOARD_ID"
49#define FastCCDFabSerialNumString "FAB_SERIAL_NUM"
50#define FastCCDFabFPGAVersionString "FAB_FPGA_VER"
52#define FastCCDStatusHBString "STATUS_HB"
54#define FastCCDBadPckString "BAD_PCK"
55#define FastCCDDroppedPckString "DROPPED_PCK"
56#define FastCCDLastFrameString "LAST_FRAME"
57#define FastCCDResetStatsString "RESET_STATS"
58#define FastCCDPacketBufferString "PACKET_BUFFER"
59#define FastCCDFrameBufferString "FRAME_BUFFER"
61#define FastCCDOverscanRowsString "OVERSCAN_ROWS"
62#define FastCCDOverscanColsString "OVERSCAN_COLS"
64#define FastCCDFclkString "FCLK"
66#define FastCCDFCRICGainString "FCRIC_GAIN"
67#define FastCCDFCRICClampString "FCRIC_CLAMP"
69#define FastCCDVBus12V0String "VBUS_12V0"
70#define FastCCDVMgmt3v3String "VMGMT_3V3"
71#define FastCCDVMgmt2v5String "VMGMT_2V5"
72#define FastCCDVMgmt1v2String "VMGMT_1V2"
73#define FastCCDVEnet1v0String "VENET_1V0"
74#define FastCCDVS3E3v3String "VS3E_3V3"
75#define FastCCDVGen3v3String "VGEN_3V3"
76#define FastCCDVGen2v5String "VGEN_2V5"
77#define FastCCDV60v9String "V6_0V9"
78#define FastCCDV61v0String "V6_1V0"
79#define FastCCDV62v5String "V6_2V5"
80#define FastCCDVFpString "VFP"
82#define FastCCDIBus12V0String "IBUS_12V0"
83#define FastCCDIMgmt3v3String "IMGMT_3V3"
84#define FastCCDIMgmt2v5String "IMGMT_2V5"
85#define FastCCDIMgmt1v2String "IMGMT_1V2"
86#define FastCCDIEnet1v0String "IENET_1V0"
87#define FastCCDIS3E3v3String "IS3E_3V3"
88#define FastCCDIGen3v3String "IGEN_3V3"
89#define FastCCDIGen2v5String "IGEN_2V5"
90#define FastCCDI60v9String "I6_0V9"
91#define FastCCDI61v0String "I6_1V0"
92#define FastCCDI62v5String "I6_2V5"
93#define FastCCDIFpString "IFP"
95#define FastCCDBiasPosHString "BIAS_POSH"
96#define FastCCDBiasNegHString "BIAS_NEGH"
97#define FastCCDBiasPosRGString "BIAS_POSRG"
98#define FastCCDBiasNegRGString "BIAS_NEGRG"
99#define FastCCDBiasPosSWString "BIAS_POSSW"
100#define FastCCDBiasNegSWString "BIAS_NEGSW"
101#define FastCCDBiasPosVString "BIAS_POSV"
102#define FastCCDBiasNegVString "BIAS_NEGV"
103#define FastCCDBiasPosTGString "BIAS_POSTG"
104#define FastCCDBiasNegTGString "BIAS_NEGTG"
105#define FastCCDBiasPosVFString "BIAS_POSVF"
106#define FastCCDBiasNegVFString "BIAS_NEGVF"
107#define FastCCDBiasNEDGEString "BIAS_NEDGE"
108#define FastCCDBiasOTGString "BIAS_OTG"
109#define FastCCDBiasVDDRString "BIAS_VDDR"
110#define FastCCDBiasVDDOutString "BIAS_VDDOUT"
111#define FastCCDBiasBufBaseString "BIAS_BUFBASE"
112#define FastCCDBiasBufDeltaString "BIAS_BUFDELTA"
113#define FastCCDBiasSpare1String "BIAS_SPARE1"
114#define FastCCDBiasSpare2String "BIAS_SPARE2"
116#define FastCCDBiasPosHWString "BIAS_POSH_W"
117#define FastCCDBiasNegHWString "BIAS_NEGH_W"
118#define FastCCDBiasPosRGWString "BIAS_POSRG_W"
119#define FastCCDBiasNegRGWString "BIAS_NEGRG_W"
120#define FastCCDBiasPosSWWString "BIAS_POSSW_W"
121#define FastCCDBiasNegSWWString "BIAS_NEGSW_W"
122#define FastCCDBiasPosVWString "BIAS_POSV_W"
123#define FastCCDBiasNegVWString "BIAS_NEGV_W"
124#define FastCCDBiasPosTGWString "BIAS_POSTG_W"
125#define FastCCDBiasNegTGWString "BIAS_NEGTG_W"
126#define FastCCDBiasPosVFWString "BIAS_POSVF_W"
127#define FastCCDBiasNegVFWString "BIAS_NEGVF_W"
128#define FastCCDBiasNEDGEWString "BIAS_NEDGE_W"
129#define FastCCDBiasOTGWString "BIAS_OTG_W"
130#define FastCCDBiasVDDRWString "BIAS_VDDR_W"
131#define FastCCDBiasVDDOutWString "BIAS_VDDOUT_W"
132#define FastCCDBiasBufBaseWString "BIAS_BUFBASE_W"
133#define FastCCDBiasBufDeltaWString "BIAS_BUFDELTA_W"
134#define FastCCDBiasSpare1WString "BIAS_SPARE1_W"
135#define FastCCDBiasSpare2WString "BIAS_SPARE2_W"
137#define FastCCDBiasWriteVString "BIAS_WRITEV"
139#define FastCCDFOTestString "FO_TEST"
141#define FastCCDBootString "BOOT"
142#define FastCCDSendBiasString "SEND_BIAS"
143#define FastCCDSendFCRICString "SEND_FCRIC"
145#define FastCCDTimingModeString "TIMING_MODE"
146#define FastCCDSendTimingString "SEND_TIMING"
147#define FastCCDTimingNameString "TIMING_NAME"
148#define FastCCDTimingName0String "TIMING_NAME_0"
149#define FastCCDTimingName1String "TIMING_NAME_1"
150#define FastCCDTimingName2String "TIMING_NAME_2"
151#define FastCCDTimingName3String "TIMING_NAME_3"
152#define FastCCDTimingName4String "TIMING_NAME_4"
153#define FastCCDTimingName5String "TIMING_NAME_5"
154#define FastCCDTimingName6String "TIMING_NAME_6"
155#define FastCCDTimingName7String "TIMING_NAME_7"
156#define FastCCDTimingName8String "TIMING_NAME_8"
157#define FastCCDTimingName9String "TIMING_NAME_9"
160static void FastCCDStatusTaskC(
void *drvPvt);
161static void FastCCDDataStatsTaskC(
void *drvPvt);
162static void FastCCDDetectorWaitTaskC(
void *drvPvt);
163static void exitHandler(
void *drvPvt);
164static void messageCallbackC(
const char *message,
int severity,
void *ptr);
165static void allocateImageC(cin_data_frame_t *frame,
void *ptr);
166static void processImageC(cin_data_frame_t *frame,
void *ptr);
174 FastCCD(
const char *portName,
int maxBuffers,
size_t maxMemory,
175 int priority,
int stackSize,
int packetBuffer,
int imageBuffer,
176 const char *baseIP,
const char *fabricIP,
const char *fabricMAC);
182 asynStatus
connect(asynUser *pasynUser);
186 asynStatus
writeInt32(asynUser *pasynUser, epicsInt32 value);
187 asynStatus
writeFloat64(asynUser *pasynUser, epicsFloat64 value);
188 asynStatus
writeOctet(asynUser *pasynUser,
const char *value,
size_t nc,
size_t *na);
191 void report(FILE *fp,
int details);
205 #define FIRST_FASTCCD_PARAM FastCCDMux1
354 #define LAST_FASTCCD_PARAM FastCCDIFp
369 asynStatus disconnectCamera();
370 asynStatus connectCamera();
372 asynStatus setupAcquisition();
374 epicsEventId statusEvent;
375 epicsEventId dataStatsEvent;
376 epicsEventId dataEvent;
377 epicsEventId detectorWaitEvent;
379 double statusPollingPeriod;
380 double dataStatsPollingPeriod;
385 struct timespec lastFrameTimestamp;
387 void getCameraStatus(
int first_run);
388 int uploadConfig(
int status,
int path);
389 int uploadFirmware(
void);
397#define NUM_FastCCD_DET_PARAMS ((int)(&LAST_FASTCCD_PARAM- &FIRST_FASTCCD_PARAM + 1))
Class from which areaDetector drivers are directly derived.
Definition ADDriver.h:132
Driver class for FastCCD CCD.
Definition FastCCD.h:172
int FastCCDFCRICPath
Definition FastCCD.h:233
int FastCCDFPPower
Definition FastCCD.h:237
int FastCCDIGen2v5
Definition FastCCD.h:349
int FastCCDBiasBufBase
Definition FastCCD.h:300
int FastCCDBiasUpload
Definition FastCCD.h:227
int FastCCDBiasNegTG
Definition FastCCD.h:293
int FastCCDSendBias
Definition FastCCD.h:275
int FastCCDFCRICGain
Definition FastCCD.h:222
int FastCCDBoot
Definition FastCCD.h:273
int FastCCDSendTiming
Definition FastCCD.h:274
int FastCCDBiasBufDeltaW
Definition FastCCD.h:322
int FastCCDFclk
Definition FastCCD.h:219
int FastCCDIMgmt2v5
Definition FastCCD.h:344
int FastCCDIMgmt1v2
Definition FastCCD.h:345
NDArray * pImage
Definition FastCCD.h:392
int FastCCDIGen3v3
Definition FastCCD.h:348
int FastCCDTimingName
Definition FastCCD.h:279
int FastCCDI60v9
Definition FastCCD.h:350
int FastCCDBiasNegSWW
Definition FastCCD.h:310
int FastCCDVS3E3v3
Definition FastCCD.h:335
int FastCCDTimingNameN[10]
Definition FastCCD.h:280
int FastCCDBiasOTG
Definition FastCCD.h:297
int FastCCDCameraPower
Definition FastCCD.h:238
void messageCallback(const char *message, int severity)
Definition FastCCD.cpp:90
int FastCCDBiasVDDR
Definition FastCCD.h:298
int FastCCDFramestore
Definition FastCCD.h:212
int FastCCDStatusHB
Definition FastCCD.h:258
int FastCCDBiasSpare1
Definition FastCCD.h:302
int FastCCDBiasPosVFW
Definition FastCCD.h:315
int FastCCDPacketBuffer
Definition FastCCD.h:266
int FastCCDVEnet1v0
Definition FastCCD.h:334
int FastCCDBiasWriteVW
Definition FastCCD.h:325
int FastCCDBiasPosVW
Definition FastCCD.h:311
void allocateImage(cin_data_frame_t *frame)
Definition FastCCD.cpp:113
void statusTask(void)
Update status of detector.
Definition FastCCD.cpp:1763
int FastCCDFabFPGAVersion
Definition FastCCD.h:255
int FastCCDBiasNegVF
Definition FastCCD.h:295
asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value)
Called when asyn clients call pasynInt32->writr().
Definition FastCCD.cpp:915
int FastCCDBiasOTGW
Definition FastCCD.h:318
int FastCCDV60v9
Definition FastCCD.h:338
int FastCCDIBus12V0
Definition FastCCD.h:342
int FastCCDBiasPosSWW
Definition FastCCD.h:309
int FastCCDBiasPosTG
Definition FastCCD.h:292
int FastCCDBiasPosHW
Definition FastCCD.h:305
int FastCCDMux2
Definition FastCCD.h:206
asynStatus disconnect(asynUser *pasynUser)
Definition FastCCD.cpp:74
int FastCCDVBus12V0
Definition FastCCD.h:330
int FastCCDVMgmt2v5
Definition FastCCD.h:332
int FastCCDBiasPosH
Definition FastCCD.h:284
int FastCCDBiasVDDOutW
Definition FastCCD.h:320
int FastCCDFrameBuffer
Definition FastCCD.h:267
int FastCCDBiasNegH
Definition FastCCD.h:285
int FastCCDBiasPath
Definition FastCCD.h:231
int FastCCDI61v0
Definition FastCCD.h:351
int FastCCDBiasNEDGEW
Definition FastCCD.h:317
int FastCCDV62v5
Definition FastCCD.h:340
int FastCCDVFp
Definition FastCCD.h:341
int FastCCDClockUpload
Definition FastCCD.h:228
int FastCCDBiasNegRG
Definition FastCCD.h:287
int FastCCDBiasSpare2W
Definition FastCCD.h:324
int FastCCDBiasBufDelta
Definition FastCCD.h:301
int FastCCDSendFCRIC
Definition FastCCD.h:276
int FastCCDMux1
Definition FastCCD.h:204
int FastCCDBiasPosVF
Definition FastCCD.h:294
void dataStatsTask(void)
Definition FastCCD.cpp:1343
int FastCCDFCRICClamp
Definition FastCCD.h:223
int FastCCDVMgmt1v2
Definition FastCCD.h:333
int FastCCDBiasNegVW
Definition FastCCD.h:312
int FastCCDBiasPosRG
Definition FastCCD.h:286
int FastCCDBiasNegTGW
Definition FastCCD.h:314
int FastCCDFirmwareUpload
Definition FastCCD.h:226
int FastCCDBiasVDDRW
Definition FastCCD.h:319
void detectorWaitTask(void)
Definition FastCCD.cpp:1827
int FastCCDFabBoardID
Definition FastCCD.h:253
int FastCCDOverscanCols
Definition FastCCD.h:216
int FastCCDPower
Definition FastCCD.h:236
cin_ctl_t cin_ctl
Definition FastCCD.h:393
int FastCCDFabSerialNum
Definition FastCCD.h:254
int FastCCDBias
Definition FastCCD.h:242
int FastCCDBiasVDDOut
Definition FastCCD.h:299
int FastCCDPollingPeriod
Definition FastCCD.h:209
int FastCCDVMgmt3v3
Definition FastCCD.h:331
int FastCCDBiasWriteV
Definition FastCCD.h:304
int FastCCDBiasPosV
Definition FastCCD.h:290
int FastCCDBiasPosTGW
Definition FastCCD.h:313
int FastCCDPwrMgmt2V3
Definition FastCCD.h:329
int FastCCDBiasSpare2
Definition FastCCD.h:303
int FastCCDBiasNegHW
Definition FastCCD.h:306
int FastCCDDroppedPck
Definition FastCCD.h:263
int FastCCDFirmwarePath
Definition FastCCD.h:230
int FastCCDLastFrame
Definition FastCCD.h:264
int FastCCDOverscanRows
Definition FastCCD.h:215
int FastCCDBadPck
Definition FastCCD.h:262
int FastCCDBiasNegSW
Definition FastCCD.h:289
int FastCCDCameraPowerMode
Definition FastCCD.h:239
int FastCCDIMgmt3v3
Definition FastCCD.h:343
int FastCCDClocks
Definition FastCCD.h:243
int FastCCDBiasNegV
Definition FastCCD.h:291
int FastCCDBiasPosSW
Definition FastCCD.h:288
int FastCCDFCRICUpload
Definition FastCCD.h:229
asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value)
Definition FastCCD.cpp:844
int FastCCDFPGAStatus
Definition FastCCD.h:246
int FastCCDIS3E3v3
Definition FastCCD.h:347
int FastCCDI62v5
Definition FastCCD.h:352
int FastCCDBiasBufBaseW
Definition FastCCD.h:321
int FastCCDClockPath
Definition FastCCD.h:232
cin_data_t cin_data
Definition FastCCD.h:394
int FastCCDIFp
Definition FastCCD.h:353
asynStatus connect(asynUser *pasynUser)
Connects driver to device; This method is called when the driver's pasynCommon->connect() function is...
Definition FastCCD.cpp:28
void report(FILE *fp, int details)
Report status of the driver.
Definition FastCCD.cpp:821
int FastCCDBiasSpare1W
Definition FastCCD.h:323
int FastCCDPwrBus12V
Definition FastCCD.h:328
int FastCCDTimingMode
Definition FastCCD.h:281
int FastCCDBaseSerialNum
Definition FastCCD.h:251
int FastCCDBiasPosRGW
Definition FastCCD.h:307
int FastCCDV61v0
Definition FastCCD.h:339
int FastCCDBiasNegRGW
Definition FastCCD.h:308
int FastCCDBiasNegVFW
Definition FastCCD.h:316
int FastCCDBaseBoardID
Definition FastCCD.h:250
int FastCCDBiasNEDGE
Definition FastCCD.h:296
int FastCCDVGen2v5
Definition FastCCD.h:337
int FastCCDBaseFPGAVersion
Definition FastCCD.h:252
int FastCCDVGen3v3
Definition FastCCD.h:336
void processImage(cin_data_frame_t *frame)
Definition FastCCD.cpp:158
~FastCCD()
Destructor.
Definition FastCCD.cpp:706
int FastCCDFOTest
Definition FastCCD.h:270
int FastCCDIEnet1v0
Definition FastCCD.h:346
int FastCCDDCMStatus
Definition FastCCD.h:247
asynStatus writeOctet(asynUser *pasynUser, const char *value, size_t nc, size_t *na)
Called when asyn clients call pasynOctet->write().
Definition FastCCD.cpp:1295
int FastCCDResetStats
Definition FastCCD.h:265
N-dimensional array class; each array has a set of dimensions, a data type, pointer to data,...
Definition NDArray.h:99