Index: /trunk/AddOn/TAcq/brpaqu.cc
===================================================================
--- /trunk/AddOn/TAcq/brpaqu.cc	(revision 3658)
+++ /trunk/AddOn/TAcq/brpaqu.cc	(revision 3659)
@@ -77,8 +77,8 @@
 
     // on reoordonne les coeff FFT et on swappe en mem temps  (Byte-swap sur 8 octets)
-    if (fgswap == BR_FFTOneChan) ReorderFFTData(src+HeaderSize(), dst_+HeaderSize(), DataSize());
+    if (fgswap == BR_FFTOneChan) ReorderFFTData((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize());
     else if (fgswap == BR_FFTTwoChan) {
-      ReorderFFTData(src+HeaderSize(), dst_+HeaderSize(), DataSize()/2);
-      ReorderFFTData(src+HeaderSize()+DataSize()/2, dst_+HeaderSize()+DataSize()/2, DataSize()/2);
+      ReorderFFTData((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()/2);
+      ReorderFFTData((SByte*)(src+HeaderSize()+DataSize()/2), (SByte*)(dst_+HeaderSize()+DataSize()/2), DataSize()/2);
     }
     // Byte swap (sur 8 octets) du trailer 
@@ -100,8 +100,8 @@
   
     // on reoordonne et on swappe en mem temps (Echange de deux mots de 4 octets)
-    if (fgswap == BR_FFTOneChan32) ReorderFFTData32(src+HeaderSize(), dst_+HeaderSize(), DataSize());
+    if (fgswap == BR_FFTOneChan32) ReorderFFTData32((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize());
     else if (fgswap == BR_FFTTwoChan32) {
-      ReorderFFTData32(src+HeaderSize(), dst_+HeaderSize(), DataSize()/2);
-      ReorderFFTData32(src+HeaderSize()+DataSize()/2, dst_+HeaderSize()+DataSize()/2, DataSize()/2);
+      ReorderFFTData32((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()/2);
+      ReorderFFTData32((SByte*)(src+HeaderSize()+DataSize()/2), (SByte*)(dst_+HeaderSize()+DataSize()/2), DataSize()/2);
     }
     // swap du trailler uniquement : Echange de deux mots de 4 octets
@@ -120,8 +120,8 @@
 
     // on reoordonne les coeff FFT (pas de swap) 
-    if (fgswap == BR_FFTOneChanNoSwap) ReorderFFTDataNoSwap(src+HeaderSize(), dst_+HeaderSize(), DataSize());
+    if (fgswap == BR_FFTOneChanNoSwap) ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize());
     else if (fgswap == BR_FFTTwoChanNoSwap) {
-      ReorderFFTDataNoSwap(src+HeaderSize(), dst_+HeaderSize(), DataSize()/2);
-      ReorderFFTDataNoSwap(src+HeaderSize()+DataSize()/2, dst_+HeaderSize()+DataSize()/2, DataSize()/2);
+      ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()), (SByte*)(dst_+HeaderSize()), DataSize()/2);
+      ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()+DataSize()/2), (SByte*)(dst_+HeaderSize()+DataSize()/2), DataSize()/2);
     }
     // copie du trailler uniquement : 
@@ -143,8 +143,8 @@
 
     // on reoordonne les coeff FFT (pas de swap) 
-    if (fgswap == BR_FFTOneChanNoSwap) ReorderFFTDataNoSwap(src+HeaderSize(), tmp+HeaderSize(), DataSize());
+    if (fgswap == BR_FFTOneChanNoSwap) ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()), (SByte*)(tmp+HeaderSize()), DataSize());
     else if (fgswap == BR_FFTTwoChanNoSwap) {
-      ReorderFFTDataNoSwap(src+HeaderSize(), tmp+HeaderSize(), DataSize()/2);
-      ReorderFFTDataNoSwap(src+HeaderSize()+DataSize()/2, tmp+HeaderSize()+DataSize()/2, DataSize()/2);
+      ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()), (SByte*)(tmp+HeaderSize()), DataSize()/2);
+      ReorderFFTDataNoSwap((SByte*)(src+HeaderSize()+DataSize()/2), (SByte*)(tmp+HeaderSize()+DataSize()/2), DataSize()/2);
     }
     memcpy(tmp+ HeaderSize(), src+(binMin+ HeaderSize()), nbBin); 
