Changeset 3659 in Sophya for trunk/AddOn
- Timestamp:
- Oct 19, 2009, 3:43:12 PM (16 years ago)
- Location:
- trunk/AddOn/TAcq
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/brpaqu.cc
r3658 r3659 77 77 78 78 // on reoordonne les coeff FFT et on swappe en mem temps (Byte-swap sur 8 octets) 79 if (fgswap == BR_FFTOneChan) ReorderFFTData( src+HeaderSize(), dst_+HeaderSize(), DataSize());79 if (fgswap == BR_FFTOneChan) ReorderFFTData((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()); 80 80 else if (fgswap == BR_FFTTwoChan) { 81 ReorderFFTData( src+HeaderSize(), dst_+HeaderSize(), DataSize()/2);82 ReorderFFTData( src+HeaderSize()+DataSize()/2, dst_+HeaderSize()+DataSize()/2, DataSize()/2);81 ReorderFFTData((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()/2); 82 ReorderFFTData((SByte*)(src+HeaderSize()+DataSize()/2), (SByte*)(dst_+HeaderSize()+DataSize()/2), DataSize()/2); 83 83 } 84 84 // Byte swap (sur 8 octets) du trailer … … 100 100 101 101 // on reoordonne et on swappe en mem temps (Echange de deux mots de 4 octets) 102 if (fgswap == BR_FFTOneChan32) ReorderFFTData32( src+HeaderSize(), dst_+HeaderSize(), DataSize());102 if (fgswap == BR_FFTOneChan32) ReorderFFTData32((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()); 103 103 else if (fgswap == BR_FFTTwoChan32) { 104 ReorderFFTData32( src+HeaderSize(), dst_+HeaderSize(), DataSize()/2);105 ReorderFFTData32( src+HeaderSize()+DataSize()/2, dst_+HeaderSize()+DataSize()/2, DataSize()/2);104 ReorderFFTData32((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()/2); 105 ReorderFFTData32((SByte*)(src+HeaderSize()+DataSize()/2), (SByte*)(dst_+HeaderSize()+DataSize()/2), DataSize()/2); 106 106 } 107 107 // swap du trailler uniquement : Echange de deux mots de 4 octets … … 120 120 121 121 // on reoordonne les coeff FFT (pas de swap) 122 if (fgswap == BR_FFTOneChanNoSwap) ReorderFFTDataNoSwap( src+HeaderSize(), dst_+HeaderSize(), DataSize());122 if (fgswap == BR_FFTOneChanNoSwap) ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()); 123 123 else if (fgswap == BR_FFTTwoChanNoSwap) { 124 ReorderFFTDataNoSwap( src+HeaderSize(), dst_+HeaderSize(), DataSize()/2);125 ReorderFFTDataNoSwap( src+HeaderSize()+DataSize()/2, dst_+HeaderSize()+DataSize()/2, DataSize()/2);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 126 } 127 127 // copie du trailler uniquement : … … 143 143 144 144 // on reoordonne les coeff FFT (pas de swap) 145 if (fgswap == BR_FFTOneChanNoSwap) ReorderFFTDataNoSwap( src+HeaderSize(), tmp+HeaderSize(), DataSize());145 if (fgswap == BR_FFTOneChanNoSwap) ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()), (SByte*)(tmp+HeaderSize()), DataSize()); 146 146 else if (fgswap == BR_FFTTwoChanNoSwap) { 147 ReorderFFTDataNoSwap( src+HeaderSize(), tmp+HeaderSize(), DataSize()/2);148 ReorderFFTDataNoSwap( src+HeaderSize()+DataSize()/2, tmp+HeaderSize()+DataSize()/2, DataSize()/2);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 149 } 150 150 memcpy(tmp+ HeaderSize(), src+(binMin+ HeaderSize()), nbBin); … … 294 294 295 295 /* --Methode__ */ 296 void BRPaquet::ReorderFFTData( Byte* src,Byte* dst, int N)296 void BRPaquet::ReorderFFTData(SByte* src, SByte* dst, int N) 297 297 { 298 298 // Code recopie depuis /Dev/DisplayData/HistoWindow.cc … … 342 342 } 343 343 344 void BRPaquet::ReorderFFTData32( Byte* src,Byte* dst, int N)344 void BRPaquet::ReorderFFTData32(SByte* src, SByte* dst, int N) 345 345 { 346 346 // Code recopie depuis /Dev/DisplayData/HistoWindow.cc … … 384 384 return ; 385 385 } 386 void BRPaquet::ReorderFFTDataNoSwap( Byte* src,Byte* dst, int N)386 void BRPaquet::ReorderFFTDataNoSwap(SByte* src, SByte* dst, int N) 387 387 { 388 388 // Code recopie depuis /Dev/DisplayData/HistoWindow.cc … … 483 483 lostframes = 0; 484 484 frclst = 0; 485 lastframenum = 0; 485 486 cnt_saut = 0; 486 487 maxprt_ = maxprt; … … 506 507 507 508 508 bool BRPaqChecker::Check(BRPaquet& paq )509 bool BRPaqChecker::Check(BRPaquet& paq, UInt64& numframe) 509 510 { 510 511 totnframes++; 512 numframe=0; 511 513 if (paq.HDRMarker64() != HDRTag()) return false; 512 514 if (cktrl_&&(paq.TRLMarker64() != TRLTag())) return false; … … 534 536 } 535 537 } 536 nframeok++; frclst = curfc; 538 nframeok++; frclst=curfc; 539 lastframenum+=(unsigned long long)delfc; // numero de frame sans repliement a 65535 540 numframe=lastframenum; 537 541 //DBG if (cnt_pb<5) { cnt_pb++; paq.Print(); } 538 542 return true; -
trunk/AddOn/TAcq/brpaqu.h
r3658 r3659 31 31 explicit TwoByteComplex(double re, double im) { val_[0] = re; val_[1] = im; } 32 32 33 inline Byte& realB() { return val_[0]; } 34 inline Byte& imagB() { return val_[1]; } 35 36 inline SByte realSB() { return ((SByte*)val_)[0]; } 37 inline SByte imagSB() { return ((SByte*)val_)[1]; } 38 39 inline int realI() { return ((SByte*)val_)[0]; } 40 inline int imagI() { return ((SByte*)val_)[1]; } 41 42 inline double realD() { return ((SByte*)val_)[0]; } 43 inline double imagD() { return ((SByte*)val_)[1]; } 44 45 Byte val_[2]; 33 inline SByte& realB() { return val_[0]; } 34 inline SByte& imagB() { return val_[1]; } 35 36 inline int realI() { return (int)(val_)[0]; } 37 inline int imagI() { return (int)(val_)[1]; } 38 39 inline double realD() { return (double)(val_)[0]; } 40 inline double imagD() { return (double)(val_)[1]; } 41 42 SByte val_[2]; 46 43 }; 47 44 … … 127 124 inline Byte* Header() { return dst_+OFFSET; } 128 125 inline Byte* Trailer() { return (dst_+sz_-BRTRLSIZE+OFFSET); } 129 126 127 // Acces aux differentes zone de donnees en signed byte (-127 ... 127), donnees FFT 128 inline SByte* BeginS() { return (SByte*)(dst_+OFFSET); } 129 inline SByte* Data1S() { return (SByte*)(dst_+BRHDRSIZE+OFFSET); } 130 inline SByte* Data2S() { return (SByte*)(dst_+BRHDRSIZE+(DataSize()/2)+OFFSET); } 131 132 // Acces aux differentes zone de donnees en TwoByteComplex pour donnees FFT 133 inline int DataSizeC() { return (sz_-(BRHDRSIZE+BRTRLSIZE))/2; } 134 inline TwoByteComplex* BeginC() { return (TwoByteComplex*)(dst_+OFFSET); } 135 inline TwoByteComplex* Data1C() { return (TwoByteComplex*)(dst_+BRHDRSIZE+OFFSET); } 136 inline TwoByteComplex* Data2C() { return (TwoByteComplex*)(dst_+BRHDRSIZE+(DataSize()/2)+OFFSET); } 137 130 138 // Valeurs differentes zones HDR/TRL 131 139 inline UInt32 HDRMarker() {return *((UInt32*)(dst_+OFFSET));} … … 167 175 168 176 // fonction appelee par le constructeur pour reordonner les donnees FFT 169 static void ReorderFFTData( Byte* src,Byte* dst, int sz);170 static void ReorderFFTData32( Byte* src,Byte* dst, int sz);171 static void ReorderFFTDataNoSwap( Byte* src,Byte* dst, int sz);177 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); 172 180 static const char* FmtConvToString(BRDataFmtConv fgswap); 173 181 // protected: … … 184 192 class BRPaqChecker { 185 193 public: 194 // if cktrl==true, check header AND trailer, ==false check header only 186 195 BRPaqChecker(bool cktrl=true, int maxprt=0); 187 196 ~BRPaqChecker(); … … 194 203 195 204 // Verifie le paquet, renvoie true si OK 196 bool Check(BRPaquet& paq); 205 bool Check(BRPaquet& paq, UInt64& numframe); 206 inline bool Check(BRPaquet& paq) { UInt64 nf; return Check(paq, nf); } 207 197 208 // Imprime le compte de paquets ... 198 209 ostream & Print(ostream& os) const; 199 210 inline ostream & Print() const { return Print(cout); } 200 211 201 unsigned long long totnframes; // Nombre totale de frames/paquets traites 202 unsigned long long nframeok; // Nombre totale de frames/paquets avec HDR/TRL OK 203 unsigned long long lostframes; // Nombre totale de frames/paquets perdus 204 unsigned int frclst; // derniere valeur du frame-counter 212 // Acces aux differents compteurs 213 inline UInt64 NbPaqTotal() { return totnframes; } 214 inline UInt64 NbPaqOK() { return nframeok; } 215 inline UInt64 NbPaqLost() { return lostframes; } 216 inline UInt64 NbGaps() { return cnt_saut; } 217 inline UInt64 LastFrameNum() { return lastframenum; } 218 219 protected: 220 UInt64 totnframes; // Nombre totale de frames/paquets traites 221 UInt64 nframeok; // Nombre totale de frames/paquets avec HDR/TRL OK 222 UInt64 lostframes; // Nombre totale de frames/paquets perdus 223 UInt16 frclst; // derniere valeur du frame-counter 224 UInt64 lastframenum; // Dernier numero de frame(=frame-counter, sans modulo 65535) 205 225 206 226 bool cktrl_; // Verifie aussi le trailer si true 207 unsigned intcnt_saut; // Nb de fois ou DeltaFrameCounter>1208 unsigned int maxprt_;// Nb maxi de print paquets perdus / probleme227 UInt64 cnt_saut; // Nb de fois ou DeltaFrameCounter>1 228 UInt32 maxprt_; // Nb maxi de print paquets perdus / probleme 209 229 210 230 UInt64 hdrtag_; … … 212 232 }; 213 233 214 // Definition de l'operator << overloading - Appel de Prin ()234 // Definition de l'operator << overloading - Appel de Print() 215 235 inline ostream& operator << (ostream& s, BRPaqChecker const & chk) 216 236 { return chk.Print(s); }
Note:
See TracChangeset
for help on using the changeset viewer.