24 #include <interfaces/NaoSensorInterface.h>
26 #include <core/exceptions/software.h>
44 NaoSensorInterface::NaoSensorInterface() : Interface()
46 data_size =
sizeof(NaoSensorInterface_data_t);
48 data = (NaoSensorInterface_data_t *)
data_ptr;
88 unsigned char tmp_hash[] = {0x41, 0x41, 0x54, 0x94, 0xca, 0xe8, 0x3d, 0x7a, 0xb8, 0xaa, 0xc2, 0x4e, 0x2c, 0xac, 0xcb, 0x15};
93 NaoSensorInterface::~NaoSensorInterface()
111 default:
return "UNKNOWN";
122 return data->accel_x;
142 data->accel_x = new_accel_x;
153 return data->accel_y;
173 data->accel_y = new_accel_y;
184 return data->accel_z;
204 data->accel_z = new_accel_z;
235 data->gyro_x = new_gyro_x;
266 data->gyro_y = new_gyro_y;
277 return data->gyro_ref;
297 data->gyro_ref = new_gyro_ref;
308 return data->angle_x;
328 data->angle_x = new_angle_x;
339 return data->angle_y;
359 data->angle_y = new_angle_y;
370 return data->l_fsr_fl;
390 data->l_fsr_fl = new_l_fsr_fl;
401 return data->l_fsr_fr;
421 data->l_fsr_fr = new_l_fsr_fr;
432 return data->l_fsr_rl;
452 data->l_fsr_rl = new_l_fsr_rl;
463 return data->l_fsr_rr;
483 data->l_fsr_rr = new_l_fsr_rr;
494 return data->r_fsr_fl;
514 data->r_fsr_fl = new_r_fsr_fl;
525 return data->r_fsr_fr;
545 data->r_fsr_fr = new_r_fsr_fr;
556 return data->r_fsr_rl;
576 data->r_fsr_rl = new_r_fsr_rl;
587 return data->r_fsr_rr;
607 data->r_fsr_rr = new_r_fsr_rr;
618 return data->l_total_weight;
638 data->l_total_weight = new_l_total_weight;
649 return data->r_total_weight;
669 data->r_total_weight = new_r_total_weight;
680 return data->l_cop_x;
700 data->l_cop_x = new_l_cop_x;
711 return data->l_cop_y;
731 data->l_cop_y = new_l_cop_y;
742 return data->r_cop_x;
762 data->r_cop_x = new_r_cop_x;
773 return data->r_cop_y;
793 data->r_cop_y = new_r_cop_y;
807 return data->ultrasonic_distance_left;
823 throw Exception(
"Index value %u out of bounds (0..4)", index);
825 return data->ultrasonic_distance_left[index];
848 memcpy(data->ultrasonic_distance_left, new_ultrasonic_distance_left,
sizeof(
float) * 4);
864 throw Exception(
"Index value %u out of bounds (0..4)", index);
866 data->ultrasonic_distance_left[index] = new_ultrasonic_distance_left;
879 return data->ultrasonic_distance_right;
895 throw Exception(
"Index value %u out of bounds (0..4)", index);
897 return data->ultrasonic_distance_right[index];
920 memcpy(data->ultrasonic_distance_right, new_ultrasonic_distance_right,
sizeof(
float) * 4);
936 throw Exception(
"Index value %u out of bounds (0..4)", index);
938 data->ultrasonic_distance_right[index] = new_ultrasonic_distance_right;
972 data->ultrasonic_direction = new_ultrasonic_direction;
983 return data->l_foot_bumper_l;
1003 data->l_foot_bumper_l = new_l_foot_bumper_l;
1014 return data->l_foot_bumper_r;
1034 data->l_foot_bumper_r = new_l_foot_bumper_r;
1045 return data->r_foot_bumper_l;
1065 data->r_foot_bumper_l = new_r_foot_bumper_l;
1076 return data->r_foot_bumper_r;
1096 data->r_foot_bumper_r = new_r_foot_bumper_r;
1107 return data->head_touch_front;
1127 data->head_touch_front = new_head_touch_front;
1138 return data->head_touch_middle;
1158 data->head_touch_middle = new_head_touch_middle;
1169 return data->head_touch_rear;
1189 data->head_touch_rear = new_head_touch_rear;
1200 return data->chest_button;
1220 data->chest_button = new_chest_button;
1231 return data->battery_charge;
1251 data->battery_charge = new_battery_charge;
1259 if ( strncmp(
"EmitUltrasonicWaveMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
1261 }
else if ( strncmp(
"StartUltrasonicMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
1263 }
else if ( strncmp(
"StopUltrasonicMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
1267 "message type for this interface type.", type);
1283 memcpy(data, oi->data,
sizeof(NaoSensorInterface_data_t));
1289 if (strcmp(enumtype,
"UltrasonicDirection") == 0) {
1308 data_size =
sizeof(EmitUltrasonicWaveMessage_data_t);
1311 data = (EmitUltrasonicWaveMessage_data_t *)
data_ptr;
1313 data->ultrasonic_direction = ini_ultrasonic_direction;
1314 add_fieldinfo(
IFT_ENUM,
"ultrasonic_direction", 1, &data->ultrasonic_direction,
"°ÐasonicDirection");
1319 data_size =
sizeof(EmitUltrasonicWaveMessage_data_t);
1322 data = (EmitUltrasonicWaveMessage_data_t *)
data_ptr;
1324 add_fieldinfo(
IFT_ENUM,
"ultrasonic_direction", 1, &data->ultrasonic_direction,
"°ÐasonicDirection");
1341 data = (EmitUltrasonicWaveMessage_data_t *)
data_ptr;
1377 data->ultrasonic_direction = new_ultrasonic_direction;
1402 data_size =
sizeof(StartUltrasonicMessage_data_t);
1405 data = (StartUltrasonicMessage_data_t *)
data_ptr;
1407 data->ultrasonic_direction = ini_ultrasonic_direction;
1408 add_fieldinfo(
IFT_ENUM,
"ultrasonic_direction", 1, &data->ultrasonic_direction,
"°ÐasonicDirection");
1413 data_size =
sizeof(StartUltrasonicMessage_data_t);
1416 data = (StartUltrasonicMessage_data_t *)
data_ptr;
1418 add_fieldinfo(
IFT_ENUM,
"ultrasonic_direction", 1, &data->ultrasonic_direction,
"°ÐasonicDirection");
1435 data = (StartUltrasonicMessage_data_t *)
data_ptr;
1471 data->ultrasonic_direction = new_ultrasonic_direction;
1494 data_size =
sizeof(StopUltrasonicMessage_data_t);
1497 data = (StopUltrasonicMessage_data_t *)
data_ptr;
1515 data = (StopUltrasonicMessage_data_t *)
data_ptr;
size_t maxlenof_ultrasonic_distance_left() const
Get maximum length of ultrasonic_distance_left value.
size_t maxlenof_r_fsr_fr() const
Get maximum length of r_fsr_fr value.
float r_fsr_fr() const
Get r_fsr_fr value.
float accel_x() const
Get accel_x value.
size_t maxlenof_ultrasonic_direction() const
Get maximum length of ultrasonic_direction value.
void * data_ptr
Pointer to memory that contains local data.
void set_l_fsr_rl(const float new_l_fsr_rl)
Set l_fsr_rl value.
float accel_y() const
Get accel_y value.
size_t maxlenof_r_foot_bumper_r() const
Get maximum length of r_foot_bumper_r value.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
float l_fsr_rl() const
Get l_fsr_rl value.
float l_fsr_fr() const
Get l_fsr_fr value.
void set_r_foot_bumper_r(const uint8_t new_r_foot_bumper_r)
Set r_foot_bumper_r value.
float r_fsr_rr() const
Get r_fsr_rr value.
void set_accel_x(const float new_accel_x)
Set accel_x value.
StopUltrasonicMessage()
Constructor.
size_t maxlenof_gyro_y() const
Get maximum length of gyro_y value.
size_t maxlenof_l_cop_x() const
Get maximum length of l_cop_x value.
StopUltrasonicMessage Fawkes BlackBoard Interface Message.
float r_fsr_fl() const
Get r_fsr_fl value.
void set_l_fsr_fl(const float new_l_fsr_fl)
Set l_fsr_fl value.
size_t maxlenof_l_fsr_rl() const
Get maximum length of l_fsr_rl value.
size_t maxlenof_r_fsr_rr() const
Get maximum length of r_fsr_rr value.
EmitUltrasonicWaveMessage()
Constructor.
virtual const char * enum_tostring(const char *enumtype, int val) const
Convert arbitrary enum value to string.
UltrasonicDirection ultrasonic_direction() const
Get ultrasonic_direction value.
size_t maxlenof_l_fsr_rr() const
Get maximum length of l_fsr_rr value.
void set_hash(unsigned char *ihash)
Set hash.
void set_head_touch_front(const uint8_t new_head_touch_front)
Set head_touch_front value.
float r_cop_x() const
Get r_cop_x value.
void set_chest_button(const uint8_t new_chest_button)
Set chest_button value.
float gyro_ref() const
Get gyro_ref value.
void set_accel_z(const float new_accel_z)
Set accel_z value.
Fawkes library namespace.
8 bit unsigned integer field
Timestamp data, must be present and first entries for each interface data structs! This leans on time...
Right emitter and right receiver.
unsigned int data_size
Minimal data size to hold data storage.
void set_l_fsr_rr(const float new_l_fsr_rr)
Set l_fsr_rr value.
size_t maxlenof_l_foot_bumper_l() const
Get maximum length of l_foot_bumper_l value.
Right emitter and left receiver.
size_t maxlenof_angle_y() const
Get maximum length of angle_y value.
virtual Message * clone() const
Clone this message.
void set_ultrasonic_direction(const UltrasonicDirection new_ultrasonic_direction)
Set ultrasonic_direction value.
size_t maxlenof_accel_z() const
Get maximum length of accel_z value.
float * ultrasonic_distance_left() const
Get ultrasonic_distance_left value.
uint8_t l_foot_bumper_r() const
Get l_foot_bumper_r value.
void set_l_total_weight(const float new_l_total_weight)
Set l_total_weight value.
size_t maxlenof_accel_y() const
Get maximum length of accel_y value.
float angle_x() const
Get angle_x value.
StartUltrasonicMessage Fawkes BlackBoard Interface Message.
size_t maxlenof_r_cop_y() const
Get maximum length of r_cop_y value.
void set_r_total_weight(const float new_r_total_weight)
Set r_total_weight value.
uint8_t l_foot_bumper_l() const
Get l_foot_bumper_l value.
float gyro_x() const
Get gyro_x value.
void set_ultrasonic_direction(const UltrasonicDirection new_ultrasonic_direction)
Set ultrasonic_direction value.
float * ultrasonic_distance_right() const
Get ultrasonic_distance_right value.
size_t maxlenof_gyro_x() const
Get maximum length of gyro_x value.
NaoSensorInterface Fawkes BlackBoard Interface.
void set_l_cop_y(const float new_l_cop_y)
Set l_cop_y value.
size_t maxlenof_head_touch_middle() const
Get maximum length of head_touch_middle value.
size_t maxlenof_ultrasonic_direction() const
Get maximum length of ultrasonic_direction value.
Base class for all Fawkes BlackBoard interfaces.
void set_gyro_y(const float new_gyro_y)
Set gyro_y value.
float l_cop_y() const
Get l_cop_y value.
void set_battery_charge(const float new_battery_charge)
Set battery_charge value.
UltrasonicDirection ultrasonic_direction() const
Get ultrasonic_direction value.
float angle_y() const
Get angle_y value.
uint8_t r_foot_bumper_r() const
Get r_foot_bumper_r value.
size_t maxlenof_r_fsr_rl() const
Get maximum length of r_fsr_rl value.
message_data_ts_t * data_ts
data timestamp aliasing pointer
uint8_t head_touch_middle() const
Get head_touch_middle value.
size_t maxlenof_accel_x() const
Get maximum length of accel_x value.
unsigned int data_size
Size of memory needed to hold all data.
size_t maxlenof_ultrasonic_direction() const
Get maximum length of ultrasonic_direction value.
void set_r_fsr_fr(const float new_r_fsr_fr)
Set r_fsr_fr value.
size_t maxlenof_chest_button() const
Get maximum length of chest_button value.
size_t maxlenof_gyro_ref() const
Get maximum length of gyro_ref value.
size_t maxlenof_l_foot_bumper_r() const
Get maximum length of l_foot_bumper_r value.
void add_messageinfo(const char *name)
Add an entry to the message info list.
void set_ultrasonic_distance_right(unsigned int index, const float new_ultrasonic_distance_right)
Set ultrasonic_distance_right value at given index.
virtual void copy_values(const Interface *other)
Copy values from other interface.
bool data_changed
Indicator if data has changed.
void set_r_fsr_fl(const float new_r_fsr_fl)
Set r_fsr_fl value.
UltrasonicDirection
This determines the chosen sender/receiver.
void set_r_cop_y(const float new_r_cop_y)
Set r_cop_y value.
void * data_ptr
Pointer to local memory storage.
Base class for exceptions in Fawkes.
void set_gyro_x(const float new_gyro_x)
Set gyro_x value.
~StartUltrasonicMessage()
Destructor.
Both emitters and both receivers.
uint8_t head_touch_front() const
Get head_touch_front value.
void set_angle_y(const float new_angle_y)
Set angle_y value.
StartUltrasonicMessage()
Constructor.
Left emitter and left receiver.
~EmitUltrasonicWaveMessage()
Destructor.
void set_accel_y(const float new_accel_y)
Set accel_y value.
size_t maxlenof_r_foot_bumper_l() const
Get maximum length of r_foot_bumper_l value.
void set_l_foot_bumper_r(const uint8_t new_l_foot_bumper_r)
Set l_foot_bumper_r value.
size_t maxlenof_l_cop_y() const
Get maximum length of l_cop_y value.
~StopUltrasonicMessage()
Destructor.
const char * tostring_UltrasonicDirection(UltrasonicDirection value) const
Convert UltrasonicDirection constant to string.
float l_cop_x() const
Get l_cop_x value.
size_t maxlenof_r_cop_x() const
Get maximum length of r_cop_x value.
float l_fsr_fl() const
Get l_fsr_fl value.
size_t maxlenof_l_total_weight() const
Get maximum length of l_total_weight value.
void set_l_cop_x(const float new_l_cop_x)
Set l_cop_x value.
float accel_z() const
Get accel_z value.
void set_r_foot_bumper_l(const uint8_t new_r_foot_bumper_l)
Set r_foot_bumper_l value.
void set_l_fsr_fr(const float new_l_fsr_fr)
Set l_fsr_fr value.
void add_fieldinfo(interface_fieldtype_t type, const char *name, size_t length, void *value, const char *enumtype=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.
size_t maxlenof_ultrasonic_distance_right() const
Get maximum length of ultrasonic_distance_right value.
uint8_t head_touch_rear() const
Get head_touch_rear value.
size_t maxlenof_angle_x() const
Get maximum length of angle_x value.
void set_l_foot_bumper_l(const uint8_t new_l_foot_bumper_l)
Set l_foot_bumper_l value.
size_t maxlenof_l_fsr_fl() const
Get maximum length of l_fsr_fl value.
size_t maxlenof_head_touch_front() const
Get maximum length of head_touch_front value.
size_t maxlenof_head_touch_rear() const
Get maximum length of head_touch_rear value.
virtual Message * create_message(const char *type) const
Create message based on type name.
float gyro_y() const
Get gyro_y value.
uint8_t r_foot_bumper_l() const
Get r_foot_bumper_l value.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
float battery_charge() const
Get battery_charge value.
size_t maxlenof_l_fsr_fr() const
Get maximum length of l_fsr_fr value.
void set_r_fsr_rl(const float new_r_fsr_rl)
Set r_fsr_rl value.
size_t maxlenof_battery_charge() const
Get maximum length of battery_charge value.
void add_fieldinfo(interface_fieldtype_t type, const char *name, size_t length, void *value, const char *enumtype=0)
Add an entry to the info list.
EmitUltrasonicWaveMessage Fawkes BlackBoard Interface Message.
size_t maxlenof_r_fsr_fl() const
Get maximum length of r_fsr_fl value.
void set_ultrasonic_distance_left(unsigned int index, const float new_ultrasonic_distance_left)
Set ultrasonic_distance_left value at given index.
void set_r_fsr_rr(const float new_r_fsr_rr)
Set r_fsr_rr value.
UltrasonicDirection ultrasonic_direction() const
Get ultrasonic_direction value.
interface_data_ts_t * data_ts
Pointer to data casted to timestamp struct.
float r_cop_y() const
Get r_cop_y value.
size_t maxlenof_r_total_weight() const
Get maximum length of r_total_weight value.
No transmission received, yet.
float l_total_weight() const
Get l_total_weight value.
virtual Message * clone() const
Clone this message.
float r_total_weight() const
Get r_total_weight value.
const char * type() const
Get type of interface.
float l_fsr_rr() const
Get l_fsr_rr value.
void set_r_cop_x(const float new_r_cop_x)
Set r_cop_x value.
virtual Message * clone() const
Clone this message.
void set_ultrasonic_direction(const UltrasonicDirection new_ultrasonic_direction)
Set ultrasonic_direction value.
field with interface specific enum type
float r_fsr_rl() const
Get r_fsr_rl value.
void set_head_touch_middle(const uint8_t new_head_touch_middle)
Set head_touch_middle value.
Left emitter and right receiver.
uint8_t chest_button() const
Get chest_button value.
void set_angle_x(const float new_angle_x)
Set angle_x value.
void set_gyro_ref(const float new_gyro_ref)
Set gyro_ref value.