mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-21 00:58:01 +02:00
update mode added. need to fix why udpatemode get and set not in allowed functions
This commit is contained in:
@ -1063,6 +1063,7 @@ class CmdProxy {
|
||||
{"updatekernel", &CmdProxy::UpdateKernel},
|
||||
{"rebootcontroller", &CmdProxy::rebootcontroller},
|
||||
{"update", &CmdProxy::UpdateFirmwareAndDetectorServer},
|
||||
{"updatemode", &CmdProxy::updatemode},
|
||||
{"reg", &CmdProxy::Register},
|
||||
{"adcreg", &CmdProxy::AdcRegister},
|
||||
{"setbit", &CmdProxy::BitOperations},
|
||||
@ -2184,6 +2185,12 @@ class CmdProxy {
|
||||
"\n\t[Jungfrau][Ctb][Moench][Gotthard][Mythen3]["
|
||||
"Gotthard2] Reboot controller of detector.");
|
||||
|
||||
INTEGER_COMMAND_VEC_ID(
|
||||
updatemode, getUpdateMode, setUpdateMode, StringTo<int>,
|
||||
"[0|1]\n\tRestart the detector server in update mode or not. This is "
|
||||
"useful when server-firmware compatibility is at its worst and server "
|
||||
"cannot start up normally");
|
||||
|
||||
EXECUTE_SET_COMMAND(
|
||||
firmwaretest, executeFirmwareTest,
|
||||
"\n\t[Jungfrau][Gotthard][Mythen3][Gotthard2][Ctb][Moench] Firmware "
|
||||
|
@ -2195,6 +2195,15 @@ void Detector::updateFirmwareAndServer(const std::string &sname,
|
||||
programFPGA(fname, pos);
|
||||
}
|
||||
|
||||
Result<bool> Detector::getUpdateMode(Positions pos) {
|
||||
return pimpl->Parallel(&Module::getUpdateMode, pos);
|
||||
}
|
||||
|
||||
void Detector::setUpdateMode(const bool updatemode, Positions pos) {
|
||||
pimpl->Parallel(&Module::setUpdateMode, pos, updatemode);
|
||||
rebootController(pos);
|
||||
}
|
||||
|
||||
Result<uint32_t> Detector::readRegister(uint32_t addr, Positions pos) const {
|
||||
return pimpl->Parallel(&Module::readRegister, pos, addr);
|
||||
}
|
||||
|
@ -2539,8 +2539,9 @@ void Module::updateDetectorServer(std::vector<char> buffer,
|
||||
"Update Detector Server (no tftp)", serverName);
|
||||
break;
|
||||
default:
|
||||
throw RuntimeError("Updating DetectorServer via the package is not implemented "
|
||||
"for this detector");
|
||||
throw RuntimeError(
|
||||
"Updating DetectorServer via the package is not implemented "
|
||||
"for this detector");
|
||||
}
|
||||
}
|
||||
|
||||
@ -2567,6 +2568,14 @@ void Module::rebootController() {
|
||||
<< "): Controller rebooted successfully!";
|
||||
}
|
||||
|
||||
bool Module::getUpdateMode() { return sendToDetector<int>(F_GET_UPDATE_MODE); }
|
||||
|
||||
void Module::setUpdateMode(const bool updatemode) {
|
||||
sendToDetector(F_SET_UPDATE_MODE, static_cast<int>(updatemode), nullptr);
|
||||
LOG(logINFO) << "Module " << moduleIndex << " (" << shm()->hostname
|
||||
<< "): Update Mode set to " << updatemode << "!";
|
||||
}
|
||||
|
||||
uint32_t Module::readRegister(uint32_t addr) const {
|
||||
return sendToDetectorStop<uint32_t>(F_READ_REGISTER, addr);
|
||||
}
|
||||
|
@ -545,6 +545,8 @@ class Module : public virtual slsDetectorDefs {
|
||||
const std::string &serverName);
|
||||
void updateKernel(std::vector<char> buffer);
|
||||
void rebootController();
|
||||
bool getUpdateMode();
|
||||
void setUpdateMode(const bool updatemode);
|
||||
uint32_t readRegister(uint32_t addr) const;
|
||||
uint32_t writeRegister(uint32_t addr, uint32_t val);
|
||||
void setBit(uint32_t addr, int n);
|
||||
|
Reference in New Issue
Block a user