reverted json_emin, emax, framemode and detectormode. All json parameters for moench will go through rx_jsonpara using strings

This commit is contained in:
maliakal_d 2019-02-14 17:43:28 +01:00
parent d2ba206216
commit 722883531d
7 changed files with 0 additions and 303 deletions

View File

@ -1956,28 +1956,6 @@ std::string multiSlsDetector::getAdditionalJsonParameter(const std::string& key,
return sls::concatenateIfDifferent(r);
}
int multiSlsDetector::setAdditionalJsonSpecificParameter(jsonHeaderParameterType mode, int value, int detPos) {
// single
if (detPos >= 0) {
return detectors[detPos]->setAdditionalJsonSpecificParameter(mode, value);
}
// multi
auto r = parallelCall(&slsDetector::setAdditionalJsonSpecificParameter, mode, value);
return sls::minusOneIfDifferent(r);
}
int multiSlsDetector::getAdditionalJsonSpecificParameter(jsonHeaderParameterType mode, int detPos) {
// single
if (detPos >= 0) {
return detectors[detPos]->getAdditionalJsonSpecificParameter(mode);
}
// multi
auto r = serialCall(&slsDetector::getAdditionalJsonSpecificParameter, mode);
return sls::minusOneIfDifferent(r);
}
int multiSlsDetector::setReceiverUDPSocketBufferSize(int udpsockbufsize, int detPos) {
// single
if (detPos >= 0) {

View File

@ -1087,23 +1087,6 @@ class multiSlsDetector : public virtual slsDetectorDefs,
*/
std::string getAdditionalJsonParameter(const std::string& key, int detPos = -1);
/**
* Sets the value for a specific additional json header parameter
* @param mode specific json header parameter (JSON_EMIN, JSON_EMAX, JSON_READOUT_MODE, JSON_DETECTOR_MODE)
* @param value to set the parameter to, json_readout_mode and json_detector_mode can have only have values from jsonReadoutModeType or jsonDetectorModeType
* @param detPos -1 for all detectors in list or specific detector position
* @returns the specific additional json header parameter value or enum
*/
int setAdditionalJsonSpecificParameter(jsonHeaderParameterType mode, int value, int detPos = -1);
/**
* Returns the specific additional json header parameter value
* @param mode specific json header parameter (JSON_EMIN, JSON_EMAX, JSON_READOUT_MODE, JSON_DETECTOR_MODE)
* @param detPos -1 for all detectors in list or specific detector position
* @returns the specific additional json header parameter value or enum
*/
int getAdditionalJsonSpecificParameter(jsonHeaderParameterType mode, int detPos = -1);
/**
* Sets the receiver UDP socket buffer size
* @param udpsockbufsize additional json header

View File

@ -2729,84 +2729,6 @@ std::string slsDetector::getAdditionalJsonParameter(const std::string& key) {
return std::string("");
}
int slsDetector::validateSpecificJsonParameterValue(jsonHeaderParameterType mode, int value) {
switch (mode) {
case JSON_EMIN:
case JSON_EMAX:
return OK;
case JSON_FRAME_MODE:
switch (value) {
case JSON_PEDESTAL:
case JSON_N_PEDESTAL:
case JSON_FLATFIELD:
case JSON_N_FLATFIELD:
case JSON_FRAME:
return OK;
default:
return FAIL;
}
case JSON_DETECTOR_MODE:
switch (value) {
case JSON_ANALOG:
case JSON_COUNTING:
case JSON_INTERPOLATING:
return OK;
default:
return FAIL;
}
default:
FILE_LOG(logERROR) << "Unkown Json Parameter Type " << mode;
return FAIL;
}
}
int slsDetector::setAdditionalJsonSpecificParameter(jsonHeaderParameterType mode, int value) {
if (validateSpecificJsonParameterValue(mode, value) == FAIL) {
FILE_LOG(logERROR) << "Unknown mode " << value << " to set detector mode for json header";
setErrorMask((getErrorMask()) | (OTHER_ERROR_CODE));
return getAdditionalJsonSpecificParameter(mode);
}
std::string smode = getJsonHeaderParameterTypeAsString(mode);
std::string sval;
if (mode == JSON_EMIN || mode == JSON_EMAX)
sval = std::to_string(value);
else
sval = getJsonHeaderParameterValueAsString((jsonHeaderParameterValuesType)value);
setAdditionalJsonParameter(smode, sval);
return getAdditionalJsonSpecificParameter(mode);
}
int slsDetector::getAdditionalJsonSpecificParameter(jsonHeaderParameterType mode) {
std::string smode = getJsonHeaderParameterTypeAsString(mode);
std::string sval = getAdditionalJsonParameter(smode);
int val = 0;
if (mode == JSON_EMIN || mode == JSON_EMAX) {
try{
val = stoi(sval);
} catch(...) {
FILE_LOG(logERROR) << "json emin or emax set to a string. Fix additional json header";
setErrorMask((getErrorMask()) | (OTHER_ERROR_CODE));
return -1;
}
} else
val = getJsonHeaderParameterValuesAsEnum(sval);
if (validateSpecificJsonParameterValue(mode, val) == FAIL) {
FILE_LOG(logERROR) << "Unknown mode " << val << "(" <<sval << ") retrieved from detector mode for json header";
setErrorMask((getErrorMask()) | (OTHER_ERROR_CODE));
return -1;
}
return val;
}
int slsDetector::setReceiverUDPSocketBufferSize(int udpsockbufsize) {
int fnum = F_RECEIVER_UDP_SOCK_BUF_SIZE;
int ret = FAIL;

View File

@ -994,28 +994,6 @@ public:
*/
std::string getAdditionalJsonParameter(const std::string& key);
/**
* Validates the value parsed for the corresponding parameter type
* @param mode specific parameter type
* @value value enum of the value
*/
int validateSpecificJsonParameterValue(jsonHeaderParameterType mode, int value);
/**
* Sets the value for a specific additional json header parameter
* @param mode specific json header parameter (JSON_EMIN, JSON_EMAX, JSON_READOUT_MODE, JSON_DETECTOR_MODE)
* @param value to set the parameter to, json_readout_mode and json_detector_mode can have only have values from jsonReadoutModeType or jsonDetectorModeType
* @returns the specific additional json header parameter value or enum
*/
int setAdditionalJsonSpecificParameter(jsonHeaderParameterType mode, int value);
/**
* Returns the specific additional json header parameter value
* @param mode specific json header parameter (JSON_EMIN, JSON_EMAX, JSON_READOUT_MODE, JSON_DETECTOR_MODE)
* @returns the specific additional json header parameter value or enum
*/
int getAdditionalJsonSpecificParameter(jsonHeaderParameterType mode);
/**
* Sets the receiver UDP socket buffer size
* @param udpsockbufsize additional json header

View File

@ -1815,34 +1815,6 @@ slsDetectorCommand::slsDetectorCommand(multiSlsDetector *det) {
descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdPattern;
++i;
/*! \page prototype
- <b>json_emin [i] </b> Sets/gets detector minimum energy threshold for the Moench (soft setting). It is only set in the json header for the processor. \c Returns string
*/
descrToFuncMap[i].m_pFuncName = "json_emin"; //
descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdProcessor;
++i;
/*! \page prototype
- <b>json_emax [i] </b> Sets/gets detector maximum energy threshold for the Moench (soft setting). It is only set in the json header for the processor. \c Returns string
*/
descrToFuncMap[i].m_pFuncName = "json_emax"; //
descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdProcessor;
++i;
/*! \page prototype
- <b>json_framemode [i] </b> Sets/gets readoutmode for the Moench (soft setting). It is only set in the json header for the processor. Options: pedestal, newpedestal, flatfield, newflatfield, frame. \c Returns string
*/
descrToFuncMap[i].m_pFuncName = "json_framemode"; //
descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdProcessor;
++i;
/*! \page prototype
- <b>json_detectormode [i] </b> Sets/gets detector mode for the Moench (soft setting). It is only set in the json header for the processor.Options: analog, counting, interpolating. \c Returns string
*/
descrToFuncMap[i].m_pFuncName = "json_detectormode"; //
descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdProcessor;
++i;
/*! \page prototype
- <b>pattern fn</b> loads binary pattern file fn
*/
@ -5463,58 +5435,3 @@ std::string slsDetectorCommand::cmdPulse(int narg, char *args[], int action, int
}
std::string slsDetectorCommand::helpProcessor(int action) {
std::ostringstream os;
if (action == PUT_ACTION || action == HELP_ACTION) {
os << "json_emin [t]\n sets value to t for minimum threshold (emin) in additional json header to be streamed out with the zmq from receiver. For Moench." << std::endl;
os << "json_emax [t]\n sets value to t for maximum threshold (emax) in additional json header to be streamed out with the zmq from receiver. For Moench." << std::endl;
os << "json_framemode [s]\n sets readoutmode for the Moench (soft setting). It is only set in the json header for the processor. Options: pedestal, newpedestal, flatfield, newflatfield, frame. " << std::endl;
os << "json_detectormode [s]\n sets detector mode for the Moench (soft setting). It is only set in the json header for the processor.Options: analog, counting, interpolating. " << std::endl;
}
if (action == GET_ACTION || action == HELP_ACTION) {
os << "json_emin \n gets value of minimum threshold (emin) in additional json header to be streamed out with the zmq from receiver. If no parameter found, it returns empty string. For Moench." << std::endl;
os << "json_emin \n gets value of maximum threshold (emax) in additional json header to be streamed out with the zmq from receiver. If no parameter found, it returns empty string. For Moench." << std::endl;
os << "json_framemode [s]\n gets readoutmode for the Moench (soft setting). It is only set in the json header for the processor. Options: pedestal, newpedestal, flatfield, newflatfield, frame. " << std::endl;
os << "json_detectormode [s]\n gets detector mode for the Moench (soft setting). It is only set in the json header for the processor.Options: analog, counting, interpolating. " << std::endl;
}
return os.str();
}
std::string slsDetectorCommand::cmdProcessor(int narg, char *args[], int action, int detPos) {
if (action == HELP_ACTION)
return helpProcessor(action);
myDet->setOnline(ONLINE_FLAG, detPos);
myDet->setReceiverOnline(ONLINE_FLAG, detPos);
int imode = getJsonHeaderParameterTypeAsEnum(cmd);
jsonHeaderParameterType mode = JSON_EMIN;
if (imode != -1)
mode = (jsonHeaderParameterType)imode;
int ival = -1;
if (cmd == "json_emin" || cmd == "json_emax") {
if (action == PUT_ACTION) {
if (!sscanf(args[1],"%d", &ival))
return std::string("cannot scan value ") + std::string(args[1]) + std::string(" for command ") + cmd;
myDet->setAdditionalJsonSpecificParameter(mode, ival);
}
return std::to_string(myDet->getAdditionalJsonSpecificParameter(mode));
}
else if (cmd == "json_framemode" || cmd == "json_detectormode") {
if (action == PUT_ACTION) {
ival = getJsonHeaderParameterValuesAsEnum(args[1]);
if (ival == -1)
return std::string("cannot scan value ") + std::string(args[1]) + std::string(" for command ") + cmd;
myDet->setAdditionalJsonSpecificParameter(mode, ival);
}
int retval = myDet->getAdditionalJsonSpecificParameter(mode);
if (retval == -1)
return std::string("unknown");
return getJsonHeaderParameterValueAsString((jsonHeaderParameterValuesType)retval);
}
return std::string("could not decode command");
}

View File

@ -79,7 +79,6 @@ class slsDetectorCommand : public virtual slsDetectorDefs {
static std::string helpReceiver(int action);
static std::string helpPattern(int action);
static std::string helpPulse(int action);
static std::string helpProcessor(int action);
@ -142,7 +141,6 @@ class slsDetectorCommand : public virtual slsDetectorDefs {
std::string cmdReceiver(int narg, char *args[], int action, int detPos = -1);
std::string cmdPattern(int narg, char *args[], int action, int detPos = -1);
std::string cmdPulse(int narg, char *args[], int action, int detPos = -1);
std::string cmdProcessor(int narg, char *args[], int action, int detPos = -1);
int numberOfCommands;
std::string cmd;

View File

@ -556,24 +556,6 @@ public:
GAIN_IMAGE /**< gain image */
};
enum jsonHeaderParameterType {
JSON_EMIN, /**< minimum energy threshold for the processor */
JSON_EMAX, /**< maximum energy threshold for the processor*/
JSON_FRAME_MODE, /**< frame mode for the processor*/
JSON_DETECTOR_MODE /**< detector mode for the processor*/
};
enum jsonHeaderParameterValuesType {
JSON_PEDESTAL, /**< pedestal mode for the processor */
JSON_N_PEDESTAL, /**< new pedestal mode for the processor */
JSON_FLATFIELD, /**< flatfield mode for the processor */
JSON_N_FLATFIELD, /**< new flatfield mode for the processor */
JSON_FRAME, /**< frame for the processor */
JSON_ANALOG, /**< analog mode for the processor */
JSON_COUNTING, /**< counting mode for the processor */
JSON_INTERPOLATING /**< interpolating mode for the processor */
};
#ifdef __cplusplus
/** returns string from enabled/disabled
@ -893,67 +875,6 @@ public:
}}; \
/** returns std::string from jsonHeaderParameterType
* @param h can be JSON_EMIN, JSON_EMAX, JSON_FRAME_MODE, JSON_DETECTOR_MODE
* @returns json_emin, json_emax, json_framemode, json_detectormode, unknown
*/
static std::string getJsonHeaderParameterTypeAsString(jsonHeaderParameterType h) { \
switch(h) { \
case JSON_EMIN: return std::string("json_emin"); \
case JSON_EMAX: return std::string("json_emax"); \
case JSON_FRAME_MODE: return std::string("json_framemode"); \
case JSON_DETECTOR_MODE: return std::string("json_detectormode"); \
default: return std::string("unknown"); \
} \
}; \
/** returns std::string from jsonHeaderParameterType
* @param h can be json_emin, json_emax, json_framemode, json_detectormode
* @returns JSON_EMIN, JSON_EMAX, JSON_FRAME_MODE, JSON_DETECTOR_MODE, -1
*/
static int getJsonHeaderParameterTypeAsEnum(std::string h) { \
if (h == "json_emin") return JSON_EMIN; \
if (h == "json_emax") return JSON_EMAX; \
if (h == "json_framemode") return JSON_FRAME_MODE; \
if (h == "json_detectormode") return JSON_DETECTOR_MODE; \
return -1; \
}; \
/** returns std::string from jsonHeaderParameterTyp
* @param h can be JSON_PEDESTAL, JSON_N_PEDESTAL, JSON_FLATFIELD, JSON_N_FLATFIELD, JSON_FRAME, JSON_ANALOG, JSON_COUNTING, JSON_INTERPOLATING
* @returns json_pedestal, json_newpedestal, json_flatfield, json_newflatfield, json_frame, json_analog, json_counting, json_interpolating, unknown
*/
static std::string getJsonHeaderParameterValueAsString(jsonHeaderParameterValuesType h) { \
switch(h) { \
case JSON_PEDESTAL: return std::string("json_pedestal"); \
case JSON_N_PEDESTAL: return std::string("json_newpedestal"); \
case JSON_FLATFIELD: return std::string("json_flatfield"); \
case JSON_N_FLATFIELD: return std::string("json_newflatfield"); \
case JSON_FRAME: return std::string("json_frame"); \
case JSON_ANALOG: return std::string("json_analog"); \
case JSON_COUNTING: return std::string("json_counting"); \
case JSON_INTERPOLATING: return std::string("json_interpolating"); \
default: return std::string("unknown"); \
} \
}; \
/** returns std::string from jsonHeaderParameterTyp
* @param h can be json_emin, json_emax, json_framemode, json_detectormode
* @returns JSON_EMIN, JSON_EMAX, JSON_FRAME_MODE, JSON_DETECTOR_MODE, -1
*/
static int getJsonHeaderParameterValuesAsEnum(std::string h) { \
if (h == "json_pedestal") return JSON_PEDESTAL; \
if (h == "json_newpedestal") return JSON_N_PEDESTAL; \
if (h == "json_flatfield") return JSON_FLATFIELD; \
if (h == "json_newflatfield") return JSON_N_FLATFIELD; \
if (h == "json_frame") return JSON_FRAME; \
if (h == "json_analog") return JSON_ANALOG; \
if (h == "json_counting") return JSON_COUNTING; \
if (h == "json_interpolating") return JSON_INTERPOLATING; \
return -1; \
}; \
#endif
#ifdef __cplusplus