Changeset 3658 in Sophya for trunk/AddOn/TAcq/racqurw.h
- Timestamp:
- Oct 18, 2009, 11:10:33 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/racqurw.h
r3628 r3658 22 22 23 23 24 // Quelques definitions globales 25 // Nombre maximum de fibres geres par les classes MultiReader / MultiDiskWriter 26 #define MAXNBFIB 4 24 27 25 28 //------------------------------------------------------- … … 89 92 class PCIEReaderChecker : public ZThread { 90 93 public: 91 PCIEReaderChecker( PCIEWrapperInterface &pciw , uint_4 sizeFrame,uint_4 paqSize ,RAcqMemZoneMgr& mem,94 PCIEReaderChecker( PCIEWrapperInterface &pciw , uint_4 sizeFrame,uint_4 paqSize, RAcqMemZoneMgr& mem, 92 95 uint_4 nmax=100, BRDataFmtConv swapall=BR_SwapAll); 93 96 virtual void run(); … … 103 106 uint_4 packSize_; 104 107 }; 108 //------------------------------------------------------------------ 109 // Classe thread de lecture PCI-Express multi fibre (ou multi DMA) 110 //------------------------------------------------------------------ 111 112 class PCIEMultiReader : public ZThread { 113 public: 114 PCIEMultiReader( vector<PCIEWrapperInterface*> vec_pciw , uint_4 sizeFrame,uint_4 paqSize, RAcqMemZoneMgr& mem, 115 uint_4 nmax=100, BRDataFmtConv swapall=BR_SwapAll,int binMin=0, int nbBin=0); 116 virtual void run(); 117 void Stop(); 118 inline void STOP() { stop_ = true; } 119 120 protected: 121 // Permet d'avancer d'un paquet dans la zone - renvoie true si probleme 122 inline bool MoveToNextTarget() { 123 if ((mmbuf_ == NULL )||(targ_npaq_ >= max_targ_npaq)) 124 if (MZoneManage()) return true; 125 targ_npaq_++; 126 return false; 127 } 128 inline Byte* GetPaquetTarget(int numfib) { 129 if ((mmbufib_[numfib] == NULL )||(targ_npaq_ > max_targ_npaq)||(targ_npaq_ == 0)) return NULL; 130 Byte* rb=mmbufib_[numfib]+(targ_npaq_-1)*packSizeInMgr_; 131 return rb; 132 } 133 bool MZoneManage(bool clean=false); // Renvoie true si probleme 134 135 RAcqMemZoneMgr& memgr; 136 uint_4 nmax_; // Nombre maxi de blocs MemZone traites 137 BRDataFmtConv swapall_; // select data swap/format conversion for BRPaquet 138 bool stop_; 139 unsigned int sizeFr_ ; 140 vector<PCIEWrapperInterface *> vec_pciw_; 141 uint_4 packSize_; 142 uint_4 packSizeInMgr_; 143 uint_4 nbDma_; 144 int nbBin_; 145 int binMin_; 146 int mid_; // Identificateur zone memoire 147 uint_4 targ_npaq_; // Numero de paquet dans une seule zone memoire 148 uint_4 max_targ_npaq; // = mmgr.NbPaquets() = Max de targ_npaq_ 149 Byte* mmbuf_; // Pointeur zone memoire rendu par RAcqMemZoneMgr 150 Byte* mmbufib_[MAXNBFIB]; // Pointeurs zone memoire de chaque fibre rendu par RAcqMemZoneMgr 151 152 }; 153 154 155 156 //---------------------------------------------------------------------------------------- 157 // Classe thread de sauvegarde sur fichiers - gerant plusieurs fibres dans RAcqMemZoneMgr 158 //---------------------------------------------------------------------------------------- 159 160 class MultiDataSaver : public ZThread { 161 public: 162 MultiDataSaver(RAcqMemZoneMgr& mem, string& path, uint_4 nfiles=100, uint_4 nblocperfile=1, bool savesig=true); 163 164 virtual void run(); 165 void Stop(); 166 inline void STOP() { stop_ = true; } 167 protected: 168 RAcqMemZoneMgr& memgr; 169 uint_4 nfiles_; // Nombre maxi de fichiers cree 170 uint_4 nblocperfile_; // Nombre de bloc (zone memoire) mis dans un fichier 171 uint_4 nmax_; // Nombre maxi de blocs MemZone traites = nfiles * nblocperfile_ 172 bool savesig_; // Si false, pas d'ecriture des fichiers FITS du signal 173 bool stop_; 174 string path_; 175 struct sigaction act; 176 177 }; 105 178 106 179 #endif
Note:
See TracChangeset
for help on using the changeset viewer.