From 70757b4144f2241271da0172715df0e6efef1b78 Mon Sep 17 00:00:00 2001 From: Javier Moreno Date: Wed, 14 Nov 2018 00:01:02 +0100 Subject: [PATCH 1/5] Issue with windows paths solved. --- uROS_Agent/uros_agent/__init__.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/uROS_Agent/uros_agent/__init__.py b/uROS_Agent/uros_agent/__init__.py index 612359e..bbce6b6 100644 --- a/uROS_Agent/uros_agent/__init__.py +++ b/uROS_Agent/uros_agent/__init__.py @@ -43,7 +43,7 @@ def GetPackage(Dir): break - return found_package_path + return found_package_path.replace("\\", "/") def GetPackageList(Dir): @@ -58,7 +58,7 @@ def GetPackageList(Dir): package_list.append(l) elif package_path != "COLCON_IGNORE": package_list.append(package_path) - + return package_list @@ -70,7 +70,7 @@ def GetInterfacePackages(packages_list): if element.text == "rosidl_interface_packages": package_interface_list.append(package) return package_interface_list - + def GetPackageName(package_path): xml_root = xml.etree.ElementTree.parse(package_path).getroot() @@ -88,8 +88,8 @@ def GetInterfacePackageMsgs(package_path): for file in files: if file.endswith(".msg"): full_path = os.path.join(root, file) - msg_list.append(full_path) - + msg_list.append(full_path.replace("\\", "/")) + return msg_list def GetInterfacePackageSrvs(package_path): @@ -99,8 +99,8 @@ def GetInterfacePackageSrvs(package_path): for file in files: if file.endswith(".srv"): full_path = os.path.join(root, file) - msg_list.append(full_path) - + msg_list.append(full_path.replace("\\", "/")) + return msg_list @@ -113,7 +113,7 @@ def ReadDefaultXMLs(Path): fd = open(full_path) print ("%s" % fd.read()) fd.close() - + def generate_XML(args): From 9b615a41741256abac149ae3c1b7a2bb2e2e41c0 Mon Sep 17 00:00:00 2001 From: Javier Moreno Date: Wed, 14 Nov 2018 13:17:15 +0100 Subject: [PATCH 2/5] Fixed issue when --merge-install is activated (Windows issue) --- uROS_Agent/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uROS_Agent/CMakeLists.txt b/uROS_Agent/CMakeLists.txt index 368b5ba..7a6676a 100644 --- a/uROS_Agent/CMakeLists.txt +++ b/uROS_Agent/CMakeLists.txt @@ -67,7 +67,7 @@ normalize_path(_DEFAULT_FASTRTPS_PROFILES_PATH "${_DEFAULT_FASTRTPS_PROFILES_PAT # Get colcon call dir -get_filename_component(_COLCON_CALL_DIR "${CMAKE_INSTALL_PREFIX}" DIRECTORY) +get_filename_component(_COLCON_CALL_DIR "${PROJECT_BINARY_DIR}" DIRECTORY) get_filename_component(_COLCON_CALL_DIR "${_COLCON_CALL_DIR}" DIRECTORY) From 53555aa9911c5b7ab7e63b575ab7623d5f4c3f67 Mon Sep 17 00:00:00 2001 From: Javier Moreno <42214121+qeyup@users.noreply.github.com> Date: Thu, 15 Nov 2018 15:00:37 +0100 Subject: [PATCH 3/5] Updated to last version of Micoxrcedds Agent. (#3) --- uROS_Agent/src/main.cpp | 181 ++++++++++++++-------------------------- 1 file changed, 63 insertions(+), 118 deletions(-) diff --git a/uROS_Agent/src/main.cpp b/uROS_Agent/src/main.cpp index e9d986f..fa37425 100644 --- a/uROS_Agent/src/main.cpp +++ b/uROS_Agent/src/main.cpp @@ -37,10 +37,15 @@ void showHelp() { std::cout << "Usage: program " << std::endl; std::cout << "List of commands:" << std::endl; +#ifdef _WIN32 + std::cout << " udp " << std::endl; + std::cout << " tcp " << std::endl; +#else std::cout << " serial " << std::endl; std::cout << " pseudo-serial" << std::endl; std::cout << " udp []" << std::endl; std::cout << " tcp []" << std::endl; +#endif } void initializationError() @@ -50,7 +55,7 @@ void initializationError() std::exit(EXIT_FAILURE); } -uint16_t parsePort(const char* str_port) +uint16_t parsePort(const std::string& str_port) { uint16_t valid_port = 0; try @@ -70,73 +75,66 @@ uint16_t parsePort(const char* str_port) return valid_port; } - -class uros_agent : public rclcpp::Node -{ -public: - uros_agent() : Node("uROS_Agent") - { - } - - ~uros_agent() - { - } - -private: - -}; - - int main(int argc, char** argv) { - -#ifdef __unix__ - char exe_path[200]; - ssize_t count = readlink("/proc/self/exe", exe_path, sizeof(exe_path)); - if (count != -1) { - chdir(dirname(exe_path)); - } -#endif + eprosima::uxr::Server* server = nullptr; + std::vector cl(0); - bool initialized = false; - -#ifdef __unix__ - if(argc == 2 && (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0)) + if (1 == argc) { showHelp(); + std::cout << std::endl; + std::cout << "Enter command: "; + + std::string raw_cl; + std::getline(std::cin, raw_cl); + std::istringstream iss(raw_cl); + cl.insert(cl.begin(), std::istream_iterator(iss), std::istream_iterator()); + std::cout << raw_cl << std::endl; } - else if(argc >= 3 && strcmp(argv[1], "udp") == 0) + else { - std::cout << "UDP agent initialization... "; - uint16_t port = parsePort(argv[2]); - eprosima::uxr::UDPServer* udp_server = (argc == 4) //discovery port - ? new eprosima::uxr::UDPServer(port, parsePort(argv[3])) - : new eprosima::uxr::UDPServer(port); - if (udp_server->run()) + for (int i = 1; i < argc; ++i) { - initialized = true; + cl.push_back(argv[i]); } - std::cout << ((!initialized) ? "ERROR" : "OK") << std::endl; } - else if(argc >= 3 && strcmp(argv[1], "tcp") == 0) + + if((1 == cl.size()) && (("-h" == cl[0]) || ("--help" == cl[0]))) + { + showHelp(); + } + else if((2 <= cl.size()) && ("udp" == cl[0])) + { + std::cout << "UDP agent initialization... "; + uint16_t port = parsePort(cl[1]); +#ifdef _WIN32 + server = new eprosima::uxr::UDPServer(port); +#else + server = (3 == cl.size()) //discovery port + ? new eprosima::uxr::UDPServer(port, parsePort(cl[2])) + : new eprosima::uxr::UDPServer(port); +#endif + } + else if((2 <= cl.size()) && ("tcp" == cl[0])) { std::cout << "TCP agent initialization... "; - uint16_t port = parsePort(argv[2]); - eprosima::uxr::TCPServer* tcp_server = (argc == 4) //discovery port - ? new eprosima::uxr::TCPServer(port, parsePort(argv[3])) - : new eprosima::uxr::TCPServer(port); - if (tcp_server->run()) - { - initialized = true; - } - std::cout << ((!initialized) ? "ERROR" : "OK") << std::endl; + uint16_t port = parsePort(cl[1]); +#ifdef _WIN32 + server = new eprosima::uxr::TCPServer(port); +#else + server = (3 == cl.size()) //discovery port + ? new eprosima::uxr::TCPServer(port, parsePort(cl[2])) + : new eprosima::uxr::TCPServer(port); +#endif } - else if(argc == 3 && strcmp(argv[1], "serial") == 0) +#ifndef _WIN32 + else if((2 == cl.size()) && ("serial" == cl[0])) { std::cout << "Serial agent initialization... "; /* Open serial device. */ - int fd = open(argv[2], O_RDWR | O_NOCTTY); + int fd = open(cl[1].c_str(), O_RDWR | O_NOCTTY); if (0 < fd) { struct termios tty_config; @@ -181,18 +179,12 @@ int main(int argc, char** argv) if (0 == tcsetattr(fd, TCSANOW, &tty_config)) { - eprosima::uxr::SerialServer* serial_server = new eprosima::uxr::SerialServer(fd, 0); - if (serial_server->run()) - { - initialized = true; - } + server = new eprosima::uxr::SerialServer(fd, 0); } } } - - std::cout << ((!initialized) ? "ERROR" : "OK") << std::endl; } - else if (argc == 2 && strcmp(argv[1], "pseudo-serial") == 0) + else if ((1 == cl.size()) && ("pseudo-serial" == cl[0])) { std::cout << "Pseudo-Serial initialization... "; @@ -208,78 +200,31 @@ int main(int argc, char** argv) cfmakeraw(&attr); tcflush(fd, TCIOFLUSH); tcsetattr(fd, TCSANOW, &attr); + std::cout << "Device: " << dev << std::endl; } } - - /* Launch server. */ - eprosima::uxr::SerialServer* serial_server = new eprosima::uxr::SerialServer(fd, 0x00); - if (serial_server->run()) - { - initialized = true; - } - - if (initialized) - { - std::cout << "OK" << std::endl; - std::cout << "Device: " << dev << std::endl; - } - else - { - std::cout << "ERROR" << std::endl; - } + server = new eprosima::uxr::SerialServer(fd, 0x00); } +#endif else { initializationError(); } -#elif _WIN32 - (void) argc; - (void) argv; - - std::string server_type = ""; - std::cout << "Select server type [udp|tcp]: "; - std::cin >> server_type; - if ("udp" == server_type) + if (nullptr != server) { - uint16_t port = 0; - std::cout << "Select port: "; - std::cin >> port; - - std::cout << "UDP agent initialization.... "; - eprosima::uxr::UDPServer* udp_server = new eprosima::uxr::UDPServer(port); - if (udp_server->run()) + /* Launch server. */ + if (server->run()) { - initialized = true; + rclcpp::init(argc, argv); + rclcpp::spin(std::make_shared()); + rclcpp::shutdown(); + server->stop(); } - std::cout << ((!initialized) ? "ERROR" : "OK") << std::endl; - } - else if ("tcp" == server_type) - { - uint16_t port = 0; - std::cout << "Select port: "; - std::cin >> port; - - std::cout << "UDP agent initialization.... "; - eprosima::uxr::TCPServer* tcp_server = new eprosima::uxr::TCPServer(port); - if (tcp_server->run()) + else { - initialized = true; + std::cout << "ERROR" << std::endl; } - std::cout << ((!initialized) ? "ERROR" : "OK") << std::endl; - } - else - { - std::cout << "Error server type" << std::endl; - } - -#endif - - if(initialized) - { - rclcpp::init(argc, argv); - rclcpp::spin(std::make_shared()); - rclcpp::shutdown(); } return 0; From 4a3a8a3b5221e03f46d602d99bcd3f25c8d510d3 Mon Sep 17 00:00:00 2001 From: Javier Moreno <42214121+qeyup@users.noreply.github.com> Date: Thu, 15 Nov 2018 16:23:35 +0100 Subject: [PATCH 4/5] Restored removed code by accident (#4) --- uROS_Agent/src/main.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/uROS_Agent/src/main.cpp b/uROS_Agent/src/main.cpp index fa37425..594b398 100644 --- a/uROS_Agent/src/main.cpp +++ b/uROS_Agent/src/main.cpp @@ -28,6 +28,7 @@ #include #endif +#include #include #include #include @@ -75,6 +76,21 @@ uint16_t parsePort(const std::string& str_port) return valid_port; } +class uros_agent : public rclcpp::Node +{ +public: + uros_agent() : Node("uROS_Agent") + { + } + + ~uros_agent() + { + } + +private: + +}; + int main(int argc, char** argv) { eprosima::uxr::Server* server = nullptr; From efaf219a6314ab843100628798aee331a8b930fd Mon Sep 17 00:00:00 2001 From: Borja Outerelo Date: Fri, 16 Nov 2018 10:34:08 +0100 Subject: [PATCH 5/5] Refs #3842. Removes agent node. --- uROS_Agent/src/main.cpp | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/uROS_Agent/src/main.cpp b/uROS_Agent/src/main.cpp index 594b398..035acf1 100644 --- a/uROS_Agent/src/main.cpp +++ b/uROS_Agent/src/main.cpp @@ -76,21 +76,6 @@ uint16_t parsePort(const std::string& str_port) return valid_port; } -class uros_agent : public rclcpp::Node -{ -public: - uros_agent() : Node("uROS_Agent") - { - } - - ~uros_agent() - { - } - -private: - -}; - int main(int argc, char** argv) { eprosima::uxr::Server* server = nullptr; @@ -232,9 +217,14 @@ int main(int argc, char** argv) /* Launch server. */ if (server->run()) { - rclcpp::init(argc, argv); - rclcpp::spin(std::make_shared()); - rclcpp::shutdown(); + std::cout << "OK" << std::endl; + std::cin.clear(); + char exit_flag = 0; + while ('q' != exit_flag) + { + std::cout << "Enter 'q' for exit" << std::endl; + std::cin >> exit_flag; + } server->stop(); } else