Skip to content

Commit fa90d38

Browse files
authored
Suppress the deprecation warnings of the hardware_interface API (#2223) (#2247)
1 parent 671ef0a commit fa90d38

File tree

20 files changed

+283
-154
lines changed

20 files changed

+283
-154
lines changed

controller_manager/src/controller_manager.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,23 @@ void controller_chain_spec_cleanup(
153153
const auto preceding_controllers = ctrl_chain_spec[controller].preceding_controllers;
154154
for (const auto & flwg_ctrl : following_controllers)
155155
{
156-
ros2_control::remove_item(ctrl_chain_spec[flwg_ctrl].preceding_controllers, controller);
156+
if (!ros2_control::remove_item(ctrl_chain_spec[flwg_ctrl].preceding_controllers, controller))
157+
{
158+
RCLCPP_ERROR(
159+
rclcpp::get_logger("ControllerManager::utils"),
160+
"Controller '%s' is not in the list of preceding controllers of '%s'.", controller.c_str(),
161+
flwg_ctrl.c_str());
162+
}
157163
}
158164
for (const auto & preced_ctrl : preceding_controllers)
159165
{
160-
ros2_control::remove_item(ctrl_chain_spec[preced_ctrl].following_controllers, controller);
166+
if (ros2_control::remove_item(ctrl_chain_spec[preced_ctrl].following_controllers, controller))
167+
{
168+
RCLCPP_ERROR(
169+
rclcpp::get_logger("ControllerManager::utils"),
170+
"Controller '%s' is not in the list of following controllers of '%s'.", controller.c_str(),
171+
preced_ctrl.c_str());
172+
}
161173
}
162174
ctrl_chain_spec.erase(controller);
163175
}

hardware_interface/include/hardware_interface/handle.hpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ class Handle
5353
{
5454
public:
5555
[[deprecated("Use InterfaceDescription for initializing the Interface")]]
56-
5756
Handle(
5857
const std::string & prefix_name, const std::string & interface_name,
5958
double * value_ptr = nullptr)
@@ -394,7 +393,11 @@ class StateInterface : public Handle
394393

395394
StateInterface(StateInterface && other) = default;
396395

396+
// Disable deprecated warnings
397+
#pragma GCC diagnostic push
398+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
397399
using Handle::Handle;
400+
#pragma GCC diagnostic pop
398401

399402
using SharedPtr = std::shared_ptr<StateInterface>;
400403
using ConstSharedPtr = std::shared_ptr<const StateInterface>;
@@ -464,7 +467,11 @@ class CommandInterface : public Handle
464467
}
465468
}
466469

470+
// Disable deprecated warnings
471+
#pragma GCC diagnostic push
472+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
467473
using Handle::Handle;
474+
#pragma GCC diagnostic pop
468475

469476
using SharedPtr = std::shared_ptr<CommandInterface>;
470477

hardware_interface/include/hardware_interface/loaned_command_interface.hpp

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,10 @@ class LoanedCommandInterface
133133
"removed by the ROS 2 Kilted Kaiju release.")]]
134134
double get_value() const
135135
{
136-
double value = std::numeric_limits<double>::quiet_NaN();
137-
if (get_value(value))
136+
std::optional<double> opt_value = get_optional();
137+
if (opt_value.has_value())
138138
{
139-
return value;
139+
return opt_value.value();
140140
}
141141
else
142142
{
@@ -200,20 +200,13 @@ class LoanedCommandInterface
200200
"removed by the ROS 2 Kilted Kaiju release.")]] [[nodiscard]] bool
201201
get_value(T & value, unsigned int max_tries = 10) const
202202
{
203-
unsigned int nr_tries = 0;
204-
++get_value_statistics_.total_counter;
205-
while (!command_interface_.get_value(value))
203+
const auto opt_value = get_optional<T>(max_tries);
204+
if (opt_value.has_value())
206205
{
207-
++get_value_statistics_.failed_counter;
208-
++nr_tries;
209-
if (nr_tries == max_tries)
210-
{
211-
++get_value_statistics_.timeout_counter;
212-
return false;
213-
}
214-
std::this_thread::yield();
206+
value = opt_value.value();
207+
return true;
215208
}
216-
return true;
209+
return false;
217210
}
218211

