Branch for servo motor
Dependencies: MPU6050-DMP mbed ros_lib_kinetic
Fork of AGV_SMT by
tiny_msgs/tinyVector.h@9:f9e9662d26bf, 2018-05-23 (annotated)
- Committer:
- WeberYang
- Date:
- Wed May 23 01:49:03 2018 +0000
- Revision:
- 9:f9e9662d26bf
- Parent:
- 2:648583d6e41a
0523 test fork
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
WeberYang | 2:648583d6e41a | 1 | #ifndef _ROS_tiny_msgs_tinyVector_h |
WeberYang | 2:648583d6e41a | 2 | #define _ROS_tiny_msgs_tinyVector_h |
WeberYang | 2:648583d6e41a | 3 | |
WeberYang | 2:648583d6e41a | 4 | #include <stdint.h> |
WeberYang | 2:648583d6e41a | 5 | #include <string.h> |
WeberYang | 2:648583d6e41a | 6 | #include <stdlib.h> |
WeberYang | 2:648583d6e41a | 7 | #include "ros/msg.h" |
WeberYang | 2:648583d6e41a | 8 | |
WeberYang | 2:648583d6e41a | 9 | namespace tiny_msgs |
WeberYang | 2:648583d6e41a | 10 | { |
WeberYang | 2:648583d6e41a | 11 | |
WeberYang | 2:648583d6e41a | 12 | class tinyVector : public ros::Msg |
WeberYang | 2:648583d6e41a | 13 | { |
WeberYang | 2:648583d6e41a | 14 | public: |
WeberYang | 2:648583d6e41a | 15 | typedef int16_t _x_type; |
WeberYang | 2:648583d6e41a | 16 | _x_type x; |
WeberYang | 2:648583d6e41a | 17 | typedef int16_t _y_type; |
WeberYang | 2:648583d6e41a | 18 | _y_type y; |
WeberYang | 2:648583d6e41a | 19 | typedef int16_t _z_type; |
WeberYang | 2:648583d6e41a | 20 | _z_type z; |
WeberYang | 2:648583d6e41a | 21 | |
WeberYang | 2:648583d6e41a | 22 | tinyVector(): |
WeberYang | 2:648583d6e41a | 23 | x(0), |
WeberYang | 2:648583d6e41a | 24 | y(0), |
WeberYang | 2:648583d6e41a | 25 | z(0) |
WeberYang | 2:648583d6e41a | 26 | { |
WeberYang | 2:648583d6e41a | 27 | } |
WeberYang | 2:648583d6e41a | 28 | |
WeberYang | 2:648583d6e41a | 29 | virtual int serialize(unsigned char *outbuffer) const |
WeberYang | 2:648583d6e41a | 30 | { |
WeberYang | 2:648583d6e41a | 31 | int offset = 0; |
WeberYang | 2:648583d6e41a | 32 | union { |
WeberYang | 2:648583d6e41a | 33 | int16_t real; |
WeberYang | 2:648583d6e41a | 34 | uint16_t base; |
WeberYang | 2:648583d6e41a | 35 | } u_x; |
WeberYang | 2:648583d6e41a | 36 | u_x.real = this->x; |
WeberYang | 2:648583d6e41a | 37 | *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; |
WeberYang | 2:648583d6e41a | 38 | *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; |
WeberYang | 2:648583d6e41a | 39 | offset += sizeof(this->x); |
WeberYang | 2:648583d6e41a | 40 | union { |
WeberYang | 2:648583d6e41a | 41 | int16_t real; |
WeberYang | 2:648583d6e41a | 42 | uint16_t base; |
WeberYang | 2:648583d6e41a | 43 | } u_y; |
WeberYang | 2:648583d6e41a | 44 | u_y.real = this->y; |
WeberYang | 2:648583d6e41a | 45 | *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; |
WeberYang | 2:648583d6e41a | 46 | *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; |
WeberYang | 2:648583d6e41a | 47 | offset += sizeof(this->y); |
WeberYang | 2:648583d6e41a | 48 | union { |
WeberYang | 2:648583d6e41a | 49 | int16_t real; |
WeberYang | 2:648583d6e41a | 50 | uint16_t base; |
WeberYang | 2:648583d6e41a | 51 | } u_z; |
WeberYang | 2:648583d6e41a | 52 | u_z.real = this->z; |
WeberYang | 2:648583d6e41a | 53 | *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; |
WeberYang | 2:648583d6e41a | 54 | *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; |
WeberYang | 2:648583d6e41a | 55 | offset += sizeof(this->z); |
WeberYang | 2:648583d6e41a | 56 | return offset; |
WeberYang | 2:648583d6e41a | 57 | } |
WeberYang | 2:648583d6e41a | 58 | |
WeberYang | 2:648583d6e41a | 59 | virtual int deserialize(unsigned char *inbuffer) |
WeberYang | 2:648583d6e41a | 60 | { |
WeberYang | 2:648583d6e41a | 61 | int offset = 0; |
WeberYang | 2:648583d6e41a | 62 | union { |
WeberYang | 2:648583d6e41a | 63 | int16_t real; |
WeberYang | 2:648583d6e41a | 64 | uint16_t base; |
WeberYang | 2:648583d6e41a | 65 | } u_x; |
WeberYang | 2:648583d6e41a | 66 | u_x.base = 0; |
WeberYang | 2:648583d6e41a | 67 | u_x.base |= ((uint16_t) (*(inbuffer + offset + 0))) << (8 * 0); |
WeberYang | 2:648583d6e41a | 68 | u_x.base |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); |
WeberYang | 2:648583d6e41a | 69 | this->x = u_x.real; |
WeberYang | 2:648583d6e41a | 70 | offset += sizeof(this->x); |
WeberYang | 2:648583d6e41a | 71 | union { |
WeberYang | 2:648583d6e41a | 72 | int16_t real; |
WeberYang | 2:648583d6e41a | 73 | uint16_t base; |
WeberYang | 2:648583d6e41a | 74 | } u_y; |
WeberYang | 2:648583d6e41a | 75 | u_y.base = 0; |
WeberYang | 2:648583d6e41a | 76 | u_y.base |= ((uint16_t) (*(inbuffer + offset + 0))) << (8 * 0); |
WeberYang | 2:648583d6e41a | 77 | u_y.base |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); |
WeberYang | 2:648583d6e41a | 78 | this->y = u_y.real; |
WeberYang | 2:648583d6e41a | 79 | offset += sizeof(this->y); |
WeberYang | 2:648583d6e41a | 80 | union { |
WeberYang | 2:648583d6e41a | 81 | int16_t real; |
WeberYang | 2:648583d6e41a | 82 | uint16_t base; |
WeberYang | 2:648583d6e41a | 83 | } u_z; |
WeberYang | 2:648583d6e41a | 84 | u_z.base = 0; |
WeberYang | 2:648583d6e41a | 85 | u_z.base |= ((uint16_t) (*(inbuffer + offset + 0))) << (8 * 0); |
WeberYang | 2:648583d6e41a | 86 | u_z.base |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); |
WeberYang | 2:648583d6e41a | 87 | this->z = u_z.real; |
WeberYang | 2:648583d6e41a | 88 | offset += sizeof(this->z); |
WeberYang | 2:648583d6e41a | 89 | return offset; |
WeberYang | 2:648583d6e41a | 90 | } |
WeberYang | 2:648583d6e41a | 91 | |
WeberYang | 2:648583d6e41a | 92 | const char * getType(){ return "tinyVector"; }; |
WeberYang | 2:648583d6e41a | 93 | const char * getMD5(){ return "85729383565f7e059d4a213b3db1317b"; }; |
WeberYang | 2:648583d6e41a | 94 | |
WeberYang | 2:648583d6e41a | 95 | }; |
WeberYang | 2:648583d6e41a | 96 | |
WeberYang | 2:648583d6e41a | 97 | } |
WeberYang | 2:648583d6e41a | 98 | #endif |