kitt_platform
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Macros
MultiEchoLaserScan.h
Go to the documentation of this file.
1 #ifndef _ROS_sensor_msgs_MultiEchoLaserScan_h
2 #define _ROS_sensor_msgs_MultiEchoLaserScan_h
3 
4 #include <stdint.h>
5 #include <string.h>
6 #include <stdlib.h>
7 #include "ros/msg.h"
8 #include "std_msgs/Header.h"
10 
11 namespace sensor_msgs
12 {
13 
15  {
16  public:
18  float angle_min;
19  float angle_max;
22  float scan_time;
23  float range_min;
24  float range_max;
25  uint8_t ranges_length;
31 
33  header(),
34  angle_min(0),
35  angle_max(0),
36  angle_increment(0),
37  time_increment(0),
38  scan_time(0),
39  range_min(0),
40  range_max(0),
41  ranges_length(0), ranges(NULL),
43  {
44  }
45 
46  virtual int serialize(unsigned char *outbuffer) const
47  {
48  int offset = 0;
49  offset += this->header.serialize(outbuffer + offset);
50  union {
51  float real;
52  uint32_t base;
53  } u_angle_min;
54  u_angle_min.real = this->angle_min;
55  *(outbuffer + offset + 0) = (u_angle_min.base >> (8 * 0)) & 0xFF;
56  *(outbuffer + offset + 1) = (u_angle_min.base >> (8 * 1)) & 0xFF;
57  *(outbuffer + offset + 2) = (u_angle_min.base >> (8 * 2)) & 0xFF;
58  *(outbuffer + offset + 3) = (u_angle_min.base >> (8 * 3)) & 0xFF;
59  offset += sizeof(this->angle_min);
60  union {
61  float real;
62  uint32_t base;
63  } u_angle_max;
64  u_angle_max.real = this->angle_max;
65  *(outbuffer + offset + 0) = (u_angle_max.base >> (8 * 0)) & 0xFF;
66  *(outbuffer + offset + 1) = (u_angle_max.base >> (8 * 1)) & 0xFF;
67  *(outbuffer + offset + 2) = (u_angle_max.base >> (8 * 2)) & 0xFF;
68  *(outbuffer + offset + 3) = (u_angle_max.base >> (8 * 3)) & 0xFF;
69  offset += sizeof(this->angle_max);
70  union {
71  float real;
72  uint32_t base;
73  } u_angle_increment;
74  u_angle_increment.real = this->angle_increment;
75  *(outbuffer + offset + 0) = (u_angle_increment.base >> (8 * 0)) & 0xFF;
76  *(outbuffer + offset + 1) = (u_angle_increment.base >> (8 * 1)) & 0xFF;
77  *(outbuffer + offset + 2) = (u_angle_increment.base >> (8 * 2)) & 0xFF;
78  *(outbuffer + offset + 3) = (u_angle_increment.base >> (8 * 3)) & 0xFF;
79  offset += sizeof(this->angle_increment);
80  union {
81  float real;
82  uint32_t base;
83  } u_time_increment;
84  u_time_increment.real = this->time_increment;
85  *(outbuffer + offset + 0) = (u_time_increment.base >> (8 * 0)) & 0xFF;
86  *(outbuffer + offset + 1) = (u_time_increment.base >> (8 * 1)) & 0xFF;
87  *(outbuffer + offset + 2) = (u_time_increment.base >> (8 * 2)) & 0xFF;
88  *(outbuffer + offset + 3) = (u_time_increment.base >> (8 * 3)) & 0xFF;
89  offset += sizeof(this->time_increment);
90  union {
91  float real;
92  uint32_t base;
93  } u_scan_time;
94  u_scan_time.real = this->scan_time;
95  *(outbuffer + offset + 0) = (u_scan_time.base >> (8 * 0)) & 0xFF;
96  *(outbuffer + offset + 1) = (u_scan_time.base >> (8 * 1)) & 0xFF;
97  *(outbuffer + offset + 2) = (u_scan_time.base >> (8 * 2)) & 0xFF;
98  *(outbuffer + offset + 3) = (u_scan_time.base >> (8 * 3)) & 0xFF;
99  offset += sizeof(this->scan_time);
100  union {
101  float real;
102  uint32_t base;
103  } u_range_min;
104  u_range_min.real = this->range_min;
105  *(outbuffer + offset + 0) = (u_range_min.base >> (8 * 0)) & 0xFF;
106  *(outbuffer + offset + 1) = (u_range_min.base >> (8 * 1)) & 0xFF;
107  *(outbuffer + offset + 2) = (u_range_min.base >> (8 * 2)) & 0xFF;
108  *(outbuffer + offset + 3) = (u_range_min.base >> (8 * 3)) & 0xFF;
109  offset += sizeof(this->range_min);
110  union {
111  float real;
112  uint32_t base;
113  } u_range_max;
114  u_range_max.real = this->range_max;
115  *(outbuffer + offset + 0) = (u_range_max.base >> (8 * 0)) & 0xFF;
116  *(outbuffer + offset + 1) = (u_range_max.base >> (8 * 1)) & 0xFF;
117  *(outbuffer + offset + 2) = (u_range_max.base >> (8 * 2)) & 0xFF;
118  *(outbuffer + offset + 3) = (u_range_max.base >> (8 * 3)) & 0xFF;
119  offset += sizeof(this->range_max);
120  *(outbuffer + offset++) = ranges_length;
121  *(outbuffer + offset++) = 0;
122  *(outbuffer + offset++) = 0;
123  *(outbuffer + offset++) = 0;
124  for( uint8_t i = 0; i < ranges_length; i++){
125  offset += this->ranges[i].serialize(outbuffer + offset);
126  }
127  *(outbuffer + offset++) = intensities_length;
128  *(outbuffer + offset++) = 0;
129  *(outbuffer + offset++) = 0;
130  *(outbuffer + offset++) = 0;
131  for( uint8_t i = 0; i < intensities_length; i++){
132  offset += this->intensities[i].serialize(outbuffer + offset);
133  }
134  return offset;
135  }
136 
137  virtual int deserialize(unsigned char *inbuffer)
138  {
139  int offset = 0;
140  offset += this->header.deserialize(inbuffer + offset);
141  union {
142  float real;
143  uint32_t base;
144  } u_angle_min;
145  u_angle_min.base = 0;
146  u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
147  u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
148  u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
149  u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
150  this->angle_min = u_angle_min.real;
151  offset += sizeof(this->angle_min);
152  union {
153  float real;
154  uint32_t base;
155  } u_angle_max;
156  u_angle_max.base = 0;
157  u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
158  u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
159  u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
160  u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
161  this->angle_max = u_angle_max.real;
162  offset += sizeof(this->angle_max);
163  union {
164  float real;
165  uint32_t base;
166  } u_angle_increment;
167  u_angle_increment.base = 0;
168  u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
169  u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
170  u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
171  u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
172  this->angle_increment = u_angle_increment.real;
173  offset += sizeof(this->angle_increment);
174  union {
175  float real;
176  uint32_t base;
177  } u_time_increment;
178  u_time_increment.base = 0;
179  u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
180  u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
181  u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
182  u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
183  this->time_increment = u_time_increment.real;
184  offset += sizeof(this->time_increment);
185  union {
186  float real;
187  uint32_t base;
188  } u_scan_time;
189  u_scan_time.base = 0;
190  u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
191  u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
192  u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
193  u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
194  this->scan_time = u_scan_time.real;
195  offset += sizeof(this->scan_time);
196  union {
197  float real;
198  uint32_t base;
199  } u_range_min;
200  u_range_min.base = 0;
201  u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
202  u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
203  u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
204  u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
205  this->range_min = u_range_min.real;
206  offset += sizeof(this->range_min);
207  union {
208  float real;
209  uint32_t base;
210  } u_range_max;
211  u_range_max.base = 0;
212  u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
213  u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
214  u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
215  u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
216  this->range_max = u_range_max.real;
217  offset += sizeof(this->range_max);
218  uint8_t ranges_lengthT = *(inbuffer + offset++);
219  if(ranges_lengthT > ranges_length)
220  this->ranges = (sensor_msgs::LaserEcho*)realloc(this->ranges, ranges_lengthT * sizeof(sensor_msgs::LaserEcho));
221  offset += 3;
222  ranges_length = ranges_lengthT;
223  for( uint8_t i = 0; i < ranges_length; i++){
224  offset += this->st_ranges.deserialize(inbuffer + offset);
225  memcpy( &(this->ranges[i]), &(this->st_ranges), sizeof(sensor_msgs::LaserEcho));
226  }
227  uint8_t intensities_lengthT = *(inbuffer + offset++);
228  if(intensities_lengthT > intensities_length)
229  this->intensities = (sensor_msgs::LaserEcho*)realloc(this->intensities, intensities_lengthT * sizeof(sensor_msgs::LaserEcho));
230  offset += 3;
231  intensities_length = intensities_lengthT;
232  for( uint8_t i = 0; i < intensities_length; i++){
233  offset += this->st_intensities.deserialize(inbuffer + offset);
234  memcpy( &(this->intensities[i]), &(this->st_intensities), sizeof(sensor_msgs::LaserEcho));
235  }
236  return offset;
237  }
238 
239  const char * getType(){ return "sensor_msgs/MultiEchoLaserScan"; };
240  const char * getMD5(){ return "6fefb0c6da89d7c8abe4b339f5c2f8fb"; };
241 
242  };
243 
244 }
245 #endif
virtual int deserialize(unsigned char *inbuffer)
Definition: Header.h:53
float angle_max
Definition: MultiEchoLaserScan.h:19
MultiEchoLaserScan()
Definition: MultiEchoLaserScan.h:32
std_msgs::Header header
Definition: MultiEchoLaserScan.h:17
float time_increment
Definition: MultiEchoLaserScan.h:21
Definition: LaserEcho.h:12
float angle_increment
Definition: MultiEchoLaserScan.h:20
virtual int serialize(unsigned char *outbuffer) const
Definition: Header.h:27
float range_min
Definition: MultiEchoLaserScan.h:23
virtual int serialize(unsigned char *outbuffer) const
Definition: MultiEchoLaserScan.h:46
uint8_t ranges_length
Definition: MultiEchoLaserScan.h:25
sensor_msgs::LaserEcho st_ranges
Definition: MultiEchoLaserScan.h:26
uint8_t intensities_length
Definition: MultiEchoLaserScan.h:28
sensor_msgs::LaserEcho st_intensities
Definition: MultiEchoLaserScan.h:29
sensor_msgs::LaserEcho * intensities
Definition: MultiEchoLaserScan.h:30
virtual int deserialize(unsigned char *inbuffer)
Definition: LaserEcho.h:46
Definition: Header.h:13
Definition: MultiEchoLaserScan.h:14
float scan_time
Definition: MultiEchoLaserScan.h:22
virtual int serialize(unsigned char *outbuffer) const
Definition: LaserEcho.h:24
const char * getMD5()
Definition: MultiEchoLaserScan.h:240
float range_max
Definition: MultiEchoLaserScan.h:24
Definition: msg.h:43
float angle_min
Definition: MultiEchoLaserScan.h:18
sensor_msgs::LaserEcho * ranges
Definition: MultiEchoLaserScan.h:27
virtual int deserialize(unsigned char *inbuffer)
Definition: MultiEchoLaserScan.h:137
const char * getType()
Definition: MultiEchoLaserScan.h:239