219212
protected:

hardware_interface/include/hardware_interface/loaned_state_interface.hpp

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,10 @@ class LoanedStateInterface
9393
"removed by the ROS 2 Kilted Kaiju release.")]]
9494
double get_value() const
9595
{
96-
double value = std::numeric_limits<double>::quiet_NaN();
97-
if (get_value(value))
96+
std::optional<double> opt_value = get_optional();
97+
if (opt_value.has_value())
9898
{
99-
return value;
99+
return opt_value.value();
100100
}
101101
else
102102
{
@@ -160,20 +160,13 @@ class LoanedStateInterface
160160
"removed by the ROS 2 Kilted Kaiju release.")]] [[nodiscard]] bool
161161
get_value(T & value, unsigned int max_tries = 10) const
162162
{
163-
unsigned int nr_tries = 0;
164-
++get_value_statistics_.total_counter;
165-
while (!state_interface_.get_value(value))
163+
const auto opt_value = get_optional<T>(max_tries);
164+
if (opt_value.has_value())
166165
{
167-
++get_value_statistics_.failed_counter;
168-
++nr_tries;
169-
if (nr_tries == max_tries)
170-
{
171-
++get_value_statistics_.timeout_counter;
172-
return false;
173-
}
174-
std::this_thread::yield();
166+
value = opt_value.value();
167+
return true;
175168
}
176-
return true;
169+
return false;
177170
}
178171

179172
protected:

hardware_interface/include/hardware_interface/resource_manager.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,11 @@
2323
#include "hardware_interface/actuator.hpp"
2424
#include "hardware_interface/hardware_component_info.hpp"
2525
#include "hardware_interface/hardware_info.hpp"
26+
#pragma GCC diagnostic push
27+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
2628
#include "hardware_interface/loaned_command_interface.hpp"
2729
#include "hardware_interface/loaned_state_interface.hpp"
30+
#pragma GCC diagnostic pop
2831
#include "hardware_interface/sensor.hpp"
2932
#include "hardware_interface/system.hpp"
3033
#include "hardware_interface/system_interface.hpp"

hardware_interface/include/mock_components/generic_system.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@
2020
#include <string>
2121
#include <vector>
2222

23+
#pragma GCC diagnostic push
24+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
2325
#include "hardware_interface/handle.hpp"
26+
#pragma GCC diagnostic pop
2427
#include "hardware_interface/hardware_info.hpp"
2528
#include "hardware_interface/system_interface.hpp"
2629
#include "hardware_interface/types/hardware_interface_return_values.hpp"

hardware_interface/src/actuator.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,12 @@ const rclcpp_lifecycle::State & Actuator::error()
236236

