24 #include <interfaces/TestInterface.h>
26 #include <core/exceptions/software.h>
49 TestInterface::TestInterface() : Interface()
51 data_size =
sizeof(TestInterface_data_t);
52 data_ptr = malloc(data_size);
53 data = (TestInterface_data_t *)data_ptr;
54 data_ts = (interface_data_ts_t *)data_ptr;
55 memset(data_ptr, 0, data_size);
56 enum_map_TestEnum[(int)TEST_ENUM_1] =
"TEST_ENUM_1";
57 enum_map_TestEnum[(int)TEST_ENUM_2] =
"TEST_ENUM_2";
58 add_fieldinfo(IFT_BOOL,
"test_bool", 1, &data->test_bool);
59 add_fieldinfo(IFT_INT32,
"test_int", 1, &data->test_int);
60 add_fieldinfo(IFT_BYTE,
"flags", 1, &data->flags);
61 add_fieldinfo(IFT_STRING,
"test_string", 30, data->test_string);
62 add_fieldinfo(IFT_INT32,
"result", 1, &data->result);
63 add_fieldinfo(IFT_UINT32,
"test_uint", 1, &data->test_uint);
64 add_messageinfo(
"SetTestIntMessage");
65 add_messageinfo(
"SetTestStringMessage");
66 add_messageinfo(
"CalculateMessage");
67 unsigned char tmp_hash[] = {0xe4, 0xe2, 0x1, 0xa9, 0xc8, 0x87, 0x8d, 0x3d, 0xa3, 0xab, 0xc9, 0xcd, 0xf3, 0xf, 0x5a, 0x33};
72 TestInterface::~TestInterface()
81 TestInterface::tostring_TestEnum(
TestEnum value)
const
84 case TEST_ENUM_1:
return "TEST_ENUM_1";
85 case TEST_ENUM_2:
return "TEST_ENUM_2";
86 default:
return "UNKNOWN";
95 TestInterface::is_test_bool()
const
97 return data->test_bool;
105 TestInterface::maxlenof_test_bool()
const
115 TestInterface::set_test_bool(
const bool new_test_bool)
117 set_field(data->test_bool, new_test_bool);
125 TestInterface::test_int()
const
127 return data->test_int;
135 TestInterface::maxlenof_test_int()
const
145 TestInterface::set_test_int(
const int32_t new_test_int)
147 set_field(data->test_int, new_test_int);
155 TestInterface::flags()
const
165 TestInterface::maxlenof_flags()
const
175 TestInterface::set_flags(
const uint8_t new_flags)
177 set_field(data->flags, new_flags);
185 TestInterface::test_string()
const
187 return data->test_string;
195 TestInterface::maxlenof_test_string()
const
205 TestInterface::set_test_string(
const char * new_test_string)
207 set_field(data->test_string, new_test_string);
215 TestInterface::result()
const
225 TestInterface::maxlenof_result()
const
235 TestInterface::set_result(
const int32_t new_result)
237 set_field(data->result, new_result);
245 TestInterface::test_uint()
const
247 return data->test_uint;
255 TestInterface::maxlenof_test_uint()
const
265 TestInterface::set_test_uint(
const uint32_t new_test_uint)
267 set_field(data->test_uint, new_test_uint);
272 TestInterface::create_message(
const char *type)
const
274 if ( strncmp(
"SetTestIntMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
276 }
else if ( strncmp(
"SetTestStringMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
278 }
else if ( strncmp(
"CalculateMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
282 "message type for this interface type.", type);
296 type(), other->
type());
298 memcpy(data, oi->data,
sizeof(TestInterface_data_t));
302 TestInterface::enum_tostring(
const char *enumtype,
int val)
const
304 if (strcmp(enumtype,
"TestEnum") == 0) {
305 return tostring_TestEnum((
TestEnum)val);
321 TestInterface::SetTestIntMessage::SetTestIntMessage(
const int32_t ini_test_int) :
Message(
"SetTestIntMessage")
323 data_size =
sizeof(SetTestIntMessage_data_t);
326 data = (SetTestIntMessage_data_t *)
data_ptr;
328 data->test_int = ini_test_int;
329 enum_map_TestEnum[(int)
TEST_ENUM_1] =
"TEST_ENUM_1";
330 enum_map_TestEnum[(int)
TEST_ENUM_2] =
"TEST_ENUM_2";
336 data_size =
sizeof(SetTestIntMessage_data_t);
339 data = (SetTestIntMessage_data_t *)
data_ptr;
341 enum_map_TestEnum[(int)
TEST_ENUM_1] =
"TEST_ENUM_1";
342 enum_map_TestEnum[(int)
TEST_ENUM_2] =
"TEST_ENUM_2";
360 data = (SetTestIntMessage_data_t *)
data_ptr;
372 return data->test_int;
417 data_size =
sizeof(SetTestStringMessage_data_t);
420 data = (SetTestStringMessage_data_t *)
data_ptr;
422 strncpy(data->test_string, ini_test_string, 30-1);
423 data->test_string[30-1] = 0;
424 enum_map_TestEnum[(int)
TEST_ENUM_1] =
"TEST_ENUM_1";
425 enum_map_TestEnum[(int)
TEST_ENUM_2] =
"TEST_ENUM_2";
431 data_size =
sizeof(SetTestStringMessage_data_t);
434 data = (SetTestStringMessage_data_t *)
data_ptr;
436 enum_map_TestEnum[(int)
TEST_ENUM_1] =
"TEST_ENUM_1";
437 enum_map_TestEnum[(int)
TEST_ENUM_2] =
"TEST_ENUM_2";
455 data = (SetTestStringMessage_data_t *)
data_ptr;
467 return data->test_string;
487 set_field(data->test_string, new_test_string);
513 data_size =
sizeof(CalculateMessage_data_t);
516 data = (CalculateMessage_data_t *)
data_ptr;
518 data->summand = ini_summand;
519 data->addend = ini_addend;
520 enum_map_TestEnum[(int)
TEST_ENUM_1] =
"TEST_ENUM_1";
521 enum_map_TestEnum[(int)
TEST_ENUM_2] =
"TEST_ENUM_2";
528 data_size =
sizeof(CalculateMessage_data_t);
531 data = (CalculateMessage_data_t *)
data_ptr;
533 enum_map_TestEnum[(int)
TEST_ENUM_1] =
"TEST_ENUM_1";
534 enum_map_TestEnum[(int)
TEST_ENUM_2] =
"TEST_ENUM_2";
553 data = (CalculateMessage_data_t *)
data_ptr;
565 return data->summand;
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.
CalculateMessage Fawkes BlackBoard Interface Message.
int32_t summand() const
Get summand value.
void set_addend(const int32_t new_addend)
Set addend value.
CalculateMessage()
Constructor.
size_t maxlenof_addend() const
Get maximum length of addend value.
~CalculateMessage()
Destructor.
void set_summand(const int32_t new_summand)
Set summand value.
size_t maxlenof_summand() const
Get maximum length of summand value.
int32_t addend() const
Get addend value.
virtual Message * clone() const
Clone this message.
SetTestIntMessage Fawkes BlackBoard Interface Message.
size_t maxlenof_test_int() const
Get maximum length of test_int value.
SetTestIntMessage()
Constructor.
~SetTestIntMessage()
Destructor.
virtual Message * clone() const
Clone this message.
int32_t test_int() const
Get test_int value.
void set_test_int(const int32_t new_test_int)
Set test_int value.
SetTestStringMessage Fawkes BlackBoard Interface Message.
void set_test_string(const char *new_test_string)
Set test_string value.
virtual Message * clone() const
Clone this message.
char * test_string() const
Get test_string value.
SetTestStringMessage()
Constructor.
size_t maxlenof_test_string() const
Get maximum length of test_string value.
~SetTestStringMessage()
Destructor.
TestInterface Fawkes BlackBoard Interface.
static const float TEST_FLOAT_CONSTANT
TEST_FLOAT_CONSTANT constant.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
static const int32_t TEST_CONSTANT
TEST_CONSTANT constant.
TestEnum
Demonstrating enums.
Fawkes library namespace.
@ IFT_INT32
32 bit integer field
Timestamp data, must be present and first entries for each interface data structs!...