diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index 4f06d8f51..0fe02a235 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -340,6 +340,40 @@ class Detector { */ void setReceiverPort(int value, Positions pos = {}); + /** + * Gets Lock for detector control server to this client IP + * @param pos detector position + * @returns lock + */ + Result getLockServer(Positions pos = {}); + + /** + * Sets Lock for detector control server to this client IP + * @param value lock + * @param pos detector position + */ + void setLockServer(bool value, Positions pos = {}); + + /** + * Get last client IP saved on detector server + * @param pos detector position + * @returns last client IP saved on detector server + */ + Result getLastClientIP(Positions pos = {}); + + /** + * Exit detector server + * @param pos detector position + */ + void exitServer(Positions pos = {}); + + /** + * Execute a command on the detector server + * @param value command + * @param pos detector position + */ + void execCommand(const std::string &value, Positions pos = {}); + // Erik Result getFramesCaughtByReceiver(Positions pos = {}) const; diff --git a/slsDetectorSoftware/include/multiSlsDetector.h b/slsDetectorSoftware/include/multiSlsDetector.h index c3aedbb18..08bbae01c 100755 --- a/slsDetectorSoftware/include/multiSlsDetector.h +++ b/slsDetectorSoftware/include/multiSlsDetector.h @@ -557,27 +557,27 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns 1 for locked or 0 for unlocked */ - int lockServer(int p = -1, int detPos = -1); + int lockServer(int p = -1, int detPos = -1);// /** * Get last client IP saved on detector server * @param detPos -1 for all detectors in list or specific detector position * @returns last client IP saved on detector server */ - std::string getLastClientIP(int detPos = -1); + std::string getLastClientIP(int detPos = -1);// /** * Exit detector server * @param detPos -1 for all detectors in list or specific detector position */ - void exitServer(int detPos = -1); + void exitServer(int detPos = -1);// /** * Execute a command on the detector server * @param cmd command * @param detPos -1 for all detectors in list or specific detector position */ - void execCommand(const std::string &cmd, int detPos); + void execCommand(const std::string &cmd, int detPos);// /** * Load configuration from a configuration File diff --git a/slsDetectorSoftware/include/slsDetector.h b/slsDetectorSoftware/include/slsDetector.h index 300bdec08..516f43eab 100755 --- a/slsDetectorSoftware/include/slsDetector.h +++ b/slsDetectorSoftware/include/slsDetector.h @@ -484,9 +484,9 @@ class slsDetector : public virtual slsDetectorDefs { /** * Lock server for this client IP * @param p 0 to unlock, 1 to lock (-1 gets) - * @returns 1 for locked or 0 for unlocked + * @returns true for locked or false for unlocked */ - int lockServer(int lock = -1); + bool lockServer(int lock = -1); /** * Get last client IP saved on detector server diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 3dab11eff..c3eeffe35 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -254,6 +254,26 @@ void Detector::setReceiverPort(int value, Positions pos) { pimpl->Parallel(&slsDetector::setReceiverPort, pos, value); } +Result Detector::getLockServer(Positions pos) { + return pimpl->Parallel(&slsDetector::lockServer, pos, -1); +} + +void Detector::setLockServer(bool value, Positions pos) { + pimpl->Parallel(&slsDetector::lockServer, pos, static_cast(value)); +} + +Result Detector::getLastClientIP(Positions pos) { + return pimpl->Parallel(&slsDetector::getLastClientIP, pos); +} + +void Detector::exitServer(Positions pos) { + pimpl->Parallel(&slsDetector::exitServer, pos); +} + +void Detector::execCommand(const std::string &value, Positions pos) { + pimpl->Parallel(&slsDetector::execCommand, pos, value); +} + // Erik Result Detector::getFramesCaughtByReceiver(Positions pos) const { return pimpl->Parallel(&slsDetector::getFramesCaughtByReceiver, pos); diff --git a/slsDetectorSoftware/src/slsDetector.cpp b/slsDetectorSoftware/src/slsDetector.cpp index 2b608b922..e79284da3 100755 --- a/slsDetectorSoftware/src/slsDetector.cpp +++ b/slsDetectorSoftware/src/slsDetector.cpp @@ -761,12 +761,12 @@ int slsDetector::getControlPort() const { return shm()->controlPort; } int slsDetector::getStopPort() const { return shm()->stopPort; } -int slsDetector::lockServer(int lock) { +bool slsDetector::lockServer(int lock) { int retval = -1; FILE_LOG(logDEBUG1) << "Setting detector server lock to " << lock; sendToDetector(F_LOCK_SERVER, lock, retval); FILE_LOG(logDEBUG1) << "Lock: " << retval; - return retval; + return (retval == 1 ? true : false); } std::string slsDetector::getLastClientIP() {