Merge branch 'refactor' of github.com:slsdetectorgroup/slsDetectorPackage into refactor

This commit is contained in:
2018-10-12 17:03:28 +02:00
3 changed files with 84 additions and 232 deletions

View File

@@ -138,7 +138,7 @@ int multiSlsDetector::decodeNChannel(int offsetX, int offsetY, int& channelX, in
std::string multiSlsDetector::getErrorMessage(int& critical, int detPos) { std::string multiSlsDetector::getErrorMessage(int& critical, int detPos) {
int64_t multiMask = 0, slsMask = 0; int64_t multiMask = 0, slsMask = 0;
std::string retval = ""; std::string retval = "";
char sNumber[100]; // char sNumber[100];
critical = 0; critical = 0;
size_t posmin = 0, posmax = detectors.size(); size_t posmin = 0, posmax = detectors.size();
@@ -184,15 +184,15 @@ std::string multiSlsDetector::getErrorMessage(int& critical, int detPos) {
if ((multiMask & (1 << idet)) || (detPos >= 0)) { if ((multiMask & (1 << idet)) || (detPos >= 0)) {
//append detector id //append detector id
sprintf(sNumber, "%ld", idet); // sprintf(sNumber, "%ld", idet);
retval.append("Detector " + std::string(sNumber) + std::string(":\n")); retval.append("Detector " + std::to_string(idet) + std::string(":\n"));
//get sls det error mask //get sls det error mask
slsMask = detectors[idet]->getErrorMask(); slsMask = detectors[idet]->getErrorMask();
#ifdef VERYVERBOSE #ifdef VERYVERBOSE
//append sls det error mask //append sls det error mask
sprintf(sNumber, "0x%lx", slsMask); // sprintf(sNumber, "0x%lx", slsMask);
retval.append("Error Mask " + std::string(sNumber) + std::string("\n")); retval.append("Error Mask " + std::to_string(slsMask) + std::string("\n"));
#endif #endif
//get the error critical level //get the error critical level
@@ -236,7 +236,7 @@ void multiSlsDetector::setAcquiringFlag(bool b) {
} }
bool multiSlsDetector::getAcquiringFlag() { bool multiSlsDetector::getAcquiringFlag() const {
return thisMultiDetector->acquiringFlag; return thisMultiDetector->acquiringFlag;
} }
@@ -277,23 +277,6 @@ int64_t multiSlsDetector::getId(idMode mode, int detPos) {
} }
// slsDetector* multiSlsDetector::getSlsDetector(int detPos) {
// return detectors[detPos].get();
// }
// slsDetector *multiSlsDetector::operator()(int detPos) const {
// return detectors[detPos].get();
// }
// slsDetector* multiSlsDetector::operator[](int detPos) const {
// //Providing access to detectors with range checking
// //throw exception if out of range
// if (detPos >= 0 && detPos < (int)detectors.size())
// return detectors[detPos].get();
// else
// throw(std::range_error("Detector does not exist"));
// }
void multiSlsDetector::freeSharedMemory(int multiId, int detPos) { void multiSlsDetector::freeSharedMemory(int multiId, int detPos) {
// single // single
if (detPos >= 0) { if (detPos >= 0) {
@@ -584,16 +567,10 @@ void multiSlsDetector::addSlsDetector (std::string s) {
return; return;
} }
int pos = (int)detectors.size(); int pos = (int)detectors.size();
detectors.push_back(sls::make_unique<slsDetector>(type, detId, pos, false)); detectors.push_back(sls::make_unique<slsDetector>(type, detId, pos, false));
thisMultiDetector->numberOfDetectors = detectors.size(); thisMultiDetector->numberOfDetectors = detectors.size();
detectors[pos]->setHostname(s.c_str()); // also updates client detectors[pos]->setHostname(s.c_str()); // also updates client
thisMultiDetector->dataBytes += detectors[pos]->getDataBytes(); thisMultiDetector->dataBytes += detectors[pos]->getDataBytes();
thisMultiDetector->dataBytesInclGapPixels += detectors[pos]->getDataBytesInclGapPixels(); thisMultiDetector->dataBytesInclGapPixels += detectors[pos]->getDataBytesInclGapPixels();
thisMultiDetector->numberOfChannels += detectors[pos]->getTotalNumberOfChannels(); thisMultiDetector->numberOfChannels += detectors[pos]->getTotalNumberOfChannels();
@@ -935,78 +912,44 @@ int multiSlsDetector::execCommand(std::string cmd, int detPos) {
return sls::allEqualTo(r, static_cast<int>(OK)) ? OK : FAIL; return sls::allEqualTo(r, static_cast<int>(OK)) ? OK : FAIL;
} }
int multiSlsDetector::readConfigurationFile(const std::string& fname) { int multiSlsDetector::readConfigurationFile(const std::string& fname) {
freeSharedMemory(); freeSharedMemory();
setupMultiDetector(); setupMultiDetector();
std::string ans; char* args[100];
std::string str; char myargs[100][1000];
std::ifstream infile; std::cout << "Loading configuration file: " << fname << std::endl;
int iargval;
int interrupt = 0;
char* args[1000];
char myargs[1000][1000]; std::ifstream input_file;
input_file.open(fname, std::ios_base::in);
std::string sargname, sargval; if (input_file.is_open()) {
int iline = 0; std::string current_line;
std::cout << "config file name " << fname << std::endl; while (input_file.good()) {
infile.open(fname.c_str(), std::ios_base::in); getline(input_file, current_line);
if (infile.is_open()) { if (current_line.find('#') != std::string::npos)
current_line.erase(current_line.find('#'));
while (infile.good() and interrupt == 0) {
sargname = "none";
sargval = "0";
getline(infile, str);
++iline;
// remove comments that come after
if (str.find('#') != std::string::npos)
str.erase(str.find('#'));
#ifdef VERBOSE #ifdef VERBOSE
std::cout << "string:" << str << std::endl; std::cout << "current_line after removing comments:" << current_line << std::endl;
#endif #endif
if (str.length() < 2) { if (current_line.length() > 1) {
#ifdef VERBOSE std::istringstream line_stream(current_line);
std::cout << "Empty line or Comment " << std::endl; int n_arguments = 0;
#endif std::string current_argument;
continue; while (line_stream.good()) {
} else { line_stream >> current_argument;
std::istringstream ssstr(str); strcpy(myargs[n_arguments], current_argument.c_str());
iargval = 0; args[n_arguments] = myargs[n_arguments];
while (ssstr.good()) { ++n_arguments;
ssstr >> sargname;
#ifdef VERBOSE
std::cout << iargval << " " << sargname << std::endl;
#endif
strcpy(myargs[iargval], sargname.c_str());
args[iargval] = myargs[iargval];
#ifdef VERBOSE
std::cout << "--" << iargval << " " << args[iargval] << std::endl;
#endif
++iargval;
} }
#ifdef VERBOSE multiSlsDetectorClient(n_arguments, args, PUT_ACTION, this);
std::cout << std::endl;
for (int ia = 0; ia < iargval; ia++)
std::cout << args[ia] << " ??????? ";
std::cout << std::endl;
#endif
multiSlsDetectorClient(iargval, args, PUT_ACTION, this);
} }
++iline;
} }
input_file.close();
infile.close();
} else { } else {
std::cout << "Error opening configuration file " << fname << " for reading" << std::endl; std::cout << "Error opening configuration file " << fname << " for reading" << std::endl;
setErrorMask(getErrorMask() | MULTI_CONFIG_FILE_ERROR); setErrorMask(getErrorMask() | MULTI_CONFIG_FILE_ERROR);
return FAIL; return FAIL;
} }
#ifdef VERBOSE
std::cout << "Read configuration file of " << iline << " lines" << std::endl;
#endif
if (getErrorMask()) { if (getErrorMask()) {
int c; int c;
@@ -1014,7 +957,6 @@ int multiSlsDetector::readConfigurationFile(const std::string& fname) {
getErrorMessage(c).c_str()); getErrorMessage(c).c_str());
return FAIL; return FAIL;
} }
return OK; return OK;
} }
@@ -1169,28 +1111,12 @@ std::string multiSlsDetector::getSettingsDir(int detPos) {
} }
std::string multiSlsDetector::setSettingsDir(std::string s, int detPos) { std::string multiSlsDetector::setSettingsDir(std::string directory, int detPos) {
// single if (detPos >= 0)
if (detPos >= 0) { return detectors[detPos]->setSettingsDir(directory);
return detectors[detPos]->setSettingsDir(s);
}
// multi auto r = parallelCall(&slsDetector::setSettingsDir, directory);
size_t p1 = 0; return sls::concatenateIfDifferent(r);
size_t p2 = s.find('+', p1);
int id = 0;
while (p2 != std::string::npos) {
detectors[id]->setSettingsDir(s.substr(p1, p2 - p1));
if (detectors[id]->getErrorMask())
setErrorMask(getErrorMask() | (1 << id));
++id;
s = s.substr(p2 + 1);
p2 = s.find('+');
if (id >= (int)detectors.size())
break;
}
return getSettingsDir();
} }
@@ -1496,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);
} }
@@ -1769,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);
} }
@@ -3969,7 +3872,6 @@ int multiSlsDetector::setThreadedProcessing(int enable) {
void multiSlsDetector::startProcessingThread() { void multiSlsDetector::startProcessingThread() {
setTotalProgress(); setTotalProgress();
#ifdef VERBOSE #ifdef VERBOSE
std::cout << "start thread stuff" << std::endl; std::cout << "start thread stuff" << std::endl;
@@ -3988,19 +3890,14 @@ void multiSlsDetector::startProcessingThread() {
/* Initialize and set thread detached attribute */ /* Initialize and set thread detached attribute */
pthread_attr_init(&tattr); pthread_attr_init(&tattr);
pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_JOINABLE); pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_JOINABLE);
pthread_setschedparam(pthread_self(), policy, &mparam);
ret = pthread_setschedparam(pthread_self(), policy, &mparam);
ret = pthread_create(&dataProcessingThread, &tattr,startProcessData, (void*)this); ret = pthread_create(&dataProcessingThread, &tattr,startProcessData, (void*)this);
if (ret) if (ret)
printf("ret %d\n", ret); printf("ret %d\n", ret);
pthread_attr_destroy(&tattr); pthread_attr_destroy(&tattr);
// scheduling parameters of target thread // scheduling parameters of target thread
ret = pthread_setschedparam(dataProcessingThread, policy, &param); pthread_setschedparam(dataProcessingThread, policy, &param);
} }

