00001 #include "RxThresholdConfigUpdater.h"
00002 #include "ConfigUpdaterManager.h"
00003 #include "../SctApiAccessException.h"
00004 #include "../SctApiCall.h"
00005
00006 #include "Sct_SctApi/SctApi.hh"
00007 #include "Sct/SctParameters.h"
00008 #include "Sct/SctNames.h"
00009 #include "SctData/RxThresholdTestResult.h"
00010 #include "Sct/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::SctApiIPC_ptr 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, modifyABCDModuleVar(mid, ST_RX_THRESHOLD0, (int)floor(t.getOptimum(0)+0.5)), "RxDelayConfigUpdater failed to set delay")
00029 APICALL(api, modifyABCDModuleVar(mid, ST_RX_THRESHOLD1, (int)floor(t.getOptimum(1)+0.5)), "RxDelayConfigUpdater failed to set delay")
00030 }
00031
00032 }