rosserial for Hydro

Dependencies:   MODSERIAL

Fork of rosserial_mbed_lib by nucho

Committer:
isad
Date:
Thu May 08 06:34:37 2014 +0000
Revision:
6:e5254bf7e322
0.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
isad 6:e5254bf7e322 1 #ifndef _ROS_rosserial_msgs_TopicInfo_h
isad 6:e5254bf7e322 2 #define _ROS_rosserial_msgs_TopicInfo_h
isad 6:e5254bf7e322 3
isad 6:e5254bf7e322 4 #include <stdint.h>
isad 6:e5254bf7e322 5 #include <string.h>
isad 6:e5254bf7e322 6 #include <stdlib.h>
isad 6:e5254bf7e322 7 #include "ros/msg.h"
isad 6:e5254bf7e322 8
isad 6:e5254bf7e322 9 namespace rosserial_msgs
isad 6:e5254bf7e322 10 {
isad 6:e5254bf7e322 11
isad 6:e5254bf7e322 12 class TopicInfo : public ros::Msg
isad 6:e5254bf7e322 13 {
isad 6:e5254bf7e322 14 public:
isad 6:e5254bf7e322 15 uint16_t topic_id;
isad 6:e5254bf7e322 16 char * topic_name;
isad 6:e5254bf7e322 17 char * message_type;
isad 6:e5254bf7e322 18 char * md5sum;
isad 6:e5254bf7e322 19 int32_t buffer_size;
isad 6:e5254bf7e322 20 enum { ID_PUBLISHER = 0 };
isad 6:e5254bf7e322 21 enum { ID_SUBSCRIBER = 1 };
isad 6:e5254bf7e322 22 enum { ID_SERVICE_SERVER = 2 };
isad 6:e5254bf7e322 23 enum { ID_SERVICE_CLIENT = 4 };
isad 6:e5254bf7e322 24 enum { ID_PARAMETER_REQUEST = 6 };
isad 6:e5254bf7e322 25 enum { ID_LOG = 7 };
isad 6:e5254bf7e322 26 enum { ID_TIME = 10 };
isad 6:e5254bf7e322 27
isad 6:e5254bf7e322 28 virtual int serialize(unsigned char *outbuffer) const
isad 6:e5254bf7e322 29 {
isad 6:e5254bf7e322 30 int offset = 0;
isad 6:e5254bf7e322 31 *(outbuffer + offset + 0) = (this->topic_id >> (8 * 0)) & 0xFF;
isad 6:e5254bf7e322 32 *(outbuffer + offset + 1) = (this->topic_id >> (8 * 1)) & 0xFF;
isad 6:e5254bf7e322 33 offset += sizeof(this->topic_id);
isad 6:e5254bf7e322 34 uint32_t length_topic_name = strlen( (const char*) this->topic_name);
isad 6:e5254bf7e322 35 memcpy(outbuffer + offset, &length_topic_name, sizeof(uint32_t));
isad 6:e5254bf7e322 36 offset += 4;
isad 6:e5254bf7e322 37 memcpy(outbuffer + offset, this->topic_name, length_topic_name);
isad 6:e5254bf7e322 38 offset += length_topic_name;
isad 6:e5254bf7e322 39 uint32_t length_message_type = strlen( (const char*) this->message_type);
isad 6:e5254bf7e322 40 memcpy(outbuffer + offset, &length_message_type, sizeof(uint32_t));
isad 6:e5254bf7e322 41 offset += 4;
isad 6:e5254bf7e322 42 memcpy(outbuffer + offset, this->message_type, length_message_type);
isad 6:e5254bf7e322 43 offset += length_message_type;
isad 6:e5254bf7e322 44 uint32_t length_md5sum = strlen( (const char*) this->md5sum);
isad 6:e5254bf7e322 45 memcpy(outbuffer + offset, &length_md5sum, sizeof(uint32_t));
isad 6:e5254bf7e322 46 offset += 4;
isad 6:e5254bf7e322 47 memcpy(outbuffer + offset, this->md5sum, length_md5sum);
isad 6:e5254bf7e322 48 offset += length_md5sum;
isad 6:e5254bf7e322 49 union {
isad 6:e5254bf7e322 50 int32_t real;
isad 6:e5254bf7e322 51 uint32_t base;
isad 6:e5254bf7e322 52 } u_buffer_size;
isad 6:e5254bf7e322 53 u_buffer_size.real = this->buffer_size;
isad 6:e5254bf7e322 54 *(outbuffer + offset + 0) = (u_buffer_size.base >> (8 * 0)) & 0xFF;
isad 6:e5254bf7e322 55 *(outbuffer + offset + 1) = (u_buffer_size.base >> (8 * 1)) & 0xFF;
isad 6:e5254bf7e322 56 *(outbuffer + offset + 2) = (u_buffer_size.base >> (8 * 2)) & 0xFF;
isad 6:e5254bf7e322 57 *(outbuffer + offset + 3) = (u_buffer_size.base >> (8 * 3)) & 0xFF;
isad 6:e5254bf7e322 58 offset += sizeof(this->buffer_size);
isad 6:e5254bf7e322 59 return offset;
isad 6:e5254bf7e322 60 }
isad 6:e5254bf7e322 61
isad 6:e5254bf7e322 62 virtual int deserialize(unsigned char *inbuffer)
isad 6:e5254bf7e322 63 {
isad 6:e5254bf7e322 64 int offset = 0;
isad 6:e5254bf7e322 65 this->topic_id = ((uint16_t) (*(inbuffer + offset)));
isad 6:e5254bf7e322 66 this->topic_id |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
isad 6:e5254bf7e322 67 offset += sizeof(this->topic_id);
isad 6:e5254bf7e322 68 uint32_t length_topic_name;
isad 6:e5254bf7e322 69 memcpy(&length_topic_name, (inbuffer + offset), sizeof(uint32_t));
isad 6:e5254bf7e322 70 offset += 4;
isad 6:e5254bf7e322 71 for(unsigned int k= offset; k< offset+length_topic_name; ++k){
isad 6:e5254bf7e322 72 inbuffer[k-1]=inbuffer[k];
isad 6:e5254bf7e322 73 }
isad 6:e5254bf7e322 74 inbuffer[offset+length_topic_name-1]=0;
isad 6:e5254bf7e322 75 this->topic_name = (char *)(inbuffer + offset-1);
isad 6:e5254bf7e322 76 offset += length_topic_name;
isad 6:e5254bf7e322 77 uint32_t length_message_type;
isad 6:e5254bf7e322 78 memcpy(&length_message_type, (inbuffer + offset), sizeof(uint32_t));
isad 6:e5254bf7e322 79 offset += 4;
isad 6:e5254bf7e322 80 for(unsigned int k= offset; k< offset+length_message_type; ++k){
isad 6:e5254bf7e322 81 inbuffer[k-1]=inbuffer[k];
isad 6:e5254bf7e322 82 }
isad 6:e5254bf7e322 83 inbuffer[offset+length_message_type-1]=0;
isad 6:e5254bf7e322 84 this->message_type = (char *)(inbuffer + offset-1);
isad 6:e5254bf7e322 85 offset += length_message_type;
isad 6:e5254bf7e322 86 uint32_t length_md5sum;
isad 6:e5254bf7e322 87 memcpy(&length_md5sum, (inbuffer + offset), sizeof(uint32_t));
isad 6:e5254bf7e322 88 offset += 4;
isad 6:e5254bf7e322 89 for(unsigned int k= offset; k< offset+length_md5sum; ++k){
isad 6:e5254bf7e322 90 inbuffer[k-1]=inbuffer[k];
isad 6:e5254bf7e322 91 }
isad 6:e5254bf7e322 92 inbuffer[offset+length_md5sum-1]=0;
isad 6:e5254bf7e322 93 this->md5sum = (char *)(inbuffer + offset-1);
isad 6:e5254bf7e322 94 offset += length_md5sum;
isad 6:e5254bf7e322 95 union {
isad 6:e5254bf7e322 96 int32_t real;
isad 6:e5254bf7e322 97 uint32_t base;
isad 6:e5254bf7e322 98 } u_buffer_size;
isad 6:e5254bf7e322 99 u_buffer_size.base = 0;
isad 6:e5254bf7e322 100 u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
isad 6:e5254bf7e322 101 u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
isad 6:e5254bf7e322 102 u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
isad 6:e5254bf7e322 103 u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
isad 6:e5254bf7e322 104 this->buffer_size = u_buffer_size.real;
isad 6:e5254bf7e322 105 offset += sizeof(this->buffer_size);
isad 6:e5254bf7e322 106 return offset;
isad 6:e5254bf7e322 107 }
isad 6:e5254bf7e322 108
isad 6:e5254bf7e322 109 const char * getType(){ return "rosserial_msgs/TopicInfo"; };
isad 6:e5254bf7e322 110 const char * getMD5(){ return "63aa5e8f1bdd6f35c69fe1a1b9d28e9f"; };
isad 6:e5254bf7e322 111
isad 6:e5254bf7e322 112 };
isad 6:e5254bf7e322 113
isad 6:e5254bf7e322 114 }
isad 6:e5254bf7e322 115 #endif