otsdaq  v2_01_00
OtsDataSaverConsumer_processor.cc
1 #include "otsdaq-core/DataProcessorPlugins/OtsDataSaverConsumer.h"
2 #include "otsdaq-core/Macros/ProcessorPluginMacros.h"
3 
4 using namespace ots;
5 
6 //========================================================================================================================
7 OtsDataSaverConsumer::OtsDataSaverConsumer(std::string supervisorApplicationUID, std::string bufferUID, std::string processorUID, const ConfigurationTree& theXDAQContextConfigTree, const std::string& configurationPath)
8 : WorkLoop (processorUID)
9 , RawDataSaverConsumerBase(supervisorApplicationUID, bufferUID, processorUID, theXDAQContextConfigTree, configurationPath)
10 {
11 }
12 
13 //========================================================================================================================
14 OtsDataSaverConsumer::~OtsDataSaverConsumer(void)
15 {}
16 
17 //========================================================================================================================
18 void OtsDataSaverConsumer::writeHeader(void)
19 {}
20 
21 //========================================================================================================================
22 // add one byte quad-word count before each packet
23 void OtsDataSaverConsumer::writePacketHeader(const std::string& data)
24 {
25  unsigned char quadWordsCount = (data.length()-2)/8;
26  outFile_.write( (char*)&quadWordsCount, 1);
27 
28  //packetTypes is data[0]
29  //seqId is in data[1] position
30 
31  if(quadWordsCount)
32  {
33  unsigned char seqId = data[1];
34  if(!(lastSeqId_ + 1 == seqId ||
35  (lastSeqId_ == 255 && seqId == 0)))
36  {
37  __COUT__ << "?????? NOOOO Missing Packets: " <<
38  (unsigned int)lastSeqId_ << " v " << (unsigned int)seqId << __E__;
39  }
40  lastSeqId_ = seqId;
41  }
42 }
43 
44 DEFINE_OTS_PROCESSOR(OtsDataSaverConsumer)