| 1 | #ifndef  RACQUPROC_H_SEEN
 | 
|---|
| 2 | #define  RACQUPROC_H_SEEN
 | 
|---|
| 3 | 
 | 
|---|
| 4 | //----------------------------------------------------------------
 | 
|---|
| 5 | // ---- classe de thread de traitememt  acquisition BAORadio -----
 | 
|---|
| 6 | // LAL -      R. Ansari - 2008-2010
 | 
|---|
| 7 | //  A/ Juin 2008 - Juin 2009 
 | 
|---|
| 8 | //       Classes DataProc, DataProc2C, DataProcFFT2C avec des 
 | 
|---|
| 9 | //       threads de traitement mono-fibre
 | 
|---|
| 10 | //  B/ Novembre 2009 
 | 
|---|
| 11 | //    MonitorProc : Classe de traitement pour monitoring multifibres
 | 
|---|
| 12 | //----------------------------------------------------------------
 | 
|---|
| 13 | 
 | 
|---|
| 14 | 
 | 
|---|
| 15 | #include "racqumem.h"
 | 
|---|
| 16 | #include <string>
 | 
|---|
| 17 | #include <vector>
 | 
|---|
| 18 | #include <iostream>
 | 
|---|
| 19 | #include "sopnamsp.h"
 | 
|---|
| 20 | #include "zthread.h"
 | 
|---|
| 21 | #include "tmatrix.h"
 | 
|---|
| 22 | 
 | 
|---|
| 23 | #include "brtypes.h"
 | 
|---|
| 24 | #include "brparam.h"
 | 
|---|
| 25 | 
 | 
|---|
| 26 | using namespace std;
 | 
|---|
| 27 | 
 | 
|---|
| 28 | // Quelques definitions globales
 | 
|---|
| 29 | // Nombre maximum de fibres geres par les classes MonitorProc
 | 
|---|
| 30 | #ifndef MAXNBFIB
 | 
|---|
| 31 | #define MAXNBFIB  32   
 | 
|---|
| 32 | #endif
 | 
|---|
| 33 | 
 | 
|---|
| 34 | //---------------------------------------------------------------------
 | 
|---|
| 35 | // Classe thread de traitement/monitoring multifibre Raw/FFT 
 | 
|---|
| 36 | //---------------------------------------------------------------------
 | 
|---|
| 37 | class MonitorProc : public ZThread {
 | 
|---|
| 38 | public: 
 | 
|---|
| 39 |   MonitorProc(RAcqMemZoneMgr& mem);
 | 
|---|
| 40 |   virtual ~MonitorProc();
 | 
|---|
| 41 |   MemZStatus SetMemZAction(MemZaction mmact=MemZA_Proc);
 | 
|---|
| 42 |   virtual void run(); 
 | 
|---|
| 43 |   void Stop();
 | 
|---|
| 44 |   inline void STOP() { stop_ = true; }  
 | 
|---|
| 45 | protected:
 | 
|---|
| 46 |   int procData2C(ofstream& logf);
 | 
|---|
| 47 |   int procData1C(ofstream& logf);
 | 
|---|
| 48 |   int CheckFrameCounters();
 | 
|---|
| 49 | 
 | 
|---|
| 50 |   RAcqMemZoneMgr& memgr;
 | 
|---|
| 51 |   MemZaction mmact_;    // Definition de l'action sur les paquets (defaut=MemZA_Proc)
 | 
|---|
| 52 |   MemZStatus mmsta_;    // Statut associe a mmact_ (defaut=MemZS_Proc)
 | 
|---|
| 53 |   BRParList par_;
 | 
|---|
| 54 |   bool stop_;  
 | 
|---|
| 55 |   uint_4 nmax_;  // Nombre maxi de blocs MemZone traites
 | 
|---|
| 56 |   uint_4 step_;  // 1/step_ paquet traite ds chaque bloc
 | 
|---|
| 57 |   uint_4 nmean_;  // Nombre de blocs pour le calcul des moyennes 
 | 
|---|
| 58 |   string path_;
 | 
|---|
| 59 |   uint_4 nfiles_;
 | 
|---|
| 60 |   TMatrix<r_4> spectre_;
 | 
|---|
| 61 |   vector<uint_4> nzm_;
 | 
|---|
| 62 |   uint_4 nblocproc_;         // nombre total de bloc MemMgr traites 
 | 
|---|
| 63 |   uint_8 nprocpaq_;          // nombre de paquets traites entre deux mises a zero
 | 
|---|
| 64 |   uint_8 npaqsamefc_;        // nombre de paquets avec meme framecounter  entre deux mises a zero
 | 
|---|
| 65 |   uint_8 totnprocpaq_;       // nombre de paquets traites entre deux mises a zero
 | 
|---|
| 66 |   uint_8 totnpaqsamefc_;     // nombre de paquets avec meme framecounter  entre deux mises a zero
 | 
|---|
| 67 |   TMatrix<uint_8> curfc_;    // Numeros de FrameCounter dans le bloc
 | 
|---|
| 68 |   TMatrix<uint_1> cpaqok_;   // Paquets OK ou pas dans le bloc
 | 
|---|
| 69 | };
 | 
