kitt_platform
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Macros
MuxList.h
Go to the documentation of this file.
1 #ifndef _ROS_SERVICE_MuxList_h
2 #define _ROS_SERVICE_MuxList_h
3 #include <stdint.h>
4 #include <string.h>
5 #include <stdlib.h>
6 #include "ros/msg.h"
7 
8 namespace topic_tools
9 {
10 
11 static const char MUXLIST[] = "topic_tools/MuxList";
12 
13  class MuxListRequest : public ros::Msg
14  {
15  public:
16 
18  {
19  }
20 
21  virtual int serialize(unsigned char *outbuffer) const
22  {
23  int offset = 0;
24  return offset;
25  }
26 
27  virtual int deserialize(unsigned char *inbuffer)
28  {
29  int offset = 0;
30  return offset;
31  }
32 
33  const char * getType(){ return MUXLIST; };
34  const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
35 
36  };
37 
38  class MuxListResponse : public ros::Msg
39  {
40  public:
41  uint8_t topics_length;
42  char* st_topics;
43  char* * topics;
44 
46  topics_length(0), topics(NULL)
47  {
48  }
49 
50  virtual int serialize(unsigned char *outbuffer) const
51  {
52  int offset = 0;
53  *(outbuffer + offset++) = topics_length;
54  *(outbuffer + offset++) = 0;
55  *(outbuffer + offset++) = 0;
56  *(outbuffer + offset++) = 0;
57  for( uint8_t i = 0; i < topics_length; i++){
58  uint32_t length_topicsi = strlen(this->topics[i]);
59  memcpy(outbuffer + offset, &length_topicsi, sizeof(uint32_t));
60  offset += 4;
61  memcpy(outbuffer + offset, this->topics[i], length_topicsi);
62  offset += length_topicsi;
63  }
64  return offset;
65  }
66 
67  virtual int deserialize(unsigned char *inbuffer)
68  {
69  int offset = 0;
70  uint8_t topics_lengthT = *(inbuffer + offset++);
71  if(topics_lengthT > topics_length)
72  this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*));
73  offset += 3;
74  topics_length = topics_lengthT;
75  for( uint8_t i = 0; i < topics_length; i++){
76  uint32_t length_st_topics;
77  memcpy(&length_st_topics, (inbuffer + offset), sizeof(uint32_t));
78  offset += 4;
79  for(unsigned int k= offset; k< offset+length_st_topics; ++k){
80  inbuffer[k-1]=inbuffer[k];
81  }
82  inbuffer[offset+length_st_topics-1]=0;
83  this->st_topics = (char *)(inbuffer + offset-1);
84  offset += length_st_topics;
85  memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*));
86  }
87  return offset;
88  }
89 
90  const char * getType(){ return MUXLIST; };
91  const char * getMD5(){ return "b0eef9a05d4e829092fc2f2c3c2aad3d"; };
92 
93  };
94 
95  class MuxList {
96  public:
99  };
100 
101 }
102 #endif
const char * getType()
Definition: MuxList.h:90
MuxListResponse Response
Definition: MuxList.h:98
Definition: MuxList.h:13
static const char MUXLIST[]
Definition: MuxList.h:11
uint8_t topics_length
Definition: MuxList.h:41
MuxListResponse()
Definition: MuxList.h:45
const char * getMD5()
Definition: MuxList.h:34
MuxListRequest()
Definition: MuxList.h:17
MuxListRequest Request
Definition: MuxList.h:97
Definition: MuxList.h:38
const char * getMD5()
Definition: MuxList.h:91
Definition: MuxList.h:95
const char * getType()
Definition: MuxList.h:33
virtual int serialize(unsigned char *outbuffer) const
Definition: MuxList.h:50
virtual int deserialize(unsigned char *inbuffer)
Definition: MuxList.h:27
char ** topics
Definition: MuxList.h:43
Definition: msg.h:43
virtual int serialize(unsigned char *outbuffer) const
Definition: MuxList.h:21
virtual int deserialize(unsigned char *inbuffer)
Definition: MuxList.h:67
char * st_topics
Definition: MuxList.h:42