mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-20 02:40:03 +02:00
reset default dacs
This commit is contained in:
parent
e28d19f5be
commit
9c03e83ef1
@ -686,7 +686,7 @@ void allocateDetectorStructureMemory() {
|
||||
void setupDetector() {
|
||||
|
||||
allocateDetectorStructureMemory();
|
||||
setDefaultDacs();
|
||||
resetToDefaultDacs(false);
|
||||
#ifdef VIRTUAL
|
||||
sharedMemory_setStatus(IDLE);
|
||||
#endif
|
||||
@ -748,7 +748,15 @@ void setupDetector() {
|
||||
LOG(logDEBUG1, ("Setup detector done\n\n"));
|
||||
}
|
||||
|
||||
int setDefaultDacs() {
|
||||
int resetToDefaultDacs(int hardReset) {
|
||||
// reset defaults to hardcoded defaults
|
||||
if (hardReset) {
|
||||
const int vals[] = DEFAULT_DAC_VALS;
|
||||
for (int i = 0; i < NDAC; ++i) {
|
||||
defaultDacValues[i] = vals[i];
|
||||
}
|
||||
}
|
||||
// reset dacs to defaults
|
||||
int ret = OK;
|
||||
LOG(logINFOBLUE, ("Setting Default Dac values\n"));
|
||||
for (int i = 0; i < NDAC; ++i) {
|
||||
|
@ -481,7 +481,15 @@ void setupDetector() {
|
||||
setCurrentSource(DEFAULT_CURRENT_SOURCE);
|
||||
}
|
||||
|
||||
int setDefaultDacs() {
|
||||
int resetToDefaultDacs(int hardReset) {
|
||||
// reset defaults to hardcoded defaults
|
||||
if (hardReset) {
|
||||
const int vals[] = DEFAULT_DAC_VALS;
|
||||
for (int i = 0; i < NDAC; ++i) {
|
||||
defaultDacValues[i] = vals[i];
|
||||
}
|
||||
}
|
||||
// reset dacs to defaults
|
||||
int ret = OK;
|
||||
LOG(logINFOBLUE, ("Setting Default Dac values\n"));
|
||||
for (int i = 0; i < NDAC; ++i) {
|
||||
|
@ -406,7 +406,7 @@ void setupDetector() {
|
||||
DAC_MAX_MV);
|
||||
LTC2620_Disable();
|
||||
LTC2620_Configure();
|
||||
setDefaultDacs();
|
||||
resetToDefaultDacs(false);
|
||||
|
||||
// temp
|
||||
bus_w(TEMP_SPI_IN_REG, TEMP_SPI_IN_IDLE_MSK);
|
||||
@ -434,7 +434,15 @@ void setupDetector() {
|
||||
setDelayAfterTrigger(DEFAULT_DELAY);
|
||||
}
|
||||
|
||||
int setDefaultDacs() {
|
||||
int resetToDefaultDacs(int hardReset) {
|
||||
// reset defaults to hardcoded defaults
|
||||
if (hardReset) {
|
||||
const int vals[] = DEFAULT_DAC_VALS;
|
||||
for (int i = 0; i < NDAC; ++i) {
|
||||
defaultDacValues[i] = vals[i];
|
||||
}
|
||||
}
|
||||
// reset dacs to defaults
|
||||
int ret = OK;
|
||||
LOG(logINFOBLUE, ("Setting Default Dac values\n"));
|
||||
for (int i = 0; i < NDAC; ++i) {
|
||||
|
@ -426,7 +426,7 @@ void setupDetector() {
|
||||
DAC_MAX_MV);
|
||||
LTC2620_Disable();
|
||||
LTC2620_Configure();
|
||||
setDefaultDacs();
|
||||
resetToDefaultDacs(false);
|
||||
|
||||
// altera pll
|
||||
ALTERA_PLL_SetDefines(
|
||||
@ -470,7 +470,15 @@ void setupDetector() {
|
||||
setTemperatureEvent(0);
|
||||
}
|
||||
|
||||
int setDefaultDacs() {
|
||||
int resetToDefaultDacs(int hardReset) {
|
||||
// reset defaults to hardcoded defaults
|
||||
if (hardReset) {
|
||||
const int vals[] = DEFAULT_DAC_VALS;
|
||||
for (int i = 0; i < NDAC; ++i) {
|
||||
defaultDacValues[i] = vals[i];
|
||||
}
|
||||
}
|
||||
// reset dacs to defaults
|
||||
int ret = OK;
|
||||
LOG(logINFOBLUE, ("Setting Default Dac values\n"));
|
||||
for (int i = 0; i < NDAC; ++i) {
|
||||
|
@ -517,7 +517,7 @@ void setupDetector() {
|
||||
DAC_MAX_MV); // has to be before setvchip
|
||||
LTC2620_Disable();
|
||||
LTC2620_Configure();
|
||||
setDefaultDacs();
|
||||
resetToDefaultDacs(false);
|
||||
|
||||
// altera pll
|
||||
ALTERA_PLL_SetDefines(PLL_CNTRL_REG, PLL_PARAM_REG,
|
||||
@ -614,7 +614,15 @@ void updateDataBytes() {
|
||||
dataBytes = analogDataBytes;
|
||||
}
|
||||
|
||||
int setDefaultDacs() {
|
||||
int resetToDefaultDacs(int hardReset) {
|
||||
// reset defaults to hardcoded defaults
|
||||
if (hardReset) {
|
||||
const int vals[] = DEFAULT_DAC_VALS;
|
||||
for (int i = 0; i < NDAC; ++i) {
|
||||
defaultDacValues[i] = vals[i];
|
||||
}
|
||||
}
|
||||
// reset dacs to defaults
|
||||
int ret = OK;
|
||||
LOG(logINFOBLUE, ("Setting Default Dac values\n"));
|
||||
for (int i = 0; i < NDAC; ++i) {
|
||||
|
@ -450,7 +450,7 @@ void setupDetector() {
|
||||
|
||||
// defaults
|
||||
setHighVoltage(DEFAULT_HIGH_VOLTAGE);
|
||||
setDefaultDacs();
|
||||
resetToDefaultDacs(false);
|
||||
setASICDefaults();
|
||||
setADIFDefaults();
|
||||
|
||||
@ -527,7 +527,15 @@ void setupDetector() {
|
||||
setAllTrimbits(DEFAULT_TRIMBIT_VALUE);
|
||||
}
|
||||
|
||||
int setDefaultDacs() {
|
||||
int resetToDefaultDacs(int hardReset) {
|
||||
// reset defaults to hardcoded defaults
|
||||
if (hardReset) {
|
||||
const int vals[] = DEFAULT_DAC_VALS;
|
||||
for (int i = 0; i < NDAC; ++i) {
|
||||
defaultDacValues[i] = vals[i];
|
||||
}
|
||||
}
|
||||
// reset dacs to defaults
|
||||
int ret = OK;
|
||||
LOG(logINFOBLUE, ("Setting Default Dac values\n"));
|
||||
{
|
||||
|
@ -117,7 +117,7 @@ void updateDataBytes();
|
||||
#endif
|
||||
|
||||
#ifndef CHIPTESTBOARDD
|
||||
int setDefaultDacs();
|
||||
int resetToDefaultDacs(int hardReset);
|
||||
int getDefaultDac(enum DACINDEX index, enum detectorSettings sett, int *retval);
|
||||
int setDefaultDac(enum DACINDEX index, enum detectorSettings sett, int value);
|
||||
#endif
|
||||
|
@ -239,7 +239,7 @@ int reconfigure_udp(int);
|
||||
int validate_udp_configuration(int);
|
||||
int get_bursts_left(int);
|
||||
int start_readout(int);
|
||||
int set_default_dacs(int);
|
||||
int reset_to_default_dacs(int);
|
||||
int is_virtual(int);
|
||||
int get_pattern(int);
|
||||
int load_default_pattern(int);
|
||||
|
@ -364,7 +364,7 @@ void function_table() {
|
||||
flist[F_VALIDATE_UDP_CONFIG] = &validate_udp_configuration;
|
||||
flist[F_GET_BURSTS_LEFT] = &get_bursts_left;
|
||||
flist[F_START_READOUT] = &start_readout;
|
||||
flist[F_SET_DEFAULT_DACS] = &set_default_dacs;
|
||||
flist[F_RESET_TO_DEFAULT_DACS] = &reset_to_default_dacs;
|
||||
flist[F_IS_VIRTUAL] = &is_virtual;
|
||||
flist[F_GET_PATTERN] = &get_pattern;
|
||||
flist[F_LOAD_DEFAULT_PATTERN] = &load_default_pattern;
|
||||
@ -1627,7 +1627,7 @@ int set_settings(int file_des) {
|
||||
validate(&ret, mess, (int)isett, (int)retval, "set settings", DEC);
|
||||
#ifdef GOTTHARDD
|
||||
if (ret == OK) {
|
||||
ret = setDefaultDacs();
|
||||
ret = resetToDefaultDacs(false);
|
||||
if (ret == FAIL) {
|
||||
strcpy(mess, "Could change settings, but could not set to "
|
||||
"default dacs\n");
|
||||
@ -8090,17 +8090,22 @@ int start_readout(int file_des) {
|
||||
return Server_SendResult(file_des, INT32, NULL, 0);
|
||||
}
|
||||
|
||||
int set_default_dacs(int file_des) {
|
||||
int reset_to_default_dacs(int file_des) {
|
||||
ret = OK;
|
||||
memset(mess, 0, sizeof(mess));
|
||||
int arg = -1;
|
||||
if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0)
|
||||
return printSocketReadError();
|
||||
LOG(logINFO, ("Resetting dacs to defaults (hard reset: %d)\n", arg));
|
||||
|
||||
#ifdef CHIPTESTBOARDD
|
||||
functionNotImplemented();
|
||||
#else
|
||||
if (Server_VerifyLock() == OK) {
|
||||
if (setDefaultDacs() == FAIL) {
|
||||
if (resetToDefaultDacs(arg) == FAIL) {
|
||||
ret = FAIL;
|
||||
strcpy(mess, "Could not set default dacs");
|
||||
sprintf(mess, "Could not %s reset default dacs",
|
||||
(arg == 1 ? "hard" : ""));
|
||||
LOG(logERROR, (mess));
|
||||
}
|
||||
}
|
||||
|
@ -427,8 +427,10 @@ class Detector {
|
||||
void setDefaultDac(defs::dacIndex index, int defaultValue,
|
||||
defs::detectorSettings sett, Positions pos = {});
|
||||
|
||||
/** [Eiger][Jungfrau][Moench][Gotthard][Gotthard2][Mythen3] */
|
||||
void setDefaultDacs(Positions pos = {});
|
||||
/** [Eiger][Jungfrau][Moench][Gotthard][Gotthard2][Mythen3]
|
||||
reset to defaults, hardReset will reset to hardcoded defaults on on-board
|
||||
server */
|
||||
void resetToDefaultDacs(const bool hardReset, Positions pos = {});
|
||||
|
||||
Result<int> getDAC(defs::dacIndex index, bool mV = false,
|
||||
Positions pos = {}) const;
|
||||
|
@ -1095,6 +1095,37 @@ std::string CmdProxy::DacValues(int action) {
|
||||
return os.str();
|
||||
}
|
||||
|
||||
std::string CmdProxy::ResetDacs(int action) {
|
||||
std::ostringstream os;
|
||||
os << cmd << ' ';
|
||||
if (action == defs::HELP_ACTION) {
|
||||
os << "[(optional) hard] "
|
||||
"\n\t[Eiger][Jungfrau][Gotthard][Moench][Gotthard2]["
|
||||
"Mythen3]Reset dac values to the defaults. A 'hard' optional "
|
||||
"reset will reset the dacs to the hardcoded defaults in on-board "
|
||||
"detector server."
|
||||
<< '\n';
|
||||
} else if (action == defs::GET_ACTION) {
|
||||
throw sls::RuntimeError("Cannot get");
|
||||
} else if (action == defs::PUT_ACTION) {
|
||||
bool hardReset = false;
|
||||
if (args.size() == 1) {
|
||||
if (args[0] != "hard") {
|
||||
throw sls::RuntimeError("Unknown argument " + args[0] +
|
||||
". Did you mean hard?");
|
||||
}
|
||||
hardReset = true;
|
||||
} else if (args.size() > 1) {
|
||||
WrongNumberOfParameters(1);
|
||||
}
|
||||
det->resetToDefaultDacs(hardReset, std::vector<int>{det_id});
|
||||
os << "successful\n";
|
||||
} else {
|
||||
throw sls::RuntimeError("Unknown action");
|
||||
}
|
||||
return os.str();
|
||||
}
|
||||
|
||||
std::string CmdProxy::DefaultDac(int action) {
|
||||
std::ostringstream os;
|
||||
os << cmd << ' ';
|
||||
@ -1111,10 +1142,12 @@ std::string CmdProxy::DefaultDac(int action) {
|
||||
if (args.size() == 2) {
|
||||
auto t = det->getDefaultDac(
|
||||
StringTo<defs::dacIndex>(args[0]),
|
||||
sls::StringTo<slsDetectorDefs::detectorSettings>(args[1]));
|
||||
sls::StringTo<slsDetectorDefs::detectorSettings>(args[1]),
|
||||
std::vector<int>{det_id});
|
||||
os << args[0] << ' ' << args[1] << ' ' << OutString(t) << '\n';
|
||||
} else {
|
||||
auto t = det->getDefaultDac(StringTo<defs::dacIndex>(args[0]));
|
||||
auto t = det->getDefaultDac(StringTo<defs::dacIndex>(args[0]),
|
||||
std::vector<int>{det_id});
|
||||
os << args[0] << ' ' << OutString(t) << '\n';
|
||||
}
|
||||
} else if (action == defs::PUT_ACTION) {
|
||||
@ -1125,7 +1158,8 @@ std::string CmdProxy::DefaultDac(int action) {
|
||||
if (args.size() == 3) {
|
||||
det->setDefaultDac(
|
||||
StringTo<defs::dacIndex>(args[0]), StringTo<int>(args[1]),
|
||||
sls::StringTo<slsDetectorDefs::detectorSettings>(args[2]));
|
||||
sls::StringTo<slsDetectorDefs::detectorSettings>(args[2]),
|
||||
std::vector<int>{det_id});
|
||||
os << args[0] << ' ' << args[2] << ' ' << args[1] << '\n';
|
||||
} else {
|
||||
det->setDefaultDac(StringTo<defs::dacIndex>(args[0]),
|
||||
|
@ -671,6 +671,8 @@ class CmdProxy {
|
||||
{"vipre_cds", "dac"},
|
||||
{"ibias_sfp", "dac"},
|
||||
|
||||
{"defaultdacs", "resetdacs"},
|
||||
|
||||
/* acquisition */
|
||||
{"busy", "clearbusy"},
|
||||
{"receiver", "rx_status"},
|
||||
@ -816,7 +818,7 @@ class CmdProxy {
|
||||
{"dac", &CmdProxy::Dac},
|
||||
{"daclist", &CmdProxy::daclist},
|
||||
{"dacvalues", &CmdProxy::DacValues},
|
||||
{"defaultdacs", &CmdProxy::defaultdacs},
|
||||
{"resetdacs", &CmdProxy::ResetDacs},
|
||||
{"defaultdac", &CmdProxy::DefaultDac},
|
||||
|
||||
/* on chip dacs */
|
||||
@ -1095,6 +1097,7 @@ class CmdProxy {
|
||||
/* dacs */
|
||||
std::string Dac(int action);
|
||||
std::string DacValues(int action);
|
||||
std::string ResetDacs(int action);
|
||||
std::string DefaultDac(int action);
|
||||
/* acquisition */
|
||||
std::string ReceiverStatus(int action);
|
||||
@ -1383,10 +1386,6 @@ class CmdProxy {
|
||||
daclist, getDacList,
|
||||
"\n\tGets the list of commands for every dac for this detector.");
|
||||
|
||||
EXECUTE_SET_COMMAND(defaultdacs, setDefaultDacs,
|
||||
"\n\t[Eiger][Jungfrau][Gotthard][Moench][Gotthard2]["
|
||||
"Mythen3]Sets default dacs on to the detector.");
|
||||
|
||||
/* on chip dacs */
|
||||
INTEGER_USER_IND_COMMAND(
|
||||
vchip_comp_fe, getOnChipDAC, setOnChipDAC, StringTo<int>,
|
||||
|
@ -657,8 +657,8 @@ void Detector::setDefaultDac_(defs::dacIndex index, int defaultValue,
|
||||
pimpl->Parallel(&Module::setDefaultDac, pos, index, defaultValue, sett);
|
||||
}
|
||||
|
||||
void Detector::setDefaultDacs(Positions pos) {
|
||||
pimpl->Parallel(&Module::setDefaultDacs, pos);
|
||||
void Detector::resetToDefaultDacs(const bool hardReset, Positions pos) {
|
||||
pimpl->Parallel(&Module::resetToDefaultDacs, hardReset, pos);
|
||||
}
|
||||
|
||||
Result<int> Detector::getDAC(defs::dacIndex index, bool mV,
|
||||
|
@ -629,7 +629,10 @@ void Module::setDefaultDac(slsDetectorDefs::dacIndex index, int defaultValue,
|
||||
return sendToDetector(F_SET_DEFAULT_DAC, args, nullptr);
|
||||
}
|
||||
|
||||
void Module::setDefaultDacs() { sendToDetector(F_SET_DEFAULT_DACS); }
|
||||
void Module::resetToDefaultDacs(const bool hardReset) {
|
||||
sendToDetector(F_RESET_TO_DEFAULT_DACS, static_cast<int>(hardReset),
|
||||
nullptr);
|
||||
}
|
||||
|
||||
void Module::setDAC(int val, dacIndex index, bool mV) {
|
||||
int args[]{static_cast<int>(index), static_cast<int>(mV), val};
|
||||
|
@ -152,7 +152,7 @@ class Module : public virtual slsDetectorDefs {
|
||||
slsDetectorDefs::detectorSettings sett);
|
||||
void setDefaultDac(slsDetectorDefs::dacIndex index, int defaultValue,
|
||||
defs::detectorSettings sett);
|
||||
void setDefaultDacs();
|
||||
void resetToDefaultDacs(const bool hardReset);
|
||||
int getDAC(dacIndex index, bool mV) const;
|
||||
void setDAC(int val, dacIndex index, bool mV);
|
||||
bool getPowerChip() const;
|
||||
|
@ -1466,16 +1466,17 @@ TEST_CASE("defaultdac", "[.cmd]") {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("defaultdacs", "[.cmd]") {
|
||||
TEST_CASE("resetdacs", "[.cmd]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
auto det_type = det.getDetectorType().squash();
|
||||
if (det_type != defs::CHIPTESTBOARD) {
|
||||
REQUIRE_THROWS(proxy.Call("defaultdacs", {}, -1, GET));
|
||||
REQUIRE_NOTHROW(proxy.Call("defaultdacs", {}, -1, PUT));
|
||||
REQUIRE_THROWS(proxy.Call("resetdacs", {}, -1, GET));
|
||||
REQUIRE_NOTHROW(proxy.Call("resetdacs", {}, -1, PUT));
|
||||
REQUIRE_NOTHROW(proxy.Call("resetdacs", {"hard"}, -1, PUT));
|
||||
} else {
|
||||
REQUIRE_THROWS(proxy.Call("defaultdacs", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("defaultdacs", {}, -1, PUT));
|
||||
REQUIRE_THROWS(proxy.Call("resetdacs", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("resetdacs", {}, -1, PUT));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -215,7 +215,7 @@ enum detFuncs {
|
||||
F_VALIDATE_UDP_CONFIG,
|
||||
F_GET_BURSTS_LEFT,
|
||||
F_START_READOUT,
|
||||
F_SET_DEFAULT_DACS,
|
||||
F_RESET_TO_DEFAULT_DACS,
|
||||
F_IS_VIRTUAL,
|
||||
F_GET_PATTERN,
|
||||
F_LOAD_DEFAULT_PATTERN,
|
||||
@ -555,7 +555,7 @@ const char* getFunctionNameFromEnum(enum detFuncs func) {
|
||||
case F_VALIDATE_UDP_CONFIG: return "F_VALIDATE_UDP_CONFIG";
|
||||
case F_GET_BURSTS_LEFT: return "F_GET_BURSTS_LEFT";
|
||||
case F_START_READOUT: return "F_START_READOUT";
|
||||
case F_SET_DEFAULT_DACS: return "F_SET_DEFAULT_DACS";
|
||||
case F_RESET_TO_DEFAULT_DACS: return "F_RESET_TO_DEFAULT_DACS";
|
||||
case F_IS_VIRTUAL: return "F_IS_VIRTUAL";
|
||||
case F_GET_PATTERN: return "F_GET_PATTERN";
|
||||
case F_LOAD_DEFAULT_PATTERN: return "F_LOAD_DEFAULT_PATTERN";
|
||||
|
Loading…
x
Reference in New Issue
Block a user