diff --git a/RELEASE.txt b/RELEASE.txt index 89f0184cc..b7f8f70eb 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -23,6 +23,11 @@ This document describes the differences between v7.0.1 and v7.0.0 - jungfrau multi mod sync mode (start, trigger, stop) - set/get timing jungfrau does not give error when syc enabled - switching between 1 and 2 interfaces did not set gui/client zmq port properly. Resulted in dummy streaming forever. + - rx_roi in zmq header for external guis + - show fix go in expert mode from any tab (not just settings tab) + - if synced, setting master to slave would have changed status to running. workaround found in software + - new firmware requirement for fix. if acq stopped in sync mode the slave stays running for next acquisition and framesl is stuck from previous acq. + 2 On-board Detector Server Compatibility diff --git a/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServerv7.0.2 b/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServerv7.0.2 index 820c9cb9e..30807e5cb 100755 Binary files a/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServerv7.0.2 and b/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServerv7.0.2 differ diff --git a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c index c34db22d4..0309d5396 100644 --- a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c @@ -1388,14 +1388,18 @@ int setMaster(enum MASTERINDEX m) { char *master_names[] = {MASTER_NAMES}; LOG(logINFOBLUE, ("Setting up as %s in (%s server)\n", master_names[m], (isControlServer ? "control" : "stop"))); + + int prevSync = getSynchronization(); + setSynchronization(0); int retval = -1; + int retMaster = OK; switch (m) { case OW_MASTER: bus_w(CONTROL_REG, bus_r(CONTROL_REG) | CONTROL_MASTER_MSK); isMaster(&retval); if (retval != 1) { LOG(logERROR, ("Could not set master\n")); - return FAIL; + retMaster = FAIL; } break; case OW_SLAVE: @@ -1403,15 +1407,16 @@ int setMaster(enum MASTERINDEX m) { isMaster(&retval); if (retval != 0) { LOG(logERROR, ("Could not set slave\n")); - return FAIL; + retMaster = FAIL; } break; default: LOG(logERROR, ("Cannot reset to hardware settings from client. Restart " "detector server.\n")); - return FAIL; + retMaster = FAIL; } - return OK; + setSynchronization(prevSync); + return retMaster; } int isMaster(int *retval) { diff --git a/slsDetectorServers/jungfrauDetectorServer/slsDetectorServer_defs.h b/slsDetectorServers/jungfrauDetectorServer/slsDetectorServer_defs.h index d54926855..9a08463bc 100644 --- a/slsDetectorServers/jungfrauDetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorServers/jungfrauDetectorServer/slsDetectorServer_defs.h @@ -5,7 +5,7 @@ #include "sls/sls_detector_defs.h" #define MIN_REQRD_VRSN_T_RD_API 0x171220 -#define REQRD_FRMWRE_VRSN_BOARD2 0x221104 // 1.0 pcb (version = 010) +#define REQRD_FRMWRE_VRSN_BOARD2 0x230515 // 1.0 pcb (version = 010) #define REQRD_FRMWRE_VRSN 0x221103 // 2.0 pcb (version = 011) #define NUM_HARDWARE_VERSIONS (2) diff --git a/slsDetectorSoftware/tests/test-CmdProxy-jungfrau.cpp b/slsDetectorSoftware/tests/test-CmdProxy-jungfrau.cpp index 21e8eb1e8..2652365c4 100644 --- a/slsDetectorSoftware/tests/test-CmdProxy-jungfrau.cpp +++ b/slsDetectorSoftware/tests/test-CmdProxy-jungfrau.cpp @@ -523,6 +523,28 @@ TEST_CASE("sync", "[.cmd]") { proxy.Call("sync", {"1"}, -1, PUT, oss); REQUIRE(oss.str() == "sync 1\n"); } + // setting to master or slave when synced + { + // get previous master + int prevMaster = 0; + auto previous = det.getMaster(); + for (int i = 0; i != det.size(); ++i) { + if (previous[i] == 1) { + prevMaster = i; + break; + } + } + proxy.Call("master", {"1"}, 0, PUT); + proxy.Call("master", {"0"}, 0, PUT); + std::ostringstream oss; + proxy.Call("status", {}, -1, GET, oss); + REQUIRE(oss.str() != "status running\n"); + // set all to slaves, and then master + for (int i = 0; i != det.size(); ++i) { + det.setMaster(0, {i}); + } + det.setMaster(1, prevMaster); + } { std::ostringstream oss; proxy.Call("sync", {}, -1, GET, oss); diff --git a/slsSupportLib/include/sls/versionAPI.h b/slsSupportLib/include/sls/versionAPI.h index 03f4d373f..c0b0643a1 100644 --- a/slsSupportLib/include/sls/versionAPI.h +++ b/slsSupportLib/include/sls/versionAPI.h @@ -9,5 +9,5 @@ #define APIMOENCH "7.0.0 0x230222" #define APIEIGER "7.0.0 0x230222" #define APIRECEIVER "7.0.0 0x230222" -#define APIJUNGFRAU "7.0.2 0x230420" #define APILIB "7.0.2 0x230421" +#define APIJUNGFRAU "7.0.2 0x230517"