24 #include <interfaces/NaoSensorInterface.h>
26 #include <core/exceptions/software.h>
46 NaoSensorInterface::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};
101 NaoSensorInterface::~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";
128 NaoSensorInterface::accel_x()
const
130 return data->accel_x;
138 NaoSensorInterface::maxlenof_accel_x()
const
148 NaoSensorInterface::set_accel_x(
const float new_accel_x)
150 data_changed |=
change_field(data->accel_x, new_accel_x);
158 NaoSensorInterface::accel_y()
const
160 return data->accel_y;
168 NaoSensorInterface::maxlenof_accel_y()
const
178 NaoSensorInterface::set_accel_y(
const float new_accel_y)
180 data_changed |=
change_field(data->accel_y, new_accel_y);
188 NaoSensorInterface::accel_z()
const
190 return data->accel_z;
198 NaoSensorInterface::maxlenof_accel_z()
const
208 NaoSensorInterface::set_accel_z(
const float new_accel_z)
210 data_changed |=
change_field(data->accel_z, new_accel_z);
218 NaoSensorInterface::gyro_x()
const
228 NaoSensorInterface::maxlenof_gyro_x()
const
238 NaoSensorInterface::set_gyro_x(
const float new_gyro_x)
248 NaoSensorInterface::gyro_y()
const
258 NaoSensorInterface::maxlenof_gyro_y()
const
268 NaoSensorInterface::set_gyro_y(
const float new_gyro_y)
278 NaoSensorInterface::gyro_ref()
const
280 return data->gyro_ref;
288 NaoSensorInterface::maxlenof_gyro_ref()
const
298 NaoSensorInterface::set_gyro_ref(
const float new_gyro_ref)
300 data_changed |=
change_field(data->gyro_ref, new_gyro_ref);
308 NaoSensorInterface::angle_x()
const
310 return data->angle_x;
318 NaoSensorInterface::maxlenof_angle_x()
const
328 NaoSensorInterface::set_angle_x(
const float new_angle_x)
330 data_changed |=
change_field(data->angle_x, new_angle_x);
338 NaoSensorInterface::angle_y()
const
340 return data->angle_y;
348 NaoSensorInterface::maxlenof_angle_y()
const
358 NaoSensorInterface::set_angle_y(
const float new_angle_y)
360 data_changed |=
change_field(data->angle_y, new_angle_y);
368 NaoSensorInterface::l_fsr_fl()
const
370 return data->l_fsr_fl;
378 NaoSensorInterface::maxlenof_l_fsr_fl()
const
388 NaoSensorInterface::set_l_fsr_fl(
const float new_l_fsr_fl)
390 data_changed |=
change_field(data->l_fsr_fl, new_l_fsr_fl);
398 NaoSensorInterface::l_fsr_fr()
const
400 return data->l_fsr_fr;
408 NaoSensorInterface::maxlenof_l_fsr_fr()
const
418 NaoSensorInterface::set_l_fsr_fr(
const float new_l_fsr_fr)
420 data_changed |=
change_field(data->l_fsr_fr, new_l_fsr_fr);
428 NaoSensorInterface::l_fsr_rl()
const
430 return data->l_fsr_rl;
438 NaoSensorInterface::maxlenof_l_fsr_rl()
const
448 NaoSensorInterface::set_l_fsr_rl(
const float new_l_fsr_rl)
450 data_changed |=
change_field(data->l_fsr_rl, new_l_fsr_rl);
458 NaoSensorInterface::l_fsr_rr()
const
460 return data->l_fsr_rr;
468 NaoSensorInterface::maxlenof_l_fsr_rr()
const
478 NaoSensorInterface::set_l_fsr_rr(
const float new_l_fsr_rr)
480 data_changed |=
change_field(data->l_fsr_rr, new_l_fsr_rr);
488 NaoSensorInterface::r_fsr_fl()
const
490 return data->r_fsr_fl;
498 NaoSensorInterface::maxlenof_r_fsr_fl()
const
508 NaoSensorInterface::set_r_fsr_fl(
const float new_r_fsr_fl)
510 data_changed |=
change_field(data->r_fsr_fl, new_r_fsr_fl);
518 NaoSensorInterface::r_fsr_fr()
const
520 return data->r_fsr_fr;
528 NaoSensorInterface::maxlenof_r_fsr_fr()
const
538 NaoSensorInterface::set_r_fsr_fr(
const float new_r_fsr_fr)
540 data_changed |=
change_field(data->r_fsr_fr, new_r_fsr_fr);
548 NaoSensorInterface::r_fsr_rl()
const
550 return data->r_fsr_rl;
558 NaoSensorInterface::maxlenof_r_fsr_rl()
const
568 NaoSensorInterface::set_r_fsr_rl(
const float new_r_fsr_rl)
570 data_changed |=
change_field(data->r_fsr_rl, new_r_fsr_rl);
578 NaoSensorInterface::r_fsr_rr()
const
580 return data->r_fsr_rr;
588 NaoSensorInterface::maxlenof_r_fsr_rr()
const
598 NaoSensorInterface::set_r_fsr_rr(
const float new_r_fsr_rr)
600 data_changed |=
change_field(data->r_fsr_rr, new_r_fsr_rr);
608 NaoSensorInterface::l_total_weight()
const
610 return data->l_total_weight;
618 NaoSensorInterface::maxlenof_l_total_weight()
const
628 NaoSensorInterface::set_l_total_weight(
const float new_l_total_weight)
630 data_changed |=
change_field(data->l_total_weight, new_l_total_weight);
638 NaoSensorInterface::r_total_weight()
const
640 return data->r_total_weight;
648 NaoSensorInterface::maxlenof_r_total_weight()
const
658 NaoSensorInterface::set_r_total_weight(
const float new_r_total_weight)
660 data_changed |=
change_field(data->r_total_weight, new_r_total_weight);
668 NaoSensorInterface::l_cop_x()
const
670 return data->l_cop_x;
678 NaoSensorInterface::maxlenof_l_cop_x()
const
688 NaoSensorInterface::set_l_cop_x(
const float new_l_cop_x)
690 data_changed |=
change_field(data->l_cop_x, new_l_cop_x);
698 NaoSensorInterface::l_cop_y()
const
700 return data->l_cop_y;
708 NaoSensorInterface::maxlenof_l_cop_y()
const
718 NaoSensorInterface::set_l_cop_y(
const float new_l_cop_y)
720 data_changed |=
change_field(data->l_cop_y, new_l_cop_y);
728 NaoSensorInterface::r_cop_x()
const
730 return data->r_cop_x;
738 NaoSensorInterface::maxlenof_r_cop_x()
const
748 NaoSensorInterface::set_r_cop_x(
const float new_r_cop_x)
750 data_changed |=
change_field(data->r_cop_x, new_r_cop_x);
758 NaoSensorInterface::r_cop_y()
const
760 return data->r_cop_y;
768 NaoSensorInterface::maxlenof_r_cop_y()
const
778 NaoSensorInterface::set_r_cop_y(
const float new_r_cop_y)
780 data_changed |=
change_field(data->r_cop_y, new_r_cop_y);
791 NaoSensorInterface::ultrasonic_distance_left()
const
793 return data->ultrasonic_distance_left;
806 NaoSensorInterface::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];
819 NaoSensorInterface::maxlenof_ultrasonic_distance_left()
const
832 NaoSensorInterface::set_ultrasonic_distance_left(
const float * new_ultrasonic_distance_left)
834 data_changed |=
change_field(data->ultrasonic_distance_left, new_ultrasonic_distance_left);
846 NaoSensorInterface::set_ultrasonic_distance_left(
unsigned int index,
const float new_ultrasonic_distance_left)
848 data_changed |=
change_field(data->ultrasonic_distance_left, index, new_ultrasonic_distance_left);
858 NaoSensorInterface::ultrasonic_distance_right()
const
860 return data->ultrasonic_distance_right;
873 NaoSensorInterface::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];
886 NaoSensorInterface::maxlenof_ultrasonic_distance_right()
const
899 NaoSensorInterface::set_ultrasonic_distance_right(
const float * new_ultrasonic_distance_right)
901 data_changed |=
change_field(data->ultrasonic_distance_right, new_ultrasonic_distance_right);
913 NaoSensorInterface::set_ultrasonic_distance_right(
unsigned int index,
const float new_ultrasonic_distance_right)
915 data_changed |=
change_field(data->ultrasonic_distance_right, index, new_ultrasonic_distance_right);
924 NaoSensorInterface::ultrasonic_direction()
const
934 NaoSensorInterface::maxlenof_ultrasonic_direction()
const
948 data_changed |=
change_field(data->ultrasonic_direction, new_ultrasonic_direction);
956 NaoSensorInterface::l_foot_bumper_l()
const
958 return data->l_foot_bumper_l;
966 NaoSensorInterface::maxlenof_l_foot_bumper_l()
const
976 NaoSensorInterface::set_l_foot_bumper_l(
const uint8_t new_l_foot_bumper_l)
978 data_changed |=
change_field(data->l_foot_bumper_l, new_l_foot_bumper_l);
986 NaoSensorInterface::l_foot_bumper_r()
const
988 return data->l_foot_bumper_r;
996 NaoSensorInterface::maxlenof_l_foot_bumper_r()
const
1006 NaoSensorInterface::set_l_foot_bumper_r(
const uint8_t new_l_foot_bumper_r)
1008 data_changed |=
change_field(data->l_foot_bumper_r, new_l_foot_bumper_r);
1016 NaoSensorInterface::r_foot_bumper_l()
const
1018 return data->r_foot_bumper_l;
1026 NaoSensorInterface::maxlenof_r_foot_bumper_l()
const
1036 NaoSensorInterface::set_r_foot_bumper_l(
const uint8_t new_r_foot_bumper_l)
1038 data_changed |=
change_field(data->r_foot_bumper_l, new_r_foot_bumper_l);
1046 NaoSensorInterface::r_foot_bumper_r()
const
1048 return data->r_foot_bumper_r;
1056 NaoSensorInterface::maxlenof_r_foot_bumper_r()
const
1066 NaoSensorInterface::set_r_foot_bumper_r(
const uint8_t new_r_foot_bumper_r)
1068 data_changed |=
change_field(data->r_foot_bumper_r, new_r_foot_bumper_r);
1076 NaoSensorInterface::head_touch_front()
const
1078 return data->head_touch_front;
1086 NaoSensorInterface::maxlenof_head_touch_front()
const
1096 NaoSensorInterface::set_head_touch_front(
const uint8_t new_head_touch_front)
1098 data_changed |=
change_field(data->head_touch_front, new_head_touch_front);
1106 NaoSensorInterface::head_touch_middle()
const
1108 return data->head_touch_middle;
1116 NaoSensorInterface::maxlenof_head_touch_middle()
const
1126 NaoSensorInterface::set_head_touch_middle(
const uint8_t new_head_touch_middle)
1128 data_changed |=
change_field(data->head_touch_middle, new_head_touch_middle);
1136 NaoSensorInterface::head_touch_rear()
const
1138 return data->head_touch_rear;
1146 NaoSensorInterface::maxlenof_head_touch_rear()
const
1156 NaoSensorInterface::set_head_touch_rear(
const uint8_t new_head_touch_rear)
1158 data_changed |=
change_field(data->head_touch_rear, new_head_touch_rear);
1166 NaoSensorInterface::chest_button()
const
1168 return data->chest_button;
1176 NaoSensorInterface::maxlenof_chest_button()
const
1186 NaoSensorInterface::set_chest_button(
const uint8_t new_chest_button)
1188 data_changed |=
change_field(data->chest_button, new_chest_button);
1196 NaoSensorInterface::battery_charge()
const
1198 return data->battery_charge;
1206 NaoSensorInterface::maxlenof_battery_charge()
const
1216 NaoSensorInterface::set_battery_charge(
const float new_battery_charge)
1218 data_changed |=
change_field(data->battery_charge, new_battery_charge);
1223 NaoSensorInterface::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));
1253 NaoSensorInterface::enum_tostring(
const char *enumtype,
int val)
const
1255 if (strcmp(enumtype,
"UltrasonicDirection") == 0) {
1272 NaoSensorInterface::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 change_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 change_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.
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
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!...