src
data_processing
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
35
#include <
sick_safetyscanners/data_processing/ParseDatagramHeader.h
>
36
37
namespace
sick
{
38
namespace
data_processing {
39
40
ParseDatagramHeader::ParseDatagramHeader
() {}
41
42
bool
ParseDatagramHeader::parseUDPSequence
(
const
datastructure::PacketBuffer
& buffer,
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
{
55
setDatagramMarkerInHeader
(data_ptr,
header
);
56
setProtocolInHeader
(data_ptr,
header
);
57
setMajorVersionInHeader
(data_ptr,
header
);
58
setMinorVersionInHeader
(data_ptr,
header
);
59
setTotalLengthInHeader
(data_ptr,
header
);
60
setIdentificationInHeader
(data_ptr,
header
);
61
setFragmentOffsetInHeader
(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