Working towards recieving twists
Fork of ros_lib_kinetic by
Embed:
(wiki syntax)
Show/hide line numbers
DiagnosticStatus.h
00001 #ifndef _ROS_diagnostic_msgs_DiagnosticStatus_h 00002 #define _ROS_diagnostic_msgs_DiagnosticStatus_h 00003 00004 #include <stdint.h> 00005 #include <string.h> 00006 #include <stdlib.h> 00007 #include "ros/msg.h" 00008 #include "diagnostic_msgs/KeyValue.h" 00009 00010 namespace diagnostic_msgs 00011 { 00012 00013 class DiagnosticStatus : public ros::Msg 00014 { 00015 public: 00016 typedef int8_t _level_type; 00017 _level_type level; 00018 typedef const char* _name_type; 00019 _name_type name; 00020 typedef const char* _message_type; 00021 _message_type message; 00022 typedef const char* _hardware_id_type; 00023 _hardware_id_type hardware_id; 00024 uint32_t values_length; 00025 typedef diagnostic_msgs::KeyValue _values_type; 00026 _values_type st_values; 00027 _values_type * values; 00028 enum { OK = 0 }; 00029 enum { WARN = 1 }; 00030 enum { ERROR = 2 }; 00031 enum { STALE = 3 }; 00032 00033 DiagnosticStatus(): 00034 level(0), 00035 name(""), 00036 message(""), 00037 hardware_id(""), 00038 values_length(0), values(NULL) 00039 { 00040 } 00041 00042 virtual int serialize(unsigned char *outbuffer) const 00043 { 00044 int offset = 0; 00045 union { 00046 int8_t real; 00047 uint8_t base; 00048 } u_level; 00049 u_level.real = this->level; 00050 *(outbuffer + offset + 0) = (u_level.base >> (8 * 0)) & 0xFF; 00051 offset += sizeof(this->level); 00052 uint32_t length_name = strlen(this->name); 00053 varToArr(outbuffer + offset, length_name); 00054 offset += 4; 00055 memcpy(outbuffer + offset, this->name, length_name); 00056 offset += length_name; 00057 uint32_t length_message = strlen(this->message); 00058 varToArr(outbuffer + offset, length_message); 00059 offset += 4; 00060 memcpy(outbuffer + offset, this->message, length_message); 00061 offset += length_message; 00062 uint32_t length_hardware_id = strlen(this->hardware_id); 00063 varToArr(outbuffer + offset, length_hardware_id); 00064 offset += 4; 00065 memcpy(outbuffer + offset, this->hardware_id, length_hardware_id); 00066 offset += length_hardware_id; 00067 *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF; 00068 *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF; 00069 *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF; 00070 *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF; 00071 offset += sizeof(this->values_length); 00072 for( uint32_t i = 0; i < values_length; i++){ 00073 offset += this->values[i].serialize(outbuffer + offset); 00074 } 00075 return offset; 00076 } 00077 00078 virtual int deserialize(unsigned char *inbuffer) 00079 { 00080 int offset = 0; 00081 union { 00082 int8_t real; 00083 uint8_t base; 00084 } u_level; 00085 u_level.base = 0; 00086 u_level.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); 00087 this->level = u_level.real; 00088 offset += sizeof(this->level); 00089 uint32_t length_name; 00090 arrToVar(length_name, (inbuffer + offset)); 00091 offset += 4; 00092 for(unsigned int k= offset; k< offset+length_name; ++k){ 00093 inbuffer[k-1]=inbuffer[k]; 00094 } 00095 inbuffer[offset+length_name-1]=0; 00096 this->name = (char *)(inbuffer + offset-1); 00097 offset += length_name; 00098 uint32_t length_message; 00099 arrToVar(length_message, (inbuffer + offset)); 00100 offset += 4; 00101 for(unsigned int k= offset; k< offset+length_message; ++k){ 00102 inbuffer[k-1]=inbuffer[k]; 00103 } 00104 inbuffer[offset+length_message-1]=0; 00105 this->message = (char *)(inbuffer + offset-1); 00106 offset += length_message; 00107 uint32_t length_hardware_id; 00108 arrToVar(length_hardware_id, (inbuffer + offset)); 00109 offset += 4; 00110 for(unsigned int k= offset; k< offset+length_hardware_id; ++k){ 00111 inbuffer[k-1]=inbuffer[k]; 00112 } 00113 inbuffer[offset+length_hardware_id-1]=0; 00114 this->hardware_id = (char *)(inbuffer + offset-1); 00115 offset += length_hardware_id; 00116 uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); 00117 values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00118 values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00119 values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00120 offset += sizeof(this->values_length); 00121 if(values_lengthT > values_length) 00122 this->values = (diagnostic_msgs::KeyValue*)realloc(this->values, values_lengthT * sizeof(diagnostic_msgs::KeyValue)); 00123 values_length = values_lengthT; 00124 for( uint32_t i = 0; i < values_length; i++){ 00125 offset += this->st_values.deserialize(inbuffer + offset); 00126 memcpy( &(this->values[i]), &(this->st_values), sizeof(diagnostic_msgs::KeyValue)); 00127 } 00128 return offset; 00129 } 00130 00131 const char * getType(){ return "diagnostic_msgs/DiagnosticStatus"; }; 00132 const char * getMD5(){ return "d0ce08bc6e5ba34c7754f563a9cabaf1"; }; 00133 00134 }; 00135 00136 } 00137 #endif
Generated on Tue Jul 12 2022 21:32:15 by 1.7.2