ParseDatagramHeader.cpp
Go to the documentation of this file.
00001 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
00002 
00003 // -- BEGIN LICENSE BLOCK ----------------------------------------------
00004 
00024 // -- END LICENSE BLOCK ------------------------------------------------
00025 
00026 //----------------------------------------------------------------------
00033 //----------------------------------------------------------------------
00034 
00035 #include <sick_safetyscanners/data_processing/ParseDatagramHeader.h>
00036 
00037 namespace sick {
00038 namespace data_processing {
00039 
00040 ParseDatagramHeader::ParseDatagramHeader()
00041 {
00042   m_reader_ptr = std::make_shared<sick::data_processing::ReadWriteHelper>();
00043 }
00044 
00045 bool ParseDatagramHeader::parseUDPSequence(const datastructure::PacketBuffer& buffer,
00046                                            datastructure::DatagramHeader& header) const
00047 {
00048   const uint8_t* data_ptr(buffer.getBuffer().data());
00049   setDataInHeader(data_ptr, header);
00050   return true;
00051 }
00052 
00053 void ParseDatagramHeader::setDataInHeader(const uint8_t*& data_ptr,
00054                                           datastructure::DatagramHeader& header) const
00055 {
00056   setDatagramMarkerInHeader(data_ptr, header);
00057   setProtocolInHeader(data_ptr, header);
00058   setMajorVersionInHeader(data_ptr, header);
00059   setMinorVersionInHeader(data_ptr, header);
00060   setTotalLengthInHeader(data_ptr, header);
00061   setIdentificationInHeader(data_ptr, header);
00062   setFragmentOffsetInHeader(data_ptr, header);
00063 }
00064 
00065 void ParseDatagramHeader::setDatagramMarkerInHeader(const uint8_t*& data_ptr,
00066                                                     datastructure::DatagramHeader& header) const
00067 {
00068   header.setDatagramMarker(m_reader_ptr->readuint32_tBigEndian(data_ptr, 0));
00069 }
00070 
00071 void ParseDatagramHeader::setProtocolInHeader(const uint8_t*& data_ptr,
00072                                               datastructure::DatagramHeader& header) const
00073 {
00074   header.setProtocol(m_reader_ptr->readuint16_tBigEndian(data_ptr, 4));
00075 }
00076 
00077 void ParseDatagramHeader::setMajorVersionInHeader(const uint8_t*& data_ptr,
00078                                                   datastructure::DatagramHeader& header) const
00079 {
00080   header.setMajorVersion(m_reader_ptr->readuint8_tLittleEndian(data_ptr, 6));
00081 }
00082 
00083 void ParseDatagramHeader::setMinorVersionInHeader(const uint8_t*& data_ptr,
00084                                                   datastructure::DatagramHeader& header) const
00085 {
00086   header.setMinorVersion(m_reader_ptr->readuint8_tLittleEndian(data_ptr, 7));
00087 }
00088 
00089 void ParseDatagramHeader::setTotalLengthInHeader(const uint8_t*& data_ptr,
00090                                                  datastructure::DatagramHeader& header) const
00091 {
00092   header.setTotalLength(m_reader_ptr->readuint32_tLittleEndian(data_ptr, 8));
00093 }
00094 
00095 void ParseDatagramHeader::setIdentificationInHeader(const uint8_t*& data_ptr,
00096                                                     datastructure::DatagramHeader& header) const
00097 {
00098   header.setIdentification(m_reader_ptr->readuint32_tLittleEndian(data_ptr, 12));
00099 }
00100 
00101 void ParseDatagramHeader::setFragmentOffsetInHeader(const uint8_t*& data_ptr,
00102                                                     datastructure::DatagramHeader& header) const
00103 {
00104   header.setFragmentOffset(m_reader_ptr->readuint32_tLittleEndian(data_ptr, 16));
00105 }
00106 
00107 } // namespace data_processing
00108 } // namespace sick


sick_safetyscanners
Author(s): Lennart Puck
autogenerated on Tue May 7 2019 03:27:36