nucho / Mbed 2 deprecated rosserial_mbed

Dependencies:   rosserial_mbed_lib mbed Servo

Committer:
nucho
Date:
Sun Oct 16 07:17:43 2011 +0000
Revision:
1:098e75fd5ad2
Parent:
0:06fc856e99ca
Child:
3:dff241b66f84
This program supported the revision of 143 of rosserial.
And the bug fix of receive of array data.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nucho 1:098e75fd5ad2 1 #ifndef ros_rosserial_msgs_Log_h
nucho 1:098e75fd5ad2 2 #define ros_rosserial_msgs_Log_h
nucho 0:06fc856e99ca 3
nucho 0:06fc856e99ca 4 #include <stdint.h>
nucho 0:06fc856e99ca 5 #include <string.h>
nucho 0:06fc856e99ca 6 #include <stdlib.h>
nucho 0:06fc856e99ca 7 #include "../ros/msg.h"
nucho 0:06fc856e99ca 8
nucho 0:06fc856e99ca 9 namespace rosserial_msgs
nucho 0:06fc856e99ca 10 {
nucho 0:06fc856e99ca 11
nucho 0:06fc856e99ca 12 class Log : public ros::Msg
nucho 0:06fc856e99ca 13 {
nucho 0:06fc856e99ca 14 public:
nucho 0:06fc856e99ca 15 unsigned char level;
nucho 0:06fc856e99ca 16 char * msg;
nucho 0:06fc856e99ca 17 enum { DEBUG = 0 };
nucho 0:06fc856e99ca 18 enum { INFO = 1 };
nucho 0:06fc856e99ca 19 enum { WARN = 2 };
nucho 0:06fc856e99ca 20 enum { ERROR = 3 };
nucho 0:06fc856e99ca 21 enum { FATAL = 4 };
nucho 0:06fc856e99ca 22
nucho 0:06fc856e99ca 23 virtual int serialize(unsigned char *outbuffer)
nucho 0:06fc856e99ca 24 {
nucho 0:06fc856e99ca 25 int offset = 0;
nucho 0:06fc856e99ca 26 union {
nucho 0:06fc856e99ca 27 unsigned char real;
nucho 0:06fc856e99ca 28 unsigned char base;
nucho 0:06fc856e99ca 29 } u_level;
nucho 0:06fc856e99ca 30 u_level.real = this->level;
nucho 0:06fc856e99ca 31 *(outbuffer + offset + 0) = (u_level.base >> (8 * 0)) & 0xFF;
nucho 0:06fc856e99ca 32 offset += sizeof(this->level);
nucho 0:06fc856e99ca 33 long * length_msg = (long *)(outbuffer + offset);
nucho 0:06fc856e99ca 34 *length_msg = strlen( (const char*) this->msg);
nucho 0:06fc856e99ca 35 offset += 4;
nucho 0:06fc856e99ca 36 memcpy(outbuffer + offset, this->msg, *length_msg);
nucho 0:06fc856e99ca 37 offset += *length_msg;
nucho 0:06fc856e99ca 38 return offset;
nucho 0:06fc856e99ca 39 }
nucho 0:06fc856e99ca 40
nucho 0:06fc856e99ca 41 virtual int deserialize(unsigned char *inbuffer)
nucho 0:06fc856e99ca 42 {
nucho 0:06fc856e99ca 43 int offset = 0;
nucho 0:06fc856e99ca 44 union {
nucho 0:06fc856e99ca 45 unsigned char real;
nucho 0:06fc856e99ca 46 unsigned char base;
nucho 0:06fc856e99ca 47 } u_level;
nucho 0:06fc856e99ca 48 u_level.base = 0;
nucho 0:06fc856e99ca 49 u_level.base |= ((typeof(u_level.base)) (*(inbuffer + offset + 0))) << (8 * 0);
nucho 0:06fc856e99ca 50 this->level = u_level.real;
nucho 0:06fc856e99ca 51 offset += sizeof(this->level);
nucho 0:06fc856e99ca 52 uint32_t length_msg = *(uint32_t *)(inbuffer + offset);
nucho 0:06fc856e99ca 53 offset += 4;
nucho 0:06fc856e99ca 54 for(unsigned int k= offset; k< offset+length_msg; ++k){
nucho 0:06fc856e99ca 55 inbuffer[k-1]=inbuffer[k];
nucho 0:06fc856e99ca 56 }
nucho 0:06fc856e99ca 57 inbuffer[offset+length_msg-1]=0;
nucho 0:06fc856e99ca 58 this->msg = (char *)(inbuffer + offset-1);
nucho 0:06fc856e99ca 59 offset += length_msg;
nucho 0:06fc856e99ca 60 return offset;
nucho 0:06fc856e99ca 61 }
nucho 0:06fc856e99ca 62
nucho 0:06fc856e99ca 63 virtual const char * getType(){ return "rosserial_msgs/Log"; };
nucho 0:06fc856e99ca 64
nucho 0:06fc856e99ca 65 };
nucho 0:06fc856e99ca 66
nucho 0:06fc856e99ca 67 }
nucho 0:06fc856e99ca 68 #endif