mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-12 04:47:14 +02:00
synced master status running when setting to slave (#747)
* jf: unsync before setting master/slave and then sync (if it was set) to overcome master going into running state when making it a slave and synced * add tests for this condition * updated release notes, updated min fw version requirement for v1.0 boards
This commit is contained in:
@ -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
|
||||
|
Binary file not shown.
@ -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) {
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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"
|
||||
|
Reference in New Issue
Block a user