ParseDerivedValues.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 
47  datastructure::Data& data) const
48 {
49  datastructure::DerivedValues derived_values;
50 
51 
52  if (!checkIfPreconditionsAreMet(data))
53  {
54  derived_values.setIsEmpty(true);
55  return derived_values;
56  }
57  const uint8_t* data_ptr(buffer.getBuffer().data() +
58  data.getDataHeaderPtr()->getDerivedValuesBlockOffset());
59  setDataInDerivedValues(data_ptr, derived_values);
60  return derived_values;
61 }
62 
64 {
66  {
67  return false;
68  }
70  {
71  return false;
72  }
73 
74  return true;
75 }
76 
78 {
79  if (data.getDataHeaderPtr()->getDerivedValuesBlockOffset() == 0 &&
80  data.getDataHeaderPtr()->getDerivedValuesBlockSize() == 0)
81  {
82  return false;
83  }
84  return true;
85 }
86 
88  const datastructure::Data& data) const
89 {
90  if (data.getDataHeaderPtr()->isEmpty())
91  {
92  return false;
93  }
94  return true;
95 }
96 
97 void ParseDerivedValues::setDataInDerivedValues(const uint8_t*& data_ptr,
98  datastructure::DerivedValues& derived_values) const
99 {
100  setMultiplicationFactorInDerivedValues(data_ptr, derived_values);
101  setNumberOfBeamsInDerivedValues(data_ptr, derived_values);
102  setScanTimeInDerivedValues(data_ptr, derived_values);
103  setStartAngleInDerivedValues(data_ptr, derived_values);
104  setAngularBeamResolutionInDerivedValues(data_ptr, derived_values);
105  setInterbeamPeriodInDerivedValues(data_ptr, derived_values);
106 }
107 
109  const uint8_t*& data_ptr, datastructure::DerivedValues& derived_values) const
110 {
111  derived_values.setMultiplicationFactor(m_reader_ptr->readuint16_tLittleEndian(data_ptr, 0));
112 }
113 
115  const uint8_t*& data_ptr, datastructure::DerivedValues& derived_values) const
116 {
117  derived_values.setNumberOfBeams(m_reader_ptr->readuint16_tLittleEndian(data_ptr, 2));
118 }
119 
121  const uint8_t*& data_ptr, datastructure::DerivedValues& derived_values) const
122 {
123  derived_values.setScanTime(m_reader_ptr->readuint16_tLittleEndian(data_ptr, 4));
124 }
125 
127  const uint8_t*& data_ptr, datastructure::DerivedValues& derived_values) const
128 {
129  derived_values.setStartAngle(m_reader_ptr->readint32_tLittleEndian(data_ptr, 8));
130 }
131 
133  const uint8_t*& data_ptr, datastructure::DerivedValues& derived_values) const
134 {
135  derived_values.setAngularBeamResolution(m_reader_ptr->readint32_tLittleEndian(data_ptr, 12));
136 }
137 
139  const uint8_t*& data_ptr, datastructure::DerivedValues& derived_values) const
140 {
141  derived_values.setInterbeamPeriod(m_reader_ptr->readuint32_tLittleEndian(data_ptr, 16));
142 }
143 
144 } // namespace data_processing
145 } // namespace sick
void setScanTime(const uint16_t &scan_time)
Sets the time of the scan.
void setMultiplicationFactorInDerivedValues(const uint8_t *&data_ptr, datastructure::DerivedValues &derived_values) const
void setAngularBeamResolution(const int32_t &angular_beam_resolution)
Set the angular resolution between beams.
bool checkIfPreconditionsAreMet(const datastructure::Data &data) const
A packetbuffer for the raw data from the sensor.
Definition: PacketBuffer.h:61
void setIsEmpty(bool is_empty)
Set if derived values are enabled.
void setNumberOfBeams(const uint16_t &number_of_beams)
Sets the number of beams for the current scan.
bool checkIfDataContainsNeededParsedBlocks(const datastructure::Data &data) const
void setAngularBeamResolutionInDerivedValues(const uint8_t *&data_ptr, datastructure::DerivedValues &derived_values) const
ParseDerivedValues()
Constructor of the parser.
void setMultiplicationFactor(const uint16_t &multiplication_factor)
Sets the multiplication factor.
The data class containing all data blocks of a measurement.
Definition: Data.h:55
datastructure::DerivedValues parseUDPSequence(const datastructure::PacketBuffer &buffer, datastructure::Data &data) const
Parsed the packet buffer and returns the derived values.
bool checkIfDerivedValuesIsPublished(const datastructure::Data &data) const
const VectorBuffer & getBuffer() const
Getter to return the VectorBuffer saved in the PacketBuffer.
void setNumberOfBeamsInDerivedValues(const uint8_t *&data_ptr, datastructure::DerivedValues &derived_values) const
The DerivedValues class Includes the derived configuration of the measurement data channel...
Definition: DerivedValues.h:48
void setInterbeamPeriodInDerivedValues(const uint8_t *&data_ptr, datastructure::DerivedValues &derived_values) const
void setDataInDerivedValues(const uint8_t *&data_ptr, datastructure::DerivedValues &derived_values) const
void setStartAngle(const int32_t &start_angle)
Set the start angle of the scan.
std::shared_ptr< DataHeader > getDataHeaderPtr() const
Gets the data header.
Definition: Data.cpp:42
void setStartAngleInDerivedValues(const uint8_t *&data_ptr, datastructure::DerivedValues &derived_values) const
void setScanTimeInDerivedValues(const uint8_t *&data_ptr, datastructure::DerivedValues &derived_values) const
std::shared_ptr< sick::data_processing::ReadWriteHelper > m_reader_ptr
void setInterbeamPeriod(const uint32_t &interbeam_period)
Set the time between two consecutive beams.


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