ROS Serial library for Mbed platforms for ROS Indigo Igloo. Check http://wiki.ros.org/rosserial_mbed/ for more information

Dependencies:   BufferedSerial

Dependents:   rosserial_mbed_hello_world_publisher rtos_base_control rosserial_mbed_F64MA ROS-RTOS ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Range.h Source File

Range.h

00001 #ifndef _ROS_sensor_msgs_Range_h
00002 #define _ROS_sensor_msgs_Range_h
00003 
00004 #include <stdint.h>
00005 #include <string.h>
00006 #include <stdlib.h>
00007 #include "ros/msg.h"
00008 #include "std_msgs/Header.h"
00009 
00010 namespace sensor_msgs
00011 {
00012 
00013   class Range : public ros::Msg
00014   {
00015     public:
00016       std_msgs::Header header;
00017       uint8_t radiation_type;
00018       float field_of_view;
00019       float min_range;
00020       float max_range;
00021       float range;
00022       enum { ULTRASOUND = 0 };
00023       enum { INFRARED = 1 };
00024 
00025     Range():
00026       header(),
00027       radiation_type(0),
00028       field_of_view(0),
00029       min_range(0),
00030       max_range(0),
00031       range(0)
00032     {
00033     }
00034 
00035     virtual int serialize(unsigned char *outbuffer) const
00036     {
00037       int offset = 0;
00038       offset += this->header.serialize(outbuffer + offset);
00039       *(outbuffer + offset + 0) = (this->radiation_type >> (8 * 0)) & 0xFF;
00040       offset += sizeof(this->radiation_type);
00041       union {
00042         float real;
00043         uint32_t base;
00044       } u_field_of_view;
00045       u_field_of_view.real = this->field_of_view;
00046       *(outbuffer + offset + 0) = (u_field_of_view.base >> (8 * 0)) & 0xFF;
00047       *(outbuffer + offset + 1) = (u_field_of_view.base >> (8 * 1)) & 0xFF;
00048       *(outbuffer + offset + 2) = (u_field_of_view.base >> (8 * 2)) & 0xFF;
00049       *(outbuffer + offset + 3) = (u_field_of_view.base >> (8 * 3)) & 0xFF;
00050       offset += sizeof(this->field_of_view);
00051       union {
00052         float real;
00053         uint32_t base;
00054       } u_min_range;
00055       u_min_range.real = this->min_range;
00056       *(outbuffer + offset + 0) = (u_min_range.base >> (8 * 0)) & 0xFF;
00057       *(outbuffer + offset + 1) = (u_min_range.base >> (8 * 1)) & 0xFF;
00058       *(outbuffer + offset + 2) = (u_min_range.base >> (8 * 2)) & 0xFF;
00059       *(outbuffer + offset + 3) = (u_min_range.base >> (8 * 3)) & 0xFF;
00060       offset += sizeof(this->min_range);
00061       union {
00062         float real;
00063         uint32_t base;
00064       } u_max_range;
00065       u_max_range.real = this->max_range;
00066       *(outbuffer + offset + 0) = (u_max_range.base >> (8 * 0)) & 0xFF;
00067       *(outbuffer + offset + 1) = (u_max_range.base >> (8 * 1)) & 0xFF;
00068       *(outbuffer + offset + 2) = (u_max_range.base >> (8 * 2)) & 0xFF;
00069       *(outbuffer + offset + 3) = (u_max_range.base >> (8 * 3)) & 0xFF;
00070       offset += sizeof(this->max_range);
00071       union {
00072         float real;
00073         uint32_t base;
00074       } u_range;
00075       u_range.real = this->range;
00076       *(outbuffer + offset + 0) = (u_range.base >> (8 * 0)) & 0xFF;
00077       *(outbuffer + offset + 1) = (u_range.base >> (8 * 1)) & 0xFF;
00078       *(outbuffer + offset + 2) = (u_range.base >> (8 * 2)) & 0xFF;
00079       *(outbuffer + offset + 3) = (u_range.base >> (8 * 3)) & 0xFF;
00080       offset += sizeof(this->range);
00081       return offset;
00082     }
00083 
00084     virtual int deserialize(unsigned char *inbuffer)
00085     {
00086       int offset = 0;
00087       offset += this->header.deserialize(inbuffer + offset);
00088       this->radiation_type =  ((uint8_t) (*(inbuffer + offset)));
00089       offset += sizeof(this->radiation_type);
00090       union {
00091         float real;
00092         uint32_t base;
00093       } u_field_of_view;
00094       u_field_of_view.base = 0;
00095       u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
00096       u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
00097       u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
00098       u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
00099       this->field_of_view = u_field_of_view.real;
00100       offset += sizeof(this->field_of_view);
00101       union {
00102         float real;
00103         uint32_t base;
00104       } u_min_range;
00105       u_min_range.base = 0;
00106       u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
00107       u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
00108       u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
00109       u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
00110       this->min_range = u_min_range.real;
00111       offset += sizeof(this->min_range);
00112       union {
00113         float real;
00114         uint32_t base;
00115       } u_max_range;
00116       u_max_range.base = 0;
00117       u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
00118       u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
00119       u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
00120       u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
00121       this->max_range = u_max_range.real;
00122       offset += sizeof(this->max_range);
00123       union {
00124         float real;
00125         uint32_t base;
00126       } u_range;
00127       u_range.base = 0;
00128       u_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
00129       u_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
00130       u_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
00131       u_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
00132       this->range = u_range.real;
00133       offset += sizeof(this->range);
00134      return offset;
00135     }
00136 
00137     const char * getType(){ return "sensor_msgs/Range"; };
00138     const char * getMD5(){ return "c005c34273dc426c67a020a87bc24148"; };
00139 
00140   };
00141 
00142 }
00143 #endif