Changeset 3909 in Sophya for trunk/AddOn/TAcq/racqurw.cc


Ignore:
Timestamp:
Nov 21, 2010, 2:26:12 PM (15 years ago)
Author:
ansari
Message:

1/ Mise en place d'informations auxiliaires au niveau de RAcqMemZoneMgr ,

FillTime (DATEOBS) pour chaque zone et identificateur des fibres

2/ remplissage de FillTime(DATEOBS) Et FiberId's de MemZoneMgr par

les classes PCIEMultiReader et EthernetReader

3/ Ajout de mots-cle (ds les datacards) pour numeros d'identification des

fibres et parametres de controles du DMA (@fiberids @waitenddma)
et corrections/ameliorations des modes acq (raw1c ordfft2c ...)

4/ Parametrage des WaitEndDMA ds PCIEWrapperInterface et implementation

au niveau de DMAMgrV6 (dmamgrv6.h .cc)

5/ Gestion d'echec DMA -> arret acquisition ds PCIEMultiReader,EthernetReader

modification TimeOut DMA entre le premier DMA et les suivants pour permettre
un arret propre rapide

6/ Adaptation de la classe BRVisibilityCalculator pour utilisation

FillTime (DATEOBS) et FiberIds de MemZoneMgr - amelioration de
l'identification des numeros de canaux pour les matrices de visibilites

7/ Petites ameliorations (ecriture mot-cles) pour MultiDataSaver et

amelioration classe BRMultiFitsReader pour lecture FillTime (DATEOBS)
et FiberIds depuis les fichiers FITS et remplissage de RAcqMemZoneMgr

