modify for Hydro version

Dependencies:   MODSERIAL

Fork of rosserial_mbed_lib by nucho

Committer:
jjzak
Date:
Sat Oct 26 15:38:35 2013 +0000
Revision:
5:8cd48977ec68
modify for Hydro version

Who changed what in which revision?

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