Bug 582229 - [Robotics, ROS2] Bad Python code generation for services, actions and parameters
- rclpy model library library:
- Add missing stereotype <<Module>> on service package
- Remove empty nested rclpy package
- Add further types for actions
- remove C++ code for parameter descriptions
- replace code generation for actions (which was a copy of C++ code generation before)
- change code C++ specific parameter type in Callbacks.xtend
- use <<External>> stereotype from common code generation profile instead of C++ one
- Apply <<External>> stereotypes for Python and C++ to ROS2 primitive types
- Use nightly in P2 category - for consistency with target platform definition
- Declare dependency to version 3.1.0 of designer profile plugins
Change-Id: I6c9d2708bb7e642722d1c689fde75fa2719d617b
Signed-off-by: aradermache <ansgar.radermacher@cea.fr>
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/META-INF/MANIFEST.MF b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/META-INF/MANIFEST.MF
index 6ef2ff3..f13289a 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/META-INF/MANIFEST.MF
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/META-INF/MANIFEST.MF
@@ -11,7 +11,8 @@
org.eclipse.papyrus.uml.tools.utils;bundle-version="[3.4.0,5.0.0)",
org.eclipse.papyrus.infra.core.log;bundle-version="[1.2.0,3.0.0)",
org.eclipse.core.resources,
- org.eclipse.papyrus.designer.languages.cpp.profile;bundle-version="0.7.0",
+ org.eclipse.papyrus.designer.languages.cpp.profile;bundle-version="3.1.0",
+ org.eclipse.papyrus.designer.languages.python.profile;bundle-version="3.1.0",
com.google.guava;bundle-version="11.0.0",
org.eclipse.xtext.xbase.lib,
org.eclipse.xtend.lib,
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/models/library/ros2.primitive.uml b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/models/library/ros2.primitive.uml
index cc0826b..28942df 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/models/library/ros2.primitive.uml
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/models/library/ros2.primitive.uml
@@ -1,5 +1,5 @@
<?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.services="http://www.eclipse.org/papyrus/robotics/services/1" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/robotics/services/1 http://www.eclipse.org/papyrus/robotics/1#//services">
+<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:python="http://www.eclipse.org/papyrus/python/1" xmlns:robotics.services="http://www.eclipse.org/papyrus/robotics/services/1" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/robotics/services/1 http://www.eclipse.org/papyrus/robotics/1#//services">
<uml:Model xmi:id="_T7frkG-0EeiX6ta975XXMg" name="primitive">
<packageImport xmi:type="uml:PackageImport" xmi:id="_UBsaMG-0EeiX6ta975XXMg">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
@@ -40,7 +40,43 @@
</eAnnotations>
<appliedProfile xmi:type="uml:Profile" href="pathmap://ROBOTICS_PROFILES/robotics.profile.uml#_SlbOAJe_EeeiCOWsEr9OuA"/>
</profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_QmPloDIREe6ae6RVUytkVg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QmQMsDIREe6ae6RVUytkVg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/python/1#/"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://PapyrusPython_PROFILES/python.profile.uml#_ZZc2IOjGEeyu5-ah8U05Lg"/>
+ </profileApplication>
</uml:Model>
<robotics.services:ServiceDefinitionModel xmi:id="_E-hF0EasEeqxaN7nQVYyaQ" base_Package="_T7frkG-0EeiX6ta975XXMg"/>
<C_Cpp:ExternLibrary xmi:id="_q7yuwMBEEeqrl8WmVAzkDg" base_package="_T7frkG-0EeiX6ta975XXMg"/>
+ <C_Cpp:External xmi:id="_pRjRsC-0Ee6QuotnqBtdWA" name="bool" base_Classifier="_Mb0lYK4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_LUAP8DIREe6ae6RVUytkVg" name="int16_t" base_Classifier="_OvHdsK4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="_SMmfcDIREe6ae6RVUytkVg" name="numpy.int16" base_Classifier="_OvHdsK4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_tVweEDIREe6ae6RVUytkVg" name="int64_t" base_Classifier="_OvJ58a4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="_faGbgDIREe6ae6RVUytkVg" name="numpy.int64" base_Classifier="_OvJ58a4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_scC6YDQrEe6ae6RVUytkVg" name="int8_t" base_Classifier="_Mb3BoK4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_5SfBUDQrEe6ae6RVUytkVg" name="int8_t" base_Classifier="_Mb4PwK4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="_sW4IoDT-Ee6ae6RVUytkVg" base_Classifier="_Mb3BoK4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="_yTMWEDT-Ee6ae6RVUytkVg" name="numpy.int8" base_Classifier="_Mb4PwK4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_ImVA8DT_Ee6ae6RVUytkVg" name="double" base_Classifier="_Mb1zga4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="_ZBOGEDT_Ee6ae6RVUytkVg" name="numpy.float32" base_Classifier="_Mb1zga4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_cbOHwDT_Ee6ae6RVUytkVg" name="long double" base_Classifier="_Mb1zgq4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="_eHmKADT_Ee6ae6RVUytkVg" name="numpy.float64" base_Classifier="_Mb1zgq4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_7zOFYDT_Ee6ae6RVUytkVg" name="byte" base_Classifier="_Mb1McK4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="__Q8wgDT_Ee6ae6RVUytkVg" name="numpy.byte" base_Classifier="_Mb1McK4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="_AwepkDUAEe6ae6RVUytkVg" name="bool" base_Classifier="_Mb0lYK4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_FTT7kDUAEe6ae6RVUytkVg" base_Classifier="_Mb1zgK4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="_Gx1vEDUAEe6ae6RVUytkVg" name="numpy.byte" base_Classifier="_Mb1zgK4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_nTFMsDUAEe6ae6RVUytkVg" name="unit16_t" base_Classifier="_OvIr0K4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="_oPkDEDUAEe6ae6RVUytkVg" base_Classifier="_OvIr0K4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_uqTR4DUAEe6ae6RVUytkVg" name="int32_t" base_Classifier="_OvJS4K4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="_uqRcsDUAEe6ae6RVUytkVg" name="numpy.int32" base_Classifier="_OvJS4K4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_zrc3kDUAEe6ae6RVUytkVg" name="uint32_t" base_Classifier="_OvJ58K4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="_0qHfQDUAEe6ae6RVUytkVg" name="numpy.uint32" base_Classifier="_OvJ58K4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_-uAmEDUAEe6ae6RVUytkVg" name="uint64_t" base_Classifier="_OvKhAK4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="__11JwDUAEe6ae6RVUytkVg" name="numpy.uint64" base_Classifier="_OvKhAK4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_FUM28DUBEe6ae6RVUytkVg" name="string" base_Classifier="_96bjEK4QEemKGaIZu1xPYw"/>
+ <python:External xmi:id="_Pl2s8DUBEe6ae6RVUytkVg" name="str" base_Classifier="_96bjEK4QEemKGaIZu1xPYw"/>
+ <C_Cpp:External xmi:id="_p55BcDUBEe6ae6RVUytkVg" name="wstring" base_Classifier="_vwQisFoPEeq26shXDzFyiA"/>
+ <python:External xmi:id="_ruHYIDUBEe6ae6RVUytkVg" name="str" base_Classifier="_vwQisFoPEeq26shXDzFyiA"/>
</xmi:XMI>
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/src/org/eclipse/papyrus/robotics/ros2/codegen/common/utils/RosHelpers.java b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/src/org/eclipse/papyrus/robotics/ros2/codegen/common/utils/RosHelpers.java
index 6283c1a..3733c71 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/src/org/eclipse/papyrus/robotics/ros2/codegen/common/utils/RosHelpers.java
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.common/src/org/eclipse/papyrus/robotics/ros2/codegen/common/utils/RosHelpers.java
@@ -16,7 +16,7 @@
import org.eclipse.emf.common.util.URI;
import org.eclipse.papyrus.designer.infra.base.StringConstants;
-import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.External;
+import org.eclipse.papyrus.designer.languages.common.profile.Codegen.External;
import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Ptr;
import org.eclipse.papyrus.robotics.codegen.common.utils.Helpers;
import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.cpp/src/org/eclipse/papyrus/robotics/ros2/codegen/cpp/component/Constructor.xtend b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.cpp/src/org/eclipse/papyrus/robotics/ros2/codegen/cpp/component/Constructor.xtend
index 6a50ff0..c3573a6 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.cpp/src/org/eclipse/papyrus/robotics/ros2/codegen/cpp/component/Constructor.xtend
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.cpp/src/org/eclipse/papyrus/robotics/ros2/codegen/cpp/component/Constructor.xtend
@@ -242,5 +242,5 @@
else {
return defaultQoS
}
- }
+ }
}
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.notation b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.notation
index ac35126..a550122 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.notation
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.notation
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
<notation:Diagram xmi:id="_4wGCEO4aEey3buyMmxEJ_w" type="PapyrusUMLClassDiagram" name="node_module" measurementUnit="Pixel">
<children xmi:type="notation:Shape" xmi:id="_hq5Loe4bEey3buyMmxEJ_w" type="Package_Shape">
<children xmi:type="notation:DecorationNode" xmi:id="_hq5Lo-4bEey3buyMmxEJ_w" type="Package_NameLabel"/>
@@ -28,37 +28,38 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_eEr6BO4bEey3buyMmxEJ_w"/>
</children>
<element xmi:type="uml:Class" href="rclpy.uml#_eEr58O4bEey3buyMmxEJ_w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eEr58u4bEey3buyMmxEJ_w" x="34" y="23"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eEr58u4bEey3buyMmxEJ_w" x="34" y="23" width="141" height="74"/>
</children>
<styles xmi:type="notation:TitleStyle" xmi:id="_hq5Lpe4bEey3buyMmxEJ_w"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_hq5Lpu4bEey3buyMmxEJ_w"/>
</children>
<element xmi:type="uml:Package" href="rclpy.uml#_hq5LoO4bEey3buyMmxEJ_w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hq5Lou4bEey3buyMmxEJ_w" x="220" y="220" width="181" height="221"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hq5Lou4bEey3buyMmxEJ_w" x="100" y="60" width="281" height="221"/>
</children>
- <children xmi:type="notation:Shape" xmi:id="_yQNPQLlGEe27HeoHLJk0Yw" type="StereotypeComment">
- <styles xmi:type="notation:TitleStyle" xmi:id="_yQNPQblGEe27HeoHLJk0Yw"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_yQNPQ7lGEe27HeoHLJk0Yw" name="BASE_ELEMENT">
+ <children xmi:type="notation:Shape" xmi:id="__VHicCrFEe6lW41OK3U93g" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__VHicSrFEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="__VHicyrFEe6lW41OK3U93g" name="BASE_ELEMENT">
<eObjectValue xmi:type="uml:Package" href="rclpy.uml#_hq5LoO4bEey3buyMmxEJ_w"/>
</styles>
<element xsi:nil="true"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yQNPQrlGEe27HeoHLJk0Yw" x="420" y="220"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__VHicirFEe6lW41OK3U93g" x="420" y="220"/>
</children>
<styles xmi:type="notation:StringValueStyle" xmi:id="_4wGCEe4aEey3buyMmxEJ_w" name="diagram_compatibility_version" stringValue="1.4.0"/>
<styles xmi:type="notation:DiagramStyle" xmi:id="_4wGCEu4aEey3buyMmxEJ_w"/>
<styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_4wGCE-4aEey3buyMmxEJ_w" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
<owner xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
</styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_sTDxUCrGEe6lW41OK3U93g" name="css_stylesheets" eObjectListValue="_TRysQCrGEe6lW41OK3U93g"/>
<element xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
- <edges xmi:type="notation:Connector" xmi:id="_yQNPRLlGEe27HeoHLJk0Yw" type="StereotypeCommentLink" source="_hq5Loe4bEey3buyMmxEJ_w" target="_yQNPQLlGEe27HeoHLJk0Yw">
- <styles xmi:type="notation:FontStyle" xmi:id="_yQNPRblGEe27HeoHLJk0Yw"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_yQNPSblGEe27HeoHLJk0Yw" name="BASE_ELEMENT">
+ <edges xmi:type="notation:Connector" xmi:id="__VHidCrFEe6lW41OK3U93g" type="StereotypeCommentLink" source="_hq5Loe4bEey3buyMmxEJ_w" target="__VHicCrFEe6lW41OK3U93g">
+ <styles xmi:type="notation:FontStyle" xmi:id="__VHidSrFEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="__VHieSrFEe6lW41OK3U93g" name="BASE_ELEMENT">
<eObjectValue xmi:type="uml:Package" href="rclpy.uml#_hq5LoO4bEey3buyMmxEJ_w"/>
</styles>
<element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yQNPRrlGEe27HeoHLJk0Yw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yQNPR7lGEe27HeoHLJk0Yw"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yQNPSLlGEe27HeoHLJk0Yw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__VHidirFEe6lW41OK3U93g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__VHidyrFEe6lW41OK3U93g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__VHieCrFEe6lW41OK3U93g"/>
</edges>
</notation:Diagram>
<notation:Diagram xmi:id="_8NhyQO4aEey3buyMmxEJ_w" type="PapyrusUMLClassDiagram" name="lifecycle_module" measurementUnit="Pixel">
@@ -488,7 +489,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Axv5hO4dEey3buyMmxEJ_w"/>
</children>
<element xmi:type="uml:Class" href="rclpy.uml#_Axv5cO4dEey3buyMmxEJ_w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Axv5cu4dEey3buyMmxEJ_w" x="14" y="23"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Axv5cu4dEey3buyMmxEJ_w" x="14" y="36" height="81"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_FZ5wUO4dEey3buyMmxEJ_w" type="Class_Shape_CN">
<children xmi:type="notation:DecorationNode" xmi:id="_FZ5wUu4dEey3buyMmxEJ_w" type="Class_NameLabel_CN"/>
@@ -514,37 +515,90 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_FZ5wY-4dEey3buyMmxEJ_w"/>
</children>
<element xmi:type="uml:Class" href="rclpy.uml#_FZwmYO4dEey3buyMmxEJ_w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FZ5wUe4dEey3buyMmxEJ_w" x="194" y="23"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FZ5wUe4dEey3buyMmxEJ_w" x="174" y="36" width="121" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Gokh8CrGEe6lW41OK3U93g" type="Class_Shape_CN">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GolJACrGEe6lW41OK3U93g" type="Class_NameLabel_CN"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GolJASrGEe6lW41OK3U93g" type="Class_FloatingNameLabel_CN">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GolJAirGEe6lW41OK3U93g" y="15"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GolJAyrGEe6lW41OK3U93g" type="Class_AttributeCompartment_CN">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GolJBCrGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GolJBSrGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GolJBirGEe6lW41OK3U93g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GolJByrGEe6lW41OK3U93g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GolJCCrGEe6lW41OK3U93g" type="Class_OperationCompartment_CN">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GolJCSrGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GolJCirGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GolJCyrGEe6lW41OK3U93g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GolJDCrGEe6lW41OK3U93g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GolJDSrGEe6lW41OK3U93g" type="Class_NestedClassifierCompartment_CN">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GolJDirGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GolJDyrGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GolJECrGEe6lW41OK3U93g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GolJESrGEe6lW41OK3U93g"/>
+ </children>
+ <element xmi:type="uml:Class" href="rclpy.uml#_GoYUsCrGEe6lW41OK3U93g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gokh8SrGEe6lW41OK3U93g" x="334" y="16" width="161" height="81"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_H3-7YCrGEe6lW41OK3U93g" type="Class_Shape_CN">
+ <children xmi:type="notation:DecorationNode" xmi:id="_H3_icCrGEe6lW41OK3U93g" type="Class_NameLabel_CN"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_H3_icSrGEe6lW41OK3U93g" type="Class_FloatingNameLabel_CN">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_H3_icirGEe6lW41OK3U93g" y="15"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_H3_icyrGEe6lW41OK3U93g" type="Class_AttributeCompartment_CN">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_H3_idCrGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_H3_idSrGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_H3_idirGEe6lW41OK3U93g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H3_idyrGEe6lW41OK3U93g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_H3_ieCrGEe6lW41OK3U93g" type="Class_OperationCompartment_CN">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_H3_ieSrGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_H3_ieirGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_H3_ieyrGEe6lW41OK3U93g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H3_ifCrGEe6lW41OK3U93g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_H3_ifSrGEe6lW41OK3U93g" type="Class_NestedClassifierCompartment_CN">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_H3_ifirGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_H3_ifyrGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_H3_igCrGEe6lW41OK3U93g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H3_igSrGEe6lW41OK3U93g"/>
+ </children>
+ <element xmi:type="uml:Class" href="rclpy.uml#_H34NsCrGEe6lW41OK3U93g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H3-7YSrGEe6lW41OK3U93g" x="334" y="116" width="161" height="81"/>
</children>
<styles xmi:type="notation:TitleStyle" xmi:id="_8JMZ9e4cEey3buyMmxEJ_w"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_8JMZ9u4cEey3buyMmxEJ_w"/>
</children>
<element xmi:type="uml:Package" href="rclpy.uml#_8JMZ8O4cEey3buyMmxEJ_w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8JMZ8u4cEey3buyMmxEJ_w" x="120" y="140" width="381" height="221"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8JMZ8u4cEey3buyMmxEJ_w" x="60" y="80" width="541" height="261"/>
</children>
- <children xmi:type="notation:Shape" xmi:id="_-RBsUAj7Ee2-xOjQ3SYv9w" type="StereotypeComment">
- <styles xmi:type="notation:TitleStyle" xmi:id="_-RBsUQj7Ee2-xOjQ3SYv9w"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-RBsUwj7Ee2-xOjQ3SYv9w" name="BASE_ELEMENT">
+ <children xmi:type="notation:Shape" xmi:id="_Ah3pcCrGEe6lW41OK3U93g" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ah3pcSrGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Ah3pcyrGEe6lW41OK3U93g" name="BASE_ELEMENT">
<eObjectValue xmi:type="uml:Package" href="rclpy.uml#_8JMZ8O4cEey3buyMmxEJ_w"/>
</styles>
<element xsi:nil="true"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-RBsUgj7Ee2-xOjQ3SYv9w" x="320" y="140"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ah3pcirGEe6lW41OK3U93g" x="320" y="140"/>
</children>
<styles xmi:type="notation:StringValueStyle" xmi:id="_WqW2Ye4bEey3buyMmxEJ_w" name="diagram_compatibility_version" stringValue="1.4.0"/>
<styles xmi:type="notation:DiagramStyle" xmi:id="_WqW2Yu4bEey3buyMmxEJ_w"/>
<styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_WqW2Y-4bEey3buyMmxEJ_w" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
<owner xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
</styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_TRyFMCrGEe6lW41OK3U93g" name="css_stylesheets" eObjectListValue="_TRysQCrGEe6lW41OK3U93g"/>
<element xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
- <edges xmi:type="notation:Connector" xmi:id="_-RCTYAj7Ee2-xOjQ3SYv9w" type="StereotypeCommentLink" source="_8JMZ8e4cEey3buyMmxEJ_w" target="_-RBsUAj7Ee2-xOjQ3SYv9w">
- <styles xmi:type="notation:FontStyle" xmi:id="_-RCTYQj7Ee2-xOjQ3SYv9w"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-RCTZQj7Ee2-xOjQ3SYv9w" name="BASE_ELEMENT">
+ <edges xmi:type="notation:Connector" xmi:id="_Ah3pdCrGEe6lW41OK3U93g" type="StereotypeCommentLink" source="_8JMZ8e4cEey3buyMmxEJ_w" target="_Ah3pcCrGEe6lW41OK3U93g">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Ah3pdSrGEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Ah3peSrGEe6lW41OK3U93g" name="BASE_ELEMENT">
<eObjectValue xmi:type="uml:Package" href="rclpy.uml#_8JMZ8O4cEey3buyMmxEJ_w"/>
</styles>
<element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-RCTYgj7Ee2-xOjQ3SYv9w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-RCTYwj7Ee2-xOjQ3SYv9w"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-RCTZAj7Ee2-xOjQ3SYv9w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Ah3pdirGEe6lW41OK3U93g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ah3pdyrGEe6lW41OK3U93g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ah3peCrGEe6lW41OK3U93g"/>
</edges>
</notation:Diagram>
<notation:Diagram xmi:id="_YzA6EO4dEey3buyMmxEJ_w" type="PapyrusUMLClassDiagram" name="qos_module" measurementUnit="Pixel">
@@ -556,19 +610,19 @@
<children xmi:type="notation:DecorationNode" xmi:id="_kwfYs-4dEey3buyMmxEJ_w" type="Class_FloatingNameLabel_CN">
<layoutConstraint xmi:type="notation:Location" xmi:id="_kwfYtO4dEey3buyMmxEJ_w" y="15"/>
</children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_kwfYte4dEey3buyMmxEJ_w" visible="false" type="Class_AttributeCompartment_CN">
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kwfYte4dEey3buyMmxEJ_w" type="Class_AttributeCompartment_CN">
<styles xmi:type="notation:TitleStyle" xmi:id="_kwfYtu4dEey3buyMmxEJ_w"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_kwfYt-4dEey3buyMmxEJ_w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_kwfYuO4dEey3buyMmxEJ_w"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_kwfYue4dEey3buyMmxEJ_w"/>
</children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_kwfYuu4dEey3buyMmxEJ_w" visible="false" type="Class_OperationCompartment_CN">
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kwfYuu4dEey3buyMmxEJ_w" type="Class_OperationCompartment_CN">
<styles xmi:type="notation:TitleStyle" xmi:id="_kwfYu-4dEey3buyMmxEJ_w"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_kwfYvO4dEey3buyMmxEJ_w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_kwfYve4dEey3buyMmxEJ_w"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_kwfYvu4dEey3buyMmxEJ_w"/>
</children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_kwfYv-4dEey3buyMmxEJ_w" visible="false" type="Class_NestedClassifierCompartment_CN">
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kwfYv-4dEey3buyMmxEJ_w" type="Class_NestedClassifierCompartment_CN">
<styles xmi:type="notation:TitleStyle" xmi:id="_kwfYwO4dEey3buyMmxEJ_w"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_kwfYwe4dEey3buyMmxEJ_w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_kwfYwu4dEey3buyMmxEJ_w"/>
@@ -582,19 +636,19 @@
<children xmi:type="notation:DecorationNode" xmi:id="_uiIR4O4dEey3buyMmxEJ_w" type="Class_FloatingNameLabel">
<layoutConstraint xmi:type="notation:Location" xmi:id="_uiIR4e4dEey3buyMmxEJ_w" y="15"/>
</children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_uiIR4u4dEey3buyMmxEJ_w" visible="false" type="Class_AttributeCompartment">
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uiIR4u4dEey3buyMmxEJ_w" type="Class_AttributeCompartment">
<styles xmi:type="notation:TitleStyle" xmi:id="_uiIR4-4dEey3buyMmxEJ_w"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_uiIR5O4dEey3buyMmxEJ_w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_uiIR5e4dEey3buyMmxEJ_w"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_uiIR5u4dEey3buyMmxEJ_w"/>
</children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_uiIR5-4dEey3buyMmxEJ_w" visible="false" type="Class_OperationCompartment">
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uiIR5-4dEey3buyMmxEJ_w" type="Class_OperationCompartment">
<styles xmi:type="notation:TitleStyle" xmi:id="_uiIR6O4dEey3buyMmxEJ_w"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_uiIR6e4dEey3buyMmxEJ_w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_uiIR6u4dEey3buyMmxEJ_w"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_uiIR6-4dEey3buyMmxEJ_w"/>
</children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_uiIR7O4dEey3buyMmxEJ_w" visible="false" type="Class_NestedClassifierCompartment">
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uiIR7O4dEey3buyMmxEJ_w" type="Class_NestedClassifierCompartment">
<styles xmi:type="notation:TitleStyle" xmi:id="_uiIR7e4dEey3buyMmxEJ_w"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_uiIR7u4dEey3buyMmxEJ_w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_uiIR7-4dEey3buyMmxEJ_w"/>
@@ -707,29 +761,30 @@
<element xmi:type="uml:Package" href="rclpy.uml#_jLnsoO4dEey3buyMmxEJ_w"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_jLw2ke4dEey3buyMmxEJ_w" x="60" y="40" width="501" height="321"/>
</children>
- <children xmi:type="notation:Shape" xmi:id="_9ws_0KlUEe2LQoLntInr8Q" type="StereotypeComment">
- <styles xmi:type="notation:TitleStyle" xmi:id="_9ws_0alUEe2LQoLntInr8Q"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9ws_06lUEe2LQoLntInr8Q" name="BASE_ELEMENT">
+ <children xmi:type="notation:Shape" xmi:id="__UPYsCrFEe6lW41OK3U93g" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__UPYsSrFEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="__UPYsyrFEe6lW41OK3U93g" name="BASE_ELEMENT">
<eObjectValue xmi:type="uml:Package" href="rclpy.uml#_jLnsoO4dEey3buyMmxEJ_w"/>
</styles>
<element xsi:nil="true"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9ws_0qlUEe2LQoLntInr8Q" x="440" y="280"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__UPYsirFEe6lW41OK3U93g" x="260" y="40"/>
</children>
<styles xmi:type="notation:StringValueStyle" xmi:id="_YzA6Ee4dEey3buyMmxEJ_w" name="diagram_compatibility_version" stringValue="1.4.0"/>
<styles xmi:type="notation:DiagramStyle" xmi:id="_YzA6Eu4dEey3buyMmxEJ_w"/>
<styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_YzA6E-4dEey3buyMmxEJ_w" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
<owner xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
</styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_rOMbACrGEe6lW41OK3U93g" name="css_stylesheets" eObjectListValue="_TRysQCrGEe6lW41OK3U93g"/>
<element xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
- <edges xmi:type="notation:Connector" xmi:id="_9ws_1KlUEe2LQoLntInr8Q" type="StereotypeCommentLink" source="_jLw2kO4dEey3buyMmxEJ_w" target="_9ws_0KlUEe2LQoLntInr8Q">
- <styles xmi:type="notation:FontStyle" xmi:id="_9ws_1alUEe2LQoLntInr8Q"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9wtm4qlUEe2LQoLntInr8Q" name="BASE_ELEMENT">
+ <edges xmi:type="notation:Connector" xmi:id="__UPYtCrFEe6lW41OK3U93g" type="StereotypeCommentLink" source="_jLw2kO4dEey3buyMmxEJ_w" target="__UPYsCrFEe6lW41OK3U93g">
+ <styles xmi:type="notation:FontStyle" xmi:id="__UPYtSrFEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="__UPYuSrFEe6lW41OK3U93g" name="BASE_ELEMENT">
<eObjectValue xmi:type="uml:Package" href="rclpy.uml#_jLnsoO4dEey3buyMmxEJ_w"/>
</styles>
<element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9ws_1qlUEe2LQoLntInr8Q" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9wtm4KlUEe2LQoLntInr8Q"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9wtm4alUEe2LQoLntInr8Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__UPYtirFEe6lW41OK3U93g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__UPYtyrFEe6lW41OK3U93g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__UPYuCrFEe6lW41OK3U93g"/>
</edges>
</notation:Diagram>
<notation:Diagram xmi:id="_mrsrsO4eEey3buyMmxEJ_w" type="PapyrusUMLClassDiagram" name="time_module" measurementUnit="Pixel">
@@ -802,19 +857,19 @@
<children xmi:type="notation:DecorationNode" xmi:id="_NRiwFO4fEey3buyMmxEJ_w" type="Class_FloatingNameLabel_CN">
<layoutConstraint xmi:type="notation:Location" xmi:id="_NRiwFe4fEey3buyMmxEJ_w" y="15"/>
</children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_NRiwFu4fEey3buyMmxEJ_w" visible="false" type="Class_AttributeCompartment_CN">
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NRiwFu4fEey3buyMmxEJ_w" type="Class_AttributeCompartment_CN">
<styles xmi:type="notation:TitleStyle" xmi:id="_NRiwF-4fEey3buyMmxEJ_w"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_NRiwGO4fEey3buyMmxEJ_w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_NRiwGe4fEey3buyMmxEJ_w"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NRiwGu4fEey3buyMmxEJ_w"/>
</children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_NRiwG-4fEey3buyMmxEJ_w" visible="false" type="Class_OperationCompartment_CN">
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NRiwG-4fEey3buyMmxEJ_w" type="Class_OperationCompartment_CN">
<styles xmi:type="notation:TitleStyle" xmi:id="_NRiwHO4fEey3buyMmxEJ_w"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_NRiwHe4fEey3buyMmxEJ_w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_NRiwHu4fEey3buyMmxEJ_w"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NRiwH-4fEey3buyMmxEJ_w"/>
</children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_NRiwIO4fEey3buyMmxEJ_w" visible="false" type="Class_NestedClassifierCompartment_CN">
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NRiwIO4fEey3buyMmxEJ_w" type="Class_NestedClassifierCompartment_CN">
<styles xmi:type="notation:TitleStyle" xmi:id="_NRiwIe4fEey3buyMmxEJ_w"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_NRiwIu4fEey3buyMmxEJ_w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_NRiwI-4fEey3buyMmxEJ_w"/>
@@ -828,19 +883,19 @@
<children xmi:type="notation:DecorationNode" xmi:id="_N42ApO4fEey3buyMmxEJ_w" type="Class_FloatingNameLabel_CN">
<layoutConstraint xmi:type="notation:Location" xmi:id="_N42Ape4fEey3buyMmxEJ_w" y="15"/>
</children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_N42Apu4fEey3buyMmxEJ_w" visible="false" type="Class_AttributeCompartment_CN">
+ <children xmi:type="notation:BasicCompartment" xmi:id="_N42Apu4fEey3buyMmxEJ_w" type="Class_AttributeCompartment_CN">
<styles xmi:type="notation:TitleStyle" xmi:id="_N42Ap-4fEey3buyMmxEJ_w"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_N42AqO4fEey3buyMmxEJ_w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_N42Aqe4fEey3buyMmxEJ_w"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_N42Aqu4fEey3buyMmxEJ_w"/>
</children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_N42Aq-4fEey3buyMmxEJ_w" visible="false" type="Class_OperationCompartment_CN">
+ <children xmi:type="notation:BasicCompartment" xmi:id="_N42Aq-4fEey3buyMmxEJ_w" type="Class_OperationCompartment_CN">
<styles xmi:type="notation:TitleStyle" xmi:id="_N42ArO4fEey3buyMmxEJ_w"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_N42Are4fEey3buyMmxEJ_w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_N42Aru4fEey3buyMmxEJ_w"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_N42Ar-4fEey3buyMmxEJ_w"/>
</children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_N42AsO4fEey3buyMmxEJ_w" visible="false" type="Class_NestedClassifierCompartment_CN">
+ <children xmi:type="notation:BasicCompartment" xmi:id="_N42AsO4fEey3buyMmxEJ_w" type="Class_NestedClassifierCompartment_CN">
<styles xmi:type="notation:TitleStyle" xmi:id="_N42Ase4fEey3buyMmxEJ_w"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_N42Asu4fEey3buyMmxEJ_w"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_N42As-4fEey3buyMmxEJ_w"/>
@@ -853,31 +908,32 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_LDGilu4fEey3buyMmxEJ_w"/>
</children>
<element xmi:type="uml:Package" href="rclpy.uml#_LDGikO4fEey3buyMmxEJ_w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LDGiku4fEey3buyMmxEJ_w" x="80" y="80" width="321" height="161"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LDGiku4fEey3buyMmxEJ_w" x="80" y="60" width="321" height="161"/>
</children>
- <children xmi:type="notation:Shape" xmi:id="_wVX6QLlGEe27HeoHLJk0Yw" type="StereotypeComment">
- <styles xmi:type="notation:TitleStyle" xmi:id="_wVX6QblGEe27HeoHLJk0Yw"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_wVX6Q7lGEe27HeoHLJk0Yw" name="BASE_ELEMENT">
+ <children xmi:type="notation:Shape" xmi:id="__UzZYCrFEe6lW41OK3U93g" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__UzZYSrFEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="__UzZYyrFEe6lW41OK3U93g" name="BASE_ELEMENT">
<eObjectValue xmi:type="uml:Package" href="rclpy.uml#_LDGikO4fEey3buyMmxEJ_w"/>
</styles>
<element xsi:nil="true"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wVX6QrlGEe27HeoHLJk0Yw" x="280" y="80"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__UzZYirFEe6lW41OK3U93g" x="280" y="80"/>
</children>
<styles xmi:type="notation:StringValueStyle" xmi:id="_HbgJwe4fEey3buyMmxEJ_w" name="diagram_compatibility_version" stringValue="1.4.0"/>
<styles xmi:type="notation:DiagramStyle" xmi:id="_HbgJwu4fEey3buyMmxEJ_w"/>
<styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_HbgJw-4fEey3buyMmxEJ_w" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
<owner xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
</styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_p2oLICrGEe6lW41OK3U93g" name="css_stylesheets" eObjectListValue="_TRysQCrGEe6lW41OK3U93g"/>
<element xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
- <edges xmi:type="notation:Connector" xmi:id="_wVX6RLlGEe27HeoHLJk0Yw" type="StereotypeCommentLink" source="_LDGike4fEey3buyMmxEJ_w" target="_wVX6QLlGEe27HeoHLJk0Yw">
- <styles xmi:type="notation:FontStyle" xmi:id="_wVX6RblGEe27HeoHLJk0Yw"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_wVYhUrlGEe27HeoHLJk0Yw" name="BASE_ELEMENT">
+ <edges xmi:type="notation:Connector" xmi:id="__UzZZCrFEe6lW41OK3U93g" type="StereotypeCommentLink" source="_LDGike4fEey3buyMmxEJ_w" target="__UzZYCrFEe6lW41OK3U93g">
+ <styles xmi:type="notation:FontStyle" xmi:id="__UzZZSrFEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="__UzZaSrFEe6lW41OK3U93g" name="BASE_ELEMENT">
<eObjectValue xmi:type="uml:Package" href="rclpy.uml#_LDGikO4fEey3buyMmxEJ_w"/>
</styles>
<element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wVX6RrlGEe27HeoHLJk0Yw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wVYhULlGEe27HeoHLJk0Yw"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wVYhUblGEe27HeoHLJk0Yw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__UzZZirFEe6lW41OK3U93g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__UzZZyrFEe6lW41OK3U93g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__UzZaCrFEe6lW41OK3U93g"/>
</edges>
</notation:Diagram>
<notation:Diagram xmi:id="_iy4woO4qEeyyq6rTvdmD_g" type="PapyrusUMLClassDiagram" name="subscription_module" measurementUnit="Pixel">
@@ -908,37 +964,38 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_mSqDM-4qEeyyq6rTvdmD_g"/>
</children>
<element xmi:type="uml:Class" href="rclpy.uml#_mSgSIO4qEeyyq6rTvdmD_g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mSqDIe4qEeyyq6rTvdmD_g" x="14" y="3"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mSqDIe4qEeyyq6rTvdmD_g" x="14" y="16" height="81"/>
</children>
<styles xmi:type="notation:TitleStyle" xmi:id="_jzhHNO4qEeyyq6rTvdmD_g"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_jzhHNe4qEeyyq6rTvdmD_g"/>
</children>
<element xmi:type="uml:Package" href="rclpy.uml#_jzOMQO4qEeyyq6rTvdmD_g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jzhHMe4qEeyyq6rTvdmD_g" x="120" y="100" width="181" height="161"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jzhHMe4qEeyyq6rTvdmD_g" x="100" y="80" width="181" height="161"/>
</children>
- <children xmi:type="notation:Shape" xmi:id="_zLnHl7lGEe27HeoHLJk0Yw" type="StereotypeComment">
- <styles xmi:type="notation:TitleStyle" xmi:id="_zLnHmLlGEe27HeoHLJk0Yw"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_zLnHmrlGEe27HeoHLJk0Yw" name="BASE_ELEMENT">
+ <children xmi:type="notation:Shape" xmi:id="__VcSkyrFEe6lW41OK3U93g" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__VcSlCrFEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="__VcSlirFEe6lW41OK3U93g" name="BASE_ELEMENT">
<eObjectValue xmi:type="uml:Package" href="rclpy.uml#_jzOMQO4qEeyyq6rTvdmD_g"/>
</styles>
<element xsi:nil="true"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zLnHmblGEe27HeoHLJk0Yw" x="320" y="100"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__VcSlSrFEe6lW41OK3U93g" x="320" y="100"/>
</children>
<styles xmi:type="notation:StringValueStyle" xmi:id="_iy4woe4qEeyyq6rTvdmD_g" name="diagram_compatibility_version" stringValue="1.4.0"/>
<styles xmi:type="notation:DiagramStyle" xmi:id="_iy4wou4qEeyyq6rTvdmD_g"/>
<styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_iy4wo-4qEeyyq6rTvdmD_g" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
<owner xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
</styles>
+ <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_l1vIkCrGEe6lW41OK3U93g" name="css_stylesheets" eObjectListValue="_TRysQCrGEe6lW41OK3U93g"/>
<element xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
- <edges xmi:type="notation:Connector" xmi:id="_zLnHm7lGEe27HeoHLJk0Yw" type="StereotypeCommentLink" source="_jzhHMO4qEeyyq6rTvdmD_g" target="_zLnHl7lGEe27HeoHLJk0Yw">
- <styles xmi:type="notation:FontStyle" xmi:id="_zLnHnLlGEe27HeoHLJk0Yw"/>
- <styles xmi:type="notation:EObjectValueStyle" xmi:id="_zLnuorlGEe27HeoHLJk0Yw" name="BASE_ELEMENT">
+ <edges xmi:type="notation:Connector" xmi:id="__VcSlyrFEe6lW41OK3U93g" type="StereotypeCommentLink" source="_jzhHMO4qEeyyq6rTvdmD_g" target="__VcSkyrFEe6lW41OK3U93g">
+ <styles xmi:type="notation:FontStyle" xmi:id="__VcSmCrFEe6lW41OK3U93g"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="__VcSnCrFEe6lW41OK3U93g" name="BASE_ELEMENT">
<eObjectValue xmi:type="uml:Package" href="rclpy.uml#_jzOMQO4qEeyyq6rTvdmD_g"/>
</styles>
<element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zLnHnblGEe27HeoHLJk0Yw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zLnuoLlGEe27HeoHLJk0Yw"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zLnuoblGEe27HeoHLJk0Yw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__VcSmSrFEe6lW41OK3U93g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__VcSmirFEe6lW41OK3U93g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__VcSmyrFEe6lW41OK3U93g"/>
</edges>
</notation:Diagram>
<notation:Diagram xmi:id="_Lc-ksO4rEeyyq6rTvdmD_g" type="PapyrusUMLClassDiagram" name="client_module" measurementUnit="Pixel">
@@ -1046,15 +1103,6 @@
<element xmi:type="uml:Model" href="rclpy.uml#_21YB0O4aEey3buyMmxEJ_w"/>
</notation:Diagram>
<notation:Diagram xmi:id="_JcGBIAj9Ee2-xOjQ3SYv9w" type="PapyrusUMLClassDiagram" name="rclpy_pkg" measurementUnit="Pixel">
- <children xmi:type="notation:Shape" xmi:id="_Lf_ykAj9Ee2-xOjQ3SYv9w" type="Package_Shape">
- <children xmi:type="notation:DecorationNode" xmi:id="_LgCO0Aj9Ee2-xOjQ3SYv9w" type="Package_NameLabel"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_LgCO0Qj9Ee2-xOjQ3SYv9w" type="Package_PackagedElementCompartment">
- <styles xmi:type="notation:TitleStyle" xmi:id="_LgCO0gj9Ee2-xOjQ3SYv9w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LgCO0wj9Ee2-xOjQ3SYv9w"/>
- </children>
- <element xmi:type="uml:Package" href="rclpy.uml#_LfjtsAj9Ee2-xOjQ3SYv9w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lf_ykQj9Ee2-xOjQ3SYv9w" x="300" y="120"/>
- </children>
<styles xmi:type="notation:StringValueStyle" xmi:id="_JcGBIQj9Ee2-xOjQ3SYv9w" name="diagram_compatibility_version" stringValue="1.4.0"/>
<styles xmi:type="notation:DiagramStyle" xmi:id="_JcGBIgj9Ee2-xOjQ3SYv9w"/>
<styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_JcGBIwj9Ee2-xOjQ3SYv9w" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
@@ -1852,4 +1900,5 @@
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__YT6dblHEe27HeoHLJk0Yw"/>
</edges>
</notation:Diagram>
+ <css:EmbeddedStyleSheet xmi:id="_TRysQCrGEe6lW41OK3U93g" label="NoOperations" content="Class, Enumeration {
	fillcolor : white;
}
Class > Compartment[kind="operations"] {
 visible: false;
}
Class > Compartment[kind="nestedclassifiers"] {
 visible: false;
}"/>
</xmi:XMI>
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.uml b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.uml
index ffdcb89..2a36b3d 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.uml
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/models/library/rclpy.uml
@@ -27,6 +27,8 @@
<packagedElement xmi:type="uml:Package" xmi:id="_8JMZ8O4cEey3buyMmxEJ_w" name="action">
<packagedElement xmi:type="uml:Class" xmi:id="_Axv5cO4dEey3buyMmxEJ_w" name="ActionServer"/>
<packagedElement xmi:type="uml:Class" xmi:id="_FZwmYO4dEey3buyMmxEJ_w" name="ActionClient"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_GoYUsCrGEe6lW41OK3U93g" name="CancelResponse"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_H34NsCrGEe6lW41OK3U93g" name="GoalResponse"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_jLnsoO4dEey3buyMmxEJ_w" name="qos">
<packagedElement xmi:type="uml:Class" xmi:id="_kwVnsO4dEey3buyMmxEJ_w" name="QoSProfile"/>
@@ -55,7 +57,6 @@
<packagedElement xmi:type="uml:Package" xmi:id="_f61wAO4rEeyyq6rTvdmD_g" name="service">
<packagedElement xmi:type="uml:Class" xmi:id="_ji1xcO4rEeyyq6rTvdmD_g" name="Service"/>
</packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="_LfjtsAj9Ee2-xOjQ3SYv9w" name="rclpy"/>
<packagedElement xmi:type="uml:Package" xmi:id="_iZGXMLlHEe27HeoHLJk0Yw" name="callback_groups">
<packagedElement xmi:type="uml:Class" xmi:id="_nzC3YLlHEe27HeoHLJk0Yw" name="ReentrantCallbackGroup"/>
<packagedElement xmi:type="uml:Class" xmi:id="_sgWUALlHEe27HeoHLJk0Yw" name="MutuallyExclusiveCallbackGroup"/>
@@ -78,4 +79,5 @@
<python:Module xmi:id="_Ocr3EO4rEeyyq6rTvdmD_g" base_Package="_MtPSsO4rEeyyq6rTvdmD_g"/>
<python:Module xmi:id="_WzctsO4rEeyyq6rTvdmD_g" base_Package="_jzOMQO4qEeyyq6rTvdmD_g"/>
<python:Module xmi:id="_ltGekLlHEe27HeoHLJk0Yw" base_Package="_iZGXMLlHEe27HeoHLJk0Yw"/>
+ <python:Module xmi:id="_UIGCMCoCEe6lW41OK3U93g" base_Package="_f61wAO4rEeyyq6rTvdmD_g"/>
</xmi:XMI>
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Callbacks.xtend b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Callbacks.xtend
index 1f3a070..ad96c43 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Callbacks.xtend
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Callbacks.xtend
@@ -14,29 +14,25 @@
package org.eclipse.papyrus.robotics.ros2.codegen.python.component
-import org.eclipse.papyrus.designer.languages.common.profile.Codegen.NoCodeGen
import org.eclipse.papyrus.designer.languages.common.profile.Codegen.TemplateBinding
import org.eclipse.papyrus.designer.transformation.base.utils.TransformationException
import org.eclipse.papyrus.robotics.codegen.common.utils.ApplyProfiles
import org.eclipse.papyrus.robotics.core.utils.FunctionUtils
import org.eclipse.papyrus.robotics.profile.robotics.components.ActivityPort
import org.eclipse.papyrus.robotics.profile.robotics.functions.FunctionKind
-import org.eclipse.papyrus.designer.uml.tools.utils.StereotypeUtil
import org.eclipse.uml2.uml.Behavior
import org.eclipse.uml2.uml.Class
-import org.eclipse.uml2.uml.Package
import org.eclipse.uml2.uml.ParameterDirectionKind
import org.eclipse.uml2.uml.Port
import static org.eclipse.papyrus.robotics.ros2.codegen.python.utils.RosPythonTypes.*
+import static extension org.eclipse.papyrus.designer.uml.tools.utils.StereotypeUtil.applyApp
import static extension org.eclipse.papyrus.robotics.codegen.common.utils.ActivityUtils.*
import static extension org.eclipse.papyrus.robotics.core.utils.FunctionUtils.getFunction
import static extension org.eclipse.papyrus.robotics.core.utils.InteractionUtils.*
import static extension org.eclipse.papyrus.robotics.ros2.codegen.common.utils.MessageUtils.*
import static extension org.eclipse.papyrus.robotics.ros2.codegen.common.utils.RosHelpers.*
-import static extension org.eclipse.papyrus.designer.uml.tools.utils.StereotypeUtil.apply
-import static extension org.eclipse.papyrus.designer.uml.tools.utils.StereotypeUtil.applyApp
/**
* provide the callback functions (via bind) for the various kind of ports
@@ -117,44 +113,37 @@
* - The goal callback, that gets called if a client sets a new goal.
* - The cancel callback for canceling a previous goal
* - The accept callback to accept ... (What?)
- *
+ * The code leaves many parameters untyped for simplicity
+ *
* @param component a component
* @param port a port for which to provide callbacks
*/
def static void clientCallsbacksForAction(Class component, Port port) {
val activityPort = component.getActivityForPort(port)
checkActivity(activityPort, ACTION, port)
- val handleType = getType(port, "ros2Library::rclcpp_action::ClientGoalHandle");
val feedbackFct = activityPort.getFunction(FunctionKind.HANDLER, FunctionUtils.R_FEEDBACK)
// no need to check functions, as their use is optional (developer can also
// define his own lambda's)
if (feedbackFct !== null) {
// add parameters for feedback callback: handle and feedback
val lFeedbackFct = component.getOwnedBehavior(feedbackFct.name)
- val handleParam = lFeedbackFct.specification.createOwnedParameter("handle", handleType)
- ApplyProfiles.applyCommonProfile(handleParam)
- val template = StereotypeUtil.applyApp(handleParam, TemplateBinding)
- template.actuals.add(port.serviceType)
- lFeedbackFct.specification.createOwnedParameter("feedback", port.serviceType)
+ lFeedbackFct.specification.createOwnedParameter("handle", null)
+ lFeedbackFct.specification.createOwnedParameter("feedback", null)
}
val resultFct = activityPort.getFunction(FunctionKind.HANDLER, FunctionUtils.R_RESULT)
if (resultFct !== null) {
// add parameter for result callback: result
val lResultFct = component.getOwnedBehavior(resultFct.name)
- val resultParam = lResultFct.specification.createOwnedParameter("result", handleType)
- val resultTpl = StereotypeUtil.applyApp(resultParam, TemplateBinding)
- resultTpl.actuals.add(port.serviceType)
+ lResultFct.specification.createOwnedParameter("result", null)
}
val goalFct = activityPort.getFunction(FunctionKind.HANDLER, FunctionUtils.GOAL)
if (goalFct !== null) {
// obtain function that has been copied into the node (in liftFunction)
val lGoalFct = component.getOwnedBehavior(goalFct.name)
- // add parameter for goal_response callback: future
- val futureTypeName = String.format("std::shared_future<rclcpp_action::ClientGoalHandle<%s>::SharedPtr>",
- port.serviceType.externalName)
- lGoalFct.specification.createOwnedParameter("future", component.dummyType(futureTypeName))
+ // add parameter for future
+ lGoalFct.specification.createOwnedParameter("future", null)
}
}
@@ -171,32 +160,25 @@
val lGoalFct = component.getOwnedBehavior(goalFct.name)
val lCancelFct = component.getOwnedBehavior(cancelFct.name)
val lAcceptedFct = component.getOwnedBehavior(acceptedFct.name)
- val goalUUID = getType(port, "ros2Library::rclcpp_action::GoalUUID");
// val goalHandle = getRosType(port, "ros2Library::rclcpp_action::ClientGoalHandle");
- val goalResponse = getType(port, "ros2Library::rclcpp_action::GoalResponse");
- val cancelResponse = getType(port, "ros2Library::rclcpp_action::CancelResponse");
+ val goalResponse = getType(port, "rclpy::action::GoalResponse");
+ val cancelResponse = getType(port, "rclpy::action::CancelResponse");
- // add parameters for handle_goal callback: uuid, goal and goalResponse (return value)
- lGoalFct.specification.createOwnedParameter("uuid", goalUUID)
- val goalTypeName = String.format("std::shared_ptr<const %s::Goal>", port.serviceType.externalName)
- lGoalFct.specification.createOwnedParameter("goal", component.dummyType(goalTypeName))
+ lGoalFct.specification.createOwnedParameter("goal", goalResponse)
val goalRetParam = lGoalFct.specification.createOwnedParameter("return", goalResponse)
goalRetParam.direction = ParameterDirectionKind.RETURN_LITERAL
// add parameter for cancel: goal_handle and cancelReponse (return value)
- val goalHandleTypeName = String.format("const std::shared_ptr<rclcpp_action::ServerGoalHandle<%s>>",
- port.serviceType.externalName)
- lCancelFct.specification.createOwnedParameter("goal_handle", component.dummyType(goalHandleTypeName))
+ lCancelFct.specification.createOwnedParameter("goal_handle", goalResponse)
val cancelRetParam = lCancelFct.specification.createOwnedParameter("return", cancelResponse)
cancelRetParam.direction = ParameterDirectionKind.RETURN_LITERAL
// add parameter for goal_response callback: future
- lAcceptedFct.specification.createOwnedParameter("goal_handle", component.dummyType(goalHandleTypeName))
+ lAcceptedFct.specification.createOwnedParameter("goal_handle", null)
return '''
- std::bind(&«component.qualifiedName»«component.postfix»::«goalFct.name», («component.name»«component.postfix»*) this, std::placeholders::_1, std::placeholders::_2),
- std::bind(&«component.qualifiedName»«component.postfix»::«cancelFct.name», («component.name»«component.postfix»*) this, std::placeholders::_1),
- std::bind(&«component.qualifiedName»«component.postfix»::«acceptedFct.name», («component.name»«component.postfix»*) this, std::placeholders::_1)
- '''
+ execute_callback = self.«acceptedFct.name»,
+ goal_callback = self.«goalFct.name»,
+ cancel_callback = self.«cancelFct.name»'''
}
/**
@@ -221,22 +203,4 @@
portKind, activity.base_Port.name, port.name, port.class_.name));
}
}
-
- /**
- * Create a dummy type with a certain name (since some complex parameter signatures
- * can not be expressed using standard mechanisms
- */
- def static dummyType(Class component, String name) {
- var pkg = component.nearestPackage.getPackagedElement("dummytypes") as Package
- if (pkg === null) {
- pkg = component.nearestPackage.createNestedPackage("dummytypes")
- ApplyProfiles.applyCommonProfile(pkg)
- pkg.apply(NoCodeGen)
- }
- var dummyType = pkg.getPackagedElement(name) as Class
- if (dummyType === null) {
- dummyType = pkg.createOwnedClass(name, false)
- }
- return dummyType
- }
}
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Constructor.xtend b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Constructor.xtend
index e40e068..aea5fca 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Constructor.xtend
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/Constructor.xtend
@@ -26,6 +26,7 @@
import org.eclipse.uml2.uml.UMLPackage
import org.eclipse.uml2.uml.profile.standard.Create
import org.eclipse.uml2.uml.util.UMLUtil
+import org.eclipse.papyrus.designer.languages.python.profile.python.Module
import static org.eclipse.papyrus.robotics.ros2.codegen.python.utils.RosPythonTypes.*
@@ -40,6 +41,10 @@
import static extension org.eclipse.papyrus.robotics.ros2.codegen.python.component.ComponentTransformations.getSrvName
import org.eclipse.papyrus.robotics.profile.robotics.components.Activity
import org.eclipse.uml2.uml.LiteralString
+import org.eclipse.papyrus.designer.languages.python.profile.PythonProfileResource
+import org.eclipse.papyrus.designer.transformation.base.utils.ApplyProfileUtils
+import org.eclipse.uml2.uml.Interface
+import org.eclipse.uml2.uml.Dependency
/**
* Manage constructor creation, including port
@@ -176,25 +181,20 @@
/**
* Create an action client or server
- * TODO: C++ code!
*/
def static createAction(Port port) '''
«IF port.provideds.size() > 0»
- self.«port.varName»_actsrv_ = rclcpp_action::create_server<«port.serviceType.externalName»>(
- this->get_node_base_interface(),
- this->get_node_clock_interface(),
- this->get_node_logging_interface(),
- this->get_node_waitables_interface(),
- "«port.topic»",
- «port.class_.serverCallsbacksForAction(port)»);
+ self.«port.varName»_actsrv_ = ActionServer(
+ self, «port.serviceType.externalName.getSrvName», '«port.topic»',
+ «port.class_.serverCallsbacksForAction(port)»,
+ callback_group = self.«port.callbackGroupName»)
+ «port.class_.createSvcDependency(port.serviceType)»
«ELSE»
- self.«port.varName»_actcli_ = rclcpp_action::create_client<«port.serviceType.externalName»>(
- this->get_node_base_interface(),
- this->get_node_graph_interface(),
- this->get_node_logging_interface(),
- this->get_node_waitables_interface(),
- "«port.topic»");
+ self.«port.varName»_actcli_ = ActionClient(
+ self, «port.serviceType.externalName.getSrvName», '«port.topic»',
+ callback_group = self.«port.callbackGroupName»)
«port.class_.clientCallsbacksForAction(port)»
+ «port.class_.createSvcDependency(port.serviceType)»
«ENDIF»
'''
@@ -229,6 +229,21 @@
return defaultQoS
}
}
+
+ /**
+ * Helper to create a dependency to a service interface
+ */
+ def static void createSvcDependency(Class component, Interface svcType) {
+ for (Dependency dep : component.clientDependencies) {
+ if (dep.targets.contains(svcType)) {
+ // a dependency exists already
+ return
+ }
+ }
+ component.createDependency(svcType)
+ }
+
+
}
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/ParameterTransformations.xtend b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/ParameterTransformations.xtend
index 4e6f291..831d928 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/ParameterTransformations.xtend
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.python/src/org/eclipse/papyrus/robotics/ros2/codegen/python/component/ParameterTransformations.xtend
@@ -44,8 +44,7 @@
«val description = parameter.description»
«var String descriptorVar = null»
«IF description !== null»
- auto «descriptorVar = parameter.name.varName + "_desc"» = rcl_interfaces::msg::ParameterDescriptor();
- «descriptorVar».description = «description»;
+ ««« not supported?
«ENDIF»
self.declare_parameter('«parameter.name»', «parameter.strDefaultValue(descriptorVar !== null)»)
«ENDFOR»
diff --git a/releng/org.eclipse.papyrus.robotics.p2/category.xml b/releng/org.eclipse.papyrus.robotics.p2/category.xml
index 582be29..8c6b386 100644
--- a/releng/org.eclipse.papyrus.robotics.p2/category.xml
+++ b/releng/org.eclipse.papyrus.robotics.p2/category.xml
@@ -30,6 +30,6 @@
</description>
</category-def>
<repository-reference location="https://download.eclipse.org/modeling/mdt/papyrus/components/marte/" enabled="true" />
- <repository-reference location="https://download.eclipse.org/modeling/mdt/papyrus/components/designer/2023-03" enabled="true" />
<repository-reference location="https://ci.eclipse.org/esf/job/esf-infra-nightly-build/lastSuccessfulBuild/artifact/p2/target/repository/" enabled="true" />
+ <repository-reference location="https://ci.eclipse.org/papyrus/job/papyrus-designer-2023-03/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.designer.p2/target/repository/" enabled="true" />
</site>