diff --git a/.github/workflows/build_agent.yml b/.github/workflows/build_agent.yml
index 7bd38afd..958775e3 100755
--- a/.github/workflows/build_agent.yml
+++ b/.github/workflows/build_agent.yml
@@ -13,7 +13,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- ros_distribution: [ foxy, galactic ]
+ ros_distribution: [ galactic ]
runs-on: rpi-ros2-${{ matrix.ros_distribution }}
steps:
# - uses: ros-tooling/setup-ros@0.2.1
@@ -23,7 +23,7 @@ jobs:
with:
path: ros_ws/src/micro_ros_renesas_testbench
submodules: recursive
- ref: ${{ matrix.ros_distribution }}
+ ref: feature/agent_API
token: ${{ secrets.PRIVATE_KEY }}
- name: Download dependencies
run: |
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 609ae0ea..850ed956 100755
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -13,7 +13,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- ros_distribution: [ foxy, galactic ]
+ ros_distribution: [ galactic ]
runs-on: rpi-ros2-${{ matrix.ros_distribution }}
steps:
# - uses: ros-tooling/setup-ros@0.2.1
@@ -27,7 +27,7 @@ jobs:
with:
path: ros_ws/src/micro_ros_renesas_testbench
submodules: recursive
- ref: ${{ matrix.ros_distribution }}
+ ref: feature/agent_API
token: ${{ secrets.PRIVATE_KEY }}
- name: Download dependencies
run: |
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8692552d..a46659d6 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,12 +26,20 @@ if(BUILD_TESTING)
find_package(fastrtps REQUIRED)
find_package(fastrtps_cmake_module REQUIRED)
find_package(microxrcedds_agent REQUIRED)
+ find_package(micro_ros_agent REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rmw REQUIRED)
find_package(std_msgs REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(example_interfaces REQUIRED)
+ find_package(rosidl_typesupport_fastrtps_cpp REQUIRED)
+ find_package(rosidl_runtime_cpp REQUIRED)
+ find_package(rosidl_typesupport_cpp REQUIRED)
+ find_package(rmw_dds_common REQUIRED)
+ find_package(rmw_fastrtps_shared_cpp REQUIRED)
+ find_package(micro_ros_msgs REQUIRED)
+
# ament_lint_auto_find_test_dependencies()
ament_add_gtest(${PROJECT_NAME}_test
@@ -40,17 +48,20 @@ if(BUILD_TESTING)
string(TOUPPER $ENV{ROS_DISTRO} ROS_DISTRO)
target_compile_options(${PROJECT_NAME}_test PRIVATE -DROS_DISTRO_${ROS_DISTRO})
- target_include_directories(${PROJECT_NAME}_test PRIVATE include src test)
+ target_include_directories(${PROJECT_NAME}_test PRIVATE include src test micro_ros_agent_INCLUDE_DIR)
target_link_libraries(${PROJECT_NAME}_test
fastcdr
fastrtps
- microxrcedds_agent)
+ microxrcedds_agent
+ micro_ros_agent
+ )
ament_target_dependencies(${PROJECT_NAME}_test
fastcdr
fastrtps
microxrcedds_agent
+ micro_ros_agent
rclcpp
rmw
std_msgs
diff --git a/package.xml b/package.xml
index b7383d5d..89e3257d 100755
--- a/package.xml
+++ b/package.xml
@@ -19,6 +19,7 @@
example_interfaces
microxrcedds_agent
+ micro_ros_agent
ament_cmake
diff --git a/requirements.repos b/requirements.repos
index d55eef28..2501befb 100644
--- a/requirements.repos
+++ b/requirements.repos
@@ -7,7 +7,7 @@ repositories:
micro-ROS-Agent:
type: git
url: https://github.com/micro-ROS/micro-ROS-Agent.git
- version: galactic
+ version: feature/stop_agent
Micro-XRCE-DDS-Agent:
type: git
url: https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
diff --git a/test/micro_ros_renesas_testbench/test.hpp b/test/micro_ros_renesas_testbench/test.hpp
index bdb3b1e9..dc04d734 100644
--- a/test/micro_ros_renesas_testbench/test.hpp
+++ b/test/micro_ros_renesas_testbench/test.hpp
@@ -109,7 +109,7 @@ class HardwareTestBase : public ::testing::Test
// Set domain id
rcl_allocator_t allocator = rcl_get_default_allocator();
- rcl_init_options_t init_options = rcl_get_zero_initialized_init_options();
+ init_options = rcl_get_zero_initialized_init_options();
ASSERT_EQ(rcl_init_options_init(&init_options, allocator), RCL_RET_OK);
rmw_init_options_t* rmw_options = rcl_init_options_get_rmw_init_options(&init_options);
@@ -126,6 +126,7 @@ class HardwareTestBase : public ::testing::Test
void TearDown() override {
agent->stop();
rclcpp::shutdown();
+ (void) rcl_init_options_fini(&init_options);
}
bool checkConnection(){
@@ -204,6 +205,7 @@ class HardwareTestBase : public ::testing::Test
std::shared_ptr agent;
std::shared_ptr node;
rclcpp::InitOptions options;
+ rcl_init_options_t init_options;
std::string cwd;
std::string project_name;
diff --git a/test/micro_ros_renesas_testbench/test_agent.hpp b/test/micro_ros_renesas_testbench/test_agent.hpp
index bee9364f..23d9c70a 100644
--- a/test/micro_ros_renesas_testbench/test_agent.hpp
+++ b/test/micro_ros_renesas_testbench/test_agent.hpp
@@ -27,6 +27,8 @@
#include
#include
+#include
+
class TestAgent
{
public:
@@ -73,61 +75,77 @@ class TestAgent
static std::string getIPAddress();
private:
- std::shared_ptr agent_thread_;
- uint16_t port_;
+ uros::agent::Agent& micro_ros_agent;
+ std::vector agent_args;
+ std::string port_;
std::string dev_;
- std::string command_;
+ std::string verbosity_;
};
TestAgent::TestAgent(uint16_t port, uint8_t verbosity = 6)
+: micro_ros_agent(micro_ros_agent.getInstance())
{
- port_ = port;
- command_ = "ros2 run micro_ros_agent micro_ros_agent udp4 --port " + std::to_string(port_) + " -v" + std::to_string(verbosity);
+ verbosity_ = "-v" + std::to_string(verbosity);
+ port_ = std::to_string(port);
+
+ agent_args.push_back("");
+ agent_args.push_back("udp4");
+ agent_args.push_back("--port");
+ agent_args.push_back(port_.c_str());
+ agent_args.push_back(verbosity_.c_str());
}
TestAgent::TestAgent(std::string dev, uint8_t verbosity = 6)
+: micro_ros_agent(micro_ros_agent.getInstance())
{
+ verbosity_ = "-v" + std::to_string(verbosity);
dev_ = dev;
- command_ = "ros2 run micro_ros_agent micro_ros_agent serial --dev " + dev_ + " -v" + std::to_string(verbosity);
+
+ agent_args.push_back("");
+ agent_args.push_back("serial");
+ agent_args.push_back("--dev");
+ agent_args.push_back(dev_.c_str());
+ agent_args.push_back(verbosity_.c_str());
}
TestAgent::TestAgent(Transport transport, std::string args, uint8_t verbosity = 6)
+: micro_ros_agent(micro_ros_agent.getInstance())
{
- std::string transport_type;
-
+ verbosity_ = "-v" + std::to_string(verbosity);
+ agent_args.push_back("");
+
switch (transport)
{
case Transport::UDP_THREADX_TRANSPORT:
case Transport::UDP_FREERTOS_TRANSPORT:
- transport_type = "udp4";
+ port_ = args;
+ agent_args.push_back("udp4");
+ agent_args.push_back("--port");
+ agent_args.push_back(port_.c_str());
break;
case Transport::SERIAL_TRANSPORT:
case Transport::USB_TRANSPORT:
- transport_type = "serial";
+ dev_ = args;
+ agent_args.push_back("serial");
+ agent_args.push_back("--dev");
+ agent_args.push_back(dev_.c_str());
break;
default:
break;
}
- command_ = "ros2 run micro_ros_agent micro_ros_agent " + transport_type + " " + args + " -v" + std::to_string(verbosity);
+ agent_args.push_back(verbosity_.c_str());
}
void TestAgent::start()
{
- stop();
- agent_thread_.reset(new std::thread(
- [&]() -> void {
- system(command_.c_str());
- }
- ));
+ micro_ros_agent.create(agent_args.size(), const_cast (agent_args.data()));
+ agent_args.clear();
}
void TestAgent::stop()
{
- system("pkill micro_ros_agent");
- if(agent_thread_) {
- agent_thread_->join();
- }
+ micro_ros_agent.stop();
}
std::string TestAgent::getIPAddress(){