24#include <interfaces/NaoSensorInterface.h>
26#include <core/exceptions/software.h>
46NaoSensorInterface::NaoSensorInterface() : Interface()
48 data_size =
sizeof(NaoSensorInterface_data_t);
49 data_ptr = malloc(data_size);
50 data = (NaoSensorInterface_data_t *)data_ptr;
51 data_ts = (interface_data_ts_t *)data_ptr;
52 memset(data_ptr, 0, data_size);
53 enum_map_UltrasonicDirection[(int)USD_NONE] =
"USD_NONE";
54 enum_map_UltrasonicDirection[(int)USD_LEFT_LEFT] =
"USD_LEFT_LEFT";
55 enum_map_UltrasonicDirection[(int)USD_LEFT_RIGHT] =
"USD_LEFT_RIGHT";
56 enum_map_UltrasonicDirection[(int)USD_RIGHT_RIGHT] =
"USD_RIGHT_RIGHT";
57 enum_map_UltrasonicDirection[(int)USD_RIGHT_LEFT] =
"USD_RIGHT_LEFT";
58 enum_map_UltrasonicDirection[(int)USD_BOTH_BOTH] =
"USD_BOTH_BOTH";
59 add_fieldinfo(IFT_FLOAT,
"accel_x", 1, &data->accel_x);
60 add_fieldinfo(IFT_FLOAT,
"accel_y", 1, &data->accel_y);
61 add_fieldinfo(IFT_FLOAT,
"accel_z", 1, &data->accel_z);
62 add_fieldinfo(IFT_FLOAT,
"gyro_x", 1, &data->gyro_x);
63 add_fieldinfo(IFT_FLOAT,
"gyro_y", 1, &data->gyro_y);
64 add_fieldinfo(IFT_FLOAT,
"gyro_ref", 1, &data->gyro_ref);
65 add_fieldinfo(IFT_FLOAT,
"angle_x", 1, &data->angle_x);
66 add_fieldinfo(IFT_FLOAT,
"angle_y", 1, &data->angle_y);
67 add_fieldinfo(IFT_FLOAT,
"l_fsr_fl", 1, &data->l_fsr_fl);
68 add_fieldinfo(IFT_FLOAT,
"l_fsr_fr", 1, &data->l_fsr_fr);
69 add_fieldinfo(IFT_FLOAT,
"l_fsr_rl", 1, &data->l_fsr_rl);
70 add_fieldinfo(IFT_FLOAT,
"l_fsr_rr", 1, &data->l_fsr_rr);
71 add_fieldinfo(IFT_FLOAT,
"r_fsr_fl", 1, &data->r_fsr_fl);
72 add_fieldinfo(IFT_FLOAT,
"r_fsr_fr", 1, &data->r_fsr_fr);
73 add_fieldinfo(IFT_FLOAT,
"r_fsr_rl", 1, &data->r_fsr_rl);
74 add_fieldinfo(IFT_FLOAT,
"r_fsr_rr", 1, &data->r_fsr_rr);
75 add_fieldinfo(IFT_FLOAT,
"l_total_weight", 1, &data->l_total_weight);
76 add_fieldinfo(IFT_FLOAT,
"r_total_weight", 1, &data->r_total_weight);
77 add_fieldinfo(IFT_FLOAT,
"l_cop_x", 1, &data->l_cop_x);
78 add_fieldinfo(IFT_FLOAT,
"l_cop_y", 1, &data->l_cop_y);
79 add_fieldinfo(IFT_FLOAT,
"r_cop_x", 1, &data->r_cop_x);
80 add_fieldinfo(IFT_FLOAT,
"r_cop_y", 1, &data->r_cop_y);
81 add_fieldinfo(IFT_FLOAT,
"ultrasonic_distance_left", 4, &data->ultrasonic_distance_left);
82 add_fieldinfo(IFT_FLOAT,
"ultrasonic_distance_right", 4, &data->ultrasonic_distance_right);
83 add_fieldinfo(IFT_ENUM,
"ultrasonic_direction", 1, &data->ultrasonic_direction,
"UltrasonicDirection", &enum_map_UltrasonicDirection);
84 add_fieldinfo(IFT_UINT8,
"l_foot_bumper_l", 1, &data->l_foot_bumper_l);
85 add_fieldinfo(IFT_UINT8,
"l_foot_bumper_r", 1, &data->l_foot_bumper_r);
86 add_fieldinfo(IFT_UINT8,
"r_foot_bumper_l", 1, &data->r_foot_bumper_l);
87 add_fieldinfo(IFT_UINT8,
"r_foot_bumper_r", 1, &data->r_foot_bumper_r);
88 add_fieldinfo(IFT_UINT8,
"head_touch_front", 1, &data->head_touch_front);
89 add_fieldinfo(IFT_UINT8,
"head_touch_middle", 1, &data->head_touch_middle);
90 add_fieldinfo(IFT_UINT8,
"head_touch_rear", 1, &data->head_touch_rear);
91 add_fieldinfo(IFT_UINT8,
"chest_button", 1, &data->chest_button);
92 add_fieldinfo(IFT_FLOAT,
"battery_charge", 1, &data->battery_charge);
93 add_messageinfo(
"EmitUltrasonicWaveMessage");
94 add_messageinfo(
"StartUltrasonicMessage");
95 add_messageinfo(
"StopUltrasonicMessage");
96 unsigned char tmp_hash[] = {0x41, 0x41, 0x54, 0x94, 0xca, 0xe8, 0x3d, 0x7a, 0xb8, 0xaa, 0xc2, 0x4e, 0x2c, 0xac, 0xcb, 0x15};
101NaoSensorInterface::~NaoSensorInterface()
113 case USD_NONE:
return "USD_NONE";
114 case USD_LEFT_LEFT:
return "USD_LEFT_LEFT";
115 case USD_LEFT_RIGHT:
return "USD_LEFT_RIGHT";
116 case USD_RIGHT_RIGHT:
return "USD_RIGHT_RIGHT";
117 case USD_RIGHT_LEFT:
return "USD_RIGHT_LEFT";
118 case USD_BOTH_BOTH:
return "USD_BOTH_BOTH";
119 default:
return "UNKNOWN";
128NaoSensorInterface::accel_x()
const
130 return data->accel_x;
138NaoSensorInterface::maxlenof_accel_x()
const
148NaoSensorInterface::set_accel_x(
const float new_accel_x)
150 set_field(data->accel_x, new_accel_x);
158NaoSensorInterface::accel_y()
const
160 return data->accel_y;
168NaoSensorInterface::maxlenof_accel_y()
const
178NaoSensorInterface::set_accel_y(
const float new_accel_y)
180 set_field(data->accel_y, new_accel_y);
188NaoSensorInterface::accel_z()
const
190 return data->accel_z;
198NaoSensorInterface::maxlenof_accel_z()
const
208NaoSensorInterface::set_accel_z(
const float new_accel_z)
210 set_field(data->accel_z, new_accel_z);
218NaoSensorInterface::gyro_x()
const
228NaoSensorInterface::maxlenof_gyro_x()
const
238NaoSensorInterface::set_gyro_x(
const float new_gyro_x)
240 set_field(data->gyro_x, new_gyro_x);
248NaoSensorInterface::gyro_y()
const
258NaoSensorInterface::maxlenof_gyro_y()
const
268NaoSensorInterface::set_gyro_y(
const float new_gyro_y)
270 set_field(data->gyro_y, new_gyro_y);
278NaoSensorInterface::gyro_ref()
const
280 return data->gyro_ref;
288NaoSensorInterface::maxlenof_gyro_ref()
const
298NaoSensorInterface::set_gyro_ref(
const float new_gyro_ref)
300 set_field(data->gyro_ref, new_gyro_ref);
308NaoSensorInterface::angle_x()
const
310 return data->angle_x;
318NaoSensorInterface::maxlenof_angle_x()
const
328NaoSensorInterface::set_angle_x(
const float new_angle_x)
330 set_field(data->angle_x, new_angle_x);
338NaoSensorInterface::angle_y()
const
340 return data->angle_y;
348NaoSensorInterface::maxlenof_angle_y()
const
358NaoSensorInterface::set_angle_y(
const float new_angle_y)
360 set_field(data->angle_y, new_angle_y);
368NaoSensorInterface::l_fsr_fl()
const
370 return data->l_fsr_fl;
378NaoSensorInterface::maxlenof_l_fsr_fl()
const
388NaoSensorInterface::set_l_fsr_fl(
const float new_l_fsr_fl)
390 set_field(data->l_fsr_fl, new_l_fsr_fl);
398NaoSensorInterface::l_fsr_fr()
const
400 return data->l_fsr_fr;
408NaoSensorInterface::maxlenof_l_fsr_fr()
const
418NaoSensorInterface::set_l_fsr_fr(
const float new_l_fsr_fr)
420 set_field(data->l_fsr_fr, new_l_fsr_fr);
428NaoSensorInterface::l_fsr_rl()
const
430 return data->l_fsr_rl;
438NaoSensorInterface::maxlenof_l_fsr_rl()
const
448NaoSensorInterface::set_l_fsr_rl(
const float new_l_fsr_rl)
450 set_field(data->l_fsr_rl, new_l_fsr_rl);
458NaoSensorInterface::l_fsr_rr()
const
460 return data->l_fsr_rr;
468NaoSensorInterface::maxlenof_l_fsr_rr()
const
478NaoSensorInterface::set_l_fsr_rr(
const float new_l_fsr_rr)
480 set_field(data->l_fsr_rr, new_l_fsr_rr);
488NaoSensorInterface::r_fsr_fl()
const
490 return data->r_fsr_fl;
498NaoSensorInterface::maxlenof_r_fsr_fl()
const
508NaoSensorInterface::set_r_fsr_fl(
const float new_r_fsr_fl)
510 set_field(data->r_fsr_fl, new_r_fsr_fl);
518NaoSensorInterface::r_fsr_fr()
const
520 return data->r_fsr_fr;
528NaoSensorInterface::maxlenof_r_fsr_fr()
const
538NaoSensorInterface::set_r_fsr_fr(
const float new_r_fsr_fr)
540 set_field(data->r_fsr_fr, new_r_fsr_fr);
548NaoSensorInterface::r_fsr_rl()
const
550 return data->r_fsr_rl;
558NaoSensorInterface::maxlenof_r_fsr_rl()
const
568NaoSensorInterface::set_r_fsr_rl(
const float new_r_fsr_rl)
570 set_field(data->r_fsr_rl, new_r_fsr_rl);
578NaoSensorInterface::r_fsr_rr()
const
580 return data->r_fsr_rr;
588NaoSensorInterface::maxlenof_r_fsr_rr()
const
598NaoSensorInterface::set_r_fsr_rr(
const float new_r_fsr_rr)
600 set_field(data->r_fsr_rr, new_r_fsr_rr);
608NaoSensorInterface::l_total_weight()
const
610 return data->l_total_weight;
618NaoSensorInterface::maxlenof_l_total_weight()
const
628NaoSensorInterface::set_l_total_weight(
const float new_l_total_weight)
630 set_field(data->l_total_weight, new_l_total_weight);
638NaoSensorInterface::r_total_weight()
const
640 return data->r_total_weight;
648NaoSensorInterface::maxlenof_r_total_weight()
const
658NaoSensorInterface::set_r_total_weight(
const float new_r_total_weight)
660 set_field(data->r_total_weight, new_r_total_weight);
668NaoSensorInterface::l_cop_x()
const
670 return data->l_cop_x;
678NaoSensorInterface::maxlenof_l_cop_x()
const
688NaoSensorInterface::set_l_cop_x(
const float new_l_cop_x)
690 set_field(data->l_cop_x, new_l_cop_x);
698NaoSensorInterface::l_cop_y()
const
700 return data->l_cop_y;
708NaoSensorInterface::maxlenof_l_cop_y()
const
718NaoSensorInterface::set_l_cop_y(
const float new_l_cop_y)
720 set_field(data->l_cop_y, new_l_cop_y);
728NaoSensorInterface::r_cop_x()
const
730 return data->r_cop_x;
738NaoSensorInterface::maxlenof_r_cop_x()
const
748NaoSensorInterface::set_r_cop_x(
const float new_r_cop_x)
750 set_field(data->r_cop_x, new_r_cop_x);
758NaoSensorInterface::r_cop_y()
const
760 return data->r_cop_y;
768NaoSensorInterface::maxlenof_r_cop_y()
const
778NaoSensorInterface::set_r_cop_y(
const float new_r_cop_y)
780 set_field(data->r_cop_y, new_r_cop_y);
791NaoSensorInterface::ultrasonic_distance_left()
const
793 return data->ultrasonic_distance_left;
806NaoSensorInterface::ultrasonic_distance_left(
unsigned int index)
const
809 throw Exception(
"Index value %u out of bounds (0..3)", index);
811 return data->ultrasonic_distance_left[index];
819NaoSensorInterface::maxlenof_ultrasonic_distance_left()
const
832NaoSensorInterface::set_ultrasonic_distance_left(
const float * new_ultrasonic_distance_left)
834 set_field(data->ultrasonic_distance_left, new_ultrasonic_distance_left);
846NaoSensorInterface::set_ultrasonic_distance_left(
unsigned int index,
const float new_ultrasonic_distance_left)
848 set_field(data->ultrasonic_distance_left, index, new_ultrasonic_distance_left);
858NaoSensorInterface::ultrasonic_distance_right()
const
860 return data->ultrasonic_distance_right;
873NaoSensorInterface::ultrasonic_distance_right(
unsigned int index)
const
876 throw Exception(
"Index value %u out of bounds (0..3)", index);
878 return data->ultrasonic_distance_right[index];
886NaoSensorInterface::maxlenof_ultrasonic_distance_right()
const
899NaoSensorInterface::set_ultrasonic_distance_right(
const float * new_ultrasonic_distance_right)
901 set_field(data->ultrasonic_distance_right, new_ultrasonic_distance_right);
913NaoSensorInterface::set_ultrasonic_distance_right(
unsigned int index,
const float new_ultrasonic_distance_right)
915 set_field(data->ultrasonic_distance_right, index, new_ultrasonic_distance_right);
924NaoSensorInterface::ultrasonic_direction()
const
934NaoSensorInterface::maxlenof_ultrasonic_direction()
const
948 set_field(data->ultrasonic_direction, new_ultrasonic_direction);
956NaoSensorInterface::l_foot_bumper_l()
const
958 return data->l_foot_bumper_l;
966NaoSensorInterface::maxlenof_l_foot_bumper_l()
const
976NaoSensorInterface::set_l_foot_bumper_l(
const uint8_t new_l_foot_bumper_l)
978 set_field(data->l_foot_bumper_l, new_l_foot_bumper_l);
986NaoSensorInterface::l_foot_bumper_r()
const
988 return data->l_foot_bumper_r;
996NaoSensorInterface::maxlenof_l_foot_bumper_r()
const
1006NaoSensorInterface::set_l_foot_bumper_r(
const uint8_t new_l_foot_bumper_r)
1008 set_field(data->l_foot_bumper_r, new_l_foot_bumper_r);
1016NaoSensorInterface::r_foot_bumper_l()
const
1018 return data->r_foot_bumper_l;
1026NaoSensorInterface::maxlenof_r_foot_bumper_l()
const
1036NaoSensorInterface::set_r_foot_bumper_l(
const uint8_t new_r_foot_bumper_l)
1038 set_field(data->r_foot_bumper_l, new_r_foot_bumper_l);
1046NaoSensorInterface::r_foot_bumper_r()
const
1048 return data->r_foot_bumper_r;
1056NaoSensorInterface::maxlenof_r_foot_bumper_r()
const
1066NaoSensorInterface::set_r_foot_bumper_r(
const uint8_t new_r_foot_bumper_r)
1068 set_field(data->r_foot_bumper_r, new_r_foot_bumper_r);
1076NaoSensorInterface::head_touch_front()
const
1078 return data->head_touch_front;
1086NaoSensorInterface::maxlenof_head_touch_front()
const
1096NaoSensorInterface::set_head_touch_front(
const uint8_t new_head_touch_front)
1098 set_field(data->head_touch_front, new_head_touch_front);
1106NaoSensorInterface::head_touch_middle()
const
1108 return data->head_touch_middle;
1116NaoSensorInterface::maxlenof_head_touch_middle()
const
1126NaoSensorInterface::set_head_touch_middle(
const uint8_t new_head_touch_middle)
1128 set_field(data->head_touch_middle, new_head_touch_middle);
1136NaoSensorInterface::head_touch_rear()
const
1138 return data->head_touch_rear;
1146NaoSensorInterface::maxlenof_head_touch_rear()
const
1156NaoSensorInterface::set_head_touch_rear(
const uint8_t new_head_touch_rear)
1158 set_field(data->head_touch_rear, new_head_touch_rear);
1166NaoSensorInterface::chest_button()
const
1168 return data->chest_button;
1176NaoSensorInterface::maxlenof_chest_button()
const
1186NaoSensorInterface::set_chest_button(
const uint8_t new_chest_button)
1188 set_field(data->chest_button, new_chest_button);
1196NaoSensorInterface::battery_charge()
const
1198 return data->battery_charge;
1206NaoSensorInterface::maxlenof_battery_charge()
const
1216NaoSensorInterface::set_battery_charge(
const float new_battery_charge)
1218 set_field(data->battery_charge, new_battery_charge);
1223NaoSensorInterface::create_message(
const char *type)
const
1225 if ( strncmp(
"EmitUltrasonicWaveMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
1227 }
else if ( strncmp(
"StartUltrasonicMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
1229 }
else if ( strncmp(
"StopUltrasonicMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
1233 "message type for this interface type.", type);
1247 type(), other->
type());
1249 memcpy(data, oi->data,
sizeof(NaoSensorInterface_data_t));
1253NaoSensorInterface::enum_tostring(
const char *enumtype,
int val)
const
1255 if (strcmp(enumtype,
"UltrasonicDirection") == 0) {
1272NaoSensorInterface::EmitUltrasonicWaveMessage::EmitUltrasonicWaveMessage(
const UltrasonicDirection ini_ultrasonic_direction) :
Message(
"EmitUltrasonicWaveMessage")
1274 data_size =
sizeof(EmitUltrasonicWaveMessage_data_t);
1277 data = (EmitUltrasonicWaveMessage_data_t *)
data_ptr;
1279 data->ultrasonic_direction = ini_ultrasonic_direction;
1280 enum_map_UltrasonicDirection[(int)
USD_NONE] =
"USD_NONE";
1281 enum_map_UltrasonicDirection[(int)
USD_LEFT_LEFT] =
"USD_LEFT_LEFT";
1282 enum_map_UltrasonicDirection[(int)
USD_LEFT_RIGHT] =
"USD_LEFT_RIGHT";
1283 enum_map_UltrasonicDirection[(int)
USD_RIGHT_RIGHT] =
"USD_RIGHT_RIGHT";
1284 enum_map_UltrasonicDirection[(int)
USD_RIGHT_LEFT] =
"USD_RIGHT_LEFT";
1285 enum_map_UltrasonicDirection[(int)
USD_BOTH_BOTH] =
"USD_BOTH_BOTH";
1286 add_fieldinfo(
IFT_ENUM,
"ultrasonic_direction", 1, &data->ultrasonic_direction,
"UltrasonicDirection", &enum_map_UltrasonicDirection);
1291 data_size =
sizeof(EmitUltrasonicWaveMessage_data_t);
1294 data = (EmitUltrasonicWaveMessage_data_t *)
data_ptr;
1296 enum_map_UltrasonicDirection[(int)
USD_NONE] =
"USD_NONE";
1297 enum_map_UltrasonicDirection[(int)
USD_LEFT_LEFT] =
"USD_LEFT_LEFT";
1298 enum_map_UltrasonicDirection[(int)
USD_LEFT_RIGHT] =
"USD_LEFT_RIGHT";
1299 enum_map_UltrasonicDirection[(int)
USD_RIGHT_RIGHT] =
"USD_RIGHT_RIGHT";
1300 enum_map_UltrasonicDirection[(int)
USD_RIGHT_LEFT] =
"USD_RIGHT_LEFT";
1301 enum_map_UltrasonicDirection[(int)
USD_BOTH_BOTH] =
"USD_BOTH_BOTH";
1302 add_fieldinfo(
IFT_ENUM,
"ultrasonic_direction", 1, &data->ultrasonic_direction,
"UltrasonicDirection", &enum_map_UltrasonicDirection);
1319 data = (EmitUltrasonicWaveMessage_data_t *)
data_ptr;
1355 set_field(data->ultrasonic_direction, new_ultrasonic_direction);
1380 data_size =
sizeof(StartUltrasonicMessage_data_t);
1383 data = (StartUltrasonicMessage_data_t *)
data_ptr;
1385 data->ultrasonic_direction = ini_ultrasonic_direction;
1386 enum_map_UltrasonicDirection[(int)
USD_NONE] =
"USD_NONE";
1387 enum_map_UltrasonicDirection[(int)
USD_LEFT_LEFT] =
"USD_LEFT_LEFT";
1388 enum_map_UltrasonicDirection[(int)
USD_LEFT_RIGHT] =
"USD_LEFT_RIGHT";
1389 enum_map_UltrasonicDirection[(int)
USD_RIGHT_RIGHT] =
"USD_RIGHT_RIGHT";
1390 enum_map_UltrasonicDirection[(int)
USD_RIGHT_LEFT] =
"USD_RIGHT_LEFT";
1391 enum_map_UltrasonicDirection[(int)
USD_BOTH_BOTH] =
"USD_BOTH_BOTH";
1392 add_fieldinfo(
IFT_ENUM,
"ultrasonic_direction", 1, &data->ultrasonic_direction,
"UltrasonicDirection", &enum_map_UltrasonicDirection);
1397 data_size =
sizeof(StartUltrasonicMessage_data_t);
1400 data = (StartUltrasonicMessage_data_t *)
data_ptr;
1402 enum_map_UltrasonicDirection[(int)
USD_NONE] =
"USD_NONE";
1403 enum_map_UltrasonicDirection[(int)
USD_LEFT_LEFT] =
"USD_LEFT_LEFT";
1404 enum_map_UltrasonicDirection[(int)
USD_LEFT_RIGHT] =
"USD_LEFT_RIGHT";
1405 enum_map_UltrasonicDirection[(int)
USD_RIGHT_RIGHT] =
"USD_RIGHT_RIGHT";
1406 enum_map_UltrasonicDirection[(int)
USD_RIGHT_LEFT] =
"USD_RIGHT_LEFT";
1407 enum_map_UltrasonicDirection[(int)
USD_BOTH_BOTH] =
"USD_BOTH_BOTH";
1408 add_fieldinfo(
IFT_ENUM,
"ultrasonic_direction", 1, &data->ultrasonic_direction,
"UltrasonicDirection", &enum_map_UltrasonicDirection);
1425 data = (StartUltrasonicMessage_data_t *)
data_ptr;
1461 set_field(data->ultrasonic_direction, new_ultrasonic_direction);
1484 data_size =
sizeof(StopUltrasonicMessage_data_t);
1487 data = (StopUltrasonicMessage_data_t *)
data_ptr;
1489 enum_map_UltrasonicDirection[(int)
USD_NONE] =
"USD_NONE";
1490 enum_map_UltrasonicDirection[(int)
USD_LEFT_LEFT] =
"USD_LEFT_LEFT";
1491 enum_map_UltrasonicDirection[(int)
USD_LEFT_RIGHT] =
"USD_LEFT_RIGHT";
1492 enum_map_UltrasonicDirection[(int)
USD_RIGHT_RIGHT] =
"USD_RIGHT_RIGHT";
1493 enum_map_UltrasonicDirection[(int)
USD_RIGHT_LEFT] =
"USD_RIGHT_LEFT";
1494 enum_map_UltrasonicDirection[(int)
USD_BOTH_BOTH] =
"USD_BOTH_BOTH";
1511 data = (StopUltrasonicMessage_data_t *)
data_ptr;
Base class for exceptions in Fawkes.
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.
EmitUltrasonicWaveMessage Fawkes BlackBoard Interface Message.
~EmitUltrasonicWaveMessage()
Destructor.
UltrasonicDirection ultrasonic_direction() const
Get ultrasonic_direction value.
size_t maxlenof_ultrasonic_direction() const
Get maximum length of ultrasonic_direction value.
virtual Message * clone() const
Clone this message.
void set_ultrasonic_direction(const UltrasonicDirection new_ultrasonic_direction)
Set ultrasonic_direction value.
EmitUltrasonicWaveMessage()
Constructor.
StartUltrasonicMessage Fawkes BlackBoard Interface Message.
virtual Message * clone() const
Clone this message.
size_t maxlenof_ultrasonic_direction() const
Get maximum length of ultrasonic_direction value.
~StartUltrasonicMessage()
Destructor.
UltrasonicDirection ultrasonic_direction() const
Get ultrasonic_direction value.
StartUltrasonicMessage()
Constructor.
void set_ultrasonic_direction(const UltrasonicDirection new_ultrasonic_direction)
Set ultrasonic_direction value.
StopUltrasonicMessage Fawkes BlackBoard Interface Message.
~StopUltrasonicMessage()
Destructor.
virtual Message * clone() const
Clone this message.
StopUltrasonicMessage()
Constructor.
NaoSensorInterface Fawkes BlackBoard Interface.
UltrasonicDirection
This determines the chosen sender/receiver.
@ USD_LEFT_LEFT
Left emitter and left receiver.
@ USD_LEFT_RIGHT
Left emitter and right receiver.
@ USD_RIGHT_RIGHT
Right emitter and right receiver.
@ USD_BOTH_BOTH
Both emitters and both receivers.
@ USD_RIGHT_LEFT
Right emitter and left receiver.
@ USD_NONE
No transmission received, yet.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
Fawkes library namespace.
@ IFT_ENUM
field with interface specific enum type
Timestamp data, must be present and first entries for each interface data structs!...