setNetworkParameter dont split strings

This commit is contained in:
Erik Frojdh
2018-10-12 11:56:47 +02:00
parent f6357a667f
commit 1e2ffae690
2 changed files with 13 additions and 36 deletions

View File

@ -1422,17 +1422,14 @@ int64_t multiSlsDetector::setNumberOfFrames(int64_t t, int detPos){
return setTimer(FRAME_NUMBER, t, detPos); return setTimer(FRAME_NUMBER, t, detPos);
} }
int64_t multiSlsDetector::setNumberOfCycles(int64_t t, int detPos){ int64_t multiSlsDetector::setNumberOfCycles(int64_t t, int detPos){
return setTimer(CYCLES_NUMBER, t, detPos); return setTimer(CYCLES_NUMBER, t, detPos);
} }
int64_t multiSlsDetector::setNumberOfGates(int64_t t, int detPos){ int64_t multiSlsDetector::setNumberOfGates(int64_t t, int detPos){
return setTimer(GATES_NUMBER, t, detPos); return setTimer(GATES_NUMBER, t, detPos);
} }
int64_t multiSlsDetector::setNumberOfStorageCells(int64_t t, int detPos) { int64_t multiSlsDetector::setNumberOfStorageCells(int64_t t, int detPos) {
return setTimer(STORAGE_CELL_NUMBER, t, detPos); return setTimer(STORAGE_CELL_NUMBER, t, detPos);
} }
@ -1695,45 +1692,25 @@ uint32_t multiSlsDetector::clearBit(uint32_t addr, int n, int detPos) {
std::string multiSlsDetector::setNetworkParameter(networkParameter p, std::string s, int detPos) { std::string multiSlsDetector::setNetworkParameter(networkParameter parameter, std::string value, int detPos) {
// single // single
if (detPos >= 0) { if (detPos >= 0)
return detectors[detPos]->setNetworkParameter(p, s); return detectors[detPos]->setNetworkParameter(parameter, value);
}
// multi // multi
// single argument for all if (parameter != RECEIVER_STREAMING_PORT && parameter != CLIENT_STREAMING_PORT){
if (s.find('+') == std::string::npos) { auto r = parallelCall(&slsDetector::setNetworkParameter, parameter, value);
if (p != RECEIVER_STREAMING_PORT && p != CLIENT_STREAMING_PORT){
auto r = parallelCall(&slsDetector::setNetworkParameter, p, s);
return sls::concatenateIfDifferent(r);
}
// calculate ports individually
int firstPort = stoi(s);
int numSockets = (getDetectorsType() == EIGER) ? 2 : 1;
std::vector<std::string> r;
for (size_t idet = 0; idet < detectors.size(); ++idet) {
s = std::to_string(firstPort + (idet * numSockets));
r.push_back(detectors[idet]->setNetworkParameter(p,s));
}
return sls::concatenateIfDifferent(r); return sls::concatenateIfDifferent(r);
} }
//concatenated argumements for all // calculate ports individually
int firstPort = stoi(value);
int numSockets = (getDetectorsType() == EIGER) ? 2 : 1;
std::vector<std::string> r; std::vector<std::string> r;
size_t p1 = 0; for (size_t idet = 0; idet < detectors.size(); ++idet) {
size_t p2 = s.find('+', p1); auto port = std::to_string(firstPort + (idet * numSockets));
int id = 0; r.push_back(detectors[idet]->setNetworkParameter(parameter, port));
while (p2 != std::string::npos) {
r.push_back(detectors[id]->setNetworkParameter(p, s.substr(p1, p2 - p1)));
++id;
s = s.substr(p2 + 1);
p2 = s.find('+');
if (id >= (int)detectors.size())
break;
} }
return sls::concatenateIfDifferent(r); return sls::concatenateIfDifferent(r);
} }

View File

@ -855,7 +855,7 @@ public:
* @param detPos -1 for all detectors in list or specific detector position * @param detPos -1 for all detectors in list or specific detector position
* @returns network parameter value set (from getNetworkParameter) * @returns network parameter value set (from getNetworkParameter)
*/ */
std::string setNetworkParameter(networkParameter p, std::string s, int detPos = -1); std::string setNetworkParameter(networkParameter parameter, std::string value, int detPos = -1);
/** /**
* Get network parameter * Get network parameter