|---|
| 70 | 
 | 
|---|
| 71 | 
 | 
|---|
| 72 | //-------------------------------------------------------------------
 | 
|---|
| 73 | //--------  Premieres version - pour tmtacq.cc 
 | 
|---|
| 74 | //-------------------------------------------------------------------
 | 
|---|
| 75 | //-------------------------------------------------------------------
 | 
|---|
| 76 | // Classe thread de traitement avec 1 voie par frame (donnees brutes)
 | 
|---|
| 77 | //-------------------------------------------------------------------
 | 
|---|
| 78 | class DataProc : public ZThread {
 | 
|---|
| 79 | public: 
 | 
|---|
| 80 |   DataProc(RAcqMemZoneMgr& mem, string& path, uint_4 nmean=1, uint_4 step=1, uint_4 nmax=100);
 | 
|---|
| 81 |   virtual void run(); 
 | 
|---|
| 82 |   void Stop();
 | 
|---|
| 83 |   inline void STOP() { stop_ = true; }  
 | 
|---|
| 84 | 
 | 
|---|
| 85 | protected:
 | 
|---|
| 86 |   RAcqMemZoneMgr& memgr;
 | 
|---|
| 87 |   bool stop_;  
 | 
|---|
| 88 |   uint_4 nmax_;  // Nombre maxi de blocs MemZone traites
 | 
|---|
| 89 |   uint_4 step_;  // 1/step_ frame traite ds chaque bloc
 | 
|---|
| 90 |   uint_4 nmean_;  // Nombre de blocs pour le calcul des moyennes 
 | 
|---|
| 91 |   string path_;  
 | 
|---|
| 92 |   struct sigaction act; 
 | 
|---|
| 93 | };
 | 
|---|
| 94 | 
 | 
|---|
| 95 | //---------------------------------------------------------------------
 | 
|---|
| 96 | // Classe thread de traitement avec 2 voies par frame (donnees brutes)
 | 
|---|
| 97 | //---------------------------------------------------------------------
 | 
|---|
| 98 | class DataProc2C : public ZThread {
 | 
|---|
| 99 | public: 
 | 
|---|
| 100 |   DataProc2C(RAcqMemZoneMgr& mem, string& path, uint_4 nmean=1, uint_4 step=1, uint_4 nmax=100);
 | 
|---|
| 101 |   virtual void run(); 
 | 
|---|
| 102 |   void Stop();
 | 
|---|
| 103 |   inline void STOP() { stop_ = true; }  
 | 
|---|
| 104 | protected:
 | 
|---|
| 105 |   RAcqMemZoneMgr& memgr;
 | 
|---|
| 106 |   bool stop_;  
 | 
|---|
| 107 |   uint_4 nmax_;  // Nombre maxi de blocs MemZone traites
 | 
|---|
| 108 |   uint_4 step_;  // 1/step_ frame traite ds chaque bloc
 | 
|---|
| 109 |   uint_4 nmean_;  // Nombre de blocs pour le calcul des moyennes 
 | 
|---|
| 110 |   string path_;  
 | 
|---|
| 111 | };
 | 
|---|
| 112 | 
 | 
|---|
| 113 | //---------------------------------------------------------------------
 | 
|---|
| 114 | // Classe thread de traitement donnees FFT avec 2 voies par frame 
 | 
|---|
| 115 | //---------------------------------------------------------------------
 | 
|---|
| 116 | class DataProcFFT2C : public ZThread {
 | 
|---|
| 117 | public: 
 | 
|---|
| 118 |   DataProcFFT2C(RAcqMemZoneMgr& mem, string& path, uint_4 nmean=1, uint_4 step=1, uint_4 nmax=100);
 | 
|---|
| 119 |   virtual void run(); 
 | 
|---|
| 120 |   void Stop();
 | 
|---|
| 121 |   inline void STOP() { stop_ = true; }  
 | 
|---|
| 122 | protected:
 | 
|---|
| 123 |   RAcqMemZoneMgr& memgr;
 | 
|---|
| 124 |   bool stop_;  
 | 
|---|
| 125 |   uint_4 nmax_;  // Nombre maxi de blocs MemZone traites
 | 
|---|
| 126 |   uint_4 step_;  // 1/step_ frame traite ds chaque bloc
 | 
|---|
| 127 |   uint_4 nmean_;  // Nombre de blocs pour le calcul des moyennes 
 | 
|---|
| 128 |   string path_;  
 | 
|---|
| 129 | };
 | 
|---|
| 130 | 
 | 
|---|
| 131 | #endif
 | 
|---|