diff --git a/slsDetectorSoftware/slsDetector/slsDetectorBase.h b/slsDetectorSoftware/slsDetector/slsDetectorBase.h index ba1538c80..63ff9c6ed 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorBase.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorBase.h @@ -396,16 +396,23 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef \returns current flag */ virtual int setReadOutFlags(readOutFlags flag=GET_READOUT_FLAGS)=0; - int getContinuousReadoutFlag(){if(setReadOutFlags()&CONTINOUS_RO) return OK; return FAIL;}; - void setContinuousReadoutFlag(){setReadOutFlags(CONTINOUS_RO); }; - int getStoreInRamReadoutFlag(){if(setReadOutFlags()&STORE_IN_RAM) return OK; return FAIL;}; - void setStoreInRamReadoutFlag(){setReadOutFlags(STORE_IN_RAM); }; - int getParallelReadoutFlag(){if(setReadOutFlags()&PARALLEL) return OK; return FAIL;}; - void setParallelReadoutFlag(){setReadOutFlags(PARALLEL); }; - int getNonParallelReadoutFlag(){if(setReadOutFlags()&NONPARALLEL) return OK; return FAIL;}; - void setNonParallelReadoutFlag(){setReadOutFlags(NONPARALLEL); }; - int getSafeReadoutFlag(){if(setReadOutFlags()&SAFE) return OK; return FAIL;}; - void setSafeReadoutFlag(){setReadOutFlags(SAFE); }; + void setParallelMode(int value){ \ + if(value>=0){ \ + switch(value){ \ + case 0: setReadOutFlags(NONPARALLEL);break; \ + case 1: setReadOutFlags(PARALLEL);break; \ + default: setReadOutFlags(SAFE);break; \ + } \ + } \ + }; \ + int getParallelMode(){ \ + int ret = setReadOutFlags(); \ + if (ret&NONPARALLEL) return 0; \ + if (ret&PARALLEL) return 1; \ + if (ret&SAFE) return 2; \ + return -1; \ + } \ + /** @@ -831,19 +838,11 @@ virtual void readFrameFromReceiver()=0; /** @short returns adc index from string - \param s can be temp_adc, temp_fpga, temp_fpgaext, temp_10ge, temp_dcdc, temp_sodl, temp_sodr, temp_fpgafl, temp_fpgafr, - i_a, i_b, i_c, i_d, vm_a, vm_b,vm_c, vm_d, vm_io, i_io + \param s can be temp_adc, temp_fpga, temp_fpgaext, temp_10ge, temp_dcdc, temp_sodl, temp_sodr, temp_fpgafl, temp_fpgafr \returns TEMPERATURE_ADC, TEMPERATURE_FPGA, TEMPERATURE_FPGAEXT, TEMPERATURE_10GE, TEMPERATURE_DCDC, TEMPERATURE_SODL, - TEMPERATURE_SODR, TEMPERATURE_FPGA2, TEMPERATURE_FPGA3, I_POWER_A, I_POWER_B, I_POWER_C, I_POWER_D, V_POWER_A, V_POWER_B, - V_POWER_C, V_POWER_D, V_POWER_IO, I_POWER_IO - -1 when wrong mode + TEMPERATURE_SODR, TEMPERATURE_FPGA2, TEMPERATURE_FPGA3, -1 when unknown mode */ static int getADCIndex(string s){ - { - int idac; - if (sscanf(s.c_str(),"adc:%d",&idac)==1) - return (dacIndex)(idac+1000); - } if (s=="temp_adc") return TEMPERATURE_ADC; if (s=="temp_fpga") return TEMPERATURE_FPGA; if (s=="temp_fpgaext") return TEMPERATURE_FPGAEXT; @@ -853,19 +852,30 @@ virtual void readFrameFromReceiver()=0; if (s=="temp_sodr") return TEMPERATURE_SODR; if (s=="temp_fpgafl") return TEMPERATURE_FPGA2; if (s=="temp_fpgafr") return TEMPERATURE_FPGA3; - if (s=="i_a") return I_POWER_A; - if (s=="i_b") return I_POWER_B; - if (s=="i_c") return I_POWER_C; - if (s=="i_d") return I_POWER_D; - if (s=="vm_a") return V_POWER_A; - if (s=="vm_b") return V_POWER_B; - if (s=="vm_c") return V_POWER_C; - if (s=="vm_d") return V_POWER_D; - if (s=="vm_io") return V_POWER_IO; - if (s=="i_io") return I_POWER_IO; return -1; }; + + /** + @short returns dac index from string + \param s can be vcmp_ll, vcmp_lr, vcmp_rl, vcmp_rr, vthreshold, vrf, vrs, vtr, vcall, vcp + \returns E_Vcmp_ll, E_Vcmp_lr, E_Vcmp_rl, E_Vcmp_rr, THRESHOLD, E_Vrf, E_Vrs, E_Vtr, E_cal, E_Vcp , -1 when unknown mode + */ + static int getDACIndex(string s){ + if (s=="vcmp_ll") return E_Vcmp_ll; + if (s=="vcmp_lr") return E_Vcmp_lr; + if (s=="vcmp_rl") return E_Vcmp_rl; + if (s=="vcmp_rr") return E_Vcmp_rr; + if (s=="vthreshold") return THRESHOLD; + if (s=="vrf") return E_Vrf; + if (s=="vrs") return E_Vrs; + if (s=="vtr") return E_Vtr; + if (s=="vcall") return E_cal; + if (s=="vcp") return E_Vcp; + return -1; + }; + + }; diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp b/slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp index bca67d6b3..f540b7db2 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorUsers.cpp @@ -312,51 +312,19 @@ int slsDetectorUsers::setClockDivider(int value) { return myDetector->setClockDivider(value); } -int slsDetectorUsers::getContinuousReadoutFlag(){ - return myDetector->getContinuousReadoutFlag(); -} - -void slsDetectorUsers::setContinuousReadoutFlag(){ - myDetector->setContinuousReadoutFlag(); -} - -int slsDetectorUsers::getStoreInRamReadoutFlag(){ - return myDetector->getStoreInRamReadoutFlag(); -} - -void slsDetectorUsers::setStoreInRamReadoutFlag(){ - myDetector->setStoreInRamReadoutFlag(); -} - -int slsDetectorUsers::getParallelReadoutFlag(){ - return myDetector->getParallelReadoutFlag(); -} - -void slsDetectorUsers::setParallelReadoutFlag(){ - myDetector->setParallelReadoutFlag(); -} - -int slsDetectorUsers::getNonParallelReadoutFlag(){ - return myDetector->getNonParallelReadoutFlag(); -} - -void slsDetectorUsers::setNonParallelReadoutFlag(){ - myDetector->setNonParallelReadoutFlag(); -} - -int slsDetectorUsers::getSafeReadoutFlag(){ - return myDetector->getSafeReadoutFlag(); -} - -void slsDetectorUsers::setSafeReadoutFlag(){ - myDetector->setSafeReadoutFlag(); +int slsDetectorUsers::setParallelMode(int value) { + if(value >= 0) + myDetector->setParallelMode(value); + return myDetector->getParallelMode(); } int slsDetectorUsers::setAllTrimbits(int val, int id) { return myDetector->setAllTrimbits(val, id); } -int slsDetectorUsers::setDAC(int dacindex, int val, int id) { +int slsDetectorUsers::setDAC(string dac, int val, int id) { + int dacindex = myDetector->getDACIndex(dac); + if(dacindex == -1) return -9999; return myDetector->setDACValue(val, dacindex, id); } diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUsers.h b/slsDetectorSoftware/slsDetector/slsDetectorUsers.h index 5853d0faf..a6cc9ff1d 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUsers.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorUsers.h @@ -553,67 +553,16 @@ class slsDetectorUsers */ int setClockDivider(int value); - /** - @short gets continuous readout flag - \returns gets continuous readout flag - */ - int getContinuousReadoutFlag(); - /** - @short sets continuous readout flag - \returns OK if successful, else false - */ - void setContinuousReadoutFlag(); - /** - @short gets store in ram readout flag - \returns gets store in ram readout flag + /** + @short sets parallel mode + \param value 0 for non parallel, 1 for parallel, 2 for safe mode (-1 gets) + \returns gets parallel mode */ - int getStoreInRamReadoutFlag(); + int setParallelMode(int value); - /** - @short sets store in ram readout flag - \returns OK if successful, else false - */ - void setStoreInRamReadoutFlag(); - - /** - @short gets parallel readout flag - \returns gets parallel readout flag - */ - int getParallelReadoutFlag(); - - /** - @short sets parallel readout flag - \returns OK if successful, else false - */ - void setParallelReadoutFlag(); - - /** - @short gets non parallel readout flag - \returns gets non parallel readout flag - */ - int getNonParallelReadoutFlag(); - - /** - @short sets non parallel readout flag - \returns OK if successful, else false - */ - void setNonParallelReadoutFlag(); - - /** - @short gets safe readout flag - \returns gets safe readout flag - */ - int getSafeReadoutFlag(); - - /** - @short sets safe readout flag - \returns OK if successful, else false - */ - void setSafeReadoutFlag(); - - /** + /** @short sets all trimbits to value (only available for eiger) \param val value to be set (-1 gets) \param id module index (-1 for all) @@ -623,19 +572,18 @@ class slsDetectorUsers /** @short set dac value - \param dacindex dac index \sa dacIndex + \param dac dac as string. can be vcmp_ll, vcmp_lr, vcmp_rl, vcmp_rr, vthreshold, vrf, vrs, vtr, vcall, vcp. others not supported \param val value to be set (-1 gets) \param id module index (-1 for all) - \returns dac value + \returns dac value or -1 (if id=-1 & dac value is different for all modules) or -9999 if dac string does not match */ - int setDAC(int dacindex, int val, int id = -1); + int setDAC(string dac, int val, int id = -1); /** @short get adc value - \param adc adc as string. can be temp_adc, temp_fpga, temp_fpgaext, temp_10ge, temp_dcdc, temp_sodl, temp_sodr, temp_fpgafl, temp_fpgafr, - i_a, i_b, i_c, i_d, vm_a, vm_b,vm_c, vm_d, vm_io, i_io + \param adc adc as string. can be temp_adc, temp_fpga, temp_fpgaext, temp_10ge, temp_dcdc, temp_sodl, temp_sodr, temp_fpgafl, temp_fpgafr. others not supported \param id module index (-1 for all) - \returns adc value, -1 (if id=-1,adcvalue is different for all modules), -9999 if adc string does not match + \returns adc value or -1 (if id=-1 & adc value is different for all modules) or -9999 if adc string does not match */ int getADC(string adc, int id = -1);