kitt_platform
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Macros
InteractiveMarkerUpdate.h
Go to the documentation of this file.
1 #ifndef _ROS_visualization_msgs_InteractiveMarkerUpdate_h
2 #define _ROS_visualization_msgs_InteractiveMarkerUpdate_h
3 
4 #include <stdint.h>
5 #include <string.h>
6 #include <stdlib.h>
7 #include "ros/msg.h"
10 
11 namespace visualization_msgs
12 {
13 
15  {
16  public:
17  const char* server_id;
18  uint64_t seq_num;
19  uint8_t type;
20  uint8_t markers_length;
23  uint8_t poses_length;
26  uint8_t erases_length;
27  char* st_erases;
28  char* * erases;
29  enum { KEEP_ALIVE = 0 };
30  enum { UPDATE = 1 };
31 
33  server_id(""),
34  seq_num(0),
35  type(0),
36  markers_length(0), markers(NULL),
37  poses_length(0), poses(NULL),
38  erases_length(0), erases(NULL)
39  {
40  }
41 
42  virtual int serialize(unsigned char *outbuffer) const
43  {
44  int offset = 0;
45  uint32_t length_server_id = strlen(this->server_id);
46  memcpy(outbuffer + offset, &length_server_id, sizeof(uint32_t));
47  offset += 4;
48  memcpy(outbuffer + offset, this->server_id, length_server_id);
49  offset += length_server_id;
50  union {
51  uint64_t real;
52  uint32_t base;
53  } u_seq_num;
54  u_seq_num.real = this->seq_num;
55  *(outbuffer + offset + 0) = (u_seq_num.base >> (8 * 0)) & 0xFF;
56  *(outbuffer + offset + 1) = (u_seq_num.base >> (8 * 1)) & 0xFF;
57  *(outbuffer + offset + 2) = (u_seq_num.base >> (8 * 2)) & 0xFF;
58  *(outbuffer + offset + 3) = (u_seq_num.base >> (8 * 3)) & 0xFF;
59  offset += sizeof(this->seq_num);
60  *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF;
61  offset += sizeof(this->type);
62  *(outbuffer + offset++) = markers_length;
63  *(outbuffer + offset++) = 0;
64  *(outbuffer + offset++) = 0;
65  *(outbuffer + offset++) = 0;
66  for( uint8_t i = 0; i < markers_length; i++){
67  offset += this->markers[i].serialize(outbuffer + offset);
68  }
69  *(outbuffer + offset++) = poses_length;
70  *(outbuffer + offset++) = 0;
71  *(outbuffer + offset++) = 0;
72  *(outbuffer + offset++) = 0;
73  for( uint8_t i = 0; i < poses_length; i++){
74  offset += this->poses[i].serialize(outbuffer + offset);
75  }
76  *(outbuffer + offset++) = erases_length;
77  *(outbuffer + offset++) = 0;
78  *(outbuffer + offset++) = 0;
79  *(outbuffer + offset++) = 0;
80  for( uint8_t i = 0; i < erases_length; i++){
81  uint32_t length_erasesi = strlen(this->erases[i]);
82  memcpy(outbuffer + offset, &length_erasesi, sizeof(uint32_t));
83  offset += 4;
84  memcpy(outbuffer + offset, this->erases[i], length_erasesi);
85  offset += length_erasesi;
86  }
87  return offset;
88  }
89 
90  virtual int deserialize(unsigned char *inbuffer)
91  {
92  int offset = 0;
93  uint32_t length_server_id;
94  memcpy(&length_server_id, (inbuffer + offset), sizeof(uint32_t));
95  offset += 4;
96  for(unsigned int k= offset; k< offset+length_server_id; ++k){
97  inbuffer[k-1]=inbuffer[k];
98  }
99  inbuffer[offset+length_server_id-1]=0;
100  this->server_id = (char *)(inbuffer + offset-1);
101  offset += length_server_id;
102  union {
103  uint64_t real;
104  uint32_t base;
105  } u_seq_num;
106  u_seq_num.base = 0;
107  u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
108  u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
109  u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
110  u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
111  this->seq_num = u_seq_num.real;
112  offset += sizeof(this->seq_num);
113  this->type = ((uint8_t) (*(inbuffer + offset)));
114  offset += sizeof(this->type);
115  uint8_t markers_lengthT = *(inbuffer + offset++);
116  if(markers_lengthT > markers_length)
117  this->markers = (visualization_msgs::InteractiveMarker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::InteractiveMarker));
118  offset += 3;
119  markers_length = markers_lengthT;
120  for( uint8_t i = 0; i < markers_length; i++){
121  offset += this->st_markers.deserialize(inbuffer + offset);
122  memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::InteractiveMarker));
123  }
124  uint8_t poses_lengthT = *(inbuffer + offset++);
125  if(poses_lengthT > poses_length)
127  offset += 3;
128  poses_length = poses_lengthT;
129  for( uint8_t i = 0; i < poses_length; i++){
130  offset += this->st_poses.deserialize(inbuffer + offset);
131  memcpy( &(this->poses[i]), &(this->st_poses), sizeof(visualization_msgs::InteractiveMarkerPose));
132  }
133  uint8_t erases_lengthT = *(inbuffer + offset++);
134  if(erases_lengthT > erases_length)
135  this->erases = (char**)realloc(this->erases, erases_lengthT * sizeof(char*));
136  offset += 3;
137  erases_length = erases_lengthT;
138  for( uint8_t i = 0; i < erases_length; i++){
139  uint32_t length_st_erases;
140  memcpy(&length_st_erases, (inbuffer + offset), sizeof(uint32_t));
141  offset += 4;
142  for(unsigned int k= offset; k< offset+length_st_erases; ++k){
143  inbuffer[k-1]=inbuffer[k];
144  }
145  inbuffer[offset+length_st_erases-1]=0;
146  this->st_erases = (char *)(inbuffer + offset-1);
147  offset += length_st_erases;
148  memcpy( &(this->erases[i]), &(this->st_erases), sizeof(char*));
149  }
150  return offset;
151  }
152 
153  const char * getType(){ return "visualization_msgs/InteractiveMarkerUpdate"; };
154  const char * getMD5(){ return "83e22f99d3b31fde725e0a338200e036"; };
155 
156  };
157 
158 }
159 #endif
visualization_msgs::InteractiveMarkerPose * poses
Definition: InteractiveMarkerUpdate.h:25
virtual int deserialize(unsigned char *inbuffer)
Definition: InteractiveMarkerUpdate.h:90
Definition: InteractiveMarker.h:16
uint64_t seq_num
Definition: InteractiveMarkerUpdate.h:18
virtual int serialize(unsigned char *outbuffer) const
Definition: InteractiveMarkerUpdate.h:42
char * st_erases
Definition: InteractiveMarkerUpdate.h:27
char ** erases
Definition: InteractiveMarkerUpdate.h:28
uint8_t markers_length
Definition: InteractiveMarkerUpdate.h:20
virtual int deserialize(unsigned char *inbuffer)
Definition: InteractiveMarker.h:84
const char * getMD5()
Definition: InteractiveMarkerUpdate.h:154
const char * getType()
Definition: InteractiveMarkerUpdate.h:153
Definition: InteractiveMarkerUpdate.h:14
virtual int deserialize(unsigned char *inbuffer)
Definition: InteractiveMarkerPose.h:41
virtual int serialize(unsigned char *outbuffer) const
Definition: InteractiveMarker.h:42
Definition: InteractiveMarkerPose.h:14
const char * server_id
Definition: InteractiveMarkerUpdate.h:17
uint8_t erases_length
Definition: InteractiveMarkerUpdate.h:26
visualization_msgs::InteractiveMarker st_markers
Definition: InteractiveMarkerUpdate.h:21
Definition: InteractiveMarkerUpdate.h:29
visualization_msgs::InteractiveMarker * markers
Definition: InteractiveMarkerUpdate.h:22
visualization_msgs::InteractiveMarkerPose st_poses
Definition: InteractiveMarkerUpdate.h:24
virtual int serialize(unsigned char *outbuffer) const
Definition: InteractiveMarkerPose.h:28
uint8_t poses_length
Definition: InteractiveMarkerUpdate.h:23
Definition: msg.h:43
uint8_t type
Definition: InteractiveMarkerUpdate.h:19
InteractiveMarkerUpdate()
Definition: InteractiveMarkerUpdate.h:32
Definition: InteractiveMarkerUpdate.h:30