armodel 1.6.0__py3-none-any.whl → 1.6.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/data_models/sw_connector.py +3 -3
- armodel/models/__init__.py +4 -2
- armodel/models/ar_object.py +1 -1
- armodel/models/ar_package.py +185 -151
- armodel/models/ar_ref.py +0 -202
- armodel/models/common_structure.py +3 -71
- armodel/models/communication.py +1 -1
- armodel/models/datatype.py +5 -69
- armodel/models/end_to_end_protection.py +1 -1
- armodel/models/general_structure.py +10 -4
- armodel/models/internal_behavior.py +1 -1
- armodel/models/m2/autosar_templates/common_structure/implementation.py +21 -0
- armodel/models/m2/autosar_templates/common_structure/implementation_data_types.py +148 -0
- armodel/models/m2/autosar_templates/ecuc_description_template.py +2 -1
- armodel/models/m2/autosar_templates/generic_structure/__init__.py +0 -0
- armodel/models/m2/autosar_templates/generic_structure/abstract_structure.py +69 -0
- armodel/models/m2/autosar_templates/sw_component_template/communication.py +44 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/__init__.py +246 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/instance_refs.py +33 -1
- armodel/models/m2/autosar_templates/sw_component_template/composition/__init__.py +154 -0
- armodel/models/m2/autosar_templates/sw_component_template/composition/instance_refs.py +157 -0
- armodel/models/m2/autosar_templates/sw_component_template/data_type/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/data_type/data_prototypes.py +104 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface/__init__.py +243 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface/instance_refs.py +39 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/data_elements.py +3 -11
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/instance_refs_usage.py +169 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/mode_declaration_group.py +1 -2
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/server_call.py +5 -4
- armodel/models/m2/autosar_templates/system_template/instance_refs.py +48 -0
- armodel/models/m2_msr.py +1 -0
- armodel/models/port_prototype.py +1 -90
- armodel/models/service_needs.py +3 -1
- armodel/models/sw_component.py +6 -143
- armodel/parser/__init__.py +2 -1
- armodel/parser/arxml_parser.py +124 -58
- armodel/parser/file_parser.py +43 -0
- armodel/tests/test_armodel/models/test_ar_package.py +5 -2
- armodel/tests/test_armodel/models/test_ar_ref.py +15 -13
- armodel/tests/test_armodel/models/test_common_structure.py +6 -5
- armodel/tests/test_armodel/models/test_data_prototype.py +1 -1
- armodel/tests/test_armodel/models/test_datatype.py +8 -8
- armodel/tests/test_armodel/models/test_port_interface.py +1 -1
- armodel/tests/test_armodel/parser/test_sw_components.py +1 -1
- armodel/writer/abstract_arxml_writer.py +5 -1
- armodel/writer/arxml_writer.py +68 -58
- {armodel-1.6.0.dist-info → armodel-1.6.1.dist-info}/METADATA +5 -1
- {armodel-1.6.0.dist-info → armodel-1.6.1.dist-info}/RECORD +52 -39
- {armodel-1.6.0.dist-info → armodel-1.6.1.dist-info}/LICENSE +0 -0
- {armodel-1.6.0.dist-info → armodel-1.6.1.dist-info}/WHEEL +0 -0
- {armodel-1.6.0.dist-info → armodel-1.6.1.dist-info}/entry_points.txt +0 -0
- {armodel-1.6.0.dist-info → armodel-1.6.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
|
|
2
|
+
from abc import ABCMeta
|
|
3
|
+
from typing import List
|
|
4
|
+
|
|
5
|
+
from ....ar_ref import RefType
|
|
6
|
+
from ....ar_object import ARObject
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class AtpInstanceRef(ARObject, metaclass = ABCMeta):
|
|
10
|
+
def __init__(self):
|
|
11
|
+
|
|
12
|
+
if type(self) == AtpInstanceRef:
|
|
13
|
+
raise NotImplementedError("AtpInstanceRef is an abstract class.")
|
|
14
|
+
|
|
15
|
+
super().__init__()
|
|
16
|
+
|
|
17
|
+
self.atpBaseRef = None # type: RefType
|
|
18
|
+
self.atpContextElementRefs = [] # type: List[RefType]
|
|
19
|
+
self.atpTargetRef = None # type: RefType
|
|
20
|
+
|
|
21
|
+
def getAtpBaseRef(self):
|
|
22
|
+
return self.atpBaseRef
|
|
23
|
+
|
|
24
|
+
def setAtpBaseRef(self, value):
|
|
25
|
+
self.atpBaseRef = value
|
|
26
|
+
return self
|
|
27
|
+
|
|
28
|
+
def getAtpContextElementRefs(self):
|
|
29
|
+
return self.atpContextElementRefs
|
|
30
|
+
|
|
31
|
+
def addAtpContextElementRef(self, value):
|
|
32
|
+
self.atpContextElementRefs.append(value)
|
|
33
|
+
return self
|
|
34
|
+
|
|
35
|
+
def getAtpTargetRef(self):
|
|
36
|
+
return self.atpTargetRef
|
|
37
|
+
|
|
38
|
+
def setAtpTargetRef(self, value):
|
|
39
|
+
self.atpTargetRef = value
|
|
40
|
+
return self
|
|
41
|
+
|
|
42
|
+
class AnyInstanceRef(ARObject):
|
|
43
|
+
def __init__(self):
|
|
44
|
+
super().__init__()
|
|
45
|
+
|
|
46
|
+
self.baseRef = None # type: RefType
|
|
47
|
+
self.contextElementRef = None # type: RefType
|
|
48
|
+
self.targetRef = None # type: RefType
|
|
49
|
+
|
|
50
|
+
def getBaseRef(self) -> RefType:
|
|
51
|
+
return self.baseRef
|
|
52
|
+
|
|
53
|
+
def setBaseRef(self, value: RefType):
|
|
54
|
+
self.baseRef = value
|
|
55
|
+
return self
|
|
56
|
+
|
|
57
|
+
def getContextElementRef(self) -> RefType:
|
|
58
|
+
return self.contextElementRef
|
|
59
|
+
|
|
60
|
+
def setContextElementRef(self, value: RefType):
|
|
61
|
+
self.contextElementRef = value
|
|
62
|
+
return self
|
|
63
|
+
|
|
64
|
+
def getTargetRef(self) -> RefType:
|
|
65
|
+
return self.targetRef
|
|
66
|
+
|
|
67
|
+
def setTargetRef(self, value:RefType):
|
|
68
|
+
self.targetRef = value
|
|
69
|
+
return self
|
|
@@ -149,6 +149,22 @@ class ParameterRequireComSpec(RPortComSpec):
|
|
|
149
149
|
def __init__(self):
|
|
150
150
|
super().__init__()
|
|
151
151
|
|
|
152
|
+
self.initValue = None # type: ValueSpecification
|
|
153
|
+
self.parameterRef = None # type: RefType
|
|
154
|
+
|
|
155
|
+
def getInitValue(self):
|
|
156
|
+
return self.initValue
|
|
157
|
+
|
|
158
|
+
def setInitValue(self, value):
|
|
159
|
+
self.initValue = value
|
|
160
|
+
return self
|
|
161
|
+
|
|
162
|
+
def getParameterRef(self):
|
|
163
|
+
return self.parameterRef
|
|
164
|
+
|
|
165
|
+
def setParameterRef(self, value):
|
|
166
|
+
self.parameterRef = value
|
|
167
|
+
return self
|
|
152
168
|
|
|
153
169
|
class ReceiverComSpec(RPortComSpec):
|
|
154
170
|
__metaclass__ = ABCMeta
|
|
@@ -162,6 +178,34 @@ class ReceiverComSpec(RPortComSpec):
|
|
|
162
178
|
self.handleOutOfRange = None # type: ARLiteral
|
|
163
179
|
self.usesEndToEndProtection = None # type: ARBoolean
|
|
164
180
|
|
|
181
|
+
def getDataElementRef(self):
|
|
182
|
+
return self.dataElementRef
|
|
183
|
+
|
|
184
|
+
def setDataElementRef(self, value):
|
|
185
|
+
self.dataElementRef = value
|
|
186
|
+
return self
|
|
187
|
+
|
|
188
|
+
def getNetworkRepresentation(self):
|
|
189
|
+
return self.networkRepresentation
|
|
190
|
+
|
|
191
|
+
def setNetworkRepresentation(self, value):
|
|
192
|
+
self.networkRepresentation = value
|
|
193
|
+
return self
|
|
194
|
+
|
|
195
|
+
def getHandleOutOfRange(self):
|
|
196
|
+
return self.handleOutOfRange
|
|
197
|
+
|
|
198
|
+
def setHandleOutOfRange(self, value):
|
|
199
|
+
self.handleOutOfRange = value
|
|
200
|
+
return self
|
|
201
|
+
|
|
202
|
+
def getUsesEndToEndProtection(self):
|
|
203
|
+
return self.usesEndToEndProtection
|
|
204
|
+
|
|
205
|
+
def setUsesEndToEndProtection(self, value):
|
|
206
|
+
self.usesEndToEndProtection = value
|
|
207
|
+
return self
|
|
208
|
+
|
|
165
209
|
def addCompositeNetworkRepresentation(self, representation: CompositeNetworkRepresentation):
|
|
166
210
|
self.compositeNetworkRepresentations.append(representation)
|
|
167
211
|
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
from abc import ABCMeta
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
from .....ar_ref import RefType, TRefType
|
|
7
|
+
from .....general_structure import ARElement, Identifiable
|
|
8
|
+
from .....ar_object import ARBoolean, ARObject
|
|
9
|
+
from ...common_structure.implementation import ImplementationProps
|
|
10
|
+
from ..communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, RPortComSpec, ServerComSpec
|
|
11
|
+
from .instance_refs import InnerPortGroupInCompositionInstanceRef
|
|
12
|
+
|
|
13
|
+
class SymbolProps(ImplementationProps):
|
|
14
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
15
|
+
super().__init__(parent, short_name)
|
|
16
|
+
|
|
17
|
+
class PortPrototype(Identifiable):
|
|
18
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
19
|
+
super().__init__(parent, short_name)
|
|
20
|
+
|
|
21
|
+
self.clientServerAnnotations = []
|
|
22
|
+
self.delegatedPortAnnotation = None
|
|
23
|
+
self.ioHwAbstractionServerAnnotations = []
|
|
24
|
+
self.modePortAnnotations = []
|
|
25
|
+
self.nvDataPortAnnotations = []
|
|
26
|
+
self.parameterPortAnnotations = []
|
|
27
|
+
self.senderReceiverAnnotations = []
|
|
28
|
+
self.triggerPortAnnotations = []
|
|
29
|
+
|
|
30
|
+
def getClientServerAnnotations(self):
|
|
31
|
+
return self.clientServerAnnotations
|
|
32
|
+
|
|
33
|
+
def addClientServerAnnotation(self, value):
|
|
34
|
+
self.clientServerAnnotations.append(value)
|
|
35
|
+
return self
|
|
36
|
+
|
|
37
|
+
def getDelegatedPortAnnotation(self):
|
|
38
|
+
return self.delegatedPortAnnotation
|
|
39
|
+
|
|
40
|
+
def setDelegatedPortAnnotation(self, value):
|
|
41
|
+
self.delegatedPortAnnotation = value
|
|
42
|
+
return self
|
|
43
|
+
|
|
44
|
+
def getIoHwAbstractionServerAnnotations(self):
|
|
45
|
+
return self.ioHwAbstractionServerAnnotations
|
|
46
|
+
|
|
47
|
+
def addIoHwAbstractionServerAnnotation(self, value):
|
|
48
|
+
self.ioHwAbstractionServerAnnotations.append(value)
|
|
49
|
+
return self
|
|
50
|
+
|
|
51
|
+
def getModePortAnnotations(self):
|
|
52
|
+
return self.modePortAnnotations
|
|
53
|
+
|
|
54
|
+
def addModePortAnnotation(self, value):
|
|
55
|
+
self.modePortAnnotations.append(value)
|
|
56
|
+
return self
|
|
57
|
+
|
|
58
|
+
def getNvDataPortAnnotations(self):
|
|
59
|
+
return self.nvDataPortAnnotations
|
|
60
|
+
|
|
61
|
+
def addNvDataPortAnnotation(self, value):
|
|
62
|
+
self.nvDataPortAnnotations.append(value)
|
|
63
|
+
return self
|
|
64
|
+
|
|
65
|
+
def getParameterPortAnnotations(self):
|
|
66
|
+
return self.parameterPortAnnotations
|
|
67
|
+
|
|
68
|
+
def addParameterPortAnnotation(self, value):
|
|
69
|
+
self.parameterPortAnnotations.append(value)
|
|
70
|
+
return self
|
|
71
|
+
|
|
72
|
+
def getSenderReceiverAnnotations(self):
|
|
73
|
+
return self.senderReceiverAnnotations
|
|
74
|
+
|
|
75
|
+
def addSenderReceiverAnnotation(self, value):
|
|
76
|
+
self.senderReceiverAnnotations.append(value)
|
|
77
|
+
return self
|
|
78
|
+
|
|
79
|
+
def getTriggerPortAnnotations(self):
|
|
80
|
+
return self.triggerPortAnnotations
|
|
81
|
+
|
|
82
|
+
def addTriggerPortAnnotation(self, value):
|
|
83
|
+
self.triggerPortAnnotations.append(value)
|
|
84
|
+
return self
|
|
85
|
+
|
|
86
|
+
class AbstractProvidedPortPrototype(PortPrototype):
|
|
87
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
88
|
+
super().__init__(parent, short_name)
|
|
89
|
+
|
|
90
|
+
self.provided_com_specs = [] # type: List[PPortComSpec]
|
|
91
|
+
|
|
92
|
+
def _validateRPortComSpec(self, com_spec: PPortComSpec):
|
|
93
|
+
if isinstance(com_spec, NonqueuedSenderComSpec):
|
|
94
|
+
if com_spec.dataElementRef == None:
|
|
95
|
+
raise ValueError(
|
|
96
|
+
"operation of NonqueuedSenderComSpec is invalid")
|
|
97
|
+
if com_spec.dataElementRef.dest != "VARIABLE-DATA-PROTOTYPE":
|
|
98
|
+
raise ValueError(
|
|
99
|
+
"Invalid operation dest of NonqueuedSenderComSpec")
|
|
100
|
+
elif isinstance(com_spec, ServerComSpec):
|
|
101
|
+
pass
|
|
102
|
+
elif isinstance(com_spec, QueuedSenderComSpec):
|
|
103
|
+
pass
|
|
104
|
+
elif isinstance(com_spec, ModeSwitchSenderComSpec):
|
|
105
|
+
pass
|
|
106
|
+
else:
|
|
107
|
+
raise ValueError("Unsupported com spec")
|
|
108
|
+
|
|
109
|
+
def addProvidedComSpec(self, com_spec):
|
|
110
|
+
self._validateRPortComSpec(com_spec)
|
|
111
|
+
self.provided_com_specs.append(com_spec)
|
|
112
|
+
|
|
113
|
+
def getProvidedComSpecs(self) -> List[PPortComSpec]:
|
|
114
|
+
return self.provided_com_specs
|
|
115
|
+
|
|
116
|
+
def getNonqueuedSenderComSpecs(self) -> List[NonqueuedSenderComSpec]:
|
|
117
|
+
return filter(lambda c: isinstance(c, NonqueuedSenderComSpec), self.provided_com_specs)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
class AbstractRequiredPortPrototype(PortPrototype):
|
|
121
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
122
|
+
super().__init__(parent, short_name)
|
|
123
|
+
|
|
124
|
+
self.required_com_specs = [] # type: List[RPortComSpec]
|
|
125
|
+
|
|
126
|
+
def _validateRPortComSpec(self, com_spec: RPortComSpec):
|
|
127
|
+
if (isinstance(com_spec, ClientComSpec)):
|
|
128
|
+
if com_spec.getOperationRef() is not None:
|
|
129
|
+
if com_spec.getOperationRef().getDest() != "CLIENT-SERVER-OPERATION":
|
|
130
|
+
raise ValueError("Invalid operation dest of ClientComSpec.")
|
|
131
|
+
elif isinstance(com_spec, NonqueuedReceiverComSpec):
|
|
132
|
+
if com_spec.getDataElementRef() is not None:
|
|
133
|
+
if com_spec.getDataElementRef().getDest() != "VARIABLE-DATA-PROTOTYPE":
|
|
134
|
+
raise ValueError("Invalid date element dest of NonqueuedReceiverComSpec.")
|
|
135
|
+
elif isinstance(com_spec, QueuedReceiverComSpec):
|
|
136
|
+
pass
|
|
137
|
+
elif isinstance(com_spec, ModeSwitchReceiverComSpec):
|
|
138
|
+
pass
|
|
139
|
+
elif isinstance(com_spec, ParameterRequireComSpec):
|
|
140
|
+
if com_spec.getParameterRef() is not None:
|
|
141
|
+
if com_spec.getParameterRef().getDest() != "PARAMETER-DATA-PROTOTYPE":
|
|
142
|
+
raise ValueError("Invalid parameter dest of ParameterRequireComSpec.")
|
|
143
|
+
else:
|
|
144
|
+
raise ValueError("Unsupported RPortComSpec <%s>" % type(com_spec))
|
|
145
|
+
|
|
146
|
+
def addRequiredComSpec(self, com_spec: RPortComSpec):
|
|
147
|
+
self._validateRPortComSpec(com_spec)
|
|
148
|
+
self.required_com_specs.append(com_spec)
|
|
149
|
+
|
|
150
|
+
def getRequiredComSpecs(self) -> List[RPortComSpec]:
|
|
151
|
+
return self.required_com_specs
|
|
152
|
+
|
|
153
|
+
def getClientComSpecs(self) -> List[ClientComSpec]:
|
|
154
|
+
return filter(lambda c: isinstance(c, ClientComSpec), self.required_com_specs)
|
|
155
|
+
|
|
156
|
+
def getNonqueuedReceiverComSpecs(self) -> List[NonqueuedReceiverComSpec]:
|
|
157
|
+
return filter(lambda c: isinstance(c, NonqueuedReceiverComSpec), self.required_com_specs)
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class PPortPrototype(AbstractProvidedPortPrototype):
|
|
161
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
162
|
+
super().__init__(parent, short_name)
|
|
163
|
+
|
|
164
|
+
self.providedInterfaceTRef = None # type: TRefType
|
|
165
|
+
|
|
166
|
+
def getProvidedInterfaceTRef(self):
|
|
167
|
+
return self.providedInterfaceTRef
|
|
168
|
+
|
|
169
|
+
def setProvidedInterfaceTRef(self, value):
|
|
170
|
+
self.providedInterfaceTRef = value
|
|
171
|
+
return self
|
|
172
|
+
|
|
173
|
+
class RPortPrototype(AbstractRequiredPortPrototype):
|
|
174
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
175
|
+
super().__init__(parent, short_name)
|
|
176
|
+
|
|
177
|
+
self.mayBeUnconnected = None # type: ARBoolean
|
|
178
|
+
self.requiredInterfaceTRef = None # type: TRefType
|
|
179
|
+
|
|
180
|
+
def getMayBeUnconnected(self):
|
|
181
|
+
return self.mayBeUnconnected
|
|
182
|
+
|
|
183
|
+
def setMayBeUnconnected(self, value):
|
|
184
|
+
self.mayBeUnconnected = value
|
|
185
|
+
return self
|
|
186
|
+
|
|
187
|
+
def getRequiredInterfaceTRef(self):
|
|
188
|
+
return self.requiredInterfaceTRef
|
|
189
|
+
|
|
190
|
+
def setRequiredInterfaceTRef(self, value):
|
|
191
|
+
self.requiredInterfaceTRef = value
|
|
192
|
+
return self
|
|
193
|
+
|
|
194
|
+
class PortGroup(Identifiable):
|
|
195
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
196
|
+
super().__init__(parent, short_name)
|
|
197
|
+
|
|
198
|
+
self._inner_group_iref = [] # type: List[InnerPortGroupInCompositionInstanceRef]
|
|
199
|
+
self._outer_port_ref = [] # type: List[RefType]
|
|
200
|
+
|
|
201
|
+
def addInnerGroupIRef(self, iref: InnerPortGroupInCompositionInstanceRef):
|
|
202
|
+
self._inner_group_iref.append(iref)
|
|
203
|
+
|
|
204
|
+
def getInnerGroupIRefs(self) -> List[InnerPortGroupInCompositionInstanceRef]:
|
|
205
|
+
return self._inner_group_iref
|
|
206
|
+
|
|
207
|
+
def addOuterPortRef(self, ref: RefType):
|
|
208
|
+
self._outer_port_ref.append(ref)
|
|
209
|
+
|
|
210
|
+
def getOuterPortRefs(self) -> List[RefType]:
|
|
211
|
+
return self._outer_port_ref
|
|
212
|
+
|
|
213
|
+
class SwComponentType(ARElement, metaclass = ABCMeta):
|
|
214
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
215
|
+
super().__init__(parent, short_name)
|
|
216
|
+
|
|
217
|
+
def createPPortPrototype(self, short_name: str) -> PPortPrototype:
|
|
218
|
+
prototype = PPortPrototype(self, short_name)
|
|
219
|
+
if (short_name not in self.elements):
|
|
220
|
+
self.elements[short_name] = prototype
|
|
221
|
+
return self.elements[short_name]
|
|
222
|
+
|
|
223
|
+
def createRPortPrototype(self, short_name) -> RPortPrototype:
|
|
224
|
+
prototype = RPortPrototype(self, short_name)
|
|
225
|
+
if (short_name not in self.elements):
|
|
226
|
+
self.elements[short_name] = prototype
|
|
227
|
+
return self.elements[short_name]
|
|
228
|
+
|
|
229
|
+
def createPortGroup(self, short_name) -> PortGroup:
|
|
230
|
+
port_group = PortGroup(self, short_name)
|
|
231
|
+
if (short_name not in self.elements):
|
|
232
|
+
self.elements[short_name] = port_group
|
|
233
|
+
return self.elements[short_name]
|
|
234
|
+
|
|
235
|
+
def getPPortPrototypes(self) -> List[PPortPrototype]:
|
|
236
|
+
return list(sorted(filter(lambda c: isinstance(c, PPortPrototype), self.elements.values()), key= lambda o: o.short_name))
|
|
237
|
+
|
|
238
|
+
def getRPortPrototypes(self) -> List[RPortPrototype]:
|
|
239
|
+
return list(sorted(filter(lambda c: isinstance(c, RPortPrototype), self.elements.values()), key= lambda o: o.short_name))
|
|
240
|
+
|
|
241
|
+
def getPortPrototypes(self) -> List[PortPrototype]:
|
|
242
|
+
return list(sorted(filter(lambda c: isinstance(c, PortPrototype), self.elements.values()), key= lambda o: o.short_name))
|
|
243
|
+
|
|
244
|
+
def getPortGroups(self) -> List[PortGroup]:
|
|
245
|
+
return list(sorted(filter(lambda c: isinstance(c, PortGroup), self.elements.values()), key= lambda o: o.short_name))
|
|
246
|
+
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from abc import ABCMeta
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
from ...generic_structure.abstract_structure import AtpInstanceRef
|
|
4
|
+
from .....ar_ref import RefType
|
|
3
5
|
|
|
4
6
|
|
|
5
7
|
class ModeGroupInAtomicSwcInstanceRef(AtpInstanceRef, metaclass = ABCMeta):
|
|
@@ -147,3 +149,33 @@ class RVariableInAtomicSwcInstanceRef(VariableInAtomicSwcInstanceRef):
|
|
|
147
149
|
def setTargetDataElementRef(self, value):
|
|
148
150
|
self.targetDataElementRef = value
|
|
149
151
|
return self
|
|
152
|
+
|
|
153
|
+
class InnerPortGroupInCompositionInstanceRef(AtpInstanceRef):
|
|
154
|
+
def __init__(self):
|
|
155
|
+
super().__init__()
|
|
156
|
+
|
|
157
|
+
self.baseRef = None # type: RefType
|
|
158
|
+
self.contextRefs = [] # type: List[RefType]
|
|
159
|
+
self.targetRef = None # type: RefType
|
|
160
|
+
|
|
161
|
+
def getBaseRef(self):
|
|
162
|
+
return self.baseRef
|
|
163
|
+
|
|
164
|
+
def setBaseRef(self, value):
|
|
165
|
+
self.baseRef = value
|
|
166
|
+
return self
|
|
167
|
+
|
|
168
|
+
def getContextRefs(self):
|
|
169
|
+
return self.contextRefs
|
|
170
|
+
|
|
171
|
+
def addContextRefs(self, value):
|
|
172
|
+
self.contextRefs.append(value)
|
|
173
|
+
return self
|
|
174
|
+
|
|
175
|
+
def getTargetRef(self):
|
|
176
|
+
return self.targetRef
|
|
177
|
+
|
|
178
|
+
def setTargetRef(self, value):
|
|
179
|
+
self.targetRef = value
|
|
180
|
+
return self
|
|
181
|
+
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
from abc import ABCMeta
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
from ..components import SwComponentType
|
|
5
|
+
from ..composition.instance_refs import PPortInCompositionInstanceRef, PortInCompositionTypeInstanceRef, RPortInCompositionInstanceRef
|
|
6
|
+
from .....ar_ref import RefType
|
|
7
|
+
from .....ar_object import ARObject
|
|
8
|
+
from .....general_structure import Identifiable
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SwComponentPrototype(Identifiable):
|
|
12
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
13
|
+
super().__init__(parent, short_name)
|
|
14
|
+
|
|
15
|
+
self.typeTRef = None # type: RefType
|
|
16
|
+
|
|
17
|
+
def getTypeTRef(self):
|
|
18
|
+
return self.typeTRef
|
|
19
|
+
|
|
20
|
+
def setTypeTRef(self, value):
|
|
21
|
+
self.typeTRef = value
|
|
22
|
+
return self
|
|
23
|
+
|
|
24
|
+
class SwConnector(Identifiable, metaclass = ABCMeta):
|
|
25
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
26
|
+
super().__init__(parent, short_name)
|
|
27
|
+
|
|
28
|
+
self.mappingRef = None # type: RefType
|
|
29
|
+
|
|
30
|
+
def getMappingRef(self):
|
|
31
|
+
return self.mappingRef
|
|
32
|
+
|
|
33
|
+
def setMappingRef(self, value):
|
|
34
|
+
self.mappingRef = value
|
|
35
|
+
return self
|
|
36
|
+
|
|
37
|
+
class AssemblySwConnector(SwConnector):
|
|
38
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
39
|
+
super().__init__(parent, short_name)
|
|
40
|
+
|
|
41
|
+
self.providerIRef = None # type: PPortInCompositionInstanceRef
|
|
42
|
+
self.requesterIRef = None # type: RPortInCompositionInstanceRef
|
|
43
|
+
|
|
44
|
+
def getProviderIRef(self) -> PPortInCompositionInstanceRef:
|
|
45
|
+
return self.providerIRef
|
|
46
|
+
|
|
47
|
+
def setProviderIRef(self, value: PPortInCompositionInstanceRef):
|
|
48
|
+
self.providerIRef = value
|
|
49
|
+
return self
|
|
50
|
+
|
|
51
|
+
def getRequesterIRef(self) -> PPortInCompositionInstanceRef:
|
|
52
|
+
return self.requesterIRef
|
|
53
|
+
|
|
54
|
+
def setRequesterIRef(self, value: PPortInCompositionInstanceRef):
|
|
55
|
+
self.requesterIRef = value
|
|
56
|
+
return self
|
|
57
|
+
|
|
58
|
+
class DelegationSwConnector(SwConnector):
|
|
59
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
60
|
+
super().__init__(parent, short_name)
|
|
61
|
+
|
|
62
|
+
self.innerPortIRref = None # type: PortInCompositionTypeInstanceRef
|
|
63
|
+
self.outerPortRef = None # type: RefType
|
|
64
|
+
|
|
65
|
+
def getInnerPortIRref(self):
|
|
66
|
+
return self.innerPortIRref
|
|
67
|
+
|
|
68
|
+
def setInnerPortIRref(self, value):
|
|
69
|
+
self.innerPortIRref = value
|
|
70
|
+
return self
|
|
71
|
+
|
|
72
|
+
def getOuterPortRef(self):
|
|
73
|
+
return self.outerPortRef
|
|
74
|
+
|
|
75
|
+
def setOuterPortRef(self, value):
|
|
76
|
+
self.outerPortRef = value
|
|
77
|
+
return self
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class PassThroughSwConnector(SwConnector):
|
|
81
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
82
|
+
super().__init__(parent, short_name)
|
|
83
|
+
|
|
84
|
+
self.providedOuterPortRef = None # type: RefType
|
|
85
|
+
self.requiredOuterPortRef = None # type: RefType
|
|
86
|
+
|
|
87
|
+
def getProvidedOuterPortRef(self):
|
|
88
|
+
return self.providedOuterPortRef
|
|
89
|
+
|
|
90
|
+
def setProvidedOuterPortRef(self, value):
|
|
91
|
+
self.providedOuterPortRef = value
|
|
92
|
+
return self
|
|
93
|
+
|
|
94
|
+
def getRequiredOuterPortRef(self):
|
|
95
|
+
return self.requiredOuterPortRef
|
|
96
|
+
|
|
97
|
+
def setRequiredOuterPortRef(self, value):
|
|
98
|
+
self.requiredOuterPortRef = value
|
|
99
|
+
return self
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class CompositionSwComponentType(SwComponentType):
|
|
103
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
104
|
+
super().__init__(parent, short_name)
|
|
105
|
+
|
|
106
|
+
self.constantValueMappingRefs = [] # type: List[RefType]
|
|
107
|
+
self.dataTypeMappingRefs = [] # type: List[RefType]
|
|
108
|
+
self.instantiationRTEEventProps = [] # type: List[InstantiationRTEEventProps]
|
|
109
|
+
|
|
110
|
+
def removeAllAssemblySwConnector(self):
|
|
111
|
+
for sw_connector in self.getAssemblySwConnectors():
|
|
112
|
+
self.elements.pop(sw_connector.short_name)
|
|
113
|
+
|
|
114
|
+
def removeAllDelegationSwConnector(self):
|
|
115
|
+
for sw_connector in self.getDelegationSwConnectors():
|
|
116
|
+
self.elements.pop(sw_connector.short_name)
|
|
117
|
+
|
|
118
|
+
def createAssemblySwConnector(self, short_name: str) -> AssemblySwConnector:
|
|
119
|
+
if (short_name not in self.elements):
|
|
120
|
+
connector = AssemblySwConnector(self, short_name)
|
|
121
|
+
self.elements[short_name] = connector
|
|
122
|
+
return self.elements[short_name]
|
|
123
|
+
|
|
124
|
+
def createDelegationSwConnector(self, short_name: str) -> DelegationSwConnector:
|
|
125
|
+
if short_name not in self.elements:
|
|
126
|
+
connector = DelegationSwConnector(self, short_name)
|
|
127
|
+
self.elements[short_name] = connector
|
|
128
|
+
return self.elements[short_name]
|
|
129
|
+
|
|
130
|
+
def getAssemblySwConnectors(self) -> List[AssemblySwConnector]:
|
|
131
|
+
return list(sorted(filter(lambda e: isinstance(e, AssemblySwConnector), self.elements.values()), key = lambda c: c.short_name))
|
|
132
|
+
|
|
133
|
+
def getDelegationSwConnectors(self) -> List[DelegationSwConnector]:
|
|
134
|
+
return list(sorted(filter(lambda e: isinstance(e, DelegationSwConnector), self.elements.values()), key = lambda c: c.short_name))
|
|
135
|
+
|
|
136
|
+
def getSwConnectors(self) -> List[SwConnector]:
|
|
137
|
+
return list(sorted(filter(lambda e: isinstance(e, SwConnector), self.elements.values()), key = lambda c: c.short_name))
|
|
138
|
+
|
|
139
|
+
def createSwComponentPrototype(self, short_name: str) -> SwComponentPrototype:
|
|
140
|
+
if (short_name not in self.elements):
|
|
141
|
+
connector = SwComponentPrototype(self, short_name)
|
|
142
|
+
self.elements[short_name] = connector
|
|
143
|
+
return self.elements[short_name]
|
|
144
|
+
|
|
145
|
+
def getSwComponentPrototypes(self) -> List[SwComponentPrototype]:
|
|
146
|
+
return list(filter(lambda e: isinstance(e, SwComponentPrototype), self.elements.values()))
|
|
147
|
+
|
|
148
|
+
def addDataTypeMapping(self, data_type_mapping_ref: RefType):
|
|
149
|
+
self.dataTypeMappingRefs.append(data_type_mapping_ref)
|
|
150
|
+
|
|
151
|
+
def getDataTypeMappings(self) -> List[RefType]:
|
|
152
|
+
return self.dataTypeMappingRefs
|
|
153
|
+
|
|
154
|
+
|