Program Listing for File ParseDatagramHeader.h

Return to documentation for file (/tmp/ws/src/sick_safetyscanners_base/include/sick_safetyscanners_base/data_processing/ParseDatagramHeader.h)

// this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-

// -- BEGIN LICENSE BLOCK ----------------------------------------------

// -- END LICENSE BLOCK ------------------------------------------------

//----------------------------------------------------------------------
//----------------------------------------------------------------------

#ifndef SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_PARSEDATAGRAMHEADER_H
#define SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_PARSEDATAGRAMHEADER_H

#include "sick_safetyscanners_base/datastructure/Data.h"
#include "sick_safetyscanners_base/datastructure/DatagramHeader.h"
#include "sick_safetyscanners_base/datastructure/PacketBuffer.h"

#include "sick_safetyscanners_base/data_processing/ReadWriteHelper.hpp"

namespace sick {
namespace data_processing {

class ParseDatagramHeader
{
public:
  ParseDatagramHeader();

  bool parseUDPSequence(const datastructure::PacketBuffer& buffer,
                        sick::datastructure::DatagramHeader& header) const;

private:
  void setDataInHeader(std::vector<uint8_t>::const_iterator data_ptr,
                       datastructure::DatagramHeader& header) const;

  void setDatagramMarkerInHeader(std::vector<uint8_t>::const_iterator data_ptr,
                                 datastructure::DatagramHeader& header) const;
  void setProtocolInHeader(std::vector<uint8_t>::const_iterator data_ptr,
                           datastructure::DatagramHeader& header) const;
  void setMajorVersionInHeader(std::vector<uint8_t>::const_iterator data_ptr,
                               datastructure::DatagramHeader& header) const;
  void setMinorVersionInHeader(std::vector<uint8_t>::const_iterator data_ptr,
                               datastructure::DatagramHeader& header) const;
  void setTotalLengthInHeader(std::vector<uint8_t>::const_iterator data_ptr,
                              datastructure::DatagramHeader& header) const;
  void setIdentificationInHeader(std::vector<uint8_t>::const_iterator data_ptr,
                                 datastructure::DatagramHeader& header) const;
  void setFragmentOffsetInHeader(std::vector<uint8_t>::const_iterator data_ptr,
                                 datastructure::DatagramHeader& header) const;
};

} // namespace data_processing
} // namespace sick

#endif // SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_PARSEDATAGRAMHEADER_H