diff --git a/slsDetectorSoftware/src/CmdProxy.cpp b/slsDetectorSoftware/src/CmdProxy.cpp index 35f3cf777..bb37e1db9 100644 --- a/slsDetectorSoftware/src/CmdProxy.cpp +++ b/slsDetectorSoftware/src/CmdProxy.cpp @@ -274,12 +274,13 @@ std::string CmdProxy::Versions(int action) { if (!args.empty()) { WrongNumberOfParameters(0); } + bool eiger = (det->getDetectorType().squash() == defs::EIGER); auto t = det->getFirmwareVersion(std::vector{det_id}); os << "\nType : " << OutString(det->getDetectorType()) << "\nRelease : " << det->getPackageVersion() << std::hex << "\nClient : " << det->getClientVersion(); os << "\nFirmware : "; - if (det->getDetectorType().squash() == defs::EIGER) { + if (eiger) { os << OutString(t); } else { os << OutStringHex(t); @@ -287,6 +288,7 @@ std::string CmdProxy::Versions(int action) { os << "\nServer : " << OutString( det->getDetectorServerVersion(std::vector{det_id})); + if (!eiger) os << "\nHardware : " << OutString(det->getHardwareVersion(std::vector{det_id})); os << "\nKernel : " diff --git a/slsDetectorSoftware/src/CmdProxy.h b/slsDetectorSoftware/src/CmdProxy.h index 3b5424830..dd3b69449 100644 --- a/slsDetectorSoftware/src/CmdProxy.h +++ b/slsDetectorSoftware/src/CmdProxy.h @@ -1599,7 +1599,7 @@ class CmdProxy { "data from detector. Default: 1.\n\tAlso enables second interface in " "receiver for listening (Writes a file per interface if writing " "enabled).\n\tAlso restarts client and receiver zmq sockets if zmq " - "streaming enabled."); + "streaming enabled.\n\t[Eiger] Only gets with result 2."); INTEGER_COMMAND_VEC_ID( selinterface, getSelectedUDPInterface, selectUDPInterface, diff --git a/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp b/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp index 4aadf686c..ebab79135 100644 --- a/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp +++ b/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp @@ -235,7 +235,7 @@ TEST_CASE("Setting and reading back EIGER dacs", "[.cmd][.dacs]") { /* Network Configuration (Detector<->Receiver) */ -TEST_CASE("txndelay_left", "[.cmd]") { +TEST_CASE("txdelay_left", "[.cmd]") { Detector det; CmdProxy proxy(&det); auto det_type = det.getDetectorType().squash(); @@ -243,20 +243,20 @@ TEST_CASE("txndelay_left", "[.cmd]") { auto prev_val = det.getTransmissionDelayLeft(); { std::ostringstream oss1, oss2; - proxy.Call("txndelay_left", {"5000"}, -1, PUT, oss1); - REQUIRE(oss1.str() == "txndelay_left 5000\n"); - proxy.Call("txndelay_left", {}, -1, GET, oss2); - REQUIRE(oss2.str() == "txndelay_left 5000\n"); + proxy.Call("txdelay_left", {"5000"}, -1, PUT, oss1); + REQUIRE(oss1.str() == "txdelay_left 5000\n"); + proxy.Call("txdelay_left", {}, -1, GET, oss2); + REQUIRE(oss2.str() == "txdelay_left 5000\n"); } for (int i = 0; i != det.size(); ++i) { det.setTransmissionDelayLeft(prev_val[i]); } } else { - REQUIRE_THROWS(proxy.Call("txndelay_left", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("txdelay_left", {}, -1, GET)); } } -TEST_CASE("txndelay_right", "[.cmd]") { +TEST_CASE("txdelay_right", "[.cmd]") { Detector det; CmdProxy proxy(&det); auto det_type = det.getDetectorType().squash(); @@ -264,16 +264,16 @@ TEST_CASE("txndelay_right", "[.cmd]") { auto prev_val = det.getTransmissionDelayRight(); { std::ostringstream oss1, oss2; - proxy.Call("txndelay_right", {"5000"}, -1, PUT, oss1); - REQUIRE(oss1.str() == "txndelay_right 5000\n"); - proxy.Call("txndelay_right", {}, -1, GET, oss2); - REQUIRE(oss2.str() == "txndelay_right 5000\n"); + proxy.Call("txdelay_right", {"5000"}, -1, PUT, oss1); + REQUIRE(oss1.str() == "txdelay_right 5000\n"); + proxy.Call("txdelay_right", {}, -1, GET, oss2); + REQUIRE(oss2.str() == "txdelay_right 5000\n"); } for (int i = 0; i != det.size(); ++i) { det.setTransmissionDelayRight(prev_val[i]); } } else { - REQUIRE_THROWS(proxy.Call("txndelay_right", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("txdelay_right", {}, -1, GET)); } } diff --git a/slsDetectorSoftware/tests/test-CmdProxy-jungfrau.cpp b/slsDetectorSoftware/tests/test-CmdProxy-jungfrau.cpp index 87814f281..5ac516b9a 100644 --- a/slsDetectorSoftware/tests/test-CmdProxy-jungfrau.cpp +++ b/slsDetectorSoftware/tests/test-CmdProxy-jungfrau.cpp @@ -98,38 +98,6 @@ TEST_CASE("Setting and reading back Jungfrau dacs", "[.cmd][.dacs]") { /* Network Configuration (Detector<->Receiver) */ -TEST_CASE("numinterfaces", "[.cmd]") { - Detector det; - CmdProxy proxy(&det); - auto det_type = det.getDetectorType().squash(); - if (det_type == defs::JUNGFRAU) { - auto prev_val = det.getNumberofUDPInterfaces().tsquash( - "inconsistent numinterfaces to test"); - { - std::ostringstream oss; - proxy.Call("numinterfaces", {"2"}, -1, PUT, oss); - REQUIRE(oss.str() == "numinterfaces 2\n"); - } - { - std::ostringstream oss; - proxy.Call("numinterfaces", {"1"}, -1, PUT, oss); - REQUIRE(oss.str() == "numinterfaces 1\n"); - } - { - std::ostringstream oss; - proxy.Call("numinterfaces", {}, -1, GET, oss); - REQUIRE(oss.str() == "numinterfaces 1\n"); - } - det.setNumberofUDPInterfaces(prev_val); - } else { - std::ostringstream oss; - proxy.Call("numinterfaces", {}, -1, GET, oss); - REQUIRE(oss.str() == "numinterfaces 1\n"); - REQUIRE_THROWS(proxy.Call("numinterfaces", {"1"}, -1, PUT)); - } - REQUIRE_THROWS(proxy.Call("numinterfaces", {"3"}, -1, PUT)); - REQUIRE_THROWS(proxy.Call("numinterfaces", {"0"}, -1, PUT)); -} TEST_CASE("selinterface", "[.cmd]") { Detector det; diff --git a/slsDetectorSoftware/tests/test-CmdProxy-rx.cpp b/slsDetectorSoftware/tests/test-CmdProxy-rx.cpp index 93a10227d..1f4b7e8fa 100644 --- a/slsDetectorSoftware/tests/test-CmdProxy-rx.cpp +++ b/slsDetectorSoftware/tests/test-CmdProxy-rx.cpp @@ -4,6 +4,7 @@ #include "catch.hpp" #include "sls/Detector.h" #include "sls/sls_detector_defs.h" +#include "sls/Version.h" #include #include "sls/versionAPI.h" @@ -26,15 +27,15 @@ TEST_CASE("rx_version", "[.cmd][.rx]") { CmdProxy proxy(&det); std::ostringstream oss; proxy.Call("rx_version", {}, -1, GET, oss); + sls::Version v(APIRECEIVER); std::ostringstream vs; - vs << "rx_version 0x" << std::hex << APIRECEIVER << '\n'; + vs << "rx_version " << v.concise() << '\n'; REQUIRE(oss.str() == vs.str()); REQUIRE_THROWS(proxy.Call("rx_version", {"0"}, -1, PUT)); } /* acquisition */ - TEST_CASE("rx_start", "[.cmd][.rx]") { Detector det; CmdProxy proxy(&det); @@ -128,6 +129,9 @@ TEST_CASE("rx_missingpackets", "[.cmd][.rx]") { auto prev_val = det.getFileWrite(); det.setFileWrite(false); // avoid writing or error on file creation CmdProxy proxy(&det); + auto prev_frames = + det.getNumberOfFrames().tsquash("inconsistent #frames in test"); + det.setNumberOfFrames(100); { // some missing packets det.startReceiver(); @@ -144,6 +148,7 @@ TEST_CASE("rx_missingpackets", "[.cmd][.rx]") { { // 0 missing packets (takes into account that acquisition is stopped) det.startReceiver(); + det.startDetector(); det.stopDetector(); det.stopReceiver(); std::ostringstream oss; @@ -337,6 +342,7 @@ TEST_CASE("rx_padding", "[.cmd][.rx]") { } TEST_CASE("rx_udpsocksize", "[.cmd][.rx]") { + //exit(-1); Detector det; CmdProxy proxy(&det); int64_t prev_val = det.getRxUDPSocketBufferSize().tsquash( diff --git a/slsDetectorSoftware/tests/test-CmdProxy.cpp b/slsDetectorSoftware/tests/test-CmdProxy.cpp index f57a0bf71..6afeeac1e 100644 --- a/slsDetectorSoftware/tests/test-CmdProxy.cpp +++ b/slsDetectorSoftware/tests/test-CmdProxy.cpp @@ -117,8 +117,15 @@ TEST_CASE("detectorserverversion", "[.cmd]") { TEST_CASE("hardwareversion", "[.cmd]") { Detector det; CmdProxy proxy(&det); - REQUIRE_NOTHROW(proxy.Call("hardwareversion", {}, -1, GET)); - REQUIRE_THROWS(proxy.Call("hardwareversion", {"0"}, -1, PUT)); + auto det_type = det.getDetectorType().squash(); + if (det_type != defs::EIGER) { + REQUIRE_NOTHROW(proxy.Call("hardwareversion", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("hardwareversion", {"0"}, -1, PUT)); + } else { + REQUIRE_THROWS(proxy.Call("hardwareversion", {"0"}, -1, PUT)); + REQUIRE_THROWS(proxy.Call("hardwareversion", {}, -1, GET)); + + } } TEST_CASE("kernelversion", "[.cmd]") { @@ -2382,6 +2389,46 @@ TEST_CASE("scanerrmsg", "[.cmd]") { /* Network Configuration (Detector<->Receiver) */ +TEST_CASE("numinterfaces", "[.cmd]") { + Detector det; + CmdProxy proxy(&det); + auto det_type = det.getDetectorType().squash(); + if (det_type == defs::JUNGFRAU) { + auto prev_val = det.getNumberofUDPInterfaces().tsquash( + "inconsistent numinterfaces to test"); + { + std::ostringstream oss; + proxy.Call("numinterfaces", {"2"}, -1, PUT, oss); + REQUIRE(oss.str() == "numinterfaces 2\n"); + } + { + std::ostringstream oss; + proxy.Call("numinterfaces", {"1"}, -1, PUT, oss); + REQUIRE(oss.str() == "numinterfaces 1\n"); + } + { + std::ostringstream oss; + proxy.Call("numinterfaces", {}, -1, GET, oss); + REQUIRE(oss.str() == "numinterfaces 1\n"); + } + det.setNumberofUDPInterfaces(prev_val); + } else if (det_type == defs::EIGER) { + REQUIRE_THROWS(proxy.Call("numinterfaces", {"1"}, -1, PUT)); + { + std::ostringstream oss; + proxy.Call("numinterfaces", {}, -1, GET, oss); + REQUIRE(oss.str() == "numinterfaces 2\n"); + } + } else { + std::ostringstream oss; + proxy.Call("numinterfaces", {}, -1, GET, oss); + REQUIRE(oss.str() == "numinterfaces 1\n"); + REQUIRE_THROWS(proxy.Call("numinterfaces", {"1"}, -1, PUT)); + } + REQUIRE_THROWS(proxy.Call("numinterfaces", {"3"}, -1, PUT)); + REQUIRE_THROWS(proxy.Call("numinterfaces", {"0"}, -1, PUT)); +} + TEST_CASE("udp_srcip", "[.cmd]") { Detector det; CmdProxy proxy(&det); @@ -2664,7 +2711,7 @@ TEST_CASE("flowcontrol10g", "[.cmd]") { } } -TEST_CASE("txndelay_frame", "[.cmd]") { +TEST_CASE("txdelay_frame", "[.cmd]") { Detector det; CmdProxy proxy(&det); auto det_type = det.getDetectorType().squash(); @@ -2678,16 +2725,16 @@ TEST_CASE("txndelay_frame", "[.cmd]") { std::string sval = std::to_string(val); { std::ostringstream oss1, oss2; - proxy.Call("txndelay_frame", {sval}, -1, PUT, oss1); - REQUIRE(oss1.str() == "txndelay_frame " + sval + "\n"); - proxy.Call("txndelay_frame", {}, -1, GET, oss2); - REQUIRE(oss2.str() == "txndelay_frame " + sval + "\n"); + proxy.Call("txdelay_frame", {sval}, -1, PUT, oss1); + REQUIRE(oss1.str() == "txdelay_frame " + sval + "\n"); + proxy.Call("txdelay_frame", {}, -1, GET, oss2); + REQUIRE(oss2.str() == "txdelay_frame " + sval + "\n"); } for (int i = 0; i != det.size(); ++i) { det.setTransmissionDelayFrame(prev_val[i]); } } else { - REQUIRE_THROWS(proxy.Call("txndelay_frame", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("txdelay_frame", {}, -1, GET)); } } @@ -2721,11 +2768,11 @@ TEST_CASE("txdelay", "[.cmd]") { for (int i = 0; i != det.size(); ++i) { if (eiger) { REQUIRE(det.getTransmissionDelayLeft({i}).squash(-1) == - (3 * i * val)); + (2 * i * val)); REQUIRE(det.getTransmissionDelayRight({i}).squash(-1) == - ((3 * i + 1) * val)); + ((2 * i + 1) * val)); REQUIRE(det.getTransmissionDelayFrame({i}).squash(-1) == - ((3 * i + 2) * val)); + (2 * det.size() * val)); } else { REQUIRE(det.getTransmissionDelayFrame({i}).squash(-1) == (i * val));