24#include <interfaces/SkillerInterface.h>
26#include <core/exceptions/software.h>
49SkillerInterface::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_STRING,
"exclusive_controller", 37, 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[] = {0xe, 00, 0x50, 0xea, 0xd0, 0x19, 0x76, 0xd1, 0x45, 0xc7, 0xd, 0xde, 0xff, 0x5b, 0x10, 0xa6};
75SkillerInterface::~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";
103SkillerInterface::skill_string()
const
105 return data->skill_string;
113SkillerInterface::maxlenof_skill_string()
const
126SkillerInterface::set_skill_string(
const char * new_skill_string)
128 set_field(data->skill_string, new_skill_string);
138SkillerInterface::error()
const
148SkillerInterface::maxlenof_error()
const
160SkillerInterface::set_error(
const char * new_error)
162 set_field(data->error, new_error);
175SkillerInterface::exclusive_controller()
const
177 return data->exclusive_controller;
185SkillerInterface::maxlenof_exclusive_controller()
const
200SkillerInterface::set_exclusive_controller(
const char * new_exclusive_controller)
202 set_field(data->exclusive_controller, new_exclusive_controller);
213SkillerInterface::msgid()
const
223SkillerInterface::maxlenof_msgid()
const
236SkillerInterface::set_msgid(
const uint32_t new_msgid)
238 set_field(data->msgid, new_msgid);
248SkillerInterface::status()
const
258SkillerInterface::maxlenof_status()
const
272 set_field(data->status, new_status);
277SkillerInterface::create_message(
const char *type)
const
279 if ( strncmp(
"ExecSkillMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
281 }
else if ( strncmp(
"RestartInterpreterMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
283 }
else if ( strncmp(
"StopExecMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
285 }
else if ( strncmp(
"AcquireControlMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
287 }
else if ( strncmp(
"ReleaseControlMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
291 "message type for this interface type.", type);
305 type(), other->
type());
307 memcpy(data, oi->data,
sizeof(SkillerInterface_data_t));
311SkillerInterface::enum_tostring(
const char *enumtype,
int val)
const
313 if (strcmp(enumtype,
"SkillStatusEnum") == 0) {
330SkillerInterface::ExecSkillMessage::ExecSkillMessage(
const char * ini_skill_string) :
Message(
"ExecSkillMessage")
332 data_size =
sizeof(ExecSkillMessage_data_t);
335 data = (ExecSkillMessage_data_t *)
data_ptr;
337 strncpy(data->skill_string, ini_skill_string, 1024-1);
338 data->skill_string[1024-1] = 0;
339 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
340 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
341 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
342 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
348 data_size =
sizeof(ExecSkillMessage_data_t);
351 data = (ExecSkillMessage_data_t *)
data_ptr;
353 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
354 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
355 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
356 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
374 data = (ExecSkillMessage_data_t *)
data_ptr;
389 return data->skill_string;
412 set_field(data->skill_string, new_skill_string);
435 data_size =
sizeof(RestartInterpreterMessage_data_t);
438 data = (RestartInterpreterMessage_data_t *)
data_ptr;
440 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
441 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
442 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
443 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
460 data = (RestartInterpreterMessage_data_t *)
data_ptr;
485 data_size =
sizeof(StopExecMessage_data_t);
488 data = (StopExecMessage_data_t *)
data_ptr;
490 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
491 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
492 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
493 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
510 data = (StopExecMessage_data_t *)
data_ptr;
537 data_size =
sizeof(AcquireControlMessage_data_t);
540 data = (AcquireControlMessage_data_t *)
data_ptr;
542 data->steal_control = ini_steal_control;
543 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
544 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
545 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
546 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
552 data_size =
sizeof(AcquireControlMessage_data_t);
555 data = (AcquireControlMessage_data_t *)
data_ptr;
557 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
558 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
559 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
560 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
578 data = (AcquireControlMessage_data_t *)
data_ptr;
595 return data->steal_control;
620 set_field(data->steal_control, new_steal_control);
643 data_size =
sizeof(ReleaseControlMessage_data_t);
646 data = (ReleaseControlMessage_data_t *)
data_ptr;
648 enum_map_SkillStatusEnum[(int)
S_INACTIVE] =
"S_INACTIVE";
649 enum_map_SkillStatusEnum[(int)
S_FINAL] =
"S_FINAL";
650 enum_map_SkillStatusEnum[(int)
S_RUNNING] =
"S_RUNNING";
651 enum_map_SkillStatusEnum[(int)
S_FAILED] =
"S_FAILED";
668 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.
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.
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.
Timestamp data, must be present and first entries for each interface data structs!...