kitt_platform
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Macros
InteractiveMarker.h
Go to the documentation of this file.
1 #ifndef _ROS_visualization_msgs_InteractiveMarker_h
2 #define _ROS_visualization_msgs_InteractiveMarker_h
3 
4 #include <stdint.h>
5 #include <string.h>
6 #include <stdlib.h>
7 #include "ros/msg.h"
8 #include "std_msgs/Header.h"
9 #include "geometry_msgs/Pose.h"
12 
13 namespace visualization_msgs
14 {
15 
16  class InteractiveMarker : public ros::Msg
17  {
18  public:
21  const char* name;
22  const char* description;
23  float scale;
27  uint8_t controls_length;
30 
32  header(),
33  pose(),
34  name(""),
35  description(""),
36  scale(0),
38  controls_length(0), controls(NULL)
39  {
40  }
41 
42  virtual int serialize(unsigned char *outbuffer) const
43  {
44  int offset = 0;
45  offset += this->header.serialize(outbuffer + offset);
46  offset += this->pose.serialize(outbuffer + offset);
47  uint32_t length_name = strlen(this->name);
48  memcpy(outbuffer + offset, &length_name, sizeof(uint32_t));
49  offset += 4;
50  memcpy(outbuffer + offset, this->name, length_name);
51  offset += length_name;
52  uint32_t length_description = strlen(this->description);
53  memcpy(outbuffer + offset, &length_description, sizeof(uint32_t));
54  offset += 4;
55  memcpy(outbuffer + offset, this->description, length_description);
56  offset += length_description;
57  union {
58  float real;
59  uint32_t base;
60  } u_scale;
61  u_scale.real = this->scale;
62  *(outbuffer + offset + 0) = (u_scale.base >> (8 * 0)) & 0xFF;
63  *(outbuffer + offset + 1) = (u_scale.base >> (8 * 1)) & 0xFF;
64  *(outbuffer + offset + 2) = (u_scale.base >> (8 * 2)) & 0xFF;
65  *(outbuffer + offset + 3) = (u_scale.base >> (8 * 3)) & 0xFF;
66  offset += sizeof(this->scale);
67  *(outbuffer + offset++) = menu_entries_length;
68  *(outbuffer + offset++) = 0;
69  *(outbuffer + offset++) = 0;
70  *(outbuffer + offset++) = 0;
71  for( uint8_t i = 0; i < menu_entries_length; i++){
72  offset += this->menu_entries[i].serialize(outbuffer + offset);
73  }
74  *(outbuffer + offset++) = controls_length;
75  *(outbuffer + offset++) = 0;
76  *(outbuffer + offset++) = 0;
77  *(outbuffer + offset++) = 0;
78  for( uint8_t i = 0; i < controls_length; i++){
79  offset += this->controls[i].serialize(outbuffer + offset);
80  }
81  return offset;
82  }
83 
84  virtual int deserialize(unsigned char *inbuffer)
85  {
86  int offset = 0;
87  offset += this->header.deserialize(inbuffer + offset);
88  offset += this->pose.deserialize(inbuffer + offset);
89  uint32_t length_name;
90  memcpy(&length_name, (inbuffer + offset), sizeof(uint32_t));
91  offset += 4;
92  for(unsigned int k= offset; k< offset+length_name; ++k){
93  inbuffer[k-1]=inbuffer[k];
94  }
95  inbuffer[offset+length_name-1]=0;
96  this->name = (char *)(inbuffer + offset-1);
97  offset += length_name;
98  uint32_t length_description;
99  memcpy(&length_description, (inbuffer + offset), sizeof(uint32_t));
100  offset += 4;
101  for(unsigned int k= offset; k< offset+length_description; ++k){
102  inbuffer[k-1]=inbuffer[k];
103  }
104  inbuffer[offset+length_description-1]=0;
105  this->description = (char *)(inbuffer + offset-1);
106  offset += length_description;
107  union {
108  float real;
109  uint32_t base;
110  } u_scale;
111  u_scale.base = 0;
112  u_scale.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
113  u_scale.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
114  u_scale.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
115  u_scale.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
116  this->scale = u_scale.real;
117  offset += sizeof(this->scale);
118  uint8_t menu_entries_lengthT = *(inbuffer + offset++);
119  if(menu_entries_lengthT > menu_entries_length)
120  this->menu_entries = (visualization_msgs::MenuEntry*)realloc(this->menu_entries, menu_entries_lengthT * sizeof(visualization_msgs::MenuEntry));
121  offset += 3;
122  menu_entries_length = menu_entries_lengthT;
123  for( uint8_t i = 0; i < menu_entries_length; i++){
124  offset += this->st_menu_entries.deserialize(inbuffer + offset);
125  memcpy( &(this->menu_entries[i]), &(this->st_menu_entries), sizeof(visualization_msgs::MenuEntry));
126  }
127  uint8_t controls_lengthT = *(inbuffer + offset++);
128  if(controls_lengthT > controls_length)
130  offset += 3;
131  controls_length = controls_lengthT;
132  for( uint8_t i = 0; i < controls_length; i++){
133  offset += this->st_controls.deserialize(inbuffer + offset);
134  memcpy( &(this->controls[i]), &(this->st_controls), sizeof(visualization_msgs::InteractiveMarkerControl));
135  }
136  return offset;
137  }
138 
139  const char * getType(){ return "visualization_msgs/InteractiveMarker"; };
140  const char * getMD5(){ return "311bd5f6cd6a20820ac0ba84315f4e22"; };
141 
142  };
143 
144 }
145 #endif
float scale
Definition: InteractiveMarker.h:23
const char * name
Definition: InteractiveMarker.h:21
virtual int serialize(unsigned char *outbuffer) const
Definition: MenuEntry.h:33
virtual int deserialize(unsigned char *inbuffer)
Definition: Header.h:53
std_msgs::Header header
Definition: InteractiveMarker.h:19
Definition: InteractiveMarker.h:16
virtual int serialize(unsigned char *outbuffer) const
Definition: InteractiveMarkerControl.h:53
const char * description
Definition: InteractiveMarker.h:22
virtual int deserialize(unsigned char *inbuffer)
Definition: MenuEntry.h:61
const char * getMD5()
Definition: InteractiveMarker.h:140
virtual int deserialize(unsigned char *inbuffer)
Definition: InteractiveMarker.h:84
Definition: MenuEntry.h:12
visualization_msgs::MenuEntry * menu_entries
Definition: InteractiveMarker.h:26
uint8_t menu_entries_length
Definition: InteractiveMarker.h:24
virtual int serialize(unsigned char *outbuffer) const
Definition: Header.h:27
visualization_msgs::InteractiveMarkerControl st_controls
Definition: InteractiveMarker.h:28
virtual int serialize(unsigned char *outbuffer) const
Definition: Pose.h:26
virtual int deserialize(unsigned char *inbuffer)
Definition: Pose.h:34
virtual int serialize(unsigned char *outbuffer) const
Definition: InteractiveMarker.h:42
Definition: Header.h:13
virtual int deserialize(unsigned char *inbuffer)
Definition: InteractiveMarkerControl.h:95
InteractiveMarker()
Definition: InteractiveMarker.h:31
geometry_msgs::Pose pose
Definition: InteractiveMarker.h:20
Definition: Pose.h:14
uint8_t controls_length
Definition: InteractiveMarker.h:27
visualization_msgs::MenuEntry st_menu_entries
Definition: InteractiveMarker.h:25
Definition: InteractiveMarkerControl.h:14
Definition: msg.h:43
const char * getType()
Definition: InteractiveMarker.h:139
visualization_msgs::InteractiveMarkerControl * controls
Definition: InteractiveMarker.h:29