@@ -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