diff --git a/python/src/enums.cpp b/python/src/enums.cpp index e1bfb622c..aa32559b8 100644 --- a/python/src/enums.cpp +++ b/python/src/enums.cpp @@ -274,9 +274,12 @@ void init_enums(py::module &m) { .export_values(); py::enum_(Defs, "burstMode") - .value("BURST_OFF", slsDetectorDefs::burstMode::BURST_OFF) .value("BURST_INTERNAL", slsDetectorDefs::burstMode::BURST_INTERNAL) .value("BURST_EXTERNAL", slsDetectorDefs::burstMode::BURST_EXTERNAL) + .value("CONTINUOUS_INTERNAL", + slsDetectorDefs::burstMode::CONTINUOUS_INTERNAL) + .value("CONTINUOUS_EXTERNAL", + slsDetectorDefs::burstMode::CONTINUOUS_EXTERNAL) .value("NUM_BURST_MODES", slsDetectorDefs::burstMode::NUM_BURST_MODES) .export_values(); diff --git a/slsDetectorGui/forms/form_tab_measurement.ui b/slsDetectorGui/forms/form_tab_measurement.ui index 5a9766232..2d47c5faa 100755 --- a/slsDetectorGui/forms/form_tab_measurement.ui +++ b/slsDetectorGui/forms/form_tab_measurement.ui @@ -1664,11 +1664,6 @@ Frame period between exposures. Timing Mode of the detector. #timing# - - - Off - - Burst Internal @@ -1676,7 +1671,17 @@ Frame period between exposures. - Burst external + Burst External + + + + + Continuous Internal + + + + + Continuous External diff --git a/slsDetectorGui/src/qTabMeasurement.cpp b/slsDetectorGui/src/qTabMeasurement.cpp index a9c7fc92e..eb0a6cbfe 100644 --- a/slsDetectorGui/src/qTabMeasurement.cpp +++ b/slsDetectorGui/src/qTabMeasurement.cpp @@ -152,7 +152,11 @@ void qTabMeasurement::Initialization() { void qTabMeasurement::ShowTriggerDelay() { bool showTrigger = true; if (det->getDetectorType().squash() == slsDetectorDefs::GOTTHARD2) { - if ((comboBurstMode->currentIndex() != slsDetectorDefs::BURST_OFF) && + // burst and auto + if ((comboBurstMode->currentIndex() == + slsDetectorDefs::BURST_INTERNAL || + comboBurstMode->currentIndex() == + slsDetectorDefs::BURST_EXTERNAL) && (comboTimingMode->currentIndex() == AUTO)) { // show burst, burstperiod, not trigger or delay showTrigger = false; @@ -368,9 +372,10 @@ void qTabMeasurement::GetBurstMode() { auto retval = det->getBurstMode().tsquash( "Inconsistent burst mode for all detectors."); switch (retval) { - case slsDetectorDefs::BURST_OFF: case slsDetectorDefs::BURST_INTERNAL: case slsDetectorDefs::BURST_EXTERNAL: + case slsDetectorDefs::CONTINUOUS_INTERNAL: + case slsDetectorDefs::CONTINUOUS_EXTERNAL: comboBurstMode->setCurrentIndex((int)retval); ShowTriggerDelay(); break; diff --git a/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer b/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer index 36c816270..1c51e1732 100755 Binary files a/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer and b/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer differ diff --git a/slsDetectorServers/gotthard2DetectorServer/RegisterDefs.h b/slsDetectorServers/gotthard2DetectorServer/RegisterDefs.h index aa58f7f9f..82471c63f 100644 --- a/slsDetectorServers/gotthard2DetectorServer/RegisterDefs.h +++ b/slsDetectorServers/gotthard2DetectorServer/RegisterDefs.h @@ -121,9 +121,10 @@ #define ASIC_CONFIG_RUN_MODE_OFST (0) #define ASIC_CONFIG_RUN_MODE_MSK (0x00000003 << ASIC_CONFIG_RUN_MODE_OFST) -#define ASIC_CONFIG_RUN_MODE_INT_BURST_VAL ((0x1 << ASIC_CONFIG_RUN_MODE_OFST) & ASIC_CONFIG_RUN_MODE_MSK) -#define ASIC_CONFIG_RUN_MODE_CONT_VAL ((0x2 << ASIC_CONFIG_RUN_MODE_OFST) & ASIC_CONFIG_RUN_MODE_MSK) -#define ASIC_CONFIG_RUN_MODE_EXT_BURST_VAL ((0x3 << ASIC_CONFIG_RUN_MODE_OFST) & ASIC_CONFIG_RUN_MODE_MSK) +#define ASIC_CONFIG_RUN_MODE_INT_BURST_VAL ((0x0 << ASIC_CONFIG_RUN_MODE_OFST) & ASIC_CONFIG_RUN_MODE_MSK) +#define ASIC_CONFIG_RUN_MODE_EXT_BURST_VAL ((0x1 << ASIC_CONFIG_RUN_MODE_OFST) & ASIC_CONFIG_RUN_MODE_MSK) +#define ASIC_CONFIG_RUN_MODE_INT_CONT_VAL ((0x2 << ASIC_CONFIG_RUN_MODE_OFST) & ASIC_CONFIG_RUN_MODE_MSK) +#define ASIC_CONFIG_RUN_MODE_EXT_CONT_VAL ((0x3 << ASIC_CONFIG_RUN_MODE_OFST) & ASIC_CONFIG_RUN_MODE_MSK) #define ASIC_CONFIG_GAIN_OFST (4) #define ASIC_CONFIG_GAIN_MSK (0x00000003 << ASIC_CONFIG_GAIN_OFST) #define ASIC_CONFIG_DYNAMIC_GAIN_VAL ((0x0 << ASIC_CONFIG_GAIN_OFST) & ASIC_CONFIG_GAIN_MSK) diff --git a/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer b/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer index 1a3305b06..171aedcaa 100755 Binary files a/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer and b/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer differ diff --git a/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c index 90c4971ec..e00ffd8cf 100644 --- a/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c @@ -809,11 +809,15 @@ int setDynamicRange(int dr) { return DYNAMIC_RANGE; } /* parameters - timer */ void setNumFrames(int64_t val) { if (val > 0) { - if (burstMode == BURST_OFF) { + // continuous + if (burstMode == CONTINUOUS_INTERNAL || + burstMode == CONTINUOUS_EXTERNAL) { LOG(logINFO, ("Setting number of frames %lld [Continuous mode]\n", val)); set64BitReg(val, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); - } else { + } + // burst + else { LOG(logINFO, ("Setting number of frames %d [Burst mode]\n", (int)val)); bus_w(ASIC_INT_FRAMES_REG, @@ -826,9 +830,12 @@ void setNumFrames(int64_t val) { } int64_t getNumFrames() { - if (burstMode == BURST_OFF) { + // continuous + if (burstMode == CONTINUOUS_INTERNAL || burstMode == CONTINUOUS_EXTERNAL) { return get64BitReg(SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); - } else { + } + // burst + else { return ((bus_r(ASIC_INT_FRAMES_REG) & ASIC_INT_FRAMES_MSK) >> ASIC_INT_FRAMES_OFST); } @@ -856,9 +863,13 @@ int64_t getNumTriggers() { void setNumBursts(int64_t val) { if (val > 0) { LOG(logINFO, ("Setting number of bursts %lld\n", val)); - if (burstMode != BURST_OFF && getTiming() == AUTO_TIMING) { + // burst and auto + if ((burstMode == BURST_INTERNAL || burstMode == BURST_EXTERNAL) && + getTiming() == AUTO_TIMING) { set64BitReg(val, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); - } else { + } + // burst-trigger or continuous + else { LOG(logINFO, ("\tNot (Burst and Auto mode): not writing to register\n")); numBurstsReg = val; @@ -867,9 +878,12 @@ void setNumBursts(int64_t val) { } int64_t getNumBursts() { - if (burstMode != BURST_OFF && getTiming() == AUTO_TIMING) { + // burst and auto + if ((burstMode == BURST_INTERNAL || burstMode == BURST_EXTERNAL) && + getTiming() == AUTO_TIMING) { return get64BitReg(SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); } + // burst-trigger or continuous return numBurstsReg; } @@ -901,11 +915,14 @@ int setPeriod(int64_t val) { LOG(logERROR, ("Invalid period: %lld ns\n", val)); return FAIL; } - if (burstMode == BURST_OFF) { + // continuous + if (burstMode == CONTINUOUS_INTERNAL || burstMode == CONTINUOUS_EXTERNAL) { LOG(logINFO, ("Setting period %lld ns [Continuous mode]\n", val)); val *= (1E-9 * systemFrequency); set64BitReg(val, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); - } else { + } + // burst + else { LOG(logINFO, ("Setting period %lld ns [Burst mode]\n", val)); val *= (1E-9 * systemFrequency); set64BitReg(val, ASIC_INT_PERIOD_LSB_REG, ASIC_INT_PERIOD_MSB_REG); @@ -920,10 +937,13 @@ int setPeriod(int64_t val) { } int64_t getPeriod() { - if (burstMode == BURST_OFF) { + // continuous + if (burstMode == CONTINUOUS_INTERNAL || burstMode == CONTINUOUS_EXTERNAL) { return get64BitReg(SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG) / (1E-9 * systemFrequency); - } else { + } + // burst + else { return get64BitReg(ASIC_INT_PERIOD_LSB_REG, ASIC_INT_PERIOD_MSB_REG) / (1E-9 * systemFrequency); } @@ -966,9 +986,13 @@ int setBurstPeriod(int64_t val) { } LOG(logINFO, ("Setting burst period %lld ns\n", val)); val *= (1E-9 * systemFrequency); - if (burstMode != BURST_OFF && getTiming() == AUTO_TIMING) { + // burst and auto + if ((burstMode == BURST_INTERNAL || burstMode == BURST_EXTERNAL) && + getTiming() == AUTO_TIMING) { set64BitReg(val, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); - } else { + } + // burst-trigger, continuous + else { LOG(logINFO, ("\tNot (Burst and Auto mode): not writing to register\n")); burstPeriodReg = val; @@ -984,10 +1008,13 @@ int setBurstPeriod(int64_t val) { } int64_t getBurstPeriod() { - if (burstMode != BURST_OFF && getTiming() == AUTO_TIMING) { + // burst and auto + if ((burstMode == BURST_INTERNAL || burstMode == BURST_EXTERNAL) && + getTiming() == AUTO_TIMING) { return get64BitReg(SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG) / (1E-9 * systemFrequency); } + // burst-trigger, continuous return burstPeriodReg / (1E-9 * systemFrequency); } @@ -1211,7 +1238,7 @@ void setTiming(enum timingMode arg) { get64BitReg(SET_TRIGGER_DELAY_LSB_REG, SET_TRIGGER_DELAY_MSB_REG); } // auto and burst - else if (burstMode != BURST_OFF) { + else if (burstMode == BURST_INTERNAL || burstMode == BURST_EXTERNAL) { numBurstsReg = get64BitReg(SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); burstPeriodReg = get64BitReg(SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); } @@ -1238,7 +1265,7 @@ void setTiming(enum timingMode arg) { LOG(logINFO, ("\tTriggers reg: %lld, Delay reg: %lldns\n", getNumTriggers(), getDelayAfterTrigger())); // burst - if (burstMode != BURST_OFF) { + if (burstMode == BURST_INTERNAL || burstMode == BURST_EXTERNAL) { LOG(logINFO, ("\tFrame reg: 1, Period reg: 0\n")) set64BitReg(1, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); set64BitReg(0, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); @@ -1250,7 +1277,7 @@ void setTiming(enum timingMode arg) { set64BitReg(1, SET_CYCLES_LSB_REG, SET_CYCLES_MSB_REG); set64BitReg(0, SET_TRIGGER_DELAY_LSB_REG, SET_TRIGGER_DELAY_MSB_REG); // burst - if (burstMode != BURST_OFF) { + if (burstMode == BURST_INTERNAL || burstMode == BURST_EXTERNAL) { set64BitReg(numBurstsReg, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); set64BitReg(burstPeriodReg, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); LOG(logINFO, ("\tFrames reg (bursts): %lld, Period reg(burst " @@ -2053,15 +2080,18 @@ int setBurstModeinFPGA(enum burstMode value) { uint32_t addr = ASIC_CONFIG_REG; uint32_t runmode = 0; switch (value) { - case BURST_OFF: - runmode = ASIC_CONFIG_RUN_MODE_CONT_VAL; - break; case BURST_INTERNAL: runmode = ASIC_CONFIG_RUN_MODE_INT_BURST_VAL; break; case BURST_EXTERNAL: runmode = ASIC_CONFIG_RUN_MODE_EXT_BURST_VAL; break; + case CONTINUOUS_INTERNAL: + runmode = ASIC_CONFIG_RUN_MODE_INT_CONT_VAL; + break; + case CONTINUOUS_EXTERNAL: + runmode = ASIC_CONFIG_RUN_MODE_EXT_CONT_VAL; + break; default: LOG(logERROR, ("Unknown burst mode %d\n", value)); return FAIL; @@ -2075,16 +2105,20 @@ int setBurstModeinFPGA(enum burstMode value) { } int setBurstMode(enum burstMode burst) { - LOG(logINFO, ("Setting burst mode to %s\n", - burst == BURST_OFF - ? "off" - : (burst == BURST_INTERNAL ? "internal" : "external"))); + LOG(logINFO, + ("Setting burst mode to %s\n", + (burst == BURST_INTERNAL + ? "burst_internal" + : (burst == BURST_EXTERNAL ? "burst external" + : (burst == CONTINUOUS_INTERNAL + ? "continuous internal" + : "continuous external"))))); // update int64_t framesReg = 0; int64_t periodReg = 0; // burst - if (burstMode != BURST_OFF) { + if (burstMode == BURST_INTERNAL || burstMode == BURST_EXTERNAL) { framesReg = ((bus_r(ASIC_INT_FRAMES_REG) & ASIC_INT_FRAMES_MSK) >> ASIC_INT_FRAMES_OFST); periodReg = @@ -2108,7 +2142,7 @@ int setBurstMode(enum burstMode burst) { LOG(logINFO, ("\tUpdating registers\n")); // continuous - if (burstMode == BURST_OFF) { + if (burstMode == CONTINUOUS_INTERNAL || burstMode == CONTINUOUS_EXTERNAL) { set64BitReg(framesReg, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); set64BitReg(periodReg, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); LOG(logINFO, ("\tFrames reg: %lld, Period reg: %lldns\n", @@ -2158,14 +2192,17 @@ int configureASICGlobalSettings() { int value = ((filter << ASIC_FILTER_OFST) & ASIC_FILTER_MSK) | ((cdsGain << ASIC_CDS_GAIN_OFST) & ASIC_CDS_GAIN_MSK); switch (burstMode) { - case BURST_OFF: - value |= (ASIC_CONT_MODE_MSK | ASIC_EXT_TIMING_MSK); - break; case BURST_INTERNAL: break; case BURST_EXTERNAL: value |= ASIC_EXT_TIMING_MSK; break; + case CONTINUOUS_INTERNAL: + value |= ASIC_CONT_MODE_MSK; + break; + case CONTINUOUS_EXTERNAL: + value |= (ASIC_CONT_MODE_MSK | ASIC_EXT_TIMING_MSK); + break; } LOG(logINFO, ("\tSending Global Chip settings:0x%x (filter:%d, " "cdsgain:%d)\n", @@ -2214,15 +2251,18 @@ enum burstMode getBurstMode() { uint32_t addr = ASIC_CONFIG_REG; int runmode = bus_r(addr) & ASIC_CONFIG_RUN_MODE_MSK; switch (runmode) { - case ASIC_CONFIG_RUN_MODE_CONT_VAL: - burstMode = BURST_OFF; - break; case ASIC_CONFIG_RUN_MODE_INT_BURST_VAL: burstMode = BURST_INTERNAL; break; case ASIC_CONFIG_RUN_MODE_EXT_BURST_VAL: burstMode = BURST_EXTERNAL; break; + case ASIC_CONFIG_RUN_MODE_INT_CONT_VAL: + burstMode = CONTINUOUS_INTERNAL; + break; + case ASIC_CONFIG_RUN_MODE_EXT_CONT_VAL: + burstMode = CONTINUOUS_EXTERNAL; + break; default: LOG(logERROR, ("Unknown run mode read from FPGA %d\n", runmode)); return -1; @@ -2431,9 +2471,13 @@ void *start_timer(void *arg) { int numRepeats = getNumTriggers(); if (getTiming() == AUTO_TIMING) { - if (burstMode == BURST_OFF) { + // continuous + if (burstMode == CONTINUOUS_INTERNAL || + burstMode == CONTINUOUS_EXTERNAL) { numRepeats = 1; - } else { + } + // burst + else { numRepeats = getNumBursts(); } } @@ -2511,8 +2555,8 @@ void *start_timer(void *arg) { sendUDPPacket(1, packetData2, vetopacketsize); } LOG(logINFO, - ("Sent frame: %d (bursts: %d) [%lld]\n", frameNr, repeatNr, - (long long unsigned int)virtual_currentFrameNumber)); + ("Sent frame: %d (bursts/ triggers: %d) [%lld]\n", frameNr, + repeatNr, (long long unsigned int)virtual_currentFrameNumber)); clock_gettime(CLOCK_REALTIME, &end); int64_t timeNs = ((end.tv_sec - begin.tv_sec) * 1E9 + (end.tv_nsec - begin.tv_nsec)); diff --git a/slsDetectorServers/gotthardDetectorServer/bin/gotthardDetectorServer_developer b/slsDetectorServers/gotthardDetectorServer/bin/gotthardDetectorServer_developer index 166361f29..3c2de1fe6 100755 Binary files a/slsDetectorServers/gotthardDetectorServer/bin/gotthardDetectorServer_developer and b/slsDetectorServers/gotthardDetectorServer/bin/gotthardDetectorServer_developer differ diff --git a/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer b/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer index cf5761cc0..02b584437 100755 Binary files a/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer and b/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer differ diff --git a/slsDetectorServers/moenchDetectorServer/bin/moenchDetectorServer_developer b/slsDetectorServers/moenchDetectorServer/bin/moenchDetectorServer_developer index 9f59d08df..ac59ef416 100755 Binary files a/slsDetectorServers/moenchDetectorServer/bin/moenchDetectorServer_developer and b/slsDetectorServers/moenchDetectorServer/bin/moenchDetectorServer_developer differ diff --git a/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer b/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer index 3a3693b91..293d1b513 100755 Binary files a/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer and b/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer differ diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index a6178b1f2..adc94c79c 100644 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -1940,7 +1940,9 @@ int set_num_frames(int file_des) { } else { #ifdef GOTTHARD2D // validate #frames in burst mode - if (getBurstMode() != BURST_OFF && arg > MAX_FRAMES_IN_BURST_MODE) { + enum burstMode mode = getBurstMode(); + if ((mode == BURST_INTERNAL || mode == BURST_EXTERNAL) && + arg > MAX_FRAMES_IN_BURST_MODE) { ret = FAIL; sprintf(mess, "Could not set number of frames %lld. Must be <= %d in " @@ -6494,7 +6496,7 @@ int set_veto_reference(int file_des) { int set_burst_mode(int file_des) { ret = OK; memset(mess, 0, sizeof(mess)); - enum burstMode arg = BURST_OFF; + enum burstMode arg = BURST_INTERNAL; if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0) return printSocketReadError(); @@ -6506,9 +6508,10 @@ int set_burst_mode(int file_des) { // only set if (Server_VerifyLock() == OK) { switch (arg) { - case BURST_OFF: case BURST_INTERNAL: case BURST_EXTERNAL: + case CONTINUOUS_INTERNAL: + case CONTINUOUS_EXTERNAL: break; default: modeNotImplemented("Burst mode", (int)arg); @@ -6533,7 +6536,7 @@ int set_burst_mode(int file_des) { int get_burst_mode(int file_des) { ret = OK; memset(mess, 0, sizeof(mess)); - enum burstMode retval = BURST_OFF; + enum burstMode retval = BURST_INTERNAL; LOG(logDEBUG1, ("Getting burst mode\n")); diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index 39ddef1f5..07781ad13 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -1087,7 +1087,8 @@ class Detector { /** [Gotthard2] */ Result getBurstMode(Positions pos = {}); - /** [Gotthard2] BURST_OFF, BURST_INTERNAL (default), BURST_EXTERNAL */ + /** [Gotthard2] BURST_INTERNAL (default), BURST_EXTERNAL, + * CONTINUOUS_INTERNAL, CONTINUOUS_EXTERNAL */ void setBurstMode(defs::burstMode value, Positions pos = {}); /** [Gotthard2] */ diff --git a/slsDetectorSoftware/src/CmdProxy.cpp b/slsDetectorSoftware/src/CmdProxy.cpp index a67b7af00..9e83a552f 100644 --- a/slsDetectorSoftware/src/CmdProxy.cpp +++ b/slsDetectorSoftware/src/CmdProxy.cpp @@ -1687,8 +1687,8 @@ std::string CmdProxy::BurstMode(int action) { std::ostringstream os; os << cmd << ' '; if (action == defs::HELP_ACTION) { - os << "[off or 0, internal or 1, external or 2]\n\t[Gotthard2] Default " - "is burst internal type" + os << "[burst_internal or 0, burst_external or 1, cw_internal or 2, " + "cw_external or 3]\n\t[Gotthard2] Default is burst_internal type" << '\n'; } else { if (action == defs::GET_ACTION) { @@ -1706,14 +1706,17 @@ std::string CmdProxy::BurstMode(int action) { int ival = StringTo(args[0]); switch (ival) { case 0: - t = defs::BURST_OFF; - break; - case 1: t = defs::BURST_INTERNAL; break; - case 2: + case 1: t = defs::BURST_EXTERNAL; break; + case 2: + t = defs::CONTINUOUS_INTERNAL; + break; + case 3: + t = defs::CONTINUOUS_EXTERNAL; + break; default: throw sls::RuntimeError("Unknown burst mode " + args[0]); } diff --git a/slsDetectorSoftware/tests/test-CmdProxy-gotthard2.cpp b/slsDetectorSoftware/tests/test-CmdProxy-gotthard2.cpp index 4dabe8ac6..b78338d23 100644 --- a/slsDetectorSoftware/tests/test-CmdProxy-gotthard2.cpp +++ b/slsDetectorSoftware/tests/test-CmdProxy-gotthard2.cpp @@ -230,7 +230,7 @@ TEST_CASE("bursts", "[.cmd][.new]") { } // continuous mode: reg set to #frames, // but bursts should return same value - det.setBurstMode(defs::BURST_OFF); + det.setBurstMode(defs::CONTINUOUS_INTERNAL); det.setNumberOfFrames(2); { std::ostringstream oss; @@ -370,18 +370,18 @@ TEST_CASE("burstmode", "[.cmd][.new]") { auto burststr = sls::ToString(burst); { std::ostringstream oss; - proxy.Call("burstmode", {"internal"}, -1, PUT, oss); - REQUIRE(oss.str() == "burstmode internal\n"); + proxy.Call("burstmode", {"burst_internal"}, -1, PUT, oss); + REQUIRE(oss.str() == "burstmode burst_internal\n"); } { std::ostringstream oss; - proxy.Call("burstmode", {"off"}, -1, PUT, oss); - REQUIRE(oss.str() == "burstmode off\n"); + proxy.Call("burstmode", {"cw_internal"}, -1, PUT, oss); + REQUIRE(oss.str() == "burstmode cw_internal\n"); } { std::ostringstream oss; proxy.Call("burstmode", {}, -1, GET, oss); - REQUIRE(oss.str() == "burstmode off\n"); + REQUIRE(oss.str() == "burstmode cw_internal\n"); } for (int i = 0; i != det.size(); ++i) { det.setBurstMode(burst[i], {i}); diff --git a/slsReceiverSoftware/src/Implementation.cpp b/slsReceiverSoftware/src/Implementation.cpp index fdd7392c1..0524cd125 100644 --- a/slsReceiverSoftware/src/Implementation.cpp +++ b/slsReceiverSoftware/src/Implementation.cpp @@ -1125,9 +1125,9 @@ void Implementation::updateTotalNumberOfFrames() { int64_t repeats = numberOfTriggers; // gotthard2: auto mode // burst mode: (bursts instead of triggers) - // non burst mode: no bursts or triggers + // continuous mode: no bursts or triggers if (myDetectorType == GOTTHARD2 && timingMode == AUTO_TIMING) { - if (burstMode != BURST_OFF) { + if (burstMode == BURST_INTERNAL || burstMode == BURST_EXTERNAL) { repeats = numberOfBursts; } else { repeats = 1; diff --git a/slsSupportLib/include/sls_detector_defs.h b/slsSupportLib/include/sls_detector_defs.h index 3407954da..2fa9919fa 100644 --- a/slsSupportLib/include/sls_detector_defs.h +++ b/slsSupportLib/include/sls_detector_defs.h @@ -391,9 +391,10 @@ typedef struct { * burst mode for gotthard2 */ enum burstMode { - BURST_OFF, BURST_INTERNAL, BURST_EXTERNAL, + CONTINUOUS_INTERNAL, + CONTINUOUS_EXTERNAL, NUM_BURST_MODES }; @@ -471,7 +472,7 @@ typedef struct { uint32_t adc10gMask{0}; ROI roi; uint32_t countermask{0}; - burstMode burstType{BURST_OFF}; + burstMode burstType{BURST_INTERNAL}; int64_t expTime1Ns{0}; int64_t expTime2Ns{0}; int64_t expTime3Ns{0}; diff --git a/slsSupportLib/include/versionAPI.h b/slsSupportLib/include/versionAPI.h index d9acf7aa6..500721175 100644 --- a/slsSupportLib/include/versionAPI.h +++ b/slsSupportLib/include/versionAPI.h @@ -3,10 +3,10 @@ #define APILIB 0x200810 #define APIRECEIVER 0x200810 #define APIGUI 0x200804 -#define APICTB 0x200828 -#define APIGOTTHARD 0x200828 -#define APIGOTTHARD2 0x200908 -#define APIJUNGFRAU 0x200828 -#define APIMYTHEN3 0x200908 -#define APIMOENCH 0x200828 #define APIEIGER 0x200908 +#define APICTB 0x200908 +#define APIGOTTHARD 0x200908 +#define APIGOTTHARD2 0x200908 +#define APIJUNGFRAU 0x200908 +#define APIMYTHEN3 0x200908 +#define APIMOENCH 0x200908 diff --git a/slsSupportLib/src/ToString.cpp b/slsSupportLib/src/ToString.cpp index 678121c8c..a69097365 100644 --- a/slsSupportLib/src/ToString.cpp +++ b/slsSupportLib/src/ToString.cpp @@ -559,12 +559,14 @@ std::string ToString(const std::vector &vec) { std::string ToString(const defs::burstMode s) { switch (s) { - case defs::BURST_OFF: - return std::string("off"); case defs::BURST_INTERNAL: - return std::string("internal"); + return std::string("burst_internal"); case defs::BURST_EXTERNAL: - return std::string("external"); + return std::string("burst_external"); + case defs::CONTINUOUS_INTERNAL: + return std::string("cw_internal"); + case defs::CONTINUOUS_EXTERNAL: + return std::string("cw_external"); default: return std::string("Unknown"); } @@ -922,12 +924,14 @@ template <> defs::dacIndex StringTo(const std::string &s) { } template <> defs::burstMode StringTo(const std::string &s) { - if (s == "off") - return defs::BURST_OFF; - if (s == "internal") + if (s == "burst_internal") return defs::BURST_INTERNAL; - if (s == "external") + if (s == "burst_external") return defs::BURST_EXTERNAL; + if (s == "cw_internal") + return defs::CONTINUOUS_INTERNAL; + if (s == "cw_external") + return defs::CONTINUOUS_EXTERNAL; throw sls::RuntimeError("Unknown burst mode " + s); }