@@ -294,5 +294,5 @@
 
 /* --Methode__ */
-void BRPaquet::ReorderFFTData(Byte* src, Byte* dst, int N)
+void BRPaquet::ReorderFFTData(SByte* src, SByte* dst, int N)
 {
   // Code recopie depuis /Dev/DisplayData/HistoWindow.cc 
@@ -342,5 +342,5 @@
 }
 
-void BRPaquet::ReorderFFTData32(Byte* src, Byte* dst, int N)
+void BRPaquet::ReorderFFTData32(SByte* src, SByte* dst, int N)
 {
   // Code recopie depuis /Dev/DisplayData/HistoWindow.cc 
@@ -384,5 +384,5 @@
   return ; 
 }
-void BRPaquet::ReorderFFTDataNoSwap(Byte* src, Byte* dst, int N)
+void BRPaquet::ReorderFFTDataNoSwap(SByte* src, SByte* dst, int N)
 {
   // Code recopie depuis /Dev/DisplayData/HistoWindow.cc 
@@ -483,4 +483,5 @@
   lostframes = 0;
   frclst = 0;
+  lastframenum = 0;
   cnt_saut = 0;
   maxprt_ = maxprt;
@@ -506,7 +507,8 @@
 
 
-bool BRPaqChecker::Check(BRPaquet& paq)
+bool BRPaqChecker::Check(BRPaquet& paq, UInt64& numframe)
 {
   totnframes++; 
+  numframe=0;
   if (paq.HDRMarker64() != HDRTag()) return false;
   if (cktrl_&&(paq.TRLMarker64() != TRLTag())) return false;
@@ -534,5 +536,7 @@
     }
   }
-  nframeok++; frclst = curfc; 
+  nframeok++; frclst=curfc; 
+  lastframenum+=(unsigned long long)delfc;  // numero de frame sans repliement a 65535 
+  numframe=lastframenum;
 //DBG  if (cnt_pb<5) { cnt_pb++; paq.Print(); }
   return true;
Index: /trunk/AddOn/TAcq/brpaqu.h
===================================================================
--- /trunk/AddOn/TAcq/brpaqu.h	(revision 3658)
+++ /trunk/AddOn/TAcq/brpaqu.h	(revision 3659)
@@ -31,17 +31,14 @@
   explicit TwoByteComplex(double re, double im) { val_[0] = re; val_[1] = im; }
   
-  inline Byte& realB() { return  val_[0]; }
-  inline Byte& imagB() { return  val_[1]; }
-
-  inline SByte realSB() { return  ((SByte*)val_)[0]; }
-  inline SByte imagSB() { return  ((SByte*)val_)[1]; }
-
-  inline int realI() { return  ((SByte*)val_)[0]; }
-  inline int imagI() { return  ((SByte*)val_)[1]; }
-
-  inline double realD() { return  ((SByte*)val_)[0]; }
-  inline double imagD() { return  ((SByte*)val_)[1]; }
-
-  Byte val_[2];
+  inline SByte& realB() { return  val_[0]; }
+  inline SByte& imagB() { return  val_[1]; }
+
+  inline int realI() { return  (int)(val_)[0]; }
+  inline int imagI() { return  (int)(val_)[1]; }
+
+  inline double realD() { return  (double)(val_)[0]; }
+      inline double imagD() { return  (double)(val_)[1]; }
+
+  SByte val_[2];
 };
 
@@ -127,5 +124,16 @@
   inline Byte* Header() { return dst_+OFFSET; }
   inline Byte* Trailer() { return (dst_+sz_-BRTRLSIZE+OFFSET); }
