Skip to content

Commit

Permalink
Implement parse_bool and refactor a few (#1014)
Browse files Browse the repository at this point in the history
(cherry picked from commit c9709f3)

# Conflicts:
#	hardware_interface/src/component_parser.cpp
#	hardware_interface/src/mock_components/generic_system.cpp
  • Loading branch information
GreatAlexander authored and mergify[bot] committed May 11, 2023
1 parent 4d1ee3a commit 055f759
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,8 @@ namespace hardware_interface
HARDWARE_INTERFACE_PUBLIC
std::vector<HardwareInfo> parse_control_resources_from_urdf(const std::string & urdf);

HARDWARE_INTERFACE_PUBLIC
bool parse_bool(const std::string & bool_string);

} // namespace hardware_interface
#endif // HARDWARE_INTERFACE__COMPONENT_PARSER_HPP_
22 changes: 22 additions & 0 deletions hardware_interface/src/component_parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,23 @@ std::string parse_data_type_attribute(const tinyxml2::XMLElement * elem)
return data_type;
}

<<<<<<< HEAD
=======
/// Parse is_async attribute
/**
* Parses an XMLElement and returns the value of the is_async attribute.
* Defaults to "false" if not specified.
*
* \param[in] elem XMLElement that has the data_type attribute.
* \return boolean specifying the if the value read was true or false.
*/
bool parse_is_async_attribute(const tinyxml2::XMLElement * elem)
{
const tinyxml2::XMLAttribute * attr = elem->FindAttribute(kIsAsyncAttribute);
return attr ? parse_bool(attr->Value()) : false;
}

>>>>>>> c9709f3 (Implement parse_bool and refactor a few (#1014))
/// Search XML snippet from URDF for parameters.
/**
* \param[in] params_it pointer to the iterator where parameters info should be found
Expand Down Expand Up @@ -590,4 +607,9 @@ std::vector<HardwareInfo> parse_control_resources_from_urdf(const std::string &
return hardware_info;
}

bool parse_bool(const std::string & bool_string)
{
return bool_string == "true" || bool_string == "True";
}

} // namespace hardware_interface
25 changes: 23 additions & 2 deletions hardware_interface/src/mock_components/generic_system.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include <string>
#include <vector>

#include "hardware_interface/component_parser.hpp"
#include "hardware_interface/types/hardware_interface_type_values.hpp"
#include "rcutils/logging_macros.h"

Expand Down Expand Up @@ -61,20 +62,40 @@ CallbackReturn GenericSystem::on_init(const hardware_interface::HardwareInfo & i
auto it = info_.hardware_parameters.find("fake_sensor_commands");
if (it != info_.hardware_parameters.end())
{
<<<<<<< HEAD
// TODO(anyone): change this to parse_bool() (see ros2_control#339)
use_fake_sensor_command_interfaces_ = it->second == "true" || it->second == "True";
}
else
{
use_fake_sensor_command_interfaces_ = false;
=======
use_mock_sensor_command_interfaces_ = hardware_interface::parse_bool(it->second);
}
else
{
// check if fake_sensor_commands was set instead and issue warning.
it = info_.hardware_parameters.find("fake_sensor_commands");
if (it != info_.hardware_parameters.end())
{
use_mock_sensor_command_interfaces_ = hardware_interface::parse_bool(it->second);
RCUTILS_LOG_WARN_NAMED(
"fake_generic_system",
"Parameter 'fake_sensor_commands' has been deprecated from usage. Use"
"'mock_sensor_commands' instead.");
}
else
{
use_mock_sensor_command_interfaces_ = false;
}
>>>>>>> c9709f3 (Implement parse_bool and refactor a few (#1014))
}

// check if to create fake command interface for gpio
it = info_.hardware_parameters.find("fake_gpio_commands");
if (it != info_.hardware_parameters.end())
{
// TODO(anyone): change this to parse_bool() (see ros2_control#339)
use_fake_gpio_command_interfaces_ = it->second == "true" || it->second == "True";
use_fake_gpio_command_interfaces_ = hardware_interface::parse_bool(it->second);
}
else
{
Expand Down

0 comments on commit 055f759

Please sign in to comment.