mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-28 17:10:03 +02:00
7.0.1 fix det server version (#702)
* check server version before initial checks, catch old server version exception, get old server version as 64 bit and print it along with exception
This commit is contained in:
parent
2ef021041c
commit
87d6e16090
18
RELEASE.txt
18
RELEASE.txt
@ -20,7 +20,7 @@ This document describes the differences between v7.0.1 and v7.0.0
|
||||
=================
|
||||
|
||||
|
||||
Receiver:
|
||||
Receiver
|
||||
--------
|
||||
|
||||
|
||||
@ -35,6 +35,22 @@ This document describes the differences between v7.0.1 and v7.0.0
|
||||
|
||||
|
||||
|
||||
Client
|
||||
------
|
||||
|
||||
|
||||
* Detector Server Version from previous Releases
|
||||
Hostname command would hang with 7.0.0 client if the detector server
|
||||
was from a previous release (eg. 6.1.2). In this case, the user cannot
|
||||
get the detector server version.
|
||||
|
||||
Fixed that the hostname command will throw an exception about
|
||||
incompatible server with its version in the message. Now, the user can
|
||||
get the version number without having to telnet or ssh to the detector.
|
||||
With this info, one can then update to matching client for that server
|
||||
and start the detector updation process.
|
||||
|
||||
|
||||
2 On-board Detector Server Compatibility
|
||||
==========================================
|
||||
|
||||
|
@ -73,8 +73,8 @@ void Module::setHostname(const std::string &hostname,
|
||||
auto client = DetectorSocket(shm()->hostname, shm()->controlPort);
|
||||
client.close();
|
||||
try {
|
||||
initialDetectorServerChecks();
|
||||
checkDetectorVersionCompatibility();
|
||||
initialDetectorServerChecks();
|
||||
LOG(logINFO) << "Module Version Compatibility - Success";
|
||||
} catch (const RuntimeError &e) {
|
||||
if (!initialChecks) {
|
||||
@ -93,10 +93,29 @@ int64_t Module::getFirmwareVersion() const {
|
||||
}
|
||||
|
||||
std::string Module::getControlServerLongVersion() const {
|
||||
try {
|
||||
char retval[MAX_STR_LENGTH]{};
|
||||
sendToDetector(F_GET_SERVER_VERSION, nullptr, retval);
|
||||
return retval;
|
||||
}
|
||||
// throw with old server version (sends 8 bytes)
|
||||
catch (RuntimeError &e) {
|
||||
std::string emsg = std::string(e.what());
|
||||
if (emsg.find(F_GET_SERVER_VERSION) && emsg.find("8 bytes")) {
|
||||
throwDeprecatedServerVersion();
|
||||
}
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
void Module::throwDeprecatedServerVersion() const {
|
||||
uint64_t res = sendToDetectorStop<int64_t>(F_GET_SERVER_VERSION);
|
||||
std::cout << std::endl;
|
||||
std::ostringstream os;
|
||||
os << "Detector Server (Control) version (0x" << std::hex << res
|
||||
<< ") is incompatible with this client. Please update detector server!";
|
||||
throw RuntimeError(os.str());
|
||||
}
|
||||
|
||||
std::string Module::getStopServerLongVersion() const {
|
||||
char retval[MAX_STR_LENGTH]{};
|
||||
|
@ -92,6 +92,7 @@ class Module : public virtual slsDetectorDefs {
|
||||
int64_t getFirmwareVersion() const;
|
||||
std::string getControlServerLongVersion() const;
|
||||
std::string getStopServerLongVersion() const;
|
||||
void throwDeprecatedServerVersion() const;
|
||||
std::string getDetectorServerVersion() const;
|
||||
std::string getHardwareVersion() const;
|
||||
std::string getKernelVersion() const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user