00001 #ifndef _ROS_pr2_mechanism_msgs_ControllerStatistics_h 00002 #define _ROS_pr2_mechanism_msgs_ControllerStatistics_h 00003 00004 #include <stdint.h> 00005 #include <string.h> 00006 #include <stdlib.h> 00007 #include "ros/msg.h" 00008 #include "ros/time.h" 00009 #include "ros/duration.h" 00010 00011 namespace pr2_mechanism_msgs 00012 { 00013 00014 class ControllerStatistics : public ros::Msg 00015 { 00016 public: 00017 const char* name; 00018 ros::Time timestamp; 00019 bool running; 00020 ros::Duration max_time; 00021 ros::Duration mean_time; 00022 ros::Duration variance_time; 00023 int32_t num_control_loop_overruns; 00024 ros::Time time_last_control_loop_overrun; 00025 00026 virtual int serialize(unsigned char *outbuffer) const 00027 { 00028 int offset = 0; 00029 uint32_t length_name = strlen(this->name); 00030 memcpy(outbuffer + offset, &length_name, sizeof(uint32_t)); 00031 offset += 4; 00032 memcpy(outbuffer + offset, this->name, length_name); 00033 offset += length_name; 00034 *(outbuffer + offset + 0) = (this->timestamp.sec >> (8 * 0)) & 0xFF; 00035 *(outbuffer + offset + 1) = (this->timestamp.sec >> (8 * 1)) & 0xFF; 00036 *(outbuffer + offset + 2) = (this->timestamp.sec >> (8 * 2)) & 0xFF; 00037 *(outbuffer + offset + 3) = (this->timestamp.sec >> (8 * 3)) & 0xFF; 00038 offset += sizeof(this->timestamp.sec); 00039 *(outbuffer + offset + 0) = (this->timestamp.nsec >> (8 * 0)) & 0xFF; 00040 *(outbuffer + offset + 1) = (this->timestamp.nsec >> (8 * 1)) & 0xFF; 00041 *(outbuffer + offset + 2) = (this->timestamp.nsec >> (8 * 2)) & 0xFF; 00042 *(outbuffer + offset + 3) = (this->timestamp.nsec >> (8 * 3)) & 0xFF; 00043 offset += sizeof(this->timestamp.nsec); 00044 union { 00045 bool real; 00046 uint8_t base; 00047 } u_running; 00048 u_running.real = this->running; 00049 *(outbuffer + offset + 0) = (u_running.base >> (8 * 0)) & 0xFF; 00050 offset += sizeof(this->running); 00051 *(outbuffer + offset + 0) = (this->max_time.sec >> (8 * 0)) & 0xFF; 00052 *(outbuffer + offset + 1) = (this->max_time.sec >> (8 * 1)) & 0xFF; 00053 *(outbuffer + offset + 2) = (this->max_time.sec >> (8 * 2)) & 0xFF; 00054 *(outbuffer + offset + 3) = (this->max_time.sec >> (8 * 3)) & 0xFF; 00055 offset += sizeof(this->max_time.sec); 00056 *(outbuffer + offset + 0) = (this->max_time.nsec >> (8 * 0)) & 0xFF; 00057 *(outbuffer + offset + 1) = (this->max_time.nsec >> (8 * 1)) & 0xFF; 00058 *(outbuffer + offset + 2) = (this->max_time.nsec >> (8 * 2)) & 0xFF; 00059 *(outbuffer + offset + 3) = (this->max_time.nsec >> (8 * 3)) & 0xFF; 00060 offset += sizeof(this->max_time.nsec); 00061 *(outbuffer + offset + 0) = (this->mean_time.sec >> (8 * 0)) & 0xFF; 00062 *(outbuffer + offset + 1) = (this->mean_time.sec >> (8 * 1)) & 0xFF; 00063 *(outbuffer + offset + 2) = (this->mean_time.sec >> (8 * 2)) & 0xFF; 00064 *(outbuffer + offset + 3) = (this->mean_time.sec >> (8 * 3)) & 0xFF; 00065 offset += sizeof(this->mean_time.sec); 00066 *(outbuffer + offset + 0) = (this->mean_time.nsec >> (8 * 0)) & 0xFF; 00067 *(outbuffer + offset + 1) = (this->mean_time.nsec >> (8 * 1)) & 0xFF; 00068 *(outbuffer + offset + 2) = (this->mean_time.nsec >> (8 * 2)) & 0xFF; 00069 *(outbuffer + offset + 3) = (this->mean_time.nsec >> (8 * 3)) & 0xFF; 00070 offset += sizeof(this->mean_time.nsec); 00071 *(outbuffer + offset + 0) = (this->variance_time.sec >> (8 * 0)) & 0xFF; 00072 *(outbuffer + offset + 1) = (this->variance_time.sec >> (8 * 1)) & 0xFF; 00073 *(outbuffer + offset + 2) = (this->variance_time.sec >> (8 * 2)) & 0xFF; 00074 *(outbuffer + offset + 3) = (this->variance_time.sec >> (8 * 3)) & 0xFF; 00075 offset += sizeof(this->variance_time.sec); 00076 *(outbuffer + offset + 0) = (this->variance_time.nsec >> (8 * 0)) & 0xFF; 00077 *(outbuffer + offset + 1) = (this->variance_time.nsec >> (8 * 1)) & 0xFF; 00078 *(outbuffer + offset + 2) = (this->variance_time.nsec >> (8 * 2)) & 0xFF; 00079 *(outbuffer + offset + 3) = (this->variance_time.nsec >> (8 * 3)) & 0xFF; 00080 offset += sizeof(this->variance_time.nsec); 00081 union { 00082 int32_t real; 00083 uint32_t base; 00084 } u_num_control_loop_overruns; 00085 u_num_control_loop_overruns.real = this->num_control_loop_overruns; 00086 *(outbuffer + offset + 0) = (u_num_control_loop_overruns.base >> (8 * 0)) & 0xFF; 00087 *(outbuffer + offset + 1) = (u_num_control_loop_overruns.base >> (8 * 1)) & 0xFF; 00088 *(outbuffer + offset + 2) = (u_num_control_loop_overruns.base >> (8 * 2)) & 0xFF; 00089 *(outbuffer + offset + 3) = (u_num_control_loop_overruns.base >> (8 * 3)) & 0xFF; 00090 offset += sizeof(this->num_control_loop_overruns); 00091 *(outbuffer + offset + 0) = (this->time_last_control_loop_overrun.sec >> (8 * 0)) & 0xFF; 00092 *(outbuffer + offset + 1) = (this->time_last_control_loop_overrun.sec >> (8 * 1)) & 0xFF; 00093 *(outbuffer + offset + 2) = (this->time_last_control_loop_overrun.sec >> (8 * 2)) & 0xFF; 00094 *(outbuffer + offset + 3) = (this->time_last_control_loop_overrun.sec >> (8 * 3)) & 0xFF; 00095 offset += sizeof(this->time_last_control_loop_overrun.sec); 00096 *(outbuffer + offset + 0) = (this->time_last_control_loop_overrun.nsec >> (8 * 0)) & 0xFF; 00097 *(outbuffer + offset + 1) = (this->time_last_control_loop_overrun.nsec >> (8 * 1)) & 0xFF; 00098 *(outbuffer + offset + 2) = (this->time_last_control_loop_overrun.nsec >> (8 * 2)) & 0xFF; 00099 *(outbuffer + offset + 3) = (this->time_last_control_loop_overrun.nsec >> (8 * 3)) & 0xFF; 00100 offset += sizeof(this->time_last_control_loop_overrun.nsec); 00101 return offset; 00102 } 00103 00104 virtual int deserialize(unsigned char *inbuffer) 00105 { 00106 int offset = 0; 00107 uint32_t length_name; 00108 memcpy(&length_name, (inbuffer + offset), sizeof(uint32_t)); 00109 offset += 4; 00110 for(unsigned int k= offset; k< offset+length_name; ++k){ 00111 inbuffer[k-1]=inbuffer[k]; 00112 } 00113 inbuffer[offset+length_name-1]=0; 00114 this->name = (char *)(inbuffer + offset-1); 00115 offset += length_name; 00116 this->timestamp.sec = ((uint32_t) (*(inbuffer + offset))); 00117 this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00118 this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00119 this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00120 offset += sizeof(this->timestamp.sec); 00121 this->timestamp.nsec = ((uint32_t) (*(inbuffer + offset))); 00122 this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00123 this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00124 this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00125 offset += sizeof(this->timestamp.nsec); 00126 union { 00127 bool real; 00128 uint8_t base; 00129 } u_running; 00130 u_running.base = 0; 00131 u_running.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); 00132 this->running = u_running.real; 00133 offset += sizeof(this->running); 00134 this->max_time.sec = ((uint32_t) (*(inbuffer + offset))); 00135 this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00136 this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00137 this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00138 offset += sizeof(this->max_time.sec); 00139 this->max_time.nsec = ((uint32_t) (*(inbuffer + offset))); 00140 this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00141 this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00142 this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00143 offset += sizeof(this->max_time.nsec); 00144 this->mean_time.sec = ((uint32_t) (*(inbuffer + offset))); 00145 this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00146 this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00147 this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00148 offset += sizeof(this->mean_time.sec); 00149 this->mean_time.nsec = ((uint32_t) (*(inbuffer + offset))); 00150 this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00151 this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00152 this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00153 offset += sizeof(this->mean_time.nsec); 00154 this->variance_time.sec = ((uint32_t) (*(inbuffer + offset))); 00155 this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00156 this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00157 this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00158 offset += sizeof(this->variance_time.sec); 00159 this->variance_time.nsec = ((uint32_t) (*(inbuffer + offset))); 00160 this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00161 this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00162 this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00163 offset += sizeof(this->variance_time.nsec); 00164 union { 00165 int32_t real; 00166 uint32_t base; 00167 } u_num_control_loop_overruns; 00168 u_num_control_loop_overruns.base = 0; 00169 u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); 00170 u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00171 u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00172 u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00173 this->num_control_loop_overruns = u_num_control_loop_overruns.real; 00174 offset += sizeof(this->num_control_loop_overruns); 00175 this->time_last_control_loop_overrun.sec = ((uint32_t) (*(inbuffer + offset))); 00176 this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00177 this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00178 this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00179 offset += sizeof(this->time_last_control_loop_overrun.sec); 00180 this->time_last_control_loop_overrun.nsec = ((uint32_t) (*(inbuffer + offset))); 00181 this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00182 this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00183 this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00184 offset += sizeof(this->time_last_control_loop_overrun.nsec); 00185 return offset; 00186 } 00187 00188 const char * getType(){ return "pr2_mechanism_msgs/ControllerStatistics"; }; 00189 const char * getMD5(){ return "6d15d137eea402018e3c7c8dbecd4b95"; }; 00190 00191 }; 00192 00193 } 00194 #endif