00001 #ifndef SLS_DETECTOR_DEFS_H
00002 #define SLS_DETECTOR_DEFS_H
00003
00004 #include <stdint.h>
00017 #define MAX_STR_LENGTH 1000
00018
00020 #define GET_FLAG -1
00021
00027 typedef struct {
00028 int chan;
00029 int chip;
00030 int module;
00031 int64_t reg;
00032 } sls_detector_channel;
00033
00039 typedef struct {
00040 int chip;
00041 int module;
00042 int nchan;
00043 int reg;
00045 int *chanregs;
00047 } sls_detector_chip;
00048
00063 typedef struct {
00064 int module;
00065 int serialnumber;
00066 int nchan;
00067 int nchip;
00068 int ndac;
00069 int nadc;
00070 int reg;
00072 float *dacs;
00073 float *adcs;
00074 int *chipregs;
00076 int *chanregs;
00078 float gain;
00079 float offset;
00080 } sls_detector_module;
00081
00087 typedef struct {
00088 int xmin;
00089 int xmax;
00090 int ymin;
00091 int ymax;
00092 } ROI ;
00093
00098 typedef struct {
00099
00100 int len;
00101 int *iptr;
00102 } iarray ;
00103
00104
00108 enum detectorType {
00109 GET_DETECTOR_TYPE,
00110 GENERIC,
00111 MYTHEN,
00112 PILATUS,
00113 EIGER,
00114 GOTTHARD,
00115 AGIPD
00116 };
00117
00121 enum communicationProtocol{
00122 TCP,
00123 UDP
00124 };
00125
00126
00130 enum numberOf {
00131 MAXMODX,
00132 MAXMODY,
00133 NMODX,
00134 NMODY,
00135 NCHANSX,
00136 NCHANSY,
00137 NCHIPSX,
00138 NCHIPSY
00139 };
00140
00144 enum dimension {
00145 X=0,
00146 Y=1,
00147 Z=2
00148 };
00149
00153 enum {
00154 OK,
00155 FAIL,
00156 FINISHED
00157 };
00158
00162 enum {
00163 DISABLED,
00164 ENABLED
00165 };
00166
00170 enum externalSignalFlag {
00171 GET_EXTERNAL_SIGNAL_FLAG,
00172 SIGNAL_OFF,
00173 GATE_IN_ACTIVE_HIGH,
00174 GATE_IN_ACTIVE_LOW,
00175 TRIGGER_IN_RISING_EDGE,
00176 TRIGGER_IN_FALLING_EDGE,
00177 RO_TRIGGER_IN_RISING_EDGE,
00178 RO_TRIGGER_IN_FALLING_EDGE,
00179 GATE_OUT_ACTIVE_HIGH,
00180 GATE_OUT_ACTIVE_LOW,
00181 TRIGGER_OUT_RISING_EDGE,
00182 TRIGGER_OUT_FALLING_EDGE,
00183 RO_TRIGGER_OUT_RISING_EDGE,
00184 RO_TRIGGER_OUT_FALLING_EDGE
00185 };
00186
00192 enum externalCommunicationMode{
00193 GET_EXTERNAL_COMMUNICATION_MODE,
00194 AUTO,
00195 TRIGGER_EXPOSURE,
00196 TRIGGER_READOUT,
00197 TRIGGER_COINCIDENCE_WITH_INTERNAL_ENABLE,
00198 GATE_FIX_NUMBER,
00199 GATE_FIX_DURATION,
00200 GATE_WITH_START_TRIGGER,
00201 GATE_COINCIDENCE_WITH_INTERNAL_ENABLE
00202 };
00206 enum idMode{
00207 MODULE_SERIAL_NUMBER,
00208 MODULE_FIRMWARE_VERSION,
00209 DETECTOR_SERIAL_NUMBER,
00210 DETECTOR_FIRMWARE_VERSION,
00211 DETECTOR_SOFTWARE_VERSION,
00212 THIS_SOFTWARE_VERSION
00213 };
00217 enum digitalTestMode {
00218 CHIP_TEST,
00219 MODULE_FIRMWARE_TEST,
00220 DETECTOR_FIRMWARE_TEST,
00221 DETECTOR_MEMORY_TEST,
00222 DETECTOR_BUS_TEST,
00223 DETECTOR_SOFTWARE_TEST
00224 };
00228 enum analogTestMode {
00229 CALIBRATION_PULSES,
00230 MY_ANALOG_TEST_MODE
00231 };
00232
00236 enum dacIndex {
00237 THRESHOLD,
00238 CALIBRATION_PULSE,
00239 TRIMBIT_SIZE,
00240 PREAMP,
00241 SHAPER1,
00242 SHAPER2,
00243 TEMPERATURE,
00244 HUMIDITY,
00245 DETECTOR_BIAS
00246 };
00247
00251 enum detectorSettings{
00252 GET_SETTINGS=-1,
00253 STANDARD,
00254 FAST,
00255 HIGHGAIN,
00256 UNDEFINED,
00257 UNINITIALIZED
00258 };
00263 enum channelRegisterBit {
00264 TRIMBIT_OFF,
00265 COMPARATOR_ENABLE=0x100,
00266 ANALOG_SIGNAL_ENABLE=0x200,
00267 CALIBRATION_ENABLE=0x300,
00268 };
00273 enum chipRegisterBit {
00274 ENABLE_ANALOG_OUTPUT=0x1,
00275 CHIP_OUTPUT_WIDTH=0x2
00276 };
00280 enum moduleRegisterBit {
00281 MY_MODULE_REGISTER_BIT,
00282 MODULE_OUTPUT_WIDTH
00283 };
00284
00288 enum timerIndex {
00289 FRAME_NUMBER,
00290 ACQUISITION_TIME,
00291 FRAME_PERIOD,
00292 DELAY_AFTER_TRIGGER,
00293 GATES_NUMBER,
00294 PROBES_NUMBER,
00295 CYCLES_NUMBER
00296 };
00297
00301 enum speedVariable {
00302 CLOCK_DIVIDER,
00303 WAIT_STATES,
00304 SET_SIGNAL_LENGTH
00305 };
00306
00310 enum readOutFlags {
00311 GET_READOUT_FLAGS=-1,
00312 NORMAL_READOUT=0,
00313 STORE_IN_RAM=0x1,
00314 READ_HITS=0x2,
00315 ZERO_COMPRESSION=0x4,
00316 PUMP_PROBE_MODE=0x8,
00317 BACKGROUND_CORRECTIONS=0x1000
00318 };
00322 enum trimMode {
00323 NOISE_TRIMMING,
00324 BEAM_TRIMMING,
00325 IMPROVE_TRIMMING,
00326 FIXEDSETTINGS_TRIMMING,
00327 OFFLINE_TRIMMING
00328 };
00332 enum correctionFlags {
00333 DISCARD_BAD_CHANNELS,
00334 AVERAGE_NEIGHBOURS_FOR_BAD_CHANNELS,
00335 FLAT_FIELD_CORRECTION,
00336 RATE_CORRECTION,
00337 ANGULAR_CONVERSION,
00338 I0_NORMALIZATION
00339 };
00340
00349 enum {
00350
00351
00352 F_EXEC_COMMAND,
00353 F_GET_ERROR,
00355
00356 F_GET_DETECTOR_TYPE,
00357 F_SET_NUMBER_OF_MODULES,
00358 F_GET_MAX_NUMBER_OF_MODULES,
00359 F_SET_EXTERNAL_SIGNAL_FLAG,
00360 F_SET_EXTERNAL_COMMUNICATION_MODE,
00363
00364
00365 F_GET_ID,
00366 F_DIGITAL_TEST,
00367 F_ANALOG_TEST,
00368 F_ENABLE_ANALOG_OUT,
00369 F_CALIBRATION_PULSE,
00371
00372 F_SET_DAC,
00373 F_GET_ADC,
00374 F_WRITE_REGISTER,
00375 F_READ_REGISTER,
00376 F_WRITE_MEMORY,
00377 F_READ_MEMORY,
00380 F_SET_CHANNEL,
00381 F_GET_CHANNEL,
00382 F_SET_ALL_CHANNELS,
00384 F_SET_CHIP,
00385 F_GET_CHIP,
00386 F_SET_ALL_CHIPS,
00388 F_SET_MODULE,
00389 F_GET_MODULE,
00390 F_SET_ALL_MODULES,
00393 F_SET_SETTINGS,
00394 F_GET_THRESHOLD_ENERGY,
00395 F_SET_THRESHOLD_ENERGY,
00398
00399 F_START_ACQUISITION,
00400 F_STOP_ACQUISITION,
00401 F_START_READOUT,
00402 F_GET_RUN_STATUS,
00403 F_START_AND_READ_ALL,
00404 F_READ_FRAME,
00405 F_READ_ALL,
00407
00408 F_SET_TIMER,
00409 F_GET_TIME_LEFT,
00413 F_SET_DYNAMIC_RANGE,
00414 F_SET_READOUT_FLAGS,
00415 F_SET_ROI,
00417 F_SET_SPEED,
00419
00420 F_EXECUTE_TRIMMING,
00425 F_EXIT_SERVER
00427 };
00428
00429
00433 typedef struct {
00434 float center;
00435 float ecenter;
00436 float r_conversion;
00437 float er_conversion;
00438 float offset;
00439 float eoffset;
00440 float tilt;
00441 float etilt;
00442 } angleConversionConstant;
00443
00444
00445 #endif