00001 #include "RxDelayConfigUpdater.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/RxDelayTestResult.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 RxDelayConfigUpdater::inMap = ConfigUpdaterManager::instance().setUpdater("SctData::RxDelayTestResult", shared_ptr<ConfigUpdater> (new RxDelayConfigUpdater())); 00019 00020 void RxDelayConfigUpdater::update(const TestResult& testresult, Sct_SctApi_T_SctApi& api) const { 00021 const RxDelayTestResult& t = dynamic_cast<const RxDelayTestResult&> (testresult); 00022 unsigned long mid = getMID(t, api); 00023 SctNames::Mrs() << "CC_UPDATE" << MRS_TEXT("CalibrationController updating RxDelay") << 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_DELAY0, (int)floor(t.getOptimum(0)+0.5)), "RxDelayConfigUpdater failed to set delay") 00029 APICALL(&api, modifyBOCParam(&st, partition, crate, rod, channel, ST_RX_DELAY1, (int)floor(t.getOptimum(1)+0.5)), "RxDelayConfigUpdater failed to set delay") 00030 } 00031 00032 }