Changeset 3623 in Sophya for trunk/AddOn/TAcq/racqurw.h


Ignore:
Timestamp:
May 22, 2009, 9:59:38 AM (16 years ago)
Author:
ansari
Message:

Modifications et ameliorations diverses pour programme acquisition/traitement multifibres

Reza 22/05/2009

1- Extension/amelioration classe BRPaquet et BRPaqChecker
2- Correction BUG dans RAcqMemZoneMgr bloquant l'utilisation a une seule zone memoire
3- Classe PCIEWrapper devenue virtuelle pure et introduction de la classe TestPCIWrapperNODMA
pour les smulations.

File:
1 edited

Legend:

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

    r3538 r3623  
    1414#include "sopnamsp.h"
    1515#include "zthread.h"
     16#include "pciewrap.h"
    1617
    1718#include "brtypes.h"
     19#include "brpaqu.h"
    1820
    1921using namespace std;
     
    2729class PCIEReader : public ZThread {
    2830public:
    29   PCIEReader(RAcqMemZoneMgr& mem, uint_4 nmax=100);     
     31  PCIEReader( PCIEWrapper &pciw , uint_4 sizeFrame,uint_4 paqSize ,RAcqMemZoneMgr& mem,
     32              uint_4 nmax=100, BRDataFmtConv swapall=BR_SwapAll);       
    3033  virtual void run();
     34   void Stop();
    3135  inline void STOP() { stop_ = true; } 
     36   
    3237protected:
     38  // Pour recuperer un pointeur sur la prochaine zone memoire devant recevoir un paquet
     39  inline Byte* NextPaqTarget()  {
     40    if ((mmbuf_ == NULL )||(targ_npaq_ >= max_targ_npaq))
     41      if (MZoneManage()) return NULL;
     42    Byte* rb=mmbuf_+targ_npaq_*packSize_;
     43    targ_npaq_++;
     44    return rb;
     45  }
     46  bool MZoneManage(bool clean=false);  // Renvoie true si probleme
     47
    3348  RAcqMemZoneMgr& memgr;
    3449  uint_4 nmax_;  // Nombre maxi de blocs MemZone traites
     50  BRDataFmtConv swapall_;  // select data swap/format conversion for BRPaquet
    3551  bool stop_; 
     52  unsigned int sizeFr_ ;
     53  PCIEWrapper& pciw_;
     54  uint_4 packSize_;
     55  // Variables pour gerer la logique de  NextPaqTarget() qui cache l'acces a RAcqMemZoneMgr
     56  int mid_;  // Identificateur zone memoire
     57  uint_4 targ_npaq_;  // Numero de paquet dans une seule zone memoire
     58  uint_4 max_targ_npaq; // =  mmgr.NbPaquets() = Max de targ_npaq_
     59  Byte* mmbuf_;  // Pointeur zone memoire rendu par RAcqMemZoneMgr
    3660};
    3761
     
    4266class DataSaver : public ZThread {
    4367public:
    44   DataSaver(RAcqMemZoneMgr& mem, string& path, uint_4 nmax=100);
     68  DataSaver(RAcqMemZoneMgr& mem, string& path, uint_4 nfiles=100, uint_4 nblocperfile=1, bool savesig=true);
     69
    4570  virtual void run();
     71  void Stop();
     72  inline void STOP() { stop_ = true; } 
     73protected:
     74  RAcqMemZoneMgr& memgr;
     75  uint_4 nfiles_;  // Nombre maxi de fichiers cree
     76  uint_4 nblocperfile_;  // Nombre de bloc (zone memoire) mis dans un fichier
     77  uint_4 nmax_;  // Nombre maxi de blocs MemZone traites = nfiles * nblocperfile_
     78  bool savesig_; // Si false, pas d'ecriture des fichiers FITS du signal
     79  bool stop_; 
     80  string path_; 
     81  struct sigaction act;
     82 
     83};
     84
     85//-------------------------------------------------------
     86// Classe thread de lecture PCI-Express + Check
     87//-------------------------------------------------------
     88
     89class PCIEReaderChecker : public ZThread {
     90public:
     91  PCIEReaderChecker( PCIEWrapper &pciw , uint_4 sizeFrame,uint_4 paqSize ,RAcqMemZoneMgr& mem,
     92                     uint_4 nmax=100, BRDataFmtConv swapall=BR_SwapAll); 
     93  virtual void run();
     94   void Stop();
    4695  inline void STOP() { stop_ = true; } 
    4796protected:
    4897  RAcqMemZoneMgr& memgr;
    4998  uint_4 nmax_;  // Nombre maxi de blocs MemZone traites
     99  BRDataFmtConv swapall_;  // select data swap/format conversion for BRPaquet
    50100  bool stop_; 
    51   string path_; 
     101  unsigned int sizeFr_ ;
     102  PCIEWrapper& pciw_;
     103  uint_4 packSize_;
    52104};
    53105
    54 
    55106#endif
Note: See TracChangeset for help on using the changeset viewer.