24 #include <interfaces/MotorInterface.h>
26 #include <core/exceptions/software.h>
60 MotorInterface::MotorInterface() : Interface()
62 data_size =
sizeof(MotorInterface_data_t);
64 data = (MotorInterface_data_t *)
data_ptr;
91 unsigned char tmp_hash[] = {0x4d, 0x9b, 0xb8, 0x1e, 0xb7, 0x9e, 0xc1, 0xea, 0xc6, 0xad, 0xf9, 0x6, 0xd7, 0x6d, 0xa4, 0xa5};
96 MotorInterface::~MotorInterface()
110 return data->motor_state;
132 data->motor_state = new_motor_state;
145 return data->drive_mode;
167 data->drive_mode = new_drive_mode;
180 return data->right_rpm;
202 data->right_rpm = new_right_rpm;
215 return data->rear_rpm;
237 data->rear_rpm = new_rear_rpm;
250 return data->left_rpm;
272 data->left_rpm = new_left_rpm;
285 return data->odometry_path_length;
307 data->odometry_path_length = new_odometry_path_length;
320 return data->odometry_position_x;
342 data->odometry_position_x = new_odometry_position_x;
355 return data->odometry_position_y;
377 data->odometry_position_y = new_odometry_position_y;
390 return data->odometry_orientation;
412 data->odometry_orientation = new_odometry_orientation;
517 data->omega = new_omega;
531 return data->controller;
554 data->controller = new_controller;
569 return data->controller_thread_name;
593 strncpy(data->controller_thread_name, new_controller_thread_name,
sizeof(data->controller_thread_name));
601 if ( strncmp(
"SetMotorStateMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
603 }
else if ( strncmp(
"AcquireControlMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
605 }
else if ( strncmp(
"ResetOdometryMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
607 }
else if ( strncmp(
"DriveRPMMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
609 }
else if ( strncmp(
"GotoMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
611 }
else if ( strncmp(
"TransMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
613 }
else if ( strncmp(
"RotMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
615 }
else if ( strncmp(
"TransRotMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
617 }
else if ( strncmp(
"OrbitMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
619 }
else if ( strncmp(
"LinTransRotMessage", type, __INTERFACE_MESSAGE_TYPE_SIZE) == 0 ) {
623 "message type for this interface type.", type);
639 memcpy(data, oi->data,
sizeof(MotorInterface_data_t));
661 data_size =
sizeof(SetMotorStateMessage_data_t);
664 data = (SetMotorStateMessage_data_t *)
data_ptr;
666 data->motor_state = ini_motor_state;
672 data_size =
sizeof(SetMotorStateMessage_data_t);
675 data = (SetMotorStateMessage_data_t *)
data_ptr;
694 data = (SetMotorStateMessage_data_t *)
data_ptr;
708 return data->motor_state;
730 data->motor_state = new_motor_state;
756 data_size =
sizeof(AcquireControlMessage_data_t);
759 data = (AcquireControlMessage_data_t *)
data_ptr;
761 data->controller = ini_controller;
762 strncpy(data->controller_thread_name, ini_controller_thread_name, 64);
769 data_size =
sizeof(AcquireControlMessage_data_t);
772 data = (AcquireControlMessage_data_t *)
data_ptr;
792 data = (AcquireControlMessage_data_t *)
data_ptr;
807 return data->controller;
830 data->controller = new_controller;
844 return data->controller_thread_name;
868 strncpy(data->controller_thread_name, new_controller_thread_name,
sizeof(data->controller_thread_name));
891 data_size =
sizeof(ResetOdometryMessage_data_t);
894 data = (ResetOdometryMessage_data_t *)
data_ptr;
912 data = (ResetOdometryMessage_data_t *)
data_ptr;
941 data_size =
sizeof(DriveRPMMessage_data_t);
944 data = (DriveRPMMessage_data_t *)
data_ptr;
946 data->front_right = ini_front_right;
947 data->front_left = ini_front_left;
948 data->rear = ini_rear;
956 data_size =
sizeof(DriveRPMMessage_data_t);
959 data = (DriveRPMMessage_data_t *)
data_ptr;
980 data = (DriveRPMMessage_data_t *)
data_ptr;
992 return data->front_right;
1012 data->front_right = new_front_right;
1022 return data->front_left;
1042 data->front_left = new_front_left;
1072 data->rear = new_rear;
1103 data = (GotoMessage_data_t *)
data_ptr;
1107 data->phi = ini_phi;
1108 data->time_sec = ini_time_sec;
1120 data = (GotoMessage_data_t *)
data_ptr;
1142 data = (GotoMessage_data_t *)
data_ptr;
1234 data->phi = new_phi;
1244 return data->time_sec;
1264 data->time_sec = new_time_sec;
1290 data_size =
sizeof(TransMessage_data_t);
1293 data = (TransMessage_data_t *)
data_ptr;
1303 data_size =
sizeof(TransMessage_data_t);
1306 data = (TransMessage_data_t *)
data_ptr;
1326 data = (TransMessage_data_t *)
data_ptr;
1416 data = (RotMessage_data_t *)
data_ptr;
1418 data->omega = ini_omega;
1427 data = (RotMessage_data_t *)
data_ptr;
1446 data = (RotMessage_data_t *)
data_ptr;
1478 data->omega = new_omega;
1505 data_size =
sizeof(TransRotMessage_data_t);
1508 data = (TransRotMessage_data_t *)
data_ptr;
1512 data->omega = ini_omega;
1520 data_size =
sizeof(TransRotMessage_data_t);
1523 data = (TransRotMessage_data_t *)
data_ptr;
1544 data = (TransRotMessage_data_t *)
data_ptr;
1636 data->omega = new_omega;
1663 data_size =
sizeof(OrbitMessage_data_t);
1666 data = (OrbitMessage_data_t *)
data_ptr;
1670 data->omega = ini_omega;
1678 data_size =
sizeof(OrbitMessage_data_t);
1681 data = (OrbitMessage_data_t *)
data_ptr;
1702 data = (OrbitMessage_data_t *)
data_ptr;
1794 data->omega = new_omega;
1821 data_size =
sizeof(LinTransRotMessage_data_t);
1824 data = (LinTransRotMessage_data_t *)
data_ptr;
1828 data->omega = ini_omega;
1836 data_size =
sizeof(LinTransRotMessage_data_t);
1839 data = (LinTransRotMessage_data_t *)
data_ptr;
1860 data = (LinTransRotMessage_data_t *)
data_ptr;
1952 data->omega = new_omega;
~TransMessage()
Destructor.
void set_vy(const float new_vy)
Set vy value.
virtual Message * create_message(const char *type) const
Create message based on type name.
OrbitMessage()
Constructor.
~ResetOdometryMessage()
Destructor.
virtual const char * enum_tostring(const char *enumtype, int val) const
Convert arbitrary enum value to string.
void set_omega(const float new_omega)
Set omega value.
void * data_ptr
Pointer to memory that contains local data.
SetMotorStateMessage Fawkes BlackBoard Interface Message.
static const uint32_t DRIVE_MODE_LINE_TRANS_ROT
DRIVE_MODE_LINE_TRANS_ROT constant.
DriveRPMMessage()
Constructor.
RotMessage Fawkes BlackBoard Interface Message.
size_t maxlenof_left_rpm() const
Get maximum length of left_rpm value.
float py() const
Get py value.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
virtual Message * clone() const
Clone this message.
float omega() const
Get omega value.
static const uint32_t MOTOR_ENABLED
MOTOR_ENABLED constant.
void set_rear(const float new_rear)
Set rear value.
float px() const
Get px value.
size_t maxlenof_odometry_path_length() const
Get maximum length of odometry_path_length value.
static const uint32_t DRIVE_MODE_RPM
DRIVE_MODE_RPM constant.
void set_omega(const float new_omega)
Set omega value.
float x() const
Get x value.
void set_vx(const float new_vx)
Set vx value.
size_t maxlenof_y() const
Get maximum length of y value.
TransRotMessage Fawkes BlackBoard Interface Message.
float phi() const
Get phi value.
size_t maxlenof_motor_state() const
Get maximum length of motor_state value.
void set_hash(unsigned char *ihash)
Set hash.
uint32_t controller() const
Get controller value.
int32_t rear_rpm() const
Get rear_rpm value.
float vy() const
Get vy value.
virtual Message * clone() const
Clone this message.
void set_odometry_position_y(const float new_odometry_position_y)
Set odometry_position_y value.
~AcquireControlMessage()
Destructor.
size_t maxlenof_omega() const
Get maximum length of omega value.
size_t maxlenof_px() const
Get maximum length of px value.
size_t maxlenof_vy() const
Get maximum length of vy value.
TransMessage()
Constructor.
void set_controller(const uint32_t new_controller)
Set controller value.
Timestamp data, must be present and first entries for each interface data structs! This leans on time...
size_t maxlenof_drive_mode() const
Get maximum length of drive_mode value.
float rear() const
Get rear value.
float time_sec() const
Get time_sec value.
float vx() const
Get vx value.
size_t maxlenof_front_left() const
Get maximum length of front_left value.
void set_vy(const float new_vy)
Set vy value.
void set_motor_state(const uint32_t new_motor_state)
Set motor_state value.
void set_vy(const float new_vy)
Set vy value.
size_t maxlenof_motor_state() const
Get maximum length of motor_state value.
virtual Message * clone() const
Clone this message.
~TransRotMessage()
Destructor.
void set_controller(const uint32_t new_controller)
Set controller value.
void set_odometry_orientation(const float new_odometry_orientation)
Set odometry_orientation value.
void set_rear_rpm(const int32_t new_rear_rpm)
Set rear_rpm value.
void set_front_right(const float new_front_right)
Set front_right value.
ResetOdometryMessage()
Constructor.
OrbitMessage Fawkes BlackBoard Interface Message.
void set_motor_state(const uint32_t new_motor_state)
Set motor_state value.
char * controller_thread_name() const
Get controller_thread_name value.
Base class for all Fawkes BlackBoard interfaces.
uint32_t motor_state() const
Get motor_state value.
AcquireControlMessage()
Constructor.
void set_time_sec(const float new_time_sec)
Set time_sec value.
float odometry_orientation() const
Get odometry_orientation value.
void set_omega(const float new_omega)
Set omega value.
size_t maxlenof_vy() const
Get maximum length of vy value.
void set_right_rpm(const int32_t new_right_rpm)
Set right_rpm value.
void set_left_rpm(const int32_t new_left_rpm)
Set left_rpm value.
float omega() const
Get omega value.
message_data_ts_t * data_ts
data timestamp aliasing pointer
float vy() const
Get vy value.
~SetMotorStateMessage()
Destructor.
ResetOdometryMessage Fawkes BlackBoard Interface Message.
unsigned int data_size
Size of memory needed to hold all data.
void set_odometry_path_length(const float new_odometry_path_length)
Set odometry_path_length value.
AcquireControlMessage Fawkes BlackBoard Interface Message.
float omega() const
Get omega value.
LinTransRotMessage()
Constructor.
void add_messageinfo(const char *name)
Add an entry to the message info list.
char * controller_thread_name() const
Get controller_thread_name value.
size_t maxlenof_vx() const
Get maximum length of vx value.
bool data_changed
Indicator if data has changed.
virtual Message * clone() const
Clone this message.
float front_right() const
Get front_right value.
size_t maxlenof_odometry_orientation() const
Get maximum length of odometry_orientation value.
void * data_ptr
Pointer to local memory storage.
static const uint32_t DRIVE_MODE_TRANS_ROT
DRIVE_MODE_TRANS_ROT constant.
float front_left() const
Get front_left value.
~OrbitMessage()
Destructor.
float odometry_position_y() const
Get odometry_position_y value.
size_t maxlenof_controller_thread_name() const
Get maximum length of controller_thread_name value.
void set_vy(const float new_vy)
Set vy value.
size_t maxlenof_omega() const
Get maximum length of omega value.
void set_phi(const float new_phi)
Set phi value.
float vy() const
Get vy value.
void set_vx(const float new_vx)
Set vx value.
size_t maxlenof_omega() const
Get maximum length of omega value.
void set_omega(const float new_omega)
Set omega value.
size_t maxlenof_vx() const
Get maximum length of vx value.
void set_py(const float new_py)
Set py value.
float y() const
Get y value.
static const uint32_t DRIVE_MODE_TRANS
DRIVE_MODE_TRANS constant.
void set_omega(const float new_omega)
Set omega value.
size_t maxlenof_x() const
Get maximum length of x value.
float vx() const
Get vx value.
virtual Message * clone() const
Clone this message.
void set_front_left(const float new_front_left)
Set front_left value.
size_t maxlenof_vy() const
Get maximum length of vy value.
int32_t left_rpm() const
Get left_rpm value.
~LinTransRotMessage()
Destructor.
~DriveRPMMessage()
Destructor.
size_t maxlenof_vx() const
Get maximum length of vx value.
void set_controller_thread_name(const char *new_controller_thread_name)
Set controller_thread_name value.
float vy() const
Get vy value.
LinTransRotMessage Fawkes BlackBoard Interface Message.
GotoMessage()
Constructor.
void set_px(const float new_px)
Set px value.
virtual Message * clone() const
Clone this message.
uint32_t drive_mode() const
Get drive_mode value.
SetMotorStateMessage()
Constructor.
size_t maxlenof_omega() const
Get maximum length of omega value.
size_t maxlenof_time_sec() const
Get maximum length of time_sec value.
float omega() const
Get omega value.
size_t maxlenof_front_right() const
Get maximum length of front_right value.
size_t maxlenof_phi() const
Get maximum length of phi value.
virtual Message * clone() const
Clone this message.
DriveRPMMessage Fawkes BlackBoard Interface Message.
float omega() const
Get omega value.
void set_drive_mode(const uint32_t new_drive_mode)
Set drive_mode value.
size_t maxlenof_vx() const
Get maximum length of vx value.
void set_vx(const float new_vx)
Set vx value.
void set_vx(const float new_vx)
Set vx value.
float vx() const
Get vx value.
virtual Message * clone() const
Clone this message.
float odometry_path_length() const
Get odometry_path_length value.
virtual Message * clone() const
Clone this message.
size_t maxlenof_rear_rpm() const
Get maximum length of rear_rpm value.
size_t maxlenof_odometry_position_y() const
Get maximum length of odometry_position_y 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.
static const uint32_t MOTOR_DISABLED
MOTOR_DISABLED constant.
size_t maxlenof_rear() const
Get maximum length of rear value.
void set_odometry_position_x(const float new_odometry_position_x)
Set odometry_position_x value.
uint32_t controller() const
Get controller value.
size_t maxlenof_controller_thread_name() const
Get maximum length of controller_thread_name value.
size_t maxlenof_controller() const
Get maximum length of controller value.
static const uint32_t DRIVE_MODE_ORBIT
DRIVE_MODE_ORBIT constant.
size_t maxlenof_controller() const
Get maximum length of controller value.
MotorInterface Fawkes BlackBoard Interface.
size_t maxlenof_omega() const
Get maximum length of omega value.
TransRotMessage()
Constructor.
float odometry_position_x() const
Get odometry_position_x value.
GotoMessage Fawkes BlackBoard Interface Message.
~GotoMessage()
Destructor.
const char * type() const
Get type of interface.
int32_t right_rpm() const
Get right_rpm value.
void set_controller_thread_name(const char *new_controller_thread_name)
Set controller_thread_name value.
void set_x(const float new_x)
Set x value.
32 bit unsigned integer field
size_t maxlenof_odometry_position_x() const
Get maximum length of odometry_position_x value.
size_t maxlenof_vy() const
Get maximum length of vy value.
static const uint32_t DRIVE_MODE_ROT
DRIVE_MODE_ROT constant.
virtual void copy_values(const Interface *other)
Copy values from other interface.
uint32_t motor_state() const
Get motor_state value.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
TransMessage Fawkes BlackBoard Interface Message.
float vx() const
Get vx value.
size_t maxlenof_py() const
Get maximum length of py value.
size_t maxlenof_right_rpm() const
Get maximum length of right_rpm value.
void set_y(const float new_y)
Set y value.
virtual Message * clone() const
Clone this message.