mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-20 02:40:03 +02:00
WIP
This commit is contained in:
commit
ce9f76d017
@ -113,7 +113,7 @@ class DetectorPythonInterface {
|
||||
void setFileFormat(const std::string &format);
|
||||
std::string getFileFormat();
|
||||
|
||||
std::string checkOnline() { return det.checkOnline(); }
|
||||
// std::string checkOnline() { return det.checkOnline(); }
|
||||
|
||||
bool isChipPowered() { return det.powerChip(); }
|
||||
void powerChip(const bool value) { det.powerChip(value); }
|
||||
|
@ -110,7 +110,7 @@ PYBIND11_MODULE(_sls_detector, m) {
|
||||
.def("readConfigurationFile",
|
||||
&DetectorPythonInterface::readConfigurationFile)
|
||||
.def("readParametersFile", &DetectorPythonInterface::readParametersFile)
|
||||
.def("checkOnline", &DetectorPythonInterface::checkOnline)
|
||||
// .def("checkOnline", &DetectorPythonInterface::checkOnline)
|
||||
.def("setReadoutClockSpeed",
|
||||
&DetectorPythonInterface::setReadoutClockSpeed)
|
||||
.def("getReadoutClockSpeed",
|
||||
|
@ -295,46 +295,47 @@ class Detector {
|
||||
void setReadNLines(const int value, Positions pos = {});
|
||||
|
||||
/**
|
||||
* Get Receiver TCP port (for client communication with Receiver)
|
||||
* Get Detector Control TCP port (for client communication with Detector control server)
|
||||
* @param pos detector position
|
||||
* @returns receiver port
|
||||
* @returns control TCP port
|
||||
*/
|
||||
// int getControlort(Positions pos = {}) const;
|
||||
Result<int> getControlPort(Positions pos = {}) const;
|
||||
|
||||
/**
|
||||
* Set TCP Port of the detector (for client communication with Receiver)
|
||||
* Set Detector Control TCP port (for client communication with Detector control server)
|
||||
* @param value port number
|
||||
* @param pos detector position
|
||||
*/
|
||||
// void setControlPort(int port_number, Positions pos = {});
|
||||
void setControlPort(int value, Positions pos = {});
|
||||
|
||||
/**
|
||||
* Get Detector Stop TCP port (for client communication with Detector Stop server)
|
||||
* @param pos detector position
|
||||
* @returns Stop TCP port
|
||||
*/
|
||||
Result<int> getStopPort(Positions pos = {}) const;
|
||||
|
||||
/**
|
||||
* Set Detector Stop TCP port (for client communication with Detector Stop server)
|
||||
* @param value port number
|
||||
* @param pos detector position
|
||||
*/
|
||||
void setStopPort(int value, Positions pos = {});
|
||||
|
||||
/**
|
||||
* Get Receiver TCP port (for client communication with Receiver)
|
||||
* @param pos detector position
|
||||
* @returns receiver port
|
||||
* @returns Receiver TCP port
|
||||
*/
|
||||
// int getStopPort(Positions pos = {}) const;
|
||||
Result<int> getReceiverPort(Positions pos = {}) const;
|
||||
|
||||
/**
|
||||
* Set TCP Port of the detector (for client communication with Receiver)
|
||||
* Set Receiver TCP port (for client communication with Receiver)
|
||||
* @param value port number
|
||||
* @param pos detector position
|
||||
*/
|
||||
// void setStopPort(int port_number, Positions pos = {});
|
||||
void setReceiverPort(int value, Positions pos = {});
|
||||
|
||||
/**
|
||||
* Get Receiver TCP port (for client communication with Receiver)
|
||||
* @param pos detector position
|
||||
* @returns receiver port
|
||||
*/
|
||||
// int getReceiverPort(Positions pos = {}) const;
|
||||
|
||||
/**
|
||||
* Set TCP Port of the detector (for client communication with Receiver)
|
||||
* @param value port number
|
||||
* @param pos detector position
|
||||
*/
|
||||
// void setReceiverPort(int port_number, Positions pos = {});
|
||||
|
||||
// Erik
|
||||
|
||||
|
@ -520,21 +520,13 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
||||
*/
|
||||
int getReadNLines(int detPos = -1);//
|
||||
|
||||
/**
|
||||
* Checks if each of the detectors are online/offline
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns empty string if they are all online,
|
||||
* else returns concatenation of strings of all detectors that are offline
|
||||
*/
|
||||
std::string checkOnline(int detPos = -1);
|
||||
|
||||
/**
|
||||
* Set/Gets TCP Port of the detector
|
||||
* @param port_number (-1 gets)
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns port number
|
||||
*/
|
||||
int setControlPort(int port_number = -1, int detPos = -1);
|
||||
int setControlPort(int port_number = -1, int detPos = -1);//
|
||||
|
||||
/**
|
||||
* Set/Gets TCP STOP Port of the detector
|
||||
@ -542,7 +534,7 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns port number
|
||||
*/
|
||||
int setStopPort(int port_number = -1, int detPos = -1);
|
||||
int setStopPort(int port_number = -1, int detPos = -1);//
|
||||
|
||||
/**
|
||||
* Set/Gets TCP Port of the receiver
|
||||
@ -550,14 +542,14 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns port number
|
||||
*/
|
||||
int setReceiverPort(int port_number = -1, int detPos = -1);
|
||||
int setReceiverPort(int port_number = -1, int detPos = -1);//
|
||||
|
||||
/**
|
||||
* Get Receiver port
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns vector of receiver port
|
||||
*/
|
||||
int getReceiverPort(int detPos = -1) const;
|
||||
int getReceiverPort(int detPos = -1) const;//
|
||||
|
||||
/**
|
||||
* Lock server for this client IP
|
||||
@ -1761,14 +1753,6 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
||||
*/
|
||||
bool getUseReceiverFlag(int detPos = -1); //
|
||||
|
||||
/**
|
||||
* Checks if the receiver is really online
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns empty string if all online, else concatenates hostnames of all
|
||||
* detectors that are offline
|
||||
*/
|
||||
std::string checkReceiverOnline(int detPos = -1); //not needed
|
||||
|
||||
/**
|
||||
* Locks/Unlocks the connection to the receiver
|
||||
* @param lock sets (1), usets (0), gets (-1) the lock
|
||||
|
@ -447,7 +447,7 @@ class slsDetector : public virtual slsDetectorDefs {
|
||||
* Set Detector offset in shared memory
|
||||
* @param value offset for detector
|
||||
*/
|
||||
void setDetectorOffset(slsDetectorDefs::coordinates value);
|
||||
void setDetectorOffsets(slsDetectorDefs::coordinates value);
|
||||
|
||||
/**
|
||||
* Set Detector offset in shared memory in dimension d
|
||||
@ -456,12 +456,6 @@ class slsDetector : public virtual slsDetectorDefs {
|
||||
*/
|
||||
void updateMultiSize(int detx, int dety);
|
||||
|
||||
/**
|
||||
* Checks if each of the detector is online/offline
|
||||
* @returns empty string if it is online
|
||||
* else returns hostname if it is offline
|
||||
*/
|
||||
std::string checkOnline();
|
||||
|
||||
int setControlPort(int port_number);
|
||||
|
||||
@ -1474,12 +1468,6 @@ class slsDetector : public virtual slsDetectorDefs {
|
||||
*/
|
||||
bool getUseReceiverFlag() const;
|
||||
|
||||
/**
|
||||
* Checks if the receiver is really online
|
||||
* @returns empty string if online, else returns receiver hostname
|
||||
*/
|
||||
std::string checkReceiverOnline();
|
||||
|
||||
/**
|
||||
* Locks/Unlocks the connection to the receiver
|
||||
* @param lock sets (1), usets (0), gets (-1) the lock
|
||||
|
@ -209,8 +209,8 @@ Result<defs::coordinates> Detector::getDetectorOffsets(Positions pos) const {
|
||||
}
|
||||
|
||||
void Detector::setDetectorOffsets(defs::coordinates value, Positions pos) {
|
||||
pimpl->Parallel<defs::coordinates>(&slsDetector::setDetectorOffset, pos,
|
||||
value);
|
||||
pimpl->Parallel(&slsDetector::setDetectorOffsets, pos, value);
|
||||
//pimpl->Parallel<defs::coordinates>(&slsDetector::setDetectorOffset, pos, value);
|
||||
}
|
||||
|
||||
Result<bool> Detector::getQuad(Positions pos) const {
|
||||
@ -229,6 +229,31 @@ void Detector::setReadNLines(const int value, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setReadNLines, pos, value);
|
||||
}
|
||||
|
||||
Result<int> Detector::getControlPort(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getControlPort, pos);
|
||||
}
|
||||
|
||||
void Detector::setControlPort(int value, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setControlPort, pos, value);
|
||||
}
|
||||
|
||||
Result<int> Detector::getStopPort(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getStopPort, pos);
|
||||
}
|
||||
|
||||
void Detector::setStopPort(int value, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setStopPort, pos, value);
|
||||
}
|
||||
|
||||
Result<int> Detector::getReceiverPort(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getReceiverPort, pos);
|
||||
}
|
||||
|
||||
void Detector::setReceiverPort(int value, Positions pos) {
|
||||
pimpl->Parallel(&slsDetector::setReceiverPort, pos, value);
|
||||
}
|
||||
|
||||
|
||||
// Erik
|
||||
Result<int> Detector::getFramesCaughtByReceiver(Positions pos) const {
|
||||
return pimpl->Parallel(&slsDetector::getFramesCaughtByReceiver, pos);
|
||||
|
@ -788,15 +788,6 @@ int multiSlsDetector::getReadNLines(int detPos) {
|
||||
return sls::minusOneIfDifferent(r);
|
||||
}
|
||||
|
||||
std::string multiSlsDetector::checkOnline(int detPos) {
|
||||
if (detPos >= 0) {
|
||||
return detectors[detPos]->checkOnline();
|
||||
}
|
||||
|
||||
auto r = parallelCall(&slsDetector::checkOnline);
|
||||
return sls::concatenateNonEmptyStrings(r);
|
||||
}
|
||||
|
||||
int multiSlsDetector::setControlPort(int port_number, int detPos) {
|
||||
if (detPos >= 0) {
|
||||
return detectors[detPos]->setControlPort(port_number);
|
||||
@ -2995,17 +2986,6 @@ bool multiSlsDetector::getUseReceiverFlag(int detPos) {
|
||||
}
|
||||
}
|
||||
|
||||
std::string multiSlsDetector::checkReceiverOnline(int detPos) {
|
||||
// single
|
||||
if (detPos >= 0) {
|
||||
return detectors[detPos]->checkReceiverOnline();
|
||||
}
|
||||
|
||||
// multi
|
||||
auto r = parallelCall(&slsDetector::checkReceiverOnline);
|
||||
return sls::concatenateNonEmptyStrings(r);
|
||||
}
|
||||
|
||||
int multiSlsDetector::lockReceiver(int lock, int detPos) {
|
||||
// single
|
||||
if (detPos >= 0) {
|
||||
|
@ -706,7 +706,7 @@ void slsDetector::setDetectorOffset(dimension d, int off) {
|
||||
}
|
||||
}
|
||||
|
||||
void slsDetector::setDetectorOffset(slsDetectorDefs::coordinates value) {
|
||||
void slsDetector::setDetectorOffsets(slsDetectorDefs::coordinates value) {
|
||||
shm()->offset[X] = value.x;
|
||||
shm()->offset[Y] = value.y;
|
||||
}
|
||||
@ -716,17 +716,6 @@ void slsDetector::updateMultiSize(int detx, int dety) {
|
||||
shm()->multiSize[1] = dety;
|
||||
}
|
||||
|
||||
std::string slsDetector::checkOnline() {
|
||||
std::string retval;
|
||||
try {
|
||||
// Need both control and stop socket to work!
|
||||
auto client = DetectorSocket(shm()->hostname, shm()->controlPort);
|
||||
auto stop = DetectorSocket(shm()->hostname, shm()->stopPort);
|
||||
} catch (...) {
|
||||
retval = shm()->hostname;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
int slsDetector::setControlPort(int port_number) {
|
||||
int retval = -1;
|
||||
@ -2970,15 +2959,6 @@ void slsDetector::printReceiverConfiguration(TLogLevel level) {
|
||||
|
||||
bool slsDetector::getUseReceiverFlag() const { return shm()->useReceiverFlag; }
|
||||
|
||||
std::string slsDetector::checkReceiverOnline() {
|
||||
try {
|
||||
getReceiverSoftwareVersion();
|
||||
} catch (...) {
|
||||
return shm()->rxHostname;
|
||||
}
|
||||
return std::string();
|
||||
}
|
||||
|
||||
int slsDetector::lockReceiver(int lock) {
|
||||
FILE_LOG(logDEBUG1) << "Setting receiver server lock to " << lock;
|
||||
int retval = -1;
|
||||
|
@ -287,12 +287,6 @@ slsDetectorCommand::slsDetectorCommand(multiSlsDetector *det) {
|
||||
commands to configure detector status
|
||||
*/
|
||||
|
||||
/*! \page config
|
||||
- <b>checkonline</b> returns the hostnames of all detectors without connecting to them. \c Returns (string) "All online" or "[list of offline hostnames] : Not online".
|
||||
*/
|
||||
descrToFuncMap[i].m_pFuncName = "checkonline";
|
||||
descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdOnline;
|
||||
++i;
|
||||
/*! \page config
|
||||
- <b>activate [b] [p]</b> Activates/Deactivates the detector. \c b is 1 for activate, 0 for deactivate. Deactivated detector does not send data. \c p is optional and can be padding (default) or nonpadding for receivers for deactivated detectors. Used for EIGER only. \c Returns \c (int) (string)
|
||||
*/
|
||||
@ -1797,13 +1791,6 @@ slsDetectorCommand::slsDetectorCommand(multiSlsDetector *det) {
|
||||
descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdReceiver;
|
||||
++i;
|
||||
|
||||
/*! \page receiver
|
||||
- <b>rx_checkonline</b> Checks the receiver if it is online/offline mode. Only get! \c Returns (string) "All online" or "[list of offline hostnames] : Not online".
|
||||
*/
|
||||
descrToFuncMap[i].m_pFuncName = "rx_checkonline";
|
||||
descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdOnline;
|
||||
++i;
|
||||
|
||||
/*! \page receiver
|
||||
- <b>framescaught</b> gets the number of frames caught by receiver. Average of all for multi-detector command. Only get! \c Returns \c (int)
|
||||
*/
|
||||
@ -3207,15 +3194,7 @@ std::string slsDetectorCommand::cmdOnline(int narg, const char * const args[], i
|
||||
int ival;
|
||||
char ans[1000];
|
||||
|
||||
if (cmd == "checkonline") {
|
||||
if (action == PUT_ACTION)
|
||||
return std::string("cannot set");
|
||||
strcpy(ans, myDet->checkOnline(detPos).c_str());
|
||||
if (!strlen(ans))
|
||||
strcpy(ans, "All online");
|
||||
else
|
||||
strcat(ans, " :Not online");
|
||||
} else if (cmd == "activate") {
|
||||
if (cmd == "activate") {
|
||||
|
||||
if (action == PUT_ACTION) {
|
||||
if (!sscanf(args[1], "%d", &ival))
|
||||
@ -3235,13 +3214,7 @@ std::string slsDetectorCommand::cmdOnline(int narg, const char * const args[], i
|
||||
int ret = myDet->setDeactivatedRxrPaddingMode(-1, detPos);
|
||||
sprintf(ans, "%d %s", myDet->activate(-1, detPos), ret == 1 ? "padding" : (ret == 0 ? "nopadding" : "unknown"));
|
||||
} else {
|
||||
if (action == PUT_ACTION)
|
||||
return std::string("cannot set");
|
||||
strcpy(ans, myDet->checkReceiverOnline(detPos).c_str());
|
||||
if (!strlen(ans))
|
||||
strcpy(ans, "All receiver online");
|
||||
else
|
||||
strcat(ans, " :Not all receiver online");
|
||||
return std::string("unknown command");
|
||||
}
|
||||
|
||||
return ans;
|
||||
@ -3254,8 +3227,6 @@ std::string slsDetectorCommand::helpOnline(int action) {
|
||||
os << "activate i [p]\n sets the detector in activated (1) or deactivated (0) mode (does not send data). p is optional and can be padding (default) or nonpadding for receivers for deactivated detectors. Only for Eiger." << std::endl;
|
||||
}
|
||||
if (action == GET_ACTION || action == HELP_ACTION) {
|
||||
os << "checkonline \n returns the hostnames of all detectors in offline mode" << std::endl;
|
||||
os << "rx_checkonline \n returns the hostnames of all receiver in offline mode" << std::endl;
|
||||
os << "activate \n gets the detector activated (1) or deactivated (0) mode. And padding or nonpadding for the deactivated receiver. Only for Eiger." << std::endl;
|
||||
}
|
||||
return os.str();
|
||||
|
Loading…
x
Reference in New Issue
Block a user