Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

ConfigUpdater.cpp

00001 #include "ConfigUpdater.h"
00002 #include "../SctApiAccessException.h"
00003 #include "../SctApiCall.h"
00004 
00005 #include "Sct_SctApi/Sct_SctApi.hh"
00006 #include "Sct/ILUMarshalling.h"
00007 #include "SctData/TestResult.h"
00008 #include "SctData/DefectList.h"
00009 #include "SctData/ModuleConfiguration.h"
00010 #include "SctData/ModuleElement.h"
00011 
00012 using namespace SctData;
00013 using namespace Sct;
00014 
00015 namespace SctCalibrationController {
00016 
00017 unsigned long ConfigUpdater::getMID(const TestResult& t, Sct_SctApi_T_SctApi& api) const {
00018     unsigned long mid = 0;
00020     APIRETCALL(&api, mid, findModuleSerial(&st, const_cast<char*> ( t.getModuleName().c_str())), "ConfigUpdater failed to get MID")
00021     return mid;
00022 }
00023 
00024 void ConfigUpdater::maskChannels(const TestResult& t, DefectSeverity s, Sct_SctApi_T_SctApi& api) const {
00025     const DefectList::DefectCollection& defects = t.getDefects().getAllDefects();
00026 
00027     ModuleConfiguration config;
00028     for (unsigned int i=0; i<nChipModule; ++i) {
00029     config.getChipConfiguration(i).resetMask();
00030     }
00031 
00032     for (DefectList::DefectCollection::const_iterator i=defects.begin(); i!=defects.end(); ++i) {
00033     if (i->getPrototype().getSeverity() >= s)
00034         maskChannels(config, i->getModuleElement());
00035     }
00036 
00037     unsigned int maskArray[nChipModule*4];
00038     for (unsigned int chip=0; chip<nChipModule; ++chip) {
00039     for (unsigned int i=0; i<4; ++i)
00040         maskArray[chip*4 + i] = config.getABCDModule().chip[chip].basic.mask[i];
00041     }
00042 
00043     APICALL(&api, modifyABCDMask(&st, getMID(t, api), copyArrayToILU<_Sct_SctApi_T_DataBlock_sequence, UINT32>(maskArray, nChipModule*4)), "ConfigUpdater could not update masks")
00044 }
00045 
00046 void ConfigUpdater::maskChannels(ModuleConfiguration& config, ModuleElement element) const {
00047     for (unsigned int i=element.getFirst(); i<=element.getLast(); ++i) {
00048     config.getChipConfiguration(i/nChannelChip).mask(i%nChannelChip);
00049     }
00050 }
00051 
00052 }

Generated on Thu Jul 15 09:50:44 2004 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5