This program is porting rosserial_arduino for mbed http://www.ros.org/wiki/rosserial_arduino This program supported the revision of 169 of rosserial.

Dependencies:  

Dependents:   rosserial_mbed robot_S2

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Int64MultiArray.h Source File

Int64MultiArray.h

00001 #ifndef _ROS_std_msgs_Int64MultiArray_h
00002 #define _ROS_std_msgs_Int64MultiArray_h
00003 
00004 #include <stdint.h>
00005 #include <string.h>
00006 #include <stdlib.h>
00007 #include "ros/msg.h"
00008 #include "std_msgs/MultiArrayLayout.h"
00009 
00010 namespace std_msgs {
00011 
00012 class Int64MultiArray : public ros::Msg {
00013 public:
00014     std_msgs::MultiArrayLayout layout;
00015     unsigned char data_length;
00016     int64_t st_data;
00017     int64_t * data;
00018 
00019     virtual int serialize(unsigned char *outbuffer) const {
00020         int offset = 0;
00021         offset += this->layout.serialize(outbuffer + offset);
00022         *(outbuffer + offset++) = data_length;
00023         *(outbuffer + offset++) = 0;
00024         *(outbuffer + offset++) = 0;
00025         *(outbuffer + offset++) = 0;
00026         for ( unsigned char i = 0; i < data_length; i++) {
00027             union {
00028                 int64_t real;
00029                 uint64_t base;
00030             } u_datai;
00031             u_datai.real = this->data[i];
00032             *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
00033             *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF;
00034             *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF;
00035             *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF;
00036             *(outbuffer + offset + 4) = (u_datai.base >> (8 * 4)) & 0xFF;
00037             *(outbuffer + offset + 5) = (u_datai.base >> (8 * 5)) & 0xFF;
00038             *(outbuffer + offset + 6) = (u_datai.base >> (8 * 6)) & 0xFF;
00039             *(outbuffer + offset + 7) = (u_datai.base >> (8 * 7)) & 0xFF;
00040             offset += sizeof(this->data[i]);
00041         }
00042         return offset;
00043     }
00044 
00045     virtual int deserialize(unsigned char *inbuffer) {
00046         int offset = 0;
00047         offset += this->layout.deserialize(inbuffer + offset);
00048         unsigned char data_lengthT = *(inbuffer + offset++);
00049         if (data_lengthT > data_length)
00050             this->data = (int64_t*)realloc(this->data, data_lengthT * sizeof(int64_t));
00051         offset += 3;
00052         data_length = data_lengthT;
00053         for ( unsigned char i = 0; i < data_length; i++) {
00054             union {
00055                 int64_t real;
00056                 uint64_t base;
00057             } u_st_data;
00058             u_st_data.base = 0;
00059             u_st_data.base |= ((typeof(u_st_data.base)) (*(inbuffer + offset + 0))) << (8 * 0);
00060             u_st_data.base |= ((typeof(u_st_data.base)) (*(inbuffer + offset + 1))) << (8 * 1);
00061             u_st_data.base |= ((typeof(u_st_data.base)) (*(inbuffer + offset + 2))) << (8 * 2);
00062             u_st_data.base |= ((typeof(u_st_data.base)) (*(inbuffer + offset + 3))) << (8 * 3);
00063             u_st_data.base |= ((typeof(u_st_data.base)) (*(inbuffer + offset + 4))) << (8 * 4);
00064             u_st_data.base |= ((typeof(u_st_data.base)) (*(inbuffer + offset + 5))) << (8 * 5);
00065             u_st_data.base |= ((typeof(u_st_data.base)) (*(inbuffer + offset + 6))) << (8 * 6);
00066             u_st_data.base |= ((typeof(u_st_data.base)) (*(inbuffer + offset + 7))) << (8 * 7);
00067             this->st_data = u_st_data.real;
00068             offset += sizeof(this->st_data);
00069             memcpy( &(this->data[i]), &(this->st_data), sizeof(int64_t));
00070         }
00071         return offset;
00072     }
00073 
00074     virtual const char * getType() {
00075         return "std_msgs/Int64MultiArray";
00076     };
00077     virtual const char * getMD5() {
00078         return "54865aa6c65be0448113a2afc6a49270";
00079     };
00080 
00081 };
00082 
00083 }
00084 #endif