mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-23 15:00:02 +02:00
sharedmem: command line done, fixing to do
This commit is contained in:
parent
69c71e48f6
commit
a97b725f43
@ -16,82 +16,114 @@ int dummyCallback(detectorData* d, int p,void*) {
|
|||||||
|
|
||||||
class multiSlsDetectorClient {
|
class multiSlsDetectorClient {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
multiSlsDetectorClient(int argc, char *argv[], int action, multiSlsDetector *myDetector=NULL) { \
|
multiSlsDetectorClient(int argc, char *argv[], int action, multiSlsDetector *myDetector=NULL) { \
|
||||||
string answer; \
|
string answer; \
|
||||||
multiSlsDetectorCommand *myCmd; \
|
multiSlsDetectorCommand *myCmd; \
|
||||||
int id=-1, iv=0, pos=-1; \
|
int id = -1, pos = -1, iv = 0; \
|
||||||
int del=0; \
|
bool verify = true, update = true; \
|
||||||
char cmd[100]; \
|
int del = 0; \
|
||||||
if (action==slsDetectorDefs::READOUT_ACTION) { \
|
char cmd[100] = ""; \
|
||||||
|
|
||||||
if (argc!=0) {
|
// multi id scanned
|
||||||
iv=sscanf(argv[0],"%d-%s",&id,cmd); \
|
iv=sscanf(argv[0],"%d-%s",&id, cmd); \
|
||||||
if (iv>0 && id>=0 && strchr(argv[0],'-')) {
|
if (iv != 2 || id < 0) \
|
||||||
cout << "id " << id << endl; \
|
id = 0; \
|
||||||
if (iv>1)
|
if (iv == 2 && id >= 0) { \
|
||||||
argv[0]=cmd;
|
argv[0] = cmd; \
|
||||||
}
|
cout << id << "-" ; \
|
||||||
iv=sscanf(argv[0],"%d:",&pos); \
|
} \
|
||||||
if (iv>0 && pos>=0 && strchr(argv[0],':'))
|
|
||||||
cout << "pos " << pos << "is not allowed!" << endl; \
|
|
||||||
}
|
|
||||||
if (id<0)
|
|
||||||
id=0;
|
|
||||||
|
|
||||||
if (myDetector==NULL) { \
|
// sls pos scanned
|
||||||
myDetector=new multiSlsDetector(id); \
|
iv=sscanf(argv[0],"%d:%s", &pos, cmd); \
|
||||||
//myDetector->registerDataCallback(&dummyCallback, NULL);
|
if (iv != 2 ) \
|
||||||
del=1; \
|
pos = 0; \
|
||||||
};
|
if (iv == 2 && pos >= 0) { \
|
||||||
// cout << "noid" <<endl;
|
argv[0] = cmd; \
|
||||||
myCmd=new multiSlsDetectorCommand(myDetector); \
|
cout << pos << ":" ; \
|
||||||
answer=myCmd->executeLine(argc, argv, action); \
|
} \
|
||||||
cout << answer<< endl; \
|
|
||||||
delete myCmd; \
|
|
||||||
if (del) delete myDetector; \
|
|
||||||
return; \
|
|
||||||
}; \
|
|
||||||
if (action==slsDetectorDefs::PUT_ACTION && argc<2) { \
|
|
||||||
cout << "Wrong usage - should be: "<< argv[0] << \
|
|
||||||
"[id-][pos:]channel arg" << endl; \
|
|
||||||
cout << endl; \
|
|
||||||
return; \
|
|
||||||
if (del) delete myDetector; \
|
|
||||||
};
|
|
||||||
if (action==slsDetectorDefs::GET_ACTION && argc<1) { \
|
|
||||||
cout << "Wrong usage - should be: "<< argv[0] << \
|
|
||||||
"[id-][pos:]channel arg" << endl; \
|
|
||||||
cout << endl; \
|
|
||||||
if (del) delete myDetector; \
|
|
||||||
return; \
|
|
||||||
}; \
|
|
||||||
if (myDetector==NULL) { \
|
|
||||||
iv=sscanf(argv[0],"%d-%s",&id, cmd); \
|
|
||||||
if (iv==2 && id>=0) { \
|
|
||||||
myDetector=new multiSlsDetector(id); \
|
|
||||||
argv[0]=cmd; \
|
|
||||||
cout << id << "-" ; \
|
|
||||||
} else { \
|
|
||||||
myDetector=new multiSlsDetector(); \
|
|
||||||
}; \
|
|
||||||
del=1; \
|
|
||||||
} \
|
|
||||||
iv=sscanf(argv[0],"%d:%s",&pos, cmd); \
|
|
||||||
if (iv==2 && pos>=0) { \
|
|
||||||
argv[0]=cmd; \
|
|
||||||
cout << pos << ":" ; \
|
|
||||||
} ; \
|
|
||||||
myCmd=new multiSlsDetectorCommand(myDetector); \
|
|
||||||
answer=myCmd->executeLine(argc, argv, action, pos); \
|
|
||||||
cout << argv[0] << " " ; \
|
|
||||||
cout << answer<< endl; \
|
|
||||||
delete myCmd; \
|
|
||||||
if (del) delete myDetector; \
|
|
||||||
};
|
|
||||||
|
|
||||||
|
// readout
|
||||||
|
if (action==slsDetectorDefs::READOUT_ACTION) { \
|
||||||
|
if (pos != -1) { \
|
||||||
|
cout << "pos " << pos << "is not allowed for readout!" << endl; \
|
||||||
|
} \
|
||||||
|
// create multiSlsDetector class if required
|
||||||
|
if (myDetector==NULL) { \
|
||||||
|
try { \
|
||||||
|
myDetector = new multiSlsDetector(id, verify, update); \
|
||||||
|
} catch (const SharedMemoryException & e) { \
|
||||||
|
cout << e.GetMessage() << endl; \
|
||||||
|
return; \
|
||||||
|
} catch (...) { \
|
||||||
|
cout << " caught exception" << endl; \
|
||||||
|
return; \
|
||||||
|
} \
|
||||||
|
//myDetector->registerDataCallback(&dummyCallback, NULL);
|
||||||
|
del=1; \
|
||||||
|
} \
|
||||||
|
myCmd=new multiSlsDetectorCommand(myDetector); \
|
||||||
|
answer=myCmd->executeLine(argc, argv, action); \
|
||||||
|
cout << answer<< endl; \
|
||||||
|
delete myCmd; \
|
||||||
|
if (del) delete myDetector; \
|
||||||
|
return; \
|
||||||
|
}; \
|
||||||
|
|
||||||
|
if (action==slsDetectorDefs::PUT_ACTION && argc<2) { \
|
||||||
|
cout << "Wrong usage - should be: "<< argv[0] << \
|
||||||
|
"[id-][pos:]channel arg" << endl; \
|
||||||
|
cout << endl; \
|
||||||
|
return; \
|
||||||
|
if (del) delete myDetector; \
|
||||||
|
};
|
||||||
|
if (action==slsDetectorDefs::GET_ACTION && argc<1) { \
|
||||||
|
cout << "Wrong usage - should be: "<< argv[0] << \
|
||||||
|
"[id-][pos:]channel arg" << endl; \
|
||||||
|
cout << endl; \
|
||||||
|
if (del) delete myDetector; \
|
||||||
|
return; \
|
||||||
|
}; \
|
||||||
|
|
||||||
|
// special commands
|
||||||
|
string scmd = cmd; \
|
||||||
|
// free without calling multiSlsDetector constructor
|
||||||
|
if (scmd == "free") { \
|
||||||
|
if (pos != -1) \
|
||||||
|
slsDetector::freeSharedMemory(id, pos); \
|
||||||
|
else \
|
||||||
|
multiSlsDetector::freeSharedMemory(id); \
|
||||||
|
return; \
|
||||||
|
} \
|
||||||
|
// get user details without verify sharedMultiSlsDetector version
|
||||||
|
else if ((scmd == "userdetails") && (action==slsDetectorDefs::GET_ACTION)) {\
|
||||||
|
verify = false; \
|
||||||
|
update = false; \
|
||||||
|
myDetector=NULL; \
|
||||||
|
} \
|
||||||
|
|
||||||
|
// create multiSlsDetector class if required
|
||||||
|
if (myDetector==NULL) { \
|
||||||
|
try { \
|
||||||
|
myDetector = new multiSlsDetector(id, verify, update); \
|
||||||
|
} catch (const SharedMemoryException & e) { \
|
||||||
|
cout << e.GetMessage() << endl; \
|
||||||
|
return; \
|
||||||
|
} catch (...) { \
|
||||||
|
cout << " caught exception" << endl; \
|
||||||
|
return; \
|
||||||
|
} \
|
||||||
|
del=1; \
|
||||||
|
} \
|
||||||
|
|
||||||
|
// call multi detector command line
|
||||||
|
myCmd=new multiSlsDetectorCommand(myDetector); \
|
||||||
|
answer=myCmd->executeLine(argc, argv, action, pos); \
|
||||||
|
cout << argv[0] << " " ; \
|
||||||
|
cout << answer<< endl; \
|
||||||
|
delete myCmd; \
|
||||||
|
if (del) delete myDetector; \
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user