00001 #include "RxThresholdConfigUpdater.h" 00002 #include "ConfigUpdaterManager.h" 00003 #include "../SctApiAccessException.h" 00004 #include "../SctApiCall.h" 00005 00006 #include "Sct_SctApi/Sct_SctApi.hh" 00007 #include "Sct/SctParameters.h" 00008 #include "Sct/SctNames.h" 00009 #include "SctData/RxThresholdTestResult.h" 00010 #include "CommonWithDsp/ABCD/ABCDscans.h" 00011 #include "SctApi/utility.h" 00012 00013 using namespace Sct; 00014 using namespace SctData; 00015 00016 namespace SctCalibrationController { 00017 00018 bool RxThresholdConfigUpdater::inMap = ConfigUpdaterManager::instance().setUpdater("SctData::RxThresholdTestResult", shared_ptr<ConfigUpdater> (new RxThresholdConfigUpdater())); 00019 00020 void RxThresholdConfigUpdater::update(const TestResult& testresult, Sct_SctApi_T_SctApi& api) const { 00021 const RxThresholdTestResult& t = dynamic_cast<const RxThresholdTestResult&> (testresult); 00022 unsigned long mid = getMID(t, api); 00023 SctNames::Mrs() << "CC_UPDATE" << MRS_TEXT("CalibrationController updating RxThreshold") << MRS_PARAM<long>("ModuleID", mid) << MRS_DIAGNOSTIC << ENDM; 00024 00025 unsigned partition, crate, rod, channel; 00026 SctApi::Utility::getpcrc(mid, partition, crate, rod, channel); 00027 00028 APICALL(&api, modifyBOCParam(&st, partition, crate, rod, channel, ST_RX_THRESHOLD0, (int)floor(t.getOptimum(0)+0.5)), "RxDelayConfigUpdater failed to set delay") 00029 APICALL(&api, modifyBOCParam(&st, partition, crate, rod, channel, ST_RX_THRESHOLD1, (int)floor(t.getOptimum(1)+0.5)), "RxDelayConfigUpdater failed to set delay") 00030 } 00031 00032 }