Skip to content

Commit 268d757

Browse files
author
Yara Shahin
committed
fix interface types
1 parent e46933e commit 268d757

File tree

2 files changed

+17
-32
lines changed

2 files changed

+17
-32
lines changed

battery_state_broadcaster/include/battery_state_broadcaster/battery_state_broadcaster.hpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#define BATTERY_STATE_BROADCASTER__BATTERY_STATE_BROADCASTER_HPP_
1717

1818
#include <cmath>
19+
#include <cstdint>
1920
#include <memory>
2021
#include <string>
2122
#include <unordered_map>
@@ -84,9 +85,6 @@ class BatteryStateBroadcaster : public controller_interface::ControllerInterface
8485
controller_interface::return_type update(
8586
const rclcpp::Time & time, const rclcpp::Duration & period) override;
8687

87-
float get_or_nan(int interface_cnt);
88-
char get_or_unknown(int interface_cnt);
89-
9088
protected:
9189
std::shared_ptr<battery_state_broadcaster::ParamListener> param_listener_;
9290
battery_state_broadcaster::Params params_;

battery_state_broadcaster/src/battery_state_broadcaster.cpp

Lines changed: 16 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ controller_interface::CallbackReturn BatteryStateBroadcaster::on_activate(
203203

204204
// get parameters from the listener in case they were updated
205205
params_ = param_listener_->get_params();
206-
auto combined_power_supply_technology = static_cast<char>(
206+
auto combined_power_supply_technology = static_cast<uint8_t>(
207207
params_.state_joints_map.at(params_.state_joints.at(0)).power_supply_technology);
208208
std::string combined_location = "";
209209
std::string combined_serial_number = "";
@@ -226,7 +226,7 @@ controller_interface::CallbackReturn BatteryStateBroadcaster::on_activate(
226226
battery_state.power_supply_status = sensor_msgs::msg::BatteryState::POWER_SUPPLY_STATUS_UNKNOWN;
227227
battery_state.power_supply_health = sensor_msgs::msg::BatteryState::POWER_SUPPLY_HEALTH_UNKNOWN;
228228
battery_state.power_supply_technology =
229-
static_cast<char>(battery_properties.power_supply_technology);
229+
static_cast<uint8_t>(battery_properties.power_supply_technology);
230230
battery_state.present = true;
231231
battery_state.cell_voltage = {};
232232
battery_state.cell_temperature = {};
@@ -291,31 +291,36 @@ controller_interface::return_type BatteryStateBroadcaster::update(
291291

292292
raw_battery_states_msg.battery_states[i].header.stamp = time;
293293

294-
raw_battery_states_msg.battery_states[i].voltage = get_or_nan(interface_cnt);
294+
raw_battery_states_msg.battery_states[i].voltage = static_cast<float>(
295+
state_interfaces_[interface_cnt].get_optional<double>().value_or(kUninitializedValue));
295296
sums_.voltage_sum += raw_battery_states_msg.battery_states[i].voltage;
296297
interface_cnt++;
297298

298299
if (interfaces.battery_temperature)
299300
{
300-
raw_battery_states_msg.battery_states[i].temperature = get_or_nan(interface_cnt);
301+
raw_battery_states_msg.battery_states[i].temperature = static_cast<float>(
302+
state_interfaces_[interface_cnt].get_optional<double>().value_or(kUninitializedValue));
301303
sums_.temperature_sum += raw_battery_states_msg.battery_states[i].temperature;
302304
interface_cnt++;
303305
}
304306
if (interfaces.battery_current)
305307
{
306-
raw_battery_states_msg.battery_states[i].current = get_or_nan(interface_cnt);
308+
raw_battery_states_msg.battery_states[i].current = static_cast<float>(
309+
state_interfaces_[interface_cnt].get_optional<double>().value_or(kUninitializedValue));
307310
sums_.current_sum += raw_battery_states_msg.battery_states[i].current;
308311
interface_cnt++;
309312
}
310313
if (interfaces.battery_charge)
311314
{
312-
raw_battery_states_msg.battery_states[i].charge = get_or_nan(interface_cnt);
315+
raw_battery_states_msg.battery_states[i].charge = static_cast<float>(
316+
state_interfaces_[interface_cnt].get_optional<double>().value_or(kUninitializedValue));
313317
sums_.charge_sum += raw_battery_states_msg.battery_states[i].charge;
314318
interface_cnt++;
315319
}
316320
if (interfaces.battery_percentage)
317321
{
318-
raw_battery_states_msg.battery_states[i].percentage = get_or_nan(interface_cnt);
322+
raw_battery_states_msg.battery_states[i].percentage = static_cast<float>(
323+
state_interfaces_[interface_cnt].get_optional<double>().value_or(kUninitializedValue));
319324
sums_.percentage_sum += raw_battery_states_msg.battery_states[i].percentage;
320325
interface_cnt++;
321326
}
@@ -332,7 +337,8 @@ controller_interface::return_type BatteryStateBroadcaster::update(
332337
if (interfaces.battery_power_supply_status)
333338
{
334339
raw_battery_states_msg.battery_states[i].power_supply_status =
335-
get_or_unknown(interface_cnt);
340+
static_cast<uint8_t>(state_interfaces_[interface_cnt].get_optional<double>().value_or(
341+
sensor_msgs::msg::BatteryState::POWER_SUPPLY_STATUS_UNKNOWN));
336342
if (
337343
raw_battery_states_msg.battery_states[i].power_supply_status >
338344
combined_power_supply_status)
@@ -345,7 +351,8 @@ controller_interface::return_type BatteryStateBroadcaster::update(
345351
if (interfaces.battery_power_supply_health)
346352
{
347353
raw_battery_states_msg.battery_states[i].power_supply_health =
348-
get_or_unknown(interface_cnt);
354+
static_cast<uint8_t>(state_interfaces_[interface_cnt].get_optional<double>().value_or(
355+
sensor_msgs::msg::BatteryState::POWER_SUPPLY_HEALTH_UNKNOWN));
349356
if (
350357
raw_battery_states_msg.battery_states[i].power_supply_health >
351358
combined_power_supply_health)
@@ -414,26 +421,6 @@ controller_interface::return_type BatteryStateBroadcaster::update(
414421
return controller_interface::return_type::OK;
415422
}
416423

417-
float BatteryStateBroadcaster::get_or_nan(int interface_cnt)
418-
{
419-
auto opt = state_interfaces_[interface_cnt].get_optional<double>();
420-
if (opt.has_value())
421-
{
422-
return static_cast<float>(*opt);
423-
}
424-
return std::numeric_limits<float>::quiet_NaN();
425-
}
426-
427-
char BatteryStateBroadcaster::get_or_unknown(int interface_cnt)
428-
{
429-
auto opt = state_interfaces_[interface_cnt].get_optional<double>();
430-
if (opt.has_value())
431-
{
432-
return static_cast<char>(*opt);
433-
}
434-
return 0;
435-
}
436-
437424
} // namespace battery_state_broadcaster
438425

439426
#include "pluginlib/class_list_macros.hpp"

0 commit comments

Comments
 (0)