Changeset 10863


Ignore:
Timestamp:
05/27/11 14:17:20 (14 years ago)
Author:
tbretz
Message:
Improved verbosity; switched on printing channel headers.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/fadctrl.cc

    r10859 r10863  
    6666    }
    6767
     68    /*
    6869    virtual void UpdateChannelHeader(int i)
    6970    {
     
    7374
    7475        Out() << fChannelHeader[i];
     76        if (fIsHexOutput)
     77            Out() << Converter::GetHex<uint16_t>(fChannelHeader, 16) << endl;
     78    }
     79    */
     80
     81    virtual void UpdateChannelHeaders()
     82    {
     83        // emit service with trigger counter from header
     84        if (!fIsVerbose)
     85            return;
     86
     87        Out() << dec << endl;
     88
     89        Out() << kBold << "ID: Crate=" << fEventHeader.Crate() << " Board=" << fEventHeader.Board() << endl;
     90        for (unsigned int c=0; c<FAD::kNumChips; c++)
     91        {
     92            Out() << "ReadoutWin #" << c << ":";
     93            for (unsigned int ch=0; ch<FAD::kNumChannelsPerChip; ch++)
     94                Out() << " " << setw(4) << fChannelHeader[c*FAD::kNumChannelsPerChip+ch].fRegionOfInterest;
     95            Out() << endl;
     96        }
     97
     98        for (unsigned int c=0; c<FAD::kNumChips; c++)
     99        {
     100            Out() << "StartCells #" << c << ":";
     101            for (unsigned int ch=0; ch<FAD::kNumChannelsPerChip; ch++)
     102                Out() << " " << setw(4) << fChannelHeader[c*FAD::kNumChannelsPerChip+ch].fStartCell;
     103            Out() << endl;
     104        }
     105
    75106        if (fIsHexOutput)
    76107            Out() << Converter::GetHex<uint16_t>(fChannelHeader, 16) << endl;
     
    113144        }
    114145
    115         // FIXME FIXME FIXME. The data block could have the same size!!!!!
    116         // !!!!!!!!!!!!!!!!!!!
    117146        if (type==kReadHeader)
    118147        {
     
    164193        }
    165194
    166         /*
    167195        uint8_t *ptr = reinterpret_cast<uint8_t*>(fBuffer.data());
     196        uint8_t *end = ptr + fBuffer.size()*2;
    168197        for (unsigned int i=0; i<FAD::kNumChannels; i++)
    169198        {
    170             if (ptr+sizeof(FAD::ChannelHeader)/2 > reinterpret_cast<uint8_t*>(fBuffer.data())+fBuffer.size()*2)
     199            if (ptr+sizeof(FAD::ChannelHeader) > end)
    171200            {
    172                 Error("WRONG SIZE1");
    173                 break;
     201                Error("Channel header exceeds buffer size.");
     202                PostClose(false);
     203                return;
    174204            }
    175205
    176             // FIXME: Size consistency check!!!!
    177206            fChannelHeader[i] = vector<uint16_t>((uint16_t*)ptr, (uint16_t*)ptr+sizeof(FAD::ChannelHeader)/2);
    178207            ptr += sizeof(FAD::ChannelHeader);
    179208
    180             // FIXME CHECK: Event Size vs ROI
    181 
    182             UpdateChannelHeader(i);
    183 
    184             if (ptr+fChannelHeader[i].fRegionOfInterest*2 > reinterpret_cast<uint8_t*>(fBuffer.data())+fBuffer.size()*2)
     209            //UpdateChannelHeader(i);
     210
     211            if (ptr+fChannelHeader[i].fRegionOfInterest*2 > end)
    185212            {
    186                 Error("WRONG SIZE2");
    187                 break;
     213                Error("Data block exceeds buffer size.");
     214                PostClose(false);
     215                return;
    188216            }
    189217
    190218            uint16_t *data = reinterpret_cast<uint16_t*>(ptr);
     219
     220            /*
    191221            for (uint16_t *d=data; d<data+fChannelHeader[i].fRegionOfInterest; d++)
    192222            {
     
    209239                }
    210240            }
     241            */
    211242
    212243            UpdateData(data, fChannelHeader[i].fRegionOfInterest*2);
    213244            ptr += fChannelHeader[i].fRegionOfInterest*2;
    214         }*/
     245        }
     246
     247        UpdateChannelHeaders();
    215248
    216249        fBuffer.resize(sizeof(FAD::EventHeader)/2);
     
    310343    ConnectionFAD(ba::io_service& ioservice, MessageImp &imp) :
    311344    Connection(ioservice, imp()),
    312     fIsVerbose(true), fIsHexOutput(false), fIsDataOutput(false), fCounter(0)
     345    fIsVerbose(false), fIsHexOutput(false), fIsDataOutput(false), fCounter(0)
    313346    {
    314347        // Maximum possible needed space:
Note: See TracChangeset for help on using the changeset viewer.