Irfan Tito Kurniawan / ros_lib
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers PolynomialSegment4D.h Source File

PolynomialSegment4D.h

00001 #ifndef _ROS_mav_planning_msgs_PolynomialSegment4D_h
00002 #define _ROS_mav_planning_msgs_PolynomialSegment4D_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 #include "ros/duration.h"
00010 
00011 namespace mav_planning_msgs
00012 {
00013 
00014   class PolynomialSegment4D : public ros::Msg
00015   {
00016     public:
00017       typedef std_msgs::Header _header_type;
00018       _header_type header;
00019       typedef int32_t _num_coeffs_type;
00020       _num_coeffs_type num_coeffs;
00021       typedef ros::Duration _segment_time_type;
00022       _segment_time_type segment_time;
00023       uint32_t x_length;
00024       typedef double _x_type;
00025       _x_type st_x;
00026       _x_type * x;
00027       uint32_t y_length;
00028       typedef double _y_type;
00029       _y_type st_y;
00030       _y_type * y;
00031       uint32_t z_length;
00032       typedef double _z_type;
00033       _z_type st_z;
00034       _z_type * z;
00035       uint32_t yaw_length;
00036       typedef double _yaw_type;
00037       _yaw_type st_yaw;
00038       _yaw_type * yaw;
00039 
00040     PolynomialSegment4D():
00041       header(),
00042       num_coeffs(0),
00043       segment_time(),
00044       x_length(0), x(NULL),
00045       y_length(0), y(NULL),
00046       z_length(0), z(NULL),
00047       yaw_length(0), yaw(NULL)
00048     {
00049     }
00050 
00051     virtual int serialize(unsigned char *outbuffer) const
00052     {
00053       int offset = 0;
00054       offset += this->header.serialize(outbuffer + offset);
00055       union {
00056         int32_t real;
00057         uint32_t base;
00058       } u_num_coeffs;
00059       u_num_coeffs.real = this->num_coeffs;
00060       *(outbuffer + offset + 0) = (u_num_coeffs.base >> (8 * 0)) & 0xFF;
00061       *(outbuffer + offset + 1) = (u_num_coeffs.base >> (8 * 1)) & 0xFF;
00062       *(outbuffer + offset + 2) = (u_num_coeffs.base >> (8 * 2)) & 0xFF;
00063       *(outbuffer + offset + 3) = (u_num_coeffs.base >> (8 * 3)) & 0xFF;
00064       offset += sizeof(this->num_coeffs);
00065       *(outbuffer + offset + 0) = (this->segment_time.sec >> (8 * 0)) & 0xFF;
00066       *(outbuffer + offset + 1) = (this->segment_time.sec >> (8 * 1)) & 0xFF;
00067       *(outbuffer + offset + 2) = (this->segment_time.sec >> (8 * 2)) & 0xFF;
00068       *(outbuffer + offset + 3) = (this->segment_time.sec >> (8 * 3)) & 0xFF;
00069       offset += sizeof(this->segment_time.sec);
00070       *(outbuffer + offset + 0) = (this->segment_time.nsec >> (8 * 0)) & 0xFF;
00071       *(outbuffer + offset + 1) = (this->segment_time.nsec >> (8 * 1)) & 0xFF;
00072       *(outbuffer + offset + 2) = (this->segment_time.nsec >> (8 * 2)) & 0xFF;
00073       *(outbuffer + offset + 3) = (this->segment_time.nsec >> (8 * 3)) & 0xFF;
00074       offset += sizeof(this->segment_time.nsec);
00075       *(outbuffer + offset + 0) = (this->x_length >> (8 * 0)) & 0xFF;
00076       *(outbuffer + offset + 1) = (this->x_length >> (8 * 1)) & 0xFF;
00077       *(outbuffer + offset + 2) = (this->x_length >> (8 * 2)) & 0xFF;
00078       *(outbuffer + offset + 3) = (this->x_length >> (8 * 3)) & 0xFF;
00079       offset += sizeof(this->x_length);
00080       for( uint32_t i = 0; i < x_length; i++){
00081       union {
00082         double real;
00083         uint64_t base;
00084       } u_xi;
00085       u_xi.real = this->x[i];
00086       *(outbuffer + offset + 0) = (u_xi.base >> (8 * 0)) & 0xFF;
00087       *(outbuffer + offset + 1) = (u_xi.base >> (8 * 1)) & 0xFF;
00088       *(outbuffer + offset + 2) = (u_xi.base >> (8 * 2)) & 0xFF;
00089       *(outbuffer + offset + 3) = (u_xi.base >> (8 * 3)) & 0xFF;
00090       *(outbuffer + offset + 4) = (u_xi.base >> (8 * 4)) & 0xFF;
00091       *(outbuffer + offset + 5) = (u_xi.base >> (8 * 5)) & 0xFF;
00092       *(outbuffer + offset + 6) = (u_xi.base >> (8 * 6)) & 0xFF;
00093       *(outbuffer + offset + 7) = (u_xi.base >> (8 * 7)) & 0xFF;
00094       offset += sizeof(this->x[i]);
00095       }
00096       *(outbuffer + offset + 0) = (this->y_length >> (8 * 0)) & 0xFF;
00097       *(outbuffer + offset + 1) = (this->y_length >> (8 * 1)) & 0xFF;
00098       *(outbuffer + offset + 2) = (this->y_length >> (8 * 2)) & 0xFF;
00099       *(outbuffer + offset + 3) = (this->y_length >> (8 * 3)) & 0xFF;
00100       offset += sizeof(this->y_length);
00101       for( uint32_t i = 0; i < y_length; i++){
00102       union {
00103         double real;
00104         uint64_t base;
00105       } u_yi;
00106       u_yi.real = this->y[i];
00107       *(outbuffer + offset + 0) = (u_yi.base >> (8 * 0)) & 0xFF;
00108       *(outbuffer + offset + 1) = (u_yi.base >> (8 * 1)) & 0xFF;
00109       *(outbuffer + offset + 2) = (u_yi.base >> (8 * 2)) & 0xFF;
00110       *(outbuffer + offset + 3) = (u_yi.base >> (8 * 3)) & 0xFF;
00111       *(outbuffer + offset + 4) = (u_yi.base >> (8 * 4)) & 0xFF;
00112       *(outbuffer + offset + 5) = (u_yi.base >> (8 * 5)) & 0xFF;
00113       *(outbuffer + offset + 6) = (u_yi.base >> (8 * 6)) & 0xFF;
00114       *(outbuffer + offset + 7) = (u_yi.base >> (8 * 7)) & 0xFF;
00115       offset += sizeof(this->y[i]);
00116       }
00117       *(outbuffer + offset + 0) = (this->z_length >> (8 * 0)) & 0xFF;
00118       *(outbuffer + offset + 1) = (this->z_length >> (8 * 1)) & 0xFF;
00119       *(outbuffer + offset + 2) = (this->z_length >> (8 * 2)) & 0xFF;
00120       *(outbuffer + offset + 3) = (this->z_length >> (8 * 3)) & 0xFF;
00121       offset += sizeof(this->z_length);
00122       for( uint32_t i = 0; i < z_length; i++){
00123       union {
00124         double real;
00125         uint64_t base;
00126       } u_zi;
00127       u_zi.real = this->z[i];
00128       *(outbuffer + offset + 0) = (u_zi.base >> (8 * 0)) & 0xFF;
00129       *(outbuffer + offset + 1) = (u_zi.base >> (8 * 1)) & 0xFF;
00130       *(outbuffer + offset + 2) = (u_zi.base >> (8 * 2)) & 0xFF;
00131       *(outbuffer + offset + 3) = (u_zi.base >> (8 * 3)) & 0xFF;
00132       *(outbuffer + offset + 4) = (u_zi.base >> (8 * 4)) & 0xFF;
00133       *(outbuffer + offset + 5) = (u_zi.base >> (8 * 5)) & 0xFF;
00134       *(outbuffer + offset + 6) = (u_zi.base >> (8 * 6)) & 0xFF;
00135       *(outbuffer + offset + 7) = (u_zi.base >> (8 * 7)) & 0xFF;
00136       offset += sizeof(this->z[i]);
00137       }
00138       *(outbuffer + offset + 0) = (this->yaw_length >> (8 * 0)) & 0xFF;
00139       *(outbuffer + offset + 1) = (this->yaw_length >> (8 * 1)) & 0xFF;
00140       *(outbuffer + offset + 2) = (this->yaw_length >> (8 * 2)) & 0xFF;
00141       *(outbuffer + offset + 3) = (this->yaw_length >> (8 * 3)) & 0xFF;
00142       offset += sizeof(this->yaw_length);
00143       for( uint32_t i = 0; i < yaw_length; i++){
00144       union {
00145         double real;
00146         uint64_t base;
00147       } u_yawi;
00148       u_yawi.real = this->yaw[i];
00149       *(outbuffer + offset + 0) = (u_yawi.base >> (8 * 0)) & 0xFF;
00150       *(outbuffer + offset + 1) = (u_yawi.base >> (8 * 1)) & 0xFF;
00151       *(outbuffer + offset + 2) = (u_yawi.base >> (8 * 2)) & 0xFF;
00152       *(outbuffer + offset + 3) = (u_yawi.base >> (8 * 3)) & 0xFF;
00153       *(outbuffer + offset + 4) = (u_yawi.base >> (8 * 4)) & 0xFF;
00154       *(outbuffer + offset + 5) = (u_yawi.base >> (8 * 5)) & 0xFF;
00155       *(outbuffer + offset + 6) = (u_yawi.base >> (8 * 6)) & 0xFF;
00156       *(outbuffer + offset + 7) = (u_yawi.base >> (8 * 7)) & 0xFF;
00157       offset += sizeof(this->yaw[i]);
00158       }
00159       return offset;
00160     }
00161 
00162     virtual int deserialize(unsigned char *inbuffer)
00163     {
00164       int offset = 0;
00165       offset += this->header.deserialize(inbuffer + offset);
00166       union {
00167         int32_t real;
00168         uint32_t base;
00169       } u_num_coeffs;
00170       u_num_coeffs.base = 0;
00171       u_num_coeffs.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
00172       u_num_coeffs.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
00173       u_num_coeffs.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
00174       u_num_coeffs.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
00175       this->num_coeffs = u_num_coeffs.real;
00176       offset += sizeof(this->num_coeffs);
00177       this->segment_time.sec =  ((uint32_t) (*(inbuffer + offset)));
00178       this->segment_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
00179       this->segment_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
00180       this->segment_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
00181       offset += sizeof(this->segment_time.sec);
00182       this->segment_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
00183       this->segment_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
00184       this->segment_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
00185       this->segment_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
00186       offset += sizeof(this->segment_time.nsec);
00187       uint32_t x_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00188       x_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00189       x_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00190       x_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00191       offset += sizeof(this->x_length);
00192       if(x_lengthT > x_length)
00193         this->x = (double*)realloc(this->x, x_lengthT * sizeof(double));
00194       x_length = x_lengthT;
00195       for( uint32_t i = 0; i < x_length; i++){
00196       union {
00197         double real;
00198         uint64_t base;
00199       } u_st_x;
00200       u_st_x.base = 0;
00201       u_st_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
00202       u_st_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
00203       u_st_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
00204       u_st_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
00205       u_st_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
00206       u_st_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
00207       u_st_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
00208       u_st_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
00209       this->st_x = u_st_x.real;
00210       offset += sizeof(this->st_x);
00211         memcpy( &(this->x[i]), &(this->st_x), sizeof(double));
00212       }
00213       uint32_t y_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00214       y_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00215       y_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00216       y_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00217       offset += sizeof(this->y_length);
00218       if(y_lengthT > y_length)
00219         this->y = (double*)realloc(this->y, y_lengthT * sizeof(double));
00220       y_length = y_lengthT;
00221       for( uint32_t i = 0; i < y_length; i++){
00222       union {
00223         double real;
00224         uint64_t base;
00225       } u_st_y;
00226       u_st_y.base = 0;
00227       u_st_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
00228       u_st_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
00229       u_st_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
00230       u_st_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
00231       u_st_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
00232       u_st_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
00233       u_st_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
00234       u_st_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
00235       this->st_y = u_st_y.real;
00236       offset += sizeof(this->st_y);
00237         memcpy( &(this->y[i]), &(this->st_y), sizeof(double));
00238       }
00239       uint32_t z_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00240       z_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00241       z_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00242       z_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00243       offset += sizeof(this->z_length);
00244       if(z_lengthT > z_length)
00245         this->z = (double*)realloc(this->z, z_lengthT * sizeof(double));
00246       z_length = z_lengthT;
00247       for( uint32_t i = 0; i < z_length; i++){
00248       union {
00249         double real;
00250         uint64_t base;
00251       } u_st_z;
00252       u_st_z.base = 0;
00253       u_st_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
00254       u_st_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
00255       u_st_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
00256       u_st_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
00257       u_st_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
00258       u_st_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
00259       u_st_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
00260       u_st_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
00261       this->st_z = u_st_z.real;
00262       offset += sizeof(this->st_z);
00263         memcpy( &(this->z[i]), &(this->st_z), sizeof(double));
00264       }
00265       uint32_t yaw_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00266       yaw_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00267       yaw_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00268       yaw_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00269       offset += sizeof(this->yaw_length);
00270       if(yaw_lengthT > yaw_length)
00271         this->yaw = (double*)realloc(this->yaw, yaw_lengthT * sizeof(double));
00272       yaw_length = yaw_lengthT;
00273       for( uint32_t i = 0; i < yaw_length; i++){
00274       union {
00275         double real;
00276         uint64_t base;
00277       } u_st_yaw;
00278       u_st_yaw.base = 0;
00279       u_st_yaw.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
00280       u_st_yaw.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
00281       u_st_yaw.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
00282       u_st_yaw.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
00283       u_st_yaw.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
00284       u_st_yaw.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
00285       u_st_yaw.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
00286       u_st_yaw.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
00287       this->st_yaw = u_st_yaw.real;
00288       offset += sizeof(this->st_yaw);
00289         memcpy( &(this->yaw[i]), &(this->st_yaw), sizeof(double));
00290       }
00291      return offset;
00292     }
00293 
00294     const char * getType(){ return "mav_planning_msgs/PolynomialSegment4D"; };
00295     const char * getMD5(){ return "c85fa40c94ff35d242df13d4d3a57809"; };
00296 
00297   };
00298 
00299 }
00300 #endif