Fawkes API  Fawkes Development Version
CameraControlInterface.cpp
1 
2 /***************************************************************************
3  * CameraControlInterface.cpp - Fawkes BlackBoard Interface - CameraControlInterface
4  *
5  * Templated created: Thu Oct 12 10:49:19 2006
6  * Copyright 2014 Tim Niemueller
7  *
8  ****************************************************************************/
9 
10 /* This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version. A runtime exception applies to
14  * this software (see LICENSE.GPL_WRE file mentioned below for details).
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Library General Public License for more details.
20  *
21  * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22  */
23 
24 #include <interfaces/CameraControlInterface.h>
25 
26 #include <core/exceptions/software.h>
27 
28 #include <map>
29 #include <string>
30 #include <cstring>
31 #include <cstdlib>
32 
33 namespace fawkes {
34 
35 /** @class CameraControlInterface <interfaces/CameraControlInterface.h>
36  * CameraControlInterface Fawkes BlackBoard Interface.
37  *
38 
39  * @ingroup FawkesInterfaces
40  */
41 
42 
43 
44 /** Constructor */
45 CameraControlInterface::CameraControlInterface() : Interface()
46 {
47  data_size = sizeof(CameraControlInterface_data_t);
48  data_ptr = malloc(data_size);
49  data = (CameraControlInterface_data_t *)data_ptr;
50  data_ts = (interface_data_ts_t *)data_ptr;
51  memset(data_ptr, 0, data_size);
52  enum_map_Effect[(int)EFF_NONE] = "EFF_NONE";
53  enum_map_Effect[(int)EFF_PASTEL] = "EFF_PASTEL";
54  enum_map_Effect[(int)EFF_NEGATIVE] = "EFF_NEGATIVE";
55  enum_map_Effect[(int)EFF_BW] = "EFF_BW";
56  enum_map_Effect[(int)EFF_SOLARIZE] = "EFF_SOLARIZE";
57  add_fieldinfo(IFT_ENUM, "effect", 1, &data->effect, "Effect", &enum_map_Effect);
58  add_fieldinfo(IFT_BOOL, "effect_supported", 1, &data->effect_supported);
59  add_fieldinfo(IFT_UINT32, "zoom", 1, &data->zoom);
60  add_fieldinfo(IFT_BOOL, "zoom_supported", 1, &data->zoom_supported);
61  add_fieldinfo(IFT_UINT32, "zoom_max", 1, &data->zoom_max);
62  add_fieldinfo(IFT_UINT32, "zoom_min", 1, &data->zoom_min);
63  add_fieldinfo(IFT_BOOL, "mirror", 1, &data->mirror);
64  add_fieldinfo(IFT_BOOL, "mirror_supported", 1, &data->mirror_supported);
65  add_messageinfo("SetEffectMessage");
66  add_messageinfo("SetZoomMessage");
67  add_messageinfo("SetMirrorMessage");
68  unsigned char tmp_hash[] = {0xc, 0xc9, 0x4a, 0x24, 0x89, 0xb8, 0x9c, 0xd1, 0x7f, 0xf5, 0xc4, 0xa3, 0x41, 0xca, 0x9a, 0xc1};
69  set_hash(tmp_hash);
70 }
71 
72 /** Destructor */
73 CameraControlInterface::~CameraControlInterface()
74 {
75  free(data_ptr);
76 }
77 /** Convert Effect constant to string.
78  * @param value value to convert to string
79  * @return constant value as string.
80  */
81 const char *
83 {
84  switch (value) {
85  case EFF_NONE: return "EFF_NONE";
86  case EFF_PASTEL: return "EFF_PASTEL";
87  case EFF_NEGATIVE: return "EFF_NEGATIVE";
88  case EFF_BW: return "EFF_BW";
89  case EFF_SOLARIZE: return "EFF_SOLARIZE";
90  default: return "UNKNOWN";
91  }
92 }
93 /* Methods */
94 /** Get effect value.
95  * Currently active effect.
96  * @return effect value
97  */
100 {
101  return (CameraControlInterface::Effect)data->effect;
102 }
103 
104 /** Get maximum length of effect value.
105  * @return length of effect value, can be length of the array or number of
106  * maximum number of characters for a string
107  */
108 size_t
110 {
111  return 1;
112 }
113 
114 /** Set effect value.
115  * Currently active effect.
116  * @param new_effect new effect value
117  */
118 void
120 {
121  data->effect = new_effect;
122  data_changed = true;
123 }
124 
125 /** Get effect_supported value.
126  * Are effects supported?
127  * @return effect_supported value
128  */
129 bool
131 {
132  return data->effect_supported;
133 }
134 
135 /** Get maximum length of effect_supported value.
136  * @return length of effect_supported value, can be length of the array or number of
137  * maximum number of characters for a string
138  */
139 size_t
141 {
142  return 1;
143 }
144 
145 /** Set effect_supported value.
146  * Are effects supported?
147  * @param new_effect_supported new effect_supported value
148  */
149 void
150 CameraControlInterface::set_effect_supported(const bool new_effect_supported)
151 {
152  data->effect_supported = new_effect_supported;
153  data_changed = true;
154 }
155 
156 /** Get zoom value.
157  * Current zoom setting.
158  * @return zoom value
159  */
160 uint32_t
162 {
163  return data->zoom;
164 }
165 
166 /** Get maximum length of zoom value.
167  * @return length of zoom value, can be length of the array or number of
168  * maximum number of characters for a string
169  */
170 size_t
172 {
173  return 1;
174 }
175 
176 /** Set zoom value.
177  * Current zoom setting.
178  * @param new_zoom new zoom value
179  */
180 void
181 CameraControlInterface::set_zoom(const uint32_t new_zoom)
182 {
183  data->zoom = new_zoom;
184  data_changed = true;
185 }
186 
187 /** Get zoom_supported value.
188  * Is zooming supported?
189  * @return zoom_supported value
190  */
191 bool
193 {
194  return data->zoom_supported;
195 }
196 
197 /** Get maximum length of zoom_supported value.
198  * @return length of zoom_supported value, can be length of the array or number of
199  * maximum number of characters for a string
200  */
201 size_t
203 {
204  return 1;
205 }
206 
207 /** Set zoom_supported value.
208  * Is zooming supported?
209  * @param new_zoom_supported new zoom_supported value
210  */
211 void
212 CameraControlInterface::set_zoom_supported(const bool new_zoom_supported)
213 {
214  data->zoom_supported = new_zoom_supported;
215  data_changed = true;
216 }
217 
218 /** Get zoom_max value.
219  * Maximum zoom value
220  * @return zoom_max value
221  */
222 uint32_t
224 {
225  return data->zoom_max;
226 }
227 
228 /** Get maximum length of zoom_max value.
229  * @return length of zoom_max value, can be length of the array or number of
230  * maximum number of characters for a string
231  */
232 size_t
234 {
235  return 1;
236 }
237 
238 /** Set zoom_max value.
239  * Maximum zoom value
240  * @param new_zoom_max new zoom_max value
241  */
242 void
243 CameraControlInterface::set_zoom_max(const uint32_t new_zoom_max)
244 {
245  data->zoom_max = new_zoom_max;
246  data_changed = true;
247 }
248 
249 /** Get zoom_min value.
250  * Minimum zoom
251  * @return zoom_min value
252  */
253 uint32_t
255 {
256  return data->zoom_min;
257 }
258 
259 /** Get maximum length of zoom_min value.
260  * @return length of zoom_min value, can be length of the array or number of
261  * maximum number of characters for a string
262  */
263 size_t
265 {
266  return 1;
267 }
268 
269 /** Set zoom_min value.
270  * Minimum zoom
271  * @param new_zoom_min new zoom_min value
272  */
273 void
274 CameraControlInterface::set_zoom_min(const uint32_t new_zoom_min)
275 {
276  data->zoom_min = new_zoom_min;
277  data_changed = true;
278 }
279 
280 /** Get mirror value.
281  * Is the image mirrored?
282  * @return mirror value
283  */
284 bool
286 {
287  return data->mirror;
288 }
289 
290 /** Get maximum length of mirror value.
291  * @return length of mirror value, can be length of the array or number of
292  * maximum number of characters for a string
293  */
294 size_t
296 {
297  return 1;
298 }
299 
300 /** Set mirror value.
301  * Is the image mirrored?
302  * @param new_mirror new mirror value
303  */
304 void
306 {
307  data->mirror = new_mirror;
308  data_changed = true;
309 }
310 
311 /** Get mirror_supported value.
312  * Is mirroring supported?
313  * @return mirror_supported value
314  */
315 bool
317 {
318  return data->mirror_supported;
319 }
320 
321 /** Get maximum length of mirror_supported value.
322  * @return length of mirror_supported value, can be length of the array or number of
323  * maximum number of characters for a string
324  */
325 size_t
327 {
328  return 1;
329 }
330 
331 /** Set mirror_supported value.
332  * Is mirroring supported?
333  * @param new_mirror_supported new mirror_supported value
334  */
335 void
336 CameraControlInterface::set_mirror_supported(const bool new_mirror_supported)
337 {
338  data->mirror_supported = new_mirror_supported;
339  data_changed = true;
340 }
341 
342 /* =========== message create =========== */
343 Message *
345 {
346  if ( strncmp("SetEffectMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
347  return new SetEffectMessage();
348  } else if ( strncmp("SetZoomMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
349  return new SetZoomMessage();
350  } else if ( strncmp("SetMirrorMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
351  return new SetMirrorMessage();
352  } else {
353  throw UnknownTypeException("The given type '%s' does not match any known "
354  "message type for this interface type.", type);
355  }
356 }
357 
358 
359 /** Copy values from other interface.
360  * @param other other interface to copy values from
361  */
362 void
364 {
365  const CameraControlInterface *oi = dynamic_cast<const CameraControlInterface *>(other);
366  if (oi == NULL) {
367  throw TypeMismatchException("Can only copy values from interface of same type (%s vs. %s)",
368  type(), other->type());
369  }
370  memcpy(data, oi->data, sizeof(CameraControlInterface_data_t));
371 }
372 
373 const char *
374 CameraControlInterface::enum_tostring(const char *enumtype, int val) const
375 {
376  if (strcmp(enumtype, "Effect") == 0) {
377  return tostring_Effect((Effect)val);
378  }
379  throw UnknownTypeException("Unknown enum type %s", enumtype);
380 }
381 
382 /* =========== messages =========== */
383 /** @class CameraControlInterface::SetEffectMessage <interfaces/CameraControlInterface.h>
384  * SetEffectMessage Fawkes BlackBoard Interface Message.
385  *
386 
387  */
388 
389 
390 /** Constructor with initial values.
391  * @param ini_effect initial value for effect
392  */
394 {
395  data_size = sizeof(SetEffectMessage_data_t);
396  data_ptr = malloc(data_size);
397  memset(data_ptr, 0, data_size);
398  data = (SetEffectMessage_data_t *)data_ptr;
400  data->effect = ini_effect;
401  enum_map_Effect[(int)EFF_NONE] = "EFF_NONE";
402  enum_map_Effect[(int)EFF_PASTEL] = "EFF_PASTEL";
403  enum_map_Effect[(int)EFF_NEGATIVE] = "EFF_NEGATIVE";
404  enum_map_Effect[(int)EFF_BW] = "EFF_BW";
405  enum_map_Effect[(int)EFF_SOLARIZE] = "EFF_SOLARIZE";
406  add_fieldinfo(IFT_ENUM, "effect", 1, &data->effect, "Effect", &enum_map_Effect);
407 }
408 /** Constructor */
410 {
411  data_size = sizeof(SetEffectMessage_data_t);
412  data_ptr = malloc(data_size);
413  memset(data_ptr, 0, data_size);
414  data = (SetEffectMessage_data_t *)data_ptr;
416  enum_map_Effect[(int)EFF_NONE] = "EFF_NONE";
417  enum_map_Effect[(int)EFF_PASTEL] = "EFF_PASTEL";
418  enum_map_Effect[(int)EFF_NEGATIVE] = "EFF_NEGATIVE";
419  enum_map_Effect[(int)EFF_BW] = "EFF_BW";
420  enum_map_Effect[(int)EFF_SOLARIZE] = "EFF_SOLARIZE";
421  add_fieldinfo(IFT_ENUM, "effect", 1, &data->effect, "Effect", &enum_map_Effect);
422 }
423 
424 /** Destructor */
426 {
427  free(data_ptr);
428 }
429 
430 /** Copy constructor.
431  * @param m message to copy from
432  */
434 {
435  data_size = m->data_size;
436  data_ptr = malloc(data_size);
437  memcpy(data_ptr, m->data_ptr, data_size);
438  data = (SetEffectMessage_data_t *)data_ptr;
440 }
441 
442 /* Methods */
443 /** Get effect value.
444  * Currently active effect.
445  * @return effect value
446  */
449 {
450  return (CameraControlInterface::Effect)data->effect;
451 }
452 
453 /** Get maximum length of effect value.
454  * @return length of effect value, can be length of the array or number of
455  * maximum number of characters for a string
456  */
457 size_t
459 {
460  return 1;
461 }
462 
463 /** Set effect value.
464  * Currently active effect.
465  * @param new_effect new effect value
466  */
467 void
469 {
470  data->effect = new_effect;
471 }
472 
473 /** Clone this message.
474  * Produces a message of the same type as this message and copies the
475  * data to the new message.
476  * @return clone of this message
477  */
478 Message *
480 {
482 }
483 /** @class CameraControlInterface::SetZoomMessage <interfaces/CameraControlInterface.h>
484  * SetZoomMessage Fawkes BlackBoard Interface Message.
485  *
486 
487  */
488 
489 
490 /** Constructor with initial values.
491  * @param ini_zoom initial value for zoom
492  */
493 CameraControlInterface::SetZoomMessage::SetZoomMessage(const uint32_t ini_zoom) : Message("SetZoomMessage")
494 {
495  data_size = sizeof(SetZoomMessage_data_t);
496  data_ptr = malloc(data_size);
497  memset(data_ptr, 0, data_size);
498  data = (SetZoomMessage_data_t *)data_ptr;
500  data->zoom = ini_zoom;
501  enum_map_Effect[(int)EFF_NONE] = "EFF_NONE";
502  enum_map_Effect[(int)EFF_PASTEL] = "EFF_PASTEL";
503  enum_map_Effect[(int)EFF_NEGATIVE] = "EFF_NEGATIVE";
504  enum_map_Effect[(int)EFF_BW] = "EFF_BW";
505  enum_map_Effect[(int)EFF_SOLARIZE] = "EFF_SOLARIZE";
506  add_fieldinfo(IFT_UINT32, "zoom", 1, &data->zoom);
507 }
508 /** Constructor */
510 {
511  data_size = sizeof(SetZoomMessage_data_t);
512  data_ptr = malloc(data_size);
513  memset(data_ptr, 0, data_size);
514  data = (SetZoomMessage_data_t *)data_ptr;
516  enum_map_Effect[(int)EFF_NONE] = "EFF_NONE";
517  enum_map_Effect[(int)EFF_PASTEL] = "EFF_PASTEL";
518  enum_map_Effect[(int)EFF_NEGATIVE] = "EFF_NEGATIVE";
519  enum_map_Effect[(int)EFF_BW] = "EFF_BW";
520  enum_map_Effect[(int)EFF_SOLARIZE] = "EFF_SOLARIZE";
521  add_fieldinfo(IFT_UINT32, "zoom", 1, &data->zoom);
522 }
523 
524 /** Destructor */
526 {
527  free(data_ptr);
528 }
529 
530 /** Copy constructor.
531  * @param m message to copy from
532  */
534 {
535  data_size = m->data_size;
536  data_ptr = malloc(data_size);
537  memcpy(data_ptr, m->data_ptr, data_size);
538  data = (SetZoomMessage_data_t *)data_ptr;
540 }
541 
542 /* Methods */
543 /** Get zoom value.
544  * Current zoom setting.
545  * @return zoom value
546  */
547 uint32_t
549 {
550  return data->zoom;
551 }
552 
553 /** Get maximum length of zoom value.
554  * @return length of zoom value, can be length of the array or number of
555  * maximum number of characters for a string
556  */
557 size_t
559 {
560  return 1;
561 }
562 
563 /** Set zoom value.
564  * Current zoom setting.
565  * @param new_zoom new zoom value
566  */
567 void
569 {
570  data->zoom = new_zoom;
571 }
572 
573 /** Clone this message.
574  * Produces a message of the same type as this message and copies the
575  * data to the new message.
576  * @return clone of this message
577  */
578 Message *
580 {
582 }
583 /** @class CameraControlInterface::SetMirrorMessage <interfaces/CameraControlInterface.h>
584  * SetMirrorMessage Fawkes BlackBoard Interface Message.
585  *
586 
587  */
588 
589 
590 /** Constructor with initial values.
591  * @param ini_mirror initial value for mirror
592  */
593 CameraControlInterface::SetMirrorMessage::SetMirrorMessage(const bool ini_mirror) : Message("SetMirrorMessage")
594 {
595  data_size = sizeof(SetMirrorMessage_data_t);
596  data_ptr = malloc(data_size);
597  memset(data_ptr, 0, data_size);
598  data = (SetMirrorMessage_data_t *)data_ptr;
600  data->mirror = ini_mirror;
601  enum_map_Effect[(int)EFF_NONE] = "EFF_NONE";
602  enum_map_Effect[(int)EFF_PASTEL] = "EFF_PASTEL";
603  enum_map_Effect[(int)EFF_NEGATIVE] = "EFF_NEGATIVE";
604  enum_map_Effect[(int)EFF_BW] = "EFF_BW";
605  enum_map_Effect[(int)EFF_SOLARIZE] = "EFF_SOLARIZE";
606  add_fieldinfo(IFT_BOOL, "mirror", 1, &data->mirror);
607 }
608 /** Constructor */
610 {
611  data_size = sizeof(SetMirrorMessage_data_t);
612  data_ptr = malloc(data_size);
613  memset(data_ptr, 0, data_size);
614  data = (SetMirrorMessage_data_t *)data_ptr;
616  enum_map_Effect[(int)EFF_NONE] = "EFF_NONE";
617  enum_map_Effect[(int)EFF_PASTEL] = "EFF_PASTEL";
618  enum_map_Effect[(int)EFF_NEGATIVE] = "EFF_NEGATIVE";
619  enum_map_Effect[(int)EFF_BW] = "EFF_BW";
620  enum_map_Effect[(int)EFF_SOLARIZE] = "EFF_SOLARIZE";
621  add_fieldinfo(IFT_BOOL, "mirror", 1, &data->mirror);
622 }
623 
624 /** Destructor */
626 {
627  free(data_ptr);
628 }
629 
630 /** Copy constructor.
631  * @param m message to copy from
632  */
634 {
635  data_size = m->data_size;
636  data_ptr = malloc(data_size);
637  memcpy(data_ptr, m->data_ptr, data_size);
638  data = (SetMirrorMessage_data_t *)data_ptr;
640 }
641 
642 /* Methods */
643 /** Get mirror value.
644  * Is the image mirrored?
645  * @return mirror value
646  */
647 bool
649 {
650  return data->mirror;
651 }
652 
653 /** Get maximum length of mirror value.
654  * @return length of mirror value, can be length of the array or number of
655  * maximum number of characters for a string
656  */
657 size_t
659 {
660  return 1;
661 }
662 
663 /** Set mirror value.
664  * Is the image mirrored?
665  * @param new_mirror new mirror value
666  */
667 void
669 {
670  data->mirror = new_mirror;
671 }
672 
673 /** Clone this message.
674  * Produces a message of the same type as this message and copies the
675  * data to the new message.
676  * @return clone of this message
677  */
678 Message *
680 {
682 }
683 /** Check if message is valid and can be enqueued.
684  * @param message Message to check
685  * @return true if the message is valid, false otherwise.
686  */
687 bool
689 {
690  const SetEffectMessage *m0 = dynamic_cast<const SetEffectMessage *>(message);
691  if ( m0 != NULL ) {
692  return true;
693  }
694  const SetZoomMessage *m1 = dynamic_cast<const SetZoomMessage *>(message);
695  if ( m1 != NULL ) {
696  return true;
697  }
698  const SetMirrorMessage *m2 = dynamic_cast<const SetMirrorMessage *>(message);
699  if ( m2 != NULL ) {
700  return true;
701  }
702  return false;
703 }
704 
705 /// @cond INTERNALS
706 EXPORT_INTERFACE(CameraControlInterface)
707 /// @endcond
708 
709 
710 } // end namespace fawkes
bool is_mirror() const
Get mirror value.
void * data_ptr
Pointer to memory that contains local data.
Definition: message.h:124
void set_zoom_max(const uint32_t new_zoom_max)
Set zoom_max value.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
Definition: message.h:44
void set_zoom_min(const uint32_t new_zoom_min)
Set zoom_min value.
virtual Message * clone() const
Clone this message.
void set_zoom(const uint32_t new_zoom)
Set zoom value.
void set_effect(const Effect new_effect)
Set effect value.
void set_zoom_supported(const bool new_zoom_supported)
Set zoom_supported value.
bool is_zoom_supported() const
Get zoom_supported value.
void set_mirror_supported(const bool new_mirror_supported)
Set mirror_supported value.
void set_hash(unsigned char *ihash)
Set hash.
Definition: interface.cpp:314
size_t maxlenof_mirror_supported() const
Get maximum length of mirror_supported value.
Fawkes library namespace.
size_t maxlenof_zoom() const
Get maximum length of zoom value.
Timestamp data, must be present and first entries for each interface data structs! This leans on time...
Definition: message.h:129
uint32_t zoom_max() const
Get zoom_max value.
CameraControlInterface Fawkes BlackBoard Interface.
Base class for all Fawkes BlackBoard interfaces.
Definition: interface.h:79
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
void set_effect(const Effect new_effect)
Set effect value.
bool is_mirror_supported() const
Get mirror_supported value.
void set_mirror(const bool new_mirror)
Set mirror value.
message_data_ts_t * data_ts
data timestamp aliasing pointer
Definition: message.h:133
size_t maxlenof_effect() const
Get maximum length of effect value.
size_t maxlenof_mirror() const
Get maximum length of mirror value.
unsigned int data_size
Size of memory needed to hold all data.
Definition: message.h:125
uint32_t zoom_min() const
Get zoom_min value.
void add_messageinfo(const char *name)
Add an entry to the message info list.
Definition: interface.cpp:373
bool data_changed
Indicator if data has changed.
Definition: interface.h:222
SetEffectMessage Fawkes BlackBoard Interface Message.
const char * type() const
Get type of interface.
Definition: interface.cpp:651
size_t maxlenof_zoom() const
Get maximum length of zoom value.
void set_effect_supported(const bool new_effect_supported)
Set effect_supported value.
uint32_t zoom() const
Get zoom value.
void set_zoom(const uint32_t new_zoom)
Set zoom value.
SetZoomMessage Fawkes BlackBoard Interface Message.
virtual Message * clone() const
Clone this message.
void set_mirror(const bool new_mirror)
Set mirror value.
bool is_effect_supported() const
Get effect_supported value.
virtual Message * clone() const
Clone this message.
Effect
Enumeration defining the possible effects.
Effect effect() const
Get effect value.
size_t maxlenof_effect_supported() const
Get maximum length of effect_supported value.
SetMirrorMessage Fawkes BlackBoard Interface Message.
const char * tostring_Effect(Effect value) const
Convert Effect constant to string.
size_t maxlenof_zoom_min() const
Get maximum length of zoom_min value.
size_t maxlenof_effect() const
Get maximum length of effect value.
size_t maxlenof_zoom_supported() const
Get maximum length of zoom_supported value.
virtual Message * create_message(const char *type) const
Create message based on type name.
size_t maxlenof_zoom_max() const
Get maximum length of zoom_max value.
virtual void copy_values(const Interface *other)
Copy values from other interface.
virtual const char * enum_tostring(const char *enumtype, int val) const
Convert arbitrary enum value to string.
void add_fieldinfo(interface_fieldtype_t type, const char *name, size_t length, void *value, const char *enumtype=0, const interface_enum_map_t *enum_map=0)
Add an entry to the info list.
Definition: message.cpp:436
boolean field
Definition: types.h:36
size_t maxlenof_mirror() const
Get maximum length of mirror value.
const char * type() const
Get message type.
Definition: message.cpp:378
32 bit unsigned integer field
Definition: types.h:42
field with interface specific enum type
Definition: types.h:49