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.
- armodel/cli/arxml_dump_cli.py +2 -2
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +3 -3
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +41 -19
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +22 -11
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +26 -9
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +8 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +711 -27
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +0 -3
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +3 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +43 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +41 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -15
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +44 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +46 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +55 -34
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +170 -23
- armodel/models/M2/MSR/DataDictionary/AuxillaryObjects.py +4 -4
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +130 -37
- armodel/models/__init__.py +1 -0
- armodel/parser/abstract_arxml_parser.py +26 -13
- armodel/parser/arxml_parser.py +361 -216
- armodel/tests/test_armodel/models/test_datatype.py +4 -4
- armodel/tests/test_armodel/models/test_m2_msr.py +5 -5
- armodel/tests/test_armodel/parser/test_sw_components.py +1 -1
- armodel/tests/test_armodel/parser/test_system.py +0 -1
- armodel/writer/abstract_arxml_writer.py +9 -0
- armodel/writer/arxml_writer.py +358 -173
- {armodel-1.7.1.dist-info → armodel-1.7.2.dist-info}/METADATA +21 -1
- {armodel-1.7.1.dist-info → armodel-1.7.2.dist-info}/RECORD +34 -34
- {armodel-1.7.1.dist-info → armodel-1.7.2.dist-info}/LICENSE +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.2.dist-info}/WHEEL +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.2.dist-info}/entry_points.txt +0 -0
- {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
|
|
armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py
CHANGED
|
@@ -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.
|
|
66
|
-
self.
|
|
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:
|
|
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.
|
|
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.
|
|
111
|
+
self.providedComSpecs.append(com_spec)
|
|
112
112
|
|
|
113
113
|
def getProvidedComSpecs(self) -> List[PPortComSpec]:
|
|
114
|
-
return self.
|
|
114
|
+
return self.providedComSpecs
|
|
115
115
|
|
|
116
116
|
def getNonqueuedSenderComSpecs(self) -> List[NonqueuedSenderComSpec]:
|
|
117
|
-
return filter(lambda c: isinstance(c, NonqueuedSenderComSpec), self.
|
|
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.
|
|
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.
|
|
148
|
+
self.requiredComSpecs.append(com_spec)
|
|
149
149
|
|
|
150
150
|
def getRequiredComSpecs(self) -> List[RPortComSpec]:
|
|
151
|
-
return self.
|
|
151
|
+
return self.requiredComSpecs
|
|
152
152
|
|
|
153
153
|
def getClientComSpecs(self) -> List[ClientComSpec]:
|
|
154
|
-
return filter(lambda c: isinstance(c, ClientComSpec), self.
|
|
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.
|
|
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
|
-
|
|
221
|
-
|
|
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
|
-
|
|
227
|
-
|
|
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.
|
|
85
|
-
self.
|
|
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.
|
|
93
|
-
self.
|
|
105
|
+
self.dataTypeMaps = [] # type: List[DataTypeMap]
|
|
106
|
+
self.modeRequestTypeMaps = [] # type: List[ModeRequestTypeMap]
|
|
94
107
|
|
|
95
108
|
def addDataTypeMap(self, type_map: DataTypeMap):
|
|
96
|
-
self.
|
|
109
|
+
self.dataTypeMaps.append(type_map)
|
|
110
|
+
return self
|
|
97
111
|
|
|
98
112
|
def getDataTypeMaps(self) -> List[DataTypeMap]:
|
|
99
|
-
return self.
|
|
113
|
+
return self.dataTypeMaps
|
|
100
114
|
|
|
101
115
|
def addModeRequestTypeMap(self, map: ModeRequestTypeMap):
|
|
102
|
-
self.
|
|
116
|
+
self.modeRequestTypeMaps.append(map)
|
|
117
|
+
return self
|
|
103
118
|
|
|
104
119
|
def getModeRequestTypeMaps(self) -> List[ModeRequestTypeMap]:
|
|
105
|
-
return self.
|
|
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):
|
armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py
CHANGED
|
@@ -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
|
-
|
|
50
|
-
self.
|
|
51
|
-
return self.
|
|
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
|
|
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.
|
|
152
|
-
return self.
|
|
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
|
-
|
|
157
|
-
self.
|
|
158
|
-
return self.
|
|
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
|
-
|
|
163
|
-
self.
|
|
164
|
-
return self.
|
|
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[
|
|
167
|
-
return filter(lambda
|
|
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
|
|
170
|
-
return filter(lambda
|
|
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.
|
|
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.
|
|
249
|
-
return self.
|
|
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.
|
|
255
|
-
return self.
|
|
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.
|
|
261
|
-
return self.
|
|
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.
|
|
267
|
-
return self.
|
|
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.
|
|
273
|
-
return self.
|
|
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.
|
|
279
|
-
return self.
|
|
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):
|