diff --git a/slsDetectorSoftware/src/CtbConfig.cpp b/slsDetectorSoftware/src/CtbConfig.cpp index a2452de6f..b0c8450fa 100644 --- a/slsDetectorSoftware/src/CtbConfig.cpp +++ b/slsDetectorSoftware/src/CtbConfig.cpp @@ -80,6 +80,13 @@ CtbConfig::getNames(size_t expected_size, void CtbConfig::setDacName(size_t index, const std::string &name) { check_index(index, num_dacs, "DAC"); + std::vector powers = {"v_a", "v_b", "v_c", "v_d", "v_io", "va", "vb", "vc", "vd", "vio"}; + std::string lower = name; + std::transform(lower.begin(), lower.end(), lower.begin(), + [](unsigned char c){ return std::tolower(c); }); + if (std::find(powers.begin(), powers.end(), lower) != powers.end()) { + throw RuntimeError("DAC name cannot be a power name (VA, VB, VC, VD, VIO, V_A, V_B, V_C, V_D, V_IO)"); + } set_name(name, dacnames, index); } diff --git a/slsDetectorSoftware/tests/Caller/test-Caller-chiptestboard.cpp b/slsDetectorSoftware/tests/Caller/test-Caller-chiptestboard.cpp index 04734111d..d7eaba1d1 100644 --- a/slsDetectorSoftware/tests/Caller/test-Caller-chiptestboard.cpp +++ b/slsDetectorSoftware/tests/Caller/test-Caller-chiptestboard.cpp @@ -46,6 +46,11 @@ TEST_CASE("dacname", "[.detectorintegration]") { REQUIRE(oss.str() == std::string("dacname ") + str_dac_index + " bname\n"); } + REQUIRE_THROWS(caller.call("dacname", {str_dac_index, "v_a"}, -1, PUT)); + REQUIRE_THROWS(caller.call("dacname", {str_dac_index, "v_b"}, -1, PUT)); + REQUIRE_THROWS(caller.call("dacname", {str_dac_index, "v_c"}, -1, PUT)); + REQUIRE_THROWS(caller.call("dacname", {str_dac_index, "v_d"}, -1, PUT)); + REQUIRE_THROWS(caller.call("dacname", {str_dac_index, "v_io"}, -1, PUT)); det.setDacName(ind, prev); } else {