data_package.cpp
Go to the documentation of this file.
1 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
2 
3 // -- BEGIN LICENSE BLOCK ----------------------------------------------
4 // Copyright 2019 FZI Forschungszentrum Informatik
5 //
6 // Licensed under the Apache License, Version 2.0 (the "License");
7 // you may not use this file except in compliance with the License.
8 // You may obtain a copy of the License at
9 //
10 // http://www.apache.org/licenses/LICENSE-2.0
11 //
12 // Unless required by applicable law or agreed to in writing, software
13 // distributed under the License is distributed on an "AS IS" BASIS,
14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 // See the License for the specific language governing permissions and
16 // limitations under the License.
17 // -- END LICENSE BLOCK ------------------------------------------------
18 
19 //----------------------------------------------------------------------
26 //----------------------------------------------------------------------
27 
29 
30 #include <functional>
31 namespace urcl
32 {
33 namespace rtde_interface
34 {
35 std::unordered_map<std::string, DataPackage::_rtde_type_variant> DataPackage::g_type_list{
36  { "timestamp", double() },
37  { "target_q", vector6d_t() },
38  { "target_qd", vector6d_t() },
39  { "target_qdd", vector6d_t() },
40  { "target_current", vector6d_t() },
41  { "target_moment", vector6d_t() },
42  { "actual_q", vector6d_t() },
43  { "actual_qd", vector6d_t() },
44  { "actual_qdd", vector6d_t() },
45  { "actual_current", vector6d_t() },
46  { "actual_moment", vector6d_t() },
47  { "joint_control_output", vector6d_t() },
48  { "actual_TCP_pose", vector6d_t() },
49  { "actual_TCP_speed", vector6d_t() },
50  { "actual_TCP_force", vector6d_t() },
51  { "target_TCP_pose", vector6d_t() },
52  { "target_TCP_speed", vector6d_t() },
53  { "actual_digital_input_bits", uint64_t() },
54  { "joint_temperatures", vector6d_t() },
55  { "actual_execution_time", double() },
56  { "robot_mode", int32_t() },
57  { "joint_mode", vector6int32_t() },
58  { "safety_mode", int32_t() },
59  { "actual_tool_accelerometer", vector3d_t() },
60  { "speed_scaling", double() },
61  { "target_speed_fraction", double() },
62  { "actual_momentum", double() },
63  { "actual_main_voltage", double() },
64  { "actual_robot_voltage", double() },
65  { "actual_robot_current", double() },
66  { "actual_joint_voltage", vector6d_t() },
67  { "actual_digital_output_bits", uint64_t() },
68  { "runtime_state", uint32_t() },
69  { "elbow_position", vector3d_t() },
70  { "elbow_velocity", vector3d_t() },
71  { "robot_status_bits", uint32_t() },
72  { "safety_status_bits", uint32_t() },
73  { "analog_io_types", uint32_t() },
74  { "standard_analog_input0", double() },
75  { "standard_analog_input1", double() },
76  { "standard_analog_output0", double() },
77  { "standard_analog_output1", double() },
78  { "io_current", double() },
79  { "euromap67_input_bits", uint32_t() },
80  { "euromap67_output_bits", uint32_t() },
81  { "euromap67_24V_voltage", double() },
82  { "euromap67_24V_current", double() },
83  { "tool_mode", uint32_t() },
84  { "tool_analog_input_types", uint32_t() },
85  { "tool_analog_input0", double() },
86  { "tool_analog_input1", double() },
87  { "tool_output_voltage", int32_t() },
88  { "tool_output_current", double() },
89  { "tool_temperature", double() },
90  { "tool_force_scalar", double() },
91  { "output_bit_registers0_to_31", uint32_t() },
92  { "output_bit_registers32_to_63", uint32_t() },
93  { "output_bit_register_0", bool() },
94  { "output_bit_register_1", bool() },
95  { "output_bit_register_2", bool() },
96  { "output_bit_register_3", bool() },
97  { "output_bit_register_4", bool() },
98  { "output_bit_register_5", bool() },
99  { "output_bit_register_6", bool() },
100  { "output_bit_register_7", bool() },
101  { "output_bit_register_8", bool() },
102  { "output_bit_register_9", bool() },
103  { "output_bit_register_10", bool() },
104  { "output_bit_register_11", bool() },
105  { "output_bit_register_12", bool() },
106  { "output_bit_register_13", bool() },
107  { "output_bit_register_14", bool() },
108  { "output_bit_register_15", bool() },
109  { "output_bit_register_16", bool() },
110  { "output_bit_register_17", bool() },
111  { "output_bit_register_18", bool() },
112  { "output_bit_register_19", bool() },
113  { "output_bit_register_20", bool() },
114  { "output_bit_register_21", bool() },
115  { "output_bit_register_22", bool() },
116  { "output_bit_register_23", bool() },
117  { "output_bit_register_24", bool() },
118  { "output_bit_register_25", bool() },
119  { "output_bit_register_26", bool() },
120  { "output_bit_register_27", bool() },
121  { "output_bit_register_28", bool() },
122  { "output_bit_register_29", bool() },
123  { "output_bit_register_30", bool() },
124  { "output_bit_register_31", bool() },
125  { "output_bit_register_32", bool() },
126  { "output_bit_register_33", bool() },
127  { "output_bit_register_34", bool() },
128  { "output_bit_register_35", bool() },
129  { "output_bit_register_36", bool() },
130  { "output_bit_register_37", bool() },
131  { "output_bit_register_38", bool() },
132  { "output_bit_register_39", bool() },
133  { "output_bit_register_40", bool() },
134  { "output_bit_register_41", bool() },
135  { "output_bit_register_42", bool() },
136  { "output_bit_register_43", bool() },
137  { "output_bit_register_44", bool() },
138  { "output_bit_register_45", bool() },
139  { "output_bit_register_46", bool() },
140  { "output_bit_register_47", bool() },
141  { "output_bit_register_48", bool() },
142  { "output_bit_register_49", bool() },
143  { "output_bit_register_50", bool() },
144  { "output_bit_register_51", bool() },
145  { "output_bit_register_52", bool() },
146  { "output_bit_register_53", bool() },
147  { "output_bit_register_54", bool() },
148  { "output_bit_register_55", bool() },
149  { "output_bit_register_56", bool() },
150  { "output_bit_register_57", bool() },
151  { "output_bit_register_58", bool() },
152  { "output_bit_register_59", bool() },
153  { "output_bit_register_60", bool() },
154  { "output_bit_register_61", bool() },
155  { "output_bit_register_62", bool() },
156  { "output_bit_register_63", bool() },
157  { "output_bit_register_64", bool() },
158  { "output_bit_register_65", bool() },
159  { "output_bit_register_66", bool() },
160  { "output_bit_register_67", bool() },
161  { "output_bit_register_68", bool() },
162  { "output_bit_register_69", bool() },
163  { "output_bit_register_70", bool() },
164  { "output_bit_register_71", bool() },
165  { "output_bit_register_72", bool() },
166  { "output_bit_register_73", bool() },
167  { "output_bit_register_74", bool() },
168  { "output_bit_register_75", bool() },
169  { "output_bit_register_76", bool() },
170  { "output_bit_register_77", bool() },
171  { "output_bit_register_78", bool() },
172  { "output_bit_register_79", bool() },
173  { "output_bit_register_80", bool() },
174  { "output_bit_register_81", bool() },
175  { "output_bit_register_82", bool() },
176  { "output_bit_register_83", bool() },
177  { "output_bit_register_84", bool() },
178  { "output_bit_register_85", bool() },
179  { "output_bit_register_86", bool() },
180  { "output_bit_register_87", bool() },
181  { "output_bit_register_88", bool() },
182  { "output_bit_register_89", bool() },
183  { "output_bit_register_90", bool() },
184  { "output_bit_register_91", bool() },
185  { "output_bit_register_92", bool() },
186  { "output_bit_register_93", bool() },
187  { "output_bit_register_94", bool() },
188  { "output_bit_register_95", bool() },
189  { "output_bit_register_96", bool() },
190  { "output_bit_register_97", bool() },
191  { "output_bit_register_98", bool() },
192  { "output_bit_register_99", bool() },
193  { "output_bit_register_100", bool() },
194  { "output_bit_register_101", bool() },
195  { "output_bit_register_102", bool() },
196  { "output_bit_register_103", bool() },
197  { "output_bit_register_104", bool() },
198  { "output_bit_register_105", bool() },
199  { "output_bit_register_106", bool() },
200  { "output_bit_register_107", bool() },
201  { "output_bit_register_108", bool() },
202  { "output_bit_register_109", bool() },
203  { "output_bit_register_110", bool() },
204  { "output_bit_register_111", bool() },
205  { "output_bit_register_112", bool() },
206  { "output_bit_register_113", bool() },
207  { "output_bit_register_114", bool() },
208  { "output_bit_register_115", bool() },
209  { "output_bit_register_116", bool() },
210  { "output_bit_register_117", bool() },
211  { "output_bit_register_118", bool() },
212  { "output_bit_register_119", bool() },
213  { "output_bit_register_120", bool() },
214  { "output_bit_register_121", bool() },
215  { "output_bit_register_122", bool() },
216  { "output_bit_register_123", bool() },
217  { "output_bit_register_124", bool() },
218  { "output_bit_register_125", bool() },
219  { "output_bit_register_126", bool() },
220  { "output_bit_register_127", bool() },
221  { "output_int_register_0", int32_t() },
222  { "output_int_register_1", int32_t() },
223  { "output_int_register_2", int32_t() },
224  { "output_int_register_3", int32_t() },
225  { "output_int_register_4", int32_t() },
226  { "output_int_register_5", int32_t() },
227  { "output_int_register_6", int32_t() },
228  { "output_int_register_7", int32_t() },
229  { "output_int_register_8", int32_t() },
230  { "output_int_register_9", int32_t() },
231  { "output_int_register_10", int32_t() },
232  { "output_int_register_11", int32_t() },
233  { "output_int_register_12", int32_t() },
234  { "output_int_register_13", int32_t() },
235  { "output_int_register_14", int32_t() },
236  { "output_int_register_15", int32_t() },
237  { "output_int_register_16", int32_t() },
238  { "output_int_register_17", int32_t() },
239  { "output_int_register_18", int32_t() },
240  { "output_int_register_19", int32_t() },
241  { "output_int_register_20", int32_t() },
242  { "output_int_register_21", int32_t() },
243  { "output_int_register_22", int32_t() },
244  { "output_int_register_23", int32_t() },
245  { "output_int_register_24", int32_t() },
246  { "output_int_register_25", int32_t() },
247  { "output_int_register_26", int32_t() },
248  { "output_int_register_27", int32_t() },
249  { "output_int_register_28", int32_t() },
250  { "output_int_register_29", int32_t() },
251  { "output_int_register_30", int32_t() },
252  { "output_int_register_31", int32_t() },
253  { "output_int_register_32", int32_t() },
254  { "output_int_register_33", int32_t() },
255  { "output_int_register_34", int32_t() },
256  { "output_int_register_35", int32_t() },
257  { "output_int_register_36", int32_t() },
258  { "output_int_register_37", int32_t() },
259  { "output_int_register_38", int32_t() },
260  { "output_int_register_39", int32_t() },
261  { "output_int_register_40", int32_t() },
262  { "output_int_register_41", int32_t() },
263  { "output_int_register_42", int32_t() },
264  { "output_int_register_43", int32_t() },
265  { "output_int_register_44", int32_t() },
266  { "output_int_register_45", int32_t() },
267  { "output_int_register_46", int32_t() },
268  { "output_int_register_47", int32_t() },
269  { "output_double_register_0", double() },
270  { "output_double_register_1", double() },
271  { "output_double_register_2", double() },
272  { "output_double_register_3", double() },
273  { "output_double_register_4", double() },
274  { "output_double_register_5", double() },
275  { "output_double_register_6", double() },
276  { "output_double_register_7", double() },
277  { "output_double_register_8", double() },
278  { "output_double_register_9", double() },
279  { "output_double_register_10", double() },
280  { "output_double_register_11", double() },
281  { "output_double_register_12", double() },
282  { "output_double_register_13", double() },
283  { "output_double_register_14", double() },
284  { "output_double_register_15", double() },
285  { "output_double_register_16", double() },
286  { "output_double_register_17", double() },
287  { "output_double_register_18", double() },
288  { "output_double_register_19", double() },
289  { "output_double_register_20", double() },
290  { "output_double_register_21", double() },
291  { "output_double_register_22", double() },
292  { "output_double_register_23", double() },
293  { "output_double_register_24", double() },
294  { "output_double_register_25", double() },
295  { "output_double_register_26", double() },
296  { "output_double_register_27", double() },
297  { "output_double_register_28", double() },
298  { "output_double_register_29", double() },
299  { "output_double_register_30", double() },
300  { "output_double_register_31", double() },
301  { "output_double_register_32", double() },
302  { "output_double_register_33", double() },
303  { "output_double_register_34", double() },
304  { "output_double_register_35", double() },
305  { "output_double_register_36", double() },
306  { "output_double_register_37", double() },
307  { "output_double_register_38", double() },
308  { "output_double_register_39", double() },
309  { "output_double_register_40", double() },
310  { "output_double_register_41", double() },
311  { "output_double_register_42", double() },
312  { "output_double_register_43", double() },
313  { "output_double_register_44", double() },
314  { "output_double_register_45", double() },
315  { "output_double_register_46", double() },
316  { "output_double_register_47", double() },
317  { "input_bit_registers0_to_31", uint32_t() },
318  { "input_bit_registers32_to_63", uint32_t() },
319  { "input_bit_register_0", bool() },
320  { "input_bit_register_1", bool() },
321  { "input_bit_register_2", bool() },
322  { "input_bit_register_3", bool() },
323  { "input_bit_register_4", bool() },
324  { "input_bit_register_5", bool() },
325  { "input_bit_register_6", bool() },
326  { "input_bit_register_7", bool() },
327  { "input_bit_register_8", bool() },
328  { "input_bit_register_9", bool() },
329  { "input_bit_register_10", bool() },
330  { "input_bit_register_11", bool() },
331  { "input_bit_register_12", bool() },
332  { "input_bit_register_13", bool() },
333  { "input_bit_register_14", bool() },
334  { "input_bit_register_15", bool() },
335  { "input_bit_register_16", bool() },
336  { "input_bit_register_17", bool() },
337  { "input_bit_register_18", bool() },
338  { "input_bit_register_19", bool() },
339  { "input_bit_register_20", bool() },
340  { "input_bit_register_21", bool() },
341  { "input_bit_register_22", bool() },
342  { "input_bit_register_23", bool() },
343  { "input_bit_register_24", bool() },
344  { "input_bit_register_25", bool() },
345  { "input_bit_register_26", bool() },
346  { "input_bit_register_27", bool() },
347  { "input_bit_register_28", bool() },
348  { "input_bit_register_29", bool() },
349  { "input_bit_register_30", bool() },
350  { "input_bit_register_31", bool() },
351  { "input_bit_register_32", bool() },
352  { "input_bit_register_33", bool() },
353  { "input_bit_register_34", bool() },
354  { "input_bit_register_35", bool() },
355  { "input_bit_register_36", bool() },
356  { "input_bit_register_37", bool() },
357  { "input_bit_register_38", bool() },
358  { "input_bit_register_39", bool() },
359  { "input_bit_register_40", bool() },
360  { "input_bit_register_41", bool() },
361  { "input_bit_register_42", bool() },
362  { "input_bit_register_43", bool() },
363  { "input_bit_register_44", bool() },
364  { "input_bit_register_45", bool() },
365  { "input_bit_register_46", bool() },
366  { "input_bit_register_47", bool() },
367  { "input_bit_register_48", bool() },
368  { "input_bit_register_49", bool() },
369  { "input_bit_register_50", bool() },
370  { "input_bit_register_51", bool() },
371  { "input_bit_register_52", bool() },
372  { "input_bit_register_53", bool() },
373  { "input_bit_register_54", bool() },
374  { "input_bit_register_55", bool() },
375  { "input_bit_register_56", bool() },
376  { "input_bit_register_57", bool() },
377  { "input_bit_register_58", bool() },
378  { "input_bit_register_59", bool() },
379  { "input_bit_register_60", bool() },
380  { "input_bit_register_61", bool() },
381  { "input_bit_register_62", bool() },
382  { "input_bit_register_63", bool() },
383  { "input_bit_register_64", bool() },
384  { "input_bit_register_65", bool() },
385  { "input_bit_register_66", bool() },
386  { "input_bit_register_67", bool() },
387  { "input_bit_register_68", bool() },
388  { "input_bit_register_69", bool() },
389  { "input_bit_register_70", bool() },
390  { "input_bit_register_71", bool() },
391  { "input_bit_register_72", bool() },
392  { "input_bit_register_73", bool() },
393  { "input_bit_register_74", bool() },
394  { "input_bit_register_75", bool() },
395  { "input_bit_register_76", bool() },
396  { "input_bit_register_77", bool() },
397  { "input_bit_register_78", bool() },
398  { "input_bit_register_79", bool() },
399  { "input_bit_register_80", bool() },
400  { "input_bit_register_81", bool() },
401  { "input_bit_register_82", bool() },
402  { "input_bit_register_83", bool() },
403  { "input_bit_register_84", bool() },
404  { "input_bit_register_85", bool() },
405  { "input_bit_register_86", bool() },
406  { "input_bit_register_87", bool() },
407  { "input_bit_register_88", bool() },
408  { "input_bit_register_89", bool() },
409  { "input_bit_register_90", bool() },
410  { "input_bit_register_91", bool() },
411  { "input_bit_register_92", bool() },
412  { "input_bit_register_93", bool() },
413  { "input_bit_register_94", bool() },
414  { "input_bit_register_95", bool() },
415  { "input_bit_register_96", bool() },
416  { "input_bit_register_97", bool() },
417  { "input_bit_register_98", bool() },
418  { "input_bit_register_99", bool() },
419  { "input_bit_register_100", bool() },
420  { "input_bit_register_101", bool() },
421  { "input_bit_register_102", bool() },
422  { "input_bit_register_103", bool() },
423  { "input_bit_register_104", bool() },
424  { "input_bit_register_105", bool() },
425  { "input_bit_register_106", bool() },
426  { "input_bit_register_107", bool() },
427  { "input_bit_register_108", bool() },
428  { "input_bit_register_109", bool() },
429  { "input_bit_register_110", bool() },
430  { "input_bit_register_111", bool() },
431  { "input_bit_register_112", bool() },
432  { "input_bit_register_113", bool() },
433  { "input_bit_register_114", bool() },
434  { "input_bit_register_115", bool() },
435  { "input_bit_register_116", bool() },
436  { "input_bit_register_117", bool() },
437  { "input_bit_register_118", bool() },
438  { "input_bit_register_119", bool() },
439  { "input_bit_register_120", bool() },
440  { "input_bit_register_121", bool() },
441  { "input_bit_register_122", bool() },
442  { "input_bit_register_123", bool() },
443  { "input_bit_register_124", bool() },
444  { "input_bit_register_125", bool() },
445  { "input_bit_register_126", bool() },
446  { "input_bit_register_127", bool() },
447  { "input_int_register_0", int32_t() },
448  { "input_int_register_1", int32_t() },
449  { "input_int_register_2", int32_t() },
450  { "input_int_register_3", int32_t() },
451  { "input_int_register_4", int32_t() },
452  { "input_int_register_5", int32_t() },
453  { "input_int_register_6", int32_t() },
454  { "input_int_register_7", int32_t() },
455  { "input_int_register_8", int32_t() },
456  { "input_int_register_9", int32_t() },
457  { "input_int_register_10", int32_t() },
458  { "input_int_register_11", int32_t() },
459  { "input_int_register_12", int32_t() },
460  { "input_int_register_13", int32_t() },
461  { "input_int_register_14", int32_t() },
462  { "input_int_register_15", int32_t() },
463  { "input_int_register_16", int32_t() },
464  { "input_int_register_17", int32_t() },
465  { "input_int_register_18", int32_t() },
466  { "input_int_register_19", int32_t() },
467  { "input_int_register_20", int32_t() },
468  { "input_int_register_21", int32_t() },
469  { "input_int_register_22", int32_t() },
470  { "input_int_register_23", int32_t() },
471  { "input_int_register_24", int32_t() },
472  { "input_int_register_25", int32_t() },
473  { "input_int_register_26", int32_t() },
474  { "input_int_register_27", int32_t() },
475  { "input_int_register_28", int32_t() },
476  { "input_int_register_29", int32_t() },
477  { "input_int_register_30", int32_t() },
478  { "input_int_register_31", int32_t() },
479  { "input_int_register_32", int32_t() },
480  { "input_int_register_33", int32_t() },
481  { "input_int_register_34", int32_t() },
482  { "input_int_register_35", int32_t() },
483  { "input_int_register_36", int32_t() },
484  { "input_int_register_37", int32_t() },
485  { "input_int_register_38", int32_t() },
486  { "input_int_register_39", int32_t() },
487  { "input_int_register_40", int32_t() },
488  { "input_int_register_41", int32_t() },
489  { "input_int_register_42", int32_t() },
490  { "input_int_register_43", int32_t() },
491  { "input_int_register_44", int32_t() },
492  { "input_int_register_45", int32_t() },
493  { "input_int_register_46", int32_t() },
494  { "input_int_register_47", int32_t() },
495  { "input_double_register_0", double() },
496  { "input_double_register_1", double() },
497  { "input_double_register_2", double() },
498  { "input_double_register_3", double() },
499  { "input_double_register_4", double() },
500  { "input_double_register_5", double() },
501  { "input_double_register_6", double() },
502  { "input_double_register_7", double() },
503  { "input_double_register_8", double() },
504  { "input_double_register_9", double() },
505  { "input_double_register_10", double() },
506  { "input_double_register_11", double() },
507  { "input_double_register_12", double() },
508  { "input_double_register_13", double() },
509  { "input_double_register_14", double() },
510  { "input_double_register_15", double() },
511  { "input_double_register_16", double() },
512  { "input_double_register_17", double() },
513  { "input_double_register_18", double() },
514  { "input_double_register_19", double() },
515  { "input_double_register_20", double() },
516  { "input_double_register_21", double() },
517  { "input_double_register_22", double() },
518  { "input_double_register_23", double() },
519  { "input_double_register_24", double() },
520  { "input_double_register_25", double() },
521  { "input_double_register_26", double() },
522  { "input_double_register_27", double() },
523  { "input_double_register_28", double() },
524  { "input_double_register_29", double() },
525  { "input_double_register_30", double() },
526  { "input_double_register_31", double() },
527  { "input_double_register_32", double() },
528  { "input_double_register_33", double() },
529  { "input_double_register_34", double() },
530  { "input_double_register_35", double() },
531  { "input_double_register_36", double() },
532  { "input_double_register_37", double() },
533  { "input_double_register_38", double() },
534  { "input_double_register_39", double() },
535  { "input_double_register_40", double() },
536  { "input_double_register_41", double() },
537  { "input_double_register_42", double() },
538  { "input_double_register_43", double() },
539  { "input_double_register_44", double() },
540  { "input_double_register_45", double() },
541  { "input_double_register_46", double() },
542  { "input_double_register_47", double() },
543  { "speed_slider_mask", uint32_t() },
544  { "speed_slider_fraction", double() },
545  { "standard_digital_output_mask", uint8_t() },
546  { "standard_digital_output", uint8_t() },
547  { "configurable_digital_output_mask", uint8_t() },
548  { "configurable_digital_output", uint8_t() },
549  { "tool_digital_output_mask", uint8_t() },
550  { "tool_digital_output", uint8_t() },
551  { "standard_analog_output_mask", uint8_t() },
552  { "standard_analog_output_type", uint8_t() },
553  { "standard_analog_output_0", double() },
554  { "standard_analog_output_1", double() },
555 };
556 
558 {
559  for (auto& item : recipe_)
560  {
561  if (g_type_list.find(item) != g_type_list.end())
562  {
563  _rtde_type_variant entry = g_type_list[item];
564  data_[item] = entry;
565  }
566  }
567 }
568 
570 {
571  bp.parse(recipe_id_);
572  for (auto& item : recipe_)
573  {
574  if (g_type_list.find(item) != g_type_list.end())
575  {
576  _rtde_type_variant entry = g_type_list[item];
577  auto bound_visitor = std::bind(ParseVisitor(), std::placeholders::_1, bp);
578  boost::apply_visitor(bound_visitor, entry);
579  data_[item] = entry;
580  }
581  else
582  {
583  return false;
584  }
585  }
586  return true;
587 }
588 
590 {
591  std::stringstream ss;
592  for (auto& item : data_)
593  {
594  ss << item.first << ": ";
595  ss << boost::apply_visitor(StringVisitor{}, item.second) << std::endl;
596  }
597  return ss.str();
598 }
599 
601 {
602  uint16_t payload_size = sizeof(recipe_id_);
603 
604  for (auto& item : data_)
605  {
606  payload_size += boost::apply_visitor(SizeVisitor{}, item.second);
607  }
608  size_t size = 0;
609  size += PackageHeader::serializeHeader(buffer, PackageType::RTDE_DATA_PACKAGE, payload_size);
610  size += comm::PackageSerializer::serialize(buffer + size, recipe_id_);
611  for (auto& item : recipe_)
612  {
613  auto bound_visitor = std::bind(SerializeVisitor(), std::placeholders::_1, buffer + size);
614  size += boost::apply_visitor(bound_visitor, data_[item]);
615  }
616 
617  return size;
618 }
619 } // namespace rtde_interface
620 } // namespace urcl
void parse(T &val)
Parses the next bytes as given type.
Definition: bin_parser.h:139
The BinParser class handles a byte buffer and functionality to iteratively parse the content...
Definition: bin_parser.h:44
std::array< double, 3 > vector3d_t
Definition: types.h:29
boost::variant< bool, uint8_t, uint32_t, uint64_t, int32_t, double, vector3d_t, vector6d_t, vector6int32_t, vector6uint32_t, std::string > _rtde_type_variant
Definition: data_package.h:63
virtual std::string toString() const
Produces a human readable representation of the package object.
std::array< int32_t, 6 > vector6int32_t
Definition: types.h:31
virtual bool parseWith(comm::BinParser &bp)
Sets the attributes of the package by parsing a serialized representation of the package.
size_t serializePackage(uint8_t *buffer)
Serializes the package.
static size_t serialize(uint8_t *buffer, T val)
A generalized serialization method for arbitrary datatypes.
std::array< double, 6 > vector6d_t
Definition: types.h:30
void initEmpty()
Initializes to contained list with empty values based on the recipe.
static std::unordered_map< std::string, _rtde_type_variant > g_type_list
Definition: data_package.h:200
static size_t serializeHeader(uint8_t *buffer, PackageType package_type, uint16_t payload_length)
Creates a serialization of a header based on given values.


ur_client_library
Author(s): Thomas Timm Andersen, Simon Rasmussen, Felix Exner, Lea Steffen, Tristan Schnell
autogenerated on Sun May 9 2021 02:16:26