18 #ifndef _ROS_SERVICE_RequestParam_h 19 #define _ROS_SERVICE_RequestParam_h 40 virtual int serialize(
unsigned char *outbuffer)
const 43 uint32_t length_name = strlen(this->name);
44 memcpy(outbuffer + offset, &length_name,
sizeof(uint32_t));
46 memcpy(outbuffer + offset, this->name, length_name);
47 offset += length_name;
55 memcpy(&length_name, (inbuffer + offset),
sizeof(uint32_t));
57 for(
unsigned int k= offset; k< offset+length_name; ++k){
58 inbuffer[k-1]=inbuffer[k];
60 inbuffer[offset+length_name-1]=0;
61 this->name = (
char *)(inbuffer + offset-1);
62 offset += length_name;
67 const char *
getMD5(){
return "c1f3d28f1b044c871e6eff2e9fc3c667"; };
85 ints_length(0), ints(NULL),
86 floats_length(0), floats(NULL),
87 strings_length(0), strings(NULL)
91 virtual int serialize(
unsigned char *outbuffer)
const 94 *(outbuffer + offset++) = ints_length;
95 *(outbuffer + offset++) = 0;
96 *(outbuffer + offset++) = 0;
97 *(outbuffer + offset++) = 0;
98 for( uint8_t i = 0; i < ints_length; i++){
103 u_intsi.real = this->ints[i];
104 *(outbuffer + offset + 0) = (u_intsi.base >> (8 * 0)) & 0xFF;
105 *(outbuffer + offset + 1) = (u_intsi.base >> (8 * 1)) & 0xFF;
106 *(outbuffer + offset + 2) = (u_intsi.base >> (8 * 2)) & 0xFF;
107 *(outbuffer + offset + 3) = (u_intsi.base >> (8 * 3)) & 0xFF;
108 offset +=
sizeof(this->ints[i]);
110 *(outbuffer + offset++) = floats_length;
111 *(outbuffer + offset++) = 0;
112 *(outbuffer + offset++) = 0;
113 *(outbuffer + offset++) = 0;
114 for( uint8_t i = 0; i < floats_length; i++){
119 u_floatsi.real = this->floats[i];
120 *(outbuffer + offset + 0) = (u_floatsi.base >> (8 * 0)) & 0xFF;
121 *(outbuffer + offset + 1) = (u_floatsi.base >> (8 * 1)) & 0xFF;
122 *(outbuffer + offset + 2) = (u_floatsi.base >> (8 * 2)) & 0xFF;
123 *(outbuffer + offset + 3) = (u_floatsi.base >> (8 * 3)) & 0xFF;
124 offset +=
sizeof(this->floats[i]);
126 *(outbuffer + offset++) = strings_length;
127 *(outbuffer + offset++) = 0;
128 *(outbuffer + offset++) = 0;
129 *(outbuffer + offset++) = 0;
130 for( uint8_t i = 0; i < strings_length; i++){
131 uint32_t length_stringsi = strlen(this->strings[i]);
132 memcpy(outbuffer + offset, &length_stringsi,
sizeof(uint32_t));
134 memcpy(outbuffer + offset, this->strings[i], length_stringsi);
135 offset += length_stringsi;
143 uint8_t ints_lengthT = *(inbuffer + offset++);
144 if(ints_lengthT > ints_length)
145 this->ints = (int32_t*)realloc(this->ints, ints_lengthT *
sizeof(int32_t));
147 ints_length = ints_lengthT;
148 for( uint8_t i = 0; i < ints_length; i++){
154 u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
155 u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
156 u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
157 u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
158 this->st_ints = u_st_ints.real;
159 offset +=
sizeof(this->st_ints);
160 memcpy( &(this->ints[i]), &(this->st_ints),
sizeof(int32_t));
162 uint8_t floats_lengthT = *(inbuffer + offset++);
163 if(floats_lengthT > floats_length)
164 this->floats = (
float*)realloc(this->floats, floats_lengthT *
sizeof(
float));
166 floats_length = floats_lengthT;
167 for( uint8_t i = 0; i < floats_length; i++){
172 u_st_floats.base = 0;
173 u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
174 u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
175 u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
176 u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
177 this->st_floats = u_st_floats.real;
178 offset +=
sizeof(this->st_floats);
179 memcpy( &(this->floats[i]), &(this->st_floats),
sizeof(
float));
181 uint8_t strings_lengthT = *(inbuffer + offset++);
182 if(strings_lengthT > strings_length)
183 this->strings = (
char**)realloc(this->strings, strings_lengthT *
sizeof(
char*));
185 strings_length = strings_lengthT;
186 for( uint8_t i = 0; i < strings_length; i++){
187 uint32_t length_st_strings;
188 memcpy(&length_st_strings, (inbuffer + offset),
sizeof(uint32_t));
190 for(
unsigned int k= offset; k< offset+length_st_strings; ++k){
191 inbuffer[k-1]=inbuffer[k];
193 inbuffer[offset+length_st_strings-1]=0;
194 this->st_strings = (
char *)(inbuffer + offset-1);
195 offset += length_st_strings;
196 memcpy( &(this->strings[i]), &(this->st_strings),
sizeof(
char*));
202 const char *
getMD5(){
return "9f0e98bda65981986ddf53afa7a40e49"; };
virtual int serialize(unsigned char *outbuffer) const
RequestParamResponse Response
virtual int serialize(unsigned char *outbuffer) const
virtual int deserialize(unsigned char *inbuffer)
virtual int deserialize(unsigned char *inbuffer)
static const char REQUESTPARAM[]
RequestParamRequest Request