| <?xml version="1.0" encoding="UTF-8"?> |
| <xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:C_Cpp="http://www.eclipse.org/papyrus/C_Cpp/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:robotics.components="http://www.eclipse.org/papyrus/robotics/components/1" xmlns:robotics.functions="http://www.eclipse.org/papyrus/robotics/functions/1" xmlns:robotics.generics="http://www.eclipse.org/papyrus/robotics/generics/1" xmlns:robotics.parameters="http://www.eclipse.org/papyrus/robotics/parameters/1" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/robotics/components/1 http://www.eclipse.org/papyrus/robotics/1#//components http://www.eclipse.org/papyrus/robotics/functions/1 http://www.eclipse.org/papyrus/robotics/1#//functions http://www.eclipse.org/papyrus/robotics/generics/1 http://www.eclipse.org/papyrus/robotics/1#//generics http://www.eclipse.org/papyrus/robotics/parameters/1 http://www.eclipse.org/papyrus/robotics/1#//parameters"> |
| <uml:Model xmi:id="_6nSQsEfEEeiwO_ETU0BG9A" name="addClientCompdef"> |
| <ownedComment xmi:type="uml:Comment" xmi:id="_ETCcQF0bEeqenIMm5aFGvw" annotatedElement="_6nSQsEfEEeiwO_ETU0BG9A"> |
| <body>This component models a client that adds 2 integers and receives a reply with their sum. |
| It has an empty set of parameters. |
| It has a port named useAdd that requires a service named "AddServiceDef" defined in the simple servicedef model. This model appears as loaded model in the model explorer, but not in your workspace. |
| The component is mapped to a ROS2 lifecycle node and needs to be activated before it starts operating. The component has an activity that gets called when the component is activated (e.g by sending a lifecycle configure/activate request via the ros2 command line tool.) |
| The function fCallAdd defines the request as a (x,y) structure and sends the request via the useAdd port in 2 possible ways: |
| - in a asynchronous non-blocking way (no callback function) and next by checking to its reply after 5s; |
| - by defining a callback function that it'll execute when the reply will be received. |
| In both cases, the function displays the received result (or an error if the reply was not received in time).</body> |
| </ownedComment> |
| <packageImport xmi:type="uml:PackageImport" xmi:id="_lwxc0ExOEei_Sui04GqxlQ"> |
| <importedPackage xmi:type="uml:Model" href="pathmap://ROBOTICS_LIBRARIES/robotics.library.uml#_LaOOAJcvEeeV0-Lu2yLOjA"/> |
| </packageImport> |
| <packageImport xmi:type="uml:PackageImport" xmi:id="_vPI0sExOEei_Sui04GqxlQ"> |
| <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/> |
| </packageImport> |
| <packageImport xmi:type="uml:PackageImport" xmi:id="_VwyNkPV1EemSEqXywHKEEA"> |
| <importedPackage xmi:type="uml:Model" href="pathmap://ROS2_TESTMODELS/simple/models/services/simple.servicedef.uml#_6nSQsEfEEeiwO_ETU0BG9A"/> |
| </packageImport> |
| <packagedElement xmi:type="uml:Class" xmi:id="_-9MoUEiFEeiAtInRNnLmIQ" name="AddClient"> |
| <ownedAttribute xmi:type="uml:Property" xmi:id="_DPbI0HX0EeirHb2XH36K_A" name="activity2" type="_DNyKEHX0EeirHb2XH36K_A"/> |
| <ownedAttribute xmi:type="uml:Port" xmi:id="_6SlXMHq1EeikT4nAmbXssQ" name="useAdd" type="_ZYcQwPV1EemSEqXywHKEEA" aggregation="composite"/> |
| <ownedConnector xmi:type="uml:Connector" xmi:id="_LCWWgAbwEeq69tbfZET3mw"> |
| <end xmi:type="uml:ConnectorEnd" xmi:id="_LCYLsAbwEeq69tbfZET3mw" partWithPort="_DPbI0HX0EeirHb2XH36K_A" role="_Fv2rwHq2EeikT4nAmbXssQ"/> |
| <end xmi:type="uml:ConnectorEnd" xmi:id="_LCYLsQbwEeq69tbfZET3mw" role="_6SlXMHq1EeikT4nAmbXssQ"/> |
| </ownedConnector> |
| <nestedClassifier xmi:type="uml:Class" xmi:id="_kiyUIEiHEeiAtInRNnLmIQ" name="ParameterSet"/> |
| <nestedClassifier xmi:type="uml:Class" xmi:id="_DNyKEHX0EeirHb2XH36K_A" name="CallAdd"> |
| <generalization xmi:type="uml:Generalization" xmi:id="_DN1NYHX0EeirHb2XH36K_A"> |
| <general xmi:type="uml:Class" href="pathmap://ROBOTICS_LIBRARIES/robotics.library.uml#_dFzyYPn9Eee8c8wpObBu7w"/> |
| </generalization> |
| <ownedAttribute xmi:type="uml:Property" xmi:id="_dI62YHX0EeirHb2XH36K_A" name="activate" visibility="public" type="_4IFoAHXzEeirHb2XH36K_A"/> |
| <ownedAttribute xmi:type="uml:Port" xmi:id="_Fv2rwHq2EeikT4nAmbXssQ" name="addPort" aggregation="composite"/> |
| </nestedClassifier> |
| <nestedClassifier xmi:type="uml:Class" xmi:id="_ZYcQwPV1EemSEqXywHKEEA"/> |
| </packagedElement> |
| <packagedElement xmi:type="uml:OpaqueBehavior" xmi:id="_4IFoAHXzEeirHb2XH36K_A" name="fCallAdd" isAbstract="true"> |
| <language>C++</language> |
| <body>auto request = std::make_shared< |
| simple::srv::AddServiceDef::Request>(); |
| request->x = 2; |
| request->y = 3; |
| |
| RCLCPP_INFO(get_logger(), "doing request"); |
| |
| // use a call in which the future is polled first |
| auto result_future = useAdd_client->async_send_request(request); |
| |
| if (result_future.wait_for(std::chrono::seconds(5s)) != std::future_status::ready) { |
| RCLCPP_ERROR(get_logger(), "service call failed. This happens, since the call is executed within the activation callback"); |
| } |
| else { |
| auto result = result_future.get(); |
| RCLCPP_INFO(get_logger(), "result = %d", result->sum); |
| } |
| |
| // now make a call referencing a callback (in a lambda) |
| useAdd_client->async_send_request(request, |
| [this]( |
| rclcpp::Client<simple::srv::AddServiceDef>::SharedFuture arg_future) { |
| auto result = arg_future.get(); |
| RCLCPP_INFO(get_logger(), "result = %d", result->sum); |
| } |
| ); |
| </body> |
| </packagedElement> |
| <packagedElement xmi:type="uml:Usage" xmi:id="_u0gz8PV5EemIj9SnfMX-0g" client="_ZYcQwPV1EemSEqXywHKEEA"> |
| <supplier xmi:type="uml:Interface" href="pathmap://ROS2_TESTMODELS/simple/models/services/simple.servicedef.uml#_aTuOIHoWEeif1855zzC59A"/> |
| </packagedElement> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_6voUYEfEEeiwO_ETU0BG9A"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6vqJkEfEEeiwO_ETU0BG9A" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/robotics/bpc/1#/"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://ROBOTICS_BPC_PROFILES/bpc.profile.uml#__9qqMJZ1Eeeq1f8hGgKVzA"/> |
| </profileApplication> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_7CwrwEfEEeiwO_ETU0BG9A"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7CxS0EfEEeiwO_ETU0BG9A" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/robotics/1#/"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://ROBOTICS_PROFILES/robotics.profile.uml#__9qqMJZ1Eeeq1f8hGgKVzA"/> |
| </profileApplication> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_7Cyg8EfEEeiwO_ETU0BG9A"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7Cyg8UfEEeiwO_ETU0BG9A" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/robotics/1#//components"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://ROBOTICS_PROFILES/robotics.profile.uml#_EZ1TgJZ2Eeeq1f8hGgKVzA"/> |
| </profileApplication> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_7Cyg8kfEEeiwO_ETU0BG9A"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7Cyg80fEEeiwO_ETU0BG9A" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/robotics/1#//commpattern"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://ROBOTICS_PROFILES/robotics.profile.uml#_8Z6x8Je6EeeiCOWsEr9OuA"/> |
| </profileApplication> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_7CzIAkfEEeiwO_ETU0BG9A"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7CzvEEfEEeiwO_ETU0BG9A" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/robotics/1#//deployment"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://ROBOTICS_PROFILES/robotics.profile.uml#_tu6OsJe9EeeiCOWsEr9OuA"/> |
| </profileApplication> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_7CzvEUfEEeiwO_ETU0BG9A"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7CzvEkfEEeiwO_ETU0BG9A" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/robotics/1#//services"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://ROBOTICS_PROFILES/robotics.profile.uml#_SlbOAJe_EeeiCOWsEr9OuA"/> |
| </profileApplication> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_7C0WIEfEEeiwO_ETU0BG9A"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7C0WIUfEEeiwO_ETU0BG9A" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/robotics/1#//commobject"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://ROBOTICS_PROFILES/robotics.profile.uml#_bz5AcPCaEeee6ab5J_C5Dg"/> |
| </profileApplication> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_7C0WIkfEEeiwO_ETU0BG9A"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7C09MEfEEeiwO_ETU0BG9A" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/robotics/1#//functions"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://ROBOTICS_PROFILES/robotics.profile.uml#_SV7GwC6LEei0V9-WLHIyvg"/> |
| </profileApplication> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_7C09MUfEEeiwO_ETU0BG9A"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7C1kQEfEEeiwO_ETU0BG9A" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/robotics/1#//parameters"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://ROBOTICS_PROFILES/robotics.profile.uml#_-pU5oDmpEei--ZsfKWaFtw"/> |
| </profileApplication> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_vBSogEfFEeiuVfmPqBuUBA"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vBVEwEfFEeiuVfmPqBuUBA" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//MARTE_Foundations/NFPs"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_U_GAoAPMEdyuUt-4qHuVvQ"/> |
| </profileApplication> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_vBXhAEfFEeiuVfmPqBuUBA"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vBXhAUfFEeiuVfmPqBuUBA" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//MARTE_Annexes/VSL/DataTypes"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_9FdqwA-MEdyLh7muGbCqMw"/> |
| </profileApplication> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_QpoCUEfMEeiuVfmPqBuUBA"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QpopYEfMEeiuVfmPqBuUBA" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#ActionLanguage"/> |
| </profileApplication> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_I4cKUEoDEeie-dKbx_4wnA"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I442QEoDEeie-dKbx_4wnA" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/robotics/1#//generics"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://ROBOTICS_PROFILES/robotics.profile.uml#_eFhjMEnvEeien6eLHpkAxA"/> |
| </profileApplication> |
| <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_eP0y4KcHEemKm7jDzAkd-g"> |
| <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eP5EUKcHEemKm7jDzAkd-g" source="http://www.eclipse.org/uml2/2.0.0/UML"> |
| <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/C_Cpp/1#/"/> |
| </eAnnotations> |
| <appliedProfile xmi:type="uml:Profile" href="pathmap://PapyrusC_Cpp_PROFILES/C_Cpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/> |
| </profileApplication> |
| </uml:Model> |
| <robotics.components:ComponentDefinition xmi:id="_-9VLMEiFEeiAtInRNnLmIQ" base_Class="_-9MoUEiFEeiAtInRNnLmIQ"/> |
| <robotics.parameters:Parameter xmi:id="_ki1XcEiHEeiAtInRNnLmIQ" base_Class="_kiyUIEiHEeiAtInRNnLmIQ"/> |
| <robotics.functions:Function xmi:id="_79pkUHXzEeirHb2XH36K_A" base_Class="_4IFoAHXzEeirHb2XH36K_A" kind="ON_ACTIVATE"/> |
| <robotics.components:Activity xmi:id="_DN4QsHX0EeirHb2XH36K_A" base_Class="_DNyKEHX0EeirHb2XH36K_A"/> |
| <robotics.components:ActivityInstance xmi:id="_DPfaQHX0EeirHb2XH36K_A" base_Property="_DPbI0HX0EeirHb2XH36K_A"/> |
| <C_Cpp:Include xmi:id="_rrFA0Hh8Eei2lO6rEWqUCQ" preBody="#include <iostream>
using namespace std;" base_class="_-9MoUEiFEeiAtInRNnLmIQ" base_Classifier="_-9MoUEiFEeiAtInRNnLmIQ"/> |
| <robotics.components:ComponentPort xmi:id="_6SoagHq1EeikT4nAmbXssQ" base_Port="_6SlXMHq1EeikT4nAmbXssQ"/> |
| <robotics.components:ActivityPort xmi:id="_Fv69MHq2EeikT4nAmbXssQ" base_Port="_Fv2rwHq2EeikT4nAmbXssQ"/> |
| <robotics.components:ComponentDefinitionModel xmi:id="_3qoH0NAQEemsvtLt7dgtCQ" authorship="ansgar.radermacher@cea.fr Ansgar" provenance="info-list@cea.fr CEA LIST" base_Package="_6nSQsEfEEeiwO_ETU0BG9A"/> |
| <robotics.components:ComponentService xmi:id="_ZYkMkPV1EemSEqXywHKEEA" base_Class="_ZYcQwPV1EemSEqXywHKEEA"/> |
| <robotics.generics:Connects xmi:id="_LCYywAbwEeq69tbfZET3mw" base_Connector="_LCWWgAbwEeq69tbfZET3mw"/> |
| </xmi:XMI> |