#include "puzzled_frame.hh"
#include <DataFormats/clb_common_header.hh>
#include <DataFormats/infoword.hh>
#include "input_buffer_collector.hh"
#include <string.h>
#include <log.hh>
#include <utility>
#include <stdexcept>
 
Go to the source code of this file.
      
        
          | uint32_t calculate_number_of_items  | 
          ( | 
          Frame const &  | 
          frame | ) | 
           | 
        
      
 
Definition at line 35 of file puzzled_frame.cc.
   38   uint32_t 
const frame_length = frame.size();
 
   40   uint32_t 
const data_type = frame.getHeader()->DataType;
 
   45     InfoWord 
const*
const iw = 
static_cast<const InfoWord*
>(
 
   46         static_cast<const void*
>(frame.getPayload()));
 
   48     const unsigned int audiowordsize = iw->audioWordSize();
 
   50     nitems = (frame_length
 
   55     throw std::runtime_error(
"Unknown data type");
 
bool is_acoustic(unsigned int dt)
 
bool is_optical(unsigned int dt)
 
 
 
 
      
        
          | std::pair<unsigned int, unsigned int> opt_boundaries  | 
          ( | 
          CLBDataGram const &  | 
          dg,  | 
        
        
           | 
           | 
          std::size_t  | 
          max_size  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Definition at line 89 of file puzzled_frame.cc.
   93   std::size_t 
const previous_packets_size =
 
   94       dg.getCLBCommonHeader()->udpSequenceNumber()
 
   97   std::size_t 
const chunk_in_previous = previous_packets_size % 6;
 
   99   unsigned int const head =
 
  101         ? 6 - chunk_in_previous
 
  104   unsigned int const tail =
 
  107   return std::make_pair(head, tail);
 
 
 
 
Definition at line 116 of file puzzled_frame.cc.
  124           || 
c.begin()->second->getCLBCommonHeader()->udpSequenceNumber() == 0
 
  126       && 
"Precondition failed." 
  129   uint32_t current_seq_number = 0;
 
  130   unsigned int previous_chunk = 0;
 
  132   std::size_t 
const max_size = 
c.begin()->second->size();
 
  137       PuzzledFrame::container_t::const_iterator it = 
c.begin(), et = 
c.end();
 
  150                 << current_seq_number
 
  151                 << 
" not present in optical frame " 
  153                 << 
". Packet loss(?)";
 
  157       char* 
const dest = &frame.front() + size - previous_chunk;
 
  159       std::size_t 
const write_size = dg.
getPayloadSize() - bounds.first;
 
  161       std::memcpy(dest, dg.
getPayload() + bounds.first, write_size);
 
  163       size += write_size - previous_chunk;
 
  165       char* 
const dest = &frame.front() + size;
 
  169       std::memcpy(dest, dg.
getPayload(), write_size);
 
  175     previous_chunk = bounds.second;
 
  181   if (previous_chunk != 0) {
 
  182     LOG_DEBUG << 
"Missing last datagram(s) in optical frame " 
  184               << 
". Packet loss (?).";
 
  187     size -= previous_chunk;
 
  192   if (!
isTrailer(*
c.rbegin()->second->getCLBCommonHeader())) {
 
  193     LOG_DEBUG << 
"Missing trailer in optical frame " 
const char * getPayload() const 
 
const CLBCommonHeader * getCLBCommonHeader() const 
 
size_t getPayloadSize() const 
 
void add(std::string const &tag)
 
$WORKDIR ev_configure_dqsimulator txt echo process $DQ_SIMULATOR $i $SOURCE_HOST[$index] csh c(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&($DQ_SIMULATOR\-u\$NAME\$\-H\$SERVER\$\-M\$LOGGER\$\-d $DEBUG</dev/null > &/dev/null &))'
 
std::pair< unsigned int, unsigned int > opt_boundaries(CLBDataGram const &dg, std::size_t max_size)
 
 
 
 
      
        
          | std::pair<unsigned int, unsigned int> acou_boundaries  | 
          ( | 
          CLBDataGram const &  | 
          dg,  | 
        
        
           | 
           | 
          std::size_t  | 
          max_size,  | 
        
        
           | 
           | 
          std::size_t  | 
          item_size  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Definition at line 202 of file puzzled_frame.cc.
  207   unsigned int head = 0;
 
  208   unsigned int tail = 0;
 
  210   if (dg.getCLBCommonHeader()->udpSequenceNumber() != 0) {
 
  211     std::size_t 
const previous_audio_size =
 
  212         dg.getCLBCommonHeader()->udpSequenceNumber()
 
  216     std::size_t 
const chunk_in_previous = previous_audio_size % item_size;
 
  218     head = chunk_in_previous ? item_size - chunk_in_previous : 0;
 
  223     tail = (dg.size() - 
sizeof(
CLBCommonHeader) - 
sizeof(InfoWord)) % item_size;
 
  226   return std::make_pair(head, tail);
 
 
 
 
Definition at line 234 of file puzzled_frame.cc.
  239   uint32_t current_seq_number = 0;
 
  240   unsigned int previous_chunk = 0;
 
  242   std::size_t 
const max_size = 
c.begin()->second->size();
 
  246   InfoWord 
const& iw = *
static_cast<const InfoWord*
>(
 
  247       static_cast<const void*
>(
c.begin()->second->getPayload()));
 
  249   unsigned int const audio_word_size = iw.audioWordSize();
 
  252       PuzzledFrame::container_t::const_iterator it = 
c.begin(), et = 
c.end();
 
  266                 << current_seq_number
 
  267                 << 
" not present in acoustic frame " 
  269                 << 
". Packet loss(?)";
 
  273       size -= previous_chunk;
 
  276       char* 
const dest = &frame.front() + size;
 
  285     ++current_seq_number;
 
  286     previous_chunk = bounds.second;
 
  292   if (previous_chunk != 0) {
 
  293     LOG_DEBUG << 
"Missing last datagram(s) in acoustic frame " 
  295               << 
". Packet loss (?).";
 
  298     size -= previous_chunk;
 
const char * getPayload() const 
 
const CLBCommonHeader * getCLBCommonHeader() const 
 
size_t getPayloadSize() const 
 
void add(std::string const &tag)
 
$WORKDIR ev_configure_dqsimulator txt echo process $DQ_SIMULATOR $i $SOURCE_HOST[$index] csh c(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&($DQ_SIMULATOR\-u\$NAME\$\-H\$SERVER\$\-M\$LOGGER\$\-d $DEBUG</dev/null > &/dev/null &))'
 
std::pair< unsigned int, unsigned int > acou_boundaries(CLBDataGram const &dg, std::size_t max_size, std::size_t item_size)