source: Sophya/trunk/AddOn/TAcq/racquproc.h@ 3774

Last change on this file since 3774 was 3681, checked in by ansari, 16 years ago

Ajout classe de traitement en ligne (monitoring) MonitorProc , Reza 20/11/2009

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