Skip to content

Commit 111321c

Browse files
authored
[RM] Execute error callback of component on returning ERROR or with exception (#1730)
1 parent aefbad3 commit 111321c

File tree

4 files changed

+11
-3
lines changed

4 files changed

+11
-3
lines changed

hardware_interface/src/actuator.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,9 @@ const rclcpp_lifecycle::State & Actuator::deactivate()
183183
const rclcpp_lifecycle::State & Actuator::error()
184184
{
185185
std::unique_lock<std::recursive_mutex> lock(actuators_mutex_);
186-
if (impl_->get_lifecycle_state().id() != lifecycle_msgs::msg::State::PRIMARY_STATE_UNKNOWN)
186+
if (
187+
impl_->get_lifecycle_state().id() != lifecycle_msgs::msg::State::PRIMARY_STATE_UNKNOWN &&
188+
impl_->get_lifecycle_state().id() != lifecycle_msgs::msg::State::PRIMARY_STATE_UNCONFIGURED)
187189
{
188190
switch (impl_->on_error(impl_->get_lifecycle_state()))
189191
{

hardware_interface/src/resource_manager.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1808,6 +1808,7 @@ HardwareReadWriteStatus ResourceManager::read(
18081808
}
18091809
if (ret_val == return_type::ERROR)
18101810
{
1811+
component.error();
18111812
read_write_status.ok = false;
18121813
read_write_status.failed_hardware_names.push_back(component.get_name());
18131814
resource_storage_->remove_all_hardware_interfaces_from_available_list(component.get_name());
@@ -1868,6 +1869,7 @@ HardwareReadWriteStatus ResourceManager::write(
18681869
}
18691870
if (ret_val == return_type::ERROR)
18701871
{
1872+
component.error();
18711873
read_write_status.ok = false;
18721874
read_write_status.failed_hardware_names.push_back(component.get_name());
18731875
resource_storage_->remove_all_hardware_interfaces_from_available_list(component.get_name());

hardware_interface/src/sensor.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,9 @@ const rclcpp_lifecycle::State & Sensor::deactivate()
182182
const rclcpp_lifecycle::State & Sensor::error()
183183
{
184184
std::unique_lock<std::recursive_mutex> lock(sensors_mutex_);
185-
if (impl_->get_lifecycle_state().id() != lifecycle_msgs::msg::State::PRIMARY_STATE_UNKNOWN)
185+
if (
186+
impl_->get_lifecycle_state().id() != lifecycle_msgs::msg::State::PRIMARY_STATE_UNKNOWN &&
187+
impl_->get_lifecycle_state().id() != lifecycle_msgs::msg::State::PRIMARY_STATE_UNCONFIGURED)
186188
{
187189
switch (impl_->on_error(impl_->get_lifecycle_state()))
188190
{

hardware_interface/src/system.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,9 @@ const rclcpp_lifecycle::State & System::deactivate()
181181
const rclcpp_lifecycle::State & System::error()
182182
{
183183
std::unique_lock<std::recursive_mutex> lock(system_mutex_);
184-
if (impl_->get_lifecycle_state().id() != lifecycle_msgs::msg::State::PRIMARY_STATE_UNKNOWN)
184+
if (
185+
impl_->get_lifecycle_state().id() != lifecycle_msgs::msg::State::PRIMARY_STATE_UNKNOWN &&
186+
impl_->get_lifecycle_state().id() != lifecycle_msgs::msg::State::PRIMARY_STATE_UNCONFIGURED)
185187
{
186188
switch (impl_->on_error(impl_->get_lifecycle_state()))
187189
{

0 commit comments

Comments
 (0)