source: Sophya/trunk/AddOn/TAcq/brparam.h@ 3673

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

Suite corrections diverses - mfacq.cc OK, Reza

File size: 7.9 KB
Line 
1#ifndef BRPARAM_H
2#define BRPARAM_H
3
4//---------------------------------------------------------------
5// Logiciels d'acquisition BAORadio
6// LAL - 2009 - 2010 , R. Ansari, M.Taurigna
7//---------------------------------------------------------------
8
9//---------------------------------------------------------------
10// Classes ADCBoardDesc , BRParList , BRConfList , BRAcqConfig
11// + ADCBoardDesc : Description d'une carte ADC
12// + BRParList : Liste de parametres pour un run d'acquisition
13// + BRConfList : Liste des parametres caracterisant une configuration
14// (nombre de cartes, versions firwares ...)
15// + BRAcqConfig : Classe donnant acces a un objet global BRParList et
16// un objet global BRConfList
17//---------------------------------------------------------------
18
19#include "machdefs.h"
20#include <string>
21#include <vector>
22#include <iostream>
23#include "brpaqu.h"
24#include "datacards.h"
25#include "bracqvers.h"
26
27using namespace std;
28using namespace SOPHYA;
29
30//-----------------------------------------------------------------------------
31//---- Classe Caracterisant un board ADC
32class ADCBoardDesc {
33public:
34 ADCBoardDesc(int id, string sbid, string cyc_firmw, string str1_firmw, string str2_firmw);
35 ADCBoardDesc(ADCBoardDesc const& bdes);
36
37 inline int& getId() { return id_; }
38 inline string& getSId() { return sbid_; }
39 inline string& CycloneFirmwareId() { return cyclone_firmware_; }
40 inline string& Stratix1FirmwareId() { return stratix1_firmware_; }
41 inline string& Stratix2FirmwareId() { return stratix2_firmware_; }
42 ostream& Print(ostream& os);
43
44 ADCBoardDesc& Set(ADCBoardDesc const & bdes);
45 inline ADCBoardDesc& operator = (ADCBoardDesc const & bdes) { return Set(bdes); }
46protected:
47 int id_;
48 string sbid_;
49 string cyclone_firmware_;
50 string stratix1_firmware_;
51 string stratix2_firmware_;
52};
53
54//-----------------------------------------------------------------------------
55//---- Classe de liste des parametres de configuration BAORadio
56class BRConfList {
57public:
58 BRConfList();
59 BRConfList(string basedir);
60 BRConfList(string basedir, vector<ADCBoardDesc> boards);
61 BRConfList(BRConfList const & cf);
62 void Set(BRConfList const & cf);
63 ostream& Print(ostream& os) ;
64 void ReadDCFile(string file);
65 inline string& BaseDirectory() { return basedir_; }
66//.......................................
67 string basedir_;
68 vector<ADCBoardDesc> boards_;
69};
70
71#define PMAXNBFIBRES 6
72
73//-----------------------------------------------------------------------------
74//---- Classe de liste des parametres d'acquisition BAORadio
75class BRParList {
76public:
77 BRParList (string fibres="1", unsigned int szframe= 16424, unsigned int nframeDMA = 32,
78 int nfiles=1, string acqmode="fft2c", int nblocfile=10,
79 int nmaxpr = 0, string outpath="TstAcq",
80 uint_4 nzon = 4, uint_4 npaqzon = 128, bool fgcntlc=false);
81
82 BRParList(BRParList const & p);
83
84 void Set(BRParList const & p);
85 ostream& Print(ostream& os) ;
86 void ReadDCFile(string file);
87
88 // Nombre de fibres
89 inline int NFibers() { return NbFibers; }
90 // Taille des operations DMA (en octets)
91 inline uint_4 DMASizeBytes() { return nbFrameDMA*1024; }
92 // Taille des operations DMA (en KB=1024 bytes)
93 inline uint_4 DMASizeKB() { return nbFrameDMA; }
94 // Taille des paquets recus sur PCIExpress
95 inline uint_4 RecvPaquetSize() { return PaqSize; }
96 // Taille des paquets apres reduction eventuelle (donc ds memory manager)
97 inline uint_4 MMgrPaquetSize() { return (fgreducpsize)?redpqsize:PaqSize; }
98 // Operation de conversion/mise en ordre des donnees a la reception
99 inline BRDataFmtConv GetDataConvFg() { return swapall; };
100
101 // Nombre maximum de fichiers enregistres
102 inline uint_4 MaxNbFiles() { return NbFiles; }
103 // Nombre de blocs MMgr dans chaque fichiers
104 inline uint_4 BlocPerFile() { return NBlocPerFile; }
105 // Nombre maximum de blocs MMgr traites
106 inline uint_4 MaxNbBlocs() { return NbFiles*NBlocPerFile; }
107
108 //..........................................
109 void Decode();
110
111 string AcqMode; // Mode d'acquisition (conditionne la mise en ordre/conversion des donnees lues par DMA
112 string FiberListS ; // liste des fibres a utiliser 1,3,4 par exemple
113 int NbFibers; // liste des fibres a utiliser 1,3,4 par exemple
114 int FiberNum[PMAXNBFIBRES];
115
116 string OutPathName; // directory de base
117 string ProcPathName;
118 unsigned int PaqSize ; // taille des paquets ou sizeFrame
119 unsigned int nbFrameDMA ; // taille du dma en multiple de 2 (2 a 56)
120 int NbFiles; // nombre de fichier produits
121 int NBlocPerFile; // nombre de bloc par fichier
122 int NMaxProc; // Nombre de blocs traites par le thread de calcul
123 // Gestionnaire zones memoire
124 uint_4 nZones; // Nombre de zones memoires
125 uint_4 nPaqZone; // 128 Paquets / zone memoire - valeur par defaut
126
127 bool fg_hard_ctrlc ; // autorise le CtrlC si true
128
129 bool savesigfits ; // si true on prduit de sfichier fits
130 bool fgnulldev4fits ;
131
132 BRDataFmtConv swapall ; // type de l'acquisition voir brpaqu.h
133
134 // ---- Pour gerer la reduction des tailles de paquets
135 bool fgreducpsize; // true -> reduction taille des paquets
136 BRPaqReducAction pqreducmode;
137 uint_4 redpqsize;
138 uint_4 reducoffset;
139
140 // Pour des tests de performances ou sans carte ADC (pattern)
141 bool monothr ; // pour les test mono thread
142 bool activate_pattern; // true -> on active le pattern du firmware au lieu de la fibre
143
144 double nopciLossRate; // Utilise avec pour les tests sans carte pciexpress TestPCIWrapperNODMA
145};
146
147//-----------------------------------------------------------------------------
148//---- Classe de gestion des parametres d'acquisition -
149//---- Utilise l'instance global de BRParList
150//-----------------------------------------------------------------------------
151
152class BRAcqConfig {
153 public:
154
155 BRAcqConfig();
156
157 inline void ReadParamFile(string file)
158 { param_->ReadDCFile(file); }
159 inline void Set(BRParList& par)
160 { param_->Set(par); }
161 inline void ReadConfigFile(string file)
162 { config_->ReadDCFile(file); }
163 inline void Set(BRConfList& conf)
164 { config_->Set(conf); }
165
166 ostream& Print(ostream& os);
167
168 int CreateOutputDirectories();
169
170 static inline double AcqVersion() { return BAOR_ACQ_VER ; }
171 static inline const char* AcqVersionS() { return BAOR_ACQ_VER_STR ; }
172
173 inline BRParList& GetParams() { return (*param_) ;};
174 inline BRConfList& GetConfig() { return (*config_) ;};
175
176 inline BRDataFmtConv GetSwapall() { return param_->swapall; };
177 inline bool GetPattern() { return param_->activate_pattern; };
178 inline bool GetMonothr() { return param_->monothr; };
179 inline bool GetSaveFits() { return param_->savesigfits; };
180 inline bool GetFileDevNull() { return param_->fgnulldev4fits; };
181
182 // Nombre de fibres
183 inline int NFibers() { return param_->NbFibers; }
184 // Taille des operations DMA (en octets)
185 inline uint_4 DMASizeBytes() { return param_->DMASizeBytes(); }
186 // Taille des operations DMA (en KB=1024 bytes)
187 inline uint_4 DMASizeKB() { return param_->DMASizeKB(); }
188 // Taille des paquets recus sur PCIExpress
189 inline uint_4 RecvPaquetSize() { return param_->RecvPaquetSize(); }
190 // Taille des paquets apres reduction eventuelle (donc ds memory manager)
191 inline uint_4 MMgrPaquetSize() { return param_->MMgrPaquetSize(); }
192 // Operation de conversion/mise en ordre des donnees a la reception
193 inline BRDataFmtConv GetDataConvFg() { return param_->GetDataConvFg(); };
194
195 // Nombre maximum de fichiers enregistres
196 inline uint_4 MaxNbFiles() { return param_->MaxNbFiles(); }
197 // Nombre de blocs MMgr dans chaque fichiers
198 inline uint_4 BlocPerFile() { return param_->BlocPerFile(); }
199 // Nombre maximum de blocs MMgr traites
200 inline uint_4 MaxNbBlocs() { return param_->MaxNbBlocs(); }
201
202 // repertoire d'acquisition
203 inline string OutputDirectory() { return (config_->BaseDirectory()+param_->OutPathName); }
204 string OutputDirectoryFib(int fib);
205
206 protected:
207 static BRParList* param_;
208 static BRConfList* config_;
209};
210
211
212#endif
Note: See TracBrowser for help on using the repository browser.