Changeset 3623 in Sophya for trunk/AddOn/TAcq/brpaqu.cc
- Timestamp:
- May 22, 2009, 9:59:38 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/brpaqu.cc
r3592 r3623 55 55 case BR_FFTOneChan : 56 56 case BR_FFTTwoChan : 57 // Byte swap (sur 8 octets) de l'entete 57 58 // ByteSwap 8 (4->8 Reza/firmware SGDMA) de l'enete 58 59 for(int ka=0; ka<BRHDRSIZE; ka+=8) { … … 63 64 } 64 65 66 // on reoordonne les coeff FFT et on swappe en mem temps (Byte-swap sur 8 octets) 65 67 if (fgswap == BR_FFTOneChan) ReorderFFTData(src+HeaderSize(), dst_+HeaderSize(), DataSize()); 66 68 else if (fgswap == BR_FFTTwoChan) { … … 68 70 ReorderFFTData(src+HeaderSize()+DataSize()/2, dst_+HeaderSize()+DataSize()/2, DataSize()/2); 69 71 } 72 // Byte swap (sur 8 octets) du trailer 70 73 for(int ka=HeaderSize()+DataSize(); ka<sz_; ka+=8) { 71 74 for(int kb=0; kb<4; kb++) { … … 78 81 case BR_FFTOneChan32 : 79 82 case BR_FFTTwoChan32 : 80 // on swappe tout en attendant le swap general sinon il faut encore créer une fonctiondifferente de ReorderFFT 81 // swapp du header uniquement 83 // swap du header uniquement : Echange de deux mots de 4 octets 82 84 for(int ka=0; ka<BRHDRSIZE/4; ka+=2) { 83 85 dst32[ka] = src32[ka+1]; … … 85 87 } 86 88 87 // on reoordonne et on swappe en mem temps 89 // on reoordonne et on swappe en mem temps (Echange de deux mots de 4 octets) 88 90 if (fgswap == BR_FFTOneChan32) ReorderFFTData32(src+HeaderSize(), dst_+HeaderSize(), DataSize()); 89 91 else if (fgswap == BR_FFTTwoChan32) { … … 91 93 ReorderFFTData32(src+HeaderSize()+DataSize()/2, dst_+HeaderSize()+DataSize()/2, DataSize()/2); 92 94 } 93 // swap du trailler uniquement 95 // swap du trailler uniquement : Echange de deux mots de 4 octets 94 96 for(int ka=(HeaderSize()+DataSize())/4;ka < sz_/4; ka+=2) { 95 97 dst32[ka] = src32[ka+1]; … … 99 101 case BR_FFTOneChanNoSwap : 100 102 case BR_FFTTwoChanNoSwap : 101 // on a plus de swapdonc il faut copier dans dst 102 memcpy(dst_, src, sz_); 103 // on reoordonne et on swappe en mem temps 103 // copie du header uniquement 104 for(int ka=0; ka<BRHDRSIZE/4; ka++) dst32[ka] = src32[ka]; 105 106 //DEL on a plus de swapdonc il faut copier dans dst 107 //DEL memcpy(dst_, src, sz_); 108 109 // on reoordonne les coeff FFT (pas de swap) 104 110 if (fgswap == BR_FFTOneChanNoSwap) ReorderFFTDataNoSwap(src+HeaderSize(), dst_+HeaderSize(), DataSize()); 105 111 else if (fgswap == BR_FFTTwoChanNoSwap) { … … 107 113 ReorderFFTDataNoSwap(src+HeaderSize()+DataSize()/2, dst_+HeaderSize()+DataSize()/2, DataSize()/2); 108 114 } 109 115 // copie du trailler uniquement : 116 for(int ka=(HeaderSize()+DataSize())/4;ka < sz_/4; ka++) dst32[ka] = src32[ka]; 117 110 118 break; 111 119 } // Fin switch … … 143 151 { 144 152 UInt16 ModAq; 145 printf("Mod Acq %x \n",ModeAcq());153 //DEL printf("Mod Acq %x \n",ModeAcq()); 146 154 ModAq = ((ModeAcq() & 0x30)>> 4); 147 155 return(ModAq); 148 149 } 150 151 /* --Methode__ */ 152 void BRPaquet::Print(ostream & os, int nelt, bool prht) 156 } 157 158 /* --Methode__ */ 159 void BRPaquet::SetHDRMarker64(UInt64 htag) 160 { 161 *((UInt64*)(dst_+OFFSET)) = htag; 162 return; 163 } 164 165 /* --Methode__ */ 166 void BRPaquet::SetTRLMarker64(UInt64 ttag) 167 { 168 *((UInt64*)(dst_+(sz_-BRTRLSIZE+OFFSET+1))) = 0; 169 *((UInt64*)(dst_+(sz_-BRTRLSIZE+OFFSET))) = ttag; 170 return; 171 } 172 173 /* --Methode__ */ 174 void BRPaquet::SetFrameCounter(UInt32 fc) 175 { 176 UInt32* wp = (UInt32*)(dst_+(BRFRCPTOFF+OFFSET)); 177 *wp = (*wp & 0x0000FFFF) | ((fc<<16) & 0xFFFF0000); 178 return; 179 } 180 181 /* --Methode__ */ 182 void BRPaquet::SetTimeTag(UInt64 timtag) 183 { 184 UInt32* wp = (UInt32*)(dst_+(BRFRCPTOFF+OFFSET)); 185 UInt32 fc = *wp; 186 *((UInt64*)(dst_+(BRTMTAGOFF+OFFSET))) = timtag; 187 *wp = (*wp & 0x0000FFFF) | (fc & 0xFFFF0000); 188 return; 189 } 190 191 /* --Methode__ */ 192 ostream& BRPaquet::Print(ostream & os, int nelt, bool prht) 153 193 { 154 194 os << endl << "BRPaquet::Print() PaqSz=" << PaquetSize() << " DataSize=" << DataSize() 155 << " dst_pointer=(hex)" << hex << (unsigned long)dst_ << dec << endl; 195 << " dst_pointer=(hex)" << hex << (unsigned long)dst_ << dec << endl; 156 196 if (dst_ == NULL) { 157 197 os << " ...NULL paquet " << endl; 158 return ;198 return os; 159 199 } 160 161 os << endl << " BR AcqMode: " << ModeAcquisition() << " Channel: " << ChannelID() << endl; 162 200 os << " BR AcqMode: " << ModeAcquisition() << " Channel: " << ChannelID() 201 << " FrameCounter=" << FrameCounter() << " FrameDataLen=" << PaqLen() << endl; 163 202 if (TrailerSize() > 0) 164 203 os << " ...HDRMarker(hex)=" << hex << HDRMarker() << " TRLMarker=" << TRLMarker() << dec << endl; … … 168 207 tt2 = TimeTag1(); 169 208 tt1 = TimeTag2(); 170 os << " ...TimeTag (hex)=" << hex << "TimeTag()" << " TT1= " << tt1 << " TT2=" << tt2 << dec << endl; 209 os << " ...TimeTag (hex)=" << hex << " TT1= " << tt1 << " TT2=" << tt2 210 << dec << " ->TimeTag()=" << TimeTag() << endl; 171 211 // os << " ...Position Chariot (hex)= " << hex << PositionChariot() << endl; 172 212 if (nelt > DataSize()/2) nelt = DataSize()/2; … … 192 232 } 193 233 } 234 return os; 194 235 } 195 236 … … 401 442 lostframes = 0; 402 443 frclst = 0; 444 DefineHDRTag(); 445 DefineTRLTag(); 403 446 } 404 447 … … 407 450 } 408 451 452 UInt64 BRPaqChecker::DefineHDRTag(UInt32 hdr1, UInt32 hdr2) 453 { 454 hdrtag_ = (UInt64)hdr1 + ((UInt64)hdr2 << 32); 455 return hdrtag_; 456 } 457 458 UInt64 BRPaqChecker::DefineTRLTag(UInt32 trl1, UInt32 trl2) 459 { 460 trltag_ = (UInt64)trl1 + ((UInt64)trl2 << 32); 461 return trltag_; 462 } 463 464 465 static int cnt_pb = 0; 409 466 bool BRPaqChecker::Check(BRPaquet& paq) 410 467 { 411 468 totnframes++; 412 if (paq.HDRMarker() != 0x76543210) return false; 469 if (paq.HDRMarker64() != HDRTag()) return false; 470 if (paq.TRLMarker64() != TRLTag()) return false; 471 /* 472 if (paq.TRLMarker64() != TRLTag()) { 473 cnt_pb++; 474 if (cnt_pb < 5) paq.Print(); 475 return false; 476 } 477 */ 413 478 unsigned int curfc = paq.FrameCounter(); 414 479 unsigned int delfc = 0; … … 419 484 } 420 485 nframeok++; frclst = curfc; 486 if (cnt_pb<5) { cnt_pb++; paq.Print(); } 421 487 return true; 422 488 } … … 424 490 ostream& BRPaqChecker::Print(ostream& os) 425 491 { 426 os << "BRPaqChecker: Tot.Nb.Frames.Proc=" << totnframes << " NbFrameOK=" << nframeok 492 // os << "BRPaqChecker: HDRTag=" << hex << HDRTag() << " TRLTag=" << TRLTag() << dec << "\n" 493 // << " ... Tot.Nb.Frames.Proc=" << totnframes << " NbFrame HDR/TRL OK=" << nframeok 494 os << "BRPaqChecker: Tot.Nb.Frames.Proc=" << totnframes << " NbFrame HDR/TRL OK=" << nframeok 427 495 << " LostFrames=" << lostframes 428 496 << " Loss=" << (double)lostframes*100./(double)totnframes << " %" << endl;
Note:
See TracChangeset
for help on using the changeset viewer.