Changeset 3671 in Sophya
- Timestamp:
- Nov 13, 2009, 11:54:04 AM (16 years ago)
- Location:
- trunk/AddOn/TAcq
- Files:
-
- 5 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/brpaqu.cc
r3659 r3671 3 3 #include "brpaqu.h" 4 4 5 /* ---------------------------------------- 6 Projet BAORadio --- LAL - 2008-2010 7 R. Ansari , M.Taurigna 8 ------------------------------------------- */ 9 10 /* --Methode-- */ 11 BAORadioException::BAORadioException(const char * m) throw() 12 { 13 if (m!=NULL) { 14 strncpy(msg_, m, BREX_MAXMSGLEN-1); 15 msg_[BREX_MAXMSGLEN-1] = '\0'; 16 } 17 else msg_[0] = '\0'; 18 } 19 /* --Methode-- */ 20 BAORadioException::BAORadioException(const string& m) throw() 21 { 22 strncpy(msg_, m.c_str(), BREX_MAXMSGLEN-1); 23 msg_[BREX_MAXMSGLEN-1] = '\0'; 24 } 25 26 /* --Methode-- */ 27 BAORadioException::~BAORadioException() throw() 28 { 29 } 30 31 /* --Methode-- */ 32 const char* BAORadioException::what() const throw() 33 { 34 return msg_; 35 } 36 37 /* --Methode-- */ 38 string const BAORadioException::Msg() const 39 { 40 return (string(msg_)); 41 } 42 43 //////////////////////////////////////////////////////////////// 44 //////////////////////////////////////////////////////////////// 5 45 6 46 static inline void bswap4(void* p) … … 14 54 15 55 /* --Methode__ */ 16 BRPaquet::BRPaquet(Byte* src, Byte* dst, int paqsz, BRDataFmtConv fg swap,int binMin,int nbBin)56 BRPaquet::BRPaquet(Byte* src, Byte* dst, int paqsz, BRDataFmtConv fgconv) 17 57 // swapall = true -> on swap tout le paquet, sinon swap entete seulement 18 58 { 19 59 dst_ = dst; 20 60 sz_ = paqsz; 21 if ((src == NULL) || (dst == NULL)) return; 22 // Il faut mettre une protection (throw) si dst==NULL ou sz==0 61 /* 62 if ((dst == NULL) || (paqsz<=(BRHDRSIZE+BRTRLSIZE)) ) 63 throw BAORadioException("BRPaquet::BRPaquet(src,dst...) NULL src or dst pointer OR paqsz<HDR+TRLSize"); 64 */ 65 if ((dst==NULL)||(src==NULL)) return; 23 66 24 67 UInt32* src32 = (UInt32*)src; 25 68 UInt32* dst32 = (UInt32*)dst; 26 Byte* tmp = new Byte[sz_];27 69 28 switch ( fgswap ) { 70 71 switch ( fgconv ) { 29 72 case BR_DoNothing : // rien a faire 30 73 break; … … 32 75 memcpy(dst_, src, sz_); 33 76 break; 34 case BR_Copy_Reduc : // copie directe35 memcpy(dst_, src, HeaderSize());36 37 memcpy(dst_+ HeaderSize(), src+(binMin+ HeaderSize()), nbBin);38 memcpy(dst_+ (HeaderSize()+ nbBin ), src+(binMin+ HeaderSize()+sz_/2), nbBin);39 memcpy(dst_+( HeaderSize()+( 2* nbBin)),src+(HeaderSize()+DataSize()),TrailerSize());40 41 SetPaqLen( nbBin/2);42 break;43 44 77 case BR_Swap32 : // On swappe toutes les donnees du paquet 45 78 // les bytes sont dans l'ordre par paquet de 4 octets (Int32) , les deux Int32 de 46 // On copie la zone donnees en faisant un byte-swap correspondant a 8 octets (4->8 Reza/firmware SGDMA) 79 // On copie la zone donnees en faisant un byte-swap correspondant a 8 octets (4->8 Reza/firmware SGDMA) 47 80 for(int ka=0; ka<sz_/4; ka+=2) { 48 81 dst32[ka] = src32[ka+1]; … … 51 84 break; 52 85 case BR_SwapAll: 53 for(int ka=0; ka<sz_; ka+=8) { 86 // Byte swap complet sur 8 bytes 87 for(int ka=0; ka<sz_; ka+=8) { 54 88 for(int kb=0; kb<4; kb++) { 55 89 dst_[ka+kb] = src[ka+3-kb+4]; … … 57 91 } 58 92 } 59 for(int ka=HeaderSize()+DataSize(); ka<sz_; ka+=8) { 93 break; 94 case BR_CopyHDR: 95 for(int ka=0; ka<BRHDRSIZE/4; ka++) dst32[ka] = src32[ka]; 96 for(int ka=(HeaderSize()+DataSize())/4;ka < sz_/4; ka++) dst32[ka] = src32[ka]; 97 break; 98 case BR_SwapHDR : 99 // ByteSwap 8 (4->8 Reza/firmware SGDMA) de l'enete 100 for(int ka=0; ka<BRHDRSIZE; ka+=8) { 60 101 for(int kb=0; kb<4; kb++) { 61 102 dst_[ka+kb] = src[ka+3-kb+4]; … … 63 104 } 64 105 } 65 break; 66 case BR_SwapHDR : 106 // Byte swap (sur 8 octets) du trailer 107 for(int ka=HeaderSize()+DataSize(); ka<sz_; ka+=8) { 108 for(int kb=0; kb<4; kb++) { 109 dst_[ka+kb] = src[ka+3-kb+4]; 110 dst_[ka+kb+4] = src[ka+3-kb]; 111 } 112 } 113 break; 114 115 // -------------------- 116 // --- Copie/remise en ordre des donnees FFT 67 117 case BR_FFTOneChan : 68 118 case BR_FFTTwoChan : 119 // copie du header uniquement 120 for(int ka=0; ka<BRHDRSIZE/4; ka++) dst32[ka] = src32[ka]; 121 // on reoordonne les coeff FFT (pas de swap) 122 if (fgconv == BR_FFTOneChan) 123 ReorderFFTData((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()); 124 else { 125 ReorderFFTData((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()/2); 126 ReorderFFTData((SByte*)(src+HeaderSize()+DataSize()/2), (SByte*)(dst_+HeaderSize()+DataSize()/2), DataSize()/2); 127 } 128 // copie du trailler uniquement : 129 for(int ka=(HeaderSize()+DataSize())/4;ka < sz_/4; ka++) dst32[ka] = src32[ka]; 130 break; 131 132 case BR_FFTOneChanSwapAll : 133 case BR_FFTTwoChanSwapAll : 69 134 // Byte swap (sur 8 octets) de l'entete 70 135 // ByteSwap 8 (4->8 Reza/firmware SGDMA) de l'enete … … 75 140 } 76 141 } 77 78 142 // on reoordonne les coeff FFT et on swappe en mem temps (Byte-swap sur 8 octets) 79 if (fgswap == BR_FFTOneChan) ReorderFFTData((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()); 80 else if (fgswap == BR_FFTTwoChan) { 81 ReorderFFTData((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()/2); 82 ReorderFFTData((SByte*)(src+HeaderSize()+DataSize()/2), (SByte*)(dst_+HeaderSize()+DataSize()/2), DataSize()/2); 143 if (fgconv == BR_FFTOneChanSwapAll) 144 ReorderFFTDataSwapAll((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()); 145 else { 146 ReorderFFTDataSwapAll((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()/2); 147 ReorderFFTDataSwapAll((SByte*)(src+HeaderSize()+DataSize()/2), (SByte*)(dst_+HeaderSize()+DataSize()/2), DataSize()/2); 83 148 } 84 149 // Byte swap (sur 8 octets) du trailer … … 91 156 break; 92 157 93 case BR_FFTOneChan 32 :94 case BR_FFTTwoChan 32 :158 case BR_FFTOneChanSwap32 : 159 case BR_FFTTwoChanSwap32 : 95 160 // swap du header uniquement : Echange de deux mots de 4 octets 96 161 for(int ka=0; ka<BRHDRSIZE/4; ka+=2) { … … 98 163 dst32[ka+1] = src32[ka]; 99 164 } 100 101 165 // on reoordonne et on swappe en mem temps (Echange de deux mots de 4 octets) 102 if (fgswap == BR_FFTOneChan32) ReorderFFTData32((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()); 103 else if (fgswap == BR_FFTTwoChan32) { 104 ReorderFFTData32((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()/2); 105 ReorderFFTData32((SByte*)(src+HeaderSize()+DataSize()/2), (SByte*)(dst_+HeaderSize()+DataSize()/2), DataSize()/2); 166 if (fgconv == BR_FFTOneChanSwap32) 167 ReorderFFTDataSwap32((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()); 168 else { 169 ReorderFFTDataSwap32((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()/2); 170 ReorderFFTDataSwap32((SByte*)(src+HeaderSize()+DataSize()/2), (SByte*)(dst_+HeaderSize()+DataSize()/2), DataSize()/2); 106 171 } 107 172 // swap du trailler uniquement : Echange de deux mots de 4 octets … … 111 176 } 112 177 break; 113 case BR_FFTOneChanNoSwap : 114 case BR_FFTTwoChanNoSwap : 115 // copie du header uniquement 116 for(int ka=0; ka<BRHDRSIZE/4; ka++) dst32[ka] = src32[ka]; 117 118 //DEL on a plus de swapdonc il faut copier dans dst 119 //DEL memcpy(dst_, src, sz_); 120 121 // on reoordonne les coeff FFT (pas de swap) 122 if (fgswap == BR_FFTOneChanNoSwap) ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()); 123 else if (fgswap == BR_FFTTwoChanNoSwap) { 124 ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()/2); 125 ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()+DataSize()/2), (SByte*)(dst_+HeaderSize()+DataSize()/2), DataSize()/2); 126 } 127 // copie du trailler uniquement : 128 for(int ka=(HeaderSize()+DataSize())/4;ka < sz_/4; ka++) dst32[ka] = src32[ka]; 129 break; 130 case BR_CpHdrTrl : 131 for(int ka=0; ka<BRHDRSIZE/4; ka++) dst32[ka] = src32[ka]; 132 for(int ka=(HeaderSize()+DataSize())/4;ka < sz_/4; ka++) dst32[ka] = src32[ka]; 133 break; 134 135 case BR_FFTOneChanNoSwapReduct : 136 case BR_FFTTwoChanNoSwapReduct : 137 // copie du header uniquement 138 139 for(int ka=0; ka<BRHDRSIZE/4; ka++) dst32[ka] = src32[ka]; 140 141 //DEL on a plus de swapdonc il faut copier dans dst 142 //DEL memcpy(dst_, src, sz_); 143 144 // on reoordonne les coeff FFT (pas de swap) 145 if (fgswap == BR_FFTOneChanNoSwap) ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()), (SByte*)(tmp+HeaderSize()), DataSize()); 146 else if (fgswap == BR_FFTTwoChanNoSwap) { 147 ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()), (SByte*)(tmp+HeaderSize()), DataSize()/2); 148 ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()+DataSize()/2), (SByte*)(tmp+HeaderSize()+DataSize()/2), DataSize()/2); 149 } 150 memcpy(tmp+ HeaderSize(), src+(binMin+ HeaderSize()), nbBin); 151 memcpy(tmp+ (HeaderSize()+ nbBin ), src+(binMin+ HeaderSize()+sz_/2), nbBin); 152 memcpy(tmp+( HeaderSize()+( 2* nbBin)),src+(HeaderSize()+DataSize()),TrailerSize()); 153 memcpy(dst_+ HeaderSize(),tmp+ HeaderSize(),( 2* nbBin)+TrailerSize()); 154 SetPaqLen( nbBin/2); 155 156 // copie du trailler uniquement : 157 // for(int ka=(HeaderSize()+DataSize())/4;ka < sz_/4; ka++) dst32[ka] = src32[ka]; 158 break; 178 179 default: 180 // on ne fait rien 181 break; 159 182 } // Fin switch 160 183 161 184 } 162 185 … … 164 187 BRPaquet::BRPaquet(Byte* srcdst, int paqsz) 165 188 { 189 /* 190 if ((srcdst==NULL)||(paqsz<=(BRHDRSIZE+BRTRLSIZE))) 191 throw BAORadioException("BRPaquet::BRPaquet(srcdst) NULL pointer OR paqsz<HDR+TRLSize"); 192 */ 166 193 dst_ = srcdst; 167 194 sz_ = paqsz; 168 // Il faut mettre une protection (throw) si srcdst==NULL ou sz==0 195 } 196 197 /* --Methode__ */ 198 BRPaquet::BRPaquet(int paqsz) 199 { 200 /* 201 if (paqsz<=(BRHDRSIZE+BRTRLSIZE)) 202 throw BAORadioException("BRPaquet::BRPaquet(paqsz) paqsz<HDR+TRLSize"); 203 */ 204 dst_ = NULL; 205 sz_ = paqsz; 206 } 207 208 /* --Methode__ */ 209 void BRPaquet::CopyFrom(BRPaquet& pq, BRPaqReducAction ract, int offset) 210 { 211 if (ract==BR_CopyRA) { 212 if (PaquetSize()!=pq.PaquetSize()) 213 throw BAORadioException("BRPaquet::CopyFrom(BR_CopyRA) - NOT equal paquet size"); 214 memcpy(Begin(), pq.Begin(), PaquetSize()); 215 return; 216 } 217 // Recopie de l'entete HDR et trailer TRL 218 memcpy(Header(), pq.Header(), HeaderSize()); 219 memcpy(Trailer(), pq.Trailer(), TrailerSize()); 220 // Recopie partielle des donnees 221 size_t szc, szcmx; 222 switch (ract) { 223 case BR_OneChanReduc: 224 case BR_OneChanReducK0: 225 szc = DataSize(); 226 szcmx = pq.DataSize()-offset; 227 if (szcmx<szc) szc=szcmx; 228 memcpy(Data1(), pq.Data1(), szc); 229 if (ract==BR_OneChanReducK0) *(Data1C()) = *(pq.Data1C()); // On garde le continu et le nyquist 230 SetPaqLen(szc/4); 231 break; 232 case BR_TwoChanReduc: 233 case BR_TwoChanReducK0: 234 szc = DataSize()/2; 235 szcmx = pq.DataSize()/2-offset; 236 if (szcmx<szc) szc=szcmx; 237 memcpy(Data1(), pq.Data1(), szc); 238 memcpy(Data2(), pq.Data2(), szc); 239 if (ract==BR_TwoChanReducK0) { // On garde le continu et le nyquist 240 *(Data1C()) = *(pq.Data1C()); 241 *(Data2C()) = *(pq.Data2C()); 242 } 243 SetPaqLen(szc/2); 244 break; 245 default: 246 break; 247 } 169 248 } 170 249 … … 294 373 295 374 /* --Methode__ */ 296 void BRPaquet::ReorderFFTData(SByte* src, SByte* dst, int N) 297 { 375 void BRPaquet::ReorderFFTDataSwapAll(SByte* src, SByte* dst, int N) 376 { 377 // Remise en ordre des donnees avec swap complet sur 8 bytes 298 378 // Code recopie depuis /Dev/DisplayData/HistoWindow.cc 299 379 // fonction TraceWind::DisplayBaoDatasFFT() et adapte aux structures BRPaquet et Cie … … 342 422 } 343 423 344 void BRPaquet::ReorderFFTData32(SByte* src, SByte* dst, int N) 345 { 424 /* --Methode__ */ 425 void BRPaquet::ReorderFFTDataSwap32(SByte* src, SByte* dst, int N) 426 { 427 // Remise en ordre avec echange (swap) des mots de 32 bits 346 428 // Code recopie depuis /Dev/DisplayData/HistoWindow.cc 347 429 // fonction TraceWind::DisplayBaoDatasFFT() et adapte aux structures BRPaquet et Cie … … 384 466 return ; 385 467 } 386 void BRPaquet::ReorderFFTDataNoSwap(SByte* src, SByte* dst, int N) 387 { 468 469 /* --Methode__ */ 470 void BRPaquet::ReorderFFTData(SByte* src, SByte* dst, int N) 471 { 472 // Remise en ordre des donnees FFT (sans swap) 388 473 // Code recopie depuis /Dev/DisplayData/HistoWindow.cc 389 474 // fonction TraceWind::DisplayBaoDatasFFT() et adapte aux structures BRPaquet et Cie … … 428 513 429 514 /* --Methode__ */ 430 const char* BRPaquet::FmtConvToString(BRDataFmtConv fg swap)515 const char* BRPaquet::FmtConvToString(BRDataFmtConv fgconv) 431 516 { 432 517 const char * rs=""; 433 switch ( fg swap) {518 switch ( fgconv ) { 434 519 case BR_DoNothing : 435 520 rs = "BR_DoNothing"; … … 441 526 rs = "BR_SwapAll"; 442 527 break; 528 case BR_Swap32 : 529 rs = "BR_Swap32"; 530 break; 531 case BR_CopyHDR : 532 rs = "BR_CopyHDR"; 533 break; 443 534 case BR_SwapHDR : 444 535 rs = "BR_SwapHDR"; … … 450 541 rs = "BR_FFTTwoChan"; 451 542 break; 452 case BR_Swap32 : 453 rs = "BR_Swap32"; 454 break; 455 case BR_FFTOneChan32 : 456 rs = "BR_FFTOneChan32"; 457 break; 458 case BR_FFTTwoChan32 : 459 rs = "BR_FFTTwoChan32"; 460 break; 461 case BR_FFTOneChanNoSwap : 462 rs = "BR_FFTOneChanNoSwap"; 463 break; 464 case BR_FFTTwoChanNoSwap : 465 rs = "BR_FFTTwoChanNoSwap"; 543 case BR_FFTOneChanSwapAll : 544 rs = "BR_FFTOneChanSwapAll"; 545 break; 546 case BR_FFTTwoChanSwapAll : 547 rs = "BR_FFTTwoChanSwapAll"; 548 break; 549 case BR_FFTOneChanSwap32 : 550 rs = "BR_FFTOneChanSwap32"; 551 break; 552 case BR_FFTTwoChanSwap32 : 553 rs = "BR_FFTTwoChanSwap32"; 466 554 break; 467 555 default: … … 476 564 // -------------------------------------------------------------------------- 477 565 566 /* --Methode__ */ 478 567 BRPaqChecker::BRPaqChecker(bool cktrl, int maxprt) 479 568 { … … 490 579 } 491 580 581 /* --Methode__ */ 492 582 BRPaqChecker::~BRPaqChecker() 493 583 { … … 500 590 } 501 591 592 /* --Methode__ */ 502 593 UInt64 BRPaqChecker::DefineTRLTag(UInt32 trl1, UInt32 trl2) 503 594 { … … 506 597 } 507 598 508 599 /* --Methode__ */ 509 600 bool BRPaqChecker::Check(BRPaquet& paq, UInt64& numframe) 510 601 { … … 543 634 } 544 635 636 /* --Methode__ */ 545 637 ostream& BRPaqChecker::Print(ostream& os) const 546 638 { … … 556 648 return os; 557 649 } 650 651 /* --Methode__ */ 652 string BRPaqChecker::Summary(bool detail) const 653 { 654 double meangap = (cnt_saut>0)?((double)lostframes/(double)cnt_saut):0.; 655 double lossrate= (double)lostframes*100./(double)totnframes; 656 char buff[256]; 657 if (detail) 658 sprintf(buff, " TotNPaq= %ld HDR/TRL OK= %ld LostFrames= %ld LossRate= %lg NbGaps= %ld MeanGap= %lg", 659 (long)totnframes, (long)nframeok, (long)lostframes, lossrate, (long)cnt_saut, meangap); 660 else 661 sprintf(buff, "TotNPaq=%ld N_Ok=%ld LossRate=%lg", (long)totnframes, (long)nframeok, lossrate); 662 return buff; 663 } 664 -
trunk/AddOn/TAcq/brpaqu.h
r3659 r3671 9 9 #include <stdio.h> 10 10 #include <iostream> 11 #include <exception> 11 12 #include <string> 12 13 #include "brtypes.h" … … 14 15 15 16 using namespace std; 17 18 // --------------------------------------------------------- 19 // ----- Classe d'exception pour Acquisition BAORadio ------ 20 #define BREX_MAXMSGLEN 160 21 22 class BAORadioException : public std::exception { 23 public: 24 explicit BAORadioException(const char * m) throw() ; 25 explicit BAORadioException(const string& m) throw() ; 26 virtual ~BAORadioException() throw() ; 27 //! Implementation of std::exception what() method, returning the exception message 28 virtual const char* what() const throw(); 29 virtual string const Msg() const ; 30 private: 31 char msg_[BREX_MAXMSGLEN]; 32 }; 33 34 16 35 17 36 // ------------------------------------------------ … … 38 57 39 58 inline double realD() { return (double)(val_)[0]; } 40 59 inline double imagD() { return (double)(val_)[1]; } 41 60 42 61 SByte val_[2]; 43 62 }; 44 63 45 // ------------------------------------------------ 64 // -------------------------------------------------------- 65 // ----- Classe BRPaquet , constante et enum associe ------ 66 // Representation, manipulation des paquets/frames 67 // envoyes par les cartes ADC 68 // -------------------------------------------------------- 46 69 47 70 // OFFSET : au cas ou le firmware reception ajoute des mots avant le header … … 68 91 //#define BRPCOFF 16 69 92 70 enum ChannelID 71 { 72 None=0, 73 Ch1, 74 Ch2, 75 Ch1_2, 76 Ch3, 77 Ch4, 78 Ch3_4 79 }; 80 enum ModeAcq 81 { 82 RawData=1, 83 FFT 84 }; 93 enum ChannelID { None=0, Ch1, Ch2, Ch1_2, Ch3, Ch4, Ch3_4 }; 94 enum ModeAcq { RawData=1, FFT }; 85 95 86 96 // Definition des actions sur la conversion de format (swap...) des donnees arrivant 87 97 enum BRDataFmtConv { 88 BR_DoNothing, 89 BR_Copy, 90 BR_SwapAll, 91 BR_SwapHDR, 92 BR_FFTOneChan, 93 BR_FFTTwoChan, 94 BR_Swap32, 95 BR_FFTOneChan32, 96 BR_FFTTwoChan32, 97 BR_FFTOneChanNoSwap, 98 BR_FFTTwoChanNoSwap, 99 BR_CpHdrTrl, 100 BR_Copy_Reduc, 101 BR_FFTOneChanNoSwapReduct, 102 BR_FFTTwoChanNoSwapReduct 103 }; 104 98 BR_DoNothing, BR_Copy, BR_SwapAll, BR_Swap32, BR_CopyHDR, BR_SwapHDR, 99 BR_FFTOneChan, BR_FFTTwoChan, 100 BR_FFTOneChanSwapAll, BR_FFTTwoChanSwapAll, 101 BR_FFTOneChanSwap32, BR_FFTTwoChanSwap32, 102 }; 103 104 // Definition des action pour recopie de paquet avec reduction de taille de paquet 105 // Copie complete (--> egalite de taille, 1,2 canaux, K0 -> Keep first two bytes (Continu/Nyquist) 106 enum BRPaqReducAction { 107 BR_CopyRA, BR_OneChanReduc, BR_TwoChanReduc, BR_OneChanReducK0, BR_TwoChanReducK0 108 }; 109 110 //---- Classe BRPaquet 105 111 // Structure correspondant a HEADER-DATA-TRAILER 106 112 class BRPaquet { 107 113 public: 108 114 // Cree d'un objet BRPaquet avec copie/swap depuis src -> dst (si src != NULL) 109 BRPaquet(Byte* src, Byte* dst, int paqsz =16424, BRDataFmtConv fgswap=BR_Copy,int minBin=0,int nbBin=0);115 BRPaquet(Byte* src, Byte* dst, int paqsz, BRDataFmtConv fgconv=BR_Copy); 110 116 // Cree d'un objet BRPaquet de taille paqsz sur la zone dst 111 BRPaquet(Byte* srcdst, int paqsz=16424); 117 BRPaquet(Byte* srcdst, int paqsz); 118 BRPaquet(int paqsz); 119 112 120 // ~BRPaquet(); 121 122 // Pour la copie/reduction de taille de paquet 123 void CopyFrom(BRPaquet& pq, BRPaqReducAction ract=BR_CopyRA, int offset=0); 113 124 114 125 // Acces diverses tailles … … 175 186 176 187 // fonction appelee par le constructeur pour reordonner les donnees FFT 188 // --- Remise en ordre avec swap complet sur 8 bytes 189 static void ReorderFFTDataSwapAll(SByte* src, SByte* dst, int sz); 190 // --- Remise en ordre avec echanges des mots de 4 bytes 191 static void ReorderFFTDataSwap32(SByte* src, SByte* dst, int sz); 192 // --- Remise en ordre seulement 177 193 static void ReorderFFTData(SByte* src, SByte* dst, int sz); 178 static void ReorderFFTData32(SByte* src, SByte* dst, int sz); 179 static void ReorderFFTDataNoSwap(SByte* src, SByte* dst, int sz); 180 static const char* FmtConvToString(BRDataFmtConv fgswap); 194 static const char* FmtConvToString(BRDataFmtConv fgconv); 181 195 // protected: 182 196 // donnees membres … … 209 223 ostream & Print(ostream& os) const; 210 224 inline ostream & Print() const { return Print(cout); } 225 // renvoie le resume de la statistique paquets sous forme de chaine 226 string Summary(bool detail=false) const; 211 227 212 228 // Acces aux differents compteurs -
trunk/AddOn/TAcq/makefile
r3658 r3671 6 6 # all : traidio tmtfft tstminifits tbrpaq tpciew tmtacq tstrdfits mfits2spec tsok 7 7 # all : traidio tmtfft tstminifits tmtacq tstrdfits mfits2spec tsok mcrd 8 all : traidio tstminifits tmtacq mfits2spec mcrd svv2mtx tsok8 all : mfacq tmtacq mfits2spec mcrd svv2mtx tsok traidio tstminifits 9 9 10 10 clean : … … 18 18 19 19 ## -------------- 20 mfacq : $(EXE)mfacq 21 echo '---mfacq made' 22 23 $(EXE)mfacq : $(OBJ)mfacq.o $(OBJ)brparam.o $(OBJ)racqumem.o $(OBJ)racqurw.o $(OBJ)racquproc.o \ 24 $(OBJ)brpaqu.o $(OBJ)pciewrap.o $(OBJ)minifits.o 25 $(CXXLINK) -o $(EXE)mfacq $(OBJ)mfacq.o $(OBJ)brparam.o $(OBJ)racqumem.o $(OBJ)racqurw.o \ 26 $(OBJ)racquproc.o $(OBJ)brpaqu.o $(OBJ)pciewrap.o $(OBJ)minifits.o $(SOPHYAALLSLBLIST) 27 28 $(OBJ)mfacq.o : mfacq.cc brparam.h racquproc.h racqurw.h racqumem.h brpaqu.h 29 $(CXXCOMPILE) -c -DNOPCIECARD -o $(OBJ)mfacq.o mfacq.cc 30 31 20 32 tmtacq : $(EXE)tmtacq 21 33 echo '---tmtacq made' 22 34 23 $(EXE)tmtacq : $(OBJ)tmtacq.o $(OBJ) racqumem.o $(OBJ)racqurw.o $(OBJ)racquproc.o \35 $(EXE)tmtacq : $(OBJ)tmtacq.o $(OBJ)brparam.o $(OBJ)racqumem.o $(OBJ)racqurw.o $(OBJ)racquproc.o \ 24 36 $(OBJ)brpaqu.o $(OBJ)pciewrap.o $(OBJ)minifits.o 25 $(CXXLINK) -o $(EXE)tmtacq $(OBJ)tmtacq.o $(OBJ) racqumem.o $(OBJ)racqurw.o $(OBJ)racquproc.o \26 37 $(CXXLINK) -o $(EXE)tmtacq $(OBJ)tmtacq.o $(OBJ)brparam.o $(OBJ)racqumem.o $(OBJ)racqurw.o \ 38 $(OBJ)racquproc.o $(OBJ)brpaqu.o $(OBJ)pciewrap.o $(OBJ)minifits.o $(SOPHYAALLSLBLIST) 27 39 28 40 $(OBJ)tmtacq.o : tmtacq.cc racquproc.h racqurw.h racqumem.h brpaqu.h 29 41 $(CXXCOMPILE) -c -DNOPCIECARD -o $(OBJ)tmtacq.o tmtacq.cc 42 43 $(OBJ)brparam.o : brparam.cc brparam.h 44 $(CXXCOMPILE) -c -o $(OBJ)brparam.o brparam.cc 30 45 31 46 $(OBJ)racqumem.o : racqumem.cc racqumem.h … … 43 58 echo '---mcrd made' 44 59 45 $(EXE)mcrd : $(OBJ)mcrd.o $(OBJ) racqumem.o $(OBJ)brfitsrd.o $(OBJ)brproc.o $(OBJ)racquproc.o $(OBJ)brpaqu.o \60 $(EXE)mcrd : $(OBJ)mcrd.o $(OBJ)brparam.o $(OBJ)racqumem.o $(OBJ)brfitsrd.o $(OBJ)brproc.o $(OBJ)racquproc.o $(OBJ)brpaqu.o \ 46 61 $(OBJ)racqurw.o $(OBJ)pciewrap.o $(OBJ)minifits.o 47 $(CXXLINK) -o $(EXE)mcrd $(OBJ)mcrd.o $(OBJ) racqumem.o $(OBJ)brfitsrd.o $(OBJ)brproc.o $(OBJ)racquproc.o \62 $(CXXLINK) -o $(EXE)mcrd $(OBJ)mcrd.o $(OBJ)brparam.o $(OBJ)racqumem.o $(OBJ)brfitsrd.o $(OBJ)brproc.o $(OBJ)racquproc.o \ 48 63 $(OBJ)brpaqu.o $(OBJ)racqurw.o $(OBJ)pciewrap.o $(OBJ)minifits.o $(SOPHYAALLSLBLIST) 49 64 -
trunk/AddOn/TAcq/minifits.cc
r3658 r3671 97 97 if (fip != NULL) throw MiniFITSException("MiniFITSFile::Open() - fip != NULL"); 98 98 if (rwm == MF_Write) { 99 for(int i=0; i<MFITSHLEN; i++) header[i]=' '; 100 nkeya_ = 0; 99 101 FillHeader(); 100 102 fip = fopen(nom, "w"); … … 119 121 { 120 122 if (fip) { 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 123 if (rwmode == MF_Write) { 124 // on remplit avec des zeros pour avoir une longueur multiple de 2880 125 size_t padsz = MFITSHLEN-(totwsz%MFITSHLEN); 126 char zeros[160]; 127 for(size_t k=0; k<160; k++) zeros[k]=0; 128 while(padsz>160) { 129 fwrite(zeros, 1, 160, fip); 130 padsz-=160; 131 } 132 if (padsz>0) fwrite(zeros, 1, padsz, fip); 133 // On reecrit l'entete 134 FillHeader(); 135 fseek(fip, 0, SEEK_SET); 136 fwrite(header, 1, MFITSHLEN, fip); 137 } 138 fclose(fip); 137 139 } 138 140 fip = NULL; … … 187 189 else if (dtype == MF_Float32) bpix = -32; 188 190 char * buff = header+80; 189 sprintf(buff, "BITPIX = %20d / 191 sprintf(buff, "BITPIX = %20d / number of bits per data pixel", bpix); 190 192 buff[strlen(buff)] = ' '; 191 193 buff = header+160; … … 193 195 buff[strlen(buff)] = ' '; 194 196 buff = header+240; 195 sprintf(buff, "NAXIS1 = %20ld / number of bits per data pixel", (long)nax1);197 sprintf(buff, "NAXIS1 = %20ld / nb of pixels along X = PaquetSize", (long)nax1); 196 198 buff[strlen(buff)] = ' '; 197 199 buff = header+320; 198 sprintf(buff, "NAXIS2 = %20ld / number of bits per data pixel", (long)nax2);200 sprintf(buff, "NAXIS2 = %20ld / nb of rows = NumberOfPaquets", (long)nax2); 199 201 buff[strlen(buff)] = ' '; 200 202 buff = header+400+nkeya_*80; … … 248 250 sprintf(buff,"%s %20lg / %s", cle, val, tcom); 249 251 } 250 else sprintf(buff,"%s %20l d/ ", cle, val);252 else sprintf(buff,"%s %20lg / ", cle, val); 251 253 buff[strlen(buff)] = ' '; 252 254 nkeya_++; -
trunk/AddOn/TAcq/pciewrap.cc
r3645 r3671 57 57 paq.SetHDRMarker64(pchk_.HDRTag()); 58 58 paq.SetTRLMarker64(pchk_.TRLTag()); 59 paq.SetFrameCounter(frame_counter_); 59 UInt16 cfc = (frame_counter_%65535); 60 paq.SetFrameCounter(cfc); 60 61 paq.SetTimeTag(timetag_); 61 62 paq.SetPaqLen((UInt16)((size_ - BRHDRSIZE - BRTRLSIZE)/4)); -
trunk/AddOn/TAcq/racqumem.cc
r3658 r3671 89 89 for(uint_4 k=0; k<NbZones(); k++) { 90 90 if ((states[k].act == MemZA_None) && 91 (states[k].stat & MemZS_ Filled) && !(states[k].stat & MemZS_Proc) ) {91 (states[k].stat & MemZS_Saved) && !(states[k].stat & MemZS_Proc) ) { 92 92 if (states[k].serial < bestserial) { rid=k; bestserial=states[k].serial; } 93 93 } -
trunk/AddOn/TAcq/racquproc.cc
r3635 r3671 123 123 } 124 124 } 125 catch ( PException& exc) {126 cout << " DataProc::run()/catched PException " << exc.Msg() << endl;125 catch (std::exception& exc) { 126 cout << " DataProc::run()/catched std::exception " << exc.what() << endl; 127 127 setRC(3); 128 128 return; … … 242 242 } 243 243 } 244 catch ( PException& exc) {245 cout << " DataProc 2C::run()/catched PException " << exc.Msg() << endl;244 catch (std::exception& exc) { 245 cout << " DataProc::run()/catched std::exception " << exc.what() << endl; 246 246 setRC(3); 247 247 return; … … 360 360 } 361 361 } 362 catch ( PException& exc) {363 cout << " DataProc FFT2C::run()/catched PException " << exc.Msg() << endl;362 catch (std::exception& exc) { 363 cout << " DataProc::run()/catched std::exception " << exc.what() << endl; 364 364 setRC(3); 365 365 return; -
trunk/AddOn/TAcq/racqurw.cc
r3658 r3671 464 464 465 465 /* --Methode-- */ 466 PCIEMultiReader::PCIEMultiReader(vector<PCIEWrapperInterface*> vec_pciw,uint_4 sizeFrame,uint_4 packSize ,RAcqMemZoneMgr& mem, uint_4 nmax, BRDataFmtConv swapall ,int binMin, int nbBin)466 PCIEMultiReader::PCIEMultiReader(vector<PCIEWrapperInterface*> vec_pciw,uint_4 sizeFrame,uint_4 packSize ,RAcqMemZoneMgr& mem, uint_4 nmax, BRDataFmtConv swapall) 467 467 : memgr(mem) , vec_pciw_ (vec_pciw) 468 468 { … … 473 473 packSizeInMgr_=memgr.PaqSize(); 474 474 sizeFr_ =sizeFrame; 475 binMin_= binMin;476 nbBin_= nbBin;477 475 if (vec_pciw.size() != memgr.NbFibres()) { 478 476 cout << " PCIEMultiReader()PbArgs: vec_pciw.size()= " << vec_pciw.size() << " memgr.NbFibres()=" <<memgr.NbFibres()<< endl; … … 572 570 setRC(9); fgarret=true; break; 573 571 } 574 BRPaquet paq(tampon[fib], nextpaq, paqsz, swapall_,binMin_,nbBin_); 572 BRPaquet paq(tampon[fib], nextpaq, paqsz, swapall_); 573 // CHECK S'il faut faire une reduction de taille de paquet 575 574 npaqfait[fib]++; 576 575 if (fib==nbDma_-1) npaqfaitg++; // Ne pas oublier le compteur de paquets faits … … 601 600 setRC(9); fgarret=true; break; 602 601 } 603 BRPaquet paq(Datas[fib]+curoff, nextpaq, paqsz, swapall_,binMin_,nbBin_); 602 BRPaquet paq(Datas[fib]+curoff, nextpaq, paqsz, swapall_); 603 // CHECK S'il faut faire une reduction de taille de paquet 604 604 npaqfait[fib]++; 605 605 if (fib==nbDma_-1) npaqfaitg++; // Ne pas oublier le compteur de paquets faits … … 688 688 //-------------------------------------------------------------------- 689 689 690 MultiDataSaver::MultiDataSaver(RAcqMemZoneMgr& mem, string &path, uint_4 nfiles, uint_4 nblocperfile, bool savesig)691 : memgr(mem) 690 MultiDataSaver::MultiDataSaver(RAcqMemZoneMgr& mem, string path, uint_4 nfiles, uint_4 nblocperfile, bool savesig) 691 : memgr(mem) 692 692 { 693 693 nfiles_ = nfiles; … … 708 708 setRC(1); 709 709 BRPaqChecker pcheck[MAXNBFIB]; // Verification/comptage des paquets 710 710 BRAcqConfig bpar; 711 711 try { 712 712 TimeStamp ts; … … 732 732 fgnulldev = true; 733 733 } 734 BRPaquet paq0(NULL, NULL, paqsz); 734 735 for (uint_4 nbFile=0;nbFile<nfiles_ ;nbFile++) { 735 736 if (stop_ ) break; … … 742 743 header[fib].open(fname); 743 744 } 744 BRPaquet paq0(NULL, NULL, paqsz);745 745 746 uint_4 npaqperfile = memgr.NbPaquets()*nblocperfile_; // Nombre de paquets ecrits dans un fichier 746 747 747 748 if (savesig_) { //Reza - Ouverture conditionnel fichier 748 for(uint_4 fib=0; fib<memgr.NbFibres(); fib++) {749 for(uint_4 fib=0; fib<memgr.NbFibres(); fib++) { 749 750 if (fgnulldev) strcpy(fname,"/dev/null"); 750 751 else sprintf(fname,"%s/Fibre%d/signal%d.fits",path_.c_str(),fib+1,(int)fnum); 751 752 mff[fib].Open(fname,MF_Write); //Reza - Ouverture conditionnel fichier 752 753 // Entete correspondant a l'ecriture tout le paquet - trailer compris (modif Mai 2009) 753 mff[fib].setDTypeNaxis(MF_Byte, paq0.PaquetSize(), npaqperfile); 754 } 754 mff[fib].setDTypeNaxis(MF_Byte, paq0.PaquetSize(), npaqperfile); 755 // Sans TRAILER de paquet mff.setDTypeNaxis(MF_Byte, paq0.DataSize()+paq0.HeaderSize(), npaqperfile); 756 } 757 // Ajout mots-cle additionnels a tous les fichiers FITS 758 AddFitsKW(mff,bpar); 755 759 fnum++; 756 // Sans TRAILER de paquet mff.setDTypeNaxis(MF_Byte, paq0.DataSize()+paq0.HeaderSize(), npaqperfile);757 760 } 758 761 else sprintf(fname,"MemDataBloc[%d]-NoDataFile",(int)fnum++); … … 765 768 if (buffg == NULL) { 766 769 cout << " MultiDataSaver::run()/ERROR memgr.GetMemZone(" << mid << ") -> NULL" << endl; 767 setRC(2 );770 setRC(21); 768 771 return; 769 772 } … … 772 775 if (buff == NULL) { // Ceci ne devrait pas arriver - suite au test buffg ci-dessus 773 776 cout << " MultiDataSaver::run()/ERROR memgr.GetMemZone(" << mid << "," << fib << ") -> NULL" << endl; 774 setRC(2 );777 setRC(22); 775 778 return; 776 779 } … … 797 800 } 798 801 else sprintf(fname,"MemDataBloc[%d]-NoDataFile",(int)fnum-1); 799 filog << " Fib " << fib << " -> " << fname << endl; 800 cout << " Fib " << fib << " -> " << fname << endl; 802 string pcsum = pcheck[fib].Summary(); 803 filog << " Fib " << fib << " -> " << fname << " Stat:" << pcsum << endl; 804 cout << " Fib " << fib << " -> " << fname << " Stat:" << pcsum << endl; 801 805 } 802 806 if (savesig_) … … 805 809 mff[fib].Close(); 806 810 } 811 812 807 813 } // Fin de boucle sur les fichiers 808 814 cout << " -------------------- MultiDataSaver::run() -------------------- " << endl; … … 832 838 } 833 839 840 841 /* --Methode-- */ 842 int MultiDataSaver::AddFitsKW(MiniFITSFile* mff, BRAcqConfig& acpar) 843 { 844 TimeStamp ts; 845 string cdtu=ts.ToString(); 846 for(uint_4 fib=0; fib<memgr.NbFibres(); fib++) { 847 mff[fib].AddKeyS("DATE", cdtu.c_str(), " File Creation time(YYYY-MM-DDThh:mm:ss UT) "); 848 mff[fib].AddKeyS("DATEOBS", cdtu.c_str(), " Observation Time (YYYY-MM-DDThh:mm:ss UT) "); 849 mff[fib].AddKeyD("ACQVER", acpar.AcqVersion(), " BAORadio Acq Software version ") ; 850 mff[fib].AddKeyS("ACQCONF", acpar.GetParams().AcqMode, " BAORadio Acq run mode" ); 851 } 852 return 0; 853 } 854 -
trunk/AddOn/TAcq/racqurw.h
r3658 r3671 15 15 #include "zthread.h" 16 16 #include "pciewrap.h" 17 18 17 #include "brtypes.h" 19 18 #include "brpaqu.h" 19 #include "brparam.h" 20 #include "minifits.h" 20 21 21 22 using namespace std; … … 61 62 uint_4 max_targ_npaq; // = mmgr.NbPaquets() = Max de targ_npaq_ 62 63 Byte* mmbuf_; // Pointeur zone memoire rendu par RAcqMemZoneMgr 64 63 65 }; 64 66 … … 113 115 public: 114 116 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);117 uint_4 nmax=100, BRDataFmtConv swapall=BR_SwapAll); 116 118 virtual void run(); 117 119 void Stop(); … … 142 144 uint_4 packSizeInMgr_; 143 145 uint_4 nbDma_; 144 int nbBin_;145 int binMin_;146 146 int mid_; // Identificateur zone memoire 147 147 uint_4 targ_npaq_; // Numero de paquet dans une seule zone memoire … … 160 160 class MultiDataSaver : public ZThread { 161 161 public: 162 MultiDataSaver(RAcqMemZoneMgr& mem, string &path, uint_4 nfiles=100, uint_4 nblocperfile=1, bool savesig=true);162 MultiDataSaver(RAcqMemZoneMgr& mem, string path, uint_4 nfiles=100, uint_4 nblocperfile=1, bool savesig=true); 163 163 164 164 virtual void run(); … … 166 166 inline void STOP() { stop_ = true; } 167 167 protected: 168 int AddFitsKW(MiniFITSFile* mff, BRAcqConfig& acpar); 169 168 170 RAcqMemZoneMgr& memgr; 169 171 uint_4 nfiles_; // Nombre maxi de fichiers cree … … 174 176 string path_; 175 177 struct sigaction act; 176 177 178 }; 178 179 -
trunk/AddOn/TAcq/tmtacq.cc
r3645 r3671 29 29 30 30 31 //-------------------------------------------------------- 31 //----------------------------------------------------------------------- 32 32 // Programme test acquisition BAORadio multi-thread 33 33 // LAL - R. Ansari Juillet - 2008 34 34 // M.Taurigna 2009 35 //-------------------------------------------------------- 35 // == Programme reste a la version de Mai 2009 (1er tests Pittsburgh) == 36 //----------------------------------------------------------------------- 36 37 37 38 … … 115 116 static bool activate_pattern=false; // true -> on active le pattern du firmware au lieu de la fibre 116 117 static uint_4 NMaxBloc = 10; 118 static double nopciLossRate = 0.; // Taux de perte simule des paquets par TestPCIWrapperNODMA 117 119 //---------------------------- FIN parametres de controle ----------------- 118 120 … … 178 180 if (fgshort) { 179 181 cout << " Usage: tmtacq CardNum PaquetSize NFrameDMA NFiles NBlocPerFile \n" 180 << " NMaxProc DataDirPath [AcqMode] [MemZoneMgr][HardCtlC]" << endl;182 << " NMaxProc DataDirPath [AcqMode] [MemZoneMgr] [HardCtlC] [NoPCILossRate]" << endl; 181 183 cout << " type tmtacq -h for detailed usage " << endl; 182 184 return; … … 184 186 185 187 cout << "\n Usage: tmtacq CardNum PaquetSize NFrameDMA NFiles NBlocPerFile \n" 186 << " NMaxProc DataDirPath [AcqMode] [MemZoneMgr][HardCtlC]" << endl;188 << " NMaxProc DataDirPath [AcqMode] [MemZoneMgr] [HardCtlC] [NoPCILossRate]" << endl; 187 189 cout << " - CardNum : PCI-Express card number (=1 OR 2 OR 1,2)" << endl; 188 190 cout << " - PaquetSize or FrameSize (=DATA+HDR+TRL_Size) " << endl; … … 209 211 cout << " - MemZoneMgr: nZones,NPaq =Number of Zones and number of paquet \n" 210 212 << " in each zone (Default=4,128) "<< endl; 211 cout << " -HardCtlC : Y y (direct interrpution by CtrlC ) default (no) " << endl; 213 cout << " - HardCtlC : Y y (direct interrpution by CtrlC ) or no (default=no) " << endl; 214 cout << " - NoPCILossRate : Simulated NO-PCI loss rate (0<rate<1 default=0.) " << endl; 215 212 216 cout << endl; 213 217 cout << " - AcqMode for previous firmware with 32bits-byteswap"<<endl; … … 315 319 } 316 320 317 nZones = 8; // Nombre de zones memoires321 nZones = 4; // Nombre de zones memoires 318 322 nPaqZone = 128; // 128 Paquets / zone memoire - valeur par defaut 319 323 if (narg > 9) { … … 333 337 sigaction(SIGINT,&act,NULL); 334 338 } 339 340 nopciLossRate = 0.; // Taux de perte simule des paquets par TestPCIWrapperNODMA 341 if (narg > 11) nopciLossRate=atof(arg[11]); 335 342 336 343 PaqSZ =sizeFrame; // Taille de paquets … … 360 367 if (acqmode == "nosw") swapall = BR_Copy ; 361 368 if (acqmode == "nof") { swapall = BR_Copy ; savesigfits = false; } 362 if (acqmode == "fft1c") swapall = BR_FFTOneChan NoSwap;363 if (acqmode == "fft2c") swapall = BR_FFTTwoChan NoSwap;364 if (acqmode == "fft1cnof") { swapall = BR_FFTOneChan NoSwap; savesigfits = false; }365 if (acqmode == "fft2cnof") { swapall = BR_FFTTwoChan NoSwap; savesigfits = false; }369 if (acqmode == "fft1c") swapall = BR_FFTOneChan; 370 if (acqmode == "fft2c") swapall = BR_FFTTwoChan; 371 if (acqmode == "fft1cnof") { swapall = BR_FFTOneChan; savesigfits = false; } 372 if (acqmode == "fft2cnof") { swapall = BR_FFTTwoChan; savesigfits = false; } 366 373 if (acqmode == "mono") { monothr = true; swapall = BR_Copy; } 367 374 if (acqmode == "patmono") { monothr = true; swapall = BR_Copy; activate_pattern=true; } … … 370 377 371 378 if (acqmode == "swapall") swapall = BR_SwapAll; 372 if (acqmode == "fft1csw") swapall = BR_FFTOneChan ;373 if (acqmode == "fft2csw") swapall = BR_FFTTwoChan ;374 if (acqmode == "fft1cswnof") { swapall = BR_FFTOneChan ; savesigfits = false; }375 if (acqmode == "fft2cswnof") { swapall = BR_FFTTwoChan ; savesigfits = false; }379 if (acqmode == "fft1csw") swapall = BR_FFTOneChanSwapAll; 380 if (acqmode == "fft2csw") swapall = BR_FFTTwoChanSwapAll; 381 if (acqmode == "fft1cswnof") { swapall = BR_FFTOneChanSwapAll; savesigfits = false; } 382 if (acqmode == "fft2cswnof") { swapall = BR_FFTTwoChanSwapAll; savesigfits = false; } 376 383 if ((acqmode == "swh") || (acqmode == "mxs") || (acqmode == "monoswh") ) swapall = BR_SwapHDR; 377 384 if ((acqmode == "swapallnof") || (acqmode == "mxs") ) savesigfits = false; … … 381 388 if (acqmode == "swap32") swapall = BR_Swap32 ; 382 389 if (acqmode == "nof32") { swapall = BR_Swap32 ; savesigfits = false; } 383 if (acqmode == "fft1c32") swapall = BR_FFTOneChan 32;384 if (acqmode == "fft2c32") swapall = BR_FFTTwoChan 32;385 if (acqmode == "fft1cnof32") { swapall = BR_FFTOneChan 32; savesigfits = false; }386 if (acqmode == "fft2cnof32") { swapall = BR_FFTTwoChan 32; savesigfits = false; }390 if (acqmode == "fft1c32") swapall = BR_FFTOneChanSwap32; 391 if (acqmode == "fft2c32") swapall = BR_FFTTwoChanSwap32; 392 if (acqmode == "fft1cnof32") { swapall = BR_FFTOneChanSwap32; savesigfits = false; } 393 if (acqmode == "fft2cnof32") { swapall = BR_FFTTwoChanSwap32; savesigfits = false; } 387 394 388 395 } … … 398 405 PCIEWrapperInterface* pciwp=NULL; 399 406 #ifdef NOPCIECARD 400 TestPCIWrapperNODMA pciw(PaqSZ );407 TestPCIWrapperNODMA pciw(PaqSZ,nopciLossRate); 401 408 pciwp = &pciw; 402 409 #else … … 494 501 495 502 #ifdef NOPCIECARD 496 TestPCIWrapperNODMA pciw1(PaqSZ );497 TestPCIWrapperNODMA pciw2(PaqSZ );503 TestPCIWrapperNODMA pciw1(PaqSZ,nopciLossRate); 504 TestPCIWrapperNODMA pciw2(PaqSZ,nopciLossRate); 498 505 pciwp1 = &pciw1; 499 506 pciwp2 = &pciw2; -
trunk/AddOn/TAcq/tmtacq.h
r3624 r3671 2 2 #define TMTACQ_H 3 3 #include <signal.h> 4 #define BAOR_ACQ_VER 5.0 5 #define BAOR_ACQ_VER_STR "BaoAcq_v5_Mai09 " 4 #include "bracqvers.h" 6 5 // ajout d'une gestion plus sure de l'arret par Controle C 7 6 #endif
Note:
See TracChangeset
for help on using the changeset viewer.