View File

@@ -208,7 +208,7 @@ public:
* Get acquiring flag from shared memory * Get acquiring flag from shared memory
* @returns acquiring flag * @returns acquiring flag
*/ */
bool getAcquiringFlag(); bool getAcquiringFlag() const;
/** /**
* Check if acquiring flag is set, set error if set * Check if acquiring flag is set, set error if set
@@ -531,7 +531,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 the trimbit/settings directory * @returns the trimbit/settings directory
*/ */
std::string setSettingsDir(std::string s, int detPos = -1); std::string setSettingsDir(std::string directory, int detPos = -1);
/** /**
* Loads the modules settings/trimbits reading from a specific file * Loads the modules settings/trimbits reading from a specific 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

View File

@@ -868,7 +868,6 @@ slsDetectorDefs::detectorType slsDetector::getDetectorType(const char *name, int
} }
char m[MAX_STR_LENGTH];
#ifdef VERBOSE #ifdef VERBOSE
std::cout << "Getting detector type " << std::endl; std::cout << "Getting detector type " << std::endl;
#endif #endif
@@ -881,8 +880,9 @@ slsDetectorDefs::detectorType slsDetector::getDetectorType(const char *name, int
std::cout << "Detector type is "<< t << std::endl; std::cout << "Detector type is "<< t << std::endl;
#endif #endif
} else { } else {
mySocket->ReceiveDataOnly(m,sizeof(m)); char mess[MAX_STR_LENGTH];
std::cout<< "Detector returned error: " << m << std::endl; mySocket->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Detector returned error: " << mess << std::endl;
} }
mySocket->Disconnect(); mySocket->Disconnect();
} else { } else {
@@ -894,14 +894,12 @@ slsDetectorDefs::detectorType slsDetector::getDetectorType(const char *name, int
int slsDetector::setDetectorType(detectorType const type) { int slsDetector::setDetectorType(detectorType const type) {
int ret=FAIL; int ret=FAIL;
int fnum=F_GET_DETECTOR_TYPE,fnum2=F_GET_RECEIVER_TYPE; int fnum=F_GET_DETECTOR_TYPE,fnum2=F_GET_RECEIVER_TYPE;
detectorType retval = type; detectorType retval = type;
char mess[MAX_STR_LENGTH]; char mess[MAX_STR_LENGTH];
memset(mess, 0, MAX_STR_LENGTH); memset(mess, 0, MAX_STR_LENGTH);
if (type != GET_DETECTOR_TYPE) { if (type != GET_DETECTOR_TYPE) {
#ifdef VERBOSE #ifdef VERBOSE
std::cout<< std::endl; std::cout<< std::endl;
@@ -930,7 +928,6 @@ int slsDetector::setDetectorType(detectorType const type) {
if((thisDetector->myDetectorType != GENERIC) && if((thisDetector->myDetectorType != GENERIC) &&
(thisDetector->receiverOnlineFlag==ONLINE_FLAG)) { (thisDetector->receiverOnlineFlag==ONLINE_FLAG)) {
ret = FAIL; ret = FAIL;
if(thisDetector->receiverOnlineFlag==ONLINE_FLAG){
#ifdef VERBOSE #ifdef VERBOSE
std::cout << "Sending detector type to Receiver " << std::cout << "Sending detector type to Receiver " <<
(int)thisDetector->myDetectorType << std::endl; (int)thisDetector->myDetectorType << std::endl;
@@ -946,9 +943,7 @@ int slsDetector::setDetectorType(detectorType const type) {
std::cout << "ERROR: Could not send detector type to receiver" << std::endl; std::cout << "ERROR: Could not send detector type to receiver" << std::endl;
setErrorMask((getErrorMask())|(RECEIVER_DET_HOSTTYPE_NOT_SET)); setErrorMask((getErrorMask())|(RECEIVER_DET_HOSTTYPE_NOT_SET));
} }
}
} }
return retval; return retval;
} }
@@ -1250,11 +1245,10 @@ int slsDetector::setTCPSocket(std::string const name, int const control_port, in
int slsDetector::setPort(portType index, int num) { int slsDetector::setPort(portType index, int num) {
int fnum=F_SET_PORT, fnum2 = F_SET_RECEIVER_PORT; int fnum=F_SET_PORT, fnum2 = F_SET_RECEIVER_PORT;
int retval; int retval;
// uint64_t ut; // uint64_t ut;
char mess[MAX_STR_LENGTH]="";
int ret=FAIL; int ret=FAIL;
bool online=false; bool online=false;
MySocketTCP *s = 0; MySocketTCP *s = 0;
@@ -1362,6 +1356,7 @@ int slsDetector::setPort(portType index, int num) {
s->SendDataOnly(&num,sizeof(num)); s->SendDataOnly(&num,sizeof(num));
s->ReceiveDataOnly(&ret,sizeof(ret)); s->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==FAIL) { if (ret==FAIL) {
char mess[MAX_STR_LENGTH]="";
s->ReceiveDataOnly(mess,sizeof(mess)); s->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Detector returned error: " << mess << std::endl; std::cout<< "Detector returned error: " << mess << std::endl;
} else { } else {
@@ -2099,8 +2094,7 @@ int slsDetector::loadSettingsFile(std::string fname) {
int iodelay = -1; int iodelay = -1;
int tau = -1; int tau = -1;
std::string fn=fname; std::string fn = fname;
fn=fname;
std::ostringstream ostfn; std::ostringstream ostfn;
ostfn << fname; ostfn << fname;
@@ -2233,8 +2227,7 @@ int slsDetector::startAcquisition() {
int fnum=F_START_ACQUISITION; int fnum=F_START_ACQUISITION;
int ret=FAIL; int ret=FAIL;
char mess[MAX_STR_LENGTH]="";
#ifdef VERBOSE #ifdef VERBOSE
std::cout<< "Starting acquisition "<< std::endl; std::cout<< "Starting acquisition "<< std::endl;
#endif #endif
@@ -2244,6 +2237,7 @@ int slsDetector::startAcquisition() {
controlSocket->SendDataOnly(&fnum,sizeof(fnum)); controlSocket->SendDataOnly(&fnum,sizeof(fnum));
controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==FAIL) { if (ret==FAIL) {
char mess[MAX_STR_LENGTH]="";
controlSocket->ReceiveDataOnly(mess,sizeof(mess)); controlSocket->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Detector returned error: " << mess << std::endl; std::cout<< "Detector returned error: " << mess << std::endl;
} }
@@ -2778,12 +2772,9 @@ int64_t slsDetector::setTimer(timerIndex index, int64_t t) {
int64_t slsDetector::getTimeLeft(timerIndex index) { int64_t slsDetector::getTimeLeft(timerIndex index) {
int fnum = F_GET_TIME_LEFT;
int64_t retval = -1;
int fnum=F_GET_TIME_LEFT; int ret = OK;
int64_t retval;
char mess[MAX_STR_LENGTH]="";
int ret=OK;
#ifdef VERBOSE #ifdef VERBOSE
std::cout<< "Getting timer "<< index << std::endl; std::cout<< "Getting timer "<< index << std::endl;
@@ -2795,6 +2786,7 @@ int64_t slsDetector::getTimeLeft(timerIndex index) {
stopSocket->SendDataOnly(&index,sizeof(index)); stopSocket->SendDataOnly(&index,sizeof(index));
stopSocket->ReceiveDataOnly(&ret,sizeof(ret)); stopSocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==FAIL) { if (ret==FAIL) {
char mess[MAX_STR_LENGTH]="";
stopSocket->ReceiveDataOnly(mess,sizeof(mess)); stopSocket->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Detector returned error: " << mess << std::endl; std::cout<< "Detector returned error: " << mess << std::endl;
} else { } else {
@@ -3023,16 +3015,10 @@ int slsDetector::setDAC(int val, dacIndex index, int mV) {
int slsDetector::getADC(dacIndex index) { int slsDetector::getADC(dacIndex index) {
int retval = -1;
int retval;
int fnum=F_GET_ADC; int fnum=F_GET_ADC;
int ret=FAIL; int ret=FAIL;
char mess[MAX_STR_LENGTH]=""; int arg = index;
int arg;
arg=index;
#ifdef VERBOSE #ifdef VERBOSE
std::cout<< std::endl; std::cout<< std::endl;
@@ -3049,6 +3035,7 @@ int slsDetector::getADC(dacIndex index) {
*(adcs+index)=retval; *(adcs+index)=retval;
} }
} else { } else {
char mess[MAX_STR_LENGTH]="";
stopSocket->ReceiveDataOnly(mess,sizeof(mess)); stopSocket->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Detector returned error: " << mess << std::endl; std::cout<< "Detector returned error: " << mess << std::endl;
} }
@@ -3064,30 +3051,18 @@ int slsDetector::getADC(dacIndex index) {
if (ret==FAIL) { if (ret==FAIL) {
std::cout<< "Get ADC failed " << std::endl; std::cout<< "Get ADC failed " << std::endl;
} }
return retval; return retval;
} }
slsDetectorDefs::externalCommunicationMode slsDetector::setExternalCommunicationMode( slsDetectorDefs::externalCommunicationMode slsDetector::setExternalCommunicationMode(
externalCommunicationMode pol) { externalCommunicationMode pol) {
int arg = pol;
externalCommunicationMode retval = GET_EXTERNAL_COMMUNICATION_MODE;;
int arg[1];
externalCommunicationMode retval;
int fnum=F_SET_EXTERNAL_COMMUNICATION_MODE; int fnum=F_SET_EXTERNAL_COMMUNICATION_MODE;
char mess[MAX_STR_LENGTH]="";
arg[0]=pol;
int ret=FAIL; int ret=FAIL;
retval=GET_EXTERNAL_COMMUNICATION_MODE;
#ifdef VERBOSE #ifdef VERBOSE
std::cout<< std::endl; std::cout<< std::endl;
@@ -3101,6 +3076,7 @@ slsDetectorDefs::externalCommunicationMode slsDetector::setExternalCommunication
if (ret!=FAIL) if (ret!=FAIL)
controlSocket->ReceiveDataOnly(&retval,sizeof(retval)); controlSocket->ReceiveDataOnly(&retval,sizeof(retval));
else { else {
char mess[MAX_STR_LENGTH]="";
controlSocket->ReceiveDataOnly(mess,sizeof(mess)); controlSocket->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Detector returned error: " << mess << std::endl; std::cout<< "Detector returned error: " << mess << std::endl;
} }
@@ -3119,7 +3095,6 @@ slsDetectorDefs::externalCommunicationMode slsDetector::setExternalCommunication
std::cout<< "Setting communication mode failed" << std::endl; std::cout<< "Setting communication mode failed" << std::endl;
} }
return retval; return retval;
} }
@@ -3407,7 +3382,6 @@ std::string slsDetector::setNetworkParameter(networkParameter index, std::string
std::string slsDetector::getNetworkParameter(networkParameter index) { std::string slsDetector::getNetworkParameter(networkParameter index) {
std::ostringstream ss;std::string s;
switch (index) { switch (index) {
case DETECTOR_MAC: case DETECTOR_MAC:
return getDetectorMAC(); return getDetectorMAC();
@@ -3444,7 +3418,7 @@ std::string slsDetector::getNetworkParameter(networkParameter index) {
return getReceiverRealUDPSocketBufferSize(); return getReceiverRealUDPSocketBufferSize();
default: default:
return (char*)("unknown network parameter"); return std::string("unknown network parameter");
} }
} }
@@ -4110,13 +4084,10 @@ int slsDetector::setUDPConnection() {
int slsDetector::digitalTest( digitalTestMode mode, int ival) { int slsDetector::digitalTest( digitalTestMode mode, int ival) {
int retval = -1;
int fnum = F_DIGITAL_TEST;
int retval; int ret = FAIL;
int fnum=F_DIGITAL_TEST;
int ret=FAIL;
char mess[MAX_STR_LENGTH]="";
#ifdef VERBOSE #ifdef VERBOSE
std::cout<< std::endl; std::cout<< std::endl;
std::cout<< "Getting id of "<< mode << std::endl; std::cout<< "Getting id of "<< mode << std::endl;
@@ -4131,6 +4102,7 @@ int slsDetector::digitalTest( digitalTestMode mode, int ival) {
if (ret!=FAIL) if (ret!=FAIL)
controlSocket->ReceiveDataOnly(&retval,sizeof(retval)); controlSocket->ReceiveDataOnly(&retval,sizeof(retval));
else { else {
char mess[MAX_STR_LENGTH]="";
controlSocket->ReceiveDataOnly(mess,sizeof(mess)); controlSocket->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Detector returned error: " << mess << std::endl; std::cout<< "Detector returned error: " << mess << std::endl;
} }
@@ -4211,30 +4183,22 @@ int slsDetector::sendImageToDetector(imageType index,short int imageVals[]) {
int slsDetector::writeCounterBlockFile(std::string const fname,int startACQ) { int slsDetector::writeCounterBlockFile(std::string const fname,int startACQ) {
int ret=FAIL;
short int counterVals[thisDetector->nChans*thisDetector->nChips];
#ifdef VERBOSE #ifdef VERBOSE
std::cout<< std::endl<< "Reading Counter to \""<<fname; std::cout<< std::endl<< "Reading Counter to \""<<fname;
if(startACQ==1) if(startACQ==1)
std::cout<<"\" and Restarting Acquisition"; std::cout<<"\" and Restarting Acquisition";
std::cout<<std::endl; std::cout<<std::endl;
#endif #endif
short int counterVals[thisDetector->nChans*thisDetector->nChips];
ret=getCounterBlock(counterVals,startACQ); int ret=getCounterBlock(counterVals,startACQ);
if(ret==OK) if(ret==OK)
ret=writeDataFile(fname, getTotalNumberOfChannels(), counterVals); ret=writeDataFile(fname, getTotalNumberOfChannels(), counterVals);
return ret; return ret;
} }
int slsDetector::getCounterBlock(short int arg[],int startACQ) { int slsDetector::getCounterBlock(short int arg[],int startACQ) {
int ret=FAIL; int ret=FAIL;
int fnum=F_READ_COUNTER_BLOCK; int fnum=F_READ_COUNTER_BLOCK;
char mess[MAX_STR_LENGTH]="";
if (thisDetector->onlineFlag==ONLINE_FLAG) { if (thisDetector->onlineFlag==ONLINE_FLAG) {
if (connectControl() == OK){ if (connectControl() == OK){
@@ -4244,6 +4208,7 @@ int slsDetector::getCounterBlock(short int arg[],int startACQ) {
if (ret!=FAIL) if (ret!=FAIL)
controlSocket->ReceiveDataOnly(arg,thisDetector->dataBytes); controlSocket->ReceiveDataOnly(arg,thisDetector->dataBytes);
else { else {
char mess[MAX_STR_LENGTH]="";
controlSocket->ReceiveDataOnly(mess,sizeof(mess)); controlSocket->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Detector returned error: " << mess << std::endl; std::cout<< "Detector returned error: " << mess << std::endl;
} }
@@ -4252,13 +4217,10 @@ int slsDetector::getCounterBlock(short int arg[],int startACQ) {
updateDetector(); updateDetector();
} }
} }
return ret; return ret;
} }
int slsDetector::resetCounterBlock(int startACQ) { int slsDetector::resetCounterBlock(int startACQ) {
int ret=FAIL; int ret=FAIL;
@@ -4678,10 +4640,8 @@ int slsDetector::setFlippedData(dimension d, int value) {
int slsDetector::setAllTrimbits(int val) { int slsDetector::setAllTrimbits(int val) {
int fnum=F_SET_ALL_TRIMBITS; int fnum=F_SET_ALL_TRIMBITS;
int retval; int retval = -1;
char mess[MAX_STR_LENGTH]="";
int ret=OK; int ret=OK;
#ifdef VERBOSE #ifdef VERBOSE
std::cout<< "Setting all trimbits to "<< val << std::endl; std::cout<< "Setting all trimbits to "<< val << std::endl;
#endif #endif
@@ -4691,6 +4651,7 @@ int slsDetector::setAllTrimbits(int val) {
controlSocket->SendDataOnly(&val,sizeof(val)); controlSocket->SendDataOnly(&val,sizeof(val));
controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==FAIL) { if (ret==FAIL) {
char mess[MAX_STR_LENGTH]="";
controlSocket->ReceiveDataOnly(mess,sizeof(mess)); controlSocket->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Detector returned error: " << mess << std::endl; std::cout<< "Detector returned error: " << mess << std::endl;
setErrorMask((getErrorMask())|(ALLTIMBITS_NOT_SET)); setErrorMask((getErrorMask())|(ALLTIMBITS_NOT_SET));
@@ -4702,7 +4663,6 @@ int slsDetector::setAllTrimbits(int val) {
updateDetector(); updateDetector();
} }
} }
#ifdef VERBOSE #ifdef VERBOSE
std::cout<< "All trimbits were set to "<< retval << std::endl; std::cout<< "All trimbits were set to "<< retval << std::endl;
#endif #endif
@@ -6339,16 +6299,12 @@ int slsDetector::setReceiverPartialFramesPadding(int f) {
} }
slsDetectorDefs::fileFormat slsDetector::setFileFormat(fileFormat f) { slsDetectorDefs::fileFormat slsDetector::setFileFormat(fileFormat f) {
if (f == GET_FILE_FORMAT) if (f == GET_FILE_FORMAT)
return getFileFormat(); return getFileFormat();
int fnum=F_SET_RECEIVER_FILE_FORMAT; int fnum=F_SET_RECEIVER_FILE_FORMAT;
int ret = FAIL; int ret = FAIL;
int arg = -1; int arg = f;
int retval = -1; int retval = -1;
arg = (int)f;
#ifdef VERBOSE #ifdef VERBOSE
std::cout << "Sending file format to receiver " << arg << std::endl; std::cout << "Sending file format to receiver " << arg << std::endl;
#endif #endif
@@ -6477,7 +6433,7 @@ slsDetectorDefs::runStatus slsDetector::getReceiverStatus() {
int fnum=F_GET_RECEIVER_STATUS; int fnum=F_GET_RECEIVER_STATUS;
int ret = FAIL; int ret = FAIL;
int retval=-1; int retval=-1;
runStatus s=ERROR; runStatus s = ERROR;
if (thisDetector->receiverOnlineFlag==ONLINE_FLAG) { if (thisDetector->receiverOnlineFlag==ONLINE_FLAG) {
#ifdef VERBOSE #ifdef VERBOSE
@@ -6490,9 +6446,8 @@ slsDetectorDefs::runStatus slsDetector::getReceiverStatus() {
if(retval!=-1) if(retval!=-1)
s=(runStatus)retval; s=(runStatus)retval;
if(ret==FORCE_UPDATE) if(ret==FORCE_UPDATE)
ret=updateReceiver(); updateReceiver();
} }
return s; return s;
} }