armodel 1.7.2__py3-none-any.whl → 1.7.3__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 +1 -1
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +42 -19
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +104 -30
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +12 -16
- armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +70 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +12 -9
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +29 -22
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HardwareConfiguration.py +33 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HeapUsage.py +10 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/SoftwareContext.py +23 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/StackUsage.py +93 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +39 -5
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +26 -2
- armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcBswMapping.py +48 -6
- armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +5 -5
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +21 -1
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +12 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +8 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +196 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +11 -2
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +36 -21
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +10 -1
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +16 -1
- armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +34 -3
- armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +7 -0
- armodel/models/M2/MSR/DataDictionary/ServiceProcessTask.py +33 -0
- armodel/models/__init__.py +3 -0
- armodel/parser/abstract_arxml_parser.py +4 -14
- armodel/parser/arxml_parser.py +347 -180
- armodel/tests/test_armodel/models/test_ar_object.py +6 -2
- armodel/tests/test_armodel/models/test_port_interface.py +4 -4
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +48 -48
- armodel/writer/abstract_arxml_writer.py +1 -0
- armodel/writer/arxml_writer.py +351 -226
- {armodel-1.7.2.dist-info → armodel-1.7.3.dist-info}/METADATA +15 -2
- {armodel-1.7.2.dist-info → armodel-1.7.3.dist-info}/RECORD +40 -34
- {armodel-1.7.2.dist-info → armodel-1.7.3.dist-info}/LICENSE +0 -0
- {armodel-1.7.2.dist-info → armodel-1.7.3.dist-info}/WHEEL +0 -0
- {armodel-1.7.2.dist-info → armodel-1.7.3.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.2.dist-info → armodel-1.7.3.dist-info}/top_level.txt +0 -0
armodel/parser/arxml_parser.py
CHANGED
|
@@ -5,10 +5,11 @@ import os
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
+
|
|
8
9
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
9
10
|
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition
|
|
10
11
|
from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
|
|
11
|
-
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuMethod, Compu, CompuConst, CompuConstTextContent, CompuNominatorDenominator, CompuRationalCoeffs, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
|
|
12
|
+
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent, CompuMethod, Compu, CompuConst, CompuConstTextContent, CompuNominatorDenominator, CompuRationalCoeffs, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
|
|
12
13
|
from ..models.M2.MSR.AsamHdo.SpecialData import Sdg, Sd
|
|
13
14
|
from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
|
|
14
15
|
from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, SwPointerTargetProps
|
|
@@ -18,6 +19,7 @@ from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroupConte
|
|
|
18
19
|
from ..models.M2.MSR.DataDictionary.DataDefProperties import ValueList
|
|
19
20
|
from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroup
|
|
20
21
|
from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxisSet
|
|
22
|
+
from ..models.M2.MSR.DataDictionary.ServiceProcessTask import SwServiceArg
|
|
21
23
|
from ..models.M2.MSR.Documentation.Annotation import Annotation, GeneralAnnotation
|
|
22
24
|
from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
|
|
23
25
|
from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
|
|
@@ -25,15 +27,18 @@ from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName,
|
|
|
25
27
|
from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText, MultilanguageLongName
|
|
26
28
|
|
|
27
29
|
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
28
|
-
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalBehavior, BswModuleEntity, BswScheduleEvent, BswModeSenderPolicy
|
|
30
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswDataReceivedEvent, BswInternalBehavior, BswInternalTriggerOccurredEvent, BswInterruptEntity, BswModeSwitchEvent, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswModeSenderPolicy, BswTimingEvent
|
|
31
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
|
|
29
32
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
|
|
30
33
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
|
|
31
34
|
from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
|
|
32
35
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
|
|
36
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
|
|
33
37
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import ImplementationProps, Code
|
|
34
38
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroup, ModeRequestTypeMap, ModeDeclarationGroupPrototype
|
|
35
39
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
|
|
36
40
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import MemorySection
|
|
41
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
|
|
37
42
|
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
|
|
38
43
|
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
|
|
39
44
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceAlgorithm, DiagEventDebounceMonitorInternal, DiagnosticEventNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
|
|
@@ -64,7 +69,7 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import Assembl
|
|
|
64
69
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
|
|
65
70
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
66
71
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
67
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, SenderReceiverInterface
|
|
72
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, DataPrototypeMapping, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, PortInterfaceMappingSet, SenderReceiverInterface, VariableAndParameterInterfaceMapping
|
|
68
73
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
|
|
69
74
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
70
75
|
|
|
@@ -114,7 +119,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
114
119
|
return sdg
|
|
115
120
|
|
|
116
121
|
def readSdgs(self, element: ET.Element, admin_data: AdminData):
|
|
117
|
-
for child_element in self.findall(element, "
|
|
122
|
+
for child_element in self.findall(element, "SDGS/SDG"):
|
|
118
123
|
admin_data.addSdg(self.getSdg(child_element))
|
|
119
124
|
|
|
120
125
|
def getAdminData(self, element: ET.Element, key: str) -> AdminData:
|
|
@@ -146,7 +151,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
146
151
|
identifiable.setAdminData(self.getAdminData(element, "ADMIN-DATA"))
|
|
147
152
|
|
|
148
153
|
def readLLongName(self, element: ET.Element, long_name: MultilanguageLongName):
|
|
149
|
-
for child_element in self.findall(element, "
|
|
154
|
+
for child_element in self.findall(element, "L-4"):
|
|
150
155
|
l4 = LLongName()
|
|
151
156
|
self.readARObjectAttributes(child_element, l4)
|
|
152
157
|
l4.value = child_element.text
|
|
@@ -156,7 +161,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
156
161
|
|
|
157
162
|
def getMultilanguageLongName(self, element: ET.Element, key: str) -> MultilanguageLongName:
|
|
158
163
|
long_name = None
|
|
159
|
-
child_element = self.find(element, "
|
|
164
|
+
child_element = self.find(element, "%s" % key)
|
|
160
165
|
if child_element is not None:
|
|
161
166
|
long_name = MultilanguageLongName()
|
|
162
167
|
self.readARObjectAttributes(child_element, long_name)
|
|
@@ -164,7 +169,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
164
169
|
return long_name
|
|
165
170
|
|
|
166
171
|
def readLOverviewParagraph(self, element: ET.Element, paragraph: MultiLanguageOverviewParagraph):
|
|
167
|
-
for child_element in self.findall(element, "
|
|
172
|
+
for child_element in self.findall(element, "L-2"):
|
|
168
173
|
l2 = LOverviewParagraph()
|
|
169
174
|
self.readARObjectAttributes(child_element, l2)
|
|
170
175
|
l2.value = child_element.text
|
|
@@ -174,7 +179,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
174
179
|
|
|
175
180
|
def getMultiLanguageOverviewParagraph(self, element: ET.Element, key: str) -> MultiLanguageOverviewParagraph:
|
|
176
181
|
paragraph = None
|
|
177
|
-
child_element =
|
|
182
|
+
child_element = self.find(element, key)
|
|
178
183
|
if child_element is not None:
|
|
179
184
|
paragraph = MultiLanguageOverviewParagraph()
|
|
180
185
|
self.readARObjectAttributes(child_element, paragraph)
|
|
@@ -205,6 +210,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
205
210
|
ref = None
|
|
206
211
|
if (child_element is not None):
|
|
207
212
|
ref = AutosarVariableRef()
|
|
213
|
+
#self.readARObjectAttributes(child_element, ref)
|
|
208
214
|
ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF")))
|
|
209
215
|
return ref
|
|
210
216
|
|
|
@@ -217,7 +223,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
217
223
|
return ref
|
|
218
224
|
|
|
219
225
|
def _readVariableAccesses(self, element: ET.Element, parent: RunnableEntity, key: str):
|
|
220
|
-
for child_element in
|
|
226
|
+
for child_element in self.findall(element, "%s/VARIABLE-ACCESS" % key):
|
|
221
227
|
short_name = self.getShortName(child_element)
|
|
222
228
|
|
|
223
229
|
self.logger.debug("readVariableAccesses %s" % short_name)
|
|
@@ -244,7 +250,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
244
250
|
variable_access = parent.createReadLocalVariable(short_name)
|
|
245
251
|
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element))
|
|
246
252
|
else:
|
|
247
|
-
self.
|
|
253
|
+
self.notImplemented("Unsupported Variable Accesss <%s>" % key)
|
|
248
254
|
|
|
249
255
|
self.readIdentifiable(child_element, variable_access)
|
|
250
256
|
|
|
@@ -286,71 +292,45 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
286
292
|
.setSwAddrMethodRef(self.getChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF"))
|
|
287
293
|
|
|
288
294
|
def readBswModuleEntityManagedModeGroup(self, element: ET.Element, entity: BswModuleEntity):
|
|
289
|
-
for child_element in self.findall(element, "
|
|
295
|
+
for child_element in self.findall(element, "sMANAGED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL"):
|
|
290
296
|
ref_type = self.getChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF")
|
|
291
297
|
if ref_type is not None:
|
|
292
298
|
entity.addManagedModeGroupRef(ref_type)
|
|
293
299
|
|
|
294
|
-
|
|
295
|
-
self.readExecutableEntity(element, entity)
|
|
296
|
-
entity.setImplementedEntryRef(self.getChildElementRefType(entity.getShortName(), element, "IMPLEMENTED-ENTRY-REF"))
|
|
297
|
-
self.readBswModuleEntityManagedModeGroup(element, entity)
|
|
298
|
-
|
|
299
|
-
def readBswCalledEntity(self, element: ET.Element, parent: BswInternalBehavior):
|
|
300
|
-
for child_element in element.findall("./xmlns:ENTITYS/xmlns:BSW-CALLED-ENTITY", self.nsmap):
|
|
301
|
-
short_name = self.getShortName(child_element)
|
|
302
|
-
self.logger.debug("readBswCalledEntity %s" % short_name)
|
|
303
|
-
entity = parent.createBswCalledEntity(short_name)
|
|
304
|
-
|
|
305
|
-
self.readBswModuleEntity(child_element, entity)
|
|
306
|
-
|
|
307
|
-
def readBswSchedulableEntity(self, element: ET.Element, parent: BswInternalBehavior):
|
|
308
|
-
for child_element in element.findall("./xmlns:ENTITYS/xmlns:BSW-SCHEDULABLE-ENTITY", self.nsmap):
|
|
309
|
-
short_name = self.getShortName(child_element)
|
|
310
|
-
self.logger.debug("readBswSchedulableEntity %s" % short_name)
|
|
311
|
-
entity = parent.createBswSchedulableEntity(short_name)
|
|
312
|
-
self.readBswModuleEntity(child_element, entity)
|
|
300
|
+
|
|
313
301
|
|
|
314
302
|
def readBswEvent(self, element: ET.Element, event: BswScheduleEvent):
|
|
315
|
-
event.startsOnEventRef = self.
|
|
303
|
+
event.startsOnEventRef = self.getChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF")
|
|
316
304
|
|
|
317
305
|
def readBswScheduleEvent(self, element, event: BswScheduleEvent):
|
|
318
306
|
self.readBswEvent(element, event)
|
|
319
307
|
|
|
320
|
-
def readBswModeSwitchEvent(self, element: ET.Element,
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
self.logger.
|
|
332
|
-
|
|
333
|
-
event.
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
def readBswInternalTriggerOccurredEvent(self, element: ET.Element, parent: BswInternalBehavior):
|
|
347
|
-
for child_element in self.findall(element, "EVENTS/BSW-INTERNAL-TRIGGER-OCCURRED-EVENT"):
|
|
348
|
-
short_name = self.getShortName(child_element)
|
|
349
|
-
self.logger.debug("readBswInternalTriggerOccurredEvent %s" % short_name)
|
|
350
|
-
event = parent.createBswInternalTriggerOccurredEvent(short_name)
|
|
351
|
-
event.eventSourceRef = self.getChildElementRefType(parent.getShortName(), child_element, "EVENT-SOURCE-REF")
|
|
352
|
-
# Read the Inherit BswScheduleEvent
|
|
353
|
-
self.readBswScheduleEvent(child_element, event)
|
|
308
|
+
def readBswModeSwitchEvent(self, element: ET.Element, event: BswModeSwitchEvent):
|
|
309
|
+
self.logger.debug("read BswModeSwitchEvent %s" % event.getShortName())
|
|
310
|
+
# Read the Inherit BswScheduleEvent
|
|
311
|
+
self.readBswScheduleEvent(element, event)
|
|
312
|
+
|
|
313
|
+
def readBswTimingEvent(self, element: ET.Element, event: BswTimingEvent):
|
|
314
|
+
self.logger.debug("read BswTimingEvent %s" % event.getShortName())
|
|
315
|
+
# Read the Inherit BswScheduleEvent
|
|
316
|
+
self.readBswScheduleEvent(element, event)
|
|
317
|
+
event.setPeriod(self.getChildElementOptionalTimeValue(element, "PERIOD"))
|
|
318
|
+
if event.getPeriod() is None:
|
|
319
|
+
self.logger.warning("Period of BswTimingEvent <%s> is invalid." % event.getShortName())
|
|
320
|
+
else:
|
|
321
|
+
self.logger.debug(" Period: <%f, %s>" % (event.getPeriod().getValue(), event.getPeriod().getText()))
|
|
322
|
+
|
|
323
|
+
def readBswDataReceivedEvent(self, element: ET.Element, event: BswDataReceivedEvent):
|
|
324
|
+
self.logger.debug("read BswTimingEvent %s" % event.getShortName())
|
|
325
|
+
# Read the Inherit BswScheduleEvent
|
|
326
|
+
self.readBswScheduleEvent(element, event)
|
|
327
|
+
event.setDataRef(self.getChildElementOptionalRefType(element, "DATA-REF"))
|
|
328
|
+
|
|
329
|
+
def readBswInternalTriggerOccurredEvent(self, element: ET.Element, event: BswInternalTriggerOccurredEvent):
|
|
330
|
+
self.logger.debug("read BswTimingEvent %s" % event.getShortName())
|
|
331
|
+
# Read the Inherit BswScheduleEvent
|
|
332
|
+
self.readBswScheduleEvent(element, event)
|
|
333
|
+
event.setEventSourceRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
|
|
354
334
|
|
|
355
335
|
def getBswModeSenderPolicy(self, element: ET.Element) -> BswModeSenderPolicy:
|
|
356
336
|
policy = BswModeSenderPolicy()
|
|
@@ -367,13 +347,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
367
347
|
self._raiseError("Unsupported ModeSenderPolicy type <%s>." % tag_name)
|
|
368
348
|
|
|
369
349
|
def readDataTypeMappingRefs(self, element: ET.Element, behavior: InternalBehavior):
|
|
370
|
-
child_element =
|
|
350
|
+
child_element = self.find(element, "DATA-TYPE-MAPPING-REFS")
|
|
371
351
|
if child_element is not None:
|
|
372
|
-
for ref in self.getChildElementRefTypeList(child_element, "
|
|
352
|
+
for ref in self.getChildElementRefTypeList(child_element, "DATA-TYPE-MAPPING-REF"):
|
|
373
353
|
behavior.addDataTypeMappingRef(ref)
|
|
374
354
|
|
|
375
355
|
def readInternalBehaviorConstantMemories(self, element: ET.Element, behavior: InternalBehavior):
|
|
376
|
-
for child_element in
|
|
356
|
+
for child_element in self.findall(element, "CONSTANT-MEMORYS/PARAMETER-DATA-PROTOTYPE"):
|
|
377
357
|
short_name = self.getShortName(child_element)
|
|
378
358
|
prototype = behavior.createConstantMemory(short_name)
|
|
379
359
|
self.readParameterDataPrototype(child_element, prototype)
|
|
@@ -381,7 +361,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
381
361
|
def readInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
|
|
382
362
|
self.readIdentifiable(element, behavior)
|
|
383
363
|
self.readInternalBehaviorConstantMemories(element, behavior)
|
|
384
|
-
for child_element in
|
|
364
|
+
for child_element in self.findall(element, "EXCLUSIVE-AREAS/EXCLUSIVE-AREA"):
|
|
385
365
|
short_name = self.getShortName(child_element)
|
|
386
366
|
behavior.createExclusiveArea(short_name)
|
|
387
367
|
self.readDataTypeMappingRefs(element, behavior)
|
|
@@ -423,7 +403,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
423
403
|
self._raiseError("Unsupported assigned data <%s>" % tag_name)
|
|
424
404
|
|
|
425
405
|
def readSwcServiceDependencyAssignedPorts(self, element: ET.Element, dependency: SwcServiceDependency):
|
|
426
|
-
for child_element in
|
|
406
|
+
for child_element in self.findall(element, "ASSIGNED-PORTS/*"):
|
|
427
407
|
tag_name = self.getTagName(child_element.tag)
|
|
428
408
|
if (tag_name == "ROLE-BASED-PORT-ASSIGNMENT"):
|
|
429
409
|
dependency.AddAssignedPort(self.getRoleBasedPortAssignment(child_element))
|
|
@@ -434,6 +414,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
434
414
|
short_name = self.getShortName(element)
|
|
435
415
|
needs = parent.createNvBlockNeeds(short_name)
|
|
436
416
|
self.logger.debug("read NvBlockNeeds %s" % short_name)
|
|
417
|
+
self.readIdentifiable(element, needs)
|
|
437
418
|
needs.setCalcRamBlockCrc(self.getChildElementOptionalBooleanValue(element, "CALC-RAM-BLOCK-CRC")) \
|
|
438
419
|
.setCheckStaticBlockId(self.getChildElementOptionalBooleanValue(element, "CHECK-STATIC-BLOCK-ID")) \
|
|
439
420
|
.setNDataSets(self.getChildElementOptionalNumericalValue(element, "N-DATA-SETS")) \
|
|
@@ -457,12 +438,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
457
438
|
short_name = self.getShortName(element)
|
|
458
439
|
needs = parent.createDiagnosticCommunicationManagerNeeds(short_name)
|
|
459
440
|
self.logger.debug("read DiagnosticCommunicationManagerNeeds %s" % short_name)
|
|
441
|
+
self.readIdentifiable(element, needs)
|
|
460
442
|
needs.setServiceRequestCallbackType(self.getChildElementOptionalLiteral(element, "SERVICE-REQUEST-CALLBACK-TYPE"))
|
|
461
443
|
|
|
462
444
|
def readDiagnosticRoutineNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
463
445
|
short_name = self.getShortName(element)
|
|
464
446
|
needs = parent.createDiagnosticRoutineNeeds(short_name)
|
|
465
447
|
self.logger.debug("read DiagnosticRoutineNeeds %s" % short_name)
|
|
448
|
+
self.readIdentifiable(element, needs)
|
|
466
449
|
needs.setDiagRoutineType(self.getChildElementOptionalLiteral(element, "DIAG-ROUTINE-TYPE")) \
|
|
467
450
|
.setRidNumber(self.getChildElementOptionalIntegerValue(element, "RID-NUMBER"))
|
|
468
451
|
|
|
@@ -470,6 +453,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
470
453
|
short_name = self.getShortName(element)
|
|
471
454
|
needs = parent.createDiagnosticValueNeeds(short_name)
|
|
472
455
|
self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
|
|
456
|
+
self.readIdentifiable(element, needs)
|
|
473
457
|
needs.setDataLength(self.getChildElementOptionalPositiveInteger(element, "DATA-LENGTH")) \
|
|
474
458
|
.setDiagnosticValueAccess(self.getChildElementOptionalLiteral(element, "DIAGNOSTIC-VALUE-ACCESS")) \
|
|
475
459
|
.setDidNumber(self.getChildElementOptionalIntegerValue(element, "DID-NUMBER")) \
|
|
@@ -492,7 +476,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
492
476
|
short_name = self.getShortName(element)
|
|
493
477
|
needs = parent.createDiagnosticEventNeeds(short_name)
|
|
494
478
|
self.logger.debug("read DiagnosticEventNeeds %s" % short_name)
|
|
495
|
-
|
|
479
|
+
self.readIdentifiable(element, needs)
|
|
496
480
|
self.readDiagEventDebounceAlgorithm(element, needs)
|
|
497
481
|
needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND")) \
|
|
498
482
|
.setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
|
|
@@ -501,10 +485,17 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
501
485
|
short_name = self.getShortName(element)
|
|
502
486
|
needs = parent.createCryptoServiceNeeds(short_name)
|
|
503
487
|
self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
|
|
488
|
+
self.readIdentifiable(element, needs)
|
|
504
489
|
needs.setMaximumKeyLength(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-KEY-LENGTH"))
|
|
505
490
|
|
|
491
|
+
def readEcuStateMgrUserNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
492
|
+
short_name = self.getShortName(element)
|
|
493
|
+
needs = parent.createEcuStateMgrUserNeeds(short_name)
|
|
494
|
+
self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
|
|
495
|
+
self.readIdentifiable(element, needs)
|
|
496
|
+
|
|
506
497
|
def readSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
507
|
-
for child_element in
|
|
498
|
+
for child_element in self.findall(element, "SERVICE-NEEDS/*"):
|
|
508
499
|
tag_name = self.getTagName(child_element.tag)
|
|
509
500
|
if tag_name == "NV-BLOCK-NEEDS":
|
|
510
501
|
self.readNvBlockNeeds(child_element, parent)
|
|
@@ -518,38 +509,40 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
518
509
|
self.readDiagnosticEventNeeds(child_element, parent)
|
|
519
510
|
elif tag_name == "CRYPTO-SERVICE-NEEDS":
|
|
520
511
|
self.readCryptoServiceNeeds(child_element, parent)
|
|
512
|
+
elif tag_name == "ECU-STATE-MGR-USER-NEEDS":
|
|
513
|
+
self.readEcuStateMgrUserNeeds(child_element, parent)
|
|
521
514
|
else:
|
|
522
515
|
self.notImplemented("Unsupported service needs <%s>" % tag_name)
|
|
523
516
|
|
|
524
517
|
def readSwcServiceDependency(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
525
518
|
short_name = self.getShortName(element)
|
|
526
519
|
dependency = parent.createSwcServiceDependency(short_name)
|
|
527
|
-
self.logger.debug("
|
|
520
|
+
self.logger.debug("read SwcServiceDependency %s" % short_name)
|
|
528
521
|
self.readServiceDependency(element, dependency)
|
|
529
522
|
self.readSwcServiceDependencyAssignedData(element, dependency)
|
|
530
523
|
self.readSwcServiceDependencyAssignedPorts(element, dependency)
|
|
531
524
|
self.readSwcServiceDependencyServiceNeeds(element, dependency)
|
|
532
525
|
|
|
533
526
|
def readSwcInternalBehaviorServiceDependencies(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
534
|
-
for child_element in
|
|
527
|
+
for child_element in self.findall(element, "SERVICE-DEPENDENCYS/*"):
|
|
535
528
|
tag_name = self.getTagName(child_element.tag)
|
|
536
529
|
if (tag_name == "SWC-SERVICE-DEPENDENCY"):
|
|
537
530
|
self.readSwcServiceDependency(child_element, parent)
|
|
538
531
|
else:
|
|
539
|
-
self.
|
|
532
|
+
self.notImplemented("Unsupported Service Dependencies <%s>" % tag_name)
|
|
540
533
|
|
|
541
534
|
def getIncludedDataTypeSets(self, element: ET.Element) -> List[IncludedDataTypeSet]:
|
|
542
535
|
include_data_type_sets = []
|
|
543
|
-
for child_element in self.findall(element, "
|
|
536
|
+
for child_element in self.findall(element, "INCLUDED-DATA-TYPE-SETS/INCLUDED-DATA-TYPE-SET"):
|
|
544
537
|
include_data_type_set = IncludedDataTypeSet()
|
|
545
538
|
self.readARObjectAttributes(child_element, include_data_type_set)
|
|
546
|
-
for ref_type in self.getChildElementRefTypeList(child_element, "
|
|
539
|
+
for ref_type in self.getChildElementRefTypeList(child_element, "DATA-TYPE-REFS/DATA-TYPE-REF"):
|
|
547
540
|
include_data_type_set.addDataTypeRef(ref_type)
|
|
548
541
|
include_data_type_sets.append(include_data_type_set)
|
|
549
542
|
return include_data_type_sets
|
|
550
543
|
|
|
551
544
|
def readSwcInternalBehavior(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
552
|
-
for child_element in self.findall(element, "
|
|
545
|
+
for child_element in self.findall(element, "INTERNAL-BEHAVIORS/SWC-INTERNAL-BEHAVIOR"):
|
|
553
546
|
short_name = self.getShortName(child_element)
|
|
554
547
|
behavior = parent.createSwcInternalBehavior(short_name)
|
|
555
548
|
self.logger.debug("readSwcInternalBehavior %s" % behavior.full_name)
|
|
@@ -564,35 +557,83 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
564
557
|
self.readExplicitInterRunnableVariables(child_element, behavior)
|
|
565
558
|
for data_type_set in self.getIncludedDataTypeSets(child_element):
|
|
566
559
|
behavior.addIncludedDataTypeSet(data_type_set)
|
|
567
|
-
behavior.
|
|
560
|
+
behavior.handleTerminationAndRestart = self.getChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART")
|
|
568
561
|
self.readPerInstanceMemories(child_element, behavior)
|
|
569
562
|
self.readPerInstanceParameters(child_element, behavior)
|
|
570
563
|
self.readPortAPIOptions(child_element, behavior)
|
|
571
|
-
behavior.
|
|
564
|
+
behavior.setSupportsMultipleInstantiation(self.getChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION"))
|
|
572
565
|
|
|
573
566
|
def getIncludedModeDeclarationGroupSets(self, element: ET.Element) -> List[IncludedModeDeclarationGroupSet]:
|
|
574
567
|
group_sets = []
|
|
575
568
|
for child_element in self.findall(element, "INCLUDED-MODE-DECLARATION-GROUP-SETS/INCLUDED-MODE-DECLARATION-GROUP-SET"):
|
|
576
569
|
group_set = IncludedModeDeclarationGroupSet()
|
|
577
|
-
for ref_type in self.getChildElementRefTypeList(child_element, "
|
|
570
|
+
for ref_type in self.getChildElementRefTypeList(child_element, "MODE-DECLARATION-GROUP-REFS/MODE-DECLARATION-GROUP-REF"):
|
|
578
571
|
group_set.addModeDeclarationGroupRef(ref_type)
|
|
579
572
|
group_sets.append(group_set)
|
|
580
573
|
return group_sets
|
|
574
|
+
|
|
575
|
+
def readBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
|
|
576
|
+
self.readExecutableEntity(element, entity)
|
|
577
|
+
entity.setImplementedEntryRef(self.getChildElementRefType(entity.getShortName(), element, "IMPLEMENTED-ENTRY-REF"))
|
|
578
|
+
self.readBswModuleEntityManagedModeGroup(element, entity)
|
|
579
|
+
|
|
580
|
+
def readBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
|
|
581
|
+
self.logger.debug("read BswCalledEntity %s" % entity.getShortName())
|
|
582
|
+
self.readBswModuleEntity(element, entity)
|
|
583
|
+
|
|
584
|
+
def readBswSchedulableEntity(self, element: ET.Element, entity: BswSchedulableEntity):
|
|
585
|
+
self.logger.debug("read BswSchedulableEntity %s" % entity.getShortName())
|
|
586
|
+
self.readBswModuleEntity(element, entity)
|
|
587
|
+
|
|
588
|
+
def readBswInterruptEntity(self, element: ET.Element, entity: BswInterruptEntity):
|
|
589
|
+
self.logger.debug("read BswSchedulableEntity %s" % entity.getShortName())
|
|
590
|
+
self.readBswModuleEntity(element, entity)
|
|
591
|
+
entity.setInterruptCategory(self.getChildElementOptionalLiteral(element, "INTERRUPT-CATEGORY")) \
|
|
592
|
+
.setInterruptSource(self.getChildElementOptionalLiteral(element, "INTERRUPT-SOURCE"))
|
|
593
|
+
|
|
594
|
+
def readBswInternalBehaviorEntities(self, element: ET.Element, behavior: BswInternalBehavior):
|
|
595
|
+
for child_element in self.findall(element, "ENTITYS/*"):
|
|
596
|
+
tag_name = self.getTagName(child_element)
|
|
597
|
+
if tag_name == "BSW-CALLED-ENTITY":
|
|
598
|
+
entity = behavior.createBswCalledEntity(self.getShortName(child_element))
|
|
599
|
+
self.readBswCalledEntity(child_element, entity)
|
|
600
|
+
elif tag_name == "BSW-SCHEDULABLE-ENTITY":
|
|
601
|
+
entity = behavior.createBswSchedulableEntity(self.getShortName(child_element))
|
|
602
|
+
self.readBswSchedulableEntity(child_element, entity)
|
|
603
|
+
elif tag_name == "BSW-INTERRUPT-ENTITY":
|
|
604
|
+
entity = behavior.createBswInterruptEntity(self.getShortName(child_element))
|
|
605
|
+
self.readBswInterruptEntity(child_element, entity)
|
|
606
|
+
else:
|
|
607
|
+
self.notImplemented("Unsupported BswModuleEntity <%s>" % tag_name)
|
|
608
|
+
|
|
609
|
+
def readBswInternalBehaviorEvents(self, element: ET.Element, behavior: BswInternalBehavior):
|
|
610
|
+
for child_element in self.findall(element, "EVENTS/*"):
|
|
611
|
+
tag_name = self.getTagName(child_element)
|
|
612
|
+
if tag_name == "BSW-MODE-SWITCH-EVENT":
|
|
613
|
+
event = behavior.createBswModeSwitchEvent(self.getShortName(child_element))
|
|
614
|
+
self.readBswModeSwitchEvent(child_element, event)
|
|
615
|
+
elif tag_name == "BSW-TIMING-EVENT":
|
|
616
|
+
event = behavior.createBswTimingEvent(self.getShortName(child_element))
|
|
617
|
+
self.readBswTimingEvent(child_element, event)
|
|
618
|
+
elif tag_name == "BSW-DATA-RECEIVED-EVENT":
|
|
619
|
+
event = behavior.createBswDataReceivedEvent(self.getShortName(child_element))
|
|
620
|
+
self.readBswDataReceivedEvent(child_element, event)
|
|
621
|
+
elif tag_name == "BSW-INTERNAL-TRIGGER-OCCURRED-EVENT":
|
|
622
|
+
event = behavior.createBswInternalTriggerOccurredEvent(self.getShortName(child_element))
|
|
623
|
+
self.readBswInternalTriggerOccurredEvent(child_element, event)
|
|
624
|
+
else:
|
|
625
|
+
self.notImplemented("Unsupported BswModuleEntity <%s>" % tag_name)
|
|
581
626
|
|
|
582
627
|
def readBswInternalBehavior(self, element: ET.Element, parent: BswModuleDescription):
|
|
583
|
-
for child_element in
|
|
628
|
+
for child_element in self.findall(element, "INTERNAL-BEHAVIORS/BSW-INTERNAL-BEHAVIOR"):
|
|
584
629
|
short_name = self.getShortName(child_element)
|
|
585
630
|
behavior = parent.createBswInternalBehavior(short_name)
|
|
586
|
-
self.logger.debug("
|
|
631
|
+
self.logger.debug("read BswInternalBehavior %s" % behavior.full_name)
|
|
587
632
|
|
|
588
633
|
# read the internal behavior
|
|
589
634
|
self.readInternalBehavior(child_element, behavior)
|
|
590
|
-
self.
|
|
591
|
-
self.
|
|
592
|
-
self.readBswModeSwitchEvent(child_element, behavior)
|
|
593
|
-
self.readBswTimingEvent(child_element, behavior)
|
|
594
|
-
self.readBswDataReceivedEvent(child_element, behavior)
|
|
595
|
-
self.readBswInternalTriggerOccurredEvent(child_element, behavior)
|
|
635
|
+
self.readBswInternalBehaviorEntities(child_element, behavior)
|
|
636
|
+
self.readBswInternalBehaviorEvents(child_element, behavior)
|
|
596
637
|
self.readBswInternalBehaviorModeSenderPolicy(child_element, behavior)
|
|
597
638
|
for group_set in self.getIncludedModeDeclarationGroupSets(child_element):
|
|
598
639
|
behavior.addIncludedModeDeclarationGroupSet(group_set)
|
|
@@ -600,27 +641,42 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
600
641
|
def readBswModuleDescription(self, element: ET.Element, parent: ARPackage):
|
|
601
642
|
short_name = self.getShortName(element)
|
|
602
643
|
bsw_module_description = parent.createBswModuleDescription(short_name)
|
|
603
|
-
bsw_module_description.
|
|
644
|
+
bsw_module_description.moduleId = self.getChildElementOptionalNumericalValue(element, "MODULE-ID")
|
|
604
645
|
|
|
605
|
-
self.logger.debug("
|
|
646
|
+
self.logger.debug("read BswModuleDescription %s" % bsw_module_description.full_name)
|
|
606
647
|
|
|
607
648
|
self.readBswModuleDescriptionImplementedEntry(element, bsw_module_description)
|
|
608
649
|
self.readProvidedModeGroup(element, bsw_module_description)
|
|
609
650
|
self.readRequiredModeGroup(element, bsw_module_description)
|
|
610
651
|
self.readBswInternalBehavior(element, bsw_module_description)
|
|
611
652
|
|
|
653
|
+
def readSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
|
|
654
|
+
self.logger.debug("Read SwServiceArg <%s>" % arg.getShortName())
|
|
655
|
+
arg.setDirection(self.getChildElementOptionalLiteral(element, "DIRECTION")) \
|
|
656
|
+
.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
657
|
+
|
|
658
|
+
def readBswModuleEntryArguments(self, element: ET.Element, entry: BswModuleEntry):
|
|
659
|
+
for child_element in self.findall(element, "ARGUMENTS/*"):
|
|
660
|
+
tag_name = self.getTagName(child_element)
|
|
661
|
+
if tag_name == "SW-SERVICE-ARG":
|
|
662
|
+
arg = entry.createArgument(self.getShortName(child_element))
|
|
663
|
+
self.readSwServiceArg(child_element, arg)
|
|
664
|
+
else:
|
|
665
|
+
self.notImplemented("Unsupported Argument <%s>" % tag_name)
|
|
666
|
+
|
|
612
667
|
def readBswModuleEntry(self, element: ET.Element, parent: ARPackage):
|
|
613
668
|
short_name = self.getShortName(element)
|
|
614
669
|
entry = parent.createBswModuleEntry(short_name)
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
entry.
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
670
|
+
self.readIdentifiable(element, entry)
|
|
671
|
+
self.readBswModuleEntryArguments(element, entry)
|
|
672
|
+
entry.setIsReentrant(self.getChildElementOptionalBooleanValue(element, "IS-REENTRANT")) \
|
|
673
|
+
.setIsSynchronous(self.getChildElementOptionalBooleanValue(element, "IS-SYNCHRONOUS")) \
|
|
674
|
+
.setServiceId(self.getChildElementOptionalNumericalValue(element, "SERVICE-ID")) \
|
|
675
|
+
.setCallType(self.getChildElementOptionalLiteral(element, "CALL-TYPE")) \
|
|
676
|
+
.setExecutionContext(self.getChildElementOptionalLiteral(element, "EXECUTION-CONTEXT")) \
|
|
677
|
+
.setSwServiceImplPolicy(self.getChildElementOptionalLiteral(element, "SW-SERVICE-IMPL-POLICY"))
|
|
621
678
|
|
|
622
|
-
|
|
623
|
-
self.logger.debug("readBswModuleEntry %s" % entry.getShortName())
|
|
679
|
+
self.logger.debug("read BswModuleEntry %s" % entry.getShortName())
|
|
624
680
|
|
|
625
681
|
def readEngineeringObject(self, element: ET.Element, engineering_obj: EngineeringObject):
|
|
626
682
|
self.readARObjectAttributes(element, engineering_obj)
|
|
@@ -634,7 +690,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
634
690
|
return obj
|
|
635
691
|
|
|
636
692
|
def readArtifactDescriptor(self, element: ET.Element, code_desc: Code):
|
|
637
|
-
for child_element in
|
|
693
|
+
for child_element in self.findall(element, "ARTIFACT-DESCRIPTORS/*"):
|
|
638
694
|
tag_name = self.getTagName(child_element.tag)
|
|
639
695
|
if tag_name == "AUTOSAR-ENGINEERING-OBJECT":
|
|
640
696
|
code_desc.addArtifactDescriptor(self.getAutosarEngineeringObject(child_element))
|
|
@@ -642,7 +698,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
642
698
|
self._raiseError("Unsupported Artifact Descriptor <%s>" % tag_name)
|
|
643
699
|
|
|
644
700
|
def readCodeDescriptor(self, element: ET.Element, impl: Implementation):
|
|
645
|
-
for child_element in
|
|
701
|
+
for child_element in self.findall(element, "CODE-DESCRIPTORS/CODE"):
|
|
646
702
|
short_name = self.getShortName(child_element)
|
|
647
703
|
self.logger.debug("readCodeDescriptor %s" % short_name)
|
|
648
704
|
code_desc = impl.createCodeDescriptor(short_name)
|
|
@@ -650,13 +706,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
650
706
|
self.readArtifactDescriptor(child_element, code_desc)
|
|
651
707
|
|
|
652
708
|
def readMemorySectionOptions(self, element: ET.Element, section: MemorySection):
|
|
653
|
-
child_element =
|
|
709
|
+
child_element = self.find(element, "OPTIONS")
|
|
654
710
|
if child_element is not None:
|
|
655
711
|
for value in self.getChildElementLiteralValueList(child_element, "OPTION"):
|
|
656
712
|
section.addOption(value)
|
|
657
713
|
|
|
658
714
|
def readMemorySections(self, element: ET.Element, consumption: ResourceConsumption):
|
|
659
|
-
for child_element in
|
|
715
|
+
for child_element in self.findall(element, "MEMORY-SECTIONS/MEMORY-SECTION"):
|
|
660
716
|
memory_section = consumption.createMemorySection(self.getShortName(child_element))
|
|
661
717
|
self.readIdentifiable(child_element, memory_section)
|
|
662
718
|
memory_section.setAlignment(self.getChildElementOptionalLiteral(child_element, "ALIGNMENT")) \
|
|
@@ -665,32 +721,48 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
665
721
|
memory_section.setSize(self.getChildElementOptionalNumericalValue(child_element, "SIZE")) \
|
|
666
722
|
.setSwAddrMethodRef(self.getChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF")) \
|
|
667
723
|
.setSymbol(self.getChildElementOptionalLiteral(child_element, "SYMBOL"))
|
|
668
|
-
self.logger.debug("
|
|
724
|
+
self.logger.debug("read MemorySections %s" % memory_section.getShortName())
|
|
725
|
+
|
|
726
|
+
def readStackUsage(self, element: ET.Element, usage: StackUsage):
|
|
727
|
+
self.logger.debug("read StackUsage %s" % usage.getShortName())
|
|
728
|
+
self.readIdentifiable(element, usage)
|
|
729
|
+
|
|
730
|
+
def readRoughEstimateStackUsage(self, element: ET.Element, usage: RoughEstimateStackUsage):
|
|
731
|
+
self.readStackUsage(element, usage)
|
|
732
|
+
usage.setMemoryConsumption(self.getChildElementOptionalPositiveInteger(element, "MEMORY-CONSUMPTION"))
|
|
733
|
+
|
|
734
|
+
def readStackUsages(self, element: ET.Element, consumption: ResourceConsumption):
|
|
735
|
+
for child_element in self.findall(element, "STACK-USAGES/*"):
|
|
736
|
+
tag_name = self.getTagName(child_element)
|
|
737
|
+
if tag_name == "ROUGH-ESTIMATE-STACK-USAGE":
|
|
738
|
+
usage = consumption.createRoughEstimateStackUsage(self.getShortName(child_element))
|
|
739
|
+
self.readRoughEstimateStackUsage(child_element, usage)
|
|
740
|
+
else:
|
|
741
|
+
self.notImplemented("Unsupported Stack Usages: <%s>" % tag_name)
|
|
669
742
|
|
|
670
743
|
def readResourceConsumption(self, element: ET.Element, impl: Implementation):
|
|
671
|
-
child_element =
|
|
744
|
+
child_element = self.find(element, "RESOURCE-CONSUMPTION")
|
|
672
745
|
if (child_element is not None):
|
|
673
|
-
|
|
674
|
-
consumption = ResourceConsumption(impl, short_name)
|
|
746
|
+
consumption = impl.createResourceConsumption(self.getShortName(child_element))
|
|
675
747
|
self.readIdentifiable(child_element, consumption)
|
|
676
748
|
self.readMemorySections(child_element, consumption)
|
|
677
|
-
|
|
749
|
+
self.readStackUsages(child_element, consumption)
|
|
678
750
|
|
|
679
751
|
def readImplementation(self, element: ET.Element, impl: Implementation):
|
|
680
752
|
self.readIdentifiable(element, impl)
|
|
681
753
|
self.readCodeDescriptor(element, impl)
|
|
682
|
-
impl.
|
|
754
|
+
impl.setProgrammingLanguage(self.getChildElementOptionalLiteral(element, "PROGRAMMING-LANGUAGE"))
|
|
683
755
|
self.readResourceConsumption(element, impl)
|
|
684
|
-
impl.
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
756
|
+
impl.setSwVersion(self.getChildElementOptionalLiteral(element, "SW-VERSION")) \
|
|
757
|
+
.setSwcBswMappingRef(self.getChildElementOptionalRefType(element, "SWC-BSW-MAPPING-REF")) \
|
|
758
|
+
.setUsedCodeGenerator(self.getChildElementOptionalLiteral(element, "USED-CODE-GENERATOR")) \
|
|
759
|
+
.setVendorId(self.getChildElementOptionalNumericalValue(element, "VENDOR-ID"))
|
|
688
760
|
|
|
689
|
-
def readBswImplementationVendorSpecificModuleDefRefs(self, element: ET.Element,
|
|
690
|
-
child_element =
|
|
761
|
+
def readBswImplementationVendorSpecificModuleDefRefs(self, element: ET.Element, impl: BswImplementation):
|
|
762
|
+
child_element = self.find(element, "VENDOR-SPECIFIC-MODULE-DEF-REFS")
|
|
691
763
|
if child_element is not None:
|
|
692
|
-
for ref in self.getChildElementRefTypeList(child_element, "
|
|
693
|
-
|
|
764
|
+
for ref in self.getChildElementRefTypeList(child_element, "VENDOR-SPECIFIC-MODULE-DEF-REF"):
|
|
765
|
+
impl.addVendorSpecificModuleDefRef(ref)
|
|
694
766
|
|
|
695
767
|
def readBswImplementation(self, element: ET.Element, parent: ARPackage):
|
|
696
768
|
short_name = self.getShortName(element)
|
|
@@ -730,14 +802,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
730
802
|
|
|
731
803
|
def getAutosarParameterRef(self, element: ET.Element, key: str) -> AutosarParameterRef:
|
|
732
804
|
accessed_parameter = None
|
|
733
|
-
child_element =
|
|
805
|
+
child_element = self.find(element, key)
|
|
734
806
|
if child_element is not None:
|
|
735
807
|
accessed_parameter = AutosarParameterRef()
|
|
736
808
|
accessed_parameter.local_parameter_ref = self.getChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF")
|
|
737
809
|
return accessed_parameter
|
|
738
810
|
|
|
739
811
|
def readParameterAccesses(self, element: ET.Element, parent: RunnableEntity):
|
|
740
|
-
for child_element in
|
|
812
|
+
for child_element in self.findall(element, "PARAMETER-ACCESSS/PARAMETER-ACCESS"):
|
|
741
813
|
short_name = self.getShortName(child_element)
|
|
742
814
|
self.logger.debug("readParameterAccesses %s" % short_name)
|
|
743
815
|
parameter_access = parent.createParameterAccess(short_name)
|
|
@@ -897,7 +969,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
897
969
|
def readRTEEvent(self, element: ET.Element, event: RTEEvent):
|
|
898
970
|
self.readIdentifiable(element, event)
|
|
899
971
|
event.startOnEventRef = self.getChildElementOptionalRefType(element, "START-ON-EVENT-REF")
|
|
900
|
-
for child_element in
|
|
972
|
+
for child_element in self.findall(element, "DISABLED-MODE-IREFS/DISABLED-MODE-IREF"):
|
|
901
973
|
iref = self.getRModeInAtomicSwcInstanceRef(child_element)
|
|
902
974
|
event.addDisabledModeIRef(iref)
|
|
903
975
|
|
|
@@ -955,16 +1027,17 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
955
1027
|
argument_value = PortDefinedArgumentValue()
|
|
956
1028
|
child_element = self.find(element, "VALUE/*")
|
|
957
1029
|
if child_element is not None:
|
|
958
|
-
argument_value.
|
|
959
|
-
argument_value.
|
|
1030
|
+
argument_value.setValue(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1031
|
+
argument_value.setValueTypeTRef(self.getChildElementOptionalRefType(element, "VALUE-TYPE-TREF"))
|
|
960
1032
|
return argument_value
|
|
961
1033
|
|
|
962
1034
|
def readPortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
963
1035
|
for child_element in self.findall(element, "PORT-API-OPTIONS/PORT-API-OPTION"):
|
|
964
1036
|
option = PortAPIOption()
|
|
965
|
-
option.
|
|
966
|
-
|
|
967
|
-
|
|
1037
|
+
option.setEnableTakeAddress(self.getChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS")) \
|
|
1038
|
+
.setErrorHandling(self.getChildElementOptionalLiteral(child_element, "ERROR-HANDLING")) \
|
|
1039
|
+
.setIndirectAPI(self.getChildElementOptionalBooleanValue(child_element, "INDIRECT-API")) \
|
|
1040
|
+
.setPortRef(self.getChildElementOptionalRefType(child_element, "PORT-REF"))
|
|
968
1041
|
for argument_value_tag in self.findall(child_element, "PORT-ARG-VALUES/PORT-DEFINED-ARGUMENT-VALUE"):
|
|
969
1042
|
option.addPortArgValue(self.readPortDefinedArgumentValue(argument_value_tag))
|
|
970
1043
|
behavior.addPortAPIOption(option)
|
|
@@ -1026,6 +1099,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1026
1099
|
else:
|
|
1027
1100
|
self.notImplemented("Unsupported SwcInternalBehavior Event <%s>" % tag_name)
|
|
1028
1101
|
|
|
1102
|
+
def getSwPointerTargetProps(self, element: ET.Element, key: str) -> SwPointerTargetProps:
|
|
1103
|
+
child_element = self.find(element, key)
|
|
1104
|
+
props = None
|
|
1105
|
+
if child_element is not None:
|
|
1106
|
+
props = SwPointerTargetProps()
|
|
1107
|
+
props.setTargetCategory(self.getChildElementOptionalLiteral(child_element, "TARGET-CATEGORY")) \
|
|
1108
|
+
.setSwDataDefProps(self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS"))
|
|
1109
|
+
return props
|
|
1110
|
+
|
|
1029
1111
|
def readSwPointerTargetProps(self, element: ET.Element, parent: SwDataDefProps):
|
|
1030
1112
|
child_element = self.find(element, "SW-POINTER-TARGET-PROPS")
|
|
1031
1113
|
if child_element is not None:
|
|
@@ -1165,7 +1247,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1165
1247
|
def readSwDataDefProsInvalidValue(self, element: ET.Element, props: SwDataDefProps):
|
|
1166
1248
|
child_element = self.find(element, "INVALID-VALUE/*")
|
|
1167
1249
|
if child_element is not None:
|
|
1168
|
-
props.setInvalidValue(self.getValueSpecification(child_element))
|
|
1250
|
+
props.setInvalidValue(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1169
1251
|
|
|
1170
1252
|
def getSwDataDefProps(self, element: ET.Element, key: str) -> SwDataDefProps:
|
|
1171
1253
|
child_element = self.find(element, key)
|
|
@@ -1186,13 +1268,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1186
1268
|
.setSwImplPolicy(self.getChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY")) \
|
|
1187
1269
|
.setSwIntendedResolution(self.getChildElementOptionalNumericalValue(conditional_tag, "SW-INTENDED-RESOLUTION")) \
|
|
1188
1270
|
.setImplementationDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF")) \
|
|
1271
|
+
.setStepSize(self.getChildElementOptionalFloatValue(conditional_tag, "STEP-SIZE")) \
|
|
1189
1272
|
.setSwCalibrationAccess(self.getChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS")) \
|
|
1190
1273
|
.setSwCalprmAxisSet(self.getSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET")) \
|
|
1274
|
+
.setSwPointerTargetProps(self.getSwPointerTargetProps(conditional_tag, "SW-POINTER-TARGET-PROPS")) \
|
|
1191
1275
|
.setSwRecordLayoutRef(self.getChildElementOptionalRefType(conditional_tag, "SW-RECORD-LAYOUT-REF")) \
|
|
1192
1276
|
.setValueAxisDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "VALUE-AXIS-DATA-TYPE-REF")) \
|
|
1193
|
-
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1277
|
+
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1194
1278
|
self.readSwDataDefProsInvalidValue(conditional_tag, sw_data_def_props)
|
|
1195
|
-
self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
1279
|
+
#self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
1196
1280
|
self.readARObjectAttributes(conditional_tag, sw_data_def_props.conditional)
|
|
1197
1281
|
return sw_data_def_props
|
|
1198
1282
|
|
|
@@ -1310,7 +1394,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1310
1394
|
.setUsesEndToEndProtection(self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION"))
|
|
1311
1395
|
|
|
1312
1396
|
def getSwValues(self, element: ET.Element, key: str) -> SwValues:
|
|
1313
|
-
child_element =
|
|
1397
|
+
child_element = self.find(element, key)
|
|
1314
1398
|
if child_element is None:
|
|
1315
1399
|
return None
|
|
1316
1400
|
sw_values = SwValues()
|
|
@@ -1322,30 +1406,30 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1322
1406
|
|
|
1323
1407
|
def getValueList(self, element: ET.Element, key: str) -> ValueList:
|
|
1324
1408
|
value_list = None
|
|
1325
|
-
child_element =
|
|
1409
|
+
child_element = self.find(element, key)
|
|
1326
1410
|
if child_element is not None:
|
|
1327
1411
|
self.logger.debug("getValueList %s" % key)
|
|
1328
1412
|
value_list = ValueList()
|
|
1329
1413
|
self.readARObjectAttributes(child_element, value_list)
|
|
1330
|
-
value_list.
|
|
1414
|
+
value_list.setV(self.getChildElementOptionalFloatValue(child_element, "V"))
|
|
1331
1415
|
return value_list
|
|
1332
1416
|
|
|
1333
1417
|
def getSwValueCont(self, element: ET.Element) -> SwValueCont:
|
|
1334
1418
|
cont = None
|
|
1335
|
-
child_element =
|
|
1419
|
+
child_element = self.find(element, "SW-VALUE-CONT")
|
|
1336
1420
|
if child_element is not None:
|
|
1337
1421
|
self.logger.debug("getSwValueCont")
|
|
1338
1422
|
cont = SwValueCont()
|
|
1339
1423
|
self.readARObjectAttributes(child_element, cont)
|
|
1340
|
-
cont.
|
|
1341
|
-
|
|
1342
|
-
|
|
1424
|
+
cont.setUnitRef(self.getChildElementOptionalRefType(child_element, "UNIT-REF")) \
|
|
1425
|
+
.setSwArraysize(self.getValueList(child_element, "SW-ARRAYSIZE")) \
|
|
1426
|
+
.setSwValuesPhys(self.getSwValues(child_element, "SW-VALUES-PHYS"))
|
|
1343
1427
|
return cont
|
|
1344
1428
|
|
|
1345
1429
|
def readApplicationValueSpecification(self, element: ET.Element, value_spec: ApplicationValueSpecification):
|
|
1346
1430
|
self.readValueSpecification(element, value_spec)
|
|
1347
|
-
value_spec.
|
|
1348
|
-
|
|
1431
|
+
value_spec.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
1432
|
+
.setSwValueCont(self.getSwValueCont(element))
|
|
1349
1433
|
|
|
1350
1434
|
self.logger.debug("readApplicationValueSpecification Category %s" % value_spec.category)
|
|
1351
1435
|
|
|
@@ -1354,7 +1438,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1354
1438
|
child_element = self.find(element, "INIT-VALUE/*")
|
|
1355
1439
|
if child_element is not None:
|
|
1356
1440
|
self.logger.debug("getInitValue")
|
|
1357
|
-
value_spec = self.getValueSpecification(child_element)
|
|
1441
|
+
value_spec = self.getValueSpecification(child_element, self.getTagName(child_element))
|
|
1358
1442
|
return value_spec
|
|
1359
1443
|
|
|
1360
1444
|
def getClientComSpec(self, element: ET.Element) -> ClientComSpec:
|
|
@@ -1390,6 +1474,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1390
1474
|
com_spec.setAliveTimeout(self.getChildElementOptionalFloatValue(element, "ALIVE-TIMEOUT")) \
|
|
1391
1475
|
.setEnableUpdated(self.getChildElementOptionalBooleanValue(element, "ENABLE-UPDATE")) \
|
|
1392
1476
|
.setHandleNeverReceived(self.getChildElementOptionalBooleanValue(element, "HANDLE-NEVER-RECEIVED")) \
|
|
1477
|
+
.setFilter(self.getDataFilter(element, "FILTER")) \
|
|
1393
1478
|
.setHandleTimeoutType(self.getChildElementOptionalLiteral(element, "HANDLE-TIMEOUT-TYPE")) \
|
|
1394
1479
|
.setInitValue(self.getInitValue(element))
|
|
1395
1480
|
return com_spec
|
|
@@ -1454,7 +1539,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1454
1539
|
self._raiseError("Unsupported Port Prototype <%s>" % tag_name)
|
|
1455
1540
|
|
|
1456
1541
|
def readTransmissionAcknowledgementRequest(self, element: ET.Element) -> TransmissionAcknowledgementRequest:
|
|
1457
|
-
child_element =
|
|
1542
|
+
child_element = self.find(element, "TRANSMISSION-ACKNOWLEDGE")
|
|
1458
1543
|
if (child_element is not None):
|
|
1459
1544
|
acknowledge = TransmissionAcknowledgementRequest()
|
|
1460
1545
|
self.readARObjectAttributes(child_element, acknowledge)
|
|
@@ -1464,7 +1549,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1464
1549
|
|
|
1465
1550
|
def readSenderComSpec(self, element:ET.Element, com_spec: SenderComSpec):
|
|
1466
1551
|
self.readARObjectAttributes(element, com_spec)
|
|
1467
|
-
for child_element in
|
|
1552
|
+
for child_element in self.findall(element, "COMPOSITE-NETWORK-REPRESENTATIONS/COMPOSITE-NETWORK-REPRESENTATION"):
|
|
1468
1553
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
1469
1554
|
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF")) \
|
|
1470
1555
|
.setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION")) \
|
|
@@ -1497,7 +1582,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1497
1582
|
return com_spec
|
|
1498
1583
|
|
|
1499
1584
|
def readProvidedComSpec(self, element: ET.Element, parent: PPortPrototype):
|
|
1500
|
-
for child_element in
|
|
1585
|
+
for child_element in self.findall(element, "PROVIDED-COM-SPECS/*"):
|
|
1501
1586
|
tag_name = self.getTagName(child_element.tag)
|
|
1502
1587
|
if tag_name == "NONQUEUED-SENDER-COM-SPEC":
|
|
1503
1588
|
parent.addProvidedComSpec(self.getNonqueuedSenderComSpec(child_element))
|
|
@@ -1530,7 +1615,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1530
1615
|
self.readPortGroupOuterPortRefs(element, port_group)
|
|
1531
1616
|
|
|
1532
1617
|
def readSwComponentTypePortGroups(self, element: ET.Element, parent: SwComponentType):
|
|
1533
|
-
for child_element in
|
|
1618
|
+
for child_element in self.findall(element, "PORT-GROUPS/*"):
|
|
1534
1619
|
tag_name = self.getTagName(child_element.tag)
|
|
1535
1620
|
if tag_name == "PORT-GROUP":
|
|
1536
1621
|
self.readPortGroup(child_element, parent)
|
|
@@ -1611,12 +1696,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1611
1696
|
parent.setRequesterIRef(requester_iref)
|
|
1612
1697
|
|
|
1613
1698
|
def readAssemblySwConnectors(self, element: ET.Element, parent: CompositionSwComponentType):
|
|
1614
|
-
for child_element in
|
|
1699
|
+
for child_element in self.findall(element, "CONNECTORS/ASSEMBLY-SW-CONNECTOR"):
|
|
1615
1700
|
short_name = self.getShortName(child_element)
|
|
1616
1701
|
self.logger.debug("readAssemblySwConnectors %s" % short_name)
|
|
1617
1702
|
|
|
1618
1703
|
connector = parent.createAssemblySwConnector(short_name)
|
|
1619
1704
|
self.readIdentifiable(child_element, connector)
|
|
1705
|
+
connector.setMappingRef(self.getChildElementOptionalRefType(child_element, "MAPPING-REF"))
|
|
1620
1706
|
self.readAssemblySwConnectorProviderIRef(child_element, connector)
|
|
1621
1707
|
self.readAssemblySwConnectorRequesterIRef(child_element, connector)
|
|
1622
1708
|
|
|
@@ -1749,7 +1835,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1749
1835
|
prototype.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
|
|
1750
1836
|
prototype.typeTRef = self.getChildElementOptionalRefType(child_element, "TYPE-TREF")
|
|
1751
1837
|
prototype.direction = self.getChildElementOptionalLiteral(child_element, "DIRECTION")
|
|
1752
|
-
prototype.
|
|
1838
|
+
prototype.serverArgumentImplPolicy = self.getChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY")
|
|
1753
1839
|
parent.addArgumentDataPrototype(prototype)
|
|
1754
1840
|
|
|
1755
1841
|
def readPossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
|
|
@@ -1798,6 +1884,33 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1798
1884
|
self.readOperations(element, cs_interface)
|
|
1799
1885
|
self.readPossibleErrors(element, cs_interface)
|
|
1800
1886
|
|
|
1887
|
+
def getCompuConstContent(self, element: ET.Element) -> CompuConstContent:
|
|
1888
|
+
child_element = self.find(element, "*")
|
|
1889
|
+
content = None
|
|
1890
|
+
if child_element is not None:
|
|
1891
|
+
tag_name = self.getTagName(child_element)
|
|
1892
|
+
if tag_name == "VF":
|
|
1893
|
+
content = CompuConstFormulaContent()
|
|
1894
|
+
content.setVf(self.getChildElementOptionalLiteral(element, "VF"))
|
|
1895
|
+
elif tag_name == "V":
|
|
1896
|
+
content = CompuConstNumericContent()
|
|
1897
|
+
content.setV(self.getChildElementOptionalNumericalValue(element, "V"))
|
|
1898
|
+
elif tag_name == "VT":
|
|
1899
|
+
content = CompuConstTextContent()
|
|
1900
|
+
content.setVt(self.getChildElementOptionalLiteral(element, "VT"))
|
|
1901
|
+
else:
|
|
1902
|
+
self.notImplemented("Unsupported CompuConstContent <%s>" % tag_name)
|
|
1903
|
+
return content
|
|
1904
|
+
|
|
1905
|
+
def getCompuConst(self, element: ET.Element, key: str) -> CompuConst:
|
|
1906
|
+
compu_const = None
|
|
1907
|
+
child_element = self.find(element, key)
|
|
1908
|
+
if (child_element is not None):
|
|
1909
|
+
compu_const = CompuConst()
|
|
1910
|
+
self.readARObjectAttributes(child_element, compu_const)
|
|
1911
|
+
compu_const.setCompuConstContentType(self.getCompuConstContent(child_element))
|
|
1912
|
+
return compu_const
|
|
1913
|
+
|
|
1801
1914
|
def readCompuConst(self, element: ET.Element, parent: CompuScale):
|
|
1802
1915
|
child_element = self.find(element, "COMPU-CONST/VT")
|
|
1803
1916
|
if (child_element is not None):
|
|
@@ -1845,46 +1958,40 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1845
1958
|
self.readCompuScaleContents(child_element, compu_scale)
|
|
1846
1959
|
compu_scales.addCompuScale(compu_scale)
|
|
1847
1960
|
return compu_scales
|
|
1848
|
-
|
|
1849
|
-
def
|
|
1850
|
-
child_element = self.find(element,
|
|
1851
|
-
|
|
1852
|
-
compu = Compu()
|
|
1853
|
-
self.readARObjectAttributes(child_element, compu)
|
|
1854
|
-
compu.setCompuContent(self.getCompuScales(child_element))
|
|
1855
|
-
compu_method.setCompuInternalToPhys(compu)
|
|
1856
|
-
|
|
1857
|
-
def readCompuPhysToInternal(self, element: ET.Element, compu_method: CompuMethod):
|
|
1858
|
-
child_element = self.find(element, "COMPU-PHYS-TO-INTERNAL")
|
|
1961
|
+
|
|
1962
|
+
def getCompu(self, element: ET.Element, key: str) -> Compu:
|
|
1963
|
+
child_element = self.find(element, key)
|
|
1964
|
+
compu = None
|
|
1859
1965
|
if (child_element is not None):
|
|
1860
1966
|
compu = Compu()
|
|
1861
1967
|
self.readARObjectAttributes(child_element, compu)
|
|
1862
|
-
compu.setCompuContent(self.getCompuScales(child_element))
|
|
1863
|
-
|
|
1968
|
+
compu.setCompuContent(self.getCompuScales(child_element))
|
|
1969
|
+
compu.setCompuDefaultValue(self.getCompuConst(child_element, "COMPU-DEFAULT-VALUE"))
|
|
1970
|
+
return compu
|
|
1864
1971
|
|
|
1865
1972
|
def readCompuMethod(self, element: ET.Element, parent: ARPackage):
|
|
1866
1973
|
short_name = self.getShortName(element)
|
|
1867
1974
|
self.logger.debug("readCompuMethods %s" % short_name)
|
|
1868
1975
|
compu_method = parent.createCompuMethod(short_name)
|
|
1869
1976
|
self.readIdentifiable(element, compu_method)
|
|
1870
|
-
compu_method.setUnitRef(self.getChildElementOptionalRefType(element, "UNIT-REF"))
|
|
1871
|
-
|
|
1872
|
-
|
|
1977
|
+
compu_method.setUnitRef(self.getChildElementOptionalRefType(element, "UNIT-REF")) \
|
|
1978
|
+
.setCompuInternalToPhys(self.getCompu(element, "COMPU-INTERNAL-TO-PHYS")) \
|
|
1979
|
+
.setCompuPhysToInternal(self.getCompu(element, "COMPU-PHYS-TO-INTERNAL"))
|
|
1873
1980
|
|
|
1874
1981
|
def readSwcBswRunnableMappings(self, element: ET.Element, parent: SwcBswMapping):
|
|
1875
|
-
for child_element in
|
|
1982
|
+
for child_element in self.findall(element, "RUNNABLE-MAPPINGS/SWC-BSW-RUNNABLE-MAPPING"):
|
|
1876
1983
|
mapping = SwcBswRunnableMapping()
|
|
1877
|
-
mapping.
|
|
1878
|
-
|
|
1984
|
+
mapping.setBswEntityRef(self.getChildElementOptionalRefType(child_element, "BSW-ENTITY-REF")) \
|
|
1985
|
+
.setSwcRunnableRef(self.getChildElementOptionalRefType(child_element, "SWC-RUNNABLE-REF"))
|
|
1879
1986
|
parent.addRunnableMapping(mapping)
|
|
1880
1987
|
|
|
1881
1988
|
def readSwcBswMappings(self, element: ET.Element, parent: ARPackage):
|
|
1882
1989
|
short_name = self.getShortName(element)
|
|
1883
|
-
self.logger.debug("
|
|
1990
|
+
self.logger.debug("read SwcBswMappings %s" % short_name)
|
|
1884
1991
|
swc_bsw_mapping = parent.createSwcBswMapping(short_name)
|
|
1885
|
-
swc_bsw_mapping.
|
|
1992
|
+
swc_bsw_mapping.setBswBehaviorRef(self.getChildElementOptionalRefType(element, "BSW-BEHAVIOR-REF"))
|
|
1886
1993
|
self.readSwcBswRunnableMappings(element, swc_bsw_mapping)
|
|
1887
|
-
swc_bsw_mapping.
|
|
1994
|
+
swc_bsw_mapping.setSwcBehaviorRef(self.getChildElementOptionalRefType(element, "SWC-BEHAVIOR-REF"))
|
|
1888
1995
|
|
|
1889
1996
|
def readValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
|
|
1890
1997
|
self.readARObjectAttributes(element, value_spec)
|
|
@@ -1922,7 +2029,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1922
2029
|
self.readValueSpecification(element, value_spec)
|
|
1923
2030
|
child_elements = element.findall("./xmlns:ELEMENTS/*", self.nsmap)
|
|
1924
2031
|
for child_element in child_elements:
|
|
1925
|
-
value_spec.addElement(self.getValueSpecification(child_element))
|
|
2032
|
+
value_spec.addElement(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1926
2033
|
return value_spec
|
|
1927
2034
|
|
|
1928
2035
|
def getConstantReference(self, element: ET.Element) -> ConstantReference:
|
|
@@ -1932,8 +2039,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1932
2039
|
value_spec.setConstantRef(self.getChildElementOptionalRefType(element, "CONSTANT-REF"))
|
|
1933
2040
|
return value_spec
|
|
1934
2041
|
|
|
1935
|
-
def getValueSpecification(self, element: ET.Element) -> ValueSpecification:
|
|
1936
|
-
tag_name = self.getTagName(element.tag)
|
|
2042
|
+
def getValueSpecification(self, element: ET.Element, tag_name: str) -> ValueSpecification:
|
|
1937
2043
|
if tag_name == "APPLICATION-VALUE-SPECIFICATION":
|
|
1938
2044
|
value_spec = self.getApplicationValueSpecification(element)
|
|
1939
2045
|
elif tag_name == "RECORD-VALUE-SPECIFICATION":
|
|
@@ -1952,7 +2058,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1952
2058
|
|
|
1953
2059
|
def readRecordValueSpecificationFields(self, element: ET.Element, spec: RecordValueSpecification):
|
|
1954
2060
|
for child_element in element.findall("./xmlns:FIELDS/*", self.nsmap):
|
|
1955
|
-
spec.addField(self.getValueSpecification(child_element))
|
|
2061
|
+
spec.addField(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1956
2062
|
|
|
1957
2063
|
def getRecordValueSpecification(self, element: ET.Element) -> RecordValueSpecification:
|
|
1958
2064
|
value_spec = RecordValueSpecification()
|
|
@@ -1965,8 +2071,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1965
2071
|
self.logger.debug("readConstantSpecification %s" % short_name)
|
|
1966
2072
|
spec = parent.createConstantSpecification(short_name)
|
|
1967
2073
|
self.readIdentifiable(element, spec)
|
|
1968
|
-
for
|
|
1969
|
-
spec.setValueSpec(self.getValueSpecification(
|
|
2074
|
+
for child_element in self.findall(element, "VALUE-SPEC/*"):
|
|
2075
|
+
spec.setValueSpec(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1970
2076
|
|
|
1971
2077
|
def readInternalConstrs(self, element: ET.Element, parent: DataConstrRule):
|
|
1972
2078
|
child_element = element.find("./xmlns:INTERNAL-CONSTRS", self.nsmap)
|
|
@@ -2725,9 +2831,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2725
2831
|
child_element = self.find(element, key)
|
|
2726
2832
|
if child_element is not None:
|
|
2727
2833
|
instance_ref = AnyInstanceRef()
|
|
2728
|
-
instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF"))
|
|
2729
|
-
|
|
2730
|
-
|
|
2834
|
+
instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF"))
|
|
2835
|
+
for ref in self.getChildElementRefTypeList(child_element, "CONTEXT-ELEMENT-REF"):
|
|
2836
|
+
instance_ref.addContextElementRef(ref)
|
|
2837
|
+
instance_ref.setTargetRef(self.getChildElementOptionalRefType(child_element, "TARGET-REF"))
|
|
2731
2838
|
return instance_ref
|
|
2732
2839
|
|
|
2733
2840
|
def getEcucInstanceReferenceValue(self, element: ET.Element) -> EcucInstanceReferenceValue:
|
|
@@ -2947,8 +3054,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2947
3054
|
|
|
2948
3055
|
def getSenderReceiverToSignalMapping(self, element: ET.Element) -> SenderReceiverToSignalMapping:
|
|
2949
3056
|
mapping = SenderReceiverToSignalMapping()
|
|
2950
|
-
mapping.
|
|
2951
|
-
|
|
3057
|
+
mapping.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")) \
|
|
3058
|
+
.setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF"))) \
|
|
3059
|
+
.setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
|
|
2952
3060
|
return mapping
|
|
2953
3061
|
|
|
2954
3062
|
def getSenderReceiverToSignalGroupMapping(self, element: ET.Element) -> SenderReceiverToSignalGroupMapping:
|
|
@@ -3005,7 +3113,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3005
3113
|
self.logger.debug("Read RootSwCompositionPrototype %s" % short_name)
|
|
3006
3114
|
prototype = system.createRootSoftwareComposition(short_name)
|
|
3007
3115
|
self.readIdentifiable(child_element, prototype)
|
|
3008
|
-
prototype.
|
|
3116
|
+
prototype.setFlatMapRef(self.getChildElementOptionalRefType(child_element, "FLAT-MAP-REF")) \
|
|
3117
|
+
.setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
|
|
3118
|
+
|
|
3009
3119
|
|
|
3010
3120
|
def readSystem(self, element: ET.Element, parent: ARPackage):
|
|
3011
3121
|
short_name = self.getShortName(element)
|
|
@@ -3032,8 +3142,61 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3032
3142
|
frame = parent.createLifeCycleInfoSet(short_name)
|
|
3033
3143
|
self.readIdentifiable(element, frame)
|
|
3034
3144
|
|
|
3145
|
+
def readFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
|
|
3146
|
+
self.logger.debug("Read LifeCycleInfoSet %s" % desc.getShortName())
|
|
3147
|
+
self.readIdentifiable(element, desc)
|
|
3148
|
+
desc.setUpstreamReferenceIRef(self.getAnyInstanceRef(element, "UPSTREAM-REFERENCE-IREF")) \
|
|
3149
|
+
.setEcuExtractReferenceIRef(self.getAnyInstanceRef(element, "ECU-EXTRACT-REFERENCE-IREF"))
|
|
3150
|
+
|
|
3151
|
+
def readFlatMapInstances(self, element: ET.Element, map: FlatMap):
|
|
3152
|
+
for child_element in self.findall(element, "INSTANCES/*"):
|
|
3153
|
+
tag_name = self.getTagName(child_element)
|
|
3154
|
+
if tag_name == "FLAT-INSTANCE-DESCRIPTOR":
|
|
3155
|
+
desc = map.createFlatInstanceDescriptor(self.getShortName(child_element))
|
|
3156
|
+
self.readFlatInstanceDescriptor(child_element, desc)
|
|
3157
|
+
else:
|
|
3158
|
+
self.notImplemented("Unsupported Flat Map Instances <%s>" % tag_name)
|
|
3159
|
+
|
|
3160
|
+
def readFlatMap(self, element: ET.Element, parent: ARPackage):
|
|
3161
|
+
short_name = self.getShortName(element)
|
|
3162
|
+
self.logger.debug("Read FlatMap %s" % short_name)
|
|
3163
|
+
map = parent.createFlatMap(short_name)
|
|
3164
|
+
self.readIdentifiable(element, map)
|
|
3165
|
+
self.readFlatMapInstances(element, map)
|
|
3166
|
+
|
|
3167
|
+
def getDataPrototypeMappings(self, element: ET.Element, key: str) -> List[DataPrototypeMapping]:
|
|
3168
|
+
mappings = []
|
|
3169
|
+
for child_element in self.findall(element, "%s/DATA-PROTOTYPE-MAPPING" % key):
|
|
3170
|
+
mapping = DataPrototypeMapping()
|
|
3171
|
+
mapping.setFirstDataPrototypeRef(self.getChildElementOptionalRefType(child_element, "FIRST-DATA-PROTOTYPE-REF")) \
|
|
3172
|
+
.setSecondDataPrototypeRef(self.getChildElementOptionalRefType(child_element, "SECOND-DATA-PROTOTYPE-REF"))
|
|
3173
|
+
mappings.append(mapping)
|
|
3174
|
+
return mappings
|
|
3175
|
+
|
|
3176
|
+
def getVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
|
|
3177
|
+
self.logger.debug("get VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
|
|
3178
|
+
self.readIdentifiable(element, mapping)
|
|
3179
|
+
for item in self.getDataPrototypeMappings(element, "DATA-MAPPINGS"):
|
|
3180
|
+
mapping.addDataMapping(item)
|
|
3181
|
+
|
|
3182
|
+
def readPortInterfaceMappings(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
|
|
3183
|
+
for child_element in self.findall(element, "PORT-INTERFACE-MAPPINGS/*"):
|
|
3184
|
+
tag_name = self.getTagName(child_element)
|
|
3185
|
+
if tag_name == "VARIABLE-AND-PARAMETER-INTERFACE-MAPPING":
|
|
3186
|
+
mapping = mapping_set.createVariableAndParameterInterfaceMapping(self.getShortName(child_element))
|
|
3187
|
+
self.getVariableAndParameterInterfaceMapping(child_element, mapping)
|
|
3188
|
+
else:
|
|
3189
|
+
self.notImplemented("Unsupported PortInterfaceMapping <%s>" % tag_name)
|
|
3190
|
+
|
|
3191
|
+
def readPortInterfaceMappingSet(self, element: ET.Element, parent: ARPackage):
|
|
3192
|
+
short_name = self.getShortName(element)
|
|
3193
|
+
self.logger.debug("Read PortInterfaceMappingSet %s" % short_name)
|
|
3194
|
+
mapping_set = parent.createPortInterfaceMappingSet(short_name)
|
|
3195
|
+
self.readIdentifiable(element, mapping_set)
|
|
3196
|
+
self.readPortInterfaceMappings(element, mapping_set)
|
|
3197
|
+
|
|
3035
3198
|
def readARPackageElements(self, element: ET.Element, parent: ARPackage):
|
|
3036
|
-
for child_element in self.findall(element, "
|
|
3199
|
+
for child_element in self.findall(element, "ELEMENTS/*"):
|
|
3037
3200
|
tag_name = self.getTagName(child_element.tag)
|
|
3038
3201
|
if tag_name == "COMPOSITION-SW-COMPONENT-TYPE":
|
|
3039
3202
|
self.readCompositionSwComponentType(child_element, parent)
|
|
@@ -3147,8 +3310,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3147
3310
|
self.readGenericEthernetFrame(child_element, parent)
|
|
3148
3311
|
elif tag_name == "LIFE-CYCLE-INFO-SET":
|
|
3149
3312
|
self.readLifeCycleInfoSet(child_element, parent)
|
|
3313
|
+
elif tag_name == "FLAT-MAP":
|
|
3314
|
+
self.readFlatMap(child_element, parent)
|
|
3315
|
+
elif tag_name == "PORT-INTERFACE-MAPPING-SET":
|
|
3316
|
+
self.readPortInterfaceMappingSet(child_element, parent)
|
|
3150
3317
|
else:
|
|
3151
|
-
self.
|
|
3318
|
+
self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
|
|
3152
3319
|
|
|
3153
3320
|
def readReferenceBases(self, element: ET.Element, parent: ARPackage):
|
|
3154
3321
|
self.logger.debug("Read ReferenceBases")
|