diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ecb3f73e..f3deb736 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: CI RCLC +name: CI RCLC Rolling on: push: @@ -17,14 +17,8 @@ jobs: matrix: # os: [ ubuntu-20.04, windows-latest, macOS-latest ] os: [ ubuntu-20.04 ] - ros_distribution: [ foxy, rolling, dashing ] + ros_distribution: [ rolling ] include: - - docker_image: ubuntu:bionic - ros_distribution: dashing - - - docker_image: ubuntu:focal - ros_distribution: foxy - - docker_image: ubuntu:focal ros_distribution: rolling container: @@ -42,5 +36,5 @@ jobs: - uses : ros-tooling/action-ros-ci@0.1.0 with: package-name: "rclc rclc_examples rclc_lifecycle" - vcs-repo-file-url: "" - target-ros2-distro: ${{ matrix.ros_distribution }} \ No newline at end of file + vcs-repo-file-url: dependencies.repos + target-ros2-distro: ${{ matrix.ros_distribution }} diff --git a/dependencies.repos b/dependencies.repos new file mode 100644 index 00000000..4e2a623b --- /dev/null +++ b/dependencies.repos @@ -0,0 +1,4 @@ +- git: + local-name: rcl + uri: https://github.com/ros2/rcl.git + version: master diff --git a/rclc_examples/src/example_lifecycle_node.c b/rclc_examples/src/example_lifecycle_node.c index eec4495e..69e4d8d3 100644 --- a/rclc_examples/src/example_lifecycle_node.c +++ b/rclc_examples/src/example_lifecycle_node.c @@ -81,7 +81,8 @@ int main(int argc, const char * argv[]) &lifecycle_node, &my_node, &state_machine_, - &allocator); + &allocator, + true); if (rc != RCL_RET_OK) { printf("Error in creating lifecycle node.\n"); return -1; diff --git a/rclc_lifecycle/include/rclc_lifecycle/rclc_lifecycle.h b/rclc_lifecycle/include/rclc_lifecycle/rclc_lifecycle.h index f4c2b63c..4935655f 100644 --- a/rclc_lifecycle/include/rclc_lifecycle/rclc_lifecycle.h +++ b/rclc_lifecycle/include/rclc_lifecycle/rclc_lifecycle.h @@ -46,7 +46,8 @@ rclc_make_node_a_lifecycle_node( rclc_lifecycle_node_t * lifecycle_node, rcl_node_t * node, rcl_lifecycle_state_machine_t * state_machine, - rcl_allocator_t * allocator); + rcl_allocator_t * allocator, + bool enable_communication_interface); RCLC_LIFECYCLE_PUBLIC rcl_ret_t diff --git a/rclc_lifecycle/src/rclc_lifecycle/rclc_lifecycle.c b/rclc_lifecycle/src/rclc_lifecycle/rclc_lifecycle.c index 195ace02..1e62a748 100644 --- a/rclc_lifecycle/src/rclc_lifecycle/rclc_lifecycle.c +++ b/rclc_lifecycle/src/rclc_lifecycle/rclc_lifecycle.c @@ -35,9 +35,15 @@ rclc_make_node_a_lifecycle_node( rclc_lifecycle_node_t * lifecycle_node, rcl_node_t * node, rcl_lifecycle_state_machine_t * state_machine, - rcl_allocator_t * allocator + rcl_allocator_t * allocator, + bool enable_communication_interface ) { + rcl_lifecycle_state_machine_options_t state_machine_options = + rcl_lifecycle_get_default_state_machine_options(); + state_machine_options.enable_com_interface = enable_communication_interface; + state_machine_options.allocator = *allocator; + rcl_ret_t rcl_ret = rcl_lifecycle_state_machine_init( state_machine, node, @@ -47,8 +53,7 @@ rclc_make_node_a_lifecycle_node( ROSIDL_GET_SRV_TYPE_SUPPORT(lifecycle_msgs, srv, GetAvailableStates), ROSIDL_GET_SRV_TYPE_SUPPORT(lifecycle_msgs, srv, GetAvailableTransitions), ROSIDL_GET_SRV_TYPE_SUPPORT(lifecycle_msgs, srv, GetAvailableTransitions), - true, - allocator); + &state_machine_options); if (rcl_ret != RCL_RET_OK) { // state machine not initialized, return uninitilized // @todo(anordman): how/what to return in this case? @@ -228,12 +233,12 @@ rcl_lifecycle_node_fini( ) { rcl_ret_t rcl_ret = RCL_RET_OK; + RCLC_UNUSED(allocator); // Cleanup statemachine rcl_ret = rcl_lifecycle_state_machine_fini( lifecycle_node->state_machine, - lifecycle_node->node, - allocator); + lifecycle_node->node); if (rcl_ret != RCL_RET_OK) { return RCL_RET_ERROR; } diff --git a/rclc_lifecycle/test/test_lifecycle.cpp b/rclc_lifecycle/test/test_lifecycle.cpp index 25e1777a..d4b481c7 100644 --- a/rclc_lifecycle/test/test_lifecycle.cpp +++ b/rclc_lifecycle/test/test_lifecycle.cpp @@ -71,7 +71,8 @@ TEST(TestRclcLifecycle, lifecycle_node) { &lifecycle_node, &my_node, &state_machine_, - &allocator); + &allocator, + true); EXPECT_EQ(RCL_RET_OK, res); @@ -107,7 +108,8 @@ TEST(TestRclcLifecycle, lifecycle_node_transitions) { &lifecycle_node, &my_node, &state_machine_, - &allocator); + &allocator, + false); // configure res = rclc_lifecycle_change_state( @@ -176,7 +178,8 @@ TEST(TestRclcLifecycle, lifecycle_node_callbacks) { &lifecycle_node, &my_node, &state_machine_, - &allocator); + &allocator, + true); // register callbacks rclc_lifecycle_register_on_configure(&lifecycle_node, &callback_mockup_0);