Fawkes API
Fawkes Development Version
|
24 #include <interfaces/NaoSensorInterface.h>
26 #include <core/exceptions/software.h>
46 NaoSensorInterface::NaoSensorInterface() : Interface()
48 data_size =
sizeof(NaoSensorInterface_data_t);
50 data = (NaoSensorInterface_data_t *)
data_ptr;
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";
83 add_fieldinfo(
IFT_ENUM,
"ultrasonic_direction", 1, &data->ultrasonic_direction,
"UltrasonicDirection", &enum_map_UltrasonicDirection);
96 unsigned char tmp_hash[] = {0x41, 0x41, 0x54, 0x94, 0xca, 0xe8, 0x3d, 0x7a, 0xb8, 0xaa, 0xc2, 0x4e, 0x2c, 0xac, 0xcb, 0x15};
101 NaoSensorInterface::~NaoSensorInterface()
119 default:
return "UNKNOWN";
130 return data->accel_x;
160 return data->accel_y;
190 return data->accel_z;
280 return data->gyro_ref;
310 return data->angle_x;
340 return data->angle_y;
370 return data->l_fsr_fl;
400 return data->l_fsr_fr;
430 return data->l_fsr_rl;
460 return data->l_fsr_rr;
490 return data->r_fsr_fl;
520 return data->r_fsr_fr;
550 return data->r_fsr_rl;
580 return data->r_fsr_rr;
610 return data->l_total_weight;
640 return data->r_total_weight;
670 return data->l_cop_x;
700 return data->l_cop_y;
730 return data->r_cop_x;
760 return data->r_cop_y;
793 return data->ultrasonic_distance_left;
809 throw Exception(
"Index value %u out of bounds (0..3)", index);
811 return data->ultrasonic_distance_left[index];
860 return data->ultrasonic_distance_right;
876 throw Exception(
"Index value %u out of bounds (0..3)", index);
878 return data->ultrasonic_distance_right[index];
958 return data->l_foot_bumper_l;
988 return data->l_foot_bumper_r;
1018 return data->r_foot_bumper_l;
1048 return data->r_foot_bumper_r;
1078 return data->head_touch_front;
1108 return data->head_touch_middle;
1138 return data->head_touch_rear;
1168 return data->chest_button;
1198 return data->battery_charge;
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);
1249 memcpy(data, oi->data,
sizeof(NaoSensorInterface_data_t));
1255 if (strcmp(enumtype,
"UltrasonicDirection") == 0) {
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;
float gyro_x() const
Get gyro_x value.
float accel_y() const
Get accel_y value.
StopUltrasonicMessage Fawkes BlackBoard Interface Message.
void set_angle_y(const float new_angle_y)
Set angle_y value.
float l_total_weight() const
Get l_total_weight value.
void set_l_foot_bumper_l(const uint8_t new_l_foot_bumper_l)
Set l_foot_bumper_l value.
void * data_ptr
Pointer to local memory storage.
void set_gyro_y(const float new_gyro_y)
Set gyro_y value.
void set_l_foot_bumper_r(const uint8_t new_l_foot_bumper_r)
Set l_foot_bumper_r value.
float l_fsr_rr() const
Get l_fsr_rr value.
@ USD_NONE
No transmission received, yet.
@ IFT_UINT8
8 bit unsigned integer field
void set_r_cop_y(const float new_r_cop_y)
Set r_cop_y value.
size_t maxlenof_accel_y() const
Get maximum length of accel_y value.
void set_ultrasonic_distance_right(unsigned int index, const float new_ultrasonic_distance_right)
Set ultrasonic_distance_right value at given index.
@ USD_RIGHT_LEFT
Right emitter and left receiver.
size_t maxlenof_ultrasonic_direction() const
Get maximum length of ultrasonic_direction value.
void set_accel_y(const float new_accel_y)
Set accel_y value.
void set_ultrasonic_direction(const UltrasonicDirection new_ultrasonic_direction)
Set ultrasonic_direction value.
float r_fsr_rl() const
Get r_fsr_rl value.
size_t maxlenof_head_touch_front() const
Get maximum length of head_touch_front value.
float l_fsr_fr() const
Get l_fsr_fr value.
StopUltrasonicMessage()
Constructor.
float l_cop_y() const
Get l_cop_y value.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
virtual Message * clone() const
Clone this message.
UltrasonicDirection
This determines the chosen sender/receiver.
size_t maxlenof_gyro_ref() const
Get maximum length of gyro_ref value.
@ USD_RIGHT_RIGHT
Right emitter and right receiver.
uint8_t head_touch_front() const
Get head_touch_front value.
void * data_ptr
Pointer to memory that contains local data.
size_t maxlenof_l_fsr_rr() const
Get maximum length of l_fsr_rr value.
NaoSensorInterface Fawkes BlackBoard Interface.
size_t maxlenof_accel_z() const
Get maximum length of accel_z value.
void set_gyro_x(const float new_gyro_x)
Set gyro_x value.
message_data_ts_t * data_ts
data timestamp aliasing pointer
@ IFT_ENUM
field with interface specific enum type
void set_r_fsr_rl(const float new_r_fsr_rl)
Set r_fsr_rl value.
float r_cop_x() const
Get r_cop_x value.
void set_r_foot_bumper_r(const uint8_t new_r_foot_bumper_r)
Set r_foot_bumper_r value.
void set_gyro_ref(const float new_gyro_ref)
Set gyro_ref value.
size_t maxlenof_ultrasonic_direction() const
Get maximum length of ultrasonic_direction value.
size_t maxlenof_l_foot_bumper_l() const
Get maximum length of l_foot_bumper_l value.
uint8_t head_touch_rear() const
Get head_touch_rear value.
float l_cop_x() const
Get l_cop_x value.
float battery_charge() const
Get battery_charge value.
const char * type() const
Get type of interface.
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 field info list.
void set_head_touch_rear(const uint8_t new_head_touch_rear)
Set head_touch_rear value.
float r_total_weight() const
Get r_total_weight value.
void set_head_touch_middle(const uint8_t new_head_touch_middle)
Set head_touch_middle value.
void set_accel_x(const float new_accel_x)
Set accel_x value.
size_t maxlenof_l_fsr_fr() const
Get maximum length of l_fsr_fr value.
void set_ultrasonic_direction(const UltrasonicDirection new_ultrasonic_direction)
Set ultrasonic_direction value.
interface_data_ts_t * data_ts
Pointer to data casted to timestamp struct.
uint8_t l_foot_bumper_l() const
Get l_foot_bumper_l value.
void set_l_fsr_fr(const float new_l_fsr_fr)
Set l_fsr_fr value.
size_t maxlenof_ultrasonic_direction() const
Get maximum length of ultrasonic_direction value.
void set_r_cop_x(const float new_r_cop_x)
Set r_cop_x value.
uint8_t r_foot_bumper_l() const
Get r_foot_bumper_l value.
size_t maxlenof_l_total_weight() const
Get maximum length of l_total_weight value.
Timestamp data, must be present and first entries for each interface data structs!...
size_t maxlenof_r_foot_bumper_r() const
Get maximum length of r_foot_bumper_r value.
size_t maxlenof_l_cop_y() const
Get maximum length of l_cop_y value.
~StopUltrasonicMessage()
Destructor.
size_t maxlenof_accel_x() const
Get maximum length of accel_x value.
void set_r_fsr_rr(const float new_r_fsr_rr)
Set r_fsr_rr value.
size_t maxlenof_ultrasonic_distance_right() const
Get maximum length of ultrasonic_distance_right value.
bool data_changed
Indicator if data has changed.
size_t maxlenof_battery_charge() const
Get maximum length of battery_charge value.
virtual const char * enum_tostring(const char *enumtype, int val) const
Convert arbitrary enum value to string.
size_t maxlenof_r_cop_x() const
Get maximum length of r_cop_x value.
void set_l_fsr_fl(const float new_l_fsr_fl)
Set l_fsr_fl value.
void set_ultrasonic_direction(const UltrasonicDirection new_ultrasonic_direction)
Set ultrasonic_direction value.
size_t maxlenof_angle_x() const
Get maximum length of angle_x value.
size_t maxlenof_r_fsr_rl() const
Get maximum length of r_fsr_rl value.
Fawkes library namespace.
void set_hash(unsigned char *ihash)
Set hash.
size_t maxlenof_r_fsr_fr() const
Get maximum length of r_fsr_fr value.
unsigned int data_size
Size of memory needed to hold all data.
void set_ultrasonic_distance_left(unsigned int index, const float new_ultrasonic_distance_left)
Set ultrasonic_distance_left value at given index.
void set_chest_button(const uint8_t new_chest_button)
Set chest_button value.
float r_fsr_rr() const
Get r_fsr_rr value.
float l_fsr_fl() const
Get l_fsr_fl value.
float r_fsr_fr() const
Get r_fsr_fr value.
~EmitUltrasonicWaveMessage()
Destructor.
const char * tostring_UltrasonicDirection(UltrasonicDirection value) const
Convert UltrasonicDirection constant to string.
void set_angle_x(const float new_angle_x)
Set angle_x value.
@ USD_BOTH_BOTH
Both emitters and both receivers.
Base class for all Fawkes BlackBoard interfaces.
size_t maxlenof_l_fsr_fl() const
Get maximum length of l_fsr_fl value.
uint8_t r_foot_bumper_r() const
Get r_foot_bumper_r value.
EmitUltrasonicWaveMessage()
Constructor.
size_t maxlenof_gyro_y() const
Get maximum length of gyro_y value.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
void set_l_total_weight(const float new_l_total_weight)
Set l_total_weight value.
void set_l_cop_y(const float new_l_cop_y)
Set l_cop_y value.
size_t maxlenof_r_cop_y() const
Get maximum length of r_cop_y value.
virtual Message * clone() const
Clone this message.
void set_accel_z(const float new_accel_z)
Set accel_z value.
@ USD_LEFT_LEFT
Left emitter and left receiver.
float gyro_ref() const
Get gyro_ref value.
uint8_t head_touch_middle() const
Get head_touch_middle value.
float accel_x() const
Get accel_x value.
void set_l_fsr_rr(const float new_l_fsr_rr)
Set l_fsr_rr value.
size_t maxlenof_r_total_weight() const
Get maximum length of r_total_weight value.
virtual Message * create_message(const char *type) const
Create message based on type name.
size_t maxlenof_angle_y() const
Get maximum length of angle_y value.
float r_fsr_fl() const
Get r_fsr_fl value.
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.
size_t maxlenof_r_fsr_fl() const
Get maximum length of r_fsr_fl value.
uint8_t l_foot_bumper_r() const
Get l_foot_bumper_r value.
unsigned int data_size
Minimal data size to hold data storage.
void set_r_fsr_fr(const float new_r_fsr_fr)
Set r_fsr_fr value.
size_t maxlenof_ultrasonic_distance_left() const
Get maximum length of ultrasonic_distance_left value.
~StartUltrasonicMessage()
Destructor.
void set_head_touch_front(const uint8_t new_head_touch_front)
Set head_touch_front value.
void set_l_fsr_rl(const float new_l_fsr_rl)
Set l_fsr_rl value.
void set_battery_charge(const float new_battery_charge)
Set battery_charge value.
float * ultrasonic_distance_right() const
Get ultrasonic_distance_right value.
size_t maxlenof_gyro_x() const
Get maximum length of gyro_x value.
size_t maxlenof_head_touch_middle() const
Get maximum length of head_touch_middle value.
size_t maxlenof_l_foot_bumper_r() const
Get maximum length of l_foot_bumper_r value.
size_t maxlenof_l_cop_x() const
Get maximum length of l_cop_x value.
void set_l_cop_x(const float new_l_cop_x)
Set l_cop_x value.
StartUltrasonicMessage()
Constructor.
size_t maxlenof_l_fsr_rl() const
Get maximum length of l_fsr_rl value.
UltrasonicDirection ultrasonic_direction() const
Get ultrasonic_direction value.
StartUltrasonicMessage Fawkes BlackBoard Interface Message.
size_t maxlenof_r_foot_bumper_l() const
Get maximum length of r_foot_bumper_l value.
float l_fsr_rl() const
Get l_fsr_rl value.
void add_messageinfo(const char *name)
Add an entry to the message info list.
void set_r_total_weight(const float new_r_total_weight)
Set r_total_weight value.
size_t maxlenof_r_fsr_rr() const
Get maximum length of r_fsr_rr value.
uint8_t chest_button() const
Get chest_button value.
virtual void copy_values(const Interface *other)
Copy values from other interface.
float accel_z() const
Get accel_z value.
@ USD_LEFT_RIGHT
Left emitter and right receiver.
float gyro_y() const
Get gyro_y value.
bool change_field(FieldT &field, const DataT &value)
Set a field and return whether it changed.
virtual Message * clone() const
Clone this message.
void set_r_foot_bumper_l(const uint8_t new_r_foot_bumper_l)
Set r_foot_bumper_l value.
UltrasonicDirection ultrasonic_direction() const
Get ultrasonic_direction value.
float angle_x() const
Get angle_x value.
float angle_y() const
Get angle_y value.
EmitUltrasonicWaveMessage Fawkes BlackBoard Interface Message.
UltrasonicDirection ultrasonic_direction() const
Get ultrasonic_direction value.
void set_r_fsr_fl(const float new_r_fsr_fl)
Set r_fsr_fl value.
float r_cop_y() const
Get r_cop_y value.
size_t maxlenof_chest_button() const
Get maximum length of chest_button value.
float * ultrasonic_distance_left() const
Get ultrasonic_distance_left value.
size_t maxlenof_head_touch_rear() const
Get maximum length of head_touch_rear value.
Base class for exceptions in Fawkes.