Current section
35 Versions
Jump to
Current section
35 Versions
Compare versions
6
files changed
+71
additions
-38
deletions
| @@ -1,5 +1,22 @@ | |
| 1 1 | # CHANGELOG |
| 2 2 | |
| 3 | + ## v0.8.5 on 05 Jun 2023 |
| 4 | + |
| 5 | + **Full Changelog**: https://github.com/rclex/rclex/compare/v0.8.4...v0.8.5 |
| 6 | + |
| 7 | + * New features: |
| 8 | + * * Adding handling for nested Message types from different Packages by @steve-at in https://github.com/rclex/rclex/pull/230 |
| 9 | + * Code Improvements/Fixes: none |
| 10 | + * Bumps: |
| 11 | + * Bump elixir_make from 0.7.6 to 0.7.7 |
| 12 | + * Known issues to be addressed in the near future: |
| 13 | + * `publish/2` sometimes failed just after `create_publisher/3` in https://github.com/rclex/rclex/issues/212 |
| 14 | + * Lock `git_hooks` to 0.6.5 due to its issue in https://github.com/rclex/rclex/issues/138 |
| 15 | + * Bump to Humble Hawksbill in https://github.com/rclex/rclex/issues/114 |
| 16 | + * Bump to Iron Irwini in https://github.com/rclex/rclex/issues/228 |
| 17 | + * Release rcl nif resources when GerServer terminates in https://github.com/rclex/rclex/issues/160 |
| 18 | + * Note in this release: none |
| 19 | + |
| 3 20 | ## v0.8.4 on 11 Apr 2023 |
| 4 21 | |
| 5 22 | **Full Changelog**: https://github.com/rclex/rclex/compare/v0.8.3...v0.8.4 |
| @@ -92,7 +92,7 @@ by adding `rclex` to your list of dependencies in `mix.exs`: | |
| 92 92 | defp deps do |
| 93 93 | [ |
| 94 94 | ... |
| 95 | - {:rclex, "~> 0.8.4"}, |
| 95 | + {:rclex, "~> 0.8.5"}, |
| 96 96 | ... |
| 97 97 | ] |
| 98 98 | end |
| @@ -79,7 +79,7 @@ cd rclex_usage | |
| 79 79 | defp deps do |
| 80 80 | [ |
| 81 81 | ... |
| 82 | - {:rclex, "~> 0.8.4"}, |
| 82 | + {:rclex, "~> 0.8.5"}, |
| 83 83 | ... |
| 84 84 | ] |
| 85 85 | end |
| @@ -3,37 +3,36 @@ | |
| 3 3 | {<<"description">>,<<"ROS 2 Client Library for Elixir.">>}. |
| 4 4 | {<<"elixir">>,<<"~> 1.12">>}. |
| 5 5 | {<<"files">>, |
| 6 | - [<<"lib">>,<<"lib/rclex">>,<<"lib/rclex/publisher.ex">>, |
| 7 | - <<"lib/rclex/return_code.ex">>,<<"lib/rclex/node.ex">>, |
| 8 | - <<"lib/rclex/job_executor.ex">>,<<"lib/rclex/job_queue.ex">>, |
| 9 | - <<"lib/rclex/msg_prot.ex">>,<<"lib/rclex/subscriber.ex">>, |
| 10 | - <<"lib/rclex/timer_loop.ex">>,<<"lib/rclex/resource_server.ex">>, |
| 11 | - <<"lib/rclex/msg_types_nif.ex">>,<<"lib/rclex/timer.ex">>, |
| 12 | - <<"lib/rclex/sub_loop.ex">>,<<"lib/rclex/nifs.ex">>,<<"lib/rclex/msg.ex">>, |
| 13 | - <<"lib/rclex.ex">>,<<"lib/mix">>,<<"lib/mix/tasks">>, |
| 14 | - <<"lib/mix/tasks/rclex">>,<<"lib/mix/tasks/rclex/prep">>, |
| 15 | - <<"lib/mix/tasks/rclex/prep/ros2.ex">>,<<"lib/mix/tasks/rclex/gen">>, |
| 16 | - <<"lib/mix/tasks/rclex/gen/msgs.ex">>,<<"priv">>,<<"priv/templates">>, |
| 6 | + [<<"lib">>,<<"lib/rclex.ex">>,<<"lib/rclex">>,<<"lib/rclex/job_queue.ex">>, |
| 7 | + <<"lib/rclex/timer_loop.ex">>,<<"lib/rclex/msg_prot.ex">>, |
| 8 | + <<"lib/rclex/resource_server.ex">>,<<"lib/rclex/timer.ex">>, |
| 9 | + <<"lib/rclex/sub_loop.ex">>,<<"lib/rclex/msg.ex">>,<<"lib/rclex/node.ex">>, |
| 10 | + <<"lib/rclex/return_code.ex">>,<<"lib/rclex/job_executor.ex">>, |
| 11 | + <<"lib/rclex/nifs.ex">>,<<"lib/rclex/subscriber.ex">>, |
| 12 | + <<"lib/rclex/publisher.ex">>,<<"lib/rclex/msg_types_nif.ex">>,<<"lib/mix">>, |
| 13 | + <<"lib/mix/tasks">>,<<"lib/mix/tasks/rclex">>,<<"lib/mix/tasks/rclex/gen">>, |
| 14 | + <<"lib/mix/tasks/rclex/gen/msgs.ex">>,<<"lib/mix/tasks/rclex/prep">>, |
| 15 | + <<"lib/mix/tasks/rclex/prep/ros2.ex">>,<<"priv">>,<<"priv/templates">>, |
| 17 16 | <<"priv/templates/rclex.gen.msgs">>, |
| 17 | + <<"priv/templates/rclex.gen.msgs/msg_mod.eex">>, |
| 18 | + <<"priv/templates/rclex.gen.msgs/msg_prot_impl.eex">>, |
| 19 | + <<"priv/templates/rclex.gen.msgs/src">>, |
| 20 | + <<"priv/templates/rclex.gen.msgs/src/msg_types_nif.h">>, |
| 21 | + <<"priv/templates/rclex.gen.msgs/src/msg_types_nif.ec">>, |
| 22 | + <<"priv/templates/rclex.gen.msgs/msg_types_nif.eex">>, |
| 23 | + <<"priv/templates/rclex.gen.msgs/msg_nif_c.eex">>, |
| 18 24 | <<"priv/templates/rclex.gen.msgs/msg_nif_h.eex">>, |
| 19 25 | <<"priv/templates/rclex.gen.msgs/lib">>, |
| 20 26 | <<"priv/templates/rclex.gen.msgs/lib/rclex">>, |
| 21 | - <<"priv/templates/rclex.gen.msgs/lib/rclex/msg_types_nif.ex">>, |
| 22 | - <<"priv/templates/rclex.gen.msgs/src">>, |
| 23 | - <<"priv/templates/rclex.gen.msgs/src/msg_types_nif.ec">>, |
| 24 | - <<"priv/templates/rclex.gen.msgs/src/msg_types_nif.h">>, |
| 25 | - <<"priv/templates/rclex.gen.msgs/msg_prot_impl.eex">>, |
| 26 | - <<"priv/templates/rclex.gen.msgs/msg_mod.eex">>, |
| 27 | - <<"priv/templates/rclex.gen.msgs/msg_types_nif.eex">>, |
| 28 | - <<"priv/templates/rclex.gen.msgs/msg_nif_c.eex">>,<<"src">>, |
| 29 | - <<"src/graph_nif.h">>,<<"src/node_nif.h">>,<<"src/total_nif.c">>, |
| 30 | - <<"src/publisher_nif.c">>,<<"src/subscription_nif.h">>,<<"src/msg_nif.h">>, |
| 31 | - <<"src/msg_types_nif.ec">>,<<"src/init_nif.c">>,<<"src/wait_nif.c">>, |
| 32 | - <<"src/init_nif.h">>,<<"src/total_nif.h">>,<<"src/node_nif.c">>, |
| 33 | - <<"src/subscription_nif.c">>,<<"src/wait_nif.h">>,<<"src/msg_nif.c">>, |
| 34 | - <<"src/graph_nif.c">>,<<"src/msg_types_nif.h">>,<<"src/publisher_nif.h">>, |
| 35 | - <<"mix.exs">>,<<"README.md">>,<<"README_ja.md">>,<<"LICENSE">>, |
| 36 | - <<"CHANGELOG.md">>,<<"Makefile">>]}. |
| 27 | + <<"priv/templates/rclex.gen.msgs/lib/rclex/msg_types_nif.ex">>,<<"src">>, |
| 28 | + <<"src/graph_nif.c">>,<<"src/msg_nif.c">>,<<"src/node_nif.h">>, |
| 29 | + <<"src/init_nif.h">>,<<"src/wait_nif.h">>,<<"src/subscription_nif.c">>, |
| 30 | + <<"src/msg_nif.h">>,<<"src/graph_nif.h">>,<<"src/publisher_nif.c">>, |
| 31 | + <<"src/msg_types_nif.h">>,<<"src/node_nif.c">>,<<"src/total_nif.h">>, |
| 32 | + <<"src/msg_types_nif.ec">>,<<"src/subscription_nif.h">>, |
| 33 | + <<"src/total_nif.c">>,<<"src/wait_nif.c">>,<<"src/publisher_nif.h">>, |
| 34 | + <<"src/init_nif.c">>,<<"mix.exs">>,<<"README.md">>,<<"README_ja.md">>, |
| 35 | + <<"LICENSE">>,<<"CHANGELOG.md">>,<<"Makefile">>]}. |
| 37 36 | {<<"licenses">>,[<<"Apache-2.0">>]}. |
| 38 37 | {<<"links">>,[{<<"Github">>,<<"https://github.com/rclex/rclex">>}]}. |
| 39 38 | {<<"name">>,<<"rclex">>}. |
| @@ -43,4 +42,4 @@ | |
| 43 42 | {<<"optional">>,false}, |
| 44 43 | {<<"repository">>,<<"hexpm">>}, |
| 45 44 | {<<"requirement">>,<<"~> 0.4">>}]]}. |
| 46 | - {<<"version">>,<<"0.8.4">>}. |
| 45 | + {<<"version">>,<<"0.8.5">>}. |
| @@ -255,7 +255,7 @@ defmodule Mix.Tasks.Rclex.Gen.Msgs do | |
| 255 255 | @spec get_ros2_message_type_map(String.t(), String.t(), map()) :: map() |
| 256 256 | # credo:disable-for-next-line |
| 257 257 | def get_ros2_message_type_map(ros2_message_type, from, acc \\ %{}) do |
| 258 | - [package_name, "msg", _type_name] = String.split(ros2_message_type, "/") |
| 258 | + package_name = get_package_name(ros2_message_type) |
| 259 259 | |
| 260 260 | rows = |
| 261 261 | "#{Path.join(from, ros2_message_type)}.msg" |
| @@ -274,12 +274,15 @@ defmodule Mix.Tasks.Rclex.Gen.Msgs do | |
| 274 274 | # NOTE: currently we do not support default value |
| 275 275 | |> Enum.take(2) |
| 276 276 | |
| 277 | - cond do |
| 278 | - type in @ros2_built_in_types -> {type, variable} |
| 279 | - is_ros2_built_in_list(type) -> {type, variable} |
| 280 | - String.contains?(type, "/") -> {type, variable} |
| 281 | - true -> {Path.join("#{package_name}/msg", type), variable} |
| 282 | - end |
| 277 | + type = |
| 278 | + cond do |
| 279 | + type in @ros2_built_in_types -> type |
| 280 | + is_ros2_built_in_list(type) -> type |
| 281 | + String.contains?(type, "/") -> get_nested_ros2_type(type) |
| 282 | + true -> Path.join("#{package_name}/msg", type) |
| 283 | + end |
| 284 | + |
| 285 | + {type, variable} |
| 283 286 | end) |
| 284 287 | |
| 285 288 | type_map = Map.put(acc, ros2_message_type, type_variable_tuples) |
| @@ -771,6 +774,20 @@ defmodule Mix.Tasks.Rclex.Gen.Msgs do | |
| 771 774 | String.match?(type, ~r/.+\[[0-9]+\]/) |
| 772 775 | end |
| 773 776 | |
| 777 | + defp get_package_name(ros2_message_type) do |
| 778 | + case String.split(ros2_message_type, "/") do |
| 779 | + [package_name, "msg", _type_name] -> package_name |
| 780 | + [package_name, _type_name] -> package_name |
| 781 | + end |
| 782 | + end |
| 783 | + |
| 784 | + defp get_nested_ros2_type(type) do |
| 785 | + case String.split(type, "/") do |
| 786 | + [_package_name, "msg", _t] -> type |
| 787 | + [package_name, t] -> Path.join("#{package_name}/msg", t) |
| 788 | + end |
| 789 | + end |
| 790 | + |
| 774 791 | defp list_type(type) do |
| 775 792 | String.split(type, "[") |> List.first() |
| 776 793 | end |
Loading more files…