24 #include <interfaces/FacerInterface.h>
26 #include <core/exceptions/software.h>
50 FacerInterface::FacerInterface() : Interface()
52 data_size =
sizeof(FacerInterface_data_t);
54 data = (FacerInterface_data_t *)
data_ptr;
57 enum_map_if_facer_opmode_t[(int)OPMODE_DISABLED] =
"OPMODE_DISABLED";
58 enum_map_if_facer_opmode_t[(int)OPMODE_DETECTION] =
"OPMODE_DETECTION";
59 enum_map_if_facer_opmode_t[(int)OPMODE_RECOGNITION] =
"OPMODE_RECOGNITION";
60 enum_map_if_facer_opmode_t[(int)OPMODE_LEARNING] =
"OPMODE_LEARNING";
61 enum_map_if_facer_opmode_t[(int)OPMODE_GENDER] =
"OPMODE_GENDER";
62 add_fieldinfo(
IFT_ENUM,
"opmode", 1, &data->opmode,
"if_facer_opmode_t", &enum_map_if_facer_opmode_t);
88 unsigned char tmp_hash[] = {0x5d, 0xd, 0xac, 0xa1, 0xe1, 0x23, 0x82, 0xc4, 0x22, 0xed, 0x8b, 0xa7, 0x3e, 0x1f, 0x2d, 0x7c};
93 FacerInterface::~FacerInterface()
105 case OPMODE_DISABLED:
return "OPMODE_DISABLED";
106 case OPMODE_DETECTION:
return "OPMODE_DETECTION";
107 case OPMODE_RECOGNITION:
return "OPMODE_RECOGNITION";
108 case OPMODE_LEARNING:
return "OPMODE_LEARNING";
109 case OPMODE_GENDER:
return "OPMODE_GENDER";
110 default:
return "UNKNOWN";
145 data->opmode = new_opmode;
158 return data->num_identities;
180 data->num_identities = new_num_identities;
193 return data->recognized_identity;
215 data->recognized_identity = new_recognized_identity;
228 return data->recognized_name;
250 strncpy(data->recognized_name, new_recognized_name,
sizeof(data->recognized_name)-1);
251 data->recognized_name[
sizeof(data->recognized_name)-1] = 0;
264 return data->num_detections;
286 data->num_detections = new_num_detections;
299 return data->num_recognitions;
321 data->num_recognitions = new_num_recognitions;
334 return data->most_likely_identity;
356 data->most_likely_identity = new_most_likely_identity;
369 return data->most_likely_gender;
391 strncpy(data->most_likely_gender, new_most_likely_gender,
sizeof(data->most_likely_gender)-1);
392 data->most_likely_gender[
sizeof(data->most_likely_gender)-1] = 0;
406 return data->history_ratio;
429 data->history_ratio = new_history_ratio;
442 return data->sec_since_detection;
464 data->sec_since_detection = new_sec_since_detection;
478 return data->visibility_history;
501 data->visibility_history = new_visibility_history;
515 return data->learning_in_progress;
538 data->learning_in_progress = new_learning_in_progress;
553 return data->searching_person;
577 data->searching_person = new_searching_person;
590 return data->recording_progress;
612 data->recording_progress = new_recording_progress;
625 return data->bearing;
647 data->bearing = new_bearing;
682 data->slope = new_slope;
695 return data->requested_index;
717 data->requested_index = new_requested_index;
730 return data->requested_name;
752 strncpy(data->requested_name, new_requested_name,
sizeof(data->requested_name)-1);
753 data->requested_name[
sizeof(data->requested_name)-1] = 0;
766 return data->index_last_learned;
788 data->index_last_learned = new_index_last_learned;
796 if ( strncmp(
"LearnFaceMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
797 return new LearnFaceMessage();
798 }
else if ( strncmp(
"SetOpmodeMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
799 return new SetOpmodeMessage();
800 }
else if ( strncmp(
"EnableIdentityMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
801 return new EnableIdentityMessage();
802 }
else if ( strncmp(
"SetNameMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
803 return new SetNameMessage();
804 }
else if ( strncmp(
"GetNameMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
805 return new GetNameMessage();
806 }
else if ( strncmp(
"StartSearchPersonMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
807 return new StartSearchPersonMessage();
808 }
else if ( strncmp(
"StopSearchPersonMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
809 return new StopSearchPersonMessage();
811 throw UnknownTypeException(
"The given type '%s' does not match any known "
812 "message type for this interface type.",
type);
823 const FacerInterface *oi = dynamic_cast<const FacerInterface *>(other);
826 type(), other->type());
828 memcpy(data, oi->data,
sizeof(FacerInterface_data_t));
834 if (strcmp(enumtype,
"if_facer_opmode_t") == 0) {
835 return tostring_if_facer_opmode_t((if_facer_opmode_t)val);
853 data_size =
sizeof(LearnFaceMessage_data_t);
856 data = (LearnFaceMessage_data_t *)
data_ptr;
858 strncpy(data->name, ini_name, 64-1);
859 data->name[64-1] = 0;
864 enum_map_if_facer_opmode_t[(int)
OPMODE_GENDER] =
"OPMODE_GENDER";
870 data_size =
sizeof(LearnFaceMessage_data_t);
873 data = (LearnFaceMessage_data_t *)
data_ptr;
879 enum_map_if_facer_opmode_t[(int)
OPMODE_GENDER] =
"OPMODE_GENDER";
897 data = (LearnFaceMessage_data_t *)
data_ptr;
929 strncpy(data->name, new_name,
sizeof(data->name)-1);
930 data->name[
sizeof(data->name)-1] = 0;
955 data_size =
sizeof(SetOpmodeMessage_data_t);
958 data = (SetOpmodeMessage_data_t *)
data_ptr;
960 data->opmode = ini_opmode;
965 enum_map_if_facer_opmode_t[(int)
OPMODE_GENDER] =
"OPMODE_GENDER";
966 add_fieldinfo(
IFT_ENUM,
"opmode", 1, &data->opmode,
"if_facer_opmode_t", &enum_map_if_facer_opmode_t);
971 data_size =
sizeof(SetOpmodeMessage_data_t);
974 data = (SetOpmodeMessage_data_t *)
data_ptr;
980 enum_map_if_facer_opmode_t[(int)
OPMODE_GENDER] =
"OPMODE_GENDER";
981 add_fieldinfo(
IFT_ENUM,
"opmode", 1, &data->opmode,
"if_facer_opmode_t", &enum_map_if_facer_opmode_t);
998 data = (SetOpmodeMessage_data_t *)
data_ptr;
1034 data->opmode = new_opmode;
1060 data_size =
sizeof(EnableIdentityMessage_data_t);
1063 data = (EnableIdentityMessage_data_t *)
data_ptr;
1065 data->index = ini_index;
1066 data->enable = ini_enable;
1071 enum_map_if_facer_opmode_t[(int)
OPMODE_GENDER] =
"OPMODE_GENDER";
1078 data_size =
sizeof(EnableIdentityMessage_data_t);
1081 data = (EnableIdentityMessage_data_t *)
data_ptr;
1087 enum_map_if_facer_opmode_t[(int)
OPMODE_GENDER] =
"OPMODE_GENDER";
1106 data = (EnableIdentityMessage_data_t *)
data_ptr;
1138 data->index = new_index;
1148 return data->enable;
1168 data->enable = new_enable;
1194 data_size =
sizeof(SetNameMessage_data_t);
1197 data = (SetNameMessage_data_t *)
data_ptr;
1199 data->index = ini_index;
1200 strncpy(data->name, ini_name, 64-1);
1201 data->name[64-1] = 0;
1206 enum_map_if_facer_opmode_t[(int)
OPMODE_GENDER] =
"OPMODE_GENDER";
1213 data_size =
sizeof(SetNameMessage_data_t);
1216 data = (SetNameMessage_data_t *)
data_ptr;
1222 enum_map_if_facer_opmode_t[(int)
OPMODE_GENDER] =
"OPMODE_GENDER";
1241 data = (SetNameMessage_data_t *)
data_ptr;
1273 data->index = new_index;
1303 strncpy(data->name, new_name,
sizeof(data->name)-1);
1304 data->name[
sizeof(data->name)-1] = 0;
1329 data_size =
sizeof(GetNameMessage_data_t);
1332 data = (GetNameMessage_data_t *)
data_ptr;
1334 data->index = ini_index;
1339 enum_map_if_facer_opmode_t[(int)
OPMODE_GENDER] =
"OPMODE_GENDER";
1345 data_size =
sizeof(GetNameMessage_data_t);
1348 data = (GetNameMessage_data_t *)
data_ptr;
1354 enum_map_if_facer_opmode_t[(int)
OPMODE_GENDER] =
"OPMODE_GENDER";
1372 data = (GetNameMessage_data_t *)
data_ptr;
1404 data->index = new_index;
1429 data_size =
sizeof(StartSearchPersonMessage_data_t);
1432 data = (StartSearchPersonMessage_data_t *)
data_ptr;
1434 data->index = ini_index;
1439 enum_map_if_facer_opmode_t[(int)
OPMODE_GENDER] =
"OPMODE_GENDER";
1445 data_size =
sizeof(StartSearchPersonMessage_data_t);
1448 data = (StartSearchPersonMessage_data_t *)
data_ptr;
1454 enum_map_if_facer_opmode_t[(int)
OPMODE_GENDER] =
"OPMODE_GENDER";
1472 data = (StartSearchPersonMessage_data_t *)
data_ptr;
1504 data->index = new_index;
1527 data_size =
sizeof(StopSearchPersonMessage_data_t);
1530 data = (StopSearchPersonMessage_data_t *)
data_ptr;
1536 enum_map_if_facer_opmode_t[(int)
OPMODE_GENDER] =
"OPMODE_GENDER";
1553 data = (StopSearchPersonMessage_data_t *)
data_ptr;
1575 const LearnFaceMessage *m0 = dynamic_cast<const LearnFaceMessage *>(message);
1579 const SetOpmodeMessage *m1 = dynamic_cast<const SetOpmodeMessage *>(message);
1583 const EnableIdentityMessage *m2 = dynamic_cast<const EnableIdentityMessage *>(message);
1587 const SetNameMessage *m3 = dynamic_cast<const SetNameMessage *>(message);
1591 const GetNameMessage *m4 = dynamic_cast<const GetNameMessage *>(message);
1595 const StartSearchPersonMessage *m5 = dynamic_cast<const StartSearchPersonMessage *>(message);
1599 const StopSearchPersonMessage *m6 = dynamic_cast<const StopSearchPersonMessage *>(message);
1607 EXPORT_INTERFACE(FacerInterface)