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_roscpp_Logger_h
isad 6:e5254bf7e322 2 #define _ROS_roscpp_Logger_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 roscpp
isad 6:e5254bf7e322 10 {
isad 6:e5254bf7e322 11
isad 6:e5254bf7e322 12 class Logger : public ros::Msg
isad 6:e5254bf7e322 13 {
isad 6:e5254bf7e322 14 public:
isad 6:e5254bf7e322 15 char * name;
isad 6:e5254bf7e322 16 char * level;
isad 6:e5254bf7e322 17
isad 6:e5254bf7e322 18 virtual int serialize(unsigned char *outbuffer) const
isad 6:e5254bf7e322 19 {
isad 6:e5254bf7e322 20 int offset = 0;
isad 6:e5254bf7e322 21 uint32_t length_name = strlen( (const char*) this->name);
isad 6:e5254bf7e322 22 memcpy(outbuffer + offset, &length_name, sizeof(uint32_t));
isad 6:e5254bf7e322 23 offset += 4;
isad 6:e5254bf7e322 24 memcpy(outbuffer + offset, this->name, length_name);
isad 6:e5254bf7e322 25 offset += length_name;
isad 6:e5254bf7e322 26 uint32_t length_level = strlen( (const char*) this->level);
isad 6:e5254bf7e322 27 memcpy(outbuffer + offset, &length_level, sizeof(uint32_t));
isad 6:e5254bf7e322 28 offset += 4;
isad 6:e5254bf7e322 29 memcpy(outbuffer + offset, this->level, length_level);
isad 6:e5254bf7e322 30 offset += length_level;
isad 6:e5254bf7e322 31 return offset;
isad 6:e5254bf7e322 32 }
isad 6:e5254bf7e322 33
isad 6:e5254bf7e322 34 virtual int deserialize(unsigned char *inbuffer)
isad 6:e5254bf7e322 35 {
isad 6:e5254bf7e322 36 int offset = 0;
isad 6:e5254bf7e322 37 uint32_t length_name;
isad 6:e5254bf7e322 38 memcpy(&length_name, (inbuffer + offset), sizeof(uint32_t));
isad 6:e5254bf7e322 39 offset += 4;
isad 6:e5254bf7e322 40 for(unsigned int k= offset; k< offset+length_name; ++k){
isad 6:e5254bf7e322 41 inbuffer[k-1]=inbuffer[k];
isad 6:e5254bf7e322 42 }
isad 6:e5254bf7e322 43 inbuffer[offset+length_name-1]=0;
isad 6:e5254bf7e322 44 this->name = (char *)(inbuffer + offset-1);
isad 6:e5254bf7e322 45 offset += length_name;
isad 6:e5254bf7e322 46 uint32_t length_level;
isad 6:e5254bf7e322 47 memcpy(&length_level, (inbuffer + offset), sizeof(uint32_t));
isad 6:e5254bf7e322 48 offset += 4;
isad 6:e5254bf7e322 49 for(unsigned int k= offset; k< offset+length_level; ++k){
isad 6:e5254bf7e322 50 inbuffer[k-1]=inbuffer[k];
isad 6:e5254bf7e322 51 }
isad 6:e5254bf7e322 52 inbuffer[offset+length_level-1]=0;
isad 6:e5254bf7e322 53 this->level = (char *)(inbuffer + offset-1);
isad 6:e5254bf7e322 54 offset += length_level;
isad 6:e5254bf7e322 55 return offset;
isad 6:e5254bf7e322 56 }
isad 6:e5254bf7e322 57
isad 6:e5254bf7e322 58 const char * getType(){ return "roscpp/Logger"; };
isad 6:e5254bf7e322 59 const char * getMD5(){ return "a6069a2ff40db7bd32143dd66e1f408e"; };
isad 6:e5254bf7e322 60
isad 6:e5254bf7e322 61 };
isad 6:e5254bf7e322 62
isad 6:e5254bf7e322 63 }
isad 6:e5254bf7e322 64 #endif