source: Sophya/branches/Reza/AddOn/TAcq/brpaqu.cc@ 3670

Last change on this file since 3670 was 3537, checked in by ansari, 17 years ago

Ajout du module AddOn/TAcq (programmes test pour acquisition BAORadio) ds cvs sophya (sous-repertoire AddOn/) , Reza 22/10/2008

File size: 2.2 KB
Line 
1#include "brpaqu.h"
2
3
4static inline void bswap4(void* p)
5{
6 UInt32 tmp = *(UInt32*)p;
7 *(UInt32*)p = ((tmp >> 24) & 0x000000FF) |
8 ((tmp >> 8) & 0x0000FF00) |
9 ((tmp & 0x0000FF00) << 8) |
10 ((tmp & 0x000000FF) << 24);
11}
12
13BRPaquet::BRPaquet(Byte* src, Byte* dst, int paqsz)
14{
15 dst_ = dst;
16 sz_ = paqsz;
17 if ((src==NULL)||(dst==NULL)) return;
18 // On copie l'entete sans swapper
19 for(int k=0; k<BRHDRSIZE; k++) dst_[k] = src[k];
20 // On copie la zone donnees en faisant un byte-swap correspondant a 4 octets
21 for(int ka=BRHDRSIZE; ka<sz_-BRTRLSIZE; ka+=4) {
22 for(int kb=0; kb<4; kb++)
23 dst_[ka+kb] = src[ka+3-kb];
24 }
25 // On copie le trailer sans swapper
26 for(int k=sz_-1; k>=sz_-BRTRLSIZE; k--) dst_[k] = src[k];
27
28}
29
30
31void BRPaquet::Print(ostream & os, int nelt, bool prht)
32{
33 os << "BRPaquet::Print() PaqSz=" << PaquetSize() << " DataSize=" << DataSize()
34 << " dst_pointer=(hex)" << hex << (unsigned long)dst_ << dec << endl;
35 if (TrailerSize() > 0)
36 os << " ...HDRMarker(hex)=" << hex << HDRMarker() << " TRLMarker=" << TRLMarker() << dec << endl;
37 else
38 os << " ...HDRMarker(hex)=" << hex << HDRMarker() << " NO TRLMarker=" << dec << endl;
39 UInt32 tt1, tt2;
40// tt2 = (TimeTag()&0xFFFFFFFF00000000) >> 32;
41 tt2=0;
42 tt1 = TimeTag()&0x00000000FFFFFFFF;
43 os << " ...TimeTag (hex)=" << hex << TimeTag() << " TT1= " << tt1 << " TT2=" << tt2 << dec << endl;
44 if (nelt > DataSize()/2) nelt = DataSize()/2;
45 os << " ...Data[1.." << nelt << "]= ";
46 for(int k=0; k<nelt; k++) os << (int)(*(Data()+k)) << " , ";
47 os << endl;
48 os << " ...Data[" << DataSize()-nelt << ".." << DataSize()-1 << "]= ";
49 for(int k=DataSize()-nelt; k<DataSize(); k++) os << (int)(*(Data()+k)) << " , ";
50 os << endl;
51 if (prht) { // Impression header / trailer
52 UInt32* hdr = (UInt32*)Header();
53 os << " ...Header (hex):" << hex ;
54 for(int k=0; k<HeaderSize()/sizeof(UInt32); k++)
55 os << hdr[k] << " , " ;
56 os << dec << endl;
57 if (TrailerSize() > 0) {
58 UInt32* trl = (UInt32*)Trailer();
59 os << " ...Trailer (hex):" << hex ;
60 for(int k=0; k<TrailerSize()/sizeof(UInt32); k++)
61 os << trl[k] << " , " ;
62 os << dec << endl;
63 }
64 }
65}
Note: See TracBrowser for help on using the repository browser.