237237
std::vector<StateInterface::ConstSharedPtr> Actuator::export_state_interfaces()
238238
{
239-
// BEGIN (Handle export change): for backward compatibility, can be removed if
240-
// export_command_interfaces() method is removed
239+
// BEGIN (Handle export change): for backward compatibility, can be removed if
240+
// export_command_interfaces() method is removed
241+
#pragma GCC diagnostic push
242+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
241243
std::vector<StateInterface> interfaces = impl_->export_state_interfaces();
244+
#pragma GCC diagnostic pop
242245
// END: for backward compatibility
243246

244247
// If no StateInterfaces has been exported, this could mean:
@@ -264,9 +267,12 @@ std::vector<StateInterface::ConstSharedPtr> Actuator::export_state_interfaces()
264267

265268
std::vector<CommandInterface::SharedPtr> Actuator::export_command_interfaces()
266269
{
267-
// BEGIN (Handle export change): for backward compatibility, can be removed if
268-
// export_command_interfaces() method is removed
270+
// BEGIN (Handle export change): for backward compatibility, can be removed if
271+
// export_command_interfaces() method is removed
272+
#pragma GCC diagnostic push
273+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
269274
std::vector<CommandInterface> interfaces = impl_->export_command_interfaces();
275+
#pragma GCC diagnostic pop
270276
// END: for backward compatibility
271277

272278
// If no CommandInterface has been exported, this could mean:

hardware_interface/src/resource_manager.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2103,7 +2103,7 @@ bool ResourceManager::enforce_command_limits(const rclcpp::Duration & period)
21032103

21042104
// CM API: Called in "update"-thread
21052105
HardwareReadWriteStatus ResourceManager::read(
2106-
const rclcpp::Time & time, const rclcpp::Duration & period)
2106+
const rclcpp::Time & /*time*/, const rclcpp::Duration & period)
21072107
{
21082108
read_write_status.ok = true;
21092109
read_write_status.failed_hardware_names.clear();
@@ -2212,7 +2212,7 @@ HardwareReadWriteStatus ResourceManager::read(
22122212

22132213
// CM API: Called in "update"-thread
22142214
HardwareReadWriteStatus ResourceManager::write(
2215-
const rclcpp::Time & time, const rclcpp::Duration & period)
2215+
const rclcpp::Time & /*time*/, const rclcpp::Duration & period)
22162216
{
22172217
read_write_status.ok = true;
22182218
read_write_status.failed_hardware_names.clear();

hardware_interface/src/sensor.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,9 +231,12 @@ const rclcpp_lifecycle::State & Sensor::error()
231231

232232
std::vector<StateInterface::ConstSharedPtr> Sensor::export_state_interfaces()
233233
{
234-
// BEGIN (Handle export change): for backward compatibility, can be removed if
235-
// export_command_interfaces() method is removed
234+
// BEGIN (Handle export change): for backward compatibility, can be removed if
235+
// export_command_interfaces() method is removed
236+
#pragma GCC diagnostic push
237+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
236238
std::vector<StateInterface> interfaces = impl_->export_state_interfaces();
239+
#pragma GCC diagnostic pop
237240
// END: for backward compatibility
238241

239242
// If no StateInterfaces has been exported, this could mean:

hardware_interface/src/system.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,9 +234,12 @@ const rclcpp_lifecycle::State & System::error()
234234

235235
std::vector<StateInterface::ConstSharedPtr> System::export_state_interfaces()
236236
{
237-
// BEGIN (Handle export change): for backward compatibility, can be removed if
238-
// export_command_interfaces() method is removed
237+
// BEGIN (Handle export change): for backward compatibility, can be removed if
238+
// export_command_interfaces() method is removed
239+
#pragma GCC diagnostic push
240+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
239241
std::vector<StateInterface> interfaces = impl_->export_state_interfaces();
242+
#pragma GCC diagnostic pop
240243
// END: for backward compatibility
241244

242245
// If no StateInterfaces has been exported, this could mean:
@@ -262,9 +265,12 @@ std::vector<StateInterface::ConstSharedPtr> System::export_state_interfaces()
262265

263266
std::vector<CommandInterface::SharedPtr> System::export_command_interfaces()
264267
{
265-
// BEGIN (Handle export change): for backward compatibility, can be removed if
266-
// export_command_interfaces() method is removed
268+
// BEGIN (Handle export change): for backward compatibility, can be removed if
269+
// export_command_interfaces() method is removed
270+
#pragma GCC diagnostic push
271+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
267272
std::vector<CommandInterface> interfaces = impl_->export_command_interfaces();
273+
#pragma GCC diagnostic pop
268274
// END: for backward compatibility
269275

270276
// If no CommandInterface has been exported, this could mean:

0 commit comments

Comments
 (0)