armodel 1.7.1__py3-none-any.whl → 1.7.2__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.
Files changed (34) hide show
  1. armodel/cli/arxml_dump_cli.py +2 -2
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +3 -3
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +41 -19
  4. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +22 -11
  5. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +26 -9
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +8 -0
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +711 -27
  8. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +0 -3
  9. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +3 -0
  10. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +43 -1
  11. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +41 -3
  12. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -15
  13. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -8
  14. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +44 -1
  15. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +46 -5
  16. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +55 -34
  17. armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +170 -23
  18. armodel/models/M2/MSR/DataDictionary/AuxillaryObjects.py +4 -4
  19. armodel/models/M2/MSR/DataDictionary/RecordLayout.py +130 -37
  20. armodel/models/__init__.py +1 -0
  21. armodel/parser/abstract_arxml_parser.py +26 -13
  22. armodel/parser/arxml_parser.py +361 -216
  23. armodel/tests/test_armodel/models/test_datatype.py +4 -4
  24. armodel/tests/test_armodel/models/test_m2_msr.py +5 -5
  25. armodel/tests/test_armodel/parser/test_sw_components.py +1 -1
  26. armodel/tests/test_armodel/parser/test_system.py +0 -1
  27. armodel/writer/abstract_arxml_writer.py +9 -0
  28. armodel/writer/arxml_writer.py +358 -173
  29. {armodel-1.7.1.dist-info → armodel-1.7.2.dist-info}/METADATA +21 -1
  30. {armodel-1.7.1.dist-info → armodel-1.7.2.dist-info}/RECORD +34 -34
  31. {armodel-1.7.1.dist-info → armodel-1.7.2.dist-info}/LICENSE +0 -0
  32. {armodel-1.7.1.dist-info → armodel-1.7.2.dist-info}/WHEEL +0 -0
  33. {armodel-1.7.1.dist-info → armodel-1.7.2.dist-info}/entry_points.txt +0 -0
  34. {armodel-1.7.1.dist-info → armodel-1.7.2.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,4 @@
1
1
  from typing import Dict, List
2
-
3
-
4
-
5
2
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Boolean, Identifier, RefType, ReferrableSubtypesEnum
6
3
  from .....M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
7
4
  from .....M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming
@@ -13,6 +13,7 @@ class Referrable(ARObject, metaclass = ABCMeta):
13
13
 
14
14
  if type(self) == Referrable:
15
15
  raise NotImplementedError("Referrable is an abstract class.")
16
+
16
17
  ARObject.__init__(self)
17
18
 
18
19
  self.parent = parent
@@ -61,6 +62,7 @@ class CollectableElement(ARObject, metaclass = ABCMeta):
61
62
  def __init__(self):
62
63
  if type(self) == CollectableElement:
63
64
  raise NotImplementedError("CollectableElement is an abstract class.")
65
+
64
66
  self.elements = {} # type: dict[str, Referrable]
65
67
 
66
68
  def getTotalElement(self) -> int:
@@ -87,6 +89,7 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
87
89
  def __init__(self, parent: ARObject, short_name: str):
88
90
  if type(self) == Identifiable:
89
91
  raise NotImplementedError("Identifiable is an abstract class.")
92
+
90
93
  MultilanguageReferrable.__init__(self, parent, short_name)
91
94
  CollectableElement.__init__(self)
92
95
 
@@ -340,6 +340,35 @@ class Identifier(ARLiteral):
340
340
  def __init__(self):
341
341
  super().__init__()
342
342
 
343
+ class CIdentifier(ARLiteral):
344
+ '''
345
+ This datatype represents a string, that follows the rules of C-identifiers.
346
+
347
+ Tags:
348
+ * xml.xsd.customType=C-IDENTIFIER
349
+ * xml.xsd.pattern=[a-zA-Z_][a-zA-Z0-9_]*
350
+ * xml.xsd.type=string
351
+ '''
352
+ def __init__(self):
353
+ super().__init__()
354
+
355
+ self.blueprintValue = None
356
+ self.namePattern = None
357
+
358
+ def getBlueprintValue(self):
359
+ return self.blueprintValue
360
+
361
+ def setBlueprintValue(self, value):
362
+ self.blueprintValue = value
363
+ return self
364
+
365
+ def getNamePattern(self):
366
+ return self.namePattern
367
+
368
+ def setNamePattern(self, value):
369
+ self.namePattern = value
370
+ return self
371
+
343
372
  class RevisionLabelString(ARLiteral):
344
373
  '''
345
374
  This primitive represents an internal AUTOSAR revision label which identifies an engineering object. It
@@ -404,4 +433,17 @@ class RefType(ARObject):
404
433
 
405
434
  class TRefType(RefType):
406
435
  def __init__(self):
407
- super().__init__()
436
+ super().__init__()
437
+
438
+ class DiagRequirementIdString(ARLiteral):
439
+ '''
440
+ This string denotes an Identifier for a requirement.
441
+
442
+ Tags:
443
+ * xml.xsd.customType=DIAG-REQUIREMENT-ID-STRING
444
+ * xml.xsd.pattern=[0-9a-zA-Z_\-]+
445
+ * xml.xsd.type=string
446
+ '''
447
+ def __init__(self):
448
+ super().__init__()
449
+
@@ -62,9 +62,22 @@ class CompositeNetworkRepresentation(ARObject):
62
62
  def __init__(self):
63
63
  super().__init__()
64
64
 
65
- self.leaf_element_iref = None # type: ApplicationCompositeElementInPortInterfaceInstanceRef
66
- self.network_representation = None # type: SwDataDefProps
65
+ self.leafElementIRef = None # type: ApplicationCompositeElementInPortInterfaceInstanceRef
66
+ self.networkRepresentation = None # type: SwDataDefProps
67
67
 
68
+ def getLeafElementIRef(self):
69
+ return self.leafElementIRef
70
+
71
+ def setLeafElementIRef(self, value):
72
+ self.leafElementIRef = value
73
+ return self
74
+
75
+ def getNetworkRepresentation(self):
76
+ return self.networkRepresentation
77
+
78
+ def setNetworkRepresentation(self, value):
79
+ self.networkRepresentation = value
80
+ return self
68
81
 
69
82
  class TransmissionAcknowledgementRequest(ARObject):
70
83
  def __init__(self):
@@ -205,7 +218,10 @@ class ReceiverComSpec(RPortComSpec):
205
218
  self.compositeNetworkRepresentations = [] # type: List[CompositeNetworkRepresentation]
206
219
  self.dataElementRef = None # type: RefType
207
220
  self.networkRepresentation = None # type: SwDataDefProps
208
- self.handleOutOfRange = None # type: ARLiteral
221
+ self.handleOutOfRange = None # type: HandleOutOfRangeEnum
222
+ self.handleOutOfRangeStatus = None # type: HandleOutOfRangeStatusEnum
223
+ self.maxDeltaCounterInit = None # type: PositiveInteger
224
+ self.maxNoNewOrRepeatedData = None # type: PositiveInteger
209
225
  self.usesEndToEndProtection = None # type: ARBoolean
210
226
 
211
227
  def getDataElementRef(self):
@@ -228,6 +244,28 @@ class ReceiverComSpec(RPortComSpec):
228
244
  def setHandleOutOfRange(self, value):
229
245
  self.handleOutOfRange = value
230
246
  return self
247
+
248
+ def getHandleOutOfRangeStatus(self):
249
+ return self.handleOutOfRangeStatus
250
+
251
+ def setHandleOutOfRangeStatus(self, value):
252
+ self.handleOutOfRangeStatus = value
253
+ return self
254
+
255
+ def getMaxDeltaCounterInit(self):
256
+ return self.maxDeltaCounterInit
257
+
258
+ def setMaxDeltaCounterInit(self, value):
259
+ self.maxDeltaCounterInit = value
260
+ return self
261
+
262
+ def getMaxNoNewOrRepeatedData(self):
263
+ return self.maxNoNewOrRepeatedData
264
+
265
+ def setMaxNoNewOrRepeatedData(self, value):
266
+ self.maxNoNewOrRepeatedData = value
267
+ return self
268
+
231
269
 
232
270
  def getUsesEndToEndProtection(self):
233
271
  return self.usesEndToEndProtection
@@ -87,7 +87,7 @@ class AbstractProvidedPortPrototype(PortPrototype):
87
87
  def __init__(self, parent: ARObject, short_name: str):
88
88
  super().__init__(parent, short_name)
89
89
 
90
- self.provided_com_specs = [] # type: List[PPortComSpec]
90
+ self.providedComSpecs = [] # type: List[PPortComSpec]
91
91
 
92
92
  def _validateRPortComSpec(self, com_spec: PPortComSpec):
93
93
  if isinstance(com_spec, NonqueuedSenderComSpec):
@@ -108,20 +108,20 @@ class AbstractProvidedPortPrototype(PortPrototype):
108
108
 
109
109
  def addProvidedComSpec(self, com_spec):
110
110
  self._validateRPortComSpec(com_spec)
111
- self.provided_com_specs.append(com_spec)
111
+ self.providedComSpecs.append(com_spec)
112
112
 
113
113
  def getProvidedComSpecs(self) -> List[PPortComSpec]:
114
- return self.provided_com_specs
114
+ return self.providedComSpecs
115
115
 
116
116
  def getNonqueuedSenderComSpecs(self) -> List[NonqueuedSenderComSpec]:
117
- return filter(lambda c: isinstance(c, NonqueuedSenderComSpec), self.provided_com_specs)
117
+ return filter(lambda c: isinstance(c, NonqueuedSenderComSpec), self.providedComSpecs)
118
118
 
119
119
 
120
120
  class AbstractRequiredPortPrototype(PortPrototype):
121
121
  def __init__(self, parent: ARObject, short_name: str):
122
122
  super().__init__(parent, short_name)
123
123
 
124
- self.required_com_specs = [] # type: List[RPortComSpec]
124
+ self.requiredComSpecs = [] # type: List[RPortComSpec]
125
125
 
126
126
  def _validateRPortComSpec(self, com_spec: RPortComSpec):
127
127
  if (isinstance(com_spec, ClientComSpec)):
@@ -145,16 +145,16 @@ class AbstractRequiredPortPrototype(PortPrototype):
145
145
 
146
146
  def addRequiredComSpec(self, com_spec: RPortComSpec):
147
147
  self._validateRPortComSpec(com_spec)
148
- self.required_com_specs.append(com_spec)
148
+ self.requiredComSpecs.append(com_spec)
149
149
 
150
150
  def getRequiredComSpecs(self) -> List[RPortComSpec]:
151
- return self.required_com_specs
151
+ return self.requiredComSpecs
152
152
 
153
153
  def getClientComSpecs(self) -> List[ClientComSpec]:
154
- return filter(lambda c: isinstance(c, ClientComSpec), self.required_com_specs)
154
+ return filter(lambda c: isinstance(c, ClientComSpec), self.requiredComSpecs)
155
155
 
156
156
  def getNonqueuedReceiverComSpecs(self) -> List[NonqueuedReceiverComSpec]:
157
- return filter(lambda c: isinstance(c, NonqueuedReceiverComSpec), self.required_com_specs)
157
+ return filter(lambda c: isinstance(c, NonqueuedReceiverComSpec), self.requiredComSpecs)
158
158
 
159
159
 
160
160
  class PPortPrototype(AbstractProvidedPortPrototype):
@@ -190,6 +190,35 @@ class RPortPrototype(AbstractRequiredPortPrototype):
190
190
  def setRequiredInterfaceTRef(self, value):
191
191
  self.requiredInterfaceTRef = value
192
192
  return self
193
+
194
+ class PRPortPrototype(PortPrototype):
195
+ def __init__(self, parent, short_name):
196
+ super().__init__(parent, short_name)
197
+
198
+ self.providedComSpecs = [] # type: List[PPortComSpec]
199
+ self.requiredComSpecs = [] # type: List[RPortComSpec]
200
+ self.providedRequiredInterface = None # type: TRefType
201
+
202
+ def getProvidedComSpecs(self):
203
+ return self.providedComSpecs
204
+
205
+ def addProvidedComSpec(self, value):
206
+ self.providedComSpecs.append(value)
207
+ return self
208
+
209
+ def getRequiredComSpecs(self):
210
+ return self.requiredComSpecs
211
+
212
+ def addRequiredComSpec(self, value):
213
+ self.requiredComSpecs.append(value)
214
+ return self
215
+
216
+ def getProvidedRequiredInterface(self):
217
+ return self.providedRequiredInterface
218
+
219
+ def setProvidedRequiredInterface(self, value):
220
+ self.providedRequiredInterface = value
221
+ return self
193
222
 
194
223
  class PortGroup(Identifiable):
195
224
  def __init__(self, parent: ARObject, short_name: str):
@@ -215,16 +244,22 @@ class SwComponentType(ARElement, metaclass = ABCMeta):
215
244
  super().__init__(parent, short_name)
216
245
 
217
246
  def createPPortPrototype(self, short_name: str) -> PPortPrototype:
218
- prototype = PPortPrototype(self, short_name)
219
247
  if (short_name not in self.elements):
220
- self.elements[short_name] = prototype
221
- return self.elements[short_name]
248
+ prototype = PPortPrototype(self, short_name)
249
+ self.addElement(prototype)
250
+ return self.getElement(short_name)
222
251
 
223
252
  def createRPortPrototype(self, short_name) -> RPortPrototype:
224
- prototype = RPortPrototype(self, short_name)
225
253
  if (short_name not in self.elements):
226
- self.elements[short_name] = prototype
227
- return self.elements[short_name]
254
+ prototype = RPortPrototype(self, short_name)
255
+ self.addElement(prototype)
256
+ return self.getElement(short_name)
257
+
258
+ def createPRPortPrototype(self, short_name) -> PRPortPrototype:
259
+ if (short_name not in self.elements):
260
+ prototype = PRPortPrototype(self, short_name)
261
+ self.addElement(prototype)
262
+ return self.getElement(short_name)
228
263
 
229
264
  def createPortGroup(self, short_name) -> PortGroup:
230
265
  port_group = PortGroup(self, short_name)
@@ -238,6 +273,9 @@ class SwComponentType(ARElement, metaclass = ABCMeta):
238
273
  def getRPortPrototypes(self) -> List[RPortPrototype]:
239
274
  return list(sorted(filter(lambda c: isinstance(c, RPortPrototype), self.elements.values()), key= lambda o: o.short_name))
240
275
 
276
+ def getPRPortPrototypes(self) -> List[PRPortPrototype]:
277
+ return list(sorted(filter(lambda c: isinstance(c, PRPortPrototype), self.elements.values()), key= lambda o: o.short_name))
278
+
241
279
  def getPortPrototypes(self) -> List[PortPrototype]:
242
280
  return list(sorted(filter(lambda c: isinstance(c, PortPrototype), self.elements.values()), key= lambda o: o.short_name))
243
281
 
@@ -81,25 +81,40 @@ class ApplicationRecordDataType(ApplicationCompositeDataType):
81
81
  class DataTypeMap(ARObject):
82
82
  def __init__(self):
83
83
 
84
- self.application_data_type_ref = None # type: RefType
85
- self.implementation_data_type_ref = None # type: RefType
84
+ self.applicationDataTypeRef = None # type: RefType
85
+ self.implementationDataTypeRef = None # type: RefType
86
86
 
87
+ def getApplicationDataTypeRef(self):
88
+ return self.applicationDataTypeRef
89
+
90
+ def setApplicationDataTypeRef(self, value):
91
+ self.applicationDataTypeRef = value
92
+ return self
93
+
94
+ def getImplementationDataTypeRef(self):
95
+ return self.implementationDataTypeRef
96
+
97
+ def setImplementationDataTypeRef(self, value):
98
+ self.implementationDataTypeRef = value
99
+ return self
87
100
 
88
101
  class DataTypeMappingSet(ARElement):
89
102
  def __init__(self, parent: ARObject, short_name: str):
90
103
  super().__init__(parent, short_name)
91
104
 
92
- self._dataTypeMaps = [] # type: List[DataTypeMap]
93
- self._modeRequestTypeMaps = [] # type: List[ModeRequestTypeMap]
105
+ self.dataTypeMaps = [] # type: List[DataTypeMap]
106
+ self.modeRequestTypeMaps = [] # type: List[ModeRequestTypeMap]
94
107
 
95
108
  def addDataTypeMap(self, type_map: DataTypeMap):
96
- self._dataTypeMaps.append(type_map)
109
+ self.dataTypeMaps.append(type_map)
110
+ return self
97
111
 
98
112
  def getDataTypeMaps(self) -> List[DataTypeMap]:
99
- return self._dataTypeMaps
113
+ return self.dataTypeMaps
100
114
 
101
115
  def addModeRequestTypeMap(self, map: ModeRequestTypeMap):
102
- self._modeRequestTypeMaps.append(map)
116
+ self.modeRequestTypeMaps.append(map)
117
+ return self
103
118
 
104
119
  def getModeRequestTypeMaps(self) -> List[ModeRequestTypeMap]:
105
- return self._modeRequestTypeMaps
120
+ return self.modeRequestTypeMaps
@@ -1,10 +1,11 @@
1
1
  from abc import ABCMeta
2
2
  from typing import List
3
3
 
4
+ from .....M2.AUTOSARTemplates.CommonStructure import TextValueSpecification
4
5
  from .....M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import Trigger
5
6
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
6
7
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
7
- from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical
8
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, PositiveInteger
8
9
  from .....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ParameterDataPrototype, VariableDataPrototype, AutosarDataPrototype
9
10
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean
10
11
  from .....M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroupPrototype
@@ -90,6 +91,48 @@ class InvalidationPolicy(ARObject):
90
91
  def setHandleInvalid(self, value):
91
92
  self.handleInvalid = value
92
93
  return self
94
+
95
+ class MetaDataItem(ARObject):
96
+ def __init__(self):
97
+ super().__init__()
98
+
99
+ self.length = None # type: PositiveInteger
100
+ self.metaDataItemType = None # type: TextValueSpecification
101
+
102
+ def getLength(self):
103
+ return self.length
104
+
105
+ def setLength(self, value):
106
+ self.length = value
107
+ return self
108
+
109
+ def getMetaDataItemType(self):
110
+ return self.metaDataItemType
111
+
112
+ def setMetaDataItemType(self, value):
113
+ self.metaDataItemType = value
114
+ return self
115
+
116
+ class MetaDataItemSet(ARObject):
117
+ def __init__(self):
118
+ super().__init__()
119
+
120
+ self.dataElementRefs = [] # type: List[RefType]
121
+ self.metaDataItems = [] # type: List[MetaDataItem]
122
+
123
+ def getDataElementRefs(self):
124
+ return self.dataElementRefs
125
+
126
+ def addDataElementRef(self, value):
127
+ self.dataElementRefs.append(value)
128
+ return self
129
+
130
+ def getMetaDataItems(self):
131
+ return self.metaDataItems
132
+
133
+ def addMetaDataItem(self, value):
134
+ self.metaDataItems.append(value)
135
+ return self
93
136
 
94
137
  class SenderReceiverInterface(DataInterface):
95
138
  def __init__(self, parent: ARObject, short_name: str):
@@ -1,5 +1,5 @@
1
1
  from typing import List
2
- from .....M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import NvBlockNeeds, RoleBasedDataAssignment, ServiceNeeds
2
+ from .....M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagnosticCommunicationManagerNeeds, DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds, NvBlockNeeds, RoleBasedDataAssignment, ServiceNeeds
3
3
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
4
4
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Identifier, RefType
5
5
  from .....M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import ServiceDependency
@@ -24,7 +24,6 @@ class RoleBasedPortAssignment(ARObject):
24
24
  self.role = value
25
25
  return self
26
26
 
27
-
28
27
  class SwcServiceDependency(ServiceDependency):
29
28
  def __init__(self, parent: ARObject, short_name: str):
30
29
  super().__init__(parent, short_name)
@@ -46,12 +45,54 @@ class SwcServiceDependency(ServiceDependency):
46
45
 
47
46
  def createNvBlockNeeds(self, short_name: str) -> NvBlockNeeds:
48
47
  if (short_name not in self.elements):
49
- event = NvBlockNeeds(self, short_name)
50
- self.elements[short_name] = event
51
- return self.elements[short_name]
48
+ needs = NvBlockNeeds(self, short_name)
49
+ self.addElement(needs)
50
+ return self.getElement(short_name)
51
+
52
+ def createDiagnosticCommunicationManagerNeeds(self, short_name: str) -> DiagnosticCommunicationManagerNeeds:
53
+ if (short_name not in self.elements):
54
+ needs = DiagnosticCommunicationManagerNeeds(self, short_name)
55
+ self.addElement(needs)
56
+ return self.getElement(short_name)
57
+
58
+ def createDiagnosticRoutineNeeds(self, short_name: str) -> DiagnosticRoutineNeeds:
59
+ if (short_name not in self.elements):
60
+ needs = DiagnosticRoutineNeeds(self, short_name)
61
+ self.addElement(needs)
62
+ return self.getElement(short_name)
63
+
64
+ def createDiagnosticValueNeeds(self, short_name: str) -> DiagnosticValueNeeds:
65
+ if (short_name not in self.elements):
66
+ needs = DiagnosticValueNeeds(self, short_name)
67
+ self.addElement(needs)
68
+ return self.getElement(short_name)
69
+
70
+ def createDiagnosticEventNeeds(self, short_name: str) -> DiagnosticEventNeeds:
71
+ if (short_name not in self.elements):
72
+ needs = DiagnosticEventNeeds(self, short_name)
73
+ self.addElement(needs)
74
+ return self.getElement(short_name)
75
+
76
+ def createCryptoServiceNeeds(self, short_name: str) -> CryptoServiceNeeds:
77
+ if (short_name not in self.elements):
78
+ needs = CryptoServiceNeeds(self, short_name)
79
+ self.addElement(needs)
80
+ return self.getElement(short_name)
52
81
 
53
82
  def getNvBlockNeeds(self) -> List[NvBlockNeeds]:
54
83
  return sorted(filter(lambda c: isinstance(c, NvBlockNeeds), self.elements.values()), key=lambda e: e.short_name)
84
+
85
+ def getDiagnosticCommunicationManagerNeeds(self) -> List[DiagnosticCommunicationManagerNeeds]:
86
+ return sorted(filter(lambda c: isinstance(c, DiagnosticCommunicationManagerNeeds), self.elements.values()), key=lambda e: e.short_name)
87
+
88
+ def getDiagnosticRoutineNeeds(self) -> List[DiagnosticRoutineNeeds]:
89
+ return sorted(filter(lambda c: isinstance(c, DiagnosticRoutineNeeds), self.elements.values()), key=lambda e: e.short_name)
90
+
91
+ def getDiagnosticEventNeeds(self) -> List[DiagnosticEventNeeds]:
92
+ return sorted(filter(lambda c: isinstance(c, DiagnosticEventNeeds), self.elements.values()), key=lambda e: e.short_name)
93
+
94
+ def getCryptoServiceNeeds(self) -> List[CryptoServiceNeeds]:
95
+ return sorted(filter(lambda c: isinstance(c, CryptoServiceNeeds), self.elements.values()), key=lambda e: e.short_name)
55
96
 
56
97
  def getServiceNeeds(self) -> List[ServiceNeeds]:
57
98
  return sorted(filter(lambda c: isinstance(c, ServiceNeeds), self.elements.values()), key=lambda e: e.short_name)
@@ -1,11 +1,12 @@
1
1
  from typing import Dict, List
2
2
 
3
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AccessCount import AbstractAccessPoint
3
4
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption
4
5
  from .....M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
5
6
  from .....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ParameterDataPrototype, VariableDataPrototype
6
7
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
7
8
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PerInstanceMemory import PerInstanceMemory
8
- from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
9
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
9
10
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import SwcServiceDependency
10
11
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, RefType, ARBoolean
11
12
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.DataElements import ParameterAccess, VariableAccess
@@ -27,12 +28,8 @@ class RunnableEntityArgument(ARObject):
27
28
  def setSymbol(self, value):
28
29
  self.symbol = value
29
30
  return self
30
-
31
- class AsynchronousServerCallPoint(ServerCallPoint):
32
- def __init__(self, parent: ARObject, short_name: str):
33
- super().__init__(parent, short_name)
34
-
35
- class AsynchronousServerCallResultPoint(ServerCallPoint):
31
+
32
+ class AsynchronousServerCallResultPoint(AbstractAccessPoint):
36
33
  def __init__(self, parent: ARObject, short_name: str):
37
34
  super().__init__(parent, short_name)
38
35
 
@@ -43,7 +40,11 @@ class AsynchronousServerCallResultPoint(ServerCallPoint):
43
40
 
44
41
  def setAsynchronousServerCallPointRef(self, value):
45
42
  self.asynchronousServerCallPointRef = value
46
- return self
43
+ return self
44
+
45
+ class AsynchronousServerCallPoint(ServerCallPoint):
46
+ def __init__(self, parent: ARObject, short_name: str):
47
+ super().__init__(parent, short_name)
47
48
 
48
49
  class SynchronousServerCallPoint(ServerCallPoint):
49
50
  def __init__(self, parent: ARObject, short_name: str):
@@ -63,6 +64,7 @@ class RunnableEntity(ExecutableEntity):
63
64
  super().__init__(parent, short_name)
64
65
 
65
66
  self.arguments = [] # type: List[RunnableEntityArgument]
67
+ self.asynchronousServerCallResultPoints = [] # type: List[AsynchronousServerCallResultPoint]
66
68
  self.canBeInvokedConcurrently = None # type: ARBoolean
67
69
  self.dataReadAccesses = {} # type: Dict[str, VariableAccess]
68
70
  self.dataReceivePointByArguments = {} # type: Dict[str, VariableAccess]
@@ -92,7 +94,7 @@ class RunnableEntity(ExecutableEntity):
92
94
  def addArgument(self, value):
93
95
  self.arguments.append(value)
94
96
  return self
95
-
97
+
96
98
  def getCanBeInvokedConcurrently(self):
97
99
  return self.canBeInvokedConcurrently
98
100
 
@@ -148,29 +150,42 @@ class RunnableEntity(ExecutableEntity):
148
150
  def createParameterAccess(self, short_name: str) -> ParameterAccess:
149
151
  if (short_name not in self.elements):
150
152
  access = ParameterAccess(self, short_name)
151
- self.elements[short_name] = access
152
- return self.elements[short_name]
153
+ self.addElement(access)
154
+ return self.getElement(short_name)
153
155
 
154
156
  def createSynchronousServerCallPoint(self, short_name: str) -> SynchronousServerCallPoint:
155
157
  if (short_name not in self.serverCallPoints):
156
- server_call_point = SynchronousServerCallPoint(self, short_name)
157
- self.serverCallPoints[short_name] = server_call_point
158
- return self.serverCallPoints[short_name]
158
+ point = SynchronousServerCallPoint(self, short_name)
159
+ self.addElement(point)
160
+ return self.getElement(short_name)
161
+ #self.serverCallPoints[short_name] = server_call_point
162
+ #return self.serverCallPoints[short_name]
159
163
 
160
164
  def createAsynchronousServerCallPoint(self, short_name: str) -> AsynchronousServerCallPoint:
161
165
  if (short_name not in self.serverCallPoints):
162
- server_call_point = AsynchronousServerCallPoint(self, short_name)
163
- self.serverCallPoints[short_name] = server_call_point
164
- return self.serverCallPoints[short_name]
166
+ point = AsynchronousServerCallPoint(self, short_name)
167
+ self.addElement(point)
168
+ return self.getElement(short_name)
169
+ #self.serverCallPoints[short_name] = server_call_point
170
+ #return self.serverCallPoints[short_name]
171
+
172
+ def createAsynchronousServerCallResultPoint(self, short_name: str) -> AsynchronousServerCallResultPoint:
173
+ if (short_name not in self.serverCallPoints):
174
+ point = AsynchronousServerCallResultPoint(self, short_name)
175
+ self.addElement(point)
176
+ return self.getElement(short_name)
165
177
 
166
- def getSynchronousServerCallPoint(self) -> List[ServerCallPoint]:
167
- return filter(lambda o: isinstance(o, SynchronousServerCallPoint), self.getServerCallPoints())
178
+ def getSynchronousServerCallPoint(self) -> List[SynchronousServerCallPoint]:
179
+ return list(sorted(filter(lambda a: isinstance(a, SynchronousServerCallPoint), self.elements.values()), key= lambda o:o.getShortName()))
180
+
181
+ def getAsynchronousServerCallPoint(self) -> List[AsynchronousServerCallPoint]:
182
+ return list(sorted(filter(lambda a: isinstance(a, AsynchronousServerCallPoint), self.elements.values()), key= lambda o:o.getShortName()))
168
183
 
169
- def getAsynchronousServerCallPoint(self) -> List[ServerCallPoint]:
170
- return filter(lambda o: isinstance(o, AsynchronousServerCallPoint), self.getServerCallPoints())
184
+ def getAsynchronousServerCallResultPoints(self) -> List[AsynchronousServerCallResultPoint]:
185
+ return list(sorted(filter(lambda a: isinstance(a, AsynchronousServerCallResultPoint), self.elements.values()), key= lambda o:o.getShortName()))
171
186
 
172
187
  def getServerCallPoints(self) -> List[ServerCallPoint]:
173
- return sorted(self.serverCallPoints.values(), key=lambda v: v.short_name)
188
+ return list(sorted(filter(lambda a: isinstance(a, ServerCallPoint), self.elements.values()), key= lambda o:o.getShortName()))
174
189
 
175
190
  def createInternalTriggeringPoint(self, short_name: str) -> InternalTriggeringPoint:
176
191
  if (short_name not in self.elements):
@@ -245,38 +260,44 @@ class SwcInternalBehavior(InternalBehavior):
245
260
  def createOperationInvokedEvent(self, short_name: str) -> OperationInvokedEvent:
246
261
  if (short_name not in self.elements):
247
262
  event = OperationInvokedEvent(self, short_name)
248
- self.elements[short_name] = event
249
- return self.elements[short_name]
263
+ self.addElement(event)
264
+ return self.getElement(short_name)
250
265
 
251
266
  def createTimingEvent(self, short_name: str) -> TimingEvent:
252
267
  if (short_name not in self.elements):
253
268
  event = TimingEvent(self, short_name)
254
- self.elements[short_name] = event
255
- return self.elements[short_name]
269
+ self.addElement(event)
270
+ return self.getElement(short_name)
256
271
 
257
272
  def createInitEvent(self, short_name: str) -> InitEvent:
258
273
  if (short_name not in self.elements):
259
274
  event = InitEvent(self, short_name)
260
- self.elements[short_name] = event
261
- return self.elements[short_name]
275
+ self.addElement(event)
276
+ return self.getElement(short_name)
277
+
278
+ def createAsynchronousServerCallReturnsEvent(self, short_name: str) -> AsynchronousServerCallReturnsEvent:
279
+ if (short_name not in self.elements):
280
+ event = AsynchronousServerCallReturnsEvent(self, short_name)
281
+ self.addElement(event)
282
+ return self.getElement(short_name)
262
283
 
263
284
  def createDataReceivedEvent(self, short_name: str) -> DataReceivedEvent:
264
285
  if (short_name not in self.elements):
265
286
  event = DataReceivedEvent(self, short_name)
266
- self.elements[short_name] = event
267
- return self.elements[short_name]
287
+ self.addElement(event)
288
+ return self.getElement(short_name)
268
289
 
269
290
  def createSwcModeSwitchEvent(self, short_name: str) -> SwcModeSwitchEvent:
270
291
  if (short_name not in self.elements):
271
292
  event = SwcModeSwitchEvent(self, short_name)
272
- self.elements[short_name] = event
273
- return self.elements[short_name]
293
+ self.addElement(event)
294
+ return self.getElement(short_name)
274
295
 
275
296
  def createInternalTriggerOccurredEvent(self, short_name: str) -> InternalTriggerOccurredEvent:
276
297
  if (short_name not in self.elements):
277
298
  event = InternalTriggerOccurredEvent(self, short_name)
278
- self.elements[short_name] = event
279
- return self.elements[short_name]
299
+ self.addElement(event)
300
+ return self.getElement(short_name)
280
301
 
281
302
  def createSwcServiceDependency(self, short_name: str) -> SwcServiceDependency:
282
303
  if (short_name not in self.elements):