24 #include <interfaces/GameStateInterface.h> 26 #include <core/exceptions/software.h> 78 GameStateInterface::GameStateInterface() : Interface()
80 data_size =
sizeof(GameStateInterface_data_t);
82 data = (GameStateInterface_data_t *)
data_ptr;
85 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
86 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
87 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
88 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
89 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
90 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
91 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
92 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
93 enum_map_if_gamestate_role_t[(int)ROLE_GOALIE] =
"ROLE_GOALIE";
94 enum_map_if_gamestate_role_t[(int)ROLE_DEFENDER] =
"ROLE_DEFENDER";
95 enum_map_if_gamestate_role_t[(int)ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
96 enum_map_if_gamestate_role_t[(int)ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
97 enum_map_if_gamestate_role_t[(int)ROLE_ATTACKER] =
"ROLE_ATTACKER";
99 add_fieldinfo(
IFT_ENUM,
"state_team", 1, &data->state_team,
"if_gamestate_team_t", &enum_map_if_gamestate_team_t);
100 add_fieldinfo(
IFT_ENUM,
"our_team", 1, &data->our_team,
"if_gamestate_team_t", &enum_map_if_gamestate_team_t);
101 add_fieldinfo(
IFT_ENUM,
"our_goal_color", 1, &data->our_goal_color,
"if_gamestate_goalcolor_t", &enum_map_if_gamestate_goalcolor_t);
102 add_fieldinfo(
IFT_ENUM,
"half", 1, &data->half,
"if_gamestate_half_t", &enum_map_if_gamestate_half_t);
104 add_fieldinfo(
IFT_ENUM,
"role", 1, &data->role,
"if_gamestate_role_t", &enum_map_if_gamestate_role_t);
110 unsigned char tmp_hash[] = {0xf5, 0x19, 0x26, 0x77, 0x6, 0x54, 0x44, 0xb4, 0xe1, 0x61, 0x40, 0x2a, 0x65, 0xfc, 0xaf, 0xa1};
115 GameStateInterface::~GameStateInterface()
131 default:
return "UNKNOWN";
144 default:
return "UNKNOWN";
157 default:
return "UNKNOWN";
168 case ROLE_GOALIE:
return "ROLE_GOALIE";
169 case ROLE_DEFENDER:
return "ROLE_DEFENDER";
170 case ROLE_MID_LEFT:
return "ROLE_MID_LEFT";
171 case ROLE_MID_RIGHT:
return "ROLE_MID_RIGHT";
172 case ROLE_ATTACKER:
return "ROLE_ATTACKER";
173 default:
return "UNKNOWN";
184 return data->game_state;
204 data->game_state = new_game_state;
235 data->state_team = new_state_team;
266 data->our_team = new_our_team;
297 data->our_goal_color = new_our_goal_color;
328 data->half = new_half;
339 return data->kickoff;
359 data->kickoff = new_kickoff;
390 data->role = new_role;
401 return data->score_cyan;
421 data->score_cyan = new_score_cyan;
432 return data->score_magenta;
452 data->score_magenta = new_score_magenta;
460 if ( strncmp(
"SetTeamColorMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
462 }
else if ( strncmp(
"SetKickoffMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
464 }
else if ( strncmp(
"SetStateTeamMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
468 "message type for this interface type.", type);
484 memcpy(data, oi->data,
sizeof(GameStateInterface_data_t));
490 if (strcmp(enumtype,
"if_gamestate_team_t") == 0) {
493 if (strcmp(enumtype,
"if_gamestate_goalcolor_t") == 0) {
496 if (strcmp(enumtype,
"if_gamestate_half_t") == 0) {
499 if (strcmp(enumtype,
"if_gamestate_role_t") == 0) {
518 data_size =
sizeof(SetTeamColorMessage_data_t);
521 data = (SetTeamColorMessage_data_t *)
data_ptr;
523 data->our_team = ini_our_team;
524 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
525 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
526 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
527 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
528 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
529 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
530 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
531 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
532 enum_map_if_gamestate_role_t[(int)
ROLE_GOALIE] =
"ROLE_GOALIE";
533 enum_map_if_gamestate_role_t[(int)
ROLE_DEFENDER] =
"ROLE_DEFENDER";
534 enum_map_if_gamestate_role_t[(int)
ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
535 enum_map_if_gamestate_role_t[(int)
ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
536 enum_map_if_gamestate_role_t[(int)
ROLE_ATTACKER] =
"ROLE_ATTACKER";
537 add_fieldinfo(
IFT_ENUM,
"our_team", 1, &data->our_team,
"if_gamestate_team_t", &enum_map_if_gamestate_team_t);
542 data_size =
sizeof(SetTeamColorMessage_data_t);
545 data = (SetTeamColorMessage_data_t *)
data_ptr;
547 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
548 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
549 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
550 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
551 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
552 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
553 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
554 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
555 enum_map_if_gamestate_role_t[(int)
ROLE_GOALIE] =
"ROLE_GOALIE";
556 enum_map_if_gamestate_role_t[(int)
ROLE_DEFENDER] =
"ROLE_DEFENDER";
557 enum_map_if_gamestate_role_t[(int)
ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
558 enum_map_if_gamestate_role_t[(int)
ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
559 enum_map_if_gamestate_role_t[(int)
ROLE_ATTACKER] =
"ROLE_ATTACKER";
560 add_fieldinfo(
IFT_ENUM,
"our_team", 1, &data->our_team,
"if_gamestate_team_t", &enum_map_if_gamestate_team_t);
577 data = (SetTeamColorMessage_data_t *)
data_ptr;
609 data->our_team = new_our_team;
634 data_size =
sizeof(SetKickoffMessage_data_t);
637 data = (SetKickoffMessage_data_t *)
data_ptr;
639 data->kickoff = ini_kickoff;
640 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
641 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
642 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
643 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
644 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
645 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
646 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
647 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
648 enum_map_if_gamestate_role_t[(int)
ROLE_GOALIE] =
"ROLE_GOALIE";
649 enum_map_if_gamestate_role_t[(int)
ROLE_DEFENDER] =
"ROLE_DEFENDER";
650 enum_map_if_gamestate_role_t[(int)
ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
651 enum_map_if_gamestate_role_t[(int)
ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
652 enum_map_if_gamestate_role_t[(int)
ROLE_ATTACKER] =
"ROLE_ATTACKER";
658 data_size =
sizeof(SetKickoffMessage_data_t);
661 data = (SetKickoffMessage_data_t *)
data_ptr;
663 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
664 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
665 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
666 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
667 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
668 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
669 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
670 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
671 enum_map_if_gamestate_role_t[(int)
ROLE_GOALIE] =
"ROLE_GOALIE";
672 enum_map_if_gamestate_role_t[(int)
ROLE_DEFENDER] =
"ROLE_DEFENDER";
673 enum_map_if_gamestate_role_t[(int)
ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
674 enum_map_if_gamestate_role_t[(int)
ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
675 enum_map_if_gamestate_role_t[(int)
ROLE_ATTACKER] =
"ROLE_ATTACKER";
693 data = (SetKickoffMessage_data_t *)
data_ptr;
705 return data->kickoff;
725 data->kickoff = new_kickoff;
750 data_size =
sizeof(SetStateTeamMessage_data_t);
753 data = (SetStateTeamMessage_data_t *)
data_ptr;
755 data->state_team = ini_state_team;
756 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
757 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
758 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
759 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
760 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
761 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
762 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
763 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
764 enum_map_if_gamestate_role_t[(int)
ROLE_GOALIE] =
"ROLE_GOALIE";
765 enum_map_if_gamestate_role_t[(int)
ROLE_DEFENDER] =
"ROLE_DEFENDER";
766 enum_map_if_gamestate_role_t[(int)
ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
767 enum_map_if_gamestate_role_t[(int)
ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
768 enum_map_if_gamestate_role_t[(int)
ROLE_ATTACKER] =
"ROLE_ATTACKER";
769 add_fieldinfo(
IFT_ENUM,
"state_team", 1, &data->state_team,
"if_gamestate_team_t", &enum_map_if_gamestate_team_t);
774 data_size =
sizeof(SetStateTeamMessage_data_t);
777 data = (SetStateTeamMessage_data_t *)
data_ptr;
779 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
780 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
781 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
782 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
783 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
784 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
785 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
786 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
787 enum_map_if_gamestate_role_t[(int)
ROLE_GOALIE] =
"ROLE_GOALIE";
788 enum_map_if_gamestate_role_t[(int)
ROLE_DEFENDER] =
"ROLE_DEFENDER";
789 enum_map_if_gamestate_role_t[(int)
ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
790 enum_map_if_gamestate_role_t[(int)
ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
791 enum_map_if_gamestate_role_t[(int)
ROLE_ATTACKER] =
"ROLE_ATTACKER";
792 add_fieldinfo(
IFT_ENUM,
"state_team", 1, &data->state_team,
"if_gamestate_team_t", &enum_map_if_gamestate_team_t);
809 data = (SetStateTeamMessage_data_t *)
data_ptr;
841 data->state_team = new_state_team;
bool is_kickoff() const
Get kickoff value.
~SetStateTeamMessage()
Destructor.
void set_state_team(const if_gamestate_team_t new_state_team)
Set state_team value.
void * data_ptr
Pointer to memory that contains local data.
static const uint32_t GS_FROZEN
GS_FROZEN constant.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
void set_game_state(const uint32_t new_game_state)
Set game_state value.
void set_score_cyan(const uint32_t new_score_cyan)
Set score_cyan value.
if_gamestate_role_t role() const
Get role value.
static const uint32_t GS_DROP_BALL
GS_DROP_BALL constant.
size_t maxlenof_role() const
Get maximum length of role value.
void set_hash(unsigned char *ihash)
Set hash.
void set_our_goal_color(const if_gamestate_goalcolor_t new_our_goal_color)
Set our_goal_color value.
SetStateTeamMessage()
Constructor.
size_t maxlenof_kickoff() const
Get maximum length of kickoff value.
if_gamestate_team_t our_team() const
Get our_team value.
virtual Message * clone() const
Clone this message.
No team, not team-specific.
static const uint32_t GS_THROW_IN
GS_THROW_IN constant.
Fawkes library namespace.
void set_state_team(const if_gamestate_team_t new_state_team)
Set state_team value.
size_t maxlenof_score_cyan() const
Get maximum length of score_cyan value.
Timestamp data, must be present and first entries for each interface data structs! This leans on time...
void set_our_team(const if_gamestate_team_t new_our_team)
Set our_team value.
virtual Message * create_message(const char *type) const
Create message based on type name.
if_gamestate_team_t our_team() const
Get our_team value.
Base class for all Fawkes BlackBoard interfaces.
void set_role(const if_gamestate_role_t new_role)
Set role value.
virtual Message * clone() const
Clone this message.
void set_kickoff(const bool new_kickoff)
Set kickoff value.
const char * tostring_if_gamestate_half_t(if_gamestate_half_t value) const
Convert if_gamestate_half_t constant to string.
bool is_kickoff() const
Get kickoff value.
const char * tostring_if_gamestate_team_t(if_gamestate_team_t value) const
Convert if_gamestate_team_t constant to string.
if_gamestate_role_t
Enumeration defining the different robot roles.
message_data_ts_t * data_ts
data timestamp aliasing pointer
unsigned int data_size
Size of memory needed to hold all data.
static const uint32_t GS_SPL_READY
GS_SPL_READY constant.
const char * tostring_if_gamestate_role_t(if_gamestate_role_t value) const
Convert if_gamestate_role_t constant to string.
void add_messageinfo(const char *name)
Add an entry to the message info list.
bool data_changed
Indicator if data has changed.
size_t maxlenof_our_goal_color() const
Get maximum length of our_goal_color value.
const char * type() const
Get type of interface.
uint32_t score_cyan() const
Get score_cyan value.
static const uint32_t GS_SPL_PLAY
GS_SPL_PLAY constant.
SetTeamColorMessage()
Constructor.
SetTeamColorMessage Fawkes BlackBoard Interface Message.
static const uint32_t GS_FREE_KICK
GS_FREE_KICK constant.
if_gamestate_half_t
Enumeration defining the different teams.
size_t maxlenof_our_team() const
Get maximum length of our_team value.
virtual Message * clone() const
Clone this message.
const char * tostring_if_gamestate_goalcolor_t(if_gamestate_goalcolor_t value) const
Convert if_gamestate_goalcolor_t constant to string.
static const uint32_t GS_SPL_FINISHED
GS_SPL_FINISHED constant.
if_gamestate_goalcolor_t our_goal_color() const
Get our_goal_color value.
size_t maxlenof_state_team() const
Get maximum length of state_team value.
if_gamestate_goalcolor_t
Enumeration defining the different teams.
static const uint32_t GS_KICK_OFF
GS_KICK_OFF constant.
size_t maxlenof_our_team() const
Get maximum length of our_team value.
~SetKickoffMessage()
Destructor.
SetKickoffMessage Fawkes BlackBoard Interface Message.
static const uint32_t GS_PLAY
GS_PLAY constant.
if_gamestate_team_t state_team() const
Get state_team value.
if_gamestate_half_t half() const
Get half value.
static const uint32_t GS_HALF_TIME
GS_HALF_TIME constant.
SetStateTeamMessage Fawkes BlackBoard Interface Message.
virtual void copy_values(const Interface *other)
Copy values from other interface.
size_t maxlenof_state_team() const
Get maximum length of state_team value.
if_gamestate_team_t state_team() const
Get state_team value.
uint32_t game_state() const
Get game_state value.
SetKickoffMessage()
Constructor.
static const uint32_t GS_CORNER_KICK
GS_CORNER_KICK constant.
~SetTeamColorMessage()
Destructor.
size_t maxlenof_game_state() const
Get maximum length of game_state value.
GameStateInterface Fawkes BlackBoard Interface.
static const uint32_t GS_GOAL_KICK
GS_GOAL_KICK constant.
size_t maxlenof_score_magenta() const
Get maximum length of score_magenta value.
size_t maxlenof_half() const
Get maximum length of half value.
void set_score_magenta(const uint32_t new_score_magenta)
Set score_magenta value.
size_t maxlenof_kickoff() const
Get maximum length of kickoff value.
if_gamestate_team_t
Enumeration defining the different teams.
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.
virtual const char * enum_tostring(const char *enumtype, int val) const
Convert arbitrary enum value to string.
const char * type() const
Get message type.
static const uint32_t GS_SPL_SET
GS_SPL_SET constant.
static const uint32_t GS_SPL_INITIAL
GS_SPL_INITIAL constant.
32 bit unsigned integer field
field with interface specific enum type
No team, not team-specific.
void set_kickoff(const bool new_kickoff)
Set kickoff value.
static const uint32_t GS_PENALTY
GS_PENALTY constant.
void set_half(const if_gamestate_half_t new_half)
Set half value.
void set_our_team(const if_gamestate_team_t new_our_team)
Set our_team value.
uint32_t score_magenta() const
Get score_magenta value.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.