kitt_platform
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Macros
Joy.h
Go to the documentation of this file.
1 #ifndef _ROS_sensor_msgs_Joy_h
2 #define _ROS_sensor_msgs_Joy_h
3 
4 #include <stdint.h>
5 #include <string.h>
6 #include <stdlib.h>
7 #include "ros/msg.h"
8 #include "std_msgs/Header.h"
9 
10 namespace sensor_msgs
11 {
12 
13  class Joy : public ros::Msg
14  {
15  public:
17  uint8_t axes_length;
18  float st_axes;
19  float * axes;
20  uint8_t buttons_length;
21  int32_t st_buttons;
22  int32_t * buttons;
23 
24  Joy():
25  header(),
26  axes_length(0), axes(NULL),
27  buttons_length(0), buttons(NULL)
28  {
29  }
30 
31  virtual int serialize(unsigned char *outbuffer) const
32  {
33  int offset = 0;
34  offset += this->header.serialize(outbuffer + offset);
35  *(outbuffer + offset++) = axes_length;
36  *(outbuffer + offset++) = 0;
37  *(outbuffer + offset++) = 0;
38  *(outbuffer + offset++) = 0;
39  for( uint8_t i = 0; i < axes_length; i++){
40  union {
41  float real;
42  uint32_t base;
43  } u_axesi;
44  u_axesi.real = this->axes[i];
45  *(outbuffer + offset + 0) = (u_axesi.base >> (8 * 0)) & 0xFF;
46  *(outbuffer + offset + 1) = (u_axesi.base >> (8 * 1)) & 0xFF;
47  *(outbuffer + offset + 2) = (u_axesi.base >> (8 * 2)) & 0xFF;
48  *(outbuffer + offset + 3) = (u_axesi.base >> (8 * 3)) & 0xFF;
49  offset += sizeof(this->axes[i]);
50  }
51  *(outbuffer + offset++) = buttons_length;
52  *(outbuffer + offset++) = 0;
53  *(outbuffer + offset++) = 0;
54  *(outbuffer + offset++) = 0;
55  for( uint8_t i = 0; i < buttons_length; i++){
56  union {
57  int32_t real;
58  uint32_t base;
59  } u_buttonsi;
60  u_buttonsi.real = this->buttons[i];
61  *(outbuffer + offset + 0) = (u_buttonsi.base >> (8 * 0)) & 0xFF;
62  *(outbuffer + offset + 1) = (u_buttonsi.base >> (8 * 1)) & 0xFF;
63  *(outbuffer + offset + 2) = (u_buttonsi.base >> (8 * 2)) & 0xFF;
64  *(outbuffer + offset + 3) = (u_buttonsi.base >> (8 * 3)) & 0xFF;
65  offset += sizeof(this->buttons[i]);
66  }
67  return offset;
68  }
69 
70  virtual int deserialize(unsigned char *inbuffer)
71  {
72  int offset = 0;
73  offset += this->header.deserialize(inbuffer + offset);
74  uint8_t axes_lengthT = *(inbuffer + offset++);
75  if(axes_lengthT > axes_length)
76  this->axes = (float*)realloc(this->axes, axes_lengthT * sizeof(float));
77  offset += 3;
78  axes_length = axes_lengthT;
79  for( uint8_t i = 0; i < axes_length; i++){
80  union {
81  float real;
82  uint32_t base;
83  } u_st_axes;
84  u_st_axes.base = 0;
85  u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
86  u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
87  u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
88  u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
89  this->st_axes = u_st_axes.real;
90  offset += sizeof(this->st_axes);
91  memcpy( &(this->axes[i]), &(this->st_axes), sizeof(float));
92  }
93  uint8_t buttons_lengthT = *(inbuffer + offset++);
94  if(buttons_lengthT > buttons_length)
95  this->buttons = (int32_t*)realloc(this->buttons, buttons_lengthT * sizeof(int32_t));
96  offset += 3;
97  buttons_length = buttons_lengthT;
98  for( uint8_t i = 0; i < buttons_length; i++){
99  union {
100  int32_t real;
101  uint32_t base;
102  } u_st_buttons;
103  u_st_buttons.base = 0;
104  u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
105  u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
106  u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
107  u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
108  this->st_buttons = u_st_buttons.real;
109  offset += sizeof(this->st_buttons);
110  memcpy( &(this->buttons[i]), &(this->st_buttons), sizeof(int32_t));
111  }
112  return offset;
113  }
114 
115  const char * getType(){ return "sensor_msgs/Joy"; };
116  const char * getMD5(){ return "5a9ea5f83505693b71e785041e67a8bb"; };
117 
118  };
119 
120 }
121 #endif
virtual int deserialize(unsigned char *inbuffer)
Definition: Joy.h:70
virtual int deserialize(unsigned char *inbuffer)
Definition: Header.h:53
int32_t * buttons
Definition: Joy.h:22
float st_axes
Definition: Joy.h:18
virtual int serialize(unsigned char *outbuffer) const
Definition: Header.h:27
Joy()
Definition: Joy.h:24
Definition: Header.h:13
Definition: Joy.h:13
int32_t st_buttons
Definition: Joy.h:21
const char * getType()
Definition: Joy.h:115
uint8_t axes_length
Definition: Joy.h:17
std_msgs::Header header
Definition: Joy.h:16
uint8_t buttons_length
Definition: Joy.h:20
Definition: msg.h:43
float * axes
Definition: Joy.h:19
virtual int serialize(unsigned char *outbuffer) const
Definition: Joy.h:31
const char * getMD5()
Definition: Joy.h:116