command.cpp
Go to the documentation of this file.
1 
7 
8 namespace toposens_driver
9 {
21 Command::Command(TsParam param, float value)
22 {
23  _param = param;
24  memset(&_bytes, '\0', sizeof(_bytes));
25  std::string format = "%c%s%05d\r";
26 
27  if (param == TsParam::ExternalTemperature)
28  {
29  if (value >= 0)
30  value = std::max(value * 10, value);
31  else
32  value = std::min(value * 10, value);
33  }
34 
35  // Clips desired parameter value if they would cause a value overflow in the
36  // command message.
37  if ((value < MIN_VALUE) || (value > MAX_VALUE))
38  {
39  ROS_WARN_STREAM("Out of range value "
40  << (param == TsParam::ExternalTemperature ? value / 10 : value)
41  << " clipped to closest limit");
42  value = (value < MIN_VALUE) ? MIN_VALUE : MAX_VALUE;
43  }
44  _value = value;
45  std::sprintf(_bytes, format.c_str(), kPrefix, _getKey(param).c_str(), ((int)_value));
46 }
47 
56 {
57  memset(&_bytes, '\0', sizeof(_bytes));
58  std::string format = "%c%s\r";
59 
60  _value = 0;
61  std::sprintf(_bytes, format.c_str(), kPrefix, _getKey(service).c_str());
62 }
63 
65 std::string Command::_getKey(TsParam param)
66 {
67  if (param == TsParam::NumberOfPulses)
68  return "sPuls";
69  else if (param == TsParam::PeakDetectionWindow)
70  return "sPeak";
71  else if (param == TsParam::EchoRejectionThreshold)
72  return "sReje";
73  else if (param == TsParam::ExternalTemperature)
74  return "sTemp";
75  else if (param == TsParam::NoiseIndicatorThreshold)
76  return "sNois";
77  else if (param == TsParam::ScanMode)
78  return "sMode";
79  return "";
80 }
81 
83 std::string Command::_getKey(TsService service)
84 {
85  if (service == TsService::FirmwareConfiguration)
86  return "gConf";
87  else if (service == TsService::FirmwareVersion)
88  return "gVers";
89  return "";
90 }
91 
93 std::string Command::getParamName()
94 {
95  if (this->_param == TsParam::NumberOfPulses)
96  return "Number of pulses";
97  else if (this->_param == TsParam::PeakDetectionWindow)
98  return "Peak detection window";
99  else if (this->_param == TsParam::EchoRejectionThreshold)
100  return "Echo rejection threshold";
101  else if (this->_param == TsParam::ExternalTemperature)
102  return "Calibration temperature";
103  else if (this->_param == TsParam::NoiseIndicatorThreshold)
104  return "Noise indicator threshold";
105  else if (this->_param == TsParam::ScanMode)
106  return "Scan mode";
107  return "Unknown parameter";
108 }
109 
110 } // namespace toposens_driver
std::string getParamName()
Definition: command.cpp:93
std::string _getKey(TsParam param)
Definition: command.cpp:65
#define ROS_WARN_STREAM(args)
static const char kPrefix
Definition: command.h:104
Command(TsParam param, float value)
Definition: command.cpp:21


toposens_driver
Author(s): Adi Singh, Sebastian Dengler, Christopher Lang, Roua Mokchah, Nancy Seckel, Georgiana Barbut
autogenerated on Mon Feb 28 2022 23:57:40