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
InteractiveMarkerUpdate.h
00001 #ifndef _ROS_visualization_msgs_InteractiveMarkerUpdate_h 00002 #define _ROS_visualization_msgs_InteractiveMarkerUpdate_h 00003 00004 #include <stdint.h> 00005 #include <string.h> 00006 #include <stdlib.h> 00007 #include "ros/msg.h" 00008 #include "visualization_msgs/InteractiveMarker.h" 00009 #include "visualization_msgs/InteractiveMarkerPose.h" 00010 00011 namespace visualization_msgs 00012 { 00013 00014 class InteractiveMarkerUpdate : public ros::Msg 00015 { 00016 public: 00017 const char* server_id; 00018 uint64_t seq_num; 00019 uint8_t type; 00020 uint8_t markers_length; 00021 visualization_msgs::InteractiveMarker st_markers; 00022 visualization_msgs::InteractiveMarker * markers; 00023 uint8_t poses_length; 00024 visualization_msgs::InteractiveMarkerPose st_poses; 00025 visualization_msgs::InteractiveMarkerPose * poses; 00026 uint8_t erases_length; 00027 char* st_erases; 00028 char* * erases; 00029 enum { KEEP_ALIVE = 0 }; 00030 enum { UPDATE = 1 }; 00031 00032 InteractiveMarkerUpdate(): 00033 server_id(""), 00034 seq_num(0), 00035 type(0), 00036 markers_length(0), markers(NULL), 00037 poses_length(0), poses(NULL), 00038 erases_length(0), erases(NULL) 00039 { 00040 } 00041 00042 virtual int serialize(unsigned char *outbuffer) const 00043 { 00044 int offset = 0; 00045 uint32_t length_server_id = strlen(this->server_id); 00046 memcpy(outbuffer + offset, &length_server_id, sizeof(uint32_t)); 00047 offset += 4; 00048 memcpy(outbuffer + offset, this->server_id, length_server_id); 00049 offset += length_server_id; 00050 union { 00051 uint64_t real; 00052 uint32_t base; 00053 } u_seq_num; 00054 u_seq_num.real = this->seq_num; 00055 *(outbuffer + offset + 0) = (u_seq_num.base >> (8 * 0)) & 0xFF; 00056 *(outbuffer + offset + 1) = (u_seq_num.base >> (8 * 1)) & 0xFF; 00057 *(outbuffer + offset + 2) = (u_seq_num.base >> (8 * 2)) & 0xFF; 00058 *(outbuffer + offset + 3) = (u_seq_num.base >> (8 * 3)) & 0xFF; 00059 offset += sizeof(this->seq_num); 00060 *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; 00061 offset += sizeof(this->type); 00062 *(outbuffer + offset++) = markers_length; 00063 *(outbuffer + offset++) = 0; 00064 *(outbuffer + offset++) = 0; 00065 *(outbuffer + offset++) = 0; 00066 for( uint8_t i = 0; i < markers_length; i++){ 00067 offset += this->markers[i].serialize(outbuffer + offset); 00068 } 00069 *(outbuffer + offset++) = poses_length; 00070 *(outbuffer + offset++) = 0; 00071 *(outbuffer + offset++) = 0; 00072 *(outbuffer + offset++) = 0; 00073 for( uint8_t i = 0; i < poses_length; i++){ 00074 offset += this->poses[i].serialize(outbuffer + offset); 00075 } 00076 *(outbuffer + offset++) = erases_length; 00077 *(outbuffer + offset++) = 0; 00078 *(outbuffer + offset++) = 0; 00079 *(outbuffer + offset++) = 0; 00080 for( uint8_t i = 0; i < erases_length; i++){ 00081 uint32_t length_erasesi = strlen(this->erases[i]); 00082 memcpy(outbuffer + offset, &length_erasesi, sizeof(uint32_t)); 00083 offset += 4; 00084 memcpy(outbuffer + offset, this->erases[i], length_erasesi); 00085 offset += length_erasesi; 00086 } 00087 return offset; 00088 } 00089 00090 virtual int deserialize(unsigned char *inbuffer) 00091 { 00092 int offset = 0; 00093 uint32_t length_server_id; 00094 memcpy(&length_server_id, (inbuffer + offset), sizeof(uint32_t)); 00095 offset += 4; 00096 for(unsigned int k= offset; k< offset+length_server_id; ++k){ 00097 inbuffer[k-1]=inbuffer[k]; 00098 } 00099 inbuffer[offset+length_server_id-1]=0; 00100 this->server_id = (char *)(inbuffer + offset-1); 00101 offset += length_server_id; 00102 union { 00103 uint64_t real; 00104 uint32_t base; 00105 } u_seq_num; 00106 u_seq_num.base = 0; 00107 u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); 00108 u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00109 u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00110 u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00111 this->seq_num = u_seq_num.real; 00112 offset += sizeof(this->seq_num); 00113 this->type = ((uint8_t) (*(inbuffer + offset))); 00114 offset += sizeof(this->type); 00115 uint8_t markers_lengthT = *(inbuffer + offset++); 00116 if(markers_lengthT > markers_length) 00117 this->markers = (visualization_msgs::InteractiveMarker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::InteractiveMarker)); 00118 offset += 3; 00119 markers_length = markers_lengthT; 00120 for( uint8_t i = 0; i < markers_length; i++){ 00121 offset += this->st_markers.deserialize(inbuffer + offset); 00122 memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::InteractiveMarker)); 00123 } 00124 uint8_t poses_lengthT = *(inbuffer + offset++); 00125 if(poses_lengthT > poses_length) 00126 this->poses = (visualization_msgs::InteractiveMarkerPose*)realloc(this->poses, poses_lengthT * sizeof(visualization_msgs::InteractiveMarkerPose)); 00127 offset += 3; 00128 poses_length = poses_lengthT; 00129 for( uint8_t i = 0; i < poses_length; i++){ 00130 offset += this->st_poses.deserialize(inbuffer + offset); 00131 memcpy( &(this->poses[i]), &(this->st_poses), sizeof(visualization_msgs::InteractiveMarkerPose)); 00132 } 00133 uint8_t erases_lengthT = *(inbuffer + offset++); 00134 if(erases_lengthT > erases_length) 00135 this->erases = (char**)realloc(this->erases, erases_lengthT * sizeof(char*)); 00136 offset += 3; 00137 erases_length = erases_lengthT; 00138 for( uint8_t i = 0; i < erases_length; i++){ 00139 uint32_t length_st_erases; 00140 memcpy(&length_st_erases, (inbuffer + offset), sizeof(uint32_t)); 00141 offset += 4; 00142 for(unsigned int k= offset; k< offset+length_st_erases; ++k){ 00143 inbuffer[k-1]=inbuffer[k]; 00144 } 00145 inbuffer[offset+length_st_erases-1]=0; 00146 this->st_erases = (char *)(inbuffer + offset-1); 00147 offset += length_st_erases; 00148 memcpy( &(this->erases[i]), &(this->st_erases), sizeof(char*)); 00149 } 00150 return offset; 00151 } 00152 00153 const char * getType(){ return "visualization_msgs/InteractiveMarkerUpdate"; }; 00154 const char * getMD5(){ return "83e22f99d3b31fde725e0a338200e036"; }; 00155 00156 }; 00157 00158 } 00159 #endif
Generated on Tue Jul 12 2022 18:39:39 by 1.7.2