ParseDatagramHeader.cpp
Go to the documentation of this file.
1 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
2 
3 // -- BEGIN LICENSE BLOCK ----------------------------------------------
4 
24 // -- END LICENSE BLOCK ------------------------------------------------
25 
26 //----------------------------------------------------------------------
33 //----------------------------------------------------------------------
34 
36 
37 namespace sick {
38 namespace data_processing {
39 
41 {
42  m_reader_ptr = std::make_shared<sick::data_processing::ReadWriteHelper>();
43 }
44 
46  datastructure::DatagramHeader& header) const
47 {
48  const uint8_t* data_ptr(buffer.getBuffer().data());
49  setDataInHeader(data_ptr, header);
50  return true;
51 }
52 
53 void ParseDatagramHeader::setDataInHeader(const uint8_t*& data_ptr,
54  datastructure::DatagramHeader& header) const
55 {
56  setDatagramMarkerInHeader(data_ptr, header);
57  setProtocolInHeader(data_ptr, header);
58  setMajorVersionInHeader(data_ptr, header);
59  setMinorVersionInHeader(data_ptr, header);
60  setTotalLengthInHeader(data_ptr, header);
61  setIdentificationInHeader(data_ptr, header);
62  setFragmentOffsetInHeader(data_ptr, header);
63 }
64 
65 void ParseDatagramHeader::setDatagramMarkerInHeader(const uint8_t*& data_ptr,
66  datastructure::DatagramHeader& header) const
67 {
68  header.setDatagramMarker(m_reader_ptr->readuint32_tBigEndian(data_ptr, 0));
69 }
70 
71 void ParseDatagramHeader::setProtocolInHeader(const uint8_t*& data_ptr,
72  datastructure::DatagramHeader& header) const
73 {
74  header.setProtocol(m_reader_ptr->readuint16_tBigEndian(data_ptr, 4));
75 }
76 
77 void ParseDatagramHeader::setMajorVersionInHeader(const uint8_t*& data_ptr,
78  datastructure::DatagramHeader& header) const
79 {
80  header.setMajorVersion(m_reader_ptr->readuint8_tLittleEndian(data_ptr, 6));
81 }
82 
83 void ParseDatagramHeader::setMinorVersionInHeader(const uint8_t*& data_ptr,
84  datastructure::DatagramHeader& header) const
85 {
86  header.setMinorVersion(m_reader_ptr->readuint8_tLittleEndian(data_ptr, 7));
87 }
88 
89 void ParseDatagramHeader::setTotalLengthInHeader(const uint8_t*& data_ptr,
90  datastructure::DatagramHeader& header) const
91 {
92  header.setTotalLength(m_reader_ptr->readuint32_tLittleEndian(data_ptr, 8));
93 }
94 
95 void ParseDatagramHeader::setIdentificationInHeader(const uint8_t*& data_ptr,
96  datastructure::DatagramHeader& header) const
97 {
98  header.setIdentification(m_reader_ptr->readuint32_tLittleEndian(data_ptr, 12));
99 }
100 
102  datastructure::DatagramHeader& header) const
103 {
104  header.setFragmentOffset(m_reader_ptr->readuint32_tLittleEndian(data_ptr, 16));
105 }
106 
107 } // namespace data_processing
108 } // namespace sick
A packetbuffer for the raw data from the sensor.
Definition: PacketBuffer.h:61
void setMinorVersion(const uint8_t &value)
Sets the minor version number.
std::shared_ptr< sick::data_processing::ReadWriteHelper > m_reader_ptr
void setProtocol(const uint16_t &value)
Sets the used protocol.
void setMinorVersionInHeader(const uint8_t *&data_ptr, datastructure::DatagramHeader &header) const
void setIdentificationInHeader(const uint8_t *&data_ptr, datastructure::DatagramHeader &header) const
const VectorBuffer & getBuffer() const
Getter to return the VectorBuffer saved in the PacketBuffer.
ParseDatagramHeader()
Constructor of the parser.
void setTotalLength(const uint32_t &value)
Sets the total length of the data packet.
void setProtocolInHeader(const uint8_t *&data_ptr, datastructure::DatagramHeader &header) const
void setDataInHeader(const uint8_t *&data_ptr, datastructure::DatagramHeader &header) const
void setDatagramMarker(const uint32_t &value)
Sets the datagram marker.
void setMajorVersion(const uint8_t &value)
Sets the major version number.
void setIdentification(const uint32_t &value)
Sets the identification of the data.
void setMajorVersionInHeader(const uint8_t *&data_ptr, datastructure::DatagramHeader &header) const
void setFragmentOffsetInHeader(const uint8_t *&data_ptr, datastructure::DatagramHeader &header) const
bool parseUDPSequence(const datastructure::PacketBuffer &buffer, sick::datastructure::DatagramHeader &header) const
Parses the udp sequence to get the identification and the offset for the datagram header...
Contains the contents of a udp datagram header. Used to match the datagrams together to form a comple...
void setTotalLengthInHeader(const uint8_t *&data_ptr, datastructure::DatagramHeader &header) const
void setFragmentOffset(const uint32_t &value)
Sets the fragment offset of the data.
void setDatagramMarkerInHeader(const uint8_t *&data_ptr, datastructure::DatagramHeader &header) const


sick_safetyscanners
Author(s): Lennart Puck
autogenerated on Thu May 9 2019 02:41:08