modify for Hydro version

Dependencies:   MODSERIAL

Fork of rosserial_mbed_lib by nucho

Committer:
jjzak
Date:
Sat Oct 26 15:38:35 2013 +0000
Revision:
5:8cd48977ec68
modify for Hydro version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jjzak 5:8cd48977ec68 1 #ifndef _ROS_sensor_msgs_RelativeHumidity_h
jjzak 5:8cd48977ec68 2 #define _ROS_sensor_msgs_RelativeHumidity_h
jjzak 5:8cd48977ec68 3
jjzak 5:8cd48977ec68 4 #include <stdint.h>
jjzak 5:8cd48977ec68 5 #include <string.h>
jjzak 5:8cd48977ec68 6 #include <stdlib.h>
jjzak 5:8cd48977ec68 7 #include "ros/msg.h"
jjzak 5:8cd48977ec68 8 #include "std_msgs/Header.h"
jjzak 5:8cd48977ec68 9
jjzak 5:8cd48977ec68 10 namespace sensor_msgs
jjzak 5:8cd48977ec68 11 {
jjzak 5:8cd48977ec68 12
jjzak 5:8cd48977ec68 13 class RelativeHumidity : public ros::Msg
jjzak 5:8cd48977ec68 14 {
jjzak 5:8cd48977ec68 15 public:
jjzak 5:8cd48977ec68 16 std_msgs::Header header;
jjzak 5:8cd48977ec68 17 float relative_humidity;
jjzak 5:8cd48977ec68 18 float variance;
jjzak 5:8cd48977ec68 19
jjzak 5:8cd48977ec68 20 virtual int serialize(unsigned char *outbuffer) const
jjzak 5:8cd48977ec68 21 {
jjzak 5:8cd48977ec68 22 int offset = 0;
jjzak 5:8cd48977ec68 23 offset += this->header.serialize(outbuffer + offset);
jjzak 5:8cd48977ec68 24 int32_t * val_relative_humidity = (int32_t *) &(this->relative_humidity);
jjzak 5:8cd48977ec68 25 int32_t exp_relative_humidity = (((*val_relative_humidity)>>23)&255);
jjzak 5:8cd48977ec68 26 if(exp_relative_humidity != 0)
jjzak 5:8cd48977ec68 27 exp_relative_humidity += 1023-127;
jjzak 5:8cd48977ec68 28 int32_t sig_relative_humidity = *val_relative_humidity;
jjzak 5:8cd48977ec68 29 *(outbuffer + offset++) = 0;
jjzak 5:8cd48977ec68 30 *(outbuffer + offset++) = 0;
jjzak 5:8cd48977ec68 31 *(outbuffer + offset++) = 0;
jjzak 5:8cd48977ec68 32 *(outbuffer + offset++) = (sig_relative_humidity<<5) & 0xff;
jjzak 5:8cd48977ec68 33 *(outbuffer + offset++) = (sig_relative_humidity>>3) & 0xff;
jjzak 5:8cd48977ec68 34 *(outbuffer + offset++) = (sig_relative_humidity>>11) & 0xff;
jjzak 5:8cd48977ec68 35 *(outbuffer + offset++) = ((exp_relative_humidity<<4) & 0xF0) | ((sig_relative_humidity>>19)&0x0F);
jjzak 5:8cd48977ec68 36 *(outbuffer + offset++) = (exp_relative_humidity>>4) & 0x7F;
jjzak 5:8cd48977ec68 37 if(this->relative_humidity < 0) *(outbuffer + offset -1) |= 0x80;
jjzak 5:8cd48977ec68 38 int32_t * val_variance = (int32_t *) &(this->variance);
jjzak 5:8cd48977ec68 39 int32_t exp_variance = (((*val_variance)>>23)&255);
jjzak 5:8cd48977ec68 40 if(exp_variance != 0)
jjzak 5:8cd48977ec68 41 exp_variance += 1023-127;
jjzak 5:8cd48977ec68 42 int32_t sig_variance = *val_variance;
jjzak 5:8cd48977ec68 43 *(outbuffer + offset++) = 0;
jjzak 5:8cd48977ec68 44 *(outbuffer + offset++) = 0;
jjzak 5:8cd48977ec68 45 *(outbuffer + offset++) = 0;
jjzak 5:8cd48977ec68 46 *(outbuffer + offset++) = (sig_variance<<5) & 0xff;
jjzak 5:8cd48977ec68 47 *(outbuffer + offset++) = (sig_variance>>3) & 0xff;
jjzak 5:8cd48977ec68 48 *(outbuffer + offset++) = (sig_variance>>11) & 0xff;
jjzak 5:8cd48977ec68 49 *(outbuffer + offset++) = ((exp_variance<<4) & 0xF0) | ((sig_variance>>19)&0x0F);
jjzak 5:8cd48977ec68 50 *(outbuffer + offset++) = (exp_variance>>4) & 0x7F;
jjzak 5:8cd48977ec68 51 if(this->variance < 0) *(outbuffer + offset -1) |= 0x80;
jjzak 5:8cd48977ec68 52 return offset;
jjzak 5:8cd48977ec68 53 }
jjzak 5:8cd48977ec68 54
jjzak 5:8cd48977ec68 55 virtual int deserialize(unsigned char *inbuffer)
jjzak 5:8cd48977ec68 56 {
jjzak 5:8cd48977ec68 57 int offset = 0;
jjzak 5:8cd48977ec68 58 offset += this->header.deserialize(inbuffer + offset);
jjzak 5:8cd48977ec68 59 uint32_t * val_relative_humidity = (uint32_t*) &(this->relative_humidity);
jjzak 5:8cd48977ec68 60 offset += 3;
jjzak 5:8cd48977ec68 61 *val_relative_humidity = ((uint32_t)(*(inbuffer + offset++))>>5 & 0x07);
jjzak 5:8cd48977ec68 62 *val_relative_humidity |= ((uint32_t)(*(inbuffer + offset++)) & 0xff)<<3;
jjzak 5:8cd48977ec68 63 *val_relative_humidity |= ((uint32_t)(*(inbuffer + offset++)) & 0xff)<<11;
jjzak 5:8cd48977ec68 64 *val_relative_humidity |= ((uint32_t)(*(inbuffer + offset)) & 0x0f)<<19;
jjzak 5:8cd48977ec68 65 uint32_t exp_relative_humidity = ((uint32_t)(*(inbuffer + offset++))&0xf0)>>4;
jjzak 5:8cd48977ec68 66 exp_relative_humidity |= ((uint32_t)(*(inbuffer + offset)) & 0x7f)<<4;
jjzak 5:8cd48977ec68 67 if(exp_relative_humidity !=0)
jjzak 5:8cd48977ec68 68 *val_relative_humidity |= ((exp_relative_humidity)-1023+127)<<23;
jjzak 5:8cd48977ec68 69 if( ((*(inbuffer+offset++)) & 0x80) > 0) this->relative_humidity = -this->relative_humidity;
jjzak 5:8cd48977ec68 70 uint32_t * val_variance = (uint32_t*) &(this->variance);
jjzak 5:8cd48977ec68 71 offset += 3;
jjzak 5:8cd48977ec68 72 *val_variance = ((uint32_t)(*(inbuffer + offset++))>>5 & 0x07);
jjzak 5:8cd48977ec68 73 *val_variance |= ((uint32_t)(*(inbuffer + offset++)) & 0xff)<<3;
jjzak 5:8cd48977ec68 74 *val_variance |= ((uint32_t)(*(inbuffer + offset++)) & 0xff)<<11;
jjzak 5:8cd48977ec68 75 *val_variance |= ((uint32_t)(*(inbuffer + offset)) & 0x0f)<<19;
jjzak 5:8cd48977ec68 76 uint32_t exp_variance = ((uint32_t)(*(inbuffer + offset++))&0xf0)>>4;
jjzak 5:8cd48977ec68 77 exp_variance |= ((uint32_t)(*(inbuffer + offset)) & 0x7f)<<4;
jjzak 5:8cd48977ec68 78 if(exp_variance !=0)
jjzak 5:8cd48977ec68 79 *val_variance |= ((exp_variance)-1023+127)<<23;
jjzak 5:8cd48977ec68 80 if( ((*(inbuffer+offset++)) & 0x80) > 0) this->variance = -this->variance;
jjzak 5:8cd48977ec68 81 return offset;
jjzak 5:8cd48977ec68 82 }
jjzak 5:8cd48977ec68 83
jjzak 5:8cd48977ec68 84 const char * getType(){ return "sensor_msgs/RelativeHumidity"; };
jjzak 5:8cd48977ec68 85 const char * getMD5(){ return "8730015b05955b7e992ce29a2678d90f"; };
jjzak 5:8cd48977ec68 86
jjzak 5:8cd48977ec68 87 };
jjzak 5:8cd48977ec68 88
jjzak 5:8cd48977ec68 89 }
jjzak 5:8cd48977ec68 90 #endif