//---------------------------------------------------------------- // Projet BAORadio - (C) LAL/IRFU 2008-2010 // Classes de base pour les threads de traitememt donnees BAORadio //---------------------------------------------------------------- #include #include #include #include #include "brbaseproc.h" using namespace SOPHYA; //--------------------------------------------------------------------- // Classe de traitement - calcul de visibilite pour n fibres //--------------------------------------------------------------------- /* --Methode-- */ BRBaseProcessor::BRBaseProcessor(RAcqMemZoneMgr& memgr) : memgr_(memgr), vpaq_(memgr.NbFibres()), vpchk_(memgr.NbFibres()), vfgok_(memgr.NbFibres()), curfc_(memgr.NbFibres()), fcfirst_(memgr.NbFibres()), ttfirst_(memgr.NbFibres()) { stop_ = false; for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) { fbuff_.push_back(NULL); vpaq_[fib]=BRPaquet(NULL,memgr_.PaqSize()); vpchk_[fib]=BRPaqChecker(true,0); vfgok_[fib]=true; curfc_[fib]=0; fcfirst_[fib]=0; ttfirst_[fib]=0; } fgokallfibers_=true; totprocnpaq_=0; } /* --Methode-- */ void BRBaseProcessor::run() { setRC(1); int rc=0; try { cout << " BRBaseProcessor::run() - Starting " << " NFibers=" << memgr_.NbFibres() << " NChan=" << 2*memgr_.NbFibres() << endl; size_t paqsz=memgr_.PaqSize(); bool fgrun=true; while (fgrun) { if (stop_) break; if (memgr_.GetRunState() == MemZR_Stopped) break; int mid = memgr_.FindMemZoneId(MemZA_ProcA); Byte* buffg = memgr_.GetMemZone(mid); if (buffg == NULL) { cout << "BRBaseProcessor::run()/ERROR memgr.GetMemZone(" << mid << ") -> NULL" << endl; setRC(7); fgrun=false; break; } for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) { fbuff_[fib] = memgr_.GetMemZone(mid,fib); if (fbuff_[fib] == NULL) { // cela ne devrait pas arriver cout << "BRBaseProcessor::run()/ERROR memgr.GetMemZone(" << mid << "," << fib << ") -> NULL" << endl; setRC(9); fgrun=false; break; } } for(size_t jp=0; jp