From a2e00cf0f5a7597ee83af01740b584ab7dcad35b Mon Sep 17 00:00:00 2001 From: Greek Date: Fri, 28 Jan 2022 10:19:52 +0100 Subject: [PATCH] BUG FIX: Service uses 2 seperate Typenames for Request/response --- src/ros2/TEMPLATE_ros_config.vhd | 3 ++- src/ros2/Tests/Level_2/L2_Testbench_ROS_Lib2_config.vhd | 3 ++- src/ros2/Tests/Level_2/L2_Testbench_ROS_Lib3_config.vhd | 3 ++- src/ros2/dds_user_config.vhd | 6 ++++-- src/ros2/ros_package.vhd | 3 ++- syn/syn_ros_service_config.vhd | 3 ++- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/ros2/TEMPLATE_ros_config.vhd b/src/ros2/TEMPLATE_ros_config.vhd index f23f75a..2af3a85 100644 --- a/src/ros2/TEMPLATE_ros_config.vhd +++ b/src/ros2/TEMPLATE_ros_config.vhd @@ -60,7 +60,8 @@ package ros_config is 0 => ( node_id => 0, SERVICENAME => gen_user_string("Service1"), - TYPENAME => gen_user_string("Type3"), + RQ_TYPENAME => gen_user_string("Type3_Request"), + RR_TYPENAME => gen_user_string("Type3_Response"), QOS => ROS_QOS_PROFILE_SERVICES_DEFAULT, MAX_RQ_SIZE => 10, MAX_RR_SIZE => 10, diff --git a/src/ros2/Tests/Level_2/L2_Testbench_ROS_Lib2_config.vhd b/src/ros2/Tests/Level_2/L2_Testbench_ROS_Lib2_config.vhd index 74318df..6bb3293 100644 --- a/src/ros2/Tests/Level_2/L2_Testbench_ROS_Lib2_config.vhd +++ b/src/ros2/Tests/Level_2/L2_Testbench_ROS_Lib2_config.vhd @@ -61,7 +61,8 @@ package ros_config is 0 => ( node_id => 0, SERVICENAME => gen_user_string("add_two_ints"), - TYPENAME => gen_user_string("example_interfaces::srv::dds_::AddTwoInts_Request_"), + RQ_TYPENAME => gen_user_string("example_interfaces::srv::dds_::AddTwoInts_Request_"), + RR_TYPENAME => gen_user_string("example_interfaces::srv::dds_::AddTwoInts_Response_"), QOS => ROS_QOS_PROFILE_TRANSIENT, MAX_RQ_SIZE => MAX_ADDTWOINTS_RQ_SIZE, MAX_RR_SIZE => MAX_ADDTWOINTS_RR_SIZE, diff --git a/src/ros2/Tests/Level_2/L2_Testbench_ROS_Lib3_config.vhd b/src/ros2/Tests/Level_2/L2_Testbench_ROS_Lib3_config.vhd index 0cf5565..5a9d8e5 100644 --- a/src/ros2/Tests/Level_2/L2_Testbench_ROS_Lib3_config.vhd +++ b/src/ros2/Tests/Level_2/L2_Testbench_ROS_Lib3_config.vhd @@ -61,7 +61,8 @@ package ros_config is 0 => ( node_id => 0, SERVICENAME => gen_user_string("add_two_ints"), - TYPENAME => gen_user_string("example_interfaces::srv::dds_::AddTwoInts_Request_"), + RQ_TYPENAME => gen_user_string("example_interfaces::srv::dds_::AddTwoInts_Request_"), + RR_TYPENAME => gen_user_string("example_interfaces::srv::dds_::AddTwoInts_Response_"), QOS => ROS_QOS_PROFILE_TRANSIENT, MAX_RQ_SIZE => MAX_ADDTWOINTS_RQ_SIZE, MAX_RR_SIZE => MAX_ADDTWOINTS_RR_SIZE, diff --git a/src/ros2/dds_user_config.vhd b/src/ros2/dds_user_config.vhd index 87acc27..52cb345 100644 --- a/src/ros2/dds_user_config.vhd +++ b/src/ros2/dds_user_config.vhd @@ -132,14 +132,15 @@ package body user_config is ret(index) := DEFAULT_READER_CONFIG; set_from_qos_profile(ROS_SERVICES(i).QOS, ret(index)); set_sim_timing(ret(index),SIMULATION_TIMING); - ret(index).TYPENAME := ROS_SERVICES(i).TYPENAME; tmp := gen_fqn(ROS_NODES(ROS_SERVICES(i).node_id).namespace, ROS_NODES(ROS_SERVICES(i).node_id).name, ROS_SERVICES(i).SERVICENAME); if (ROS_SERVICES(i).is_client) then ret(index).TOPICNAME := concat("rr",concat(tmp,"Reply")); ret(index).MAX_PAYLOAD_SIZE := ROS_SERVICES(i).MAX_RR_SIZE; + ret(index).TYPENAME := ROS_SERVICES(i).RR_TYPENAME; else ret(index).TOPICNAME := concat("rq",concat(tmp,"Request")); ret(index).MAX_PAYLOAD_SIZE := ROS_SERVICES(i).MAX_RQ_SIZE; + ret(index).TYPENAME := ROS_SERVICES(i).RQ_TYPENAME; end if; index := index + 1; end loop; @@ -163,14 +164,15 @@ package body user_config is ret(index) := DEFAULT_WRITER_CONFIG; set_from_qos_profile(ROS_SERVICES(i).QOS, ret(index)); set_sim_timing(ret(index),SIMULATION_TIMING); - ret(index).TYPENAME := ROS_SERVICES(i).TYPENAME; tmp := gen_fqn(ROS_NODES(ROS_SERVICES(i).node_id).namespace, ROS_NODES(ROS_SERVICES(i).node_id).name, ROS_SERVICES(i).SERVICENAME); if (ROS_SERVICES(i).is_client) then ret(index).TOPICNAME := concat("rq",concat(tmp,"Request")); ret(index).MAX_PAYLOAD_SIZE := ROS_SERVICES(i).MAX_RQ_SIZE; + ret(index).TYPENAME := ROS_SERVICES(i).RQ_TYPENAME; else ret(index).TOPICNAME := concat("rr",concat(tmp,"Reply")); ret(index).MAX_PAYLOAD_SIZE := ROS_SERVICES(i).MAX_RR_SIZE; + ret(index).TYPENAME := ROS_SERVICES(i).RR_TYPENAME; end if; index := index + 1; end loop; diff --git a/src/ros2/ros_package.vhd b/src/ros2/ros_package.vhd index b39aa5b..34f8ddd 100644 --- a/src/ros2/ros_package.vhd +++ b/src/ros2/ros_package.vhd @@ -129,7 +129,8 @@ package ros_package is type ROS_SERVICE_TYPE is record node_id : natural; SERVICENAME : USER_STRING_TYPE; - TYPENAME : USER_STRING_TYPE; + RQ_TYPENAME : USER_STRING_TYPE; + RR_TYPENAME : USER_STRING_TYPE; QOS : ROS_QOS_PROFILE_TYPE; MAX_RQ_SIZE : natural; MAX_RR_SIZE : natural; diff --git a/syn/syn_ros_service_config.vhd b/syn/syn_ros_service_config.vhd index 35ec498..866c887 100644 --- a/syn/syn_ros_service_config.vhd +++ b/syn/syn_ros_service_config.vhd @@ -61,7 +61,8 @@ package ros_config is 0 => ( node_id => 0, SERVICENAME => gen_user_string("add_two_ints"), - TYPENAME => gen_user_string("example_interfaces::srv::dds_::AddTwoInts_Request_"), + RQ_TYPENAME => gen_user_string("example_interfaces::srv::dds_::AddTwoInts_Request_"), + RR_TYPENAME => gen_user_string("example_interfaces::srv::dds_::AddTwoInts_Response_"), QOS => ROS_QOS_PROFILE_SERVICES_DEFAULT, MAX_RQ_SIZE => MAX_ADDTWOINTS_RQ_SIZE, MAX_RR_SIZE => MAX_ADDTWOINTS_RR_SIZE,