tests made to pass ctb

This commit is contained in:
maliakal_d 2019-10-24 11:32:58 +02:00
parent fa84d17a19
commit f73a15e786
7 changed files with 145 additions and 81 deletions

View File

@ -233,7 +233,7 @@
WrongNumberOfParameters(1); \ WrongNumberOfParameters(1); \
} \ } \
auto t = det->GETFCN(DAC_INDEX, mv, {det_id}); \ auto t = det->GETFCN(DAC_INDEX, mv, {det_id}); \
os << OutString(t) << (args.size() > 1 ? " mv\n" : "\n"); \ os << OutString(t) << (args.size() > 0 ? " mv\n" : "\n"); \
} else if (action == slsDetectorDefs::PUT_ACTION) { \ } else if (action == slsDetectorDefs::PUT_ACTION) { \
bool mv = false; \ bool mv = false; \
if (args.size() == 2) { \ if (args.size() == 2) { \
@ -423,10 +423,17 @@ class CmdProxy {
return ToString(value, unit); return ToString(value, unit);
} }
inline unsigned int stoui(const std::string& s) { inline unsigned int stoiHex(const std::string& s) {
unsigned long lresult = stoul(s, 0, 10); unsigned long lresult = stoul(s, 0, 16);
unsigned int result = lresult; unsigned int result = lresult;
if (result != lresult) throw std::out_of_range("cannot convert to unsigned int"); if (result != lresult) {
throw std::out_of_range("cannot convert to unsigned int");
}
return result;
}
inline unsigned long int stoulHex(const std::string& s) {
unsigned long result = stoul(s, 0, 16);
return result; return result;
} }
@ -882,7 +889,7 @@ class CmdProxy {
GET_COMMAND(rx_framescaught, getFramesCaught, GET_COMMAND(rx_framescaught, getFramesCaught,
"\n\tNumber of frames caught by receiver."); "\n\tNumber of frames caught by receiver.");
INTEGER_COMMAND(startingfnum, getStartingFrameNumber, setStartingFrameNumber, std::stoul, INTEGER_COMMAND(startingfnum, getStartingFrameNumber, setStartingFrameNumber, std::stoull,
"[n_value]\n\t[Eiger[Jungfrau] Starting frame number for next acquisition."); "[n_value]\n\t[Eiger[Jungfrau] Starting frame number for next acquisition.");
EXECUTE_SET_COMMAND(trigger, sendSoftwareTrigger, EXECUTE_SET_COMMAND(trigger, sendSoftwareTrigger,
@ -1181,25 +1188,25 @@ class CmdProxy {
GET_IND_COMMAND(vm_io, getMeasuredVoltage, defs::V_POWER_IO, "", GET_IND_COMMAND(vm_io, getMeasuredVoltage, defs::V_POWER_IO, "",
"\n\t[Ctb] Measured voltage of power supply io in mV."); "\n\t[Ctb] Measured voltage of power supply io in mV.");
GET_IND_COMMAND(im_a, getMeasuredVoltage, defs::I_POWER_A, "", GET_IND_COMMAND(im_a, getMeasuredCurrent, defs::I_POWER_A, "",
"\n\t[Ctb] Measured current of power supply a in mA."); "\n\t[Ctb] Measured current of power supply a in mA.");
GET_IND_COMMAND(im_b, getMeasuredVoltage, defs::I_POWER_B, "", GET_IND_COMMAND(im_b, getMeasuredCurrent, defs::I_POWER_B, "",
"\n\t[Ctb] Measured current of power supply b in mA."); "\n\t[Ctb] Measured current of power supply b in mA.");
GET_IND_COMMAND(im_c, getMeasuredVoltage, defs::I_POWER_C, "", GET_IND_COMMAND(im_c, getMeasuredCurrent, defs::I_POWER_C, "",
"\n\t[Ctb] Measured current of power supply c in mA."); "\n\t[Ctb] Measured current of power supply c in mA.");
GET_IND_COMMAND(im_d, getMeasuredVoltage, defs::I_POWER_D, "", GET_IND_COMMAND(im_d, getMeasuredCurrent, defs::I_POWER_D, "",
"\n\t[Ctb] Measured current of power supply d in mA."); "\n\t[Ctb] Measured current of power supply d in mA.");
GET_IND_COMMAND(im_io, getMeasuredVoltage, defs::I_POWER_IO, "", GET_IND_COMMAND(im_io, getMeasuredCurrent, defs::I_POWER_IO, "",
"\n\t[Ctb] Measured current of power supply io in mA."); "\n\t[Ctb] Measured current of power supply io in mA.");
INTEGER_COMMAND(adcenable, getADCEnableMask, setADCEnableMask, stoui, INTEGER_COMMAND_HEX(adcenable, getADCEnableMask, setADCEnableMask, stoiHex,
"[bitmask]\n\t[Ctb] ADC Enable Mask."); "[bitmask]\n\t[Ctb] ADC Enable Mask.");
INTEGER_COMMAND(adcinvert, getADCInvert, setADCInvert, stoui, INTEGER_COMMAND_HEX(adcinvert, getADCInvert, setADCInvert, stoiHex,
"[bitmask]\n\t[Ctb] ADC Inversion Mask."); "[bitmask]\n\t[Ctb] ADC Inversion Mask.");
INTEGER_COMMAND(extsampling, getExternalSampling, setExternalSampling, std::stoi, INTEGER_COMMAND(extsampling, getExternalSampling, setExternalSampling, std::stoi,
@ -1220,10 +1227,10 @@ class CmdProxy {
EXECUTE_SET_COMMAND_NOID_1ARG(savepattern, savePattern, EXECUTE_SET_COMMAND_NOID_1ARG(savepattern, savePattern,
"[fname]\n\t[Ctb] Saves pattern to file (ascii). Also executes pattern."); "[fname]\n\t[Ctb] Saves pattern to file (ascii). Also executes pattern.");
INTEGER_COMMAND_HEX(patioctrl, getPatternIOControl, setPatternIOControl, std::stoul, INTEGER_COMMAND_HEX(patioctrl, getPatternIOControl, setPatternIOControl, std::stoull,
"[64 bit mask]\n\t[Ctb] 64 bit mask defining input (0) and output (1) signals."); "[64 bit mask]\n\t[Ctb] 64 bit mask defining input (0) and output (1) signals.");
INTEGER_COMMAND_HEX(patclkctrl, getPatternClockControl, setPatternClockControl, std::stoul, INTEGER_COMMAND_HEX(patclkctrl, getPatternClockControl, setPatternClockControl, std::stoull,
"[64 bit mask]\n\t[Ctb] 64 bit mask defining output clock enable."); "[64 bit mask]\n\t[Ctb] 64 bit mask defining output clock enable.");

View File

@ -294,39 +294,48 @@ std::string CmdProxy::Speed(int action) {
os << cmd << ' '; os << cmd << ' ';
if (action == defs::HELP_ACTION) { if (action == defs::HELP_ACTION) {
os << "[0 or full_speed|1 or half_speed|2 or quarter_speed]\n\t[Eiger][Jungfrau] Readout speed of chip.\n\tJungfrau also overwrites adcphase to recommended default. " << '\n'; os << "[0 or full_speed|1 or half_speed|2 or quarter_speed]\n\t[Eiger][Jungfrau] Readout speed of chip.\n\tJungfrau also overwrites adcphase to recommended default. " << '\n';
} else if (action == defs::GET_ACTION) { } else {
if (args.size() != 0) { defs::detectorType type = det->getDetectorType().squash();
WrongNumberOfParameters(0); if (type == defs::CHIPTESTBOARD || type == defs::MOENCH) {
} throw sls::RuntimeError("Speed not implemented. Did you mean runclk?");
auto t = det->getSpeed({det_id}); }
os << OutString(t) << '\n'; if (type != defs::EIGER && type != defs::JUNGFRAU) {
} else if (action == defs::PUT_ACTION) { throw sls::RuntimeError("Speed not implemented."); // setspped one function problem. tbr after change
if (args.size() != 1) { }
WrongNumberOfParameters(1); if (action == defs::GET_ACTION) {
} if (args.size() != 0) {
defs::speedLevel t; WrongNumberOfParameters(0);
try{ }
int ival = std::stoi(args[0]); auto t = det->getSpeed({det_id});
switch (ival) { os << OutString(t) << '\n';
case 0: } else if (action == defs::PUT_ACTION) {
t = defs::FULL_SPEED; if (args.size() != 1) {
break; WrongNumberOfParameters(1);
case 1: }
t = defs::HALF_SPEED; defs::speedLevel t;
break; try{
case 2: int ival = std::stoi(args[0]);
t = defs::QUARTER_SPEED; switch (ival) {
break; case 0:
default: t = defs::FULL_SPEED;
throw sls::RuntimeError("Unknown speed " + args[0]); break;
} case 1:
} catch (...) { t = defs::HALF_SPEED;
t = sls::StringTo<defs::speedLevel>(args[0]); break;
case 2:
t = defs::QUARTER_SPEED;
break;
default:
throw sls::RuntimeError("Unknown speed " + args[0]);
}
} catch (...) {
t = sls::StringTo<defs::speedLevel>(args[0]);
}
det->setSpeed(t, {det_id});
os << sls::ToString(t) << '\n'; // no args to convert 0,1,2 as well
} else {
throw sls::RuntimeError("Unknown action");
} }
det->setSpeed(t, {det_id});
os << sls::ToString(t) << '\n'; // no args to convert 0,1,2 as well
} else {
throw sls::RuntimeError("Unknown action");
} }
return os.str(); return os.str();
} }
@ -1000,7 +1009,7 @@ std::string CmdProxy::DigitalIODelay(int action) {
if (args.size() != 2) { if (args.size() != 2) {
WrongNumberOfParameters(2); WrongNumberOfParameters(2);
} }
det->setDigitalIODelay(std::stoul(args[0]), std::stoi(args[2])); det->setDigitalIODelay(stoulHex(args[0]), std::stoi(args[1]));
os << sls::ToString(args) << '\n'; os << sls::ToString(args) << '\n';
} else { } else {
throw sls::RuntimeError("Unknown action"); throw sls::RuntimeError("Unknown action");
@ -1039,13 +1048,13 @@ std::string CmdProxy::PatternWord(int action) {
if (args.size() != 1) { if (args.size() != 1) {
WrongNumberOfParameters(1); WrongNumberOfParameters(1);
} }
auto t = det->getPatternWord(std::stoi(args[0]), {det_id}); auto t = det->getPatternWord(stoiHex(args[0]), {det_id});
os << OutStringHex(t) << '\n'; os << OutStringHex(t) << '\n';
} else if (action == defs::PUT_ACTION) { } else if (action == defs::PUT_ACTION) {
if (args.size() != 2) { if (args.size() != 2) {
WrongNumberOfParameters(2); WrongNumberOfParameters(2);
} }
det->setPatternWord(std::stoi(args[0]), std::stoul(args[1])); det->setPatternWord(stoiHex(args[0]), stoulHex(args[1]));
os << sls::ToString(args) << '\n'; os << sls::ToString(args) << '\n';
} else { } else {
throw sls::RuntimeError("Unknown action"); throw sls::RuntimeError("Unknown action");

View File

@ -11,21 +11,29 @@ auto PUT = slsDetectorDefs::PUT_ACTION;
TEST_CASE("patword", "[.cmd][.ctb]") { TEST_CASE("patword", "[.cmd][.ctb]") {
if (test::type == slsDetectorDefs::CHIPTESTBOARD) { if (test::type == slsDetectorDefs::CHIPTESTBOARD) {
uint64_t prev_value = 0;
{
std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("patword 0x23", GET, nullptr, oss));
std::string s = (oss.str()).erase (0, strlen("patword "));
prev_value = stoul(s, 0, 16);
}
{ {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("patword 0x23 0xc15004808d0a21a4", PUT, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("patword 0x23 0xc15004808d0a21a4", PUT, nullptr, oss));
REQUIRE(oss.str() == "patword 0x23 0xc15004808d0a21a4\n"); REQUIRE(oss.str() == "patword [0x23, 0xc15004808d0a21a4]\n");
} }
{ {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("patword 0x23 0x0", PUT, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("patword 0x23 0x0", PUT, nullptr, oss));
REQUIRE(oss.str() == "patword 0x23 0x0\n"); REQUIRE(oss.str() == "patword [0x23, 0x0]\n");
} }
{ {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("patword 0x23", GET, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("patword 0x23", GET, nullptr, oss));
REQUIRE(oss.str() == "patword 0x23 0x0\n"); REQUIRE(oss.str() == "patword 0x0\n");
} }
REQUIRE_NOTHROW(multiSlsDetectorClient("patword 0x23 " + std::to_string(prev_value), PUT));
} else { } else {
REQUIRE_THROWS(multiSlsDetectorClient("patword 0x23", GET)); REQUIRE_THROWS(multiSlsDetectorClient("patword 0x23", GET));
} }
@ -33,6 +41,13 @@ TEST_CASE("patword", "[.cmd][.ctb]") {
TEST_CASE("patclkctrl", "[.cmd][.ctb]") { TEST_CASE("patclkctrl", "[.cmd][.ctb]") {
if (test::type == slsDetectorDefs::CHIPTESTBOARD) { if (test::type == slsDetectorDefs::CHIPTESTBOARD) {
uint64_t prev_value = 0;
{
std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("patclkctrl", GET, nullptr, oss));
std::string s = (oss.str()).erase (0, strlen("patclkctrl "));
prev_value = stoul(s, 0, 16);
}
{ {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("patclkctrl 0xc15004808d0a21a4", PUT, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("patclkctrl 0xc15004808d0a21a4", PUT, nullptr, oss));
@ -47,7 +62,8 @@ TEST_CASE("patclkctrl", "[.cmd][.ctb]") {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("patclkctrl", GET, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("patclkctrl", GET, nullptr, oss));
REQUIRE(oss.str() == "patclkctrl 0x0\n"); REQUIRE(oss.str() == "patclkctrl 0x0\n");
} }
REQUIRE_NOTHROW(multiSlsDetectorClient("patclkctrl " + std::to_string(prev_value), PUT));
} else { } else {
REQUIRE_THROWS(multiSlsDetectorClient("patclkctrl", GET)); REQUIRE_THROWS(multiSlsDetectorClient("patclkctrl", GET));
} }
@ -56,6 +72,13 @@ TEST_CASE("patclkctrl", "[.cmd][.ctb]") {
TEST_CASE("patioctrl", "[.cmd][.ctb]") { TEST_CASE("patioctrl", "[.cmd][.ctb]") {
if (test::type == slsDetectorDefs::CHIPTESTBOARD) { if (test::type == slsDetectorDefs::CHIPTESTBOARD) {
uint64_t prev_value = 0;
{
std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("patioctrl", GET, nullptr, oss));
std::string s = (oss.str()).erase (0, strlen("patioctrl "));
prev_value = stoul(s, 0, 16);
}
{ {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("patioctrl 0xc15004808d0a21a4", PUT, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("patioctrl 0xc15004808d0a21a4", PUT, nullptr, oss));
@ -70,7 +93,8 @@ TEST_CASE("patioctrl", "[.cmd][.ctb]") {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("patioctrl", GET, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("patioctrl", GET, nullptr, oss));
REQUIRE(oss.str() == "patioctrl 0x0\n"); REQUIRE(oss.str() == "patioctrl 0x0\n");
} }
REQUIRE_NOTHROW(multiSlsDetectorClient("patioctrl " + std::to_string(prev_value), PUT));
} else { } else {
REQUIRE_THROWS(multiSlsDetectorClient("patioctrl", GET)); REQUIRE_THROWS(multiSlsDetectorClient("patioctrl", GET));
} }
@ -126,10 +150,10 @@ TEST_CASE("diodelay", "[.cmd][.ctb]") {
{ {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("diodelay 0x01010 775", PUT, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("diodelay 0x01010 775", PUT, nullptr, oss));
REQUIRE(oss.str() == "diodelay 0x01010 775\n"); REQUIRE(oss.str() == "diodelay [0x01010, 775]\n");
} }
REQUIRE_NOTHROW(multiSlsDetectorClient("diodelay 0x01010 0", PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("diodelay 0x01010 0", PUT));
REQUIRE_THROWS(multiSlsDetectorClient("diodelay 0x01010 776", PUT)); REQUIRE_THROWS(multiSlsDetectorClient("diodelay [0x01010, 776]", PUT));
} else { } else {
REQUIRE_THROWS(multiSlsDetectorClient("diodelay", GET)); REQUIRE_THROWS(multiSlsDetectorClient("diodelay", GET));
} }
@ -145,7 +169,7 @@ TEST_CASE("rx_dbitoffset", "[.cmd][.ctb]") {
} }
{ {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("extsamplirx_dbitoffsetngsrc 0", PUT, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("rx_dbitoffset 0", PUT, nullptr, oss));
REQUIRE(oss.str() == "rx_dbitoffset 0\n"); REQUIRE(oss.str() == "rx_dbitoffset 0\n");
} }
{ {
@ -318,13 +342,13 @@ TEST_CASE("v_a", "[.cmd][.ctb]") {
} }
{ {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("v_limit 1000", PUT, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("v_limit 1500", PUT, nullptr, oss));
REQUIRE(oss.str() == "vlimit 1000\n"); REQUIRE(oss.str() == "v_limit 1500\n");
} }
{ {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("v_limit", GET, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("v_limit", GET, nullptr, oss));
REQUIRE(oss.str() == "vlimit 1000\n"); REQUIRE(oss.str() == "v_limit 1500\n");
} }
REQUIRE_NOTHROW(multiSlsDetectorClient(s, PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient(s, PUT));
{ {
@ -398,7 +422,7 @@ TEST_CASE("adcvpp", "[.cmd][.ctb]") {
{ {
REQUIRE_NOTHROW(multiSlsDetectorClient("adcvpp 1140 mv", PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("adcvpp 1140 mv", PUT));
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("adcvpp", GET, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("adcvpp mv", GET, nullptr, oss));
REQUIRE(oss.str() == "adcvpp 1140 mv\n"); REQUIRE(oss.str() == "adcvpp 1140 mv\n");
} }
REQUIRE_NOTHROW(multiSlsDetectorClient("adcvpp " + std::to_string(prev_val), PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("adcvpp " + std::to_string(prev_val), PUT));
@ -430,7 +454,7 @@ TEST_CASE("dbitpipeline", "[.cmd][.ctb]") {
REQUIRE_NOTHROW(multiSlsDetectorClient("dbitpipeline", GET, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("dbitpipeline", GET, nullptr, oss));
REQUIRE(oss.str() == "dbitpipeline 15\n"); REQUIRE(oss.str() == "dbitpipeline 15\n");
} }
REQUIRE_THROWS(multiSlsDetectorClient("dbitpipeline 16", PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("dbitpipeline 0", PUT));
} else { } else {
REQUIRE_THROWS(multiSlsDetectorClient("dbitpipeline", GET)); REQUIRE_THROWS(multiSlsDetectorClient("dbitpipeline", GET));
} }
@ -458,7 +482,7 @@ TEST_CASE("adcpipeline", "[.cmd][.ctb]") {
REQUIRE_NOTHROW(multiSlsDetectorClient("adcpipeline", GET, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("adcpipeline", GET, nullptr, oss));
REQUIRE(oss.str() == "adcpipeline 15\n"); REQUIRE(oss.str() == "adcpipeline 15\n");
} }
REQUIRE_THROWS(multiSlsDetectorClient("adcpipeline 16", PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("adcpipeline 0", PUT));
} else { } else {
REQUIRE_THROWS(multiSlsDetectorClient("adcpipeline", GET)); REQUIRE_THROWS(multiSlsDetectorClient("adcpipeline", GET));
} }
@ -496,7 +520,7 @@ TEST_CASE("dbitphase", "[.cmd][.ctb]") {
REQUIRE_NOTHROW(multiSlsDetectorClient("dbitphase", GET, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("dbitphase", GET, nullptr, oss));
REQUIRE(oss.str() == "dbitphase 0\n"); REQUIRE(oss.str() == "dbitphase 0\n");
} }
if (test::type != slsDetectorDefs::GOTTHARD) { if (test::type == slsDetectorDefs::GOTTHARD) {
REQUIRE_THROWS(multiSlsDetectorClient("dbitphase deg", GET)); REQUIRE_THROWS(multiSlsDetectorClient("dbitphase deg", GET));
} else { } else {
REQUIRE_NOTHROW(multiSlsDetectorClient("dbitphase 20 deg", PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("dbitphase 20 deg", PUT));
@ -538,10 +562,25 @@ TEST_CASE("romode", "[.cmd][.ctb]") {
TEST_CASE("samples", "[.cmd][.ctb]") { TEST_CASE("samples", "[.cmd][.ctb]") {
if (test::type == slsDetectorDefs::CHIPTESTBOARD) { if (test::type == slsDetectorDefs::CHIPTESTBOARD) {
uint64_t prev_value1 = 0;
{
std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("asamples", GET, nullptr, oss));
std::string s = (oss.str()).erase (0, strlen("asamples "));
prev_value1 = std::stoi(s);
}
std::cout<<"asamples:"<<prev_value1<<std::endl;
uint64_t prev_value2 = 0;
{
std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("dsamples", GET, nullptr, oss));
std::string s = (oss.str()).erase (0, strlen("dsamples "));
prev_value2 = std::stoi(s);
}
{ {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("samples 1200", PUT, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("samples 1200", PUT, nullptr, oss));
REQUIRE(oss.str() == "samples 1200n"); REQUIRE(oss.str() == "samples 1200\n");
} }
{ {
std::ostringstream oss; std::ostringstream oss;
@ -551,7 +590,7 @@ TEST_CASE("samples", "[.cmd][.ctb]") {
{ {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("asamples 2200", PUT, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("asamples 2200", PUT, nullptr, oss));
REQUIRE(oss.str() == "asamples 2200n"); REQUIRE(oss.str() == "asamples 2200\n");
} }
{ {
std::ostringstream oss; std::ostringstream oss;
@ -561,14 +600,16 @@ TEST_CASE("samples", "[.cmd][.ctb]") {
{ {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("dsamples 1200", PUT, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("dsamples 1200", PUT, nullptr, oss));
REQUIRE(oss.str() == "dsamples 1200n"); REQUIRE(oss.str() == "dsamples 1200\n");
} }
{ {
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("dsamples 1000", PUT, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("dsamples 1000", PUT, nullptr, oss));
REQUIRE(oss.str() == "dsamples 1000\n"); REQUIRE(oss.str() == "dsamples 1000\n");
} }
REQUIRE_THROWS(multiSlsDetectorClient("samples", GET)); // different values REQUIRE_THROWS(multiSlsDetectorClient("samples", GET)); // different values
REQUIRE_NOTHROW(multiSlsDetectorClient("asamples " + std::to_string(prev_value1), PUT));
REQUIRE_NOTHROW(multiSlsDetectorClient("dsamples " + std::to_string(prev_value2), PUT));
} else { } else {
REQUIRE_THROWS(multiSlsDetectorClient("samples", GET)); REQUIRE_THROWS(multiSlsDetectorClient("samples", GET));
REQUIRE_THROWS(multiSlsDetectorClient("asamples", GET)); REQUIRE_THROWS(multiSlsDetectorClient("asamples", GET));
@ -645,7 +686,7 @@ TEST_CASE("exptimel", "[.cmd][.gotthard]") {
TEST_CASE("periodl", "[.cmd][.gotthard]") { TEST_CASE("periodl", "[.cmd][.gotthard]") {
if (test::type == slsDetectorDefs::GOTTHARD || test::type == slsDetectorDefs::JUNGFRAU) { if (test::type == slsDetectorDefs::GOTTHARD || test::type == slsDetectorDefs::JUNGFRAU || test::type == slsDetectorDefs::CHIPTESTBOARD) {
REQUIRE_NOTHROW(multiSlsDetectorClient("frames 2", PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("frames 2", PUT));
REQUIRE_NOTHROW(multiSlsDetectorClient("period 5", PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("period 5", PUT));
REQUIRE_NOTHROW(multiSlsDetectorClient("start", PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("start", PUT));
@ -1958,10 +1999,10 @@ TEST_CASE("adcclk", "[.cmd][.ctb]") {
REQUIRE(oss.str() == "adcclk 20\n"); REQUIRE(oss.str() == "adcclk 20\n");
} }
{ {
REQUIRE_NOTHROW(multiSlsDetectorClient("adcclk 0", PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("adcclk 10", PUT));
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("adcclk", GET, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("adcclk", GET, nullptr, oss));
REQUIRE(oss.str() == "adcclk 0\n"); REQUIRE(oss.str() == "adcclk 10\n");
} }
REQUIRE_NOTHROW(multiSlsDetectorClient("adcclk " + std::to_string(prev_clk), PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("adcclk " + std::to_string(prev_clk), PUT));
} }
@ -1985,10 +2026,10 @@ TEST_CASE("dbitclk", "[.cmd][.ctb]") {
REQUIRE(oss.str() == "dbitclk 20\n"); REQUIRE(oss.str() == "dbitclk 20\n");
} }
{ {
REQUIRE_NOTHROW(multiSlsDetectorClient("dbitclk 0", PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("dbitclk 10", PUT));
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("dbitclk", GET, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("dbitclk", GET, nullptr, oss));
REQUIRE(oss.str() == "dbitclk 0\n"); REQUIRE(oss.str() == "dbitclk 10\n");
} }
REQUIRE_NOTHROW(multiSlsDetectorClient("dbitclk " + std::to_string(prev_clk), PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("dbitclk " + std::to_string(prev_clk), PUT));
} }
@ -2012,10 +2053,10 @@ TEST_CASE("runclk", "[.cmd][.ctb]") {
REQUIRE(oss.str() == "runclk 20\n"); REQUIRE(oss.str() == "runclk 20\n");
} }
{ {
REQUIRE_NOTHROW(multiSlsDetectorClient("runclk 0", PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("runclk 10", PUT));
std::ostringstream oss; std::ostringstream oss;
REQUIRE_NOTHROW(multiSlsDetectorClient("runclk", GET, nullptr, oss)); REQUIRE_NOTHROW(multiSlsDetectorClient("runclk", GET, nullptr, oss));
REQUIRE(oss.str() == "runclk 0\n"); REQUIRE(oss.str() == "runclk 10\n");
} }
REQUIRE_NOTHROW(multiSlsDetectorClient("runclk " + std::to_string(prev_runclk), PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("runclk " + std::to_string(prev_runclk), PUT));
} }
@ -2090,10 +2131,17 @@ TEST_CASE("settings", "[.cmd]") {
REQUIRE_NOTHROW(multiSlsDetectorClient("settings forceswitchg1", PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("settings forceswitchg1", PUT));
REQUIRE_NOTHROW(multiSlsDetectorClient("settings forceswitchg2", PUT)); REQUIRE_NOTHROW(multiSlsDetectorClient("settings forceswitchg2", PUT));
break; break;
case slsDetectorDefs::GOTTHARD:
REQUIRE_NOTHROW(multiSlsDetectorClient("settings dynamicgain", PUT));
REQUIRE_NOTHROW(multiSlsDetectorClient("settings highgain", PUT));
REQUIRE_NOTHROW(multiSlsDetectorClient("settings lowgain", PUT));
REQUIRE_NOTHROW(multiSlsDetectorClient("settings mediumgain", PUT));
REQUIRE_NOTHROW(multiSlsDetectorClient("settings veryhighgain", PUT));
default: default:
REQUIRE_THROWS(multiSlsDetectorClient("settings", GET));
break; break;
} }
REQUIRE_NOTHROW(multiSlsDetectorClient("settings", GET));
} }
TEST_CASE("threshold", "[.cmd]") { TEST_CASE("threshold", "[.cmd]") {

View File

@ -51,7 +51,7 @@ inline std::string ToString(const defs::detectorType s){
case defs::JUNGFRAU: case defs::JUNGFRAU:
return std::string("Jungfrau"); return std::string("Jungfrau");
case defs::CHIPTESTBOARD: case defs::CHIPTESTBOARD:
return std::string("JungfrauCTB"); return std::string("ChipTestBoard");
case defs::MOENCH: case defs::MOENCH:
return std::string("Moench"); return std::string("Moench");
case defs::MYTHEN3: case defs::MYTHEN3:
@ -367,7 +367,7 @@ inline defs::detectorType StringTo(const std::string& s){
return defs::GOTTHARD; return defs::GOTTHARD;
if (s == "Jungfrau") if (s == "Jungfrau")
return defs::JUNGFRAU; return defs::JUNGFRAU;
if (s == "JungfrauCTB") if (s == "ChipTestBoard")
return defs::CHIPTESTBOARD; return defs::CHIPTESTBOARD;
if (s == "Moench") if (s == "Moench")
return defs::MOENCH; return defs::MOENCH;

View File

@ -4,9 +4,9 @@
#define APIRECEIVER 0x190722 #define APIRECEIVER 0x190722
#define APIGUI 0x190723 #define APIGUI 0x190723
#define APIMOENCH 0x190820 #define APIMOENCH 0x190820
#define APICTB 0x191011
#define APIMYTHEN3 0x191011 #define APIMYTHEN3 0x191011
#define APIGOTTHARD2 0x191017 #define APIGOTTHARD2 0x191017
#define APIEIGER 0x191021 #define APIEIGER 0x191021
#define APIJUNGFRAU 0x191022 #define APIJUNGFRAU 0x191022
#define APIGOTTHARD 0x191021 #define APIGOTTHARD 0x191021
#define APICTB 0x191021

View File

@ -129,7 +129,7 @@ TEST_CASE("string to detectorType"){
REQUIRE(StringTo<dt>("Eiger") == dt::EIGER); REQUIRE(StringTo<dt>("Eiger") == dt::EIGER);
REQUIRE(StringTo<dt>("Gotthard") == dt::GOTTHARD); REQUIRE(StringTo<dt>("Gotthard") == dt::GOTTHARD);
REQUIRE(StringTo<dt>("Jungfrau") == dt::JUNGFRAU); REQUIRE(StringTo<dt>("Jungfrau") == dt::JUNGFRAU);
REQUIRE(StringTo<dt>("JungfrauCTB") == dt::CHIPTESTBOARD); REQUIRE(StringTo<dt>("ChipTestBoard") == dt::CHIPTESTBOARD);
REQUIRE(StringTo<dt>("Moench") == dt::MOENCH); REQUIRE(StringTo<dt>("Moench") == dt::MOENCH);
REQUIRE(StringTo<dt>("Mythen3") == dt::MYTHEN3); REQUIRE(StringTo<dt>("Mythen3") == dt::MYTHEN3);
REQUIRE(StringTo<dt>("Gotthard2") == dt::GOTTHARD2); REQUIRE(StringTo<dt>("Gotthard2") == dt::GOTTHARD2);