From 35da07efce8de0e11930e8a5d68fbb9bb8a15966 Mon Sep 17 00:00:00 2001 From: Stefano Bernagozzi Date: Thu, 22 Jan 2026 15:38:58 +0100 Subject: [PATCH 1/2] updated service type name Signed-off-by: Stefano Bernagozzi --- src/ExtractFromXML.cpp | 7 +++++-- src/Replacer.cpp | 1 + template_skill/include/TemplateSkill.h | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/ExtractFromXML.cpp b/src/ExtractFromXML.cpp index f08e3c6..3a94753 100644 --- a/src/ExtractFromXML.cpp +++ b/src/ExtractFromXML.cpp @@ -40,7 +40,10 @@ bool extractInterfaceData(const fileDataStr fileData, eventDataStr& eventData) // open the input file and check if it exists tinyxml2::XMLElement* element; - findInterfaceType(fileData, eventData, element); + if (!findInterfaceType(fileData, eventData, element)) { + std::cerr << "Failed to find interface type for component '" << eventData.componentName << "' and function '" << eventData.functionName << "' in file '" << fileData.inputFileName << "'."<< std::endl; + return false; + } // Only populate interfaceData if we have interface fields that need type information if (!eventData.interfaceRequestFields.empty() || !eventData.interfaceResponseFields.empty() || !eventData.interfaceTopicFields.empty()) { @@ -187,7 +190,7 @@ bool findInterfaceType(const fileDataStr fileData, eventDataStr& eventData, tiny if (!findElementByTagAndAttValue(root, std::string("ros_service_handle_response"), std::string("name"), std::string("/" + eventData.componentName + "/" + eventData.functionName), responseParent)) { std::cerr << "No ros_service_handle_response element found for component '" << eventData.componentName << "' and function '" << eventData.functionName << "' in file '" << fileData.inputFileName << "'."<< std::endl; - // return false; + return false; } if(responseParent) { diff --git a/src/Replacer.cpp b/src/Replacer.cpp index cee005d..560d669 100644 --- a/src/Replacer.cpp +++ b/src/Replacer.cpp @@ -324,6 +324,7 @@ void handleGenericEvent(const eventDataStr eventData, const savedCodeStr savedCo //H replaceAll(interfaceCodeH, "$eventData.interfaceName$", eventData.interfaceName); replaceAll(interfaceCodeH, "$eventData.functionNameSnakeCase$", eventData.functionNameSnakeCase); + replaceAll(interfaceCodeH, "$eventData.serviceTypeNameSnakeCase$", eventData.serviceTypeNameSnakeCase); writeAfterCommand(str, "/*INTERFACES_LIST*/", interfaceCodeH); //CMakeLists.txt diff --git a/template_skill/include/TemplateSkill.h b/template_skill/include/TemplateSkill.h index ca70af4..6d2e895 100644 --- a/template_skill/include/TemplateSkill.h +++ b/template_skill/include/TemplateSkill.h @@ -11,7 +11,7 @@ #include "$className$SM.h" #include /*INTERFACES_LIST*/ /*INTERFACE*/ -#include <$eventData.interfaceName$/srv/$eventData.functionNameSnakeCase$.hpp> /*END_INTERFACE*/ +#include <$eventData.interfaceName$/srv/$eventData.serviceTypeNameSnakeCase$.hpp> /*END_INTERFACE*/ /*ACTION_INTERFACE*/ #include <$eventData.interfaceName$/action/$eventData.functionNameSnakeCase$.hpp> /*END_ACTION_INTERFACE*/ /*TOPIC_INTERFACE*/ From ec57be3eaec0563af7c62527f5c499f90096d660 Mon Sep 17 00:00:00 2001 From: Stefano Bernagozzi Date: Thu, 22 Jan 2026 15:44:45 +0100 Subject: [PATCH 2/2] reported also changes to send_request Signed-off-by: Stefano Bernagozzi --- src/ExtractFromXML.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ExtractFromXML.cpp b/src/ExtractFromXML.cpp index 3a94753..434a7b1 100644 --- a/src/ExtractFromXML.cpp +++ b/src/ExtractFromXML.cpp @@ -173,11 +173,11 @@ bool findInterfaceType(const fileDataStr fileData, eventDataStr& eventData, tiny if (!findElementByTagAndAttValue(root, std::string("ros_service_send_request"), std::string("name"), std::string("/" + eventData.componentName + "/" + eventData.functionName), fieldParent)) { std::cerr << "No ros_service_send_request element found for component '" << eventData.componentName << "' and function '" << eventData.functionName << "' in file '" << fileData.inputFileName << "'."<< std::endl; - // return false; - } - if (fieldParent) { - add_to_log("fieldParent: " + std::string(fieldParent->Name()) + " at line " + std::to_string(__LINE__)); + return false; } + // if (fieldParent) { + // add_to_log("fieldParent: " + std::string(fieldParent->Name()) + " at line " + std::to_string(__LINE__)); + // } if (!getInterfaceFieldsFromFieldTag(fieldParent, eventData.interfaceRequestFields)) { std::cerr << "Failed to get interface ros_service_send_request fields for component '" << eventData.componentName << "' and function '" << eventData.functionName << "' in file '" << fileData.inputFileName << "'."<< std::endl;