Changeset 3658 in Sophya for trunk/AddOn/TAcq/brpaqu.cc


Ignore:
Timestamp:
Oct 18, 2009, 11:10:33 AM (16 years ago)
Author:
ansari
Message:

1/ Gestion multi-fibre ds RAcqMemZoneMgr et les DMAReader/DiskWriter (brproc.cc)
2/ Possibilite d'ajout de mot cle ds l'entete FITS par la classe MiniFITSFile

Reza , 18/10/2009

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/AddOn/TAcq/brpaqu.cc

    r3642 r3658  
    1414
    1515/* --Methode__ */
    16 BRPaquet::BRPaquet(Byte* src, Byte* dst, int paqsz, BRDataFmtConv fgswap)
     16BRPaquet::BRPaquet(Byte* src, Byte* dst, int paqsz, BRDataFmtConv fgswap,int binMin,int nbBin )
    1717  // swapall = true -> on swap tout le paquet, sinon swap entete seulement
    1818{
     
    2424  UInt32* src32 = (UInt32*)src;
    2525  UInt32* dst32 = (UInt32*)dst;
    26 
     26  Byte* tmp = new Byte[sz_];
     27 
    2728  switch ( fgswap ) {
    2829  case BR_DoNothing :  // rien a faire
     
    3132    memcpy(dst_, src, sz_);
    3233    break;
     34  case BR_Copy_Reduc : // copie directe
     35   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   
    3344  case BR_Swap32 : // On swappe toutes les donnees du paquet
    3445  //  les bytes sont dans l'ordre par paquet de 4 octets (Int32) , les deux Int32 de
     
    3748      dst32[ka] = src32[ka+1];
    3849      dst32[ka+1] = src32[ka];
    39     }
    40    
     50    }   
    4151    break;
    4252  case BR_SwapAll:
     
    4757      }
    4858    }
    49     for(int ka=HeaderSize()+DataSize(); ka<sz_; ka+=8) {
     59  for(int ka=HeaderSize()+DataSize(); ka<sz_; ka+=8) {
    5060      for(int kb=0; kb<4; kb++) {
    5161        dst_[ka+kb] = src[ka+3-kb+4];   
     
    100110      dst32[ka+1] = src32[ka];
    101111    }
    102    
     112    break;
    103113  case BR_FFTOneChanNoSwap :
    104114  case BR_FFTTwoChanNoSwap :
     
    117127    // copie du trailler uniquement :
    118128     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
    119138   
    120     break;
     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(src+HeaderSize(), tmp+HeaderSize(), DataSize());
     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);
     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;
    121159  }  // Fin switch
    122160
Note: See TracChangeset for help on using the changeset viewer.