Changeset 3623 in Sophya for trunk/AddOn/TAcq/racqurw.h
- Timestamp:
- May 22, 2009, 9:59:38 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/racqurw.h
r3538 r3623 14 14 #include "sopnamsp.h" 15 15 #include "zthread.h" 16 #include "pciewrap.h" 16 17 17 18 #include "brtypes.h" 19 #include "brpaqu.h" 18 20 19 21 using namespace std; … … 27 29 class PCIEReader : public ZThread { 28 30 public: 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); 30 33 virtual void run(); 34 void Stop(); 31 35 inline void STOP() { stop_ = true; } 36 32 37 protected: 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 33 48 RAcqMemZoneMgr& memgr; 34 49 uint_4 nmax_; // Nombre maxi de blocs MemZone traites 50 BRDataFmtConv swapall_; // select data swap/format conversion for BRPaquet 35 51 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 36 60 }; 37 61 … … 42 66 class DataSaver : public ZThread { 43 67 public: 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 45 70 virtual void run(); 71 void Stop(); 72 inline void STOP() { stop_ = true; } 73 protected: 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 89 class PCIEReaderChecker : public ZThread { 90 public: 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(); 46 95 inline void STOP() { stop_ = true; } 47 96 protected: 48 97 RAcqMemZoneMgr& memgr; 49 98 uint_4 nmax_; // Nombre maxi de blocs MemZone traites 99 BRDataFmtConv swapall_; // select data swap/format conversion for BRPaquet 50 100 bool stop_; 51 string path_; 101 unsigned int sizeFr_ ; 102 PCIEWrapper& pciw_; 103 uint_4 packSize_; 52 104 }; 53 105 54 55 106 #endif
Note:
See TracChangeset
for help on using the changeset viewer.