ROS Serial library for Mbed platforms for ROS Indigo Igloo. Check http://wiki.ros.org/rosserial_mbed/ for more information
Dependents: rosserial_mbed_hello_world_publisher rtos_base_control rosserial_mbed_F64MA ROS-RTOS ... more
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 int8_t level; 00017 const char* name; 00018 const char* message; 00019 const char* hardware_id; 00020 uint8_t values_length; 00021 diagnostic_msgs::KeyValue st_values; 00022 diagnostic_msgs::KeyValue * values; 00023 enum { OK = 0 }; 00024 enum { WARN = 1 }; 00025 enum { ERROR = 2 }; 00026 enum { STALE = 3 }; 00027 00028 DiagnosticStatus(): 00029 level(0), 00030 name(""), 00031 message(""), 00032 hardware_id(""), 00033 values_length(0), values(NULL) 00034 { 00035 } 00036 00037 virtual int serialize(unsigned char *outbuffer) const 00038 { 00039 int offset = 0; 00040 union { 00041 int8_t real; 00042 uint8_t base; 00043 } u_level; 00044 u_level.real = this->level; 00045 *(outbuffer + offset + 0) = (u_level.base >> (8 * 0)) & 0xFF; 00046 offset += sizeof(this->level); 00047 uint32_t length_name = strlen(this->name); 00048 memcpy(outbuffer + offset, &length_name, sizeof(uint32_t)); 00049 offset += 4; 00050 memcpy(outbuffer + offset, this->name, length_name); 00051 offset += length_name; 00052 uint32_t length_message = strlen(this->message); 00053 memcpy(outbuffer + offset, &length_message, sizeof(uint32_t)); 00054 offset += 4; 00055 memcpy(outbuffer + offset, this->message, length_message); 00056 offset += length_message; 00057 uint32_t length_hardware_id = strlen(this->hardware_id); 00058 memcpy(outbuffer + offset, &length_hardware_id, sizeof(uint32_t)); 00059 offset += 4; 00060 memcpy(outbuffer + offset, this->hardware_id, length_hardware_id); 00061 offset += length_hardware_id; 00062 *(outbuffer + offset++) = values_length; 00063 *(outbuffer + offset++) = 0; 00064 *(outbuffer + offset++) = 0; 00065 *(outbuffer + offset++) = 0; 00066 for( uint8_t i = 0; i < values_length; i++){ 00067 offset += this->values[i].serialize(outbuffer + offset); 00068 } 00069 return offset; 00070 } 00071 00072 virtual int deserialize(unsigned char *inbuffer) 00073 { 00074 int offset = 0; 00075 union { 00076 int8_t real; 00077 uint8_t base; 00078 } u_level; 00079 u_level.base = 0; 00080 u_level.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); 00081 this->level = u_level.real; 00082 offset += sizeof(this->level); 00083 uint32_t length_name; 00084 memcpy(&length_name, (inbuffer + offset), sizeof(uint32_t)); 00085 offset += 4; 00086 for(unsigned int k= offset; k< offset+length_name; ++k){ 00087 inbuffer[k-1]=inbuffer[k]; 00088 } 00089 inbuffer[offset+length_name-1]=0; 00090 this->name = (char *)(inbuffer + offset-1); 00091 offset += length_name; 00092 uint32_t length_message; 00093 memcpy(&length_message, (inbuffer + offset), sizeof(uint32_t)); 00094 offset += 4; 00095 for(unsigned int k= offset; k< offset+length_message; ++k){ 00096 inbuffer[k-1]=inbuffer[k]; 00097 } 00098 inbuffer[offset+length_message-1]=0; 00099 this->message = (char *)(inbuffer + offset-1); 00100 offset += length_message; 00101 uint32_t length_hardware_id; 00102 memcpy(&length_hardware_id, (inbuffer + offset), sizeof(uint32_t)); 00103 offset += 4; 00104 for(unsigned int k= offset; k< offset+length_hardware_id; ++k){ 00105 inbuffer[k-1]=inbuffer[k]; 00106 } 00107 inbuffer[offset+length_hardware_id-1]=0; 00108 this->hardware_id = (char *)(inbuffer + offset-1); 00109 offset += length_hardware_id; 00110 uint8_t values_lengthT = *(inbuffer + offset++); 00111 if(values_lengthT > values_length) 00112 this->values = (diagnostic_msgs::KeyValue*)realloc(this->values, values_lengthT * sizeof(diagnostic_msgs::KeyValue)); 00113 offset += 3; 00114 values_length = values_lengthT; 00115 for( uint8_t i = 0; i < values_length; i++){ 00116 offset += this->st_values.deserialize(inbuffer + offset); 00117 memcpy( &(this->values[i]), &(this->st_values), sizeof(diagnostic_msgs::KeyValue)); 00118 } 00119 return offset; 00120 } 00121 00122 const char * getType(){ return "diagnostic_msgs/DiagnosticStatus"; }; 00123 const char * getMD5(){ return "d0ce08bc6e5ba34c7754f563a9cabaf1"; }; 00124 00125 }; 00126 00127 } 00128 #endif
Generated on Tue Jul 12 2022 18:39:39 by 1.7.2