Skip to content

Commit a3d5c81

Browse files
committed
Added handler for ErrorCode messages
1 parent 9d4c534 commit a3d5c81

File tree

3 files changed

+36
-8
lines changed

3 files changed

+36
-8
lines changed

ur_robot_driver/include/ur_robot_driver/primary/primary_consumer.h

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include "ur_robot_driver/primary/primary_package_handler.h"
3434
#include "ur_robot_driver/primary/abstract_primary_consumer.h"
3535
#include "ur_robot_driver/primary/key_message_handler.h"
36+
#include "ur_robot_driver/primary/error_code_message_handler.h"
3637
#include "ur_robot_driver/primary/robot_message/error_code_message.h"
3738
#include "ur_robot_driver/primary/robot_message/key_message.h"
3839
#include "ur_robot_driver/primary/robot_message/runtime_exception_message.h"
@@ -57,6 +58,7 @@ class PrimaryConsumer : public AbstractPrimaryConsumer
5758
{
5859
LOG_INFO("Constructing primary consumer");
5960
key_message_worker_.reset(new KeyMessageHandler());
61+
error_code_message_worker_.reset(new ErrorCodeMessageHandler());
6062
LOG_INFO("Constructed primary consumer");
6163
}
6264
virtual ~PrimaryConsumer() = default;
@@ -71,11 +73,6 @@ class PrimaryConsumer : public AbstractPrimaryConsumer
7173
// LOG_INFO("---RobotState:---\n%s", msg.toString().c_str());
7274
return true;
7375
}
74-
virtual bool consume(ErrorCodeMessage& msg) override
75-
{
76-
LOG_INFO("---ErrorCodeMessage---\n%s", msg.toString().c_str());
77-
return true;
78-
}
7976
virtual bool consume(RuntimeExceptionMessage& msg) override
8077
{
8178
LOG_INFO("---RuntimeExceptionMessage---\n%s", msg.toString().c_str());
@@ -122,13 +119,28 @@ class PrimaryConsumer : public AbstractPrimaryConsumer
122119
return false;
123120
}
124121

122+
/*!
123+
* \brief Handle a ErrorCodeMessage
124+
*
125+
* \returns True if there's a handler for this message type registered. False otherwise.
126+
*/
127+
virtual bool consume(ErrorCodeMessage& pkg) override
128+
{
129+
if (error_code_message_worker_ != nullptr)
130+
{
131+
error_code_message_worker_->handle(pkg);
132+
return true;
133+
}
134+
return false;
135+
}
125136
void setKinematicsInfoHandler(const std::shared_ptr<IPrimaryPackageHandler<KinematicsInfo>>& handler)
126137
{
127138
kinematics_info_message_worker_ = handler;
128139
}
129140

130141
private:
131142
std::shared_ptr<IPrimaryPackageHandler<KeyMessage>> key_message_worker_;
143+
std::shared_ptr<IPrimaryPackageHandler<ErrorCodeMessage>> error_code_message_worker_;
132144
std::shared_ptr<IPrimaryPackageHandler<KinematicsInfo>> kinematics_info_message_worker_;
133145
};
134146
} // namespace primary_interface

ur_robot_driver/include/ur_robot_driver/primary/robot_message/error_code_message.h

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,20 @@ namespace ur_driver
3434
{
3535
namespace primary_interface
3636
{
37+
enum class ReportLevel : int32_t
38+
{
39+
DEBUG = 0,
40+
INFO = 1,
41+
WARNING = 2,
42+
VIOLATION = 3,
43+
FAULT = 4,
44+
DEVL_DEBUG = 128,
45+
DEVL_INFO = 129,
46+
DEVL_WARNING = 130,
47+
DEVL_VIOLATION = 131,
48+
DEVL_FAULT = 132
49+
};
50+
3751
/*!
3852
* \brief The ErrorCodeMessage class handles the error code messages sent via the primary UR interface.
3953
*/
@@ -81,7 +95,7 @@ class ErrorCodeMessage : public RobotMessage
8195

8296
int32_t message_code_;
8397
int32_t message_argument_;
84-
int32_t report_level_;
98+
ReportLevel report_level_;
8599
uint8_t data_type_;
86100
uint32_t data_;
87101
std::string text_;

ur_robot_driver/src/primary/robot_message/error_code_message.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ bool ErrorCodeMessage::parseWith(comm::BinParser& bp)
4040
{
4141
bp.parse(message_code_);
4242
bp.parse(message_argument_);
43-
bp.parse(report_level_);
43+
int32_t report_level;
44+
bp.parse(report_level);
45+
report_level_ = static_cast<ReportLevel>(report_level);
4446
bp.parse(data_type_);
4547
bp.parse(data_);
4648
bp.parseRemainder(text_);
@@ -58,7 +60,7 @@ std::string ErrorCodeMessage::toString() const
5860
std::stringstream ss;
5961
ss << "Message code: " << message_code_ << std::endl;
6062
ss << "Message argument: " << message_argument_ << std::endl;
61-
ss << "Report level: " << report_level_ << std::endl;
63+
ss << "Report level: " << static_cast<int>(report_level_) << std::endl;
6264
ss << "Datatype: " << static_cast<int>(data_type_) << std::endl;
6365
ss << "Data: " << data_ << std::endl;
6466
ss << "Text: " << text_;

0 commit comments

Comments
 (0)