modify for Hydro version
Fork of rosserial_mbed_lib by
Diff: std_msgs/Float64.h
- Revision:
- 1:ff0ec969dad1
- Parent:
- 0:77afd7560544
- Child:
- 3:1cf99502f396
--- a/std_msgs/Float64.h Fri Aug 19 09:06:30 2011 +0000 +++ b/std_msgs/Float64.h Sun Oct 16 07:19:36 2011 +0000 @@ -12,11 +12,52 @@ class Float64 : public ros::Msg { public: - float data; + double data; virtual int serialize(unsigned char *outbuffer) { int offset = 0; + union { + double real; + uint64_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_data.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_data.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_data.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_data.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((typeof(u_data.base)) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((typeof(u_data.base)) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((typeof(u_data.base)) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((typeof(u_data.base)) (*(inbuffer + offset + 3))) << (8 * 3); + u_data.base |= ((typeof(u_data.base)) (*(inbuffer + offset + 4))) << (8 * 4); + u_data.base |= ((typeof(u_data.base)) (*(inbuffer + offset + 5))) << (8 * 5); + u_data.base |= ((typeof(u_data.base)) (*(inbuffer + offset + 6))) << (8 * 6); + u_data.base |= ((typeof(u_data.base)) (*(inbuffer + offset + 7))) << (8 * 7); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } +/* + virtual int serialize(unsigned char *outbuffer) + { + int offset = 0; long * val_data = (long *) &(this->data); long exp_data = (((*val_data)>>23)&255); if(exp_data != 0) @@ -50,7 +91,7 @@ if( ((*(inbuffer+offset++)) & 0x80) > 0) this->data = -this->data; return offset; } - +*/ virtual const char * getType(){ return "std_msgs/Float64"; }; };