This is a fork from the original, including a small change in the buffer size of the hardware interface (increased to 2048) and decreasing the number of publishers and subscribers to 5. Besides, the library about the message Adc.h was modified so as to increase the number of available Adc channels to be read ( from 6 to 7 ) For this modification, a change in checksum was required

Dependencies:   BufferedSerial

Fork of ros_lib_kinetic by Gary Servin

Committer:
jacobepfl1692
Date:
Tue Oct 17 18:49:03 2017 +0000
Revision:
2:9114cc24ddcf
Parent:
0:9e9b7db60fd5
I increased the channels of the ADC to 6 (hence change in checksum) because my application needed it (STM32f407V6)

Who changed what in which revision?

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