YARP
Yet Another Robot Platform
MobileBaseVelocity.cpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 
6 // Autogenerated by Thrift Compiler (0.14.1-yarped)
7 //
8 // This is an automatically generated file.
9 // It could get re-generated if the ALLOW_IDL_GENERATION flag is on.
10 
12 
13 namespace yarp {
14 namespace dev {
15 
16 // Default constructor
18  WirePortable(),
19  vel_x(0),
20  vel_y(0),
21  vel_theta(0)
22 {
23 }
24 
25 // Constructor with field values
27  const double vel_y,
28  const double vel_theta) :
29  WirePortable(),
30  vel_x(vel_x),
31  vel_y(vel_y),
32  vel_theta(vel_theta)
33 {
34 }
35 
36 // Read structure on a Wire
38 {
39  if (!read_vel_x(reader)) {
40  return false;
41  }
42  if (!read_vel_y(reader)) {
43  return false;
44  }
45  if (!read_vel_theta(reader)) {
46  return false;
47  }
48  return !reader.isError();
49 }
50 
51 // Read structure on a Connection
53 {
54  yarp::os::idl::WireReader reader(connection);
55  if (!reader.readListHeader(3)) {
56  return false;
57  }
58  return read(reader);
59 }
60 
61 // Write structure on a Wire
63 {
64  if (!write_vel_x(writer)) {
65  return false;
66  }
67  if (!write_vel_y(writer)) {
68  return false;
69  }
70  if (!write_vel_theta(writer)) {
71  return false;
72  }
73  return !writer.isError();
74 }
75 
76 // Write structure on a Connection
78 {
79  yarp::os::idl::WireWriter writer(connection);
80  if (!writer.writeListHeader(3)) {
81  return false;
82  }
83  return write(writer);
84 }
85 
86 // Convert to a printable string
87 std::string MobileBaseVelocity::toString() const
88 {
90  b.read(*this);
91  return b.toString();
92 }
93 
94 // Editor: default constructor
96 {
97  group = 0;
98  obj_owned = true;
99  obj = new MobileBaseVelocity;
100  dirty_flags(false);
101  yarp().setOwner(*this);
102 }
103 
104 // Editor: constructor with base class
106 {
107  group = 0;
108  obj_owned = false;
109  edit(obj, false);
110  yarp().setOwner(*this);
111 }
112 
113 // Editor: destructor
115 {
116  if (obj_owned) {
117  delete obj;
118  }
119 }
120 
121 // Editor: edit
123 {
124  if (obj_owned) {
125  delete this->obj;
126  }
127  this->obj = &obj;
128  obj_owned = false;
129  dirty_flags(dirty);
130  return true;
131 }
132 
133 // Editor: validity check
135 {
136  return obj != nullptr;
137 }
138 
139 // Editor: state
141 {
142  return *obj;
143 }
144 
145 // Editor: grouping begin
147 {
148  group++;
149 }
150 
151 // Editor: grouping end
153 {
154  group--;
155  if (group == 0 && is_dirty) {
156  communicate();
157  }
158 }
159 // Editor: vel_x setter
161 {
162  will_set_vel_x();
163  obj->vel_x = vel_x;
164  mark_dirty_vel_x();
165  communicate();
166  did_set_vel_x();
167 }
168 
169 // Editor: vel_x getter
171 {
172  return obj->vel_x;
173 }
174 
175 // Editor: vel_x will_set
177 {
178  return true;
179 }
180 
181 // Editor: vel_x did_set
183 {
184  return true;
185 }
186 
187 // Editor: vel_y setter
189 {
190  will_set_vel_y();
191  obj->vel_y = vel_y;
192  mark_dirty_vel_y();
193  communicate();
194  did_set_vel_y();
195 }
196 
197 // Editor: vel_y getter
199 {
200  return obj->vel_y;
201 }
202 
203 // Editor: vel_y will_set
205 {
206  return true;
207 }
208 
209 // Editor: vel_y did_set
211 {
212  return true;
213 }
214 
215 // Editor: vel_theta setter
217 {
218  will_set_vel_theta();
219  obj->vel_theta = vel_theta;
220  mark_dirty_vel_theta();
221  communicate();
222  did_set_vel_theta();
223 }
224 
225 // Editor: vel_theta getter
227 {
228  return obj->vel_theta;
229 }
230 
231 // Editor: vel_theta will_set
233 {
234  return true;
235 }
236 
237 // Editor: vel_theta did_set
239 {
240  return true;
241 }
242 
243 // Editor: clean
245 {
246  dirty_flags(false);
247 }
248 
249 // Editor: read
251 {
252  if (!isValid()) {
253  return false;
254  }
255  yarp::os::idl::WireReader reader(connection);
256  reader.expectAccept();
257  if (!reader.readListHeader()) {
258  return false;
259  }
260  int len = reader.getLength();
261  if (len == 0) {
262  yarp::os::idl::WireWriter writer(reader);
263  if (writer.isNull()) {
264  return true;
265  }
266  if (!writer.writeListHeader(1)) {
267  return false;
268  }
269  writer.writeString("send: 'help' or 'patch (param1 val1) (param2 val2)'");
270  return true;
271  }
272  std::string tag;
273  if (!reader.readString(tag)) {
274  return false;
275  }
276  if (tag == "help") {
277  yarp::os::idl::WireWriter writer(reader);
278  if (writer.isNull()) {
279  return true;
280  }
281  if (!writer.writeListHeader(2)) {
282  return false;
283  }
284  if (!writer.writeTag("many", 1, 0)) {
285  return false;
286  }
287  if (reader.getLength() > 0) {
288  std::string field;
289  if (!reader.readString(field)) {
290  return false;
291  }
292  if (field == "vel_x") {
293  if (!writer.writeListHeader(2)) {
294  return false;
295  }
296  if (!writer.writeString("double vel_x")) {
297  return false;
298  }
299  if (!writer.writeString("velocity of the robot [m/s]")) {
300  return false;
301  }
302  }
303  if (field == "vel_y") {
304  if (!writer.writeListHeader(2)) {
305  return false;
306  }
307  if (!writer.writeString("double vel_y")) {
308  return false;
309  }
310  if (!writer.writeString("velocity of the robot [m/s]")) {
311  return false;
312  }
313  }
314  if (field == "vel_theta") {
315  if (!writer.writeListHeader(2)) {
316  return false;
317  }
318  if (!writer.writeString("double vel_theta")) {
319  return false;
320  }
321  if (!writer.writeString("angular velocity of the robot [deg/s]")) {
322  return false;
323  }
324  }
325  }
326  if (!writer.writeListHeader(4)) {
327  return false;
328  }
329  writer.writeString("*** Available fields:");
330  writer.writeString("vel_x");
331  writer.writeString("vel_y");
332  writer.writeString("vel_theta");
333  return true;
334  }
335  bool nested = true;
336  bool have_act = false;
337  if (tag != "patch") {
338  if (((len - 1) % 2) != 0) {
339  return false;
340  }
341  len = 1 + ((len - 1) / 2);
342  nested = false;
343  have_act = true;
344  }
345  for (int i = 1; i < len; ++i) {
346  if (nested && !reader.readListHeader(3)) {
347  return false;
348  }
349  std::string act;
350  std::string key;
351  if (have_act) {
352  act = tag;
353  } else if (!reader.readString(act)) {
354  return false;
355  }
356  if (!reader.readString(key)) {
357  return false;
358  }
359  if (key == "vel_x") {
360  will_set_vel_x();
361  if (!obj->nested_read_vel_x(reader)) {
362  return false;
363  }
364  did_set_vel_x();
365  } else if (key == "vel_y") {
366  will_set_vel_y();
367  if (!obj->nested_read_vel_y(reader)) {
368  return false;
369  }
370  did_set_vel_y();
371  } else if (key == "vel_theta") {
372  will_set_vel_theta();
373  if (!obj->nested_read_vel_theta(reader)) {
374  return false;
375  }
376  did_set_vel_theta();
377  } else {
378  // would be useful to have a fallback here
379  }
380  }
381  reader.accept();
382  yarp::os::idl::WireWriter writer(reader);
383  if (writer.isNull()) {
384  return true;
385  }
386  writer.writeListHeader(1);
387  writer.writeVocab32('o', 'k');
388  return true;
389 }
390 
391 // Editor: write
393 {
394  if (!isValid()) {
395  return false;
396  }
397  yarp::os::idl::WireWriter writer(connection);
398  if (!writer.writeListHeader(dirty_count + 1)) {
399  return false;
400  }
401  if (!writer.writeString("patch")) {
402  return false;
403  }
404  if (is_dirty_vel_x) {
405  if (!writer.writeListHeader(3)) {
406  return false;
407  }
408  if (!writer.writeString("set")) {
409  return false;
410  }
411  if (!writer.writeString("vel_x")) {
412  return false;
413  }
414  if (!obj->nested_write_vel_x(writer)) {
415  return false;
416  }
417  }
418  if (is_dirty_vel_y) {
419  if (!writer.writeListHeader(3)) {
420  return false;
421  }
422  if (!writer.writeString("set")) {
423  return false;
424  }
425  if (!writer.writeString("vel_y")) {
426  return false;
427  }
428  if (!obj->nested_write_vel_y(writer)) {
429  return false;
430  }
431  }
432  if (is_dirty_vel_theta) {
433  if (!writer.writeListHeader(3)) {
434  return false;
435  }
436  if (!writer.writeString("set")) {
437  return false;
438  }
439  if (!writer.writeString("vel_theta")) {
440  return false;
441  }
442  if (!obj->nested_write_vel_theta(writer)) {
443  return false;
444  }
445  }
446  return !writer.isError();
447 }
448 
449 // Editor: send if possible
450 void MobileBaseVelocity::Editor::communicate()
451 {
452  if (group != 0) {
453  return;
454  }
455  if (yarp().canWrite()) {
456  yarp().write(*this);
457  clean();
458  }
459 }
460 
461 // Editor: mark dirty overall
462 void MobileBaseVelocity::Editor::mark_dirty()
463 {
464  is_dirty = true;
465 }
466 
467 // Editor: vel_x mark_dirty
468 void MobileBaseVelocity::Editor::mark_dirty_vel_x()
469 {
470  if (is_dirty_vel_x) {
471  return;
472  }
473  dirty_count++;
474  is_dirty_vel_x = true;
475  mark_dirty();
476 }
477 
478 // Editor: vel_y mark_dirty
479 void MobileBaseVelocity::Editor::mark_dirty_vel_y()
480 {
481  if (is_dirty_vel_y) {
482  return;
483  }
484  dirty_count++;
485  is_dirty_vel_y = true;
486  mark_dirty();
487 }
488 
489 // Editor: vel_theta mark_dirty
490 void MobileBaseVelocity::Editor::mark_dirty_vel_theta()
491 {
492  if (is_dirty_vel_theta) {
493  return;
494  }
495  dirty_count++;
496  is_dirty_vel_theta = true;
497  mark_dirty();
498 }
499 
500 // Editor: dirty_flags
501 void MobileBaseVelocity::Editor::dirty_flags(bool flag)
502 {
503  is_dirty = flag;
504  is_dirty_vel_x = flag;
505  is_dirty_vel_y = flag;
506  is_dirty_vel_theta = flag;
507  dirty_count = flag ? 3 : 0;
508 }
509 
510 // read vel_x field
511 bool MobileBaseVelocity::read_vel_x(yarp::os::idl::WireReader& reader)
512 {
513  if (!reader.readFloat64(vel_x)) {
514  reader.fail();
515  return false;
516  }
517  return true;
518 }
519 
520 // write vel_x field
521 bool MobileBaseVelocity::write_vel_x(const yarp::os::idl::WireWriter& writer) const
522 {
523  if (!writer.writeFloat64(vel_x)) {
524  return false;
525  }
526  return true;
527 }
528 
529 // read (nested) vel_x field
530 bool MobileBaseVelocity::nested_read_vel_x(yarp::os::idl::WireReader& reader)
531 {
532  if (!reader.readFloat64(vel_x)) {
533  reader.fail();
534  return false;
535  }
536  return true;
537 }
538 
539 // write (nested) vel_x field
540 bool MobileBaseVelocity::nested_write_vel_x(const yarp::os::idl::WireWriter& writer) const
541 {
542  if (!writer.writeFloat64(vel_x)) {
543  return false;
544  }
545  return true;
546 }
547 
548 // read vel_y field
549 bool MobileBaseVelocity::read_vel_y(yarp::os::idl::WireReader& reader)
550 {
551  if (!reader.readFloat64(vel_y)) {
552  reader.fail();
553  return false;
554  }
555  return true;
556 }
557 
558 // write vel_y field
559 bool MobileBaseVelocity::write_vel_y(const yarp::os::idl::WireWriter& writer) const
560 {
561  if (!writer.writeFloat64(vel_y)) {
562  return false;
563  }
564  return true;
565 }
566 
567 // read (nested) vel_y field
568 bool MobileBaseVelocity::nested_read_vel_y(yarp::os::idl::WireReader& reader)
569 {
570  if (!reader.readFloat64(vel_y)) {
571  reader.fail();
572  return false;
573  }
574  return true;
575 }
576 
577 // write (nested) vel_y field
578 bool MobileBaseVelocity::nested_write_vel_y(const yarp::os::idl::WireWriter& writer) const
579 {
580  if (!writer.writeFloat64(vel_y)) {
581  return false;
582  }
583  return true;
584 }
585 
586 // read vel_theta field
587 bool MobileBaseVelocity::read_vel_theta(yarp::os::idl::WireReader& reader)
588 {
589  if (!reader.readFloat64(vel_theta)) {
590  reader.fail();
591  return false;
592  }
593  return true;
594 }
595 
596 // write vel_theta field
597 bool MobileBaseVelocity::write_vel_theta(const yarp::os::idl::WireWriter& writer) const
598 {
599  if (!writer.writeFloat64(vel_theta)) {
600  return false;
601  }
602  return true;
603 }
604 
605 // read (nested) vel_theta field
606 bool MobileBaseVelocity::nested_read_vel_theta(yarp::os::idl::WireReader& reader)
607 {
608  if (!reader.readFloat64(vel_theta)) {
609  reader.fail();
610  return false;
611  }
612  return true;
613 }
614 
615 // write (nested) vel_theta field
616 bool MobileBaseVelocity::nested_write_vel_theta(const yarp::os::idl::WireWriter& writer) const
617 {
618  if (!writer.writeFloat64(vel_theta)) {
619  return false;
620  }
621  return true;
622 }
623 
624 } // namespace yarp
625 } // namespace dev
void set_vel_theta(const double vel_theta)
bool write(yarp::os::ConnectionWriter &connection) const override
Write this object to a network connection.
bool edit(MobileBaseVelocity &obj, bool dirty=true)
bool read(yarp::os::ConnectionReader &connection) override
Read this object from a network connection.
double vel_theta
angular velocity of the robot [deg/s]
double vel_y
velocity of the robot [m/s]
bool write(const yarp::os::idl::WireWriter &writer) const override
bool read(yarp::os::idl::WireReader &reader) override
double vel_x
velocity of the robot [m/s]
A simple collection of objects that can be described and transmitted in a portable way.
Definition: Bottle.h:74
bool read(ConnectionReader &reader) override
Set the bottle's value based on input from a network connection.
Definition: Bottle.cpp:240
std::string toString() const override
Gives a human-readable textual representation of the bottle.
Definition: Bottle.cpp:211
An interface for reading from a network connection.
An interface for writing to a network connection.
yarp::os::WireLink & yarp()
Get YARP state associated with this object.
Definition: Wire.h:29
IDL-friendly connection reader.
Definition: WireReader.h:30
bool readString(std::string &str, bool *is_vocab=nullptr)
Definition: WireReader.cpp:382
bool readFloat64(yarp::conf::float64_t &x)
Definition: WireReader.cpp:277
IDL-friendly connection writer.
Definition: WireWriter.h:30
bool writeVocab32(yarp::conf::vocab32_t x) const
Definition: WireWriter.cpp:141
bool writeListHeader(int len) const
Definition: WireWriter.cpp:206
bool writeTag(const char *tag, int split, int len) const
Definition: WireWriter.cpp:164
bool writeFloat64(yarp::conf::float64_t x) const
Definition: WireWriter.cpp:114
bool writeString(const std::string &tag) const
Definition: WireWriter.cpp:189
bool isValid()
Check if time is valid (non-zero).
Definition: Time.cpp:314
The main, catch-all namespace for YARP.
Definition: dirs.h:16