Changeset 3913 in Sophya for trunk/AddOn/TAcq/brparam.cc
- Timestamp:
- Nov 26, 2010, 2:45:39 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/brparam.cc
r3911 r3913 42 42 } 43 43 44 #define PMAXNBFIBRES 64 44 45 /* --Methode-- */ 45 46 BRConfList::BRConfList() 46 : basedir_("./") 47 { 47 : basedir_("./"), fiberIds_(PMAXNBFIBRES), tmpdir_("/tmp") 48 { 49 InitFromEnv(); 48 50 } 49 51 50 52 /* --Methode-- */ 51 53 BRConfList::BRConfList(string basedir) 52 : basedir_(basedir) 53 { 54 : basedir_("./"), fiberIds_(PMAXNBFIBRES), tmpdir_("/tmp") 55 { 56 InitFromEnv(); 57 SetBaseDirectory(basedir); 54 58 } 55 59 56 60 /* --Methode-- */ 57 61 BRConfList::BRConfList(string basedir, vector<ADCBoardDesc> boards) 58 : basedir_(basedir), boards_(boards) 59 { 60 size_t len = basedir_.length(); 61 if ((len>1)&&(basedir_[len-1]!='/')) basedir_ += '/'; 62 : basedir_("./"), fiberIds_(PMAXNBFIBRES), tmpdir_("/tmp") 63 { 64 InitFromEnv(); 65 SetBaseDirectory(basedir); 66 boards_=boards; 62 67 } 63 68 64 69 /* --Methode-- */ 65 70 BRConfList::BRConfList(BRConfList const & cf) 66 : basedir_(cf.basedir_), boards_(cf.boards_) 67 { 68 } 69 70 /* --Methode-- */ 71 void BRConfList::SetBaseDirectory(string basedir) 72 { 71 : basedir_(cf.basedir_), boards_(cf.boards_), fiberIdsS_(cf.fiberIdsS_), fiberIds_(cf.fiberIds_), tmpdir_(cf.tmpdir_) 72 { 73 } 74 75 /* --Methode-- */ 76 void BRConfList::InitFromEnv() 77 { 78 const char* venvp = NULL; 79 venvp=getenv("BRACQ_TMPDIR"); 80 if (venvp!=NULL) tmpdir_=venvp; 81 else { 82 if (venvp!=NULL) tmpdir_=venvp; 83 venvp = getenv("TMPDIR"); 84 } 85 venvp=getenv("BRACQ_BASEDIR"); 86 if (venvp!=NULL) { 87 string ebd=venvp; 88 SetBaseDirectory(ebd); 89 } 90 string fibids="1,2,3,4,5,6,7,8"; 91 venvp=getenv("BRACQ_FIBERIDS"); 92 if (venvp!=NULL) fibids=venvp; 93 SetFiberIds(fibids); 94 } 95 96 /* --Methode-- */ 97 int BRConfList::SetFiberIds(string& sfids) 98 { 99 fiberIdsS_=sfids; 100 vector<string> fibids; 101 FillVStringFrString(sfids, fibids, ','); 102 int rc=0; 103 for (size_t fib=0; fib<fibids.size(); fib++) { 104 if (fib>fiberIds_.size()) break; 105 fiberIds_[fib]=atoi(fibids[fib].c_str()); 106 rc++; 107 } 108 return rc; 109 } 110 111 /* --Methode-- */ 112 void BRConfList::SetBaseDirectory(string& basedir) 113 { 114 if (basedir.length()<1) return; 73 115 basedir_=basedir; 74 116 size_t len = basedir_.length(); … … 77 119 78 120 /* --Methode-- */ 79 voidBRConfList::Set(BRConfList const & cf)121 BRConfList& BRConfList::Set(BRConfList const & cf) 80 122 { 81 123 basedir_=cf.basedir_; 82 124 boards_=cf.boards_; 125 fiberIdsS_=cf.fiberIdsS_; 126 fiberIds_=cf.fiberIds_; 127 tmpdir_=cf.tmpdir_; 128 return (*this); 83 129 } 84 130 … … 86 132 ostream& BRConfList::Print(ostream& os) 87 133 { 88 os << " ----- BRConfList:: BaseDir:" << basedir_ << " NBoards= " << boards_.size() << endl; 134 os << " ----- BRConfList:: BaseDir=" << basedir_ << " TmpDir=" << tmpdir_ 135 << " NBoards= " << boards_.size() << endl; 89 136 for(size_t k=0; k<boards_.size(); k++) boards_[k].Print(os); 137 os << " FiberIdString=" << fiberIdsS_ << endl; 90 138 return os; 91 139 } … … 98 146 99 147 // Classe qui memorise tous les parametres importants de l'acquisition 100 #define PMAXNBFIBRES 64101 148 102 149 /* --Methode-- */ … … 110 157 111 158 FiberListS=fibres; 112 FiberIdsS="1,2,3,4,5,6,7,8";113 for (int ii=0; ii<PMAXNBFIBRES; ii++) FiberIds.push_back(ii+1);114 159 115 160 PaqSize=paqsz; … … 188 233 189 234 FiberListS=p.FiberListS; 190 FiberNum=p.FiberNum; 191 FiberIdsS=p.FiberIdsS; 192 FiberIds=p.FiberIds; 235 fiberNum_=p.fiberNum_; 193 236 194 237 PaqSize=p.PaqSize; … … 222 265 pci2eth_fgdirect=p.pci2eth_fgdirect; 223 266 eths_targets=p.eths_targets; 267 eths_stargs=p.eths_stargs; 268 eths_fibtargs=p.eths_fibtargs; 269 224 270 ethr_nlink=p.ethr_nlink; 225 271 ethr_forcesamefc_=p.ethr_forcesamefc_; … … 254 300 else if(conf.HasKey("fibers")) 255 301 FiberListS= conf.SParam("fibers",0,"1"); 256 if(conf.HasKey("fiberids"))257 FiberIdsS= conf.SParam("fiberids",0,"1");258 302 259 303 OutPathName= conf.SParam("outpathname",0,"TstAcq"); … … 280 324 tcpportid=conf.IParam("tcpportid",0,BRSPORTID); 281 325 if (conf.HasKey("pci2ethdirect")) pci2eth_fgdirect = true; // Transfer direct DMA -> Ethernet 282 if (conf.HasKey("ethrtargets")) { // Machines destinations des paquets 326 if (conf.HasKey("ethrtargets")) { // Machines destinations des paquets - memes destinations pour toutes les fibres 283 327 for(int it=0; it<conf.NbParam("ethrtargets"); it++) 284 eths_targets.push_back(conf.SParam("ethrtargets",it)); 285 } 328 eths_stargs.push_back(conf.SParam("ethrtargets",it)); 329 } 330 331 const char* ethtf[9]={"ethrtargetsf1","ethrtargetsf2","ethrtargetsf3","ethrtargetsf4", 332 "ethrtargetsf5","ethrtargetsf6","ethrtargetsf7","ethrtargetsf8"}; 333 for(int jj=0;jj<8;jj++) { 334 if (conf.HasKey( ethtf[jj] )) { 335 vector<string> ftargs; 336 int fid=jj+1; 337 for(int it=0; it<conf.NbParam( ethtf[jj] ); it++) 338 ftargs.push_back(conf.SParam( ethtf[jj] ,it)); 339 eths_fibtargs[fid]=ftargs; 340 } 341 } 342 286 343 ethr_nlink=conf.IParam("ethrnlink",0,0); // Nombre de sources de paquets en reception ethernet 287 344 if (conf.HasKey("ethrforcesamefc")) { … … 328 385 vector<string> fiblist; 329 386 FillVStringFrString(FiberListS, fiblist, ','); 330 FiberNum.resize(fiblist.size());387 fiberNum_.resize(fiblist.size()); 331 388 for (int fib=0; fib<fiblist.size(); fib++) { 332 FiberNum[fib]=atoi(fiblist[fib].c_str()); 333 } 334 vector<string> fibids; 335 FillVStringFrString(FiberIdsS, fibids, ','); 336 for (int fib=0; fib<fibids.size(); fib++) { 337 FiberIds[fib]=atoi(fibids[fib].c_str()); 389 fiberNum_[fib]=atoi(fiblist[fib].c_str()); 390 } 391 392 eths_targets.resize(fiberNum_.size()); 393 for (int fib=0; fib<fiberNum_.size(); fib++) { 394 map< int, vector<string> >::const_iterator itm=eths_fibtargs.find(fiberNum_[fib]); 395 if (itm != eths_fibtargs.end()) eths_targets[fib]=itm->second; 396 else eths_targets[fib]=eths_stargs; 338 397 } 339 398 … … 414 473 os << " ------ BRParList::Print() ----- " << endl; 415 474 os << " FiberListS=" << FiberListS ; 416 os << " FiberIdsS=" << FiberIdsS ;417 os << " Fibers (Num->Id): ";418 for(size_t f=0; f<NbFibers(); f++) cout << FiberNum[f] << " -> " << FiberIds[f] << " ; " ;419 os << endl;420 475 os << " PaqSize=" <<PaqSize; 421 476 os << " DMA_Size_kb=" <<dmasizekb << " (EndDMA: Maxkw=" << maxkwedma_ << " NRetry=" << nretrydma_ … … 432 487 os << " PaquetSize Reduction, ReducedSize=" << redpqsize << " Offset=" << reducoffset << endl; 433 488 } 434 if (eths_targets.size()>0) { 435 cout << " DMA->Ethernet NbTargets=" << eths_targets.size() 436 << ((pci2eth_fgdirect)?" (DirectTransferMode) " : " " ) << " :"; 437 for(size_t it=0; it<eths_targets.size(); it++) cout << eths_targets[it] << " , "; 438 cout << endl; 439 } 440 cout << " TCP-PortId=" << tcpportid << " EthernetRead NbSources (=NbLinks)= " << ethr_nlink << endl; 489 if ((eths_stargs.size()>0)||(eths_fibtargs.size()>0)) { 490 os << " DMA->Ethernet Targets=" << eths_targets.size() 491 << ((pci2eth_fgdirect)?" (DirectTransferMode) " : " " ) << endl; 492 493 for(size_t fib=0; fib<eths_targets.size(); fib++) { 494 os << " Fiber Num=" << fiberNum_[fib] << " --> eth_targets: "; 495 for(size_t it=0; it<eths_targets[fib].size(); it++) 496 os << eths_targets[fib][it] << " ; "; 497 os << endl; 498 } 499 } 500 os << " TCP-PortId=" << tcpportid << " EthernetRead NbSources (=NbLinks)= " << ethr_nlink << endl; 441 501 if (ethr_forcesamefc_) 442 cout<< "EthernetReader mode: ForceSameFrameCounter read mode with Max_PaquetCounterDiff= "502 os << "EthernetReader mode: ForceSameFrameCounter read mode with Max_PaquetCounterDiff= " 443 503 << ethr_sfc_maxdpc_ << " MaxNbResync=" << ethr_sfc_maxresync_ 444 504 << ((ethr_waitendmsg_)?" Wait_For_END_Message_Before_Terminate ":" ") << endl; 445 505 else 446 cout<< "EthernetReader mode: AllOKPaquets read mode "506 os << "EthernetReader mode: AllOKPaquets read mode " 447 507 << ((ethr_waitendmsg_)?" Wait_For_END_Message_Before_Terminate ":" ") << endl; 448 508 … … 483 543 config_->Print(os); 484 544 param_->Print(os); 545 os << " Fibers f: Num->Id "; 546 for(size_t f=0; f<NbFibers(); f++) 547 os << f << ": " << FiberNum(f) << " -> " << FiberId(f) << " ; " ; 548 os << endl; 485 549 os << " ----------------------------------------------------- " << endl; 486 550 } … … 501 565 memset(cmd,0,1024); 502 566 for (int i= 0; i< NFibers() ; i++) { 503 sprintf(cmd,"mkdir %s%s/Fiber%d",config_->BaseDirectory().c_str(), param_->OutPathName.c_str(),param_-> FiberNum[i]);567 sprintf(cmd,"mkdir %s%s/Fiber%d",config_->BaseDirectory().c_str(), param_->OutPathName.c_str(),param_->fiberNum_[i]); 504 568 if (system(cmd) < 0) { 505 569 cout << "CreateOutputDirectories()/Error: Can not create subdirectory " … … 529 593 { 530 594 char buff[24]; 531 sprintf(buff,"Fiber%d/",param_-> FiberNum[ifib]);595 sprintf(buff,"Fiber%d/",param_->fiberNum_[ifib]); 532 596 return ( config_->BaseDirectory() + param_->OutPathName + buff ); 533 597 }
Note:
See TracChangeset
for help on using the changeset viewer.