diff --git a/autoware_version_manager/CMakeLists.txt b/autoware_version_manager/CMakeLists.txt index dc0298eba9..10aab8f76e 100644 --- a/autoware_version_manager/CMakeLists.txt +++ b/autoware_version_manager/CMakeLists.txt @@ -7,13 +7,18 @@ autoware_package() set(NODE_NAME ${PROJECT_NAME}_node) set(EXEC_NAME ${PROJECT_NAME}_exe) +ament_auto_add_library(autoware_version_reader SHARED + src/autoware_version_reader.cpp) + ament_auto_add_library(${NODE_NAME} src/include/autoware_version_manager_core.hpp src/include/parse_version.hpp - src/include/version_types.hpp src/autoware_version_manager_core.cpp src/parse_version.cpp) +target_link_libraries(${NODE_NAME} + autoware_version_reader) + rclcpp_components_register_node(${NODE_NAME} PLUGIN "autoware_version_manager::AutowareVersionManagerNode" EXECUTABLE ${EXEC_NAME}) diff --git a/autoware_version_manager/include/autoware_version_manager/autoware_version_reader.hpp b/autoware_version_manager/include/autoware_version_manager/autoware_version_reader.hpp new file mode 100644 index 0000000000..b6e943e2b5 --- /dev/null +++ b/autoware_version_manager/include/autoware_version_manager/autoware_version_reader.hpp @@ -0,0 +1,39 @@ +// Copyright 2023 The Autoware Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef AUTOWARE_VERSION_MANAGER__AUTOWARE_VERSION_READER_HPP_ +#define AUTOWARE_VERSION_MANAGER__AUTOWARE_VERSION_READER_HPP_ + +#include "autoware_version_manager/version_types.hpp" + +#include + +namespace autoware_version_manager +{ +class AutowareVersionReaderNode : public rclcpp::Node +{ +public: + explicit AutowareVersionReaderNode(const rclcpp::NodeOptions & node_options); + + const VersionAutoware & get_version_autoware() const; + const VersionInterface & get_version_component_interface() const; + +private: + VersionAutoware version_autoware_; + VersionInterface version_component_interface_; +}; + +} // namespace autoware_version_manager + +#endif // AUTOWARE_VERSION_MANAGER__AUTOWARE_VERSION_READER_HPP_ diff --git a/autoware_version_manager/src/include/version_types.hpp b/autoware_version_manager/include/autoware_version_manager/version_types.hpp similarity index 88% rename from autoware_version_manager/src/include/version_types.hpp rename to autoware_version_manager/include/autoware_version_manager/version_types.hpp index 8c0505c0de..8e8fce0ff1 100644 --- a/autoware_version_manager/src/include/version_types.hpp +++ b/autoware_version_manager/include/autoware_version_manager/version_types.hpp @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef VERSION_TYPES_HPP_ -#define VERSION_TYPES_HPP_ +#ifndef AUTOWARE_VERSION_MANAGER__VERSION_TYPES_HPP_ +#define AUTOWARE_VERSION_MANAGER__VERSION_TYPES_HPP_ #include @@ -41,4 +41,4 @@ struct VersionInterface } // namespace autoware_version_manager -#endif // VERSION_TYPES_HPP_ +#endif // AUTOWARE_VERSION_MANAGER__VERSION_TYPES_HPP_ diff --git a/autoware_version_manager/launch/autoware_version_manager.launch.xml b/autoware_version_manager/launch/autoware_version_manager.launch.xml index 09d6a15b1a..0da1f60290 100644 --- a/autoware_version_manager/launch/autoware_version_manager.launch.xml +++ b/autoware_version_manager/launch/autoware_version_manager.launch.xml @@ -1,10 +1,4 @@ - - - - - - - + diff --git a/autoware_version_manager/src/autoware_version_manager_core.cpp b/autoware_version_manager/src/autoware_version_manager_core.cpp index cae21d050c..9c5238f230 100644 --- a/autoware_version_manager/src/autoware_version_manager_core.cpp +++ b/autoware_version_manager/src/autoware_version_manager_core.cpp @@ -14,6 +14,7 @@ #include "include/autoware_version_manager_core.hpp" +#include "autoware_version_manager/autoware_version_reader.hpp" #include "include/parse_version.hpp" #include @@ -25,20 +26,10 @@ namespace autoware_version_manager AutowareVersionManagerNode::AutowareVersionManagerNode(const rclcpp::NodeOptions & node_options) : rclcpp::Node("autoware_version_manager_node", node_options) { - try { - const std::filesystem::path path_version_autoware = - ament_index_cpp::get_package_share_directory("autoware_version_manager") + - "/data/version-autoware.yaml"; - const std::filesystem::path path_version_component_interface = - declare_parameter("path_version_component_interface"); + AutowareVersionReaderNode autoware_version_reader_node(rclcpp::NodeOptions{}); - version_autoware_ = parse_version::parse_autoware_version(path_version_autoware); - version_component_interface_ = - parse_version::parse_interface_version(path_version_component_interface); - } catch (const std::exception & e) { - RCLCPP_ERROR(get_logger(), "Exception: %s", e.what()); - exit(EXIT_FAILURE); - } + version_autoware_ = autoware_version_reader_node.get_version_autoware(); + version_component_interface_ = autoware_version_reader_node.get_version_component_interface(); srv_get_version_autoware_ = create_service( "get_version_autoware", std::bind( diff --git a/autoware_version_manager/src/autoware_version_reader.cpp b/autoware_version_manager/src/autoware_version_reader.cpp new file mode 100644 index 0000000000..124de41bfd --- /dev/null +++ b/autoware_version_manager/src/autoware_version_reader.cpp @@ -0,0 +1,63 @@ +// Copyright 2023 The Autoware Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "autoware_version_manager/autoware_version_reader.hpp" + +#include "include/parse_version.hpp" + +#include +#include + +namespace autoware_version_manager +{ + +AutowareVersionReaderNode::AutowareVersionReaderNode(const rclcpp::NodeOptions & node_options) +: rclcpp::Node("autoware_version_reader_node", node_options) +{ + try { + const std::filesystem::path path_version_autoware = + ament_index_cpp::get_package_share_directory("autoware_version_manager") + + "/data/version-autoware.yaml"; + const std::filesystem::path path_version_component_interface = + ament_index_cpp::get_package_share_directory("autoware_version_manager") + + "/data/version-component-interface.yaml"; + + version_autoware_ = parse_version::parse_autoware_version(path_version_autoware); + version_component_interface_ = + parse_version::parse_interface_version(path_version_component_interface); + } catch (const std::exception & e) { + RCLCPP_ERROR(get_logger(), "Exception: %s", e.what()); + exit(EXIT_FAILURE); + } + + RCLCPP_INFO( + get_logger(), "Autoware version: %d.%02d.%d", version_autoware_.year, version_autoware_.month, + version_autoware_.micro); + + RCLCPP_INFO( + get_logger(), "Component interface version: %d.%d.%d", version_component_interface_.major, + version_component_interface_.minor, version_component_interface_.patch); +} + +const VersionAutoware & AutowareVersionReaderNode::get_version_autoware() const +{ + return version_autoware_; +} + +const VersionInterface & AutowareVersionReaderNode::get_version_component_interface() const +{ + return version_component_interface_; +} + +} // namespace autoware_version_manager diff --git a/autoware_version_manager/src/include/autoware_version_manager_core.hpp b/autoware_version_manager/src/include/autoware_version_manager_core.hpp index d96e9032a8..bc6e80df14 100644 --- a/autoware_version_manager/src/include/autoware_version_manager_core.hpp +++ b/autoware_version_manager/src/include/autoware_version_manager_core.hpp @@ -15,7 +15,7 @@ #ifndef AUTOWARE_VERSION_MANAGER_CORE_HPP_ #define AUTOWARE_VERSION_MANAGER_CORE_HPP_ -#include "version_types.hpp" +#include "autoware_version_manager/version_types.hpp" #include diff --git a/autoware_version_manager/src/include/parse_version.hpp b/autoware_version_manager/src/include/parse_version.hpp index 9499f25c64..697f88c6ca 100644 --- a/autoware_version_manager/src/include/parse_version.hpp +++ b/autoware_version_manager/src/include/parse_version.hpp @@ -15,7 +15,7 @@ #ifndef PARSE_VERSION_HPP_ #define PARSE_VERSION_HPP_ -#include "version_types.hpp" +#include "autoware_version_manager/version_types.hpp" #include diff --git a/autoware_version_manager/src/parse_version.cpp b/autoware_version_manager/src/parse_version.cpp index c2e2482d0a..084f0645e0 100644 --- a/autoware_version_manager/src/parse_version.cpp +++ b/autoware_version_manager/src/parse_version.cpp @@ -14,7 +14,7 @@ #include "include/parse_version.hpp" -#include "include/version_types.hpp" +#include "autoware_version_manager/version_types.hpp" #include