CoLaParameterReader.cpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2023 SICK AG, Waldkirch
3 //
4 // SPDX-License-Identifier: Unlicense
5 
6 #include "CoLaParameterReader.h"
7 #include "VisionaryEndian.h"
8 #include <stdexcept>
9 
10 namespace visionary {
11 
13 {
14  m_currentPosition = command.getParameterOffset();
15 }
16 
18 
19 void CoLaParameterReader::checkSize(size_t pos, size_t size)
20 {
21  if ((pos + size) > m_command.getBuffer().size())
22  {
23  throw std::out_of_range("");
24  }
25 }
26 
28 {
30 }
31 
33 {
34  const auto value = static_cast<int8_t>(m_command.getBuffer().at(m_currentPosition));
35  m_currentPosition += 1;
36  return value;
37 }
38 
40 {
41  const uint8_t value = m_command.getBuffer().at(m_currentPosition);
42  m_currentPosition += 1;
43  return value;
44 }
45 
47 {
49  const auto value = readUnalignBigEndian<int16_t>(&m_command.getBuffer()[m_currentPosition]);
50  m_currentPosition += 2;
51  return value;
52 }
53 
55 {
57  const auto value = readUnalignBigEndian<uint16_t>(&m_command.getBuffer()[m_currentPosition]);
58  m_currentPosition += 2;
59  return value;
60 }
61 
63 {
65  const auto value = readUnalignBigEndian<int32_t>(&m_command.getBuffer()[m_currentPosition]);
66  m_currentPosition += 4;
67  return value;
68 }
69 
71 {
73  const auto value = readUnalignBigEndian<uint32_t>(&m_command.getBuffer()[m_currentPosition]);
74  m_currentPosition += 4;
75  return value;
76 }
77 
79 {
81  const auto value = readUnalignBigEndian<float>(&m_command.getBuffer()[m_currentPosition]);
82  m_currentPosition += 4;
83  return value;
84 }
85 
87 {
89  const auto value = readUnalignBigEndian<double>(&m_command.getBuffer()[m_currentPosition]);
90  m_currentPosition += 8;
91  return value;
92 }
93 
95 {
96  return readUSInt() == 1;
97 }
98 
100 {
101  std::string str;
102  uint16_t len = readUInt();
103  return readFixedString(len);
104 }
105 
106 std::string CoLaParameterReader::readFixedString(uint16_t len)
107 {
108  std::string str;
109  if (len)
110  {
112  str = std::string(reinterpret_cast<const char*>(&m_command.getBuffer()[m_currentPosition]), len);
113  }
114  m_currentPosition += len;
115  return str;
116 }
117 
118 } // namespace visionary
visionary::CoLaCommand::getParameterOffset
std::size_t getParameterOffset() const
Get offset in bytes to where first parameter starts.
Definition: CoLaCommand.cpp:154
VisionaryEndian.h
visionary::CoLaParameterReader::readInt
int16_t readInt()
Read a signed int (16 bit, range [-32768, 32767]) and advances position by 2 bytes....
Definition: CoLaParameterReader.cpp:46
visionary::CoLaParameterReader::CoLaParameterReader
CoLaParameterReader(CoLaCommand command)
Definition: CoLaParameterReader.cpp:12
visionary::CoLaParameterReader::readReal
float readReal()
Read a IEEE-754 single precision (32 bit) and advances position by 4 bytes. Throws an std::out_of_ran...
Definition: CoLaParameterReader.cpp:78
visionary
Definition: MD5.cpp:44
visionary::CoLaCommand
Definition: CoLaCommand.h:17
command
ROSLIB_DECL std::string command(const std::string &cmd)
visionary::CoLaParameterReader::m_command
CoLaCommand m_command
Definition: CoLaParameterReader.h:21
visionary::CoLaParameterReader::readSInt
int8_t readSInt()
Read a signed short int (8 bit, range [-128, 127]) and advances position by 1 byte....
Definition: CoLaParameterReader.cpp:32
visionary::CoLaCommand::getBuffer
const ByteBuffer & getBuffer() const
Get the binary data buffer.
Definition: CoLaCommand.cpp:139
visionary::CoLaParameterReader::rewind
void rewind()
Rewind the position to the first parameter.
Definition: CoLaParameterReader.cpp:27
visionary::CoLaParameterReader::checkSize
void checkSize(size_t pos, size_t size)
Definition: CoLaParameterReader.cpp:19
visionary::CoLaParameterReader::readFixedString
std::string readFixedString(uint16_t len)
Read a string (with a known and fixed length), and advance position according to string size....
Definition: CoLaParameterReader.cpp:106
visionary::CoLaParameterReader::readUSInt
uint8_t readUSInt()
Read a unsigned short int (8 bit, range [0, 255]) and advances position by 1 byte....
Definition: CoLaParameterReader.cpp:39
visionary::CoLaParameterReader::readBool
bool readBool()
Read a boolean and advance the position by 1 byte. Throws an std::out_of_range exception if CoLaComma...
Definition: CoLaParameterReader.cpp:94
visionary::CoLaParameterReader::readUInt
uint16_t readUInt()
Read a unsigned int (16 bit, range [0, 65535]) and advances position by 2 bytes. Throws an std::out_o...
Definition: CoLaParameterReader.cpp:54
visionary::CoLaParameterReader::readDInt
int32_t readDInt()
Read a signed double int (32 bit) and advances position by 4 bytes. Throws an std::out_of_range excep...
Definition: CoLaParameterReader.cpp:62
CoLaParameterReader.h
visionary::CoLaParameterReader::~CoLaParameterReader
~CoLaParameterReader()
visionary::CoLaParameterReader::readLReal
double readLReal()
Read a IEEE-754 double precision (64 bit) and advances position by 8 bytes. Throws an std::out_of_ran...
Definition: CoLaParameterReader.cpp:86
visionary::CoLaParameterReader::readFlexString
std::string readFlexString()
Read a flex string, and advance position according to string size. Throws an std::out_of_range except...
Definition: CoLaParameterReader.cpp:99
visionary::CoLaParameterReader::readUDInt
uint32_t readUDInt()
Read a unsigned int (32 bit) and advances position by 4 bytes. Throws an std::out_of_range exception ...
Definition: CoLaParameterReader.cpp:70
visionary::CoLaParameterReader::m_currentPosition
size_t m_currentPosition
Definition: CoLaParameterReader.h:22


sick_visionary_ros
Author(s): SICK AG TechSupport 3D Snapshot
autogenerated on Thu Feb 8 2024 03:38:05