24 #include <interfaces/SkillerInterface.h>
26 #include <core/exceptions/software.h>
49 SkillerInterface::SkillerInterface() : Interface()
51 data_size =
sizeof(SkillerInterface_data_t);
53 data = (SkillerInterface_data_t *)
data_ptr;
56 enum_map_SkillStatusEnum[(int)S_INACTIVE] =
"S_INACTIVE";
57 enum_map_SkillStatusEnum[(int)S_FINAL] =
"S_FINAL";
58 enum_map_SkillStatusEnum[(int)S_RUNNING] =
"S_RUNNING";
59 enum_map_SkillStatusEnum[(int)S_FAILED] =
"S_FAILED";
70 unsigned char tmp_hash[] = {0x99, 0x14, 0xe6, 0x2b, 0x7f, 0x3b, 0x80, 0xb, 0xbd, 0x35, 0x10, 0xc0, 0x7e, 0xb5, 0xdc, 0x55};
75 SkillerInterface::~SkillerInterface()
87 case S_INACTIVE:
return "S_INACTIVE";
88 case S_FINAL:
return "S_FINAL";
89 case S_RUNNING:
return "S_RUNNING";
90 case S_FAILED:
return "S_FAILED";
91 default:
return "UNKNOWN";
105 return data->skill_string;
128 strncpy(data->skill_string, new_skill_string,
sizeof(data->skill_string)-1);
129 data->skill_string[
sizeof(data->skill_string)-1] = 0;
164 strncpy(data->error, new_error,
sizeof(data->error)-1);
165 data->error[
sizeof(data->error)-1] = 0;
180 return data->exclusive_controller;
204 data->exclusive_controller = new_exclusive_controller;
241 data->msgid = new_msgid;
276 data->status = new_status;
284 if ( strncmp(
"ExecSkillMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
286 }
else if ( strncmp(
"RestartInterpreterMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
288 }
else if ( strncmp(
"StopExecMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
289 return new StopExecMessage();
290 }
else if ( strncmp(
"AcquireControlMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
291 return new AcquireControlMessage();
292 }
else if ( strncmp(
"ReleaseControlMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
293 return new ReleaseControlMessage();
295 throw UnknownTypeException(
"The given type '%s' does not match any known "
296 "message type for this interface type.",
type);
307 const SkillerInterface *oi =
dynamic_cast<const SkillerInterface *
>(other);
309 throw TypeMismatchException(
"Can only copy values from interface of same type (%s vs. %s)",
310 type(), other->type());
312 memcpy(data, oi->data,
sizeof(SkillerInterface_data_t));
318 if (strcmp(enumtype,
"SkillStatusEnum") == 0) {
319 return tostring_SkillStatusEnum((SkillStatusEnum)val);
321 throw UnknownTypeException(
"Unknown enum type %s", enumtype);
337 data_size =
sizeof(ExecSkillMessage_data_t);
340 data = (ExecSkillMessage_data_t *)
data_ptr;
342 strncpy(data->skill_string, ini_skill_string, 1024-1);
343 data->skill_string[1024-1] = 0;
344 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
345 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
346 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
347 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
353 data_size =
sizeof(ExecSkillMessage_data_t);
356 data = (ExecSkillMessage_data_t *)
data_ptr;
358 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
359 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
360 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
361 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
379 data = (ExecSkillMessage_data_t *)
data_ptr;
394 return data->skill_string;
417 strncpy(data->skill_string, new_skill_string,
sizeof(data->skill_string)-1);
418 data->skill_string[
sizeof(data->skill_string)-1] = 0;
441 data_size =
sizeof(RestartInterpreterMessage_data_t);
444 data = (RestartInterpreterMessage_data_t *)
data_ptr;
446 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
447 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
448 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
449 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
466 data = (RestartInterpreterMessage_data_t *)
data_ptr;
491 data_size =
sizeof(StopExecMessage_data_t);
494 data = (StopExecMessage_data_t *)
data_ptr;
496 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
497 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
498 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
499 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
516 data = (StopExecMessage_data_t *)
data_ptr;
543 data_size =
sizeof(AcquireControlMessage_data_t);
546 data = (AcquireControlMessage_data_t *)
data_ptr;
548 data->steal_control = ini_steal_control;
549 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
550 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
551 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
552 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
558 data_size =
sizeof(AcquireControlMessage_data_t);
561 data = (AcquireControlMessage_data_t *)
data_ptr;
563 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
564 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
565 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
566 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
584 data = (AcquireControlMessage_data_t *)
data_ptr;
601 return data->steal_control;
626 data->steal_control = new_steal_control;
649 data_size =
sizeof(ReleaseControlMessage_data_t);
652 data = (ReleaseControlMessage_data_t *)
data_ptr;
654 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
655 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
656 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
657 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
674 data = (ReleaseControlMessage_data_t *)
data_ptr;
704 const StopExecMessage *m2 =
dynamic_cast<const StopExecMessage *
>(message);
708 const AcquireControlMessage *m3 =
dynamic_cast<const AcquireControlMessage *
>(message);
712 const ReleaseControlMessage *m4 =
dynamic_cast<const ReleaseControlMessage *
>(message);
720 EXPORT_INTERFACE(SkillerInterface)