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 };
00157
00161 enum {
00162 DISABLED,
00163 ENABLED
00164 };
00165
00169 enum externalSignalFlag {
00170 GET_EXTERNAL_SIGNAL_FLAG,
00171 SIGNAL_OFF,
00172 GATE_IN_ACTIVE_HIGH,
00173 GATE_IN_ACTIVE_LOW,
00174 TRIGGER_IN_RISING_EDGE,
00175 TRIGGER_IN_FALLING_EDGE,
00176 RO_TRIGGER_IN_RISING_EDGE,
00177 RO_TRIGGER_IN_FALLING_EDGE,
00178 GATE_OUT_ACTIVE_HIGH,
00179 GATE_OUT_ACTIVE_LOW,
00180 TRIGGER_OUT_RISING_EDGE,
00181 TRIGGER_OUT_FALLING_EDGE,
00182 RO_TRIGGER_OUT_RISING_EDGE,
00183 RO_TRIGGER_OUT_FALLING_EDGE
00184 };
00185
00191 enum externalCommunicationMode{
00192 GET_EXTERNAL_COMMUNICATION_MODE,
00193 AUTO,
00194 TRIGGER_EXPOSURE,
00195 TRIGGER_READOUT,
00196 TRIGGER_COINCIDENCE_WITH_INTERNAL_ENABLE,
00197 GATE_FIX_NUMBER,
00198 GATE_FIX_DURATION,
00199 GATE_WITH_START_TRIGGER,
00200 GATE_COINCIDENCE_WITH_INTERNAL_ENABLE
00201 };
00205 enum idMode{
00206 MODULE_SERIAL_NUMBER,
00207 MODULE_FIRMWARE_VERSION,
00208 DETECTOR_SERIAL_NUMBER,
00209 DETECTOR_FIRMWARE_VERSION,
00210 DETECTOR_SOFTWARE_VERSION,
00211 THIS_SOFTWARE_VERSION
00212 };
00216 enum digitalTestMode {
00217 CHIP_TEST,
00218 MODULE_FIRMWARE_TEST,
00219 DETECTOR_FIRMWARE_TEST,
00220 DETECTOR_MEMORY_TEST,
00221 DETECTOR_BUS_TEST,
00222 DETECTOR_SOFTWARE_TEST
00223 };
00227 enum analogTestMode {
00228 CALIBRATION_PULSES,
00229 MY_ANALOG_TEST_MODE
00230 };
00231
00235 enum dacIndex {
00236 THRESHOLD,
00237 CALIBRATION_PULSE,
00238 TRIMBIT_SIZE,
00239 PREAMP,
00240 SHAPER1,
00241 SHAPER2,
00242 TEMPERATURE,
00243 HUMIDITY,
00244 DETECTOR_BIAS
00245 };
00246
00250 enum detectorSettings{
00251 GET_SETTINGS=-1,
00252 STANDARD,
00253 FAST,
00254 HIGHGAIN,
00255 UNDEFINED,
00256 UNINITIALIZED
00257 };
00262 enum channelRegisterBit {
00263 TRIMBIT_OFF,
00264 COMPARATOR_ENABLE=0x100,
00265 ANALOG_SIGNAL_ENABLE=0x200,
00266 CALIBRATION_ENABLE=0x300,
00267 };
00272 enum chipRegisterBit {
00273 ENABLE_ANALOG_OUTPUT=0x1,
00274 CHIP_OUTPUT_WIDTH=0x2
00275 };
00279 enum moduleRegisterBit {
00280 MY_MODULE_REGISTER_BIT,
00281 MODULE_OUTPUT_WIDTH
00282 };
00283
00287 enum timerIndex {
00288 FRAME_NUMBER,
00289 ACQUISITION_TIME,
00290 FRAME_PERIOD,
00291 DELAY_AFTER_TRIGGER,
00292 GATES_NUMBER,
00293 PROBES_NUMBER,
00294 CYCLES_NUMBER
00295 };
00296
00300 enum readOutFlags {
00301 GET_READOUT_FLAGS=-1,
00302 NORMAL_READOUT=0,
00303 STORE_IN_RAM=0x1,
00304 READ_HITS=0x2,
00305 ZERO_COMPRESSION=0x4,
00306 PUMP_PROBE_MODE=0x8,
00307 BACKGROUND_CORRECTIONS=0x1000
00308 };
00312 enum trimMode {
00313 NOISE_TRIMMING,
00314 BEAM_TRIMMING,
00315 IMPROVE_TRIMMING,
00316 FIXEDSETTINGS_TRIMMING,
00317 OFFLINE_TRIMMING
00318 };
00322 enum correctionFlags {
00323 DISCARD_BAD_CHANNELS,
00324 AVERAGE_NEIGHBOURS_FOR_BAD_CHANNELS,
00325 FLAT_FIELD_CORRECTION,
00326 RATE_CORRECTION,
00327 ANGULAR_CONVERSION,
00328 I0_NORMALIZATION
00329 };
00330
00339 enum {
00340
00341
00342 F_EXEC_COMMAND,
00343 F_GET_ERROR,
00345
00346 F_GET_DETECTOR_TYPE,
00347 F_SET_NUMBER_OF_MODULES,
00348 F_GET_MAX_NUMBER_OF_MODULES,
00349 F_SET_EXTERNAL_SIGNAL_FLAG,
00350 F_SET_EXTERNAL_COMMUNICATION_MODE,
00354
00355
00356 F_GET_ID,
00357 F_DIGITAL_TEST,
00358 F_ANALOG_TEST,
00359 F_ENABLE_ANALOG_OUT,
00360 F_CALIBRATION_PULSE,
00362
00363 F_SET_DAC,
00364 F_GET_ADC,
00365 F_WRITE_REGISTER,
00366 F_READ_REGISTER,
00367 F_WRITE_MEMORY,
00368 F_READ_MEMORY,
00371 F_SET_CHANNEL,
00372 F_GET_CHANNEL,
00373 F_SET_ALL_CHANNELS,
00375 F_SET_CHIP,
00376 F_GET_CHIP,
00377 F_SET_ALL_CHIPS,
00379 F_SET_MODULE,
00380 F_GET_MODULE,
00381 F_SET_ALL_MODULES,
00384 F_SET_SETTINGS,
00385 F_GET_THRESHOLD_ENERGY,
00386 F_SET_THRESHOLD_ENERGY,
00389
00390 F_START_ACQUISITION,
00391 F_STOP_ACQUISITION,
00392 F_START_READOUT,
00393 F_GET_RUN_STATUS,
00394 F_START_AND_READ_ALL,
00395 F_READ_FRAME,
00396 F_READ_ALL,
00398
00399 F_SET_TIMER,
00400 F_GET_TIME_LEFT,
00404 F_SET_DYNAMIC_RANGE,
00405 F_SET_READOUT_FLAGS,
00406 F_SET_ROI,
00408
00409 F_EXECUTE_TRIMMING,
00414 F_EXIT_SERVER
00416 };
00417
00418
00422 typedef struct {
00423 float center;
00424 float ecenter;
00425 float r_conversion;
00426 float er_conversion;
00427 float offset;
00428 float eoffset;
00429 float tilt;
00430 float etilt;
00431 } angleConversionConstant;
00432
00433
00434 #endif