24 #include <interfaces/SkillerInterface.h>
26 #include <core/exceptions/software.h>
49 SkillerInterface::SkillerInterface() : Interface()
51 data_size =
sizeof(SkillerInterface_data_t);
52 data_ptr = malloc(data_size);
53 data = (SkillerInterface_data_t *)data_ptr;
54 data_ts = (interface_data_ts_t *)data_ptr;
55 memset(data_ptr, 0, data_size);
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";
60 add_fieldinfo(IFT_STRING,
"skill_string", 1024, data->skill_string);
61 add_fieldinfo(IFT_STRING,
"error", 128, data->error);
62 add_fieldinfo(IFT_UINT32,
"exclusive_controller", 1, &data->exclusive_controller);
63 add_fieldinfo(IFT_UINT32,
"msgid", 1, &data->msgid);
64 add_fieldinfo(IFT_ENUM,
"status", 1, &data->status,
"SkillStatusEnum", &enum_map_SkillStatusEnum);
65 add_messageinfo(
"ExecSkillMessage");
66 add_messageinfo(
"RestartInterpreterMessage");
67 add_messageinfo(
"StopExecMessage");
68 add_messageinfo(
"AcquireControlMessage");
69 add_messageinfo(
"ReleaseControlMessage");
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";
103 SkillerInterface::skill_string()
const
105 return data->skill_string;
113 SkillerInterface::maxlenof_skill_string()
const
126 SkillerInterface::set_skill_string(
const char * new_skill_string)
128 data_changed |=
change_field(data->skill_string, new_skill_string);
138 SkillerInterface::error()
const
148 SkillerInterface::maxlenof_error()
const
160 SkillerInterface::set_error(
const char * new_error)
174 SkillerInterface::exclusive_controller()
const
176 return data->exclusive_controller;
184 SkillerInterface::maxlenof_exclusive_controller()
const
198 SkillerInterface::set_exclusive_controller(
const uint32_t new_exclusive_controller)
200 data_changed |=
change_field(data->exclusive_controller, new_exclusive_controller);
211 SkillerInterface::msgid()
const
221 SkillerInterface::maxlenof_msgid()
const
234 SkillerInterface::set_msgid(
const uint32_t new_msgid)
246 SkillerInterface::status()
const
256 SkillerInterface::maxlenof_status()
const
275 SkillerInterface::create_message(
const char *type)
const
277 if ( strncmp(
"ExecSkillMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
279 }
else if ( strncmp(
"RestartInterpreterMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
281 }
else if ( strncmp(
"StopExecMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
283 }
else if ( strncmp(
"AcquireControlMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
285 }
else if ( strncmp(
"ReleaseControlMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
289 "message type for this interface type.", type);
303 type(), other->
type());
305 memcpy(data, oi->data,
sizeof(SkillerInterface_data_t));
309 SkillerInterface::enum_tostring(
const char *enumtype,
int val)
const
311 if (strcmp(enumtype,
"SkillStatusEnum") == 0) {
328 SkillerInterface::ExecSkillMessage::ExecSkillMessage(
const char * ini_skill_string) :
Message(
"ExecSkillMessage")
330 data_size =
sizeof(ExecSkillMessage_data_t);
333 data = (ExecSkillMessage_data_t *)
data_ptr;
335 strncpy(data->skill_string, ini_skill_string, 1024-1);
336 data->skill_string[1024-1] = 0;
337 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
338 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
339 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
340 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
346 data_size =
sizeof(ExecSkillMessage_data_t);
349 data = (ExecSkillMessage_data_t *)
data_ptr;
351 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
352 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
353 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
354 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
372 data = (ExecSkillMessage_data_t *)
data_ptr;
387 return data->skill_string;
433 data_size =
sizeof(RestartInterpreterMessage_data_t);
436 data = (RestartInterpreterMessage_data_t *)
data_ptr;
438 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
439 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
440 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
441 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
458 data = (RestartInterpreterMessage_data_t *)
data_ptr;
483 data_size =
sizeof(StopExecMessage_data_t);
486 data = (StopExecMessage_data_t *)
data_ptr;
488 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
489 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
490 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
491 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
508 data = (StopExecMessage_data_t *)
data_ptr;
535 data_size =
sizeof(AcquireControlMessage_data_t);
538 data = (AcquireControlMessage_data_t *)
data_ptr;
540 data->steal_control = ini_steal_control;
541 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
542 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
543 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
544 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
550 data_size =
sizeof(AcquireControlMessage_data_t);
553 data = (AcquireControlMessage_data_t *)
data_ptr;
555 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
556 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
557 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
558 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
576 data = (AcquireControlMessage_data_t *)
data_ptr;
593 return data->steal_control;
641 data_size =
sizeof(ReleaseControlMessage_data_t);
644 data = (ReleaseControlMessage_data_t *)
data_ptr;
646 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
647 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
648 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
649 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
666 data = (ReleaseControlMessage_data_t *)
data_ptr;
Base class for all Fawkes BlackBoard interfaces.
const char * type() const
Get type of interface.
void * data_ptr
Pointer to local memory storage.
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.
AcquireControlMessage Fawkes BlackBoard Interface Message.
bool is_steal_control() const
Get steal_control value.
AcquireControlMessage()
Constructor.
void set_steal_control(const bool new_steal_control)
Set steal_control value.
size_t maxlenof_steal_control() const
Get maximum length of steal_control value.
virtual Message * clone() const
Clone this message.
~AcquireControlMessage()
Destructor.
ExecSkillMessage Fawkes BlackBoard Interface Message.
virtual Message * clone() const
Clone this message.
~ExecSkillMessage()
Destructor.
size_t maxlenof_skill_string() const
Get maximum length of skill_string value.
ExecSkillMessage()
Constructor.
char * skill_string() const
Get skill_string value.
void set_skill_string(const char *new_skill_string)
Set skill_string value.
ReleaseControlMessage Fawkes BlackBoard Interface Message.
~ReleaseControlMessage()
Destructor.
ReleaseControlMessage()
Constructor.
virtual Message * clone() const
Clone this message.
RestartInterpreterMessage Fawkes BlackBoard Interface Message.
~RestartInterpreterMessage()
Destructor.
RestartInterpreterMessage()
Constructor.
virtual Message * clone() const
Clone this message.
StopExecMessage Fawkes BlackBoard Interface Message.
StopExecMessage()
Constructor.
virtual Message * clone() const
Clone this message.
~StopExecMessage()
Destructor.
SkillerInterface Fawkes BlackBoard Interface.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
SkillStatusEnum
This determines the current status of skill execution.
@ S_INACTIVE
No skill is running.
@ S_RUNNING
The execution is still running.
@ S_FAILED
The execution failed and cannot succeed anymore.
@ S_FINAL
The skill string has been successfully processed.
Fawkes library namespace.
bool change_field(FieldT &field, const DataT &value)
Set a field and return whether it changed.
Timestamp data, must be present and first entries for each interface data structs!...