mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-22 01:27:59 +02:00
Merge branch 'externalgui' into developer
This commit is contained in:
@ -207,6 +207,7 @@ multiSlsDetector::multiSlsDetector(int id) : slsDetectorUtils(), shmId(-1)
|
|||||||
|
|
||||||
thisMultiDetector->receiver_read_freq = 0;
|
thisMultiDetector->receiver_read_freq = 0;
|
||||||
thisMultiDetector->acquiringFlag = false;
|
thisMultiDetector->acquiringFlag = false;
|
||||||
|
thisMultiDetector->externalgui = false;
|
||||||
thisMultiDetector->alreadyExisting=1;
|
thisMultiDetector->alreadyExisting=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3589,11 +3590,11 @@ string multiSlsDetector::getNetworkParameter(networkParameter p) {
|
|||||||
string multiSlsDetector::setNetworkParameter(networkParameter p, string s){
|
string multiSlsDetector::setNetworkParameter(networkParameter p, string s){
|
||||||
|
|
||||||
// disable data streaming before changing zmq port (but only if they were on)
|
// disable data streaming before changing zmq port (but only if they were on)
|
||||||
/*int prev_streaming = 0;*/
|
int prev_streaming = 0;
|
||||||
if (p == RECEIVER_STREAMING_PORT) {
|
if (p == RECEIVER_STREAMING_PORT) {
|
||||||
/*prev_streaming = getStreamingSocketsCreatedInClient();*/
|
prev_streaming = getStreamingSocketsCreatedInClient();
|
||||||
enableDataStreamingFromReceiver(0);
|
enableDataStreamingFromReceiver(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s.find('+')==string::npos) {
|
if (s.find('+')==string::npos) {
|
||||||
|
|
||||||
@ -3646,11 +3647,11 @@ string multiSlsDetector::setNetworkParameter(networkParameter p, string s){
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
//enable data streaming if it was on
|
//enable data streaming if it was on
|
||||||
if (p == RECEIVER_STREAMING_PORT && prev_streaming)
|
if (p == RECEIVER_STREAMING_PORT && prev_streaming)
|
||||||
enableDataStreamingFromReceiver(1);
|
enableDataStreamingFromReceiver(1);
|
||||||
*/
|
|
||||||
return getNetworkParameter(p);
|
return getNetworkParameter(p);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -5873,8 +5874,10 @@ int multiSlsDetector::getStreamingSocketsCreatedInClient() {
|
|||||||
|
|
||||||
int multiSlsDetector::enableDataStreamingFromReceiver(int enable){
|
int multiSlsDetector::enableDataStreamingFromReceiver(int enable){
|
||||||
|
|
||||||
if(enable >= 0){
|
//create client sockets only if no external gui
|
||||||
/*if(dataSocketsStarted != enable){*/
|
if (!thisMultiDetector->externalgui) {
|
||||||
|
if(enable >= 0){
|
||||||
|
|
||||||
//destroy data threads
|
//destroy data threads
|
||||||
if(dataSocketsStarted)
|
if(dataSocketsStarted)
|
||||||
createReceivingDataSockets(true);
|
createReceivingDataSockets(true);
|
||||||
@ -5889,12 +5892,10 @@ int multiSlsDetector::enableDataStreamingFromReceiver(int enable){
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*}*/
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int ret=-100;
|
int ret=-100;
|
||||||
if(!threadpool){
|
if(!threadpool){
|
||||||
cout << "Error in creating threadpool. Exiting" << endl;
|
cout << "Error in creating threadpool. Exiting" << endl;
|
||||||
@ -5927,9 +5928,10 @@ int multiSlsDetector::enableDataStreamingFromReceiver(int enable){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ret != dataSocketsStarted)
|
if (!thisMultiDetector->externalgui) {
|
||||||
ret = -1;
|
if (ret != dataSocketsStarted)
|
||||||
|
ret = -1;
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6245,3 +6247,12 @@ void multiSlsDetector::setAcquiringFlag(bool b){
|
|||||||
bool multiSlsDetector::getAcquiringFlag(){
|
bool multiSlsDetector::getAcquiringFlag(){
|
||||||
return thisMultiDetector->acquiringFlag;
|
return thisMultiDetector->acquiringFlag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void multiSlsDetector::setExternalGuiFlag(bool b){
|
||||||
|
thisMultiDetector->externalgui = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool multiSlsDetector::getExternalGuiFlag(){
|
||||||
|
return thisMultiDetector->externalgui;
|
||||||
|
}
|
||||||
|
@ -201,6 +201,9 @@ class multiSlsDetector : public slsDetectorUtils {
|
|||||||
/** flag for acquiring */
|
/** flag for acquiring */
|
||||||
bool acquiringFlag;
|
bool acquiringFlag;
|
||||||
|
|
||||||
|
/** external gui */
|
||||||
|
bool externalgui;
|
||||||
|
|
||||||
} sharedMultiSlsDetector;
|
} sharedMultiSlsDetector;
|
||||||
|
|
||||||
|
|
||||||
@ -1442,6 +1445,19 @@ class multiSlsDetector : public slsDetectorUtils {
|
|||||||
*/
|
*/
|
||||||
bool getAcquiringFlag();
|
bool getAcquiringFlag();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set external gui flag in shared memory
|
||||||
|
\param b set external gui flag
|
||||||
|
*/
|
||||||
|
void setExternalGuiFlag(bool b=false);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get external gui flag from shared memory
|
||||||
|
\returns external gui flag
|
||||||
|
*/
|
||||||
|
bool getExternalGuiFlag();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -9074,3 +9074,15 @@ void slsDetector::setAcquiringFlag(bool b){
|
|||||||
bool slsDetector::getAcquiringFlag(){
|
bool slsDetector::getAcquiringFlag(){
|
||||||
return thisDetector->acquiringFlag;
|
return thisDetector->acquiringFlag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void slsDetector::setExternalGuiFlag(bool b){
|
||||||
|
pthread_mutex_lock(&ms);
|
||||||
|
parentDet->setExternalGuiFlag(b);
|
||||||
|
pthread_mutex_unlock(&ms);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool slsDetector::getExternalGuiFlag(){
|
||||||
|
return parentDet->getExternalGuiFlag();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -1884,6 +1884,18 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
|||||||
*/
|
*/
|
||||||
bool getAcquiringFlag();
|
bool getAcquiringFlag();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set external gui flag in shared memory
|
||||||
|
\param b set external gui flag
|
||||||
|
*/
|
||||||
|
void setExternalGuiFlag(bool b=false);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get external gui flag from shared memory
|
||||||
|
\returns external gui flag
|
||||||
|
*/
|
||||||
|
bool getExternalGuiFlag();
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
@ -256,9 +256,9 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*! \page config
|
/*! \page config
|
||||||
- <b> datastream </b>enables/disables the 0MQ data stream (0MQ threads created) from receiver to client. \c Returns \c (int)
|
- <b> externalgui </b>sets/gets external gui flag. 1 sets and enables the 0MQ data stream (0MQ threads created) from receiver to client, while 0 unsets and disables. \c Returns \c (int)
|
||||||
*/
|
*/
|
||||||
descrToFuncMap[i].m_pFuncName="datastream"; //
|
descrToFuncMap[i].m_pFuncName="externalgui"; //
|
||||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdDataStream;
|
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdDataStream;
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
@ -2295,7 +2295,10 @@ string slsDetectorCommand::cmdAcquire(int narg, char *args[], int action) {
|
|||||||
|
|
||||||
|
|
||||||
myDet->setOnline(ONLINE_FLAG);
|
myDet->setOnline(ONLINE_FLAG);
|
||||||
if (myDet->setReceiverOnline(ONLINE_FLAG) == ONLINE_FLAG) {
|
|
||||||
|
if (myDet->getExternalGuiFlag())
|
||||||
|
myDet->setReceiverOnline(ONLINE_FLAG);
|
||||||
|
else if (myDet->setReceiverOnline(ONLINE_FLAG) == ONLINE_FLAG) {
|
||||||
// command line: must be off, if receiver on or there was -1, then
|
// command line: must be off, if receiver on or there was -1, then
|
||||||
if (myDet->enableDataStreamingFromReceiver(-1) != 0){
|
if (myDet->enableDataStreamingFromReceiver(-1) != 0){
|
||||||
//switch it off, if error
|
//switch it off, if error
|
||||||
@ -2469,10 +2472,20 @@ string slsDetectorCommand::cmdDataStream(int narg, char *args[], int action) {
|
|||||||
|
|
||||||
if (action==PUT_ACTION) {
|
if (action==PUT_ACTION) {
|
||||||
if (!sscanf(args[1],"%d",&ival))
|
if (!sscanf(args[1],"%d",&ival))
|
||||||
return string ("cannot scan datastream mode");
|
return string ("cannot scan externalgui mode");
|
||||||
|
bool bval=ival>0?true:false;
|
||||||
|
bool oldval = myDet->getExternalGuiFlag();
|
||||||
|
myDet->setExternalGuiFlag(bval);
|
||||||
myDet->enableDataStreamingFromReceiver(ival);
|
myDet->enableDataStreamingFromReceiver(ival);
|
||||||
}
|
}
|
||||||
sprintf(ans,"%d",myDet->enableDataStreamingFromReceiver());
|
|
||||||
|
int retval = myDet->getExternalGuiFlag();
|
||||||
|
//if external gui on and datastreaming off
|
||||||
|
if (retval && !myDet->enableDataStreamingFromReceiver()) {
|
||||||
|
retval=-1;
|
||||||
|
printf("Error: data streaming in receiver is switched off while external gui flag in shared memory is off.\n");
|
||||||
|
}
|
||||||
|
sprintf(ans,"%d",myDet->getExternalGuiFlag());
|
||||||
return string(ans);
|
return string(ans);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2481,9 +2494,9 @@ string slsDetectorCommand::helpDataStream(int narg, char *args[], int action) {
|
|||||||
|
|
||||||
ostringstream os;
|
ostringstream os;
|
||||||
if (action==GET_ACTION || action==HELP_ACTION)
|
if (action==GET_ACTION || action==HELP_ACTION)
|
||||||
os << string("datastream \t gets if zmq data stream from receiver is enabled. \n");
|
os << string("externalgui \t gets external gui flag. 1/0 means the 0MQ data stream (0MQ threads created) from receiver to client is enabled/disabled. -1 for inconsistency. \n");
|
||||||
if (action==PUT_ACTION || action==HELP_ACTION)
|
if (action==PUT_ACTION || action==HELP_ACTION)
|
||||||
os << string("datastream i\t enables/disables the zmq data stream from receiver. \n");
|
os << string("externalgui i\t sets external gui flag. 1/0 means the 0MQ data stream (0MQ threads created) from receiver to client is enabled/disabled. \n");
|
||||||
return os.str();
|
return os.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5868,7 +5881,7 @@ string slsDetectorCommand::cmdReceiver(int narg, char *args[], int action) {
|
|||||||
if (action==PUT_ACTION) {
|
if (action==PUT_ACTION) {
|
||||||
if(!strcasecmp(args[1],"start")) {
|
if(!strcasecmp(args[1],"start")) {
|
||||||
//to ensure data streaming enable is the same across client and receiver
|
//to ensure data streaming enable is the same across client and receiver
|
||||||
if (receivers == ONLINE_FLAG) {
|
if ((!myDet->getExternalGuiFlag()) && (receivers == ONLINE_FLAG)) {
|
||||||
//if it was not off
|
//if it was not off
|
||||||
if (myDet->enableDataStreamingFromReceiver(-1) != 0){
|
if (myDet->enableDataStreamingFromReceiver(-1) != 0){
|
||||||
//switch it off, if error
|
//switch it off, if error
|
||||||
@ -5876,7 +5889,7 @@ string slsDetectorCommand::cmdReceiver(int narg, char *args[], int action) {
|
|||||||
return string("could not disable data streaming in receiver\n");
|
return string("could not disable data streaming in receiver\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
myDet->startReceiver();
|
myDet->startReceiver();
|
||||||
}
|
}
|
||||||
else if(!strcasecmp(args[1],"stop")){
|
else if(!strcasecmp(args[1],"stop")){
|
||||||
|
@ -846,6 +846,19 @@ virtual int setReceiverFifoDepth(int i = -1)=0;
|
|||||||
*/
|
*/
|
||||||
virtual bool getAcquiringFlag() = 0;
|
virtual bool getAcquiringFlag() = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set external gui flag in shared memory
|
||||||
|
\param b set external gui flag
|
||||||
|
*/
|
||||||
|
virtual void setExternalGuiFlag(bool b=false) = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get external gui flag from shared memory
|
||||||
|
\returns external gui flag
|
||||||
|
*/
|
||||||
|
virtual bool getExternalGuiFlag() = 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user