#include "slsDetectorActions.h" #include using namespace std; /** set action \param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript, MAX_ACTIONS} \param fname for script ("" disable but leaves script unchanged, "none" disables and overwrites) \returns 0 if action disabled, >0 otherwise */ int slsDetectorActions::setAction(int iaction, string fname, string par) { int am; if (iaction>=0 && iaction=0 && iaction=0 && iaction=0 && iaction=0 && iaction0 otherwise */ int slsDetectorActions::setScan(int iscan, string script, int nvalues, float *values, string par, int precision) { if (iscan>=0 && iscan=0) { if (nvalues==0) scanMode[iscan]=0; else { nScanSteps[iscan]=nvalues; if (nvalues>MAX_SCAN_STEPS) nScanSteps[iscan]=MAX_SCAN_STEPS; } } if (values && scanMode[iscan]>0 ) { for (int iv=0; iv=0) scanPrecision[iscan]=precision; if (scanMode[iscan]>0){ *actionMask |= 1<< (iscan+MAX_ACTIONS); } else { *actionMask &= ~(1 << (iscan+MAX_ACTIONS)); } setTotalProgress(); return scanMode[iscan]; } else return -1; } int slsDetectorActions::setScanScript(int iscan, string script) { if (iscan>=0 && iscan0){ *actionMask |= (1 << (iscan+MAX_ACTIONS)); } else { *actionMask &= ~(1 << (iscan+MAX_ACTIONS)); } setTotalProgress(); #ifdef VERBOSE cout << "Action mask is " << hex << actionMask << dec << endl; #endif return scanMode[iscan]; } else return -1; } int slsDetectorActions::setScanParameter(int iscan, string par) { if (iscan>=0 && iscan=0 && iscan=0) scanPrecision[iscan]=precision; return scanMode[iscan]; } else return -1; } int slsDetectorActions::setScanSteps(int iscan, int nvalues, float *values) { if (iscan>=0 && iscan=0) { if (nvalues==0) scanMode[iscan]=0; else { nScanSteps[iscan]=nvalues; if (nvalues>MAX_SCAN_STEPS) nScanSteps[iscan]=MAX_SCAN_STEPS; } } if (values) { for (int iv=0; iv0){ *actionMask |= (1 << (iscan+MAX_ACTIONS)); } else { *actionMask &= ~(1 << (iscan+MAX_ACTIONS)); } #ifdef VERBOSE cout << "Action mask is " << hex << actionMask << dec << endl; #endif setTotalProgress(); return scanMode[iscan]; } else return -1; } /** returns scan script \param iscan can be (0,1) \returns scan script */ string slsDetectorActions::getScanScript(int iscan){ if (iscan>=0 && iscan=0 && iscan=0 && iscan=0 && iscan=0 && iscan