Skip to content

Commit d8bec80

Browse files
authored
[primary interface] Fix parsing of primary messages (UniversalRobots#426)
- Message source is a signed integer - Added missing MessageTypes - Add raw data to RobotMessage if no specialization is known - Correctly pass MessageType to RobotMessage - Print string version of MessageType
1 parent bb8235d commit d8bec80

5 files changed

Lines changed: 44 additions & 4 deletions

File tree

include/ur_client_library/primary/primary_parser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ class PrimaryParser : public comm::Parser<PrimaryPackage>
185185
case RobotMessagePackageType::ROBOT_MESSAGE_KEY:
186186
return new KeyMessage(timestamp, source);
187187
default:
188-
return new RobotMessage(timestamp, source);
188+
return new RobotMessage(timestamp, source, type);
189189
}
190190
}
191191
};

include/ur_client_library/primary/robot_message.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ class RobotMessage : public PrimaryPackage
106106
virtual std::string toString() const;
107107

108108
uint64_t timestamp_;
109-
uint8_t source_;
109+
int8_t source_;
110110
RobotMessagePackageType message_type_;
111111
};
112112

include/ur_client_library/primary/robot_state.h

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,46 @@ enum class RobotStateType : uint8_t
5050
CONFIGURATION_DATA = 6,
5151
FORCE_MODE_DATA = 7,
5252
ADDITIONAL_INFO = 8,
53-
CALIBRATION_DATA = 9
53+
CALIBRATION_DATA = 9,
54+
SAFETY_DATA = 10,
55+
TOOL_COMM_INFO = 11,
56+
TOOL_MODE_INFO = 12
5457
};
5558

59+
inline const char* robotStateString(const RobotStateType state_type)
60+
{
61+
switch (state_type)
62+
{
63+
case RobotStateType::ROBOT_MODE_DATA:
64+
return "ROBOT_MODE_DATA";
65+
case RobotStateType::JOINT_DATA:
66+
return "JOINT_DATA";
67+
case RobotStateType::TOOL_DATA:
68+
return "TOOL_DATA";
69+
case RobotStateType::MASTERBOARD_DATA:
70+
return "MASTERBOARD_DATA";
71+
case RobotStateType::CARTESIAN_INFO:
72+
return "CARTESIAN_INFO";
73+
case RobotStateType::KINEMATICS_INFO:
74+
return "KINEMATICS_INFO";
75+
case RobotStateType::CONFIGURATION_DATA:
76+
return "CONFIGURATION_DATA";
77+
case RobotStateType::FORCE_MODE_DATA:
78+
return "FORCE_MODE_DATA";
79+
case RobotStateType::ADDITIONAL_INFO:
80+
return "ADDITIONAL_INFO";
81+
case RobotStateType::CALIBRATION_DATA:
82+
return "CALIBRATION_DATA";
83+
case RobotStateType::SAFETY_DATA:
84+
return "SAFETY_DATA";
85+
case RobotStateType::TOOL_COMM_INFO:
86+
return "TOOL_COMM_INFO";
87+
case RobotStateType::TOOL_MODE_INFO:
88+
return "TOOL_MODE_INFO";
89+
}
90+
return "";
91+
}
92+
5693
/*!
5794
* \brief Base class for a RobotState data packages will be used directly.
5895
*/

src/primary/robot_message.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ namespace primary_interface
3434
{
3535
bool RobotMessage::parseWith(comm::BinParser& bp)
3636
{
37+
bp.rawData(buffer_, buffer_length_);
3738
return true;
3839
}
3940

@@ -48,6 +49,7 @@ std::string RobotMessage::toString() const
4849
ss << "timestamp: " << timestamp_ << std::endl;
4950
ss << "source: " << static_cast<int>(source_) << std::endl;
5051
ss << "message_type: " << static_cast<int>(message_type_) << std::endl;
52+
ss << PrimaryPackage::toString();
5153

5254
return ss.str();
5355
}

src/primary/robot_state.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ bool RobotState::consumeWith(AbstractPrimaryConsumer& consumer)
4747
std::string RobotState::toString() const
4848
{
4949
std::stringstream ss;
50-
ss << "Type: " << static_cast<int>(state_type_) << std::endl;
50+
ss << "RobotState package of type: " << robotStateString(state_type_) << "( " << static_cast<int>(state_type_) << ")"
51+
<< std::endl;
5152
ss << PrimaryPackage::toString();
5253
return ss.str();
5354
}

0 commit comments

Comments
 (0)