7 #include "dictionaries.h"
18 LOG(logINFO) <<
"The DUT currently contains the following objects:";
20 LOG(logINFO) << std::setw(2) << tbm.size() <<
" TBM Cores (" <<
getNEnabledTbms()
23 for(std::vector<tbmConfig>::iterator tbmIt = tbm.begin(); tbmIt != tbm.end(); tbmIt++) {
24 LOG(logINFO) <<
"\tTBM Core "
25 << ((tbmIt-tbm.begin())%2 == 0 ?
"alpha" :
"beta " )
26 <<
" (" <<
static_cast<int>(tbmIt - tbm.begin()) <<
"): "
27 << (*tbmIt).dacs.size() <<
" registers set";
32 LOG(logINFO) << std::setw(2) << roc.size() <<
" ROCs (" <<
getNEnabledRocs()
33 <<
" ON) with " << roc.at(0).pixels.size() <<
" pixelConfigs";
35 for(std::vector<rocConfig>::iterator rocIt = roc.begin(); rocIt != roc.end(); rocIt++) {
36 LOG(logINFO) <<
"\tROC " <<
static_cast<int>(rocIt-roc.begin()) <<
": "
37 << (*rocIt).dacs.size() <<
" DACs set, Pixels: "
45 if (!_initialized || rocid >= roc.size())
return 0;
46 return std::count_if(roc.at(rocid).pixels.begin(),roc.at(rocid).pixels.end(),
configEnableSet(
true));
50 if (!_initialized)
return 0;
53 for (std::vector<rocConfig>::iterator rocit = roc.begin() ; rocit != roc.end(); ++rocit){
54 nenabled += std::count_if(rocit->pixels.begin(),rocit->pixels.end(),
configEnableSet(
true));
60 if (!_initialized || rocid >= roc.size())
return 0;
61 return std::count_if(roc.at(rocid).pixels.begin(),roc.at(rocid).pixels.end(),
configMaskSet(
true));
65 if (!_initialized)
return 0;
68 for (std::vector<rocConfig>::iterator rocit = roc.begin() ; rocit != roc.end(); ++rocit){
69 nmasked += std::count_if(rocit->pixels.begin(),rocit->pixels.end(),
configMaskSet(
true));
78 for (std::vector<rocConfig>::iterator it = roc.begin(); it != roc.end(); ++it){
79 if (it->enable()) count++;
89 if(roc.empty())
return "";
96 return _dict->getName(roc.front().type);
100 if(tbm.empty())
return "";
106 return _dict->getName(tbm.front().type);
113 for (std::vector<tbmConfig>::iterator it = tbm.begin(); it != tbm.end(); ++it){
114 if (it->enable) count++;
126 std::vector< pixelConfig > result;
129 if (!
status() || !(rocid < roc.size()))
return result;
132 for (std::vector<pixelConfig>::iterator it = roc.at(rocid).pixels.begin(); it != roc.at(rocid).pixels.end(); ++it){
133 if (it->enable()) result.push_back(*it);
140 std::vector< pixelConfig > result;
143 if (!
status())
return result;
146 for (std::vector<rocConfig>::iterator rocit = roc.begin() ; rocit != roc.end(); ++rocit){
148 for (std::vector<pixelConfig>::iterator it = rocit->pixels.begin(); it != rocit->pixels.end(); ++it){
149 if (it->enable()) result.push_back(*it);
157 std::vector< pixelConfig > result;
160 if (!
status() || !(rocid < roc.size()))
return result;
163 for (std::vector<pixelConfig>::iterator it = roc.at(rocid).pixels.begin(); it != roc.at(rocid).pixels.end(); ++it){
164 if (it->mask()) result.push_back(*it);
171 std::vector< pixelConfig > result;
174 if (!
status())
return result;
177 for (std::vector<rocConfig>::iterator rocit = roc.begin() ; rocit != roc.end(); ++rocit){
179 for (std::vector<pixelConfig>::iterator it = rocit->pixels.begin(); it != rocit->pixels.end(); ++it){
180 if (it->mask()) result.push_back(*it);
186 std::vector< bool > dut::getEnabledColumns(
size_t roci2c) {
188 std::vector< bool > result(52,
false);
191 if (!
status())
return result;
193 for(std::vector<rocConfig>::iterator rocit = roc.begin(); rocit != roc.end(); ++rocit){
194 if(rocit->i2c_address == roci2c) {
196 for(std::vector<pixelConfig>::iterator it = rocit->pixels.begin(); it != rocit->pixels.end(); ++it){
197 if (it->enable()) result.at((*it).column()) =
true;
205 std::vector< rocConfig > result;
206 if (!_initialized)
return result;
208 for (std::vector<rocConfig>::iterator it = roc.begin(); it != roc.end(); ++it){
209 if (it->enable()) result.push_back(*it);
216 std::vector< uint8_t > result = std::vector<uint8_t>();
218 if (!_initialized)
return result;
221 for (std::vector<rocConfig>::iterator it = roc.begin(); it != roc.end(); ++it){
222 if (it->enable()) result.push_back(static_cast<uint8_t>(it - roc.begin()));
229 std::vector< uint8_t > result = std::vector<uint8_t>();
231 if (!_initialized)
return result;
234 for (std::vector<rocConfig>::iterator it = roc.begin(); it != roc.end(); ++it){
235 if (it->enable()) result.push_back(it->i2c_address);
242 std::vector< uint8_t > result = std::vector<uint8_t>();
244 if (!_initialized)
return result;
247 for (std::vector<rocConfig>::iterator it = roc.begin(); it != roc.end(); ++it){
248 result.push_back(it->i2c_address);
254 std::vector< tbmConfig > result;
255 if (!_initialized)
return result;
257 for (std::vector<tbmConfig>::iterator it = tbm.begin(); it != tbm.end(); ++it){
258 if (it->enable) result.push_back(*it);
264 std::vector<pixelConfig>::iterator it = std::find_if(roc.at(0).pixels.begin(),
265 roc.at(0).pixels.end(),
267 if(it != roc.at(0).pixels.end()) {
return it->enable(); }
272 if (!
status())
return false;
274 std::vector<pixelConfig>::iterator it = std::find_if(roc.at(0).pixels.begin(),
275 roc.at(0).pixels.end(),
277 if(it != roc.at(0).pixels.end())
285 if (!
status())
return false;
287 if (roc.size()<16)
return false;
289 std::vector<rocConfig>::iterator it = std::find_if(roc.begin(),
292 if(it != roc.end())
return false;
301 if (!
status())
return result;
303 std::vector<pixelConfig>::iterator it = std::find_if(roc.at(rocid).pixels.begin(),
304 roc.at(rocid).pixels.end(),
307 if(it != roc.at(rocid).pixels.end()){
316 if(
status() && rocId < roc.size()) {
318 std::transform(dacName.begin(), dacName.end(), dacName.begin(), ::tolower);
324 uint8_t _register = _dict->getRegister(dacName, ROC_REG);
325 return roc[rocId].dacs[_register];
331 std::vector< std::pair<std::string,uint8_t> >
dut::getDACs(
size_t rocId) {
333 if(
status() && rocId < roc.size()) {
334 std::vector< std::pair<std::string,uint8_t> > vec;
339 for(std::map< uint8_t,uint8_t >::iterator it = roc.at(rocId).dacs.begin();
340 it != roc.at(rocId).dacs.end(); ++it) {
341 vec.push_back(std::make_pair(_dict->getName(it->first,ROC_REG),it->second));
345 else return std::vector< std::pair<std::string,uint8_t> >();
350 if(
status() && tbmId < tbm.size()) {
351 std::vector< std::pair<std::string,uint8_t> > vec;
356 for(std::map< uint8_t,uint8_t >::iterator it = tbm.at(tbmId).dacs.begin();
357 it != tbm.at(tbmId).dacs.end(); ++it) {
359 vec.push_back(std::make_pair(_dict->getName((it->first&0x0F),TBM_REG),it->second));
363 else return std::vector< std::pair<std::string,uint8_t> >();
368 if(
status() && rocId < roc.size()) {
373 LOG(logINFO) <<
"Printing current DAC settings for ROC " << rocId <<
":";
374 for(std::map< uint8_t,uint8_t >::iterator it = roc.at(rocId).dacs.begin();
375 it != roc.at(rocId).dacs.end(); ++it) {
376 LOG(logINFO) <<
"DAC " << _dict->getName(it->first,ROC_REG) <<
" (" <<
static_cast<int>(it->first) <<
") = " << static_cast<int>(it->second);
384 if(rocId < roc.size())
386 roc[rocId].setEnable(enable);
392 if(tbmId < tbm.size())
394 tbm[tbmId].enable = enable;
401 for (std::vector<rocConfig>::iterator rocit = roc.begin() ; rocit != roc.end(); ++rocit){
403 std::vector<pixelConfig>::iterator it = std::find_if(rocit->pixels.begin(),
407 if(it != rocit->pixels.end()) {
410 LOG(logWARNING) <<
"Pixel at column " <<
static_cast<int>(column) <<
" and row " << static_cast<int>(row) <<
" not found for ROC " <<
static_cast<int>(rocit - roc.begin()) <<
"!" ;
418 if(
status() && rocid < roc.size()) {
420 std::vector<pixelConfig>::iterator it = std::find_if(roc.at(rocid).pixels.begin(),
421 roc.at(rocid).pixels.end(),
424 if(it != roc.at(rocid).pixels.end()){
427 LOG(logWARNING) <<
"Pixel at column " <<
static_cast<int>(column) <<
" and row " << static_cast<int>(row) <<
" not found for ROC " <<
static_cast<int>(rocid)<<
"!" ;
436 for (std::vector<rocConfig>::iterator rocit = roc.begin() ; rocit != roc.end(); ++rocit){
438 std::vector<pixelConfig>::iterator it = std::find_if(rocit->pixels.begin(),
442 if(it != rocit->pixels.end()) {
443 it->setEnable(enable);
445 LOG(logWARNING) <<
"Pixel at column " <<
static_cast<int>(column) <<
" and row " << static_cast<int>(row) <<
" not found for ROC " <<
static_cast<int>(rocit - roc.begin())<<
"!" ;
453 if(
status() && rocid < roc.size()) {
455 std::vector<pixelConfig>::iterator it = std::find_if(roc.at(rocid).pixels.begin(),
456 roc.at(rocid).pixels.end(),
459 if(it != roc.at(rocid).pixels.end()){
460 it->setEnable(enable);
462 LOG(logWARNING) <<
"Pixel at column " <<
static_cast<int>(column) <<
" and row " << static_cast<int>(row) <<
" not found for ROC " <<
static_cast<int>(rocid)<<
"!" ;
470 LOG(logDEBUGAPI) <<
"Set mask bit to " <<
static_cast<int>(mask) <<
" for all pixels on all ROCs.";
472 for (std::vector<rocConfig>::iterator rocit = roc.begin() ; rocit != roc.end(); ++rocit){
474 for (std::vector<pixelConfig>::iterator pixelit = rocit->pixels.begin() ; pixelit != rocit->pixels.end(); ++pixelit){
475 pixelit->setMask(mask);
483 if(
status() && rocid < roc.size()) {
484 LOG(logDEBUGAPI) <<
"Set mask bit to " <<
static_cast<int>(mask) <<
" for all pixels on ROC " << static_cast<int>(rocid);
486 for (std::vector<pixelConfig>::iterator pixelit = roc.at(rocid).pixels.begin() ; pixelit != roc.at(rocid).pixels.end(); ++pixelit){
487 pixelit->setMask(mask);
494 if(
status() && rocid < roc.size()) {
495 LOG(logDEBUGAPI) <<
"Set enable bit to " <<
static_cast<int>(enable) <<
" for all pixels on ROC " << static_cast<int>(rocid);
497 for (std::vector<pixelConfig>::iterator pixelit = roc.at(rocid).pixels.begin() ; pixelit != roc.at(rocid).pixels.end(); ++pixelit){
498 pixelit->setEnable(enable);
506 LOG(logDEBUGAPI) <<
"Set enable bit to " <<
static_cast<int>(enable) <<
" for all pixels on all ROCs";
508 for (std::vector<rocConfig>::iterator rocit = roc.begin() ; rocit != roc.end(); ++rocit){
510 for (std::vector<pixelConfig>::iterator pixelit = rocit->pixels.begin() ; pixelit != rocit->pixels.end(); ++pixelit){
511 pixelit->setEnable(enable);
519 if(
status() && rocid < roc.size()) {
522 std::vector<pixelConfig>::iterator px = std::find_if(roc.at(rocid).pixels.begin(),
523 roc.at(rocid).pixels.end(),
526 if(px == roc.at(0).pixels.end())
return false;
528 px->setTrim(trimming.trim());
531 else {
return false; }
536 if(
status() && rocid < roc.size()) {
539 std::vector<pixelConfig>::iterator px = std::find_if(roc.at(rocid).pixels.begin(),
540 roc.at(rocid).pixels.end(),
543 if(px == roc.at(0).pixels.end())
return false;
548 else {
return false; }
553 if(
status() && rocid < roc.size()) {
555 for (std::vector<pixelConfig>::iterator it = trimming.begin(); it != trimming.end(); ++it){
558 std::vector<pixelConfig>::iterator px = std::find_if(roc.at(rocid).pixels.begin(),
559 roc.at(rocid).pixels.end(),
562 if(px == roc.at(0).pixels.end())
return false;
564 px->setTrim(it->trim());
568 else {
return false; }
573 if(!_initialized || !_programmed) {
574 LOG(logERROR) <<
"DUT structure not initialized/programmed yet!";
577 return (_initialized && _programmed);
void setTBMEnable(size_t tbmId, bool enable)
std::vector< pixelConfig > getEnabledPixels()
size_t getNMaskedPixels()
void printDACs(size_t rocId)
std::vector< uint8_t > getEnabledRocI2Caddr()
void testPixel(uint8_t column, uint8_t row, bool enable)
std::vector< rocConfig > getEnabledRocs()
void maskAllPixels(bool mask, uint8_t rocid)
bool updateTrimBits(std::vector< pixelConfig > trimming, uint8_t rocid)
void setROCEnable(size_t rocId, bool enable)
size_t getNEnabledPixels()
pixelConfig getPixelConfig(size_t rocid, uint8_t column, uint8_t row)
std::vector< std::pair< std::string, uint8_t > > getDACs(size_t rocId)
std::vector< uint8_t > getEnabledRocIDs()
void testAllPixels(bool enable)
bool getPixelEnabled(uint8_t column, uint8_t row)
std::vector< uint8_t > getRocI2Caddr()
void maskPixel(uint8_t column, uint8_t row, bool mask)
uint8_t getDAC(size_t rocId, std::string dacName)
std::vector< pixelConfig > getMaskedPixels()
std::vector< tbmConfig > getEnabledTbms()
std::vector< std::pair< std::string, uint8_t > > getTbmDACs(size_t tbmId)