Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:20:41

0001 #include "packet_w124.h"
0002 
0003 Packet_w1::Packet_w1()
0004 {}
0005 
0006 
0007 Packet_w1::Packet_w1(PACKET_ptr packet_ptr)
0008   : Packet_A(packet_ptr)
0009 {
0010 }
0011 
0012 Packet_w2::Packet_w2()
0013 {}
0014 
0015 Packet_w2::Packet_w2(PACKET_ptr packet_ptr)
0016   : Packet_A(packet_ptr)
0017 {
0018 }
0019 
0020 Packet_w4::Packet_w4()
0021 {
0022 }
0023 
0024 Packet_w4::Packet_w4(PACKET_ptr packet_ptr)
0025   : Packet_A(packet_ptr)
0026 {
0027 }
0028 
0029 // ---- and the dump routines, which just call the 
0030 // ---- generic dump routines, but may be overloaded
0031 // ---- by the subclasses.
0032 
0033 void Packet_w1::dump(OSTREAM& out)  
0034 { 
0035   gdump(2,out);
0036   dumpErrorBlock(out);
0037   dumpDebugBlock(out);
0038 }
0039 
0040 void Packet_w2::dump(OSTREAM& out)  
0041 { 
0042   gdump(2,out);
0043   dumpErrorBlock(out);
0044   dumpDebugBlock(out);
0045 }
0046 
0047 void Packet_w4::dump(OSTREAM& out)  
0048 { 
0049   gdump(2,out);
0050   dumpErrorBlock(out);
0051   dumpDebugBlock(out);
0052 }
0053 
0054 
0055 void Packet_w4::gdump(const int i, OSTREAM& out) const
0056 {
0057   int j,l;
0058   
0059   int * packetData = (int *) findPacketDataStart (packet);
0060 
0061   if ( i == EVT_RAW)
0062     {
0063       fwrite(packetData, sizeof(int), getDataLength()-getPadding(), stdout);
0064       return;
0065     }
0066 
0067   if ( i == EVT_RAW_WH)
0068     {
0069       fwrite(packet, sizeof(int), getLength(), stdout);
0070       return;
0071     }
0072       
0073 
0074   identify(out);
0075 
0076   if (packetData == 0) 
0077     {
0078       return;
0079     }
0080 
0081   switch (i)
0082     {
0083     case (EVT_HEXADECIMAL):
0084       j = 0;
0085       while (1)
0086     {
0087       out << SETW(5) << j << " |  ";
0088       for (l=0;l<4;l++)
0089         {
0090           out << std::hex << SETW(8) << packetData[j++] << " " ;
0091           if (j>=getDataLength()) break;
0092         }
0093       if (j>=getDataLength() ) break;
0094       out << std::dec<< std::endl;
0095     } 
0096       out << std::dec<< std::endl;
0097       break;
0098      
0099     case (EVT_DECIMAL):
0100       j = 0;
0101       while (1)
0102     {
0103       out << std::dec << SETW(5) << j << " |  ";
0104              
0105       for (l=0;l<6;l++)
0106         {
0107           out << SETW(10) << packetData[j++] << " ";
0108           if (j>=getDataLength() ) break;
0109         }
0110       if (j>=getDataLength() ) break;
0111       out << std::endl;
0112     }
0113       out << std::dec<< std::endl;
0114       break;
0115      
0116     default: 
0117       break;
0118     }
0119   out << std::dec << std::endl << std::endl;
0120  
0121 }
0122 
0123 // ---------------------------------------------------------------------
0124 
0125 void Packet_w2::gdump(const int i, OSTREAM& out) const
0126 {
0127   short * packetData = (short *) findPacketDataStart (packet);
0128 
0129   if ( i == EVT_RAW)
0130     {
0131       fwrite(packetData, sizeof(short), getDataLength(), stdout);
0132       return;
0133     }
0134 
0135   if ( i == EVT_RAW_WH)
0136     {
0137       fwrite(packet, sizeof(int), getLength(), stdout);
0138       return;
0139     }
0140 
0141   identify(out);
0142   if (packetData == 0) 
0143     {
0144       return;
0145     }
0146 
0147   //      << SETW(6)  << packetHdr->sub_length
0148   //     << SETW(5)  << packetHdr->sub_id
0149   //     << SETW(4)  << packetHdr->sub_type
0150   //     << SETW(4)  << packetHdr->sub_std::decoding
0151   //     << "  (" << get_mnemonic(packetHdr->sub_std::decoding) << ")";
0152 
0153   int j,l;
0154 
0155   switch (i)
0156     {
0157     case (EVT_HEXADECIMAL):
0158       j = 0;
0159       while (1)
0160     {
0161       out << SETW(5) << j << " |  ";
0162       for (l=0;l<8;l++)
0163         {
0164           out << std::hex << SETW(4) << packetData[j++] << " " ;
0165           if (j>=getDataLength() ) break;
0166         }
0167       if (j>=getDataLength() ) break;
0168       out << std::dec <<  std::endl;
0169     }
0170       out << std::dec <<  std::endl;
0171       break;
0172 
0173     case (EVT_DECIMAL):
0174       j = 0;
0175       while (1)
0176     {
0177       out << SETW(5) << j << " |  ";
0178       for (l=0;l<8;l++)
0179         {
0180           out << SETW(6) << packetData[j++] << " ";
0181           if (j>=getDataLength()) break;
0182         }
0183       if (j>=getDataLength() ) break;
0184       out << std::endl;
0185     }
0186       out << std::dec <<  std::endl;
0187       break;
0188 
0189     default: 
0190       break;
0191     }
0192   out << std::dec << std::endl << std::endl;
0193 
0194 }
0195 // ---------------------------------------------------------------------
0196 
0197 void Packet_w1::gdump(const int i, OSTREAM& out) const
0198 {
0199 
0200   char * packetData = (char *) findPacketDataStart (packet);
0201 
0202   if ( i == EVT_RAW)
0203     {
0204       fwrite(packetData, sizeof(char), getDataLength(), stdout);
0205       return;
0206     }
0207 
0208   if ( i == EVT_RAW_WH)
0209     {
0210       fwrite(packet, sizeof(int), getLength(), stdout);
0211       return;
0212     }
0213 
0214   identify(out);
0215   if (packetData == 0) 
0216     {
0217       return;
0218     }
0219 
0220   int j,l;
0221   char cstring[20];
0222   char *c;
0223 
0224   j = 0;
0225   switch (i)
0226     {
0227     case (EVT_HEXADECIMAL):
0228       while (1)
0229     {
0230       c = cstring;
0231       out << std::dec << SETW(5) << j << " |  ";
0232       for (l=0;l<16;l++)
0233         {
0234           if (j < getDataLength() ) 
0235         {
0236           *c++ = packetData[j];
0237           out << std::hex << SETW(2) << packetData[j++] << " ";
0238         }
0239           else
0240         {
0241           *c++ = 0x20;
0242           out << std::dec << "   ";
0243         }
0244         }
0245       *c = 0;
0246       out << "  | " << cstring;
0247       if (j >= getDataLength() ) break;
0248       out << std::endl;
0249     }
0250       break;
0251 
0252     case (EVT_DECIMAL):
0253       while (1)
0254     {
0255       c = cstring;
0256       out << std::dec << SETW(5) << j << " |  ";
0257       for (l=0;l<12;l++)
0258         {
0259           if (j < getDataLength() ) 
0260         {
0261           *c++ = packetData[j];
0262           out << std::hex << SETW(4) << packetData[j++] << " ";
0263         }
0264           else
0265         {
0266           *c++ = 0x20;
0267           out << std::dec << "   ";
0268         }
0269         }
0270       *c = 0;
0271       out << "  | " << cstring;
0272       if (j >= getDataLength() ) break;
0273       out << std::endl;
0274     }
0275       break;
0276 
0277     default: break;
0278     }
0279   out << std::dec << std::endl << std::endl;
0280 }