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 
43  datastructure::DatagramHeader& header) const
44 {
45  // Keep our own copy of the shared_ptr to keep the iterators valid
46  const std::shared_ptr<std::vector<uint8_t> const> vec_ptr = buffer.getBuffer();
47  std::vector<uint8_t>::const_iterator data_ptr = vec_ptr->begin();
48  setDataInHeader(data_ptr, header);
49  return true;
50 }
51 
52 void ParseDatagramHeader::setDataInHeader(std::vector<uint8_t>::const_iterator data_ptr,
53  datastructure::DatagramHeader& header) const
54 {
56  setProtocolInHeader(data_ptr, header);
59  setTotalLengthInHeader(data_ptr, header);
62 }
63 
64 void ParseDatagramHeader::setDatagramMarkerInHeader(std::vector<uint8_t>::const_iterator data_ptr,
65  datastructure::DatagramHeader& header) const
66 {
67  header.setDatagramMarker(read_write_helper::readUint32BigEndian(data_ptr + 0));
68 }
69 
70 void ParseDatagramHeader::setProtocolInHeader(std::vector<uint8_t>::const_iterator data_ptr,
71  datastructure::DatagramHeader& header) const
72 {
73  header.setProtocol(read_write_helper::readUint16BigEndian(data_ptr + 4));
74 }
75 
76 void ParseDatagramHeader::setMajorVersionInHeader(std::vector<uint8_t>::const_iterator data_ptr,
77  datastructure::DatagramHeader& header) const
78 {
79  header.setMajorVersion(read_write_helper::readUint8LittleEndian(data_ptr + 6));
80 }
81 
82 void ParseDatagramHeader::setMinorVersionInHeader(std::vector<uint8_t>::const_iterator data_ptr,
83  datastructure::DatagramHeader& header) const
84 {
85  header.setMinorVersion(read_write_helper::readUint8LittleEndian(data_ptr + 7));
86 }
87 
88 void ParseDatagramHeader::setTotalLengthInHeader(std::vector<uint8_t>::const_iterator data_ptr,
89  datastructure::DatagramHeader& header) const
90 {
91  header.setTotalLength(read_write_helper::readUint32LittleEndian(data_ptr + 8));
92 }
93 
94 void ParseDatagramHeader::setIdentificationInHeader(std::vector<uint8_t>::const_iterator data_ptr,
95  datastructure::DatagramHeader& header) const
96 {
97  header.setIdentification(read_write_helper::readUint32LittleEndian(data_ptr + 12));
98 }
99 
100 void ParseDatagramHeader::setFragmentOffsetInHeader(std::vector<uint8_t>::const_iterator data_ptr,
101  datastructure::DatagramHeader& header) const
102 {
103  header.setFragmentOffset(read_write_helper::readUint32LittleEndian(data_ptr + 16));
104 }
105 
106 } // namespace data_processing
107 } // namespace sick
sick::data_processing::ParseDatagramHeader::setDatagramMarkerInHeader
void setDatagramMarkerInHeader(std::vector< uint8_t >::const_iterator data_ptr, datastructure::DatagramHeader &header) const
Definition: ParseDatagramHeader.cpp:64
sick::data_processing::ParseDatagramHeader::parseUDPSequence
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.
Definition: ParseDatagramHeader.cpp:42
sick::data_processing::ParseDatagramHeader::setTotalLengthInHeader
void setTotalLengthInHeader(std::vector< uint8_t >::const_iterator data_ptr, datastructure::DatagramHeader &header) const
Definition: ParseDatagramHeader.cpp:88
sick
Definition: ApplicationNameVariableCommand.h:43
sick::data_processing::ParseDatagramHeader::setMinorVersionInHeader
void setMinorVersionInHeader(std::vector< uint8_t >::const_iterator data_ptr, datastructure::DatagramHeader &header) const
Definition: ParseDatagramHeader.cpp:82
sick::data_processing::ParseDatagramHeader::setMajorVersionInHeader
void setMajorVersionInHeader(std::vector< uint8_t >::const_iterator data_ptr, datastructure::DatagramHeader &header) const
Definition: ParseDatagramHeader.cpp:76
sick::read_write_helper::readUint32LittleEndian
uint32_t readUint32LittleEndian(std::vector< uint8_t >::const_iterator it)
Read an unsigned 32-bit integer at offset in little endian encoding.
Definition: ReadWriteHelper.hpp:341
sick::read_write_helper::readUint8LittleEndian
uint8_t readUint8LittleEndian(std::vector< uint8_t >::const_iterator it)
Read an unsigned 8-bit integer at offset in big little encoding.
Definition: ReadWriteHelper.hpp:224
sick::data_processing::ParseDatagramHeader::setProtocolInHeader
void setProtocolInHeader(std::vector< uint8_t >::const_iterator data_ptr, datastructure::DatagramHeader &header) const
Definition: ParseDatagramHeader.cpp:70
sick::read_write_helper::readUint32BigEndian
uint32_t readUint32BigEndian(std::vector< uint8_t >::const_iterator it)
Read an unsigned 32-bit integer at offset in big endian encoding.
Definition: ReadWriteHelper.hpp:328
sick::datastructure::PacketBuffer::getBuffer
std::shared_ptr< std::vector< uint8_t > const > getBuffer() const
Getter to return a copy of the data saved in the PacketBuffer.
Definition: PacketBuffer.cpp:53
sick::data_processing::ParseDatagramHeader::ParseDatagramHeader
ParseDatagramHeader()
Constructor of the parser.
Definition: ParseDatagramHeader.cpp:40
sick::data_processing::ParseDatagramHeader::setDataInHeader
void setDataInHeader(std::vector< uint8_t >::const_iterator data_ptr, datastructure::DatagramHeader &header) const
Definition: ParseDatagramHeader.cpp:52
ParseDatagramHeader.h
sick::datastructure::DatagramHeader
Contains the contents of a udp datagram header. Used to match the datagrams together to form a comple...
Definition: DatagramHeader.h:48
sick::datastructure::PacketBuffer
A packetbuffer for the raw data from the sensor.
Definition: PacketBuffer.h:61
sick::data_processing::ParseDatagramHeader::setFragmentOffsetInHeader
void setFragmentOffsetInHeader(std::vector< uint8_t >::const_iterator data_ptr, datastructure::DatagramHeader &header) const
Definition: ParseDatagramHeader.cpp:100
sick::read_write_helper::readUint16BigEndian
uint16_t readUint16BigEndian(std::vector< uint8_t >::const_iterator it)
Read an unsigned 16-bit integer at offset in big endian encoding.
Definition: ReadWriteHelper.hpp:276
header
const std::string header
sick::data_processing::ParseDatagramHeader::setIdentificationInHeader
void setIdentificationInHeader(std::vector< uint8_t >::const_iterator data_ptr, datastructure::DatagramHeader &header) const
Definition: ParseDatagramHeader.cpp:94


sick_safetyscanners
Author(s): Lennart Puck
autogenerated on Fri Jun 21 2024 02:40:51