-  
+
+  // Acces aux differentes zone de donnees en signed byte (-127 ... 127), donnees FFT
+  inline SByte* BeginS() { return (SByte*)(dst_+OFFSET); }
+  inline SByte* Data1S() { return (SByte*)(dst_+BRHDRSIZE+OFFSET); }
+  inline SByte* Data2S() { return (SByte*)(dst_+BRHDRSIZE+(DataSize()/2)+OFFSET); }
+
+  // Acces aux differentes zone de donnees en TwoByteComplex pour donnees FFT
+  inline int DataSizeC() { return (sz_-(BRHDRSIZE+BRTRLSIZE))/2; }
+  inline TwoByteComplex* BeginC() { return (TwoByteComplex*)(dst_+OFFSET); }
+  inline TwoByteComplex* Data1C() { return (TwoByteComplex*)(dst_+BRHDRSIZE+OFFSET); }
+  inline TwoByteComplex* Data2C() { return (TwoByteComplex*)(dst_+BRHDRSIZE+(DataSize()/2)+OFFSET); }
+
   // Valeurs differentes zones HDR/TRL
   inline UInt32 HDRMarker() {return *((UInt32*)(dst_+OFFSET));}
@@ -167,7 +175,7 @@
 
   // fonction appelee par le constructeur pour reordonner les donnees FFT 
-  static void ReorderFFTData(Byte* src, Byte* dst, int sz);
-  static void ReorderFFTData32(Byte* src, Byte* dst, int sz);
-  static void ReorderFFTDataNoSwap(Byte* src, Byte* dst, int sz);
+  static void ReorderFFTData(SByte* src, SByte* dst, int sz);
+  static void ReorderFFTData32(SByte* src, SByte* dst, int sz);
+  static void ReorderFFTDataNoSwap(SByte* src, SByte* dst, int sz);
   static const char* FmtConvToString(BRDataFmtConv fgswap);
 // protected:
@@ -184,4 +192,5 @@
 class BRPaqChecker {
 public: 
+  // if cktrl==true, check header AND trailer, ==false check header only 
   BRPaqChecker(bool cktrl=true, int maxprt=0);
   ~BRPaqChecker();
@@ -194,17 +203,28 @@
 
   // Verifie le paquet, renvoie true si OK
-  bool Check(BRPaquet& paq);
+  bool Check(BRPaquet& paq, UInt64& numframe);
+  inline bool Check(BRPaquet& paq)  { UInt64 nf; return Check(paq, nf); }
+
   // Imprime le compte de paquets ... 
   ostream & Print(ostream& os) const;
   inline ostream & Print() const { return Print(cout); }
 
-  unsigned long long totnframes;    // Nombre totale de frames/paquets traites 
-  unsigned long long  nframeok;     // Nombre totale de frames/paquets avec HDR/TRL OK
-  unsigned long long lostframes;    // Nombre totale de frames/paquets perdus 
-  unsigned int frclst;         // derniere valeur du frame-counter 
+  // Acces aux differents compteurs 
+  inline UInt64 NbPaqTotal() { return totnframes; }
+  inline UInt64 NbPaqOK() { return nframeok; }
+  inline UInt64 NbPaqLost() { return lostframes; }
+  inline UInt64 NbGaps() { return cnt_saut; }
+  inline UInt64 LastFrameNum() { return lastframenum; }
+
+protected:
+  UInt64 totnframes;    // Nombre totale de frames/paquets traites 
+  UInt64  nframeok;     // Nombre totale de frames/paquets avec HDR/TRL OK
+  UInt64 lostframes;    // Nombre totale de frames/paquets perdus 
+  UInt16 frclst;         // derniere valeur du frame-counter 
+  UInt64 lastframenum;    // Dernier numero de frame(=frame-counter, sans modulo 65535) 
 
   bool cktrl_;    // Verifie aussi le trailer si true
-  unsigned int cnt_saut;          // Nb de fois ou DeltaFrameCounter>1
-  unsigned int maxprt_;        // Nb maxi de print paquets perdus / probleme
+  UInt64 cnt_saut;          // Nb de fois ou DeltaFrameCounter>1
+  UInt32 maxprt_;           // Nb maxi de print paquets perdus / probleme
 
   UInt64 hdrtag_;
@@ -212,5 +232,5 @@
 };
 
-// Definition de l'operator << overloading - Appel de Prin() 
+// Definition de l'operator << overloading - Appel de Print() 
 inline ostream& operator << (ostream& s, BRPaqChecker const & chk)
   {  return chk.Print(s);  }
