mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-06 18:10:40 +02:00
commit
da2ce03e1d
@ -17,8 +17,6 @@ void init_enums(py::module &m) {
|
||||
xy.def_readwrite("y", &slsDetectorDefs::xy::y);
|
||||
|
||||
py::enum_<slsDetectorDefs::detectorType>(Defs, "detectorType")
|
||||
.value("GET_DETECTOR_TYPE",
|
||||
slsDetectorDefs::detectorType::GET_DETECTOR_TYPE)
|
||||
.value("GENERIC", slsDetectorDefs::detectorType::GENERIC)
|
||||
.value("EIGER", slsDetectorDefs::detectorType::EIGER)
|
||||
.value("GOTTHARD", slsDetectorDefs::detectorType::GOTTHARD)
|
||||
@ -40,8 +38,6 @@ void init_enums(py::module &m) {
|
||||
.export_values();
|
||||
|
||||
py::enum_<slsDetectorDefs::frameDiscardPolicy>(Defs, "frameDiscardPolicy")
|
||||
.value("GET_FRAME_DISCARD_POLICY",
|
||||
slsDetectorDefs::frameDiscardPolicy::GET_FRAME_DISCARD_POLICY)
|
||||
.value("NO_DISCARD", slsDetectorDefs::frameDiscardPolicy::NO_DISCARD)
|
||||
.value("DISCARD_EMPTY_FRAMES",
|
||||
slsDetectorDefs::frameDiscardPolicy::DISCARD_EMPTY_FRAMES)
|
||||
@ -52,16 +48,15 @@ void init_enums(py::module &m) {
|
||||
.export_values();
|
||||
|
||||
py::enum_<slsDetectorDefs::fileFormat>(Defs, "fileFormat")
|
||||
.value("GET_FILE_FORMAT", slsDetectorDefs::fileFormat::GET_FILE_FORMAT)
|
||||
.value("BINARY", slsDetectorDefs::fileFormat::BINARY)
|
||||
.value("HDF5", slsDetectorDefs::fileFormat::HDF5)
|
||||
.value("NUM_FILE_FORMATS",
|
||||
.value(" HDF5", slsDetectorDefs::fileFormat::HDF5)
|
||||
.value(" NUM_FILE_FORMATS",
|
||||
slsDetectorDefs::fileFormat::NUM_FILE_FORMATS)
|
||||
.export_values();
|
||||
|
||||
py::enum_<slsDetectorDefs::dimension>(Defs, "dimension")
|
||||
.value("X", slsDetectorDefs::dimension::X)
|
||||
.value("Y", slsDetectorDefs::dimension::Y)
|
||||
.value(" Y", slsDetectorDefs::dimension::Y)
|
||||
.export_values();
|
||||
|
||||
py::enum_<slsDetectorDefs::externalSignalFlag>(Defs, "externalSignalFlag")
|
||||
@ -76,7 +71,6 @@ void init_enums(py::module &m) {
|
||||
.export_values();
|
||||
|
||||
py::enum_<slsDetectorDefs::timingMode>(Defs, "timingMode")
|
||||
.value("GET_TIMING_MODE", slsDetectorDefs::timingMode::GET_TIMING_MODE)
|
||||
.value("AUTO_TIMING", slsDetectorDefs::timingMode::AUTO_TIMING)
|
||||
.value("TRIGGER_EXPOSURE",
|
||||
slsDetectorDefs::timingMode::TRIGGER_EXPOSURE)
|
||||
@ -206,7 +200,6 @@ void init_enums(py::module &m) {
|
||||
.export_values();
|
||||
|
||||
py::enum_<slsDetectorDefs::detectorSettings>(Defs, "detectorSettings")
|
||||
.value("GET_SETTINGS", slsDetectorDefs::detectorSettings::GET_SETTINGS)
|
||||
.value("STANDARD", slsDetectorDefs::detectorSettings::STANDARD)
|
||||
.value("FAST", slsDetectorDefs::detectorSettings::FAST)
|
||||
.value("HIGHGAIN", slsDetectorDefs::detectorSettings::HIGHGAIN)
|
||||
@ -259,34 +252,24 @@ void init_enums(py::module &m) {
|
||||
.value(" QUARTER_SPEED", slsDetectorDefs::speedLevel::QUARTER_SPEED)
|
||||
.export_values();
|
||||
|
||||
py::enum_<slsDetectorDefs::portType>(Defs, "portType")
|
||||
.value("CONTROL_PORT", slsDetectorDefs::portType::CONTROL_PORT)
|
||||
.value("STOP_PORT", slsDetectorDefs::portType::STOP_PORT)
|
||||
.value("DATA_PORT", slsDetectorDefs::portType::DATA_PORT)
|
||||
.export_values();
|
||||
|
||||
py::enum_<slsDetectorDefs::masterFlags>(Defs, "masterFlags")
|
||||
.value("GET_MASTER", slsDetectorDefs::masterFlags::GET_MASTER)
|
||||
.value("NO_MASTER", slsDetectorDefs::masterFlags::NO_MASTER)
|
||||
.value("IS_MASTER", slsDetectorDefs::masterFlags::IS_MASTER)
|
||||
.value("IS_SLAVE", slsDetectorDefs::masterFlags::IS_SLAVE)
|
||||
.value(" IS_MASTER", slsDetectorDefs::masterFlags::IS_MASTER)
|
||||
.value(" IS_SLAVE", slsDetectorDefs::masterFlags::IS_SLAVE)
|
||||
.export_values();
|
||||
|
||||
py::enum_<slsDetectorDefs::frameModeType>(Defs, "frameModeType")
|
||||
.value("GET_FRAME_MODE", slsDetectorDefs::frameModeType::GET_FRAME_MODE)
|
||||
.value("PEDESTAL", slsDetectorDefs::frameModeType::PEDESTAL)
|
||||
.value("NEW_PEDESTAL", slsDetectorDefs::frameModeType::NEW_PEDESTAL)
|
||||
.value("FLATFIELD", slsDetectorDefs::frameModeType::FLATFIELD)
|
||||
.value("NEW_FLATFIELD", slsDetectorDefs::frameModeType::NEW_FLATFIELD)
|
||||
.value(" NEW_PEDESTAL", slsDetectorDefs::frameModeType::NEW_PEDESTAL)
|
||||
.value(" FLATFIELD", slsDetectorDefs::frameModeType::FLATFIELD)
|
||||
.value(" NEW_FLATFIELD", slsDetectorDefs::frameModeType::NEW_FLATFIELD)
|
||||
.export_values();
|
||||
|
||||
py::enum_<slsDetectorDefs::detectorModeType>(Defs, "detectorModeType")
|
||||
.value("GET_DETECTOR_MODE",
|
||||
slsDetectorDefs::detectorModeType::GET_DETECTOR_MODE)
|
||||
.value("COUNTING", slsDetectorDefs::detectorModeType::COUNTING)
|
||||
.value("INTERPOLATING",
|
||||
.value(" INTERPOLATING",
|
||||
slsDetectorDefs::detectorModeType::INTERPOLATING)
|
||||
.value("ANALOG", slsDetectorDefs::detectorModeType::ANALOG)
|
||||
.value(" ANALOG", slsDetectorDefs::detectorModeType::ANALOG)
|
||||
.export_values();
|
||||
|
||||
py::enum_<slsDetectorDefs::burstMode>(Defs, "burstMode")
|
||||
|
Binary file not shown.
Binary file not shown.
@ -1112,8 +1112,7 @@ enum detectorSettings setSettings(enum detectorSettings sett) {
|
||||
if (sett == UNINITIALIZED) {
|
||||
return thisSettings;
|
||||
}
|
||||
if (sett != GET_SETTINGS)
|
||||
thisSettings = sett;
|
||||
thisSettings = sett;
|
||||
LOG(logINFO, ("Settings: %d\n", thisSettings));
|
||||
return thisSettings;
|
||||
}
|
||||
@ -1355,7 +1354,7 @@ enum timingMode getTiming() {
|
||||
return GATED;
|
||||
default:
|
||||
LOG(logERROR, ("Unknown trigger mode found %d\n", eiger_triggermode));
|
||||
return GET_TIMING_MODE;
|
||||
return GET_FLAG;
|
||||
}
|
||||
}
|
||||
|
||||
|
Binary file not shown.
@ -1044,34 +1044,31 @@ enum detectorSettings setSettings(enum detectorSettings sett) {
|
||||
// set settings
|
||||
uint32_t addr = ASIC_CONFIG_REG;
|
||||
uint32_t mask = ASIC_CONFIG_GAIN_MSK;
|
||||
if (sett != GET_SETTINGS) {
|
||||
switch (sett) {
|
||||
case DYNAMICGAIN:
|
||||
bus_w(addr, bus_r(addr) & ~mask);
|
||||
bus_w(addr, bus_r(addr) | ASIC_CONFIG_DYNAMIC_GAIN_VAL);
|
||||
LOG(logINFO, ("Set settings - Dyanmic Gain, val: 0x%x\n",
|
||||
bus_r(addr) & mask));
|
||||
break;
|
||||
case FIXGAIN1:
|
||||
bus_w(addr, bus_r(addr) & ~mask);
|
||||
bus_w(addr, bus_r(addr) | ASIC_CONFIG_FIX_GAIN_1_VAL);
|
||||
LOG(logINFO,
|
||||
("Set settings - Fix Gain 1, val: 0x%x\n", bus_r(addr) & mask));
|
||||
break;
|
||||
case FIXGAIN2:
|
||||
bus_w(addr, bus_r(addr) & ~mask);
|
||||
bus_w(addr, bus_r(addr) | ASIC_CONFIG_FIX_GAIN_2_VAL);
|
||||
LOG(logINFO,
|
||||
("Set settings - Fix Gain 2, val: 0x%x\n", bus_r(addr) & mask));
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR,
|
||||
("This settings is not defined for this detector %d\n",
|
||||
(int)sett));
|
||||
return -1;
|
||||
}
|
||||
thisSettings = sett;
|
||||
switch (sett) {
|
||||
case DYNAMICGAIN:
|
||||
bus_w(addr, bus_r(addr) & ~mask);
|
||||
bus_w(addr, bus_r(addr) | ASIC_CONFIG_DYNAMIC_GAIN_VAL);
|
||||
LOG(logINFO,
|
||||
("Set settings - Dyanmic Gain, val: 0x%x\n", bus_r(addr) & mask));
|
||||
break;
|
||||
case FIXGAIN1:
|
||||
bus_w(addr, bus_r(addr) & ~mask);
|
||||
bus_w(addr, bus_r(addr) | ASIC_CONFIG_FIX_GAIN_1_VAL);
|
||||
LOG(logINFO,
|
||||
("Set settings - Fix Gain 1, val: 0x%x\n", bus_r(addr) & mask));
|
||||
break;
|
||||
case FIXGAIN2:
|
||||
bus_w(addr, bus_r(addr) & ~mask);
|
||||
bus_w(addr, bus_r(addr) | ASIC_CONFIG_FIX_GAIN_2_VAL);
|
||||
LOG(logINFO,
|
||||
("Set settings - Fix Gain 2, val: 0x%x\n", bus_r(addr) & mask));
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR,
|
||||
("This settings is not defined for this detector %d\n", (int)sett));
|
||||
return -1;
|
||||
}
|
||||
thisSettings = sett;
|
||||
|
||||
return getSettings();
|
||||
}
|
||||
|
Binary file not shown.
@ -950,44 +950,41 @@ enum detectorSettings setSettings(enum detectorSettings sett) {
|
||||
return thisSettings;
|
||||
|
||||
// set settings
|
||||
if (sett != GET_SETTINGS) {
|
||||
u_int32_t addr = GAIN_REG;
|
||||
u_int32_t addr = GAIN_REG;
|
||||
|
||||
// find conf gain value
|
||||
uint32_t confgain = 0x0;
|
||||
switch (sett) {
|
||||
case DYNAMICGAIN:
|
||||
LOG(logINFO, ("Set settings - Dyanmic Gain\n"));
|
||||
confgain = GAIN_CONFGAIN_DYNMC_GAIN_VAL;
|
||||
break;
|
||||
case HIGHGAIN:
|
||||
LOG(logINFO, ("Set settings - High Gain\n"));
|
||||
confgain = GAIN_CONFGAIN_HGH_GAIN_VAL;
|
||||
break;
|
||||
case LOWGAIN:
|
||||
LOG(logINFO, ("Set settings - Low Gain\n"));
|
||||
confgain = GAIN_CONFGAIN_LW_GAIN_VAL;
|
||||
break;
|
||||
case MEDIUMGAIN:
|
||||
LOG(logINFO, ("Set settings - Medium Gain\n"));
|
||||
confgain = GAIN_CONFGAIN_MDM_GAIN_VAL;
|
||||
break;
|
||||
case VERYHIGHGAIN:
|
||||
LOG(logINFO, ("Set settings - Very High Gain\n"));
|
||||
confgain = GAIN_CONFGAIN_VRY_HGH_GAIN_VAL;
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR,
|
||||
("This settings is not defined for this detector %d\n",
|
||||
(int)sett));
|
||||
return -1;
|
||||
}
|
||||
// set conf gain
|
||||
bus_w(addr, bus_r(addr) & ~GAIN_CONFGAIN_MSK);
|
||||
bus_w(addr, bus_r(addr) | confgain);
|
||||
LOG(logINFO, ("\tGain Reg: 0x%x\n", bus_r(addr)));
|
||||
thisSettings = sett;
|
||||
// find conf gain value
|
||||
uint32_t confgain = 0x0;
|
||||
switch (sett) {
|
||||
case DYNAMICGAIN:
|
||||
LOG(logINFO, ("Set settings - Dyanmic Gain\n"));
|
||||
confgain = GAIN_CONFGAIN_DYNMC_GAIN_VAL;
|
||||
break;
|
||||
case HIGHGAIN:
|
||||
LOG(logINFO, ("Set settings - High Gain\n"));
|
||||
confgain = GAIN_CONFGAIN_HGH_GAIN_VAL;
|
||||
break;
|
||||
case LOWGAIN:
|
||||
LOG(logINFO, ("Set settings - Low Gain\n"));
|
||||
confgain = GAIN_CONFGAIN_LW_GAIN_VAL;
|
||||
break;
|
||||
case MEDIUMGAIN:
|
||||
LOG(logINFO, ("Set settings - Medium Gain\n"));
|
||||
confgain = GAIN_CONFGAIN_MDM_GAIN_VAL;
|
||||
break;
|
||||
case VERYHIGHGAIN:
|
||||
LOG(logINFO, ("Set settings - Very High Gain\n"));
|
||||
confgain = GAIN_CONFGAIN_VRY_HGH_GAIN_VAL;
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR,
|
||||
("This settings is not defined for this detector %d\n", (int)sett));
|
||||
return -1;
|
||||
}
|
||||
// set conf gain
|
||||
bus_w(addr, bus_r(addr) & ~GAIN_CONFGAIN_MSK);
|
||||
bus_w(addr, bus_r(addr) | confgain);
|
||||
LOG(logINFO, ("\tGain Reg: 0x%x\n", bus_r(addr)));
|
||||
thisSettings = sett;
|
||||
|
||||
return getSettings();
|
||||
}
|
||||
|
Binary file not shown.
@ -753,53 +753,50 @@ enum detectorSettings setSettings(enum detectorSettings sett) {
|
||||
return thisSettings;
|
||||
|
||||
// set settings
|
||||
if (sett != GET_SETTINGS) {
|
||||
switch (sett) {
|
||||
case DYNAMICGAIN:
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) & ~DAQ_SETTINGS_MSK);
|
||||
LOG(logINFO, ("Set settings - Dyanmic Gain, DAQ Reg: 0x%x\n",
|
||||
bus_r(DAQ_REG)));
|
||||
break;
|
||||
case DYNAMICHG0:
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) & ~DAQ_SETTINGS_MSK);
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) | DAQ_FIX_GAIN_HIGHGAIN_VAL);
|
||||
LOG(logINFO, ("Set settings - Dyanmic High Gain 0, DAQ Reg: 0x%x\n",
|
||||
bus_r(DAQ_REG)));
|
||||
break;
|
||||
case FIXGAIN1:
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) & ~DAQ_SETTINGS_MSK);
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) | DAQ_FIX_GAIN_STG_1_VAL);
|
||||
LOG(logINFO,
|
||||
("Set settings - Fix Gain 1, DAQ Reg: 0x%x\n", bus_r(DAQ_REG)));
|
||||
break;
|
||||
case FIXGAIN2:
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) & ~DAQ_SETTINGS_MSK);
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) | DAQ_FIX_GAIN_STG_2_VAL);
|
||||
LOG(logINFO,
|
||||
("Set settings - Fix Gain 2, DAQ Reg: 0x%x\n", bus_r(DAQ_REG)));
|
||||
break;
|
||||
case FORCESWITCHG1:
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) & ~DAQ_SETTINGS_MSK);
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) | DAQ_FRCE_GAIN_STG_1_VAL);
|
||||
LOG(logINFO, ("Set settings - Force Switch Gain 1, DAQ Reg: 0x%x\n",
|
||||
bus_r(DAQ_REG)));
|
||||
break;
|
||||
case FORCESWITCHG2:
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) & ~DAQ_SETTINGS_MSK);
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) | DAQ_FRCE_GAIN_STG_2_VAL);
|
||||
LOG(logINFO, ("Set settings - Force Switch Gain 2, DAQ Reg: 0x%x\n",
|
||||
bus_r(DAQ_REG)));
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR,
|
||||
("This settings is not defined for this detector %d\n",
|
||||
(int)sett));
|
||||
return -1;
|
||||
}
|
||||
|
||||
thisSettings = sett;
|
||||
switch (sett) {
|
||||
case DYNAMICGAIN:
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) & ~DAQ_SETTINGS_MSK);
|
||||
LOG(logINFO,
|
||||
("Set settings - Dyanmic Gain, DAQ Reg: 0x%x\n", bus_r(DAQ_REG)));
|
||||
break;
|
||||
case DYNAMICHG0:
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) & ~DAQ_SETTINGS_MSK);
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) | DAQ_FIX_GAIN_HIGHGAIN_VAL);
|
||||
LOG(logINFO, ("Set settings - Dyanmic High Gain 0, DAQ Reg: 0x%x\n",
|
||||
bus_r(DAQ_REG)));
|
||||
break;
|
||||
case FIXGAIN1:
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) & ~DAQ_SETTINGS_MSK);
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) | DAQ_FIX_GAIN_STG_1_VAL);
|
||||
LOG(logINFO,
|
||||
("Set settings - Fix Gain 1, DAQ Reg: 0x%x\n", bus_r(DAQ_REG)));
|
||||
break;
|
||||
case FIXGAIN2:
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) & ~DAQ_SETTINGS_MSK);
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) | DAQ_FIX_GAIN_STG_2_VAL);
|
||||
LOG(logINFO,
|
||||
("Set settings - Fix Gain 2, DAQ Reg: 0x%x\n", bus_r(DAQ_REG)));
|
||||
break;
|
||||
case FORCESWITCHG1:
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) & ~DAQ_SETTINGS_MSK);
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) | DAQ_FRCE_GAIN_STG_1_VAL);
|
||||
LOG(logINFO, ("Set settings - Force Switch Gain 1, DAQ Reg: 0x%x\n",
|
||||
bus_r(DAQ_REG)));
|
||||
break;
|
||||
case FORCESWITCHG2:
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) & ~DAQ_SETTINGS_MSK);
|
||||
bus_w(DAQ_REG, bus_r(DAQ_REG) | DAQ_FRCE_GAIN_STG_2_VAL);
|
||||
LOG(logINFO, ("Set settings - Force Switch Gain 2, DAQ Reg: 0x%x\n",
|
||||
bus_r(DAQ_REG)));
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR,
|
||||
("This settings is not defined for this detector %d\n", (int)sett));
|
||||
return -1;
|
||||
}
|
||||
|
||||
thisSettings = sett;
|
||||
|
||||
return getSettings();
|
||||
}
|
||||
|
||||
|
Binary file not shown.
@ -909,49 +909,46 @@ enum detectorSettings setSettings(enum detectorSettings sett) {
|
||||
return thisSettings;
|
||||
|
||||
// set settings
|
||||
if (sett != GET_SETTINGS) {
|
||||
switch (sett) {
|
||||
case G1_HIGHGAIN:
|
||||
LOG(logINFO, ("Set settings - G1_HIGHGAIN\n"));
|
||||
setPatternMask(G1_HIGHGAIN_PATMASK);
|
||||
break;
|
||||
case G1_LOWGAIN:
|
||||
LOG(logINFO, ("Set settings - G1_LOWGAIN\n"));
|
||||
setPatternMask(G1_LOWGAIN_PATMASK);
|
||||
break;
|
||||
case G2_HIGHCAP_HIGHGAIN:
|
||||
LOG(logINFO, ("Set settings - G2_HIGHCAP_HIGHGAIN\n"));
|
||||
setPatternMask(G2_HIGHCAP_HIGHGAIN_PATMASK);
|
||||
break;
|
||||
case G2_HIGHCAP_LOWGAIN:
|
||||
LOG(logINFO, ("Set settings - G2_HIGHCAP_LOWGAIN\n"));
|
||||
setPatternMask(G2_HIGHCAP_LOWGAIN_PATMASK);
|
||||
break;
|
||||
case G2_LOWCAP_HIGHGAIN:
|
||||
LOG(logINFO, ("Set settings - G2_LOWCAP_HIGHGAIN\n"));
|
||||
setPatternMask(G2_LOWCAP_HIGHGAIN_PATMASK);
|
||||
break;
|
||||
case G2_LOWCAP_LOWGAIN:
|
||||
LOG(logINFO, ("Set settings - G2_LOWCAP_LOWGAIN\n"));
|
||||
setPatternMask(G2_LOWCAP_LOWGAIN_PATMASK);
|
||||
break;
|
||||
case G4_HIGHGAIN:
|
||||
LOG(logINFO, ("Set settings - G4_HIGHGAIN\n"));
|
||||
setPatternMask(G4_HIGHGAIN_PATMASK);
|
||||
break;
|
||||
case G4_LOWGAIN:
|
||||
LOG(logINFO, ("Set settings - G4_LOWGAIN\n"));
|
||||
setPatternMask(G4_LOWGAIN_PATMASK);
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR,
|
||||
("This settings is not defined for this detector %d\n",
|
||||
(int)sett));
|
||||
return -1;
|
||||
}
|
||||
setPatternBitMask(DEFAULT_PATSETBIT);
|
||||
thisSettings = sett;
|
||||
switch (sett) {
|
||||
case G1_HIGHGAIN:
|
||||
LOG(logINFO, ("Set settings - G1_HIGHGAIN\n"));
|
||||
setPatternMask(G1_HIGHGAIN_PATMASK);
|
||||
break;
|
||||
case G1_LOWGAIN:
|
||||
LOG(logINFO, ("Set settings - G1_LOWGAIN\n"));
|
||||
setPatternMask(G1_LOWGAIN_PATMASK);
|
||||
break;
|
||||
case G2_HIGHCAP_HIGHGAIN:
|
||||
LOG(logINFO, ("Set settings - G2_HIGHCAP_HIGHGAIN\n"));
|
||||
setPatternMask(G2_HIGHCAP_HIGHGAIN_PATMASK);
|
||||
break;
|
||||
case G2_HIGHCAP_LOWGAIN:
|
||||
LOG(logINFO, ("Set settings - G2_HIGHCAP_LOWGAIN\n"));
|
||||
setPatternMask(G2_HIGHCAP_LOWGAIN_PATMASK);
|
||||
break;
|
||||
case G2_LOWCAP_HIGHGAIN:
|
||||
LOG(logINFO, ("Set settings - G2_LOWCAP_HIGHGAIN\n"));
|
||||
setPatternMask(G2_LOWCAP_HIGHGAIN_PATMASK);
|
||||
break;
|
||||
case G2_LOWCAP_LOWGAIN:
|
||||
LOG(logINFO, ("Set settings - G2_LOWCAP_LOWGAIN\n"));
|
||||
setPatternMask(G2_LOWCAP_LOWGAIN_PATMASK);
|
||||
break;
|
||||
case G4_HIGHGAIN:
|
||||
LOG(logINFO, ("Set settings - G4_HIGHGAIN\n"));
|
||||
setPatternMask(G4_HIGHGAIN_PATMASK);
|
||||
break;
|
||||
case G4_LOWGAIN:
|
||||
LOG(logINFO, ("Set settings - G4_LOWGAIN\n"));
|
||||
setPatternMask(G4_LOWGAIN_PATMASK);
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR,
|
||||
("This settings is not defined for this detector %d\n", (int)sett));
|
||||
return -1;
|
||||
}
|
||||
setPatternBitMask(DEFAULT_PATSETBIT);
|
||||
thisSettings = sett;
|
||||
|
||||
return getSettings();
|
||||
}
|
||||
|
Binary file not shown.
@ -1157,37 +1157,35 @@ int setHighVoltage(int val) {
|
||||
|
||||
/* parameters - timing */
|
||||
void setTiming(enum timingMode arg) {
|
||||
if (arg != GET_TIMING_MODE) {
|
||||
switch (arg) {
|
||||
case AUTO_TIMING:
|
||||
LOG(logINFO, ("Set Timing: Auto (Int. Trigger, Int. Gating)\n"));
|
||||
bus_w(EXT_SIGNAL_REG, bus_r(EXT_SIGNAL_REG) & ~EXT_SIGNAL_MSK);
|
||||
bus_w(ASIC_EXP_STATUS_REG,
|
||||
bus_r(ASIC_EXP_STATUS_REG) & ~ASIC_EXP_STAT_GATE_SRC_EXT_MSK);
|
||||
break;
|
||||
case TRIGGER_EXPOSURE:
|
||||
LOG(logINFO, ("Set Timing: Trigger (Ext. Trigger, Int. Gating)\n"));
|
||||
bus_w(EXT_SIGNAL_REG, bus_r(EXT_SIGNAL_REG) | EXT_SIGNAL_MSK);
|
||||
bus_w(ASIC_EXP_STATUS_REG,
|
||||
bus_r(ASIC_EXP_STATUS_REG) & ~ASIC_EXP_STAT_GATE_SRC_EXT_MSK);
|
||||
break;
|
||||
case GATED:
|
||||
LOG(logINFO, ("Set Timing: Gating (Int. Trigger, Ext. Gating)\n"));
|
||||
bus_w(EXT_SIGNAL_REG, bus_r(EXT_SIGNAL_REG) & ~EXT_SIGNAL_MSK);
|
||||
bus_w(ASIC_EXP_STATUS_REG,
|
||||
bus_r(ASIC_EXP_STATUS_REG) | ASIC_EXP_STAT_GATE_SRC_EXT_MSK);
|
||||
break;
|
||||
case TRIGGER_GATED:
|
||||
LOG(logINFO,
|
||||
("Set Timing: Trigger_Gating (Ext. Trigger, Ext. Gating)\n"));
|
||||
bus_w(EXT_SIGNAL_REG, bus_r(EXT_SIGNAL_REG) | EXT_SIGNAL_MSK);
|
||||
bus_w(ASIC_EXP_STATUS_REG,
|
||||
bus_r(ASIC_EXP_STATUS_REG) | ASIC_EXP_STAT_GATE_SRC_EXT_MSK);
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR, ("Unknown timing mode %d\n", arg));
|
||||
return;
|
||||
}
|
||||
switch (arg) {
|
||||
case AUTO_TIMING:
|
||||
LOG(logINFO, ("Set Timing: Auto (Int. Trigger, Int. Gating)\n"));
|
||||
bus_w(EXT_SIGNAL_REG, bus_r(EXT_SIGNAL_REG) & ~EXT_SIGNAL_MSK);
|
||||
bus_w(ASIC_EXP_STATUS_REG,
|
||||
bus_r(ASIC_EXP_STATUS_REG) & ~ASIC_EXP_STAT_GATE_SRC_EXT_MSK);
|
||||
break;
|
||||
case TRIGGER_EXPOSURE:
|
||||
LOG(logINFO, ("Set Timing: Trigger (Ext. Trigger, Int. Gating)\n"));
|
||||
bus_w(EXT_SIGNAL_REG, bus_r(EXT_SIGNAL_REG) | EXT_SIGNAL_MSK);
|
||||
bus_w(ASIC_EXP_STATUS_REG,
|
||||
bus_r(ASIC_EXP_STATUS_REG) & ~ASIC_EXP_STAT_GATE_SRC_EXT_MSK);
|
||||
break;
|
||||
case GATED:
|
||||
LOG(logINFO, ("Set Timing: Gating (Int. Trigger, Ext. Gating)\n"));
|
||||
bus_w(EXT_SIGNAL_REG, bus_r(EXT_SIGNAL_REG) & ~EXT_SIGNAL_MSK);
|
||||
bus_w(ASIC_EXP_STATUS_REG,
|
||||
bus_r(ASIC_EXP_STATUS_REG) | ASIC_EXP_STAT_GATE_SRC_EXT_MSK);
|
||||
break;
|
||||
case TRIGGER_GATED:
|
||||
LOG(logINFO,
|
||||
("Set Timing: Trigger_Gating (Ext. Trigger, Ext. Gating)\n"));
|
||||
bus_w(EXT_SIGNAL_REG, bus_r(EXT_SIGNAL_REG) | EXT_SIGNAL_MSK);
|
||||
bus_w(ASIC_EXP_STATUS_REG,
|
||||
bus_r(ASIC_EXP_STATUS_REG) | ASIC_EXP_STAT_GATE_SRC_EXT_MSK);
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR, ("Unknown timing mode %d\n", arg));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -361,7 +361,7 @@ void modeNotImplemented(char *modename, int mode) {
|
||||
}
|
||||
|
||||
void validate(int arg, int retval, char *modename, enum numberMode nummode) {
|
||||
if (ret == OK && arg != -1 && retval != arg) {
|
||||
if (ret == OK && arg != GET_FLAG && retval != arg) {
|
||||
ret = FAIL;
|
||||
if (nummode == HEX)
|
||||
sprintf(mess, "Could not %s. Set 0x%x, but read 0x%x\n", modename,
|
||||
@ -375,7 +375,7 @@ void validate(int arg, int retval, char *modename, enum numberMode nummode) {
|
||||
|
||||
void validate64(int64_t arg, int64_t retval, char *modename,
|
||||
enum numberMode nummode) {
|
||||
if (ret == OK && arg != -1 && retval != arg) {
|
||||
if (ret == OK && arg != GET_FLAG && retval != arg) {
|
||||
ret = FAIL;
|
||||
if (nummode == HEX)
|
||||
sprintf(mess, "Could not %s. Set 0x%llx, but read 0x%llx\n",
|
||||
@ -574,15 +574,15 @@ int set_external_signal_flag(int file_des) {
|
||||
int set_timing_mode(int file_des) {
|
||||
ret = OK;
|
||||
memset(mess, 0, sizeof(mess));
|
||||
enum timingMode arg = GET_TIMING_MODE;
|
||||
enum timingMode retval = GET_TIMING_MODE;
|
||||
enum timingMode arg = AUTO_TIMING;
|
||||
enum timingMode retval = AUTO_TIMING;
|
||||
|
||||
if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0)
|
||||
return printSocketReadError();
|
||||
LOG(logDEBUG1, ("Setting external communication mode to %d\n", arg));
|
||||
|
||||
// set
|
||||
if ((arg != GET_TIMING_MODE) && (Server_VerifyLock() == OK)) {
|
||||
if (((int)arg != GET_FLAG) && (Server_VerifyLock() == OK)) {
|
||||
switch (arg) {
|
||||
case AUTO_TIMING:
|
||||
case TRIGGER_EXPOSURE:
|
||||
@ -998,7 +998,7 @@ int set_dac(int file_des) {
|
||||
(mV ? "mV" : "dac units")));
|
||||
|
||||
// set & get
|
||||
if ((val == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((val == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
switch (ind) {
|
||||
|
||||
// adc vpp
|
||||
@ -1072,7 +1072,7 @@ int set_dac(int file_des) {
|
||||
case V_POWER_C:
|
||||
case V_POWER_D:
|
||||
case V_POWER_IO:
|
||||
if (val != -1) {
|
||||
if (val != GET_FLAG) {
|
||||
if (!mV) {
|
||||
ret = FAIL;
|
||||
sprintf(mess,
|
||||
@ -1126,7 +1126,8 @@ int set_dac(int file_des) {
|
||||
}
|
||||
retval = getVchip();
|
||||
LOG(logDEBUG1, ("Vchip: %d\n", retval));
|
||||
if (ret == OK && val != -1 && val != -100 && retval != val) {
|
||||
if (ret == OK && val != GET_FLAG && val != -100 &&
|
||||
retval != val) {
|
||||
ret = FAIL;
|
||||
sprintf(mess, "Could not set vchip. Set %d, but read %d\n",
|
||||
val, retval);
|
||||
@ -1170,9 +1171,9 @@ int set_dac(int file_des) {
|
||||
LOG(logERROR, (mess));
|
||||
} else {
|
||||
#if defined(CHIPTESTBOARDD) || defined(MOENCHD)
|
||||
if ((val != -1 && mV &&
|
||||
if ((val != GET_FLAG && mV &&
|
||||
checkVLimitCompliant(val) == FAIL) ||
|
||||
(val != -1 && !mV &&
|
||||
(val != GET_FLAG && !mV &&
|
||||
checkVLimitDacCompliant(val) == FAIL)) {
|
||||
ret = FAIL;
|
||||
sprintf(mess,
|
||||
@ -1187,7 +1188,7 @@ int set_dac(int file_des) {
|
||||
retval = getDAC(serverDacIndex, mV);
|
||||
}
|
||||
#ifdef EIGERD
|
||||
if (val != -1) {
|
||||
if (val != GET_FLAG) {
|
||||
// changing dac changes settings to undefined
|
||||
switch (serverDacIndex) {
|
||||
case E_VCMP_LL:
|
||||
@ -1208,7 +1209,7 @@ int set_dac(int file_des) {
|
||||
#endif
|
||||
// check
|
||||
if (ret == OK) {
|
||||
if ((abs(retval - val) <= 5) || val == -1) {
|
||||
if ((abs(retval - val) <= 5) || val == GET_FLAG) {
|
||||
ret = OK;
|
||||
} else {
|
||||
ret = FAIL;
|
||||
@ -1501,7 +1502,6 @@ int set_module(int file_des) {
|
||||
case VERYHIGHGAIN:
|
||||
case VERYLOWGAIN:
|
||||
#elif JUNGFRAUD
|
||||
case GET_SETTINGS:
|
||||
case DYNAMICGAIN:
|
||||
case DYNAMICHG0:
|
||||
case FIXGAIN1:
|
||||
@ -1509,14 +1509,11 @@ int set_module(int file_des) {
|
||||
case FORCESWITCHG1:
|
||||
case FORCESWITCHG2:
|
||||
#elif GOTTHARDD
|
||||
case GET_SETTINGS:
|
||||
case DYNAMICGAIN:
|
||||
case HIGHGAIN:
|
||||
case LOWGAIN:
|
||||
case MEDIUMGAIN:
|
||||
case VERYHIGHGAIN:
|
||||
#elif MYTHEN3D
|
||||
case GET_SETTINGS:
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
@ -1541,8 +1538,8 @@ int set_module(int file_des) {
|
||||
int set_settings(int file_des) {
|
||||
ret = OK;
|
||||
memset(mess, 0, sizeof(mess));
|
||||
enum detectorSettings isett = GET_SETTINGS;
|
||||
enum detectorSettings retval = GET_SETTINGS;
|
||||
enum detectorSettings isett = STANDARD;
|
||||
enum detectorSettings retval = STANDARD;
|
||||
|
||||
if (receiveData(file_des, &isett, sizeof(isett), INT32) < 0)
|
||||
return printSocketReadError();
|
||||
@ -1553,58 +1550,62 @@ int set_settings(int file_des) {
|
||||
LOG(logDEBUG1, ("Setting settings %d\n", isett));
|
||||
|
||||
// set & get
|
||||
if ((isett == GET_SETTINGS) || (Server_VerifyLock() == OK)) {
|
||||
if (((int)isett == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
|
||||
// check index
|
||||
switch (isett) {
|
||||
case GET_SETTINGS:
|
||||
if ((int)isett != GET_FLAG) {
|
||||
// check index
|
||||
switch (isett) {
|
||||
#ifdef JUNGFRAUD
|
||||
case DYNAMICGAIN:
|
||||
case DYNAMICHG0:
|
||||
case FIXGAIN1:
|
||||
case FIXGAIN2:
|
||||
case FORCESWITCHG1:
|
||||
case FORCESWITCHG2:
|
||||
case DYNAMICGAIN:
|
||||
case DYNAMICHG0:
|
||||
case FIXGAIN1:
|
||||
case FIXGAIN2:
|
||||
case FORCESWITCHG1:
|
||||
case FORCESWITCHG2:
|
||||
#elif GOTTHARDD
|
||||
case DYNAMICGAIN:
|
||||
case HIGHGAIN:
|
||||
case LOWGAIN:
|
||||
case MEDIUMGAIN:
|
||||
case VERYHIGHGAIN:
|
||||
case DYNAMICGAIN:
|
||||
case HIGHGAIN:
|
||||
case LOWGAIN:
|
||||
case MEDIUMGAIN:
|
||||
case VERYHIGHGAIN:
|
||||
#elif GOTTHARD2D
|
||||
case DYNAMICGAIN:
|
||||
case FIXGAIN1:
|
||||
case FIXGAIN2:
|
||||
case DYNAMICGAIN:
|
||||
case FIXGAIN1:
|
||||
case FIXGAIN2:
|
||||
#elif MOENCHD
|
||||
case G1_HIGHGAIN:
|
||||
case G1_LOWGAIN:
|
||||
case G2_HIGHCAP_HIGHGAIN:
|
||||
case G2_HIGHCAP_LOWGAIN:
|
||||
case G2_LOWCAP_HIGHGAIN:
|
||||
case G2_LOWCAP_LOWGAIN:
|
||||
case G4_HIGHGAIN:
|
||||
case G4_LOWGAIN:
|
||||
case G1_HIGHGAIN:
|
||||
case G1_LOWGAIN:
|
||||
case G2_HIGHCAP_HIGHGAIN:
|
||||
case G2_HIGHCAP_LOWGAIN:
|
||||
case G2_LOWCAP_HIGHGAIN:
|
||||
case G2_LOWCAP_LOWGAIN:
|
||||
case G4_HIGHGAIN:
|
||||
case G4_LOWGAIN:
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
if (myDetectorType == EIGER) {
|
||||
ret = FAIL;
|
||||
sprintf(mess, "Cannot set settings via SET_SETTINGS, use "
|
||||
"SET_MODULE (set threshold)\n");
|
||||
LOG(logERROR, (mess));
|
||||
} else
|
||||
modeNotImplemented("Settings Index", (int)isett);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (myDetectorType == EIGER) {
|
||||
ret = FAIL;
|
||||
sprintf(mess, "Cannot set settings via SET_SETTINGS, use "
|
||||
"SET_MODULE (set threshold)\n");
|
||||
LOG(logERROR, (mess));
|
||||
} else
|
||||
modeNotImplemented("Settings Index", (int)isett);
|
||||
break;
|
||||
}
|
||||
|
||||
// if index is okay, set & get
|
||||
if (ret == OK) {
|
||||
retval = setSettings(isett);
|
||||
LOG(logDEBUG1, ("Settings: %d\n", retval));
|
||||
if (ret == OK) {
|
||||
setSettings(isett);
|
||||
}
|
||||
}
|
||||
retval = getSettings();
|
||||
LOG(logDEBUG1, ("Settings: %d\n", retval));
|
||||
|
||||
if ((int)isett != GET_FLAG) {
|
||||
validate((int)isett, (int)retval, "set settings", DEC);
|
||||
#if defined(JUNGFRAUD) || defined(GOTTHARDD)
|
||||
// gotthard2 does not set default dacs
|
||||
if (ret == OK && isett >= 0) {
|
||||
if (ret == OK) {
|
||||
ret = setDefaultDacs();
|
||||
if (ret == FAIL) {
|
||||
strcpy(mess, "Could change settings, but could not set to "
|
||||
@ -1686,7 +1687,7 @@ int start_acquisition(int file_des) {
|
||||
"same as hardware detector mac address %s\n",
|
||||
src_mac);
|
||||
LOG(logERROR, (mess));
|
||||
} else if (!enableTenGigabitEthernet(-1) &&
|
||||
} else if (!enableTenGigabitEthernet(GET_FLAG) &&
|
||||
(udpDetails.srcip != getDetectorIP())) {
|
||||
ret = FAIL;
|
||||
uint32_t sourceip = getDetectorIP();
|
||||
@ -1804,7 +1805,7 @@ int start_and_read_all(int file_des) {
|
||||
"same as hardware detector mac address %s\n",
|
||||
src_mac);
|
||||
LOG(logERROR, (mess));
|
||||
} else if (!enableTenGigabitEthernet(-1) &&
|
||||
} else if (!enableTenGigabitEthernet(GET_FLAG) &&
|
||||
(udpDetails.srcip != getDetectorIP())) {
|
||||
ret = FAIL;
|
||||
uint32_t sourceip = getDetectorIP();
|
||||
@ -2623,10 +2624,10 @@ int set_dynamic_range(int file_des) {
|
||||
LOG(logDEBUG1, ("Setting dr to %d\n", dr));
|
||||
|
||||
// set & get
|
||||
if ((dr == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((dr == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
// check dr
|
||||
switch (dr) {
|
||||
case -1:
|
||||
case GET_FLAG:
|
||||
#ifdef MYTHEN3D
|
||||
case 32:
|
||||
#elif EIGERD
|
||||
@ -2795,8 +2796,8 @@ int enable_ten_giga(int file_des) {
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// set & get
|
||||
if ((arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
if (arg >= 0 && enableTenGigabitEthernet(-1) != arg) {
|
||||
if ((arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
if (arg >= 0 && enableTenGigabitEthernet(GET_FLAG) != arg) {
|
||||
enableTenGigabitEthernet(arg);
|
||||
uint64_t hardwaremac = getDetectorMAC();
|
||||
if (udpDetails.srcmac != hardwaremac) {
|
||||
@ -2810,7 +2811,7 @@ int enable_ten_giga(int file_des) {
|
||||
}
|
||||
configure_mac();
|
||||
}
|
||||
retval = enableTenGigabitEthernet(-1);
|
||||
retval = enableTenGigabitEthernet(GET_FLAG);
|
||||
LOG(logDEBUG1, ("10GbE: %d\n", retval));
|
||||
validate(arg, retval, "enable/disable 10GbE", DEC);
|
||||
}
|
||||
@ -2870,7 +2871,7 @@ int set_pattern_io_control(int file_des) {
|
||||
#else
|
||||
LOG(logDEBUG1,
|
||||
("Setting Pattern IO Control to 0x%llx\n", (long long int)arg));
|
||||
if (((int64_t)arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
if (((int64_t)arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
retval = writePatternIOControl(arg);
|
||||
LOG(logDEBUG1,
|
||||
("Pattern IO Control retval: 0x%llx\n", (long long int)retval));
|
||||
@ -2893,7 +2894,7 @@ int set_pattern_clock_control(int file_des) {
|
||||
#else
|
||||
LOG(logDEBUG1,
|
||||
("Setting Pattern Clock Control to 0x%llx\n", (long long int)arg));
|
||||
if (((int64_t)arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
if (((int64_t)arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
retval = writePatternClkControl(arg);
|
||||
LOG(logDEBUG1,
|
||||
("Pattern Clock Control retval: 0x%llx\n", (long long int)retval));
|
||||
@ -2955,7 +2956,8 @@ int set_pattern_loop_addresses(int file_des) {
|
||||
LOG(logDEBUG1, ("Setting Pattern loop addresses(loopLevel:%d "
|
||||
"startAddr:0x%x stopAddr:0x%x)\n",
|
||||
loopLevel, startAddr, stopAddr));
|
||||
if ((startAddr == -1) || (stopAddr == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((startAddr == GET_FLAG) || (stopAddr == GET_FLAG) ||
|
||||
(Server_VerifyLock() == OK)) {
|
||||
// valid loop level
|
||||
if (loopLevel < -1 ||
|
||||
loopLevel > 2) { // loop level of -1 : complete pattern
|
||||
@ -3007,7 +3009,7 @@ int set_pattern_loop_cycles(int file_des) {
|
||||
int numLoops = args[1];
|
||||
LOG(logDEBUG1, ("Setting Pattern loop cycles (loopLevel:%d numLoops:%d)\n",
|
||||
loopLevel, numLoops));
|
||||
if ((numLoops == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((numLoops == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
// valid loop level
|
||||
if (loopLevel < 0 || loopLevel > 2) {
|
||||
ret = FAIL;
|
||||
@ -3017,8 +3019,8 @@ int set_pattern_loop_cycles(int file_des) {
|
||||
loopLevel);
|
||||
LOG(logERROR, (mess));
|
||||
} else {
|
||||
int startAddr = -1;
|
||||
int stopAddr = -1;
|
||||
int startAddr = GET_FLAG;
|
||||
int stopAddr = GET_FLAG;
|
||||
setPatternLoop(loopLevel, &startAddr, &stopAddr, &numLoops);
|
||||
retval = numLoops;
|
||||
LOG(logDEBUG1,
|
||||
@ -3045,7 +3047,7 @@ int set_pattern_wait_addr(int file_des) {
|
||||
int addr = args[1];
|
||||
LOG(logDEBUG1, ("Setting Pattern wait address (loopLevel:%d addr:0x%x)\n",
|
||||
loopLevel, addr));
|
||||
if ((addr == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((addr == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
// valid loop level 0-2
|
||||
if (loopLevel < 0 || loopLevel > 2) {
|
||||
ret = FAIL;
|
||||
@ -3088,7 +3090,7 @@ int set_pattern_wait_time(int file_des) {
|
||||
uint64_t timeval = args[1];
|
||||
LOG(logDEBUG1, ("Setting Pattern wait time (loopLevel:%d timeval:0x%llx)\n",
|
||||
loopLevel, (long long int)timeval));
|
||||
if (((int64_t)timeval == -1) || (Server_VerifyLock() == OK)) {
|
||||
if (((int64_t)timeval == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
// valid loop level 0-2
|
||||
if (loopLevel < 0 || loopLevel > 2) {
|
||||
ret = FAIL;
|
||||
@ -3245,7 +3247,7 @@ int set_counter_bit(int file_des) {
|
||||
setCounterBit(arg);
|
||||
}
|
||||
// get
|
||||
retval = setCounterBit(-1);
|
||||
retval = setCounterBit(GET_FLAG);
|
||||
LOG(logDEBUG1, ("Set counter bit retval: %d\n", retval));
|
||||
validate(arg, retval, "set counter bit", DEC);
|
||||
#endif
|
||||
@ -3747,7 +3749,7 @@ int power_chip(int file_des) {
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// set & get
|
||||
if ((arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
#if defined(MYTHEN3D) || defined(GOTTHARD2D)
|
||||
// check only when powering on
|
||||
if (arg != -1 && arg != 0) {
|
||||
@ -3783,7 +3785,7 @@ int power_chip(int file_des) {
|
||||
#ifdef JUNGFRAUD
|
||||
// narrow down error when powering on
|
||||
if (ret == FAIL && arg > 0) {
|
||||
if (setTemperatureEvent(-1) == 1)
|
||||
if (setTemperatureEvent(GET_FLAG) == 1)
|
||||
sprintf(mess,
|
||||
"Powering chip failed due to over-temperature event. "
|
||||
"Clear event & power chip again. Set %d, read %d \n",
|
||||
@ -3810,7 +3812,7 @@ int set_activate(int file_des) {
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// set & get
|
||||
if ((arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
if (arg >= 0) {
|
||||
if (setActivate(arg) == FAIL) {
|
||||
ret = FAIL;
|
||||
@ -3869,7 +3871,7 @@ int threshold_temp(int file_des) {
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// set & get
|
||||
if ((arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
if (arg > MAX_THRESHOLD_TEMP_VAL) {
|
||||
ret = FAIL;
|
||||
sprintf(mess, "Threshold Temp %d should be in range: 0 - %d\n", arg,
|
||||
@ -3902,7 +3904,7 @@ int temp_control(int file_des) {
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// set & get
|
||||
if ((arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
retval = setTemperatureControl(arg);
|
||||
LOG(logDEBUG1, ("Temperature control: %d\n", retval));
|
||||
validate(arg, retval, "set temperature control", DEC);
|
||||
@ -3926,7 +3928,7 @@ int temp_event(int file_des) {
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// set & get
|
||||
if ((arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
retval = setTemperatureEvent(arg);
|
||||
LOG(logDEBUG1, ("Temperature event: %d\n", retval));
|
||||
validate(arg, retval, "set temperature event", DEC);
|
||||
@ -3949,7 +3951,7 @@ int auto_comp_disable(int file_des) {
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// set & get
|
||||
if ((arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
retval = autoCompDisable(arg);
|
||||
LOG(logDEBUG1, ("Auto comp disable: %d\n", retval));
|
||||
validate(arg, retval, "set auto comp disable", DEC);
|
||||
@ -3972,7 +3974,7 @@ int storage_cell_start(int file_des) {
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// set & get
|
||||
if ((arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
if (arg > MAX_STORAGE_CELL_VAL) {
|
||||
ret = FAIL;
|
||||
strcpy(mess, "Max Storage cell number should not exceed 15\n");
|
||||
@ -4092,7 +4094,7 @@ int led(int file_des) {
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// set & get
|
||||
if ((arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
retval = setLEDEnable(arg);
|
||||
LOG(logDEBUG1, ("LED Enable: %d\n", retval));
|
||||
validate(arg, retval, "LED Enable", DEC);
|
||||
@ -4386,7 +4388,7 @@ int set_external_sampling_source(int file_des) {
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// set & get
|
||||
if ((arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
if (arg < -1 || arg > 63) {
|
||||
ret = FAIL;
|
||||
sprintf(mess,
|
||||
@ -4418,7 +4420,7 @@ int set_external_sampling(int file_des) {
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// set & get
|
||||
if ((arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
if ((arg == GET_FLAG) || (Server_VerifyLock() == OK)) {
|
||||
arg = (arg > 0) ? 1 : arg;
|
||||
retval = setExternalSampling(arg);
|
||||
LOG(logDEBUG1, ("External Sampling enable: %d\n", retval));
|
||||
@ -4663,8 +4665,8 @@ int set_read_n_lines(int file_des) {
|
||||
MAX_ROWS_PER_READOUT);
|
||||
LOG(logERROR, (mess));
|
||||
} else {
|
||||
int dr = setDynamicRange(-1);
|
||||
int isTenGiga = enableTenGigabitEthernet(-1);
|
||||
int dr = setDynamicRange(GET_FLAG);
|
||||
int isTenGiga = enableTenGigabitEthernet(GET_FLAG);
|
||||
unsigned int maxnl = MAX_ROWS_PER_READOUT;
|
||||
unsigned int maxnp = (isTenGiga ? 4 : 16) * dr;
|
||||
if ((arg * maxnp) % maxnl) {
|
||||
@ -6955,7 +6957,7 @@ int get_receiver_parameters(int file_des) {
|
||||
return printSocketReadError();
|
||||
|
||||
// dynamic range
|
||||
i32 = setDynamicRange(-1);
|
||||
i32 = setDynamicRange(GET_FLAG);
|
||||
n += sendData(file_des, &i32, sizeof(i32), INT32);
|
||||
if (n < 0)
|
||||
return printSocketReadError();
|
||||
@ -6968,7 +6970,7 @@ int get_receiver_parameters(int file_des) {
|
||||
|
||||
// 10 gbe
|
||||
#if defined(EIGERD) || defined(CHIPTESTBOARDD) || defined(MOENCHD)
|
||||
i32 = enableTenGigabitEthernet(-1);
|
||||
i32 = enableTenGigabitEthernet(GET_FLAG);
|
||||
#else
|
||||
i32 = 0;
|
||||
#endif
|
||||
|
@ -1186,9 +1186,9 @@ std::string CmdProxy::Threshold(int action) {
|
||||
os << OutString(t) << '\n';
|
||||
} else if (action == defs::PUT_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
det->setThresholdEnergy(StringTo<int>(args[0]),
|
||||
slsDetectorDefs::GET_SETTINGS, true,
|
||||
{det_id});
|
||||
auto t = det->getSettings({det_id}).tsquash(
|
||||
"Inconsistent settings between detectors");
|
||||
det->setThresholdEnergy(StringTo<int>(args[0]), t, true, {det_id});
|
||||
} else if (args.size() == 2) {
|
||||
det->setThresholdEnergy(
|
||||
StringTo<int>(args[0]),
|
||||
@ -1216,9 +1216,9 @@ std::string CmdProxy::ThresholdNoTb(int action) {
|
||||
throw sls::RuntimeError("cannot get");
|
||||
} else if (action == defs::PUT_ACTION) {
|
||||
if (args.size() == 1) {
|
||||
det->setThresholdEnergy(StringTo<int>(args[0]),
|
||||
slsDetectorDefs::GET_SETTINGS, false,
|
||||
{det_id});
|
||||
auto t = det->getSettings({det_id}).tsquash(
|
||||
"Inconsistent settings between detectors");
|
||||
det->setThresholdEnergy(StringTo<int>(args[0]), t, false, {det_id});
|
||||
} else if (args.size() == 2) {
|
||||
det->setThresholdEnergy(
|
||||
StringTo<int>(args[0]),
|
||||
|
@ -569,7 +569,7 @@ Result<int> Detector::getNumberofUDPInterfaces(Positions pos) const {
|
||||
}
|
||||
|
||||
void Detector::setNumberofUDPInterfaces(int n, Positions pos) {
|
||||
int previouslyClientStreaming = pimpl->enableDataStreamingToClient();
|
||||
int previouslyClientStreaming = pimpl->getDataStreamingToClient();
|
||||
bool useReceiver = getUseReceiverFlag().squash(false);
|
||||
bool previouslyReceiverStreaming = false;
|
||||
if (useReceiver) {
|
||||
@ -583,8 +583,8 @@ void Detector::setNumberofUDPInterfaces(int n, Positions pos) {
|
||||
}
|
||||
// redo the zmq sockets if enabled
|
||||
if (previouslyClientStreaming != 0) {
|
||||
pimpl->enableDataStreamingToClient(0);
|
||||
pimpl->enableDataStreamingToClient(1);
|
||||
pimpl->setDataStreamingToClient(false);
|
||||
pimpl->setDataStreamingToClient(true);
|
||||
}
|
||||
if (previouslyReceiverStreaming) {
|
||||
setRxZmqDataStream(false, pos);
|
||||
@ -995,11 +995,11 @@ Result<IpAddr> Detector::getClientZmqIp(Positions pos) const {
|
||||
}
|
||||
|
||||
void Detector::setClientZmqIp(const IpAddr ip, Positions pos) {
|
||||
int previouslyClientStreaming = pimpl->enableDataStreamingToClient(-1);
|
||||
int previouslyClientStreaming = pimpl->getDataStreamingToClient();
|
||||
pimpl->Parallel(&Module::setClientStreamingIP, pos, ip);
|
||||
if (previouslyClientStreaming != 0) {
|
||||
pimpl->enableDataStreamingToClient(0);
|
||||
pimpl->enableDataStreamingToClient(1);
|
||||
pimpl->setDataStreamingToClient(false);
|
||||
pimpl->setDataStreamingToClient(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -975,19 +975,18 @@ int DetectorImpl::InsertGapPixels(char *image, char *&gpImage, bool quadEnable,
|
||||
return imagesize;
|
||||
}
|
||||
|
||||
bool DetectorImpl::enableDataStreamingToClient(int enable) {
|
||||
if (enable >= 0) {
|
||||
// destroy data threads
|
||||
if (enable == 0) {
|
||||
createReceivingDataSockets(true);
|
||||
// create data threads
|
||||
} else {
|
||||
if (createReceivingDataSockets() == FAIL) {
|
||||
throw RuntimeError("Could not create data threads in client.");
|
||||
}
|
||||
bool DetectorImpl::getDataStreamingToClient() { return client_downstream; }
|
||||
|
||||
void DetectorImpl::setDataStreamingToClient(bool enable) {
|
||||
// destroy data threads
|
||||
if (!enable) {
|
||||
createReceivingDataSockets(true);
|
||||
// create data threads
|
||||
} else {
|
||||
if (createReceivingDataSockets() == FAIL) {
|
||||
throw RuntimeError("Could not create data threads in client.");
|
||||
}
|
||||
}
|
||||
return client_downstream;
|
||||
}
|
||||
|
||||
void DetectorImpl::registerAcquisitionFinishedCallback(void (*func)(double, int,
|
||||
@ -1003,7 +1002,7 @@ void DetectorImpl::registerDataCallback(void (*userCallback)(detectorData *,
|
||||
void *pArg) {
|
||||
dataReady = userCallback;
|
||||
pCallbackArg = pArg;
|
||||
enableDataStreamingToClient(dataReady == nullptr ? 0 : 1);
|
||||
setDataStreamingToClient(dataReady == nullptr ? false : true);
|
||||
}
|
||||
|
||||
int DetectorImpl::acquire() {
|
||||
|
@ -238,12 +238,8 @@ class DetectorImpl : public virtual slsDetectorDefs {
|
||||
/** [Eiger][Jungfrau] */
|
||||
void setGapPixelsinCallback(const bool enable);
|
||||
|
||||
/**
|
||||
* Enable data streaming to client
|
||||
* @param enable 0 to disable, 1 to enable, -1 to get the value
|
||||
* @returns data streaming to client enable
|
||||
*/
|
||||
bool enableDataStreamingToClient(int enable = -1);
|
||||
bool getDataStreamingToClient();
|
||||
void setDataStreamingToClient(bool enable);
|
||||
|
||||
/**
|
||||
* register callback for accessing acquisition final data
|
||||
|
@ -142,7 +142,7 @@ void Module::updateNumberOfDetector(slsDetectorDefs::xy det) {
|
||||
}
|
||||
|
||||
slsDetectorDefs::detectorSettings Module::getSettings() {
|
||||
auto r = sendToDetector<int>(F_SET_SETTINGS, -1);
|
||||
auto r = sendToDetector<int>(F_SET_SETTINGS, GET_FLAG);
|
||||
return static_cast<detectorSettings>(r);
|
||||
}
|
||||
|
||||
@ -176,7 +176,7 @@ void Module::loadSettingsFile(const std::string &fname) {
|
||||
}
|
||||
|
||||
int Module::getAllTrimbits() {
|
||||
return sendToDetector<int>(F_SET_ALL_TRIMBITS, -1);
|
||||
return sendToDetector<int>(F_SET_ALL_TRIMBITS, GET_FLAG);
|
||||
}
|
||||
|
||||
void Module::setAllTrimbits(int val) {
|
||||
@ -242,36 +242,27 @@ void Module::setDelayAfterTrigger(int64_t value) {
|
||||
}
|
||||
|
||||
int64_t Module::getNumberOfFramesLeft() const {
|
||||
int64_t retval = -1;
|
||||
sendToDetectorStop(F_GET_FRAMES_LEFT, nullptr, retval);
|
||||
return retval;
|
||||
return sendToDetectorStop<int64_t>(F_GET_FRAMES_LEFT);
|
||||
}
|
||||
|
||||
int64_t Module::getNumberOfTriggersLeft() const {
|
||||
int64_t retval = -1;
|
||||
sendToDetectorStop(F_GET_TRIGGERS_LEFT, nullptr, retval);
|
||||
return retval;
|
||||
return sendToDetectorStop<int64_t>(F_GET_TRIGGERS_LEFT);
|
||||
}
|
||||
|
||||
int64_t Module::getDelayAfterTriggerLeft() const {
|
||||
int64_t retval = -1;
|
||||
sendToDetectorStop(F_GET_DELAY_AFTER_TRIGGER_LEFT, nullptr, retval);
|
||||
return retval;
|
||||
return sendToDetectorStop<int64_t>(F_GET_DELAY_AFTER_TRIGGER_LEFT);
|
||||
}
|
||||
|
||||
int64_t Module::getPeriodLeft() const {
|
||||
int64_t retval = -1;
|
||||
sendToDetectorStop(F_GET_PERIOD_LEFT, nullptr, retval);
|
||||
return retval;
|
||||
return sendToDetectorStop<int64_t>(F_GET_PERIOD_LEFT);
|
||||
}
|
||||
|
||||
slsDetectorDefs::timingMode Module::getTimingMode() {
|
||||
return sendToDetector<timingMode>(F_SET_TIMING_MODE, -1);
|
||||
return sendToDetector<timingMode>(F_SET_TIMING_MODE, GET_FLAG);
|
||||
}
|
||||
|
||||
void Module::setTimingMode(timingMode value) {
|
||||
timingMode retval = GET_TIMING_MODE;
|
||||
sendToDetector(F_SET_TIMING_MODE, static_cast<int>(value), retval);
|
||||
sendToDetector<int>(F_SET_TIMING_MODE, static_cast<int>(value));
|
||||
if (shm()->useReceiverFlag) {
|
||||
sendToReceiver(F_SET_RECEIVER_TIMING_MODE, value, nullptr);
|
||||
}
|
||||
@ -310,7 +301,7 @@ void Module::setClockFrequency(int clkIndex, int value) {
|
||||
}
|
||||
|
||||
int Module::getDAC(dacIndex index, bool mV) {
|
||||
int args[]{static_cast<int>(index), static_cast<int>(mV), -1};
|
||||
int args[]{static_cast<int>(index), static_cast<int>(mV), GET_FLAG};
|
||||
return sendToDetector<int>(F_SET_DAC, args);
|
||||
}
|
||||
|
||||
@ -320,7 +311,7 @@ void Module::setDAC(int val, dacIndex index, bool mV) {
|
||||
}
|
||||
|
||||
bool Module::getPowerChip() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
return sendToDetector<int>(F_POWER_CHIP, arg);
|
||||
}
|
||||
|
||||
@ -640,17 +631,16 @@ std::string Module::printReceiverConfiguration() {
|
||||
}
|
||||
|
||||
bool Module::getTenGiga() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
return static_cast<bool>(sendToDetector<int>(F_ENABLE_TEN_GIGA, arg));
|
||||
}
|
||||
|
||||
void Module::setTenGiga(bool value) {
|
||||
int arg = static_cast<int>(value);
|
||||
int retval = -1;
|
||||
sendToDetector(F_ENABLE_TEN_GIGA, arg, retval);
|
||||
auto retval = sendToDetector<int>(F_ENABLE_TEN_GIGA, arg);
|
||||
sendToDetectorStop<int>(F_ENABLE_TEN_GIGA, arg);
|
||||
arg = retval;
|
||||
if (shm()->useReceiverFlag && arg != -1) {
|
||||
if (shm()->useReceiverFlag && arg != GET_FLAG) {
|
||||
sendToReceiver<int>(F_ENABLE_RECEIVER_TEN_GIGA, arg);
|
||||
}
|
||||
}
|
||||
@ -769,9 +759,8 @@ int Module::getReceiverPort() const { return shm()->rxTCPPort; }
|
||||
int Module::setReceiverPort(int port_number) {
|
||||
if (port_number >= 0 && port_number != shm()->rxTCPPort) {
|
||||
if (shm()->useReceiverFlag) {
|
||||
int retval = -1;
|
||||
sendToReceiver(F_SET_RECEIVER_PORT, port_number, retval);
|
||||
shm()->rxTCPPort = retval;
|
||||
shm()->rxTCPPort =
|
||||
sendToReceiver<int>(F_SET_RECEIVER_PORT, port_number);
|
||||
} else {
|
||||
shm()->rxTCPPort = port_number;
|
||||
}
|
||||
@ -780,7 +769,7 @@ int Module::setReceiverPort(int port_number) {
|
||||
}
|
||||
|
||||
int Module::getReceiverFifoDepth() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
return sendToReceiver<int>(F_SET_RECEIVER_FIFO_DEPTH, arg);
|
||||
}
|
||||
|
||||
@ -815,7 +804,7 @@ void Module::setPartialFramesPadding(bool padding) {
|
||||
}
|
||||
|
||||
int64_t Module::getReceiverUDPSocketBufferSize() const {
|
||||
int64_t arg = -1;
|
||||
int64_t arg = GET_FLAG;
|
||||
return sendToReceiver<int64_t>(F_RECEIVER_UDP_SOCK_BUF_SIZE, arg);
|
||||
}
|
||||
|
||||
@ -828,7 +817,7 @@ void Module::setReceiverUDPSocketBufferSize(int64_t udpsockbufsize) {
|
||||
}
|
||||
|
||||
bool Module::getReceiverLock() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
return static_cast<bool>(sendToReceiver<int>(F_LOCK_RECEIVER, arg));
|
||||
}
|
||||
|
||||
@ -954,7 +943,7 @@ void Module::setReceiverStreamingFrequency(int freq) {
|
||||
}
|
||||
|
||||
int Module::getReceiverStreamingTimer() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
return sendToReceiver<int>(F_RECEIVER_STREAMING_TIMER, arg);
|
||||
}
|
||||
|
||||
@ -1001,7 +990,7 @@ void Module::setClientStreamingIP(const sls::IpAddr ip) {
|
||||
// Eiger Specific
|
||||
|
||||
int Module::getDynamicRange() {
|
||||
return sendToDetector<int>(F_SET_DYNAMIC_RANGE, -1);
|
||||
return sendToDetector<int>(F_SET_DYNAMIC_RANGE, GET_FLAG);
|
||||
}
|
||||
|
||||
void Module::setDynamicRange(int n) {
|
||||
@ -1120,7 +1109,7 @@ void Module::setOverFlowMode(const bool enable) {
|
||||
}
|
||||
|
||||
bool Module::getFlippedDataX() {
|
||||
return sendToReceiver<int>(F_SET_FLIPPED_DATA_RECEIVER, -1);
|
||||
return sendToReceiver<int>(F_SET_FLIPPED_DATA_RECEIVER, GET_FLAG);
|
||||
}
|
||||
|
||||
void Module::setFlippedDataX(bool value) {
|
||||
@ -1191,7 +1180,7 @@ int64_t Module::getMeasuredSubFramePeriod() const {
|
||||
}
|
||||
|
||||
bool Module::getActivate() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
auto retval = sendToDetector<int>(F_ACTIVATE, arg);
|
||||
auto retval2 = sendToDetectorStop<int>(F_ACTIVATE, arg);
|
||||
if (retval != retval2) {
|
||||
@ -1222,7 +1211,7 @@ void Module::setDeactivatedRxrPaddingMode(bool padding) {
|
||||
}
|
||||
|
||||
bool Module::getCounterBit() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
return (!static_cast<bool>(sendToDetector<int>(F_SET_COUNTER_BIT, arg)));
|
||||
}
|
||||
|
||||
@ -1257,7 +1246,7 @@ void Module::setQuad(const bool enable) {
|
||||
// Jungfrau Specific
|
||||
|
||||
int Module::getThresholdTemperature() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
auto retval = sendToDetectorStop<int>(F_THRESHOLD_TEMP, arg);
|
||||
if (retval != 0) {
|
||||
retval /= 1000;
|
||||
@ -1275,7 +1264,7 @@ void Module::setThresholdTemperature(int val) {
|
||||
}
|
||||
|
||||
bool Module::getTemperatureControl() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
return static_cast<bool>(sendToDetectorStop<int>(F_TEMP_CONTROL, arg));
|
||||
}
|
||||
|
||||
@ -1284,7 +1273,7 @@ void Module::setTemperatureControl(bool val) {
|
||||
}
|
||||
|
||||
int Module::getTemperatureEvent() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
return sendToDetectorStop<int>(F_TEMP_EVENT, arg);
|
||||
}
|
||||
|
||||
@ -1294,7 +1283,7 @@ void Module::resetTemperatureEvent() {
|
||||
}
|
||||
|
||||
bool Module::getAutoComparatorDisableMode() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
return static_cast<bool>(sendToDetector<int>(F_AUTO_COMP_DISABLE, arg));
|
||||
}
|
||||
|
||||
@ -1311,7 +1300,7 @@ void Module::setNumberOfAdditionalStorageCells(int value) {
|
||||
}
|
||||
|
||||
int Module::getStorageCellStart() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
return sendToDetector<int>(F_STORAGE_CELL_START, arg);
|
||||
}
|
||||
|
||||
@ -1696,7 +1685,7 @@ void Module::setReadoutMode(const slsDetectorDefs::readoutMode mode) {
|
||||
}
|
||||
|
||||
int Module::getExternalSamplingSource() {
|
||||
return setExternalSamplingSource(-1);
|
||||
return setExternalSamplingSource(GET_FLAG);
|
||||
}
|
||||
|
||||
int Module::setExternalSamplingSource(int value) {
|
||||
@ -1704,7 +1693,7 @@ int Module::setExternalSamplingSource(int value) {
|
||||
}
|
||||
|
||||
bool Module::getExternalSampling() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
return sendToDetector<int>(F_EXTERNAL_SAMPLING, arg);
|
||||
}
|
||||
|
||||
@ -1746,7 +1735,7 @@ void Module::setDigitalIODelay(uint64_t pinMask, int delay) {
|
||||
}
|
||||
|
||||
bool Module::getLEDEnable() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
return static_cast<bool>(sendToDetector<int>(F_LED, arg));
|
||||
}
|
||||
|
||||
@ -1773,7 +1762,7 @@ void Module::setPattern(const std::string &fname) {
|
||||
}
|
||||
|
||||
uint64_t Module::getPatternIOControl() {
|
||||
int64_t arg = -1;
|
||||
int64_t arg = GET_FLAG;
|
||||
return sendToDetector<uint64_t>(F_SET_PATTERN_IO_CONTROL, arg);
|
||||
}
|
||||
|
||||
@ -1782,7 +1771,7 @@ void Module::setPatternIOControl(uint64_t word) {
|
||||
}
|
||||
|
||||
uint64_t Module::getPatternClockControl() {
|
||||
int64_t arg = -1;
|
||||
int64_t arg = GET_FLAG;
|
||||
return sendToDetector<uint64_t>(F_SET_PATTERN_CLOCK_CONTROL, arg);
|
||||
}
|
||||
|
||||
@ -1791,7 +1780,8 @@ void Module::setPatternClockControl(uint64_t word) {
|
||||
}
|
||||
|
||||
uint64_t Module::getPatternWord(int addr) {
|
||||
uint64_t args[]{static_cast<uint64_t>(addr), static_cast<uint64_t>(-1)};
|
||||
uint64_t args[]{static_cast<uint64_t>(addr),
|
||||
static_cast<uint64_t>(GET_FLAG)};
|
||||
return sendToDetector<uint64_t>(F_SET_PATTERN_WORD, args);
|
||||
}
|
||||
|
||||
@ -1801,7 +1791,7 @@ void Module::setPatternWord(int addr, uint64_t word) {
|
||||
}
|
||||
|
||||
std::array<int, 2> Module::getPatternLoopAddresses(int level) {
|
||||
int args[]{level, -1, -1};
|
||||
int args[]{level, GET_FLAG, GET_FLAG};
|
||||
std::array<int, 2> retvals{};
|
||||
sendToDetector(F_SET_PATTERN_LOOP_ADDRESSES, args, retvals);
|
||||
return retvals;
|
||||
@ -1814,7 +1804,7 @@ void Module::setPatternLoopAddresses(int level, int start, int stop) {
|
||||
}
|
||||
|
||||
int Module::getPatternLoopCycles(int level) {
|
||||
int args[]{level, -1};
|
||||
int args[]{level, GET_FLAG};
|
||||
return sendToDetector<int>(F_SET_PATTERN_LOOP_CYCLES, args);
|
||||
}
|
||||
|
||||
@ -1824,7 +1814,7 @@ void Module::setPatternLoopCycles(int level, int n) {
|
||||
}
|
||||
|
||||
int Module::getPatternWaitAddr(int level) {
|
||||
int args[]{level, -1};
|
||||
int args[]{level, GET_FLAG};
|
||||
return sendToDetector<int>(F_SET_PATTERN_WAIT_ADDR, args);
|
||||
}
|
||||
|
||||
@ -1834,7 +1824,8 @@ void Module::setPatternWaitAddr(int level, int addr) {
|
||||
}
|
||||
|
||||
uint64_t Module::getPatternWaitTime(int level) {
|
||||
uint64_t args[]{static_cast<uint64_t>(level), static_cast<uint64_t>(-1)};
|
||||
uint64_t args[]{static_cast<uint64_t>(level),
|
||||
static_cast<uint64_t>(GET_FLAG)};
|
||||
return sendToDetector<uint64_t>(F_SET_PATTERN_WAIT_TIME, args);
|
||||
}
|
||||
|
||||
@ -2069,7 +2060,7 @@ int Module::setStopPort(int port_number) {
|
||||
}
|
||||
|
||||
bool Module::getLockDetector() {
|
||||
int arg = -1;
|
||||
int arg = GET_FLAG;
|
||||
return static_cast<bool>(sendToDetector<int>(F_LOCK_SERVER, arg));
|
||||
}
|
||||
|
||||
@ -2618,10 +2609,6 @@ void Module::updateRateCorrection() {
|
||||
void Module::setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings,
|
||||
bool trimbits) {
|
||||
|
||||
// if settings provided, use that, else use the shared memory variable
|
||||
detectorSettings is =
|
||||
((isettings != GET_SETTINGS) ? isettings : getSettings());
|
||||
|
||||
// verify e_eV exists in trimEneregies[]
|
||||
if (shm()->trimEnergies.empty() || (e_eV < shm()->trimEnergies.front()) ||
|
||||
(e_eV > shm()->trimEnergies.back())) {
|
||||
@ -2636,7 +2623,7 @@ void Module::setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings,
|
||||
sls_detector_module myMod{shm()->myDetectorType};
|
||||
|
||||
if (!interpolate) {
|
||||
std::string settingsfname = getTrimbitFilename(is, e_eV);
|
||||
std::string settingsfname = getTrimbitFilename(isettings, e_eV);
|
||||
LOG(logDEBUG1) << "Settings File is " << settingsfname;
|
||||
myMod = readSettingsFile(settingsfname, trimbits);
|
||||
} else {
|
||||
@ -2649,8 +2636,8 @@ void Module::setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings,
|
||||
break;
|
||||
}
|
||||
}
|
||||
std::string settingsfname1 = getTrimbitFilename(is, trim1);
|
||||
std::string settingsfname2 = getTrimbitFilename(is, trim2);
|
||||
std::string settingsfname1 = getTrimbitFilename(isettings, trim1);
|
||||
std::string settingsfname2 = getTrimbitFilename(isettings, trim2);
|
||||
LOG(logDEBUG1) << "Settings Files are " << settingsfname1 << " and "
|
||||
<< settingsfname2;
|
||||
auto myMod1 = readSettingsFile(settingsfname1, trimbits);
|
||||
@ -2665,10 +2652,10 @@ void Module::setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings,
|
||||
linearInterpolation(e_eV, trim1, trim2, myMod1.tau, myMod2.tau);
|
||||
}
|
||||
|
||||
myMod.reg = is;
|
||||
myMod.reg = isettings;
|
||||
myMod.eV = e_eV;
|
||||
setModule(myMod, trimbits);
|
||||
if (getSettings() != is) {
|
||||
if (getSettings() != isettings) {
|
||||
throw RuntimeError("setThresholdEnergyAndSettings: Could not set "
|
||||
"settings in detector");
|
||||
}
|
||||
|
@ -293,8 +293,8 @@ class Module : public virtual slsDetectorDefs {
|
||||
int64_t getSubDeadTime();
|
||||
void setSubDeadTime(int64_t value);
|
||||
int getThresholdEnergy();
|
||||
void setThresholdEnergy(int e_eV, detectorSettings isettings = GET_SETTINGS,
|
||||
bool trimbits = true);
|
||||
void setThresholdEnergy(int e_eV, detectorSettings isettings,
|
||||
bool trimbits);
|
||||
std::string getSettingsDir();
|
||||
std::string setSettingsDir(const std::string &dir);
|
||||
bool getParallelMode();
|
||||
|
@ -1088,8 +1088,7 @@ int ClientInterface::set_flipped_data(Interface &socket) {
|
||||
}
|
||||
|
||||
int ClientInterface::set_file_format(Interface &socket) {
|
||||
fileFormat f = GET_FILE_FORMAT;
|
||||
socket.Receive(f);
|
||||
auto f = socket.Receive<fileFormat>();
|
||||
if (f < 0 || f > NUM_FILE_FORMATS) {
|
||||
throw RuntimeError("Invalid file format: " + std::to_string(f));
|
||||
}
|
||||
|
@ -50,7 +50,6 @@
|
||||
/** maximum unit size of program sent to detector */
|
||||
#define MAX_FPGAPROGRAMSIZE (2 * 1024 * 1024)
|
||||
|
||||
/** get flag form most functions */
|
||||
#define GET_FLAG -1
|
||||
|
||||
#define DEFAULT_DET_MAC "00:aa:bb:cc:dd:ee"
|
||||
@ -73,7 +72,6 @@ class slsDetectorDefs {
|
||||
|
||||
/** Type of the detector */
|
||||
enum detectorType {
|
||||
GET_DETECTOR_TYPE = -1,
|
||||
GENERIC,
|
||||
EIGER,
|
||||
GOTTHARD,
|
||||
@ -85,20 +83,17 @@ class slsDetectorDefs {
|
||||
};
|
||||
|
||||
/** return values */
|
||||
enum {
|
||||
OK, /**< function succeeded */
|
||||
FAIL /**< function failed */
|
||||
};
|
||||
enum { OK, FAIL };
|
||||
|
||||
/** staus mask */
|
||||
enum runStatus {
|
||||
IDLE, /**< detector ready to start acquisition - no data in memory */
|
||||
ERROR, /**< error i.e. normally fifo full */
|
||||
WAITING, /**< waiting for trigger or gate signal */
|
||||
RUN_FINISHED, /**< acquisition not running but data in memory */
|
||||
TRANSMITTING, /**< acquisition running and data in memory */
|
||||
RUNNING, /**< acquisition running, no data in memory */
|
||||
STOPPED /**< acquisition stopped externally */
|
||||
IDLE,
|
||||
ERROR,
|
||||
WAITING,
|
||||
RUN_FINISHED,
|
||||
TRANSMITTING,
|
||||
RUNNING,
|
||||
STOPPED
|
||||
};
|
||||
|
||||
/**
|
||||
@ -121,22 +116,19 @@ class slsDetectorDefs {
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
uint64_t frameNumber; /**< is the frame number */
|
||||
uint32_t expLength; /**< is the subframe number (32 bit eiger) or real
|
||||
time exposure time in 100ns (others) */
|
||||
uint32_t packetNumber; /**< is the packet number */
|
||||
uint64_t bunchId; /**< is the bunch id from beamline */
|
||||
uint64_t timestamp; /**< is the time stamp with 10 MHz clock */
|
||||
uint16_t modId; /**< is the unique module id (unique even for left,
|
||||
right, top, bottom) */
|
||||
uint16_t row; /**< is the row index in the complete detector system */
|
||||
uint16_t
|
||||
column; /**< is the column index in the complete detector system */
|
||||
uint16_t reserved; /**< is reserved */
|
||||
uint32_t debug; /**< is for debugging purposes */
|
||||
uint16_t roundRNumber; /**< is the round robin set number */
|
||||
uint8_t detType; /**< is the detector type see :: detectorType */
|
||||
uint8_t version; /**< is the version number of this structure format */
|
||||
uint64_t frameNumber;
|
||||
uint32_t expLength;
|
||||
uint32_t packetNumber;
|
||||
uint64_t bunchId;
|
||||
uint64_t timestamp;
|
||||
uint16_t modId;
|
||||
uint16_t row;
|
||||
uint16_t column;
|
||||
uint16_t reserved;
|
||||
uint32_t debug;
|
||||
uint16_t roundRNumber;
|
||||
uint8_t detType;
|
||||
uint8_t version;
|
||||
} sls_detector_header;
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -149,37 +141,27 @@ class slsDetectorDefs {
|
||||
};
|
||||
#endif
|
||||
enum frameDiscardPolicy {
|
||||
GET_FRAME_DISCARD_POLICY = -1, /**< to get the missing packet mode */
|
||||
NO_DISCARD, /**< pad incomplete packets with -1, default mode */
|
||||
DISCARD_EMPTY_FRAMES, /**< discard incomplete frames, fastest mode, save
|
||||
space, not suitable for multiple modules */
|
||||
DISCARD_PARTIAL_FRAMES, /**< ignore missing packets, must check with
|
||||
packetsMask for data integrity, fast mode and
|
||||
suitable for multiple modules */
|
||||
NO_DISCARD,
|
||||
DISCARD_EMPTY_FRAMES,
|
||||
DISCARD_PARTIAL_FRAMES,
|
||||
NUM_DISCARD_POLICIES
|
||||
};
|
||||
|
||||
enum fileFormat {
|
||||
GET_FILE_FORMAT = -1, /**< the receiver will return its file format */
|
||||
BINARY, /**< binary format */
|
||||
HDF5, /**< hdf5 format */
|
||||
NUM_FILE_FORMATS
|
||||
};
|
||||
enum fileFormat { BINARY, HDF5, NUM_FILE_FORMATS };
|
||||
|
||||
/**
|
||||
@short structure for a region of interest
|
||||
xmin,xmax,ymin,ymax define the limits of the region
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
struct ROI {
|
||||
int xmin{-1}; /**< is the roi xmin (in channel number) */
|
||||
int xmax{-1}; /**< is the roi xmax (in channel number)*/
|
||||
int xmin{-1};
|
||||
int xmax{-1};
|
||||
} __attribute__((packed));
|
||||
#else
|
||||
typedef struct {
|
||||
int xmin; /**< is the roi xmin (in channel number) */
|
||||
int xmax; /**< is the roi xmax (in channel number)*/
|
||||
int xmin;
|
||||
int xmax;
|
||||
} ROI;
|
||||
#endif
|
||||
|
||||
@ -191,10 +173,7 @@ typedef struct {
|
||||
/**
|
||||
dimension indexes
|
||||
*/
|
||||
enum dimension {
|
||||
X = 0, /**< X dimension */
|
||||
Y = 1 /**< Y dimension */
|
||||
};
|
||||
enum dimension { X, Y };
|
||||
|
||||
#ifdef __cplusplus
|
||||
struct xy {
|
||||
@ -219,12 +198,11 @@ typedef struct {
|
||||
communication mode using external signals
|
||||
*/
|
||||
enum timingMode {
|
||||
GET_TIMING_MODE = -1, /**<return flag for communication mode */
|
||||
AUTO_TIMING, /**< internal timing */
|
||||
TRIGGER_EXPOSURE, /**< trigger mode i.e. exposure is triggered */
|
||||
GATED, /**< gated */
|
||||
BURST_TRIGGER, /**< trigger a burst of frames */
|
||||
TRIGGER_GATED, /**< trigger and gating */
|
||||
AUTO_TIMING,
|
||||
TRIGGER_EXPOSURE,
|
||||
GATED,
|
||||
BURST_TRIGGER,
|
||||
TRIGGER_GATED,
|
||||
NUM_TIMING_MODES
|
||||
};
|
||||
|
||||
@ -350,7 +328,6 @@ typedef struct {
|
||||
detector settings indexes
|
||||
*/
|
||||
enum detectorSettings {
|
||||
GET_SETTINGS = -1,
|
||||
STANDARD,
|
||||
FAST,
|
||||
HIGHGAIN,
|
||||
@ -372,8 +349,8 @@ typedef struct {
|
||||
G2_LOWCAP_LOWGAIN,
|
||||
G4_HIGHGAIN,
|
||||
G4_LOWGAIN,
|
||||
UNDEFINED = 200, /**< undefined or custom settings */
|
||||
UNINITIALIZED /**< uninitialiazed (status at startup) */
|
||||
UNDEFINED = 200,
|
||||
UNINITIALIZED
|
||||
};
|
||||
|
||||
#define TRIMBITMASK 0x3f
|
||||
@ -388,41 +365,18 @@ typedef struct {
|
||||
/** chip speed */
|
||||
enum speedLevel { FULL_SPEED, HALF_SPEED, QUARTER_SPEED };
|
||||
|
||||
/** port type */
|
||||
enum portType {
|
||||
CONTROL_PORT, /**< control port */
|
||||
STOP_PORT, /**<stop port */
|
||||
DATA_PORT /**< receiver tcp port with client*/
|
||||
};
|
||||
|
||||
/** hierarchy in multi-detector structure, if any */
|
||||
enum masterFlags {
|
||||
GET_MASTER = -1, /**< return master flag */
|
||||
NO_MASTER, /**< no master/slave hierarchy defined */
|
||||
IS_MASTER, /**<is master */
|
||||
IS_SLAVE /**< is slave */
|
||||
};
|
||||
enum masterFlags { NO_MASTER, IS_MASTER, IS_SLAVE };
|
||||
|
||||
/**
|
||||
* frame mode for processor
|
||||
*/
|
||||
enum frameModeType {
|
||||
GET_FRAME_MODE = -1,
|
||||
PEDESTAL, /** < pedestal */
|
||||
NEW_PEDESTAL, /** < new pedestal */
|
||||
FLATFIELD, /** < flatfield */
|
||||
NEW_FLATFIELD /** < new flatfield */
|
||||
};
|
||||
enum frameModeType { PEDESTAL, NEW_PEDESTAL, FLATFIELD, NEW_FLATFIELD };
|
||||
|
||||
/**
|
||||
* detector mode for processor
|
||||
*/
|
||||
enum detectorModeType {
|
||||
GET_DETECTOR_MODE = -1,
|
||||
COUNTING, /** < counting */
|
||||
INTERPOLATING, /** < interpolating */
|
||||
ANALOG /** < analog */
|
||||
};
|
||||
enum detectorModeType { COUNTING, INTERPOLATING, ANALOG };
|
||||
|
||||
/**
|
||||
* burst mode for gotthard2
|
||||
|
@ -9,4 +9,4 @@
|
||||
#define APIGOTTHARD2 0x200618
|
||||
#define APIJUNGFRAU 0x200618
|
||||
#define APIMYTHEN3 0x200618
|
||||
#define APIMOENCH 0x200615
|
||||
#define APIMOENCH 0x200618
|
||||
|
Loading…
x
Reference in New Issue
Block a user