ROS-I simple_message 源码分析:JointF
2019-03-21 本文已影响0人
play_robot
JointFeedbackMessage类封装的是JointFeedback数据类型,用途是实现与SimpleMessage的双向数据转换,给出源代码:
namespace industrial
{
namespace joint_feedback_message
{
JointFeedbackMessage::JointFeedbackMessage(void)
{
this->init();
}
JointFeedbackMessage::~JointFeedbackMessage(void)
{
}
bool JointFeedbackMessage::init(industrial::simple_message::SimpleMessage & msg)
{
bool rtn = false;
ByteArray data = msg.getData();
this->init();
if (data.unload(this->data_))
{
rtn = true;
}
else
{
LOG_ERROR("Failed to unload joint feedback message data");
}
return rtn;
}
void JointFeedbackMessage::init(industrial::joint_feedback::JointFeedback & data)
{
this->init();
this->data_.copyFrom(data);
}
void JointFeedbackMessage::init()
{
this->setMessageType(StandardMsgTypes::JOINT_FEEDBACK);
this->data_.init();
}
bool JointFeedbackMessage::load(ByteArray *buffer)
{
bool rtn = false;
LOG_COMM("Executing joint feedback message load");
if (buffer->load(this->data_))
{
rtn = true;
}
else
{
rtn = false;
LOG_ERROR("Failed to load joint feedback message data");
}
return rtn;
}
bool JointFeedbackMessage::unload(ByteArray *buffer)
{
bool rtn = false;
LOG_COMM("Executing joint feedback message unload");
if (buffer->unload(this->data_))
{
rtn = true;
}
else
{
rtn = false;
LOG_ERROR("Failed to unload joint feedback message data");
}
return rtn;
}
}
}
- 从SimpleMessage创建JointFeedbackMessage
bool JointFeedbackMessage::init(industrial::simple_message::SimpleMessage & msg)
{
bool rtn = false;
ByteArray data = msg.getData();
this->init();
if (data.unload(this->data_))
{
rtn = true;
}
else
{
LOG_ERROR("Failed to unload joint feedback message data");
}
return rtn;
}
- 从SimpleMessage创建JointFeedbackMessage
(和RobotStatusMessage一样,直接在基类中实现,此处省略略)