catchrobo2022 / Mbed 2 deprecated catchrobo2022_mbed

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers PlotData.h Source File

PlotData.h

00001 #ifndef _ROS_jsk_recognition_msgs_PlotData_h
00002 #define _ROS_jsk_recognition_msgs_PlotData_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 jsk_recognition_msgs
00011 {
00012 
00013   class PlotData : public ros::Msg
00014   {
00015     public:
00016       typedef std_msgs::Header _header_type;
00017       _header_type header;
00018       uint32_t xs_length;
00019       typedef float _xs_type;
00020       _xs_type st_xs;
00021       _xs_type * xs;
00022       uint32_t ys_length;
00023       typedef float _ys_type;
00024       _ys_type st_ys;
00025       _ys_type * ys;
00026       typedef uint32_t _type_type;
00027       _type_type type;
00028       typedef const char* _label_type;
00029       _label_type label;
00030       typedef bool _fit_line_type;
00031       _fit_line_type fit_line;
00032       typedef bool _fit_line_ransac_type;
00033       _fit_line_ransac_type fit_line_ransac;
00034       enum { SCATTER = 1 };
00035       enum { LINE = 2 };
00036 
00037     PlotData():
00038       header(),
00039       xs_length(0), xs(NULL),
00040       ys_length(0), ys(NULL),
00041       type(0),
00042       label(""),
00043       fit_line(0),
00044       fit_line_ransac(0)
00045     {
00046     }
00047 
00048     virtual int serialize(unsigned char *outbuffer) const
00049     {
00050       int offset = 0;
00051       offset += this->header.serialize(outbuffer + offset);
00052       *(outbuffer + offset + 0) = (this->xs_length >> (8 * 0)) & 0xFF;
00053       *(outbuffer + offset + 1) = (this->xs_length >> (8 * 1)) & 0xFF;
00054       *(outbuffer + offset + 2) = (this->xs_length >> (8 * 2)) & 0xFF;
00055       *(outbuffer + offset + 3) = (this->xs_length >> (8 * 3)) & 0xFF;
00056       offset += sizeof(this->xs_length);
00057       for( uint32_t i = 0; i < xs_length; i++){
00058       union {
00059         float real;
00060         uint32_t base;
00061       } u_xsi;
00062       u_xsi.real = this->xs[i];
00063       *(outbuffer + offset + 0) = (u_xsi.base >> (8 * 0)) & 0xFF;
00064       *(outbuffer + offset + 1) = (u_xsi.base >> (8 * 1)) & 0xFF;
00065       *(outbuffer + offset + 2) = (u_xsi.base >> (8 * 2)) & 0xFF;
00066       *(outbuffer + offset + 3) = (u_xsi.base >> (8 * 3)) & 0xFF;
00067       offset += sizeof(this->xs[i]);
00068       }
00069       *(outbuffer + offset + 0) = (this->ys_length >> (8 * 0)) & 0xFF;
00070       *(outbuffer + offset + 1) = (this->ys_length >> (8 * 1)) & 0xFF;
00071       *(outbuffer + offset + 2) = (this->ys_length >> (8 * 2)) & 0xFF;
00072       *(outbuffer + offset + 3) = (this->ys_length >> (8 * 3)) & 0xFF;
00073       offset += sizeof(this->ys_length);
00074       for( uint32_t i = 0; i < ys_length; i++){
00075       union {
00076         float real;
00077         uint32_t base;
00078       } u_ysi;
00079       u_ysi.real = this->ys[i];
00080       *(outbuffer + offset + 0) = (u_ysi.base >> (8 * 0)) & 0xFF;
00081       *(outbuffer + offset + 1) = (u_ysi.base >> (8 * 1)) & 0xFF;
00082       *(outbuffer + offset + 2) = (u_ysi.base >> (8 * 2)) & 0xFF;
00083       *(outbuffer + offset + 3) = (u_ysi.base >> (8 * 3)) & 0xFF;
00084       offset += sizeof(this->ys[i]);
00085       }
00086       *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF;
00087       *(outbuffer + offset + 1) = (this->type >> (8 * 1)) & 0xFF;
00088       *(outbuffer + offset + 2) = (this->type >> (8 * 2)) & 0xFF;
00089       *(outbuffer + offset + 3) = (this->type >> (8 * 3)) & 0xFF;
00090       offset += sizeof(this->type);
00091       uint32_t length_label = strlen(this->label);
00092       varToArr(outbuffer + offset, length_label);
00093       offset += 4;
00094       memcpy(outbuffer + offset, this->label, length_label);
00095       offset += length_label;
00096       union {
00097         bool real;
00098         uint8_t base;
00099       } u_fit_line;
00100       u_fit_line.real = this->fit_line;
00101       *(outbuffer + offset + 0) = (u_fit_line.base >> (8 * 0)) & 0xFF;
00102       offset += sizeof(this->fit_line);
00103       union {
00104         bool real;
00105         uint8_t base;
00106       } u_fit_line_ransac;
00107       u_fit_line_ransac.real = this->fit_line_ransac;
00108       *(outbuffer + offset + 0) = (u_fit_line_ransac.base >> (8 * 0)) & 0xFF;
00109       offset += sizeof(this->fit_line_ransac);
00110       return offset;
00111     }
00112 
00113     virtual int deserialize(unsigned char *inbuffer)
00114     {
00115       int offset = 0;
00116       offset += this->header.deserialize(inbuffer + offset);
00117       uint32_t xs_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00118       xs_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00119       xs_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00120       xs_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00121       offset += sizeof(this->xs_length);
00122       if(xs_lengthT > xs_length)
00123         this->xs = (float*)realloc(this->xs, xs_lengthT * sizeof(float));
00124       xs_length = xs_lengthT;
00125       for( uint32_t i = 0; i < xs_length; i++){
00126       union {
00127         float real;
00128         uint32_t base;
00129       } u_st_xs;
00130       u_st_xs.base = 0;
00131       u_st_xs.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
00132       u_st_xs.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
00133       u_st_xs.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
00134       u_st_xs.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
00135       this->st_xs = u_st_xs.real;
00136       offset += sizeof(this->st_xs);
00137         memcpy( &(this->xs[i]), &(this->st_xs), sizeof(float));
00138       }
00139       uint32_t ys_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00140       ys_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00141       ys_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00142       ys_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00143       offset += sizeof(this->ys_length);
00144       if(ys_lengthT > ys_length)
00145         this->ys = (float*)realloc(this->ys, ys_lengthT * sizeof(float));
00146       ys_length = ys_lengthT;
00147       for( uint32_t i = 0; i < ys_length; i++){
00148       union {
00149         float real;
00150         uint32_t base;
00151       } u_st_ys;
00152       u_st_ys.base = 0;
00153       u_st_ys.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
00154       u_st_ys.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
00155       u_st_ys.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
00156       u_st_ys.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
00157       this->st_ys = u_st_ys.real;
00158       offset += sizeof(this->st_ys);
00159         memcpy( &(this->ys[i]), &(this->st_ys), sizeof(float));
00160       }
00161       this->type =  ((uint32_t) (*(inbuffer + offset)));
00162       this->type |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
00163       this->type |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
00164       this->type |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
00165       offset += sizeof(this->type);
00166       uint32_t length_label;
00167       arrToVar(length_label, (inbuffer + offset));
00168       offset += 4;
00169       for(unsigned int k= offset; k< offset+length_label; ++k){
00170           inbuffer[k-1]=inbuffer[k];
00171       }
00172       inbuffer[offset+length_label-1]=0;
00173       this->label = (char *)(inbuffer + offset-1);
00174       offset += length_label;
00175       union {
00176         bool real;
00177         uint8_t base;
00178       } u_fit_line;
00179       u_fit_line.base = 0;
00180       u_fit_line.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
00181       this->fit_line = u_fit_line.real;
00182       offset += sizeof(this->fit_line);
00183       union {
00184         bool real;
00185         uint8_t base;
00186       } u_fit_line_ransac;
00187       u_fit_line_ransac.base = 0;
00188       u_fit_line_ransac.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
00189       this->fit_line_ransac = u_fit_line_ransac.real;
00190       offset += sizeof(this->fit_line_ransac);
00191      return offset;
00192     }
00193 
00194     virtual const char * getType(){ return "jsk_recognition_msgs/PlotData"; };
00195     virtual const char * getMD5(){ return "abc388ba2207b305f8695ad025452af4"; };
00196 
00197   };
00198 
00199 }
00200 #endif