Reza, 21/11/2010

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/AddOn/TAcq/racqurw.cc

    r3683 r3909  
    487487  mmbuf_=NULL;
    488488  max_targ_npaq = memgr.NbPaquets();
    489   for (int fid=0 ; fid<(int)nbDma_ ;fid++) mmbufib_[fid]=NULL;
     489  for (int fid=0 ; fid<(int)nbDma_ ;fid++) {
     490    memgr.FiberId(fid)=vec_pciw[fid]->FiberId();
     491    mmbufib_[fid]=NULL;
     492  }
    490493}
    491494
     
    507510  uint_4 paqsz =  packSize_;
    508511  uint_4 dmasz = vec_pciw_[0]->TransferSize();
    509   vec_pciw_[0]->StartTransfers();
     512  //DEL   vec_pciw_[0]->StartTransfers();
    510513
    511514  BRPaqChecker pcheck[MAXNBFIB];  // Verification/comptage des paquets 
     
    516519  uint_4 off_acheval=0;
    517520 
    518   int nerrdma = 0;
    519   int maxerrdma = 10;
    520521  bool fgarret = false;
    521522 
     
    523524  for (int i=0;i< (int)nbDma_ ;i++) { 
    524525    tampon[i]=   new Byte[paqsz];
     526    vec_pciw_[i]->SetMaxWaitEndDMA(par_.first_maxkwedma_,par_.first_nretrydma_);
    525527  }
    526528  bool fgredpaq=par_.fgreducpsize;
     
    551553    // Lancement des DMA
    552554    for (int dma=0; dma < (int)nbDma_ ;dma++) vec_pciw_[dma]->StartTransfers();
    553    
     555    if (npaqfaitg==1)  {
     556      for (int i=0;i< (int)nbDma_ ;i++)
     557        vec_pciw_[i]->SetMaxWaitEndDMA(par_.maxkwedma_,par_.nretrydma_);
     558    }
    554559    // On pointe vers le debut de la zone a remplir aver le prochain DMA
    555560    //-- Zone memoire locale Byte* nextdma = buff+i*paqsz;
     
    560565      Datas[dma]=vec_pciw_[dma]->GetData();
    561566      if (Datas[dma] == NULL) { // No data Read in DMA
    562         nerrdma ++;   fgbaddma=true;
    563         cout << "PCIEMultiReaderChecker/Erreur Waiting for datas ..." << endl;
     567        fgbaddma=true;
     568        cout << "PCIEMultiReaderChecker/Error Waiting for datas ..." << endl;
    564569        vec_pciw_[dma]->PrintStatus(cout);
    565         if (nerrdma>=maxerrdma) { fgarret = true; break; }
     570        fgarret = true;  break;
    566571      }
    567572    }
     
    681686  cout << " --------------------------------------------------------------------" << endl;
    682687
    683   // //// Nettoyage final
     688  //---- Nettoyage final et arret
    684689  MZoneManage(true);
     690  memgr.Stop();   // Pour arreter les autres threads
     691
    685692  for (int i=0;i< (int)nbDma_ ;i++) delete[] tampon[i];
    686693  if ((fgredpaq)&&predtampon) delete[] predtampon;
     
    700707       << " max_targ_npaq=" << max_targ_npaq << endl;
    701708  */
    702   if (mid_ >= 0)  memgr.FreeMemZone(mid_, MemZS_Filled);
     709  if (mid_ >= 0)  {
     710    memgr.GetAuxData(mid_)->filltime_.SetNow();
     711    memgr.FreeMemZone(mid_, MemZS_Filled);
     712  }
    703713  mmbuf_ = NULL;  targ_npaq_ = 0;  mid_ = -2;
    704714  for (int fid=0;fid<(int)nbDma_ ;fid++) mmbufib_[fid]=NULL;
     
    790800    }
    791801    BRPaquet paq0(NULL, NULL, paqsz);
     802    TimeStamp tsmz;
    792803    for (uint_4 nbFile=0;nbFile<nfiles_ ;nbFile++) {
    793804      if (stop_ )   break;
     
    813824        // Sans TRAILER de paquet mff.setDTypeNaxis(MF_Byte, paq0.DataSize()+paq0.HeaderSize(), npaqperfile);
    814825        }
    815         AddFitsKWStart(mff,bpar);
    816826        fnum++;   fgfirstfctt=true;
    817827      }
     
    828838          return;       
    829839        }
     840        tsmz = memgr.GetAuxData(mid)->filltime_;
    830841        for(uint_4 fib=0; fib<memgr.NbFibres(); fib++)  {  // Boucle sur les fibres
    831842          Byte* buff = memgr.GetMemZone(mid,fib);
     
    841852              framecnt_first_[fib] = pcheck[fib].LastFrameNum();
    842853              timetag_first_[fib] = paq.TimeTag();
     854              AddFitsKWStart(mff,bpar,tsmz);
    843855              fgfirstfctt=false;
    844856            }
     
    871883          framecnt_last_[fib] = pcheck[fib].LastFrameNum();
    872884
    873         AddFitsKWEnd(mff,bpar);
     885        AddFitsKWEnd(mff,bpar,tsmz);
    874886        for(uint_4 fib=0; fib<memgr.NbFibres(); fib++) {
    875887          header[fib].close();
     
    907919
    908920/* --Methode-- */
    909 int MultiDataSaver::AddFitsKWStart(MiniFITSFile* mff, BRAcqConfig& acpar)
     921int MultiDataSaver::AddFitsKWStart(MiniFITSFile* mff, BRAcqConfig& acpar, TimeStamp& ts)
    910922{
    911   TimeStamp ts;
    912923  string cdtu=ts.ToString();
    913924  string& skysrc=acpar.SkySource();
     
    922933    mff[fib].AddKeyS("BRPAQCFMT", BRPaquet::FmtConvToString(acpar.GetParams().GetDataConvFg()),
    923934                         " BAORadio BRPaquet DataFormatConversion" );
    924     mff[fib].AddKeyI("FIBERNUM", acpar.GetParams().FiberNum[fib], " Fiber number/id") ;
     935    mff[fib].AddKeyI("FIBERNUM", acpar.GetParams().FiberNum[fib], " Fiber number") ;
     936    mff[fib].AddKeyI("FIBERID",memgr.FiberId(fib), " Fiber identifier (absolute id)");
    925937    if (hassrc)
    926938      mff[fib].AddKeyS("SKYSOURC", skysrc, " Source identification" );
     
    935947
    936948/* --Methode-- */
    937 int MultiDataSaver::AddFitsKWEnd(MiniFITSFile* mff, BRAcqConfig& acpar)
     949int MultiDataSaver::AddFitsKWEnd(MiniFITSFile* mff, BRAcqConfig& acpar, TimeStamp& ts)
    938950{
    939   TimeStamp ts;
    940951  string cdtu=ts.ToString();
    941952  for(uint_4 fib=0; fib<memgr.NbFibres(); fib++) {
Note: See TracChangeset for help on using the changeset viewer.