ROS Serial library for Mbed platforms for ROS Indigo Igloo. Check http://wiki.ros.org/rosserial_mbed/ for more information
Dependents: rosserial_mbed_hello_world_publisher rtos_base_control rosserial_mbed_F64MA ROS-RTOS ... more
SolidPrimitive.h
00001 #ifndef _ROS_shape_msgs_SolidPrimitive_h 00002 #define _ROS_shape_msgs_SolidPrimitive_h 00003 00004 #include <stdint.h> 00005 #include <string.h> 00006 #include <stdlib.h> 00007 #include "ros/msg.h" 00008 00009 namespace shape_msgs 00010 { 00011 00012 class SolidPrimitive : public ros::Msg 00013 { 00014 public: 00015 uint8_t type; 00016 uint8_t dimensions_length; 00017 double st_dimensions; 00018 double * dimensions; 00019 enum { BOX = 1 }; 00020 enum { SPHERE = 2 }; 00021 enum { CYLINDER = 3 }; 00022 enum { CONE = 4 }; 00023 enum { BOX_X = 0 }; 00024 enum { BOX_Y = 1 }; 00025 enum { BOX_Z = 2 }; 00026 enum { SPHERE_RADIUS = 0 }; 00027 enum { CYLINDER_HEIGHT = 0 }; 00028 enum { CYLINDER_RADIUS = 1 }; 00029 enum { CONE_HEIGHT = 0 }; 00030 enum { CONE_RADIUS = 1 }; 00031 00032 SolidPrimitive(): 00033 type(0), 00034 dimensions_length(0), dimensions(NULL) 00035 { 00036 } 00037 00038 virtual int serialize(unsigned char *outbuffer) const 00039 { 00040 int offset = 0; 00041 *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; 00042 offset += sizeof(this->type); 00043 *(outbuffer + offset++) = dimensions_length; 00044 *(outbuffer + offset++) = 0; 00045 *(outbuffer + offset++) = 0; 00046 *(outbuffer + offset++) = 0; 00047 for( uint8_t i = 0; i < dimensions_length; i++){ 00048 union { 00049 double real; 00050 uint64_t base; 00051 } u_dimensionsi; 00052 u_dimensionsi.real = this->dimensions[i]; 00053 *(outbuffer + offset + 0) = (u_dimensionsi.base >> (8 * 0)) & 0xFF; 00054 *(outbuffer + offset + 1) = (u_dimensionsi.base >> (8 * 1)) & 0xFF; 00055 *(outbuffer + offset + 2) = (u_dimensionsi.base >> (8 * 2)) & 0xFF; 00056 *(outbuffer + offset + 3) = (u_dimensionsi.base >> (8 * 3)) & 0xFF; 00057 *(outbuffer + offset + 4) = (u_dimensionsi.base >> (8 * 4)) & 0xFF; 00058 *(outbuffer + offset + 5) = (u_dimensionsi.base >> (8 * 5)) & 0xFF; 00059 *(outbuffer + offset + 6) = (u_dimensionsi.base >> (8 * 6)) & 0xFF; 00060 *(outbuffer + offset + 7) = (u_dimensionsi.base >> (8 * 7)) & 0xFF; 00061 offset += sizeof(this->dimensions[i]); 00062 } 00063 return offset; 00064 } 00065 00066 virtual int deserialize(unsigned char *inbuffer) 00067 { 00068 int offset = 0; 00069 this->type = ((uint8_t) (*(inbuffer + offset))); 00070 offset += sizeof(this->type); 00071 uint8_t dimensions_lengthT = *(inbuffer + offset++); 00072 if(dimensions_lengthT > dimensions_length) 00073 this->dimensions = (double*)realloc(this->dimensions, dimensions_lengthT * sizeof(double)); 00074 offset += 3; 00075 dimensions_length = dimensions_lengthT; 00076 for( uint8_t i = 0; i < dimensions_length; i++){ 00077 union { 00078 double real; 00079 uint64_t base; 00080 } u_st_dimensions; 00081 u_st_dimensions.base = 0; 00082 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); 00083 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); 00084 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); 00085 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); 00086 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); 00087 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); 00088 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); 00089 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); 00090 this->st_dimensions = u_st_dimensions.real; 00091 offset += sizeof(this->st_dimensions); 00092 memcpy( &(this->dimensions[i]), &(this->st_dimensions), sizeof(double)); 00093 } 00094 return offset; 00095 } 00096 00097 const char * getType(){ return "shape_msgs/SolidPrimitive"; }; 00098 const char * getMD5(){ return "d8f8cbc74c5ff283fca29569ccefb45d"; }; 00099 00100 }; 00101 00102 } 00103 #endif
Generated on Tue Jul 12 2022 18:39:41 by 1.7.2