24#include <interfaces/FacialExpressionInterface.h>
26#include <core/exceptions/software.h>
46FacialExpressionInterface::FacialExpressionInterface() : Interface()
48 data_size =
sizeof(FacialExpressionInterface_data_t);
49 data_ptr = malloc(data_size);
50 data = (FacialExpressionInterface_data_t *)data_ptr;
51 data_ts = (interface_data_ts_t *)data_ptr;
52 memset(data_ptr, 0, data_size);
53 enum_map_brows_t[(int)BROWS_DEFAULT] =
"BROWS_DEFAULT";
54 enum_map_brows_t[(int)BROWS_FROWN] =
"BROWS_FROWN";
55 enum_map_brows_t[(int)BROWS_LIFT] =
"BROWS_LIFT";
56 enum_map_eyes_t[(int)EYES_DEFAULT] =
"EYES_DEFAULT";
57 enum_map_eyes_t[(int)EYES_UP] =
"EYES_UP";
58 enum_map_eyes_t[(int)EYES_DOWN] =
"EYES_DOWN";
59 enum_map_eyes_t[(int)EYES_LEFT] =
"EYES_LEFT";
60 enum_map_eyes_t[(int)EYES_RIGHT] =
"EYES_RIGHT";
61 enum_map_eyes_t[(int)EYES_COOL] =
"EYES_COOL";
62 enum_map_eyes_t[(int)EYES_CROSS] =
"EYES_CROSS";
63 enum_map_eyes_t[(int)EYES_HEART] =
"EYES_HEART";
64 enum_map_eyes_t[(int)EYES_DOLLAR] =
"EYES_DOLLAR";
65 enum_map_jowl_t[(int)JOWL_DEFAULT] =
"JOWL_DEFAULT";
66 enum_map_jowl_t[(int)JOWL_BLUSH] =
"JOWL_BLUSH";
67 enum_map_jowl_t[(int)JOWL_TEARS] =
"JOWL_TEARS";
68 enum_map_mouth_t[(int)MOUTH_DEFAULT] =
"MOUTH_DEFAULT";
69 enum_map_mouth_t[(int)MOUTH_OPEN] =
"MOUTH_OPEN";
70 enum_map_mouth_t[(int)MOUTH_CLOSE] =
"MOUTH_CLOSE";
71 enum_map_mouth_t[(int)MOUTH_SMILE] =
"MOUTH_SMILE";
72 enum_map_mouth_t[(int)MOUTH_SCOWL] =
"MOUTH_SCOWL";
73 add_fieldinfo(IFT_ENUM,
"brows_action", 1, &data->brows_action,
"brows_t", &enum_map_brows_t);
74 add_fieldinfo(IFT_ENUM,
"eyes_action", 1, &data->eyes_action,
"eyes_t", &enum_map_eyes_t);
75 add_fieldinfo(IFT_ENUM,
"jowl_action", 1, &data->jowl_action,
"jowl_t", &enum_map_jowl_t);
76 add_fieldinfo(IFT_ENUM,
"mouth_action", 1, &data->mouth_action,
"mouth_t", &enum_map_mouth_t);
77 add_messageinfo(
"MoveBrowsMessage");
78 add_messageinfo(
"MoveEyesMessage");
79 add_messageinfo(
"MoveJowlMessage");
80 add_messageinfo(
"MoveMouthMessage");
81 unsigned char tmp_hash[] = {0x1, 0xbd, 0xc6, 0x65, 0xb3, 0x10, 0xcb, 0x5f, 0xe8, 0x78, 0xdd, 0x6, 0xe, 0x82, 0x7f, 0x80};
86FacialExpressionInterface::~FacialExpressionInterface()
95FacialExpressionInterface::tostring_brows_t(
brows_t value)
const
98 case BROWS_DEFAULT:
return "BROWS_DEFAULT";
99 case BROWS_FROWN:
return "BROWS_FROWN";
100 case BROWS_LIFT:
return "BROWS_LIFT";
101 default:
return "UNKNOWN";
109FacialExpressionInterface::tostring_eyes_t(
eyes_t value)
const
112 case EYES_DEFAULT:
return "EYES_DEFAULT";
113 case EYES_UP:
return "EYES_UP";
114 case EYES_DOWN:
return "EYES_DOWN";
115 case EYES_LEFT:
return "EYES_LEFT";
116 case EYES_RIGHT:
return "EYES_RIGHT";
117 case EYES_COOL:
return "EYES_COOL";
118 case EYES_CROSS:
return "EYES_CROSS";
119 case EYES_HEART:
return "EYES_HEART";
120 case EYES_DOLLAR:
return "EYES_DOLLAR";
121 default:
return "UNKNOWN";
129FacialExpressionInterface::tostring_jowl_t(
jowl_t value)
const
132 case JOWL_DEFAULT:
return "JOWL_DEFAULT";
133 case JOWL_BLUSH:
return "JOWL_BLUSH";
134 case JOWL_TEARS:
return "JOWL_TEARS";
135 default:
return "UNKNOWN";
143FacialExpressionInterface::tostring_mouth_t(
mouth_t value)
const
146 case MOUTH_DEFAULT:
return "MOUTH_DEFAULT";
147 case MOUTH_OPEN:
return "MOUTH_OPEN";
148 case MOUTH_CLOSE:
return "MOUTH_CLOSE";
149 case MOUTH_SMILE:
return "MOUTH_SMILE";
150 case MOUTH_SCOWL:
return "MOUTH_SCOWL";
151 default:
return "UNKNOWN";
160FacialExpressionInterface::brows_action()
const
170FacialExpressionInterface::maxlenof_brows_action()
const
180FacialExpressionInterface::set_brows_action(
const brows_t new_brows_action)
182 set_field(data->brows_action, new_brows_action);
190FacialExpressionInterface::eyes_action()
const
200FacialExpressionInterface::maxlenof_eyes_action()
const
210FacialExpressionInterface::set_eyes_action(
const eyes_t new_eyes_action)
212 set_field(data->eyes_action, new_eyes_action);
220FacialExpressionInterface::jowl_action()
const
230FacialExpressionInterface::maxlenof_jowl_action()
const
240FacialExpressionInterface::set_jowl_action(
const jowl_t new_jowl_action)
242 set_field(data->jowl_action, new_jowl_action);
250FacialExpressionInterface::mouth_action()
const
260FacialExpressionInterface::maxlenof_mouth_action()
const
270FacialExpressionInterface::set_mouth_action(
const mouth_t new_mouth_action)
272 set_field(data->mouth_action, new_mouth_action);
277FacialExpressionInterface::create_message(
const char *type)
const
279 if ( strncmp(
"MoveBrowsMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
281 }
else if ( strncmp(
"MoveEyesMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
283 }
else if ( strncmp(
"MoveJowlMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
285 }
else if ( strncmp(
"MoveMouthMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
289 "message type for this interface type.", type);
298FacialExpressionInterface::copy_values(
const Interface *other)
303 type(), other->
type());
305 memcpy(data, oi->data,
sizeof(FacialExpressionInterface_data_t));
309FacialExpressionInterface::enum_tostring(
const char *enumtype,
int val)
const
311 if (strcmp(enumtype,
"brows_t") == 0) {
312 return tostring_brows_t((
brows_t)val);
314 if (strcmp(enumtype,
"eyes_t") == 0) {
315 return tostring_eyes_t((
eyes_t)val);
317 if (strcmp(enumtype,
"jowl_t") == 0) {
318 return tostring_jowl_t((
jowl_t)val);
320 if (strcmp(enumtype,
"mouth_t") == 0) {
321 return tostring_mouth_t((
mouth_t)val);
337FacialExpressionInterface::MoveBrowsMessage::MoveBrowsMessage(
const brows_t ini_brows_action) :
Message(
"MoveBrowsMessage")
339 data_size =
sizeof(MoveBrowsMessage_data_t);
342 data = (MoveBrowsMessage_data_t *)
data_ptr;
344 data->brows_action = ini_brows_action;
346 enum_map_brows_t[(int)
BROWS_FROWN] =
"BROWS_FROWN";
347 enum_map_brows_t[(int)
BROWS_LIFT] =
"BROWS_LIFT";
349 enum_map_eyes_t[(int)
EYES_UP] =
"EYES_UP";
350 enum_map_eyes_t[(int)
EYES_DOWN] =
"EYES_DOWN";
351 enum_map_eyes_t[(int)
EYES_LEFT] =
"EYES_LEFT";
352 enum_map_eyes_t[(int)
EYES_RIGHT] =
"EYES_RIGHT";
353 enum_map_eyes_t[(int)
EYES_COOL] =
"EYES_COOL";
354 enum_map_eyes_t[(int)
EYES_CROSS] =
"EYES_CROSS";
355 enum_map_eyes_t[(int)
EYES_HEART] =
"EYES_HEART";
358 enum_map_jowl_t[(int)
JOWL_BLUSH] =
"JOWL_BLUSH";
359 enum_map_jowl_t[(int)
JOWL_TEARS] =
"JOWL_TEARS";
361 enum_map_mouth_t[(int)
MOUTH_OPEN] =
"MOUTH_OPEN";
362 enum_map_mouth_t[(int)
MOUTH_CLOSE] =
"MOUTH_CLOSE";
363 enum_map_mouth_t[(int)
MOUTH_SMILE] =
"MOUTH_SMILE";
364 enum_map_mouth_t[(int)
MOUTH_SCOWL] =
"MOUTH_SCOWL";
370 data_size =
sizeof(MoveBrowsMessage_data_t);
373 data = (MoveBrowsMessage_data_t *)
data_ptr;
376 enum_map_brows_t[(int)
BROWS_FROWN] =
"BROWS_FROWN";
377 enum_map_brows_t[(int)
BROWS_LIFT] =
"BROWS_LIFT";
379 enum_map_eyes_t[(int)
EYES_UP] =
"EYES_UP";
380 enum_map_eyes_t[(int)
EYES_DOWN] =
"EYES_DOWN";
381 enum_map_eyes_t[(int)
EYES_LEFT] =
"EYES_LEFT";
382 enum_map_eyes_t[(int)
EYES_RIGHT] =
"EYES_RIGHT";
383 enum_map_eyes_t[(int)
EYES_COOL] =
"EYES_COOL";
384 enum_map_eyes_t[(int)
EYES_CROSS] =
"EYES_CROSS";
385 enum_map_eyes_t[(int)
EYES_HEART] =
"EYES_HEART";
388 enum_map_jowl_t[(int)
JOWL_BLUSH] =
"JOWL_BLUSH";
389 enum_map_jowl_t[(int)
JOWL_TEARS] =
"JOWL_TEARS";
391 enum_map_mouth_t[(int)
MOUTH_OPEN] =
"MOUTH_OPEN";
392 enum_map_mouth_t[(int)
MOUTH_CLOSE] =
"MOUTH_CLOSE";
393 enum_map_mouth_t[(int)
MOUTH_SMILE] =
"MOUTH_SMILE";
394 enum_map_mouth_t[(int)
MOUTH_SCOWL] =
"MOUTH_SCOWL";
412 data = (MoveBrowsMessage_data_t *)
data_ptr;
444 set_field(data->brows_action, new_brows_action);
469 data_size =
sizeof(MoveEyesMessage_data_t);
472 data = (MoveEyesMessage_data_t *)
data_ptr;
474 data->eyes_action = ini_eyes_action;
476 enum_map_brows_t[(int)
BROWS_FROWN] =
"BROWS_FROWN";
477 enum_map_brows_t[(int)
BROWS_LIFT] =
"BROWS_LIFT";
479 enum_map_eyes_t[(int)
EYES_UP] =
"EYES_UP";
480 enum_map_eyes_t[(int)
EYES_DOWN] =
"EYES_DOWN";
481 enum_map_eyes_t[(int)
EYES_LEFT] =
"EYES_LEFT";
482 enum_map_eyes_t[(int)
EYES_RIGHT] =
"EYES_RIGHT";
483 enum_map_eyes_t[(int)
EYES_COOL] =
"EYES_COOL";
484 enum_map_eyes_t[(int)
EYES_CROSS] =
"EYES_CROSS";
485 enum_map_eyes_t[(int)
EYES_HEART] =
"EYES_HEART";
488 enum_map_jowl_t[(int)
JOWL_BLUSH] =
"JOWL_BLUSH";
489 enum_map_jowl_t[(int)
JOWL_TEARS] =
"JOWL_TEARS";
491 enum_map_mouth_t[(int)
MOUTH_OPEN] =
"MOUTH_OPEN";
492 enum_map_mouth_t[(int)
MOUTH_CLOSE] =
"MOUTH_CLOSE";
493 enum_map_mouth_t[(int)
MOUTH_SMILE] =
"MOUTH_SMILE";
494 enum_map_mouth_t[(int)
MOUTH_SCOWL] =
"MOUTH_SCOWL";
500 data_size =
sizeof(MoveEyesMessage_data_t);
503 data = (MoveEyesMessage_data_t *)
data_ptr;
506 enum_map_brows_t[(int)
BROWS_FROWN] =
"BROWS_FROWN";
507 enum_map_brows_t[(int)
BROWS_LIFT] =
"BROWS_LIFT";
509 enum_map_eyes_t[(int)
EYES_UP] =
"EYES_UP";
510 enum_map_eyes_t[(int)
EYES_DOWN] =
"EYES_DOWN";
511 enum_map_eyes_t[(int)
EYES_LEFT] =
"EYES_LEFT";
512 enum_map_eyes_t[(int)
EYES_RIGHT] =
"EYES_RIGHT";
513 enum_map_eyes_t[(int)
EYES_COOL] =
"EYES_COOL";
514 enum_map_eyes_t[(int)
EYES_CROSS] =
"EYES_CROSS";
515 enum_map_eyes_t[(int)
EYES_HEART] =
"EYES_HEART";
518 enum_map_jowl_t[(int)
JOWL_BLUSH] =
"JOWL_BLUSH";
519 enum_map_jowl_t[(int)
JOWL_TEARS] =
"JOWL_TEARS";
521 enum_map_mouth_t[(int)
MOUTH_OPEN] =
"MOUTH_OPEN";
522 enum_map_mouth_t[(int)
MOUTH_CLOSE] =
"MOUTH_CLOSE";
523 enum_map_mouth_t[(int)
MOUTH_SMILE] =
"MOUTH_SMILE";
524 enum_map_mouth_t[(int)
MOUTH_SCOWL] =
"MOUTH_SCOWL";
542 data = (MoveEyesMessage_data_t *)
data_ptr;
574 set_field(data->eyes_action, new_eyes_action);
599 data_size =
sizeof(MoveJowlMessage_data_t);
602 data = (MoveJowlMessage_data_t *)
data_ptr;
604 data->jowl_action = ini_jowl_action;
606 enum_map_brows_t[(int)
BROWS_FROWN] =
"BROWS_FROWN";
607 enum_map_brows_t[(int)
BROWS_LIFT] =
"BROWS_LIFT";
609 enum_map_eyes_t[(int)
EYES_UP] =
"EYES_UP";
610 enum_map_eyes_t[(int)
EYES_DOWN] =
"EYES_DOWN";
611 enum_map_eyes_t[(int)
EYES_LEFT] =
"EYES_LEFT";
612 enum_map_eyes_t[(int)
EYES_RIGHT] =
"EYES_RIGHT";
613 enum_map_eyes_t[(int)
EYES_COOL] =
"EYES_COOL";
614 enum_map_eyes_t[(int)
EYES_CROSS] =
"EYES_CROSS";
615 enum_map_eyes_t[(int)
EYES_HEART] =
"EYES_HEART";
618 enum_map_jowl_t[(int)
JOWL_BLUSH] =
"JOWL_BLUSH";
619 enum_map_jowl_t[(int)
JOWL_TEARS] =
"JOWL_TEARS";
621 enum_map_mouth_t[(int)
MOUTH_OPEN] =
"MOUTH_OPEN";
622 enum_map_mouth_t[(int)
MOUTH_CLOSE] =
"MOUTH_CLOSE";
623 enum_map_mouth_t[(int)
MOUTH_SMILE] =
"MOUTH_SMILE";
624 enum_map_mouth_t[(int)
MOUTH_SCOWL] =
"MOUTH_SCOWL";
630 data_size =
sizeof(MoveJowlMessage_data_t);
633 data = (MoveJowlMessage_data_t *)
data_ptr;
636 enum_map_brows_t[(int)
BROWS_FROWN] =
"BROWS_FROWN";
637 enum_map_brows_t[(int)
BROWS_LIFT] =
"BROWS_LIFT";
639 enum_map_eyes_t[(int)
EYES_UP] =
"EYES_UP";
640 enum_map_eyes_t[(int)
EYES_DOWN] =
"EYES_DOWN";
641 enum_map_eyes_t[(int)
EYES_LEFT] =
"EYES_LEFT";
642 enum_map_eyes_t[(int)
EYES_RIGHT] =
"EYES_RIGHT";
643 enum_map_eyes_t[(int)
EYES_COOL] =
"EYES_COOL";
644 enum_map_eyes_t[(int)
EYES_CROSS] =
"EYES_CROSS";
645 enum_map_eyes_t[(int)
EYES_HEART] =
"EYES_HEART";
648 enum_map_jowl_t[(int)
JOWL_BLUSH] =
"JOWL_BLUSH";
649 enum_map_jowl_t[(int)
JOWL_TEARS] =
"JOWL_TEARS";
651 enum_map_mouth_t[(int)
MOUTH_OPEN] =
"MOUTH_OPEN";
652 enum_map_mouth_t[(int)
MOUTH_CLOSE] =
"MOUTH_CLOSE";
653 enum_map_mouth_t[(int)
MOUTH_SMILE] =
"MOUTH_SMILE";
654 enum_map_mouth_t[(int)
MOUTH_SCOWL] =
"MOUTH_SCOWL";
672 data = (MoveJowlMessage_data_t *)
data_ptr;
704 set_field(data->jowl_action, new_jowl_action);
729 data_size =
sizeof(MoveMouthMessage_data_t);
732 data = (MoveMouthMessage_data_t *)
data_ptr;
734 data->mouth_action = ini_mouth_action;
736 enum_map_brows_t[(int)
BROWS_FROWN] =
"BROWS_FROWN";
737 enum_map_brows_t[(int)
BROWS_LIFT] =
"BROWS_LIFT";
739 enum_map_eyes_t[(int)
EYES_UP] =
"EYES_UP";
740 enum_map_eyes_t[(int)
EYES_DOWN] =
"EYES_DOWN";
741 enum_map_eyes_t[(int)
EYES_LEFT] =
"EYES_LEFT";
742 enum_map_eyes_t[(int)
EYES_RIGHT] =
"EYES_RIGHT";
743 enum_map_eyes_t[(int)
EYES_COOL] =
"EYES_COOL";
744 enum_map_eyes_t[(int)
EYES_CROSS] =
"EYES_CROSS";
745 enum_map_eyes_t[(int)
EYES_HEART] =
"EYES_HEART";
748 enum_map_jowl_t[(int)
JOWL_BLUSH] =
"JOWL_BLUSH";
749 enum_map_jowl_t[(int)
JOWL_TEARS] =
"JOWL_TEARS";
751 enum_map_mouth_t[(int)
MOUTH_OPEN] =
"MOUTH_OPEN";
752 enum_map_mouth_t[(int)
MOUTH_CLOSE] =
"MOUTH_CLOSE";
753 enum_map_mouth_t[(int)
MOUTH_SMILE] =
"MOUTH_SMILE";
754 enum_map_mouth_t[(int)
MOUTH_SCOWL] =
"MOUTH_SCOWL";
760 data_size =
sizeof(MoveMouthMessage_data_t);
763 data = (MoveMouthMessage_data_t *)
data_ptr;
766 enum_map_brows_t[(int)
BROWS_FROWN] =
"BROWS_FROWN";
767 enum_map_brows_t[(int)
BROWS_LIFT] =
"BROWS_LIFT";
769 enum_map_eyes_t[(int)
EYES_UP] =
"EYES_UP";
770 enum_map_eyes_t[(int)
EYES_DOWN] =
"EYES_DOWN";
771 enum_map_eyes_t[(int)
EYES_LEFT] =
"EYES_LEFT";
772 enum_map_eyes_t[(int)
EYES_RIGHT] =
"EYES_RIGHT";
773 enum_map_eyes_t[(int)
EYES_COOL] =
"EYES_COOL";
774 enum_map_eyes_t[(int)
EYES_CROSS] =
"EYES_CROSS";
775 enum_map_eyes_t[(int)
EYES_HEART] =
"EYES_HEART";
778 enum_map_jowl_t[(int)
JOWL_BLUSH] =
"JOWL_BLUSH";
779 enum_map_jowl_t[(int)
JOWL_TEARS] =
"JOWL_TEARS";
781 enum_map_mouth_t[(int)
MOUTH_OPEN] =
"MOUTH_OPEN";
782 enum_map_mouth_t[(int)
MOUTH_CLOSE] =
"MOUTH_CLOSE";
783 enum_map_mouth_t[(int)
MOUTH_SMILE] =
"MOUTH_SMILE";
784 enum_map_mouth_t[(int)
MOUTH_SCOWL] =
"MOUTH_SCOWL";
802 data = (MoveMouthMessage_data_t *)
data_ptr;
834 set_field(data->mouth_action, new_mouth_action);
MoveBrowsMessage Fawkes BlackBoard Interface Message.
virtual Message * clone() const
Clone this message.
size_t maxlenof_brows_action() const
Get maximum length of brows_action value.
MoveBrowsMessage()
Constructor.
brows_t brows_action() const
Get brows_action value.
void set_brows_action(const brows_t new_brows_action)
Set brows_action value.
~MoveBrowsMessage()
Destructor.
MoveEyesMessage Fawkes BlackBoard Interface Message.
virtual Message * clone() const
Clone this message.
eyes_t eyes_action() const
Get eyes_action value.
MoveEyesMessage()
Constructor.
void set_eyes_action(const eyes_t new_eyes_action)
Set eyes_action value.
~MoveEyesMessage()
Destructor.
size_t maxlenof_eyes_action() const
Get maximum length of eyes_action value.
MoveJowlMessage Fawkes BlackBoard Interface Message.
size_t maxlenof_jowl_action() const
Get maximum length of jowl_action value.
MoveJowlMessage()
Constructor.
virtual Message * clone() const
Clone this message.
void set_jowl_action(const jowl_t new_jowl_action)
Set jowl_action value.
jowl_t jowl_action() const
Get jowl_action value.
~MoveJowlMessage()
Destructor.
MoveMouthMessage Fawkes BlackBoard Interface Message.
mouth_t mouth_action() const
Get mouth_action value.
virtual Message * clone() const
Clone this message.
~MoveMouthMessage()
Destructor.
MoveMouthMessage()
Constructor.
size_t maxlenof_mouth_action() const
Get maximum length of mouth_action value.
void set_mouth_action(const mouth_t new_mouth_action)
Set mouth_action value.
FacialExpressionInterface Fawkes BlackBoard Interface.
jowl_t
Action types for moving jowl.
brows_t
Action types for moving brows.
eyes_t
Action types for moving eyes.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
mouth_t
Action types for moving mouth.
Base class for all Fawkes BlackBoard interfaces.
const char * type() const
Get type of interface.
void * data_ptr
Pointer to local memory storage.
void set_field(FieldT &field, DataT &data)
Set a field, set data_changed to true and update data_changed accordingly.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
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.
void * data_ptr
Pointer to memory that contains local data.
message_data_ts_t * data_ts
data timestamp aliasing pointer
unsigned int data_size
Size of memory needed to hold all data.
Fawkes library namespace.
@ IFT_ENUM
field with interface specific enum type
Timestamp data, must be present and first entries for each interface data structs!...