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
armodel/parser/arxml_parser.py
CHANGED
|
@@ -2,6 +2,9 @@ from typing import List
|
|
|
2
2
|
import xml.etree.ElementTree as ET
|
|
3
3
|
import os
|
|
4
4
|
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
5
8
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
6
9
|
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition
|
|
7
10
|
from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
|
|
@@ -33,7 +36,7 @@ from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import Res
|
|
|
33
36
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import MemorySection
|
|
34
37
|
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
|
|
35
38
|
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
|
|
36
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataAssignment, ServiceDependency
|
|
39
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceAlgorithm, DiagEventDebounceMonitorInternal, DiagnosticEventNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
|
|
37
40
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
|
|
38
41
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
39
42
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
|
|
@@ -55,11 +58,11 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import Compo
|
|
|
55
58
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
|
|
56
59
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
57
60
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
|
|
58
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
61
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
62
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, CompositionSwComponentType, PortGroup, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
|
|
59
63
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector
|
|
60
64
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
|
|
61
65
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
62
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
63
66
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
64
67
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, SenderReceiverInterface
|
|
65
68
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
|
|
@@ -127,7 +130,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
127
130
|
return admin_data
|
|
128
131
|
|
|
129
132
|
def readMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
|
|
130
|
-
self.
|
|
133
|
+
self.readARObjectAttributes(element, referrable)
|
|
131
134
|
referrable.setLongName(self.getMultilanguageLongName(element, "LONG-NAME"))
|
|
132
135
|
|
|
133
136
|
def readIdentifiable(self, element: ET.Element, identifiable: Identifiable):
|
|
@@ -145,7 +148,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
145
148
|
def readLLongName(self, element: ET.Element, long_name: MultilanguageLongName):
|
|
146
149
|
for child_element in self.findall(element, "./L-4"):
|
|
147
150
|
l4 = LLongName()
|
|
148
|
-
self.
|
|
151
|
+
self.readARObjectAttributes(child_element, l4)
|
|
149
152
|
l4.value = child_element.text
|
|
150
153
|
if 'L' in child_element.attrib:
|
|
151
154
|
l4.l = child_element.attrib['L']
|
|
@@ -156,14 +159,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
156
159
|
child_element = self.find(element, "./%s" % key)
|
|
157
160
|
if child_element is not None:
|
|
158
161
|
long_name = MultilanguageLongName()
|
|
159
|
-
self.
|
|
162
|
+
self.readARObjectAttributes(child_element, long_name)
|
|
160
163
|
self.readLLongName(child_element, long_name)
|
|
161
164
|
return long_name
|
|
162
165
|
|
|
163
166
|
def readLOverviewParagraph(self, element: ET.Element, paragraph: MultiLanguageOverviewParagraph):
|
|
164
167
|
for child_element in self.findall(element, "./L-2"):
|
|
165
168
|
l2 = LOverviewParagraph()
|
|
166
|
-
self.
|
|
169
|
+
self.readARObjectAttributes(child_element, l2)
|
|
167
170
|
l2.value = child_element.text
|
|
168
171
|
if 'L' in child_element.attrib:
|
|
169
172
|
l2.l = child_element.attrib['L']
|
|
@@ -174,7 +177,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
174
177
|
child_element = element.find("./xmlns:%s" % key, self.nsmap)
|
|
175
178
|
if child_element is not None:
|
|
176
179
|
paragraph = MultiLanguageOverviewParagraph()
|
|
177
|
-
self.
|
|
180
|
+
self.readARObjectAttributes(child_element, paragraph)
|
|
178
181
|
self.readLOverviewParagraph(child_element, paragraph)
|
|
179
182
|
return paragraph
|
|
180
183
|
|
|
@@ -182,7 +185,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
182
185
|
iref = None
|
|
183
186
|
if element is not None:
|
|
184
187
|
iref = VariableInAtomicSWCTypeInstanceRef()
|
|
185
|
-
self.
|
|
188
|
+
self.readARObjectAttributes(element, iref)
|
|
186
189
|
iref.setPortPrototypeRef(self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF"))
|
|
187
190
|
iref.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
|
|
188
191
|
return iref
|
|
@@ -191,7 +194,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
191
194
|
iref = None
|
|
192
195
|
if element is not None:
|
|
193
196
|
iref = ComponentInSystemInstanceRef()
|
|
194
|
-
self.
|
|
197
|
+
self.readARObjectAttributes(element, iref)
|
|
195
198
|
iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF"))
|
|
196
199
|
iref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF"))
|
|
197
200
|
iref.setTargetComponentRef(self.getChildElementOptionalRefType(element, "TARGET-COMPONENT-REF"))
|
|
@@ -246,7 +249,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
246
249
|
self.readIdentifiable(child_element, variable_access)
|
|
247
250
|
|
|
248
251
|
def readBswModuleDescriptionImplementedEntry(self, element: ET.Element, parent: BswModuleDescription):
|
|
249
|
-
for child_element in
|
|
252
|
+
for child_element in self.findall(element, "PROVIDED-ENTRYS/BSW-MODULE-ENTRY-REF-CONDITIONAL"):
|
|
250
253
|
ref = self.getChildElementOptionalRefType(child_element, "BSW-MODULE-ENTRY-REF")
|
|
251
254
|
if (ref is not None):
|
|
252
255
|
parent.addImplementedEntry(ref)
|
|
@@ -257,7 +260,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
257
260
|
prototype.type_tref = self.getChildElementOptionalRefType(element, "TYPE-TREF")
|
|
258
261
|
|
|
259
262
|
def readProvidedModeGroup(self, element: ET.Element, parent: BswModuleDescription):
|
|
260
|
-
for child_element in
|
|
263
|
+
for child_element in self.findall(element, "PROVIDED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE"):
|
|
261
264
|
short_name = self.getShortName(child_element)
|
|
262
265
|
self.logger.debug("readProvidedModeGroup %s" % short_name)
|
|
263
266
|
|
|
@@ -265,7 +268,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
265
268
|
self.readModeDeclarationGroupPrototype(child_element, mode_group)
|
|
266
269
|
|
|
267
270
|
def readRequiredModeGroup(self, element: ET.Element, parent: BswModuleDescription):
|
|
268
|
-
for child_element in
|
|
271
|
+
for child_element in self.findall(element, "REQUIRED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE"):
|
|
269
272
|
short_name = self.getShortName(child_element)
|
|
270
273
|
self.logger.debug("readRequiredModeGroup %s" % short_name)
|
|
271
274
|
mode_group = parent.createProvidedModeGroup(short_name)
|
|
@@ -315,7 +318,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
315
318
|
self.readBswEvent(element, event)
|
|
316
319
|
|
|
317
320
|
def readBswModeSwitchEvent(self, element: ET.Element, parent: BswInternalBehavior):
|
|
318
|
-
for child_element in
|
|
321
|
+
for child_element in self.findall(element, "EVENTS/BSW-MODE-SWITCH-EVENT"):
|
|
319
322
|
short_name = self.getShortName(child_element)
|
|
320
323
|
self.logger.debug("readBswModeSwitchEvent %s" % short_name)
|
|
321
324
|
event = parent.createBswModeSwitchEvent(short_name)
|
|
@@ -323,29 +326,29 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
323
326
|
self.readBswScheduleEvent(child_element, event)
|
|
324
327
|
|
|
325
328
|
def readBswTimingEvent(self, element: ET.Element, parent: BswInternalBehavior):
|
|
326
|
-
for child_element in
|
|
329
|
+
for child_element in self.findall(element, "EVENTS/BSW-TIMING-EVENT"):
|
|
327
330
|
short_name = self.getShortName(child_element)
|
|
328
|
-
self.logger.debug("
|
|
331
|
+
self.logger.debug("read BswTimingEvent %s" % short_name)
|
|
329
332
|
event = parent.createBswTimingEvent(short_name)
|
|
330
|
-
event.
|
|
333
|
+
event.setPeriod(self.getChildElementOptionalTimeValue(child_element, "PERIOD"))
|
|
331
334
|
# Read the Inherit BswScheduleEvent
|
|
332
335
|
self.readBswScheduleEvent(child_element, event)
|
|
333
336
|
|
|
334
337
|
def readBswDataReceivedEvent(self, element: ET.Element, parent: BswInternalBehavior):
|
|
335
|
-
for child_element in
|
|
338
|
+
for child_element in self.findall(element, "EVENTS/BSW-DATA-RECEIVED-EVENT"):
|
|
336
339
|
short_name = self.getShortName(child_element)
|
|
337
340
|
self.logger.debug("readBswDataReceivedEvent %s" % short_name)
|
|
338
341
|
event = parent.createBswDataReceivedEvent(short_name)
|
|
339
|
-
event.
|
|
342
|
+
event.dataRef = self.getChildElementRefType(parent.getShortName(), child_element, "DATA-REF")
|
|
340
343
|
# Read the Inherit BswScheduleEvent
|
|
341
344
|
self.readBswScheduleEvent(child_element, event)
|
|
342
345
|
|
|
343
346
|
def readBswInternalTriggerOccurredEvent(self, element: ET.Element, parent: BswInternalBehavior):
|
|
344
|
-
for child_element in self.findall(element, "
|
|
347
|
+
for child_element in self.findall(element, "EVENTS/BSW-INTERNAL-TRIGGER-OCCURRED-EVENT"):
|
|
345
348
|
short_name = self.getShortName(child_element)
|
|
346
349
|
self.logger.debug("readBswInternalTriggerOccurredEvent %s" % short_name)
|
|
347
350
|
event = parent.createBswInternalTriggerOccurredEvent(short_name)
|
|
348
|
-
event.
|
|
351
|
+
event.eventSourceRef = self.getChildElementRefType(parent.getShortName(), child_element, "EVENT-SOURCE-REF")
|
|
349
352
|
# Read the Inherit BswScheduleEvent
|
|
350
353
|
self.readBswScheduleEvent(child_element, event)
|
|
351
354
|
|
|
@@ -356,7 +359,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
356
359
|
return policy
|
|
357
360
|
|
|
358
361
|
def readBswInternalBehaviorModeSenderPolicy(self, element: ET.Element, parent: BswInternalBehavior):
|
|
359
|
-
for child_element in self.findall(element, "
|
|
362
|
+
for child_element in self.findall(element, "MODE-SENDER-POLICYS/*"):
|
|
360
363
|
tag_name = self.getTagName(child_element)
|
|
361
364
|
if tag_name == "BSW-MODE-SENDER-POLICY":
|
|
362
365
|
parent.addModeSenderPolicy(self.getBswModeSenderPolicy(child_element))
|
|
@@ -385,9 +388,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
385
388
|
|
|
386
389
|
def getRoleBasedDataAssignment(self, element: ET.Element) -> RoleBasedDataAssignment:
|
|
387
390
|
assignment = RoleBasedDataAssignment()
|
|
388
|
-
assignment.
|
|
389
|
-
|
|
390
|
-
|
|
391
|
+
assignment.setRole(self.getChildElementOptionalLiteral(element, "ROLE")) \
|
|
392
|
+
.setUsedParameterElement(self.getAutosarParameterRef(element, "USED-PARAMETER-ELEMENT")) \
|
|
393
|
+
.setUsedPimRef(self.getChildElementOptionalRefType(element, "USED-PIM-REF"))
|
|
391
394
|
return assignment
|
|
392
395
|
|
|
393
396
|
def getRoleBasedPortAssignment(self, element: ET.Element) -> RoleBasedPortAssignment:
|
|
@@ -395,12 +398,24 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
395
398
|
assignment.portPrototypeRef = self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF")
|
|
396
399
|
assignment.role = self.getChildElementOptionalLiteral(element, "ROLE")
|
|
397
400
|
return assignment
|
|
401
|
+
|
|
402
|
+
def getRoleBasedDataTypeAssignment(self, element: ET.Element) -> RoleBasedDataTypeAssignment:
|
|
403
|
+
assignment = RoleBasedDataTypeAssignment()
|
|
404
|
+
assignment.setRole(self.getChildElementOptionalLiteral(element, "ROLE"))
|
|
405
|
+
assignment.setUsedImplementationDataTypeRef(self.getChildElementOptionalRefType(element, "USED-IMPLEMENTATION-DATA-TYPE-REF"))
|
|
406
|
+
return assignment
|
|
398
407
|
|
|
399
408
|
def readServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
|
|
400
409
|
self.readIdentifiable(element, dependency)
|
|
410
|
+
for child_element in self.findall(element, "ASSIGNED-DATA-TYPES/*"):
|
|
411
|
+
tag_name = self.getTagName(child_element.tag)
|
|
412
|
+
if (tag_name == "ROLE-BASED-DATA-TYPE-ASSIGNMENT"):
|
|
413
|
+
dependency.addAssignedDataType(self.getRoleBasedDataTypeAssignment(child_element))
|
|
414
|
+
else:
|
|
415
|
+
self._raiseError("Unsupported assigned data type <%s>" % tag_name)
|
|
401
416
|
|
|
402
417
|
def readSwcServiceDependencyAssignedData(self, element: ET.Element, dependency: SwcServiceDependency):
|
|
403
|
-
for child_element in
|
|
418
|
+
for child_element in self.findall(element, "ASSIGNED-DATAS/*"):
|
|
404
419
|
tag_name = self.getTagName(child_element.tag)
|
|
405
420
|
if (tag_name == "ROLE-BASED-DATA-ASSIGNMENT"):
|
|
406
421
|
dependency.AddAssignedData(self.getRoleBasedDataAssignment(child_element))
|
|
@@ -418,27 +433,93 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
418
433
|
def readNvBlockNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
419
434
|
short_name = self.getShortName(element)
|
|
420
435
|
needs = parent.createNvBlockNeeds(short_name)
|
|
421
|
-
self.logger.debug("
|
|
422
|
-
needs.
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
436
|
+
self.logger.debug("read NvBlockNeeds %s" % short_name)
|
|
437
|
+
needs.setCalcRamBlockCrc(self.getChildElementOptionalBooleanValue(element, "CALC-RAM-BLOCK-CRC")) \
|
|
438
|
+
.setCheckStaticBlockId(self.getChildElementOptionalBooleanValue(element, "CHECK-STATIC-BLOCK-ID")) \
|
|
439
|
+
.setNDataSets(self.getChildElementOptionalNumericalValue(element, "N-DATA-SETS")) \
|
|
440
|
+
.setNRomBlocks(self.getChildElementOptionalNumericalValue(element, "N-ROM-BLOCKS")) \
|
|
441
|
+
.setRamBlockStatusControl(self.getChildElementOptionalLiteral(element, "RAM-BLOCK-STATUS-CONTROL")) \
|
|
442
|
+
.setReadonly(self.getChildElementOptionalBooleanValue(element, "READONLY")) \
|
|
443
|
+
.setReliability(self.getChildElementOptionalLiteral(element, "RELIABILITY")) \
|
|
444
|
+
.setResistantToChangedSw(self.getChildElementOptionalBooleanValue(element, "RESISTANT-TO-CHANGED-SW")) \
|
|
445
|
+
.setRestoreAtStart(self.getChildElementOptionalBooleanValue(element, "RESTORE-AT-START")) \
|
|
446
|
+
.setStoreAtShutdown(self.getChildElementOptionalBooleanValue(element, "STORE-AT-SHUTDOWN")) \
|
|
447
|
+
.setStoreCyclic(self.getChildElementOptionalBooleanValue(element, "STORE-CYCLIC")) \
|
|
448
|
+
.setStoreEmergency(self.getChildElementOptionalBooleanValue(element, "STORE-EMERGENCY")) \
|
|
449
|
+
.setStoreImmediate(self.getChildElementOptionalBooleanValue(element, "STORE-IMMEDIATE")) \
|
|
450
|
+
.setUseAutoValidationAtShutDown(self.getChildElementOptionalBooleanValue(element, "USE-AUTO-VALIDATION-AT-SHUT-DOWN")) \
|
|
451
|
+
.setUseCRCCompMechanism(self.getChildElementOptionalBooleanValue(element, "USE-CRC-COMP-MECHANISM")) \
|
|
452
|
+
.setWriteOnlyOnce(self.getChildElementOptionalBooleanValue(element, "WRITE-ONLY-ONCE")) \
|
|
453
|
+
.setWriteVerification(self.getChildElementOptionalBooleanValue(element, "WRITE-VERIFICATION")) \
|
|
454
|
+
.setWritingPriority(self.getChildElementOptionalLiteral(element, "WRITING-PRIORITY"))
|
|
455
|
+
|
|
456
|
+
def reaDiagnosticCommunicationManagerNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
457
|
+
short_name = self.getShortName(element)
|
|
458
|
+
needs = parent.createDiagnosticCommunicationManagerNeeds(short_name)
|
|
459
|
+
self.logger.debug("read DiagnosticCommunicationManagerNeeds %s" % short_name)
|
|
460
|
+
needs.setServiceRequestCallbackType(self.getChildElementOptionalLiteral(element, "SERVICE-REQUEST-CALLBACK-TYPE"))
|
|
461
|
+
|
|
462
|
+
def readDiagnosticRoutineNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
463
|
+
short_name = self.getShortName(element)
|
|
464
|
+
needs = parent.createDiagnosticRoutineNeeds(short_name)
|
|
465
|
+
self.logger.debug("read DiagnosticRoutineNeeds %s" % short_name)
|
|
466
|
+
needs.setDiagRoutineType(self.getChildElementOptionalLiteral(element, "DIAG-ROUTINE-TYPE")) \
|
|
467
|
+
.setRidNumber(self.getChildElementOptionalIntegerValue(element, "RID-NUMBER"))
|
|
468
|
+
|
|
469
|
+
def readDiagnosticValueNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
470
|
+
short_name = self.getShortName(element)
|
|
471
|
+
needs = parent.createDiagnosticValueNeeds(short_name)
|
|
472
|
+
self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
|
|
473
|
+
needs.setDataLength(self.getChildElementOptionalPositiveInteger(element, "DATA-LENGTH")) \
|
|
474
|
+
.setDiagnosticValueAccess(self.getChildElementOptionalLiteral(element, "DIAGNOSTIC-VALUE-ACCESS")) \
|
|
475
|
+
.setDidNumber(self.getChildElementOptionalIntegerValue(element, "DID-NUMBER")) \
|
|
476
|
+
.setFixedLength(self.getChildElementOptionalBooleanValue(element, "FIXED-LENGTH")) \
|
|
477
|
+
.setProcessingStyle(self.getChildElementOptionalLiteral(element, "PROCESSING-STYLE"))
|
|
478
|
+
|
|
479
|
+
def readDiagEventDebounceMonitorInternal(self, element: ET.Element, algorithm: DiagEventDebounceMonitorInternal):
|
|
480
|
+
self.readIdentifiable(element, algorithm)
|
|
481
|
+
|
|
482
|
+
def readDiagEventDebounceAlgorithm(self, element: ET.Element, needs: DiagnosticEventNeeds):
|
|
483
|
+
for child_element in self.findall(element, "DIAG-EVENT-DEBOUNCE-ALGORITHM/*"):
|
|
484
|
+
tag_name = self.getTagName(child_element)
|
|
485
|
+
if tag_name == "DIAG-EVENT-DEBOUNCE-MONITOR-INTERNAL":
|
|
486
|
+
algorithm = needs.createDiagEventDebounceMonitorInternal(self.getShortName(child_element))
|
|
487
|
+
self.readDiagEventDebounceMonitorInternal(child_element, algorithm)
|
|
488
|
+
else:
|
|
489
|
+
self.notImplemented("Unsupported DiagEventDebounceAlgorithm <%s>" % tag_name)
|
|
490
|
+
|
|
491
|
+
def readDiagnosticEventNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
492
|
+
short_name = self.getShortName(element)
|
|
493
|
+
needs = parent.createDiagnosticEventNeeds(short_name)
|
|
494
|
+
self.logger.debug("read DiagnosticEventNeeds %s" % short_name)
|
|
495
|
+
|
|
496
|
+
self.readDiagEventDebounceAlgorithm(element, needs)
|
|
497
|
+
needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND")) \
|
|
498
|
+
.setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
|
|
499
|
+
|
|
500
|
+
def readCryptoServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
501
|
+
short_name = self.getShortName(element)
|
|
502
|
+
needs = parent.createCryptoServiceNeeds(short_name)
|
|
503
|
+
self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
|
|
504
|
+
needs.setMaximumKeyLength(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-KEY-LENGTH"))
|
|
434
505
|
|
|
435
506
|
def readSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
436
507
|
for child_element in element.findall("./xmlns:SERVICE-NEEDS/*", self.nsmap):
|
|
437
508
|
tag_name = self.getTagName(child_element.tag)
|
|
438
509
|
if tag_name == "NV-BLOCK-NEEDS":
|
|
439
510
|
self.readNvBlockNeeds(child_element, parent)
|
|
511
|
+
elif tag_name == "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS":
|
|
512
|
+
self.reaDiagnosticCommunicationManagerNeeds(child_element, parent)
|
|
513
|
+
elif tag_name == "DIAGNOSTIC-ROUTINE-NEEDS":
|
|
514
|
+
self.readDiagnosticRoutineNeeds(child_element, parent)
|
|
515
|
+
elif tag_name == "DIAGNOSTIC-VALUE-NEEDS":
|
|
516
|
+
self.readDiagnosticValueNeeds(child_element, parent)
|
|
517
|
+
elif tag_name == "DIAGNOSTIC-EVENT-NEEDS":
|
|
518
|
+
self.readDiagnosticEventNeeds(child_element, parent)
|
|
519
|
+
elif tag_name == "CRYPTO-SERVICE-NEEDS":
|
|
520
|
+
self.readCryptoServiceNeeds(child_element, parent)
|
|
440
521
|
else:
|
|
441
|
-
self.
|
|
522
|
+
self.notImplemented("Unsupported service needs <%s>" % tag_name)
|
|
442
523
|
|
|
443
524
|
def readSwcServiceDependency(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
444
525
|
short_name = self.getShortName(element)
|
|
@@ -461,7 +542,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
461
542
|
include_data_type_sets = []
|
|
462
543
|
for child_element in self.findall(element, "./INCLUDED-DATA-TYPE-SETS/INCLUDED-DATA-TYPE-SET"):
|
|
463
544
|
include_data_type_set = IncludedDataTypeSet()
|
|
464
|
-
self.
|
|
545
|
+
self.readARObjectAttributes(child_element, include_data_type_set)
|
|
465
546
|
for ref_type in self.getChildElementRefTypeList(child_element, "./DATA-TYPE-REFS/DATA-TYPE-REF"):
|
|
466
547
|
include_data_type_set.addDataTypeRef(ref_type)
|
|
467
548
|
include_data_type_sets.append(include_data_type_set)
|
|
@@ -542,7 +623,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
542
623
|
self.logger.debug("readBswModuleEntry %s" % entry.getShortName())
|
|
543
624
|
|
|
544
625
|
def readEngineeringObject(self, element: ET.Element, engineering_obj: EngineeringObject):
|
|
545
|
-
self.
|
|
626
|
+
self.readARObjectAttributes(element, engineering_obj)
|
|
546
627
|
engineering_obj.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
547
628
|
.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY"))
|
|
548
629
|
|
|
@@ -576,14 +657,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
576
657
|
|
|
577
658
|
def readMemorySections(self, element: ET.Element, consumption: ResourceConsumption):
|
|
578
659
|
for child_element in element.findall("./xmlns:MEMORY-SECTIONS/xmlns:MEMORY-SECTION", self.nsmap):
|
|
579
|
-
|
|
580
|
-
memory_section = consumption.createMemorySection(short_name)
|
|
660
|
+
memory_section = consumption.createMemorySection(self.getShortName(child_element))
|
|
581
661
|
self.readIdentifiable(child_element, memory_section)
|
|
582
|
-
memory_section.setAlignment(self.getChildElementOptionalLiteral(child_element, "ALIGNMENT"))
|
|
662
|
+
memory_section.setAlignment(self.getChildElementOptionalLiteral(child_element, "ALIGNMENT")) \
|
|
663
|
+
.setMemClassSymbol(self.getChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL"))
|
|
583
664
|
self.readMemorySectionOptions(child_element, memory_section)
|
|
584
|
-
memory_section.
|
|
585
|
-
|
|
586
|
-
|
|
665
|
+
memory_section.setSize(self.getChildElementOptionalNumericalValue(child_element, "SIZE")) \
|
|
666
|
+
.setSwAddrMethodRef(self.getChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF")) \
|
|
667
|
+
.setSymbol(self.getChildElementOptionalLiteral(child_element, "SYMBOL"))
|
|
587
668
|
self.logger.debug("readMemorySections %s" % memory_section.getShortName())
|
|
588
669
|
|
|
589
670
|
def readResourceConsumption(self, element: ET.Element, impl: Implementation):
|
|
@@ -669,11 +750,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
669
750
|
self._readVariableAccesses(element, parent, "READ-LOCAL-VARIABLES")
|
|
670
751
|
|
|
671
752
|
def readROperationIRef(self, element: ET.Element, key: str, parent: ServerCallPoint):
|
|
672
|
-
child_element =
|
|
753
|
+
child_element = self.find(element, key)
|
|
673
754
|
if (child_element is not None):
|
|
674
755
|
operation_iref = ROperationInAtomicSwcInstanceRef()
|
|
675
|
-
|
|
676
|
-
operation_iref.
|
|
756
|
+
self.readARObjectAttributes(child_element, operation_iref)
|
|
757
|
+
operation_iref.setContextRPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF")) \
|
|
758
|
+
.setTargetRequiredOperationRef(self.getChildElementOptionalRefType(child_element, "TARGET-REQUIRED-OPERATION-REF"))
|
|
677
759
|
parent.setOperationIRef(operation_iref)
|
|
678
760
|
|
|
679
761
|
def readRVariableInAtomicSwcInstanceRef(self, element: ET.Element, parent: DataReceivedEvent):
|
|
@@ -685,7 +767,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
685
767
|
parent.setDataIRef(data_iref)
|
|
686
768
|
|
|
687
769
|
def readRModeInAtomicSwcInstanceRef(self, element: ET.Element, parent: SwcModeSwitchEvent):
|
|
688
|
-
for child_element in
|
|
770
|
+
for child_element in self.findall(element, "MODE-IREFS/MODE-IREF"):
|
|
689
771
|
mode_iref = RModeInAtomicSwcInstanceRef()
|
|
690
772
|
mode_iref.setContextPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF")) \
|
|
691
773
|
.setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
|
|
@@ -767,18 +849,23 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
767
849
|
if tag_name == "RUNNABLE-ENTITY-ARGUMENT":
|
|
768
850
|
entity.addArgument(self.getRunnableEntityArgument(child_element))
|
|
769
851
|
else:
|
|
770
|
-
|
|
852
|
+
self.notImplemented("Unsupported Arguments of runnable entity <%s>" % tag_name)
|
|
853
|
+
|
|
854
|
+
def readAsynchronousServerCallResultPoint(self, element: ET.Element, entity: RunnableEntity):
|
|
855
|
+
for child_element in self.findall(element, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINTS/ASYNCHRONOUS-SERVER-CALL-RESULT-POINT"):
|
|
856
|
+
point = entity.createAsynchronousServerCallResultPoint(self.getShortName(child_element))
|
|
857
|
+
self.readIdentifiable(child_element, point)
|
|
858
|
+
point.setAsynchronousServerCallPointRef(self.getChildElementOptionalRefType(child_element, "ASYNCHRONOUS-SERVER-CALL-POINT-REF"))
|
|
771
859
|
|
|
772
860
|
def readRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
|
|
773
861
|
self.readExecutableEntity(element, entity)
|
|
774
862
|
self.readRunnableEntityArguments(element, entity)
|
|
775
863
|
|
|
864
|
+
self.readAsynchronousServerCallResultPoint(element, entity)
|
|
776
865
|
entity.setCanBeInvokedConcurrently(self.getChildElementOptionalBooleanValue(element, "CAN-BE-INVOKED-CONCURRENTLY"))
|
|
777
|
-
|
|
778
|
-
|
|
866
|
+
self.readDataReadAccesses(element, entity)
|
|
779
867
|
self.readDataReceivePointByArguments(element, entity)
|
|
780
868
|
self.readDataReceivePointByValues(element, entity)
|
|
781
|
-
self.readDataReadAccesses(element, entity)
|
|
782
869
|
self.readDataWriteAccesses(element, entity)
|
|
783
870
|
self.readDataSendPoints(element, entity)
|
|
784
871
|
self.readInternalBehaviorServerCallPoint(element, entity)
|
|
@@ -789,6 +876,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
789
876
|
self.readReadLocalVariables(element, entity)
|
|
790
877
|
self.readWrittenLocalVariables(element, entity)
|
|
791
878
|
|
|
879
|
+
entity.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
880
|
+
|
|
792
881
|
def readSwcInternalBehaviorRunnables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
793
882
|
for child_element in self.findall(element, "RUNNABLES/RUNNABLE-ENTITY"):
|
|
794
883
|
short_name = self.getShortName(child_element)
|
|
@@ -812,17 +901,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
812
901
|
iref = self.getRModeInAtomicSwcInstanceRef(child_element)
|
|
813
902
|
event.addDisabledModeIRef(iref)
|
|
814
903
|
|
|
815
|
-
def
|
|
816
|
-
child_element =
|
|
904
|
+
def readPOperationIRef(self, element: ET.Element, key: str, parent: OperationInvokedEvent):
|
|
905
|
+
child_element = self.find(element, key)
|
|
817
906
|
if (child_element is not None):
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
907
|
+
operation_iref = POperationInAtomicSwcInstanceRef()
|
|
908
|
+
self.readARObjectAttributes(child_element, operation_iref)
|
|
909
|
+
operation_iref.setContextPPortRef(self.getChildElementRefType(parent.getShortName(), child_element, "CONTEXT-P-PORT-REF")) \
|
|
910
|
+
.setTargetProvidedOperationRef(self.getChildElementRefType(parent.getShortName(), child_element, "TARGET-PROVIDED-OPERATION-REF"))
|
|
911
|
+
parent.setOperationIRef(operation_iref)
|
|
821
912
|
|
|
822
913
|
def readOperationInvokedEvent(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
823
914
|
short_name = self.getShortName(element)
|
|
824
915
|
event = parent.createOperationInvokedEvent(short_name)
|
|
825
|
-
self.
|
|
916
|
+
self.readPOperationIRef(element, "OPERATION-IREF", event)
|
|
826
917
|
self.readRTEEvent(element, event)
|
|
827
918
|
|
|
828
919
|
def readVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
|
|
@@ -830,13 +921,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
830
921
|
prototype.setInitValue(self.getInitValue(element))
|
|
831
922
|
|
|
832
923
|
def readExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
833
|
-
for child_element in
|
|
924
|
+
for child_element in self.findall(element, "EXPLICIT-INTER-RUNNABLE-VARIABLES/VARIABLE-DATA-PROTOTYPE"):
|
|
834
925
|
short_name = self.getShortName(child_element)
|
|
835
926
|
prototype = parent.createExplicitInterRunnableVariable(short_name)
|
|
836
927
|
self.readVariableDataPrototype(child_element, prototype)
|
|
837
928
|
|
|
838
929
|
def readPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
839
|
-
for child_element in
|
|
930
|
+
for child_element in self.findall(element, "PER-INSTANCE-MEMORYS/PER-INSTANCE-MEMORY"):
|
|
840
931
|
short_name = self.getShortName(child_element)
|
|
841
932
|
memory = behavior.createPerInstanceMemory(short_name)
|
|
842
933
|
self.readIdentifiable(child_element, memory)
|
|
@@ -855,26 +946,26 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
855
946
|
prototype.setInitValue(self.getInitValue(element))
|
|
856
947
|
|
|
857
948
|
def readPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
858
|
-
for child_element in
|
|
949
|
+
for child_element in self.findall(element, "PER-INSTANCE-PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
859
950
|
short_name = self.getShortName(child_element)
|
|
860
951
|
prototype = behavior.createPerInstanceParameter(short_name)
|
|
861
952
|
self.readParameterDataPrototype(child_element, prototype)
|
|
862
953
|
|
|
863
954
|
def readPortDefinedArgumentValue(self, element: ET.Element) -> PortDefinedArgumentValue:
|
|
864
955
|
argument_value = PortDefinedArgumentValue()
|
|
865
|
-
child_element =
|
|
956
|
+
child_element = self.find(element, "VALUE/*")
|
|
866
957
|
if child_element is not None:
|
|
867
958
|
argument_value.value = self.getValueSpecification(child_element)
|
|
868
959
|
argument_value.valueTypeTRef = self.getChildElementOptionalRefType(element, "VALUE-TYPE-TREF")
|
|
869
960
|
return argument_value
|
|
870
961
|
|
|
871
962
|
def readPortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
872
|
-
for child_element in
|
|
963
|
+
for child_element in self.findall(element, "PORT-API-OPTIONS/PORT-API-OPTION"):
|
|
873
964
|
option = PortAPIOption()
|
|
874
965
|
option.enableTakeAddress = self.getChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS")
|
|
875
966
|
option.indirectAPI = self.getChildElementOptionalBooleanValue(child_element, "INDIRECT-API")
|
|
876
967
|
option.portRef = self.getChildElementOptionalRefType(child_element, "PORT-REF")
|
|
877
|
-
for argument_value_tag in
|
|
968
|
+
for argument_value_tag in self.findall(child_element, "PORT-ARG-VALUES/PORT-DEFINED-ARGUMENT-VALUE"):
|
|
878
969
|
option.addPortArgValue(self.readPortDefinedArgumentValue(argument_value_tag))
|
|
879
970
|
behavior.addPortAPIOption(option)
|
|
880
971
|
|
|
@@ -882,8 +973,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
882
973
|
short_name = self.getShortName(element)
|
|
883
974
|
event = parent.createTimingEvent(short_name)
|
|
884
975
|
self.readRTEEvent(element, event)
|
|
885
|
-
event.
|
|
886
|
-
|
|
976
|
+
event.setOffset(self.getChildElementOptionalTimeValue(element, "OFFSET")) \
|
|
977
|
+
.setPeriod(self.getChildElementOptionalTimeValue(element, "PERIOD"))
|
|
887
978
|
|
|
888
979
|
def readDataReceivedEvent(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
889
980
|
short_name = self.getShortName(element)
|
|
@@ -895,22 +986,28 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
895
986
|
short_name = self.getShortName(element)
|
|
896
987
|
event = parent.createSwcModeSwitchEvent(short_name)
|
|
897
988
|
self.readRTEEvent(element, event)
|
|
898
|
-
event.
|
|
989
|
+
event.setActivation(self.getChildElementOptionalLiteral(element, "ACTIVATION"))
|
|
899
990
|
self.readRModeInAtomicSwcInstanceRef(element, event)
|
|
900
991
|
|
|
901
992
|
def readInternalTriggerOccurredEvent(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
902
993
|
short_name = self.getShortName(element)
|
|
903
994
|
event = parent.createInternalTriggerOccurredEvent(short_name)
|
|
904
995
|
self.readRTEEvent(element, event)
|
|
905
|
-
event.
|
|
996
|
+
event.setEventSourceRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
|
|
906
997
|
|
|
907
998
|
def readInitEvent(self, element, parent: SwcInternalBehavior):
|
|
908
999
|
short_name = self.getShortName(element)
|
|
909
1000
|
event = parent.createInitEvent(short_name)
|
|
910
1001
|
self.readRTEEvent(element, event)
|
|
911
1002
|
|
|
1003
|
+
def readAsynchronousServerCallReturnsEvent(self, element, parent: SwcInternalBehavior):
|
|
1004
|
+
short_name = self.getShortName(element)
|
|
1005
|
+
event = parent.createAsynchronousServerCallReturnsEvent(short_name)
|
|
1006
|
+
self.readRTEEvent(element, event)
|
|
1007
|
+
event.setActivationReasonRepresentationRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
|
|
1008
|
+
|
|
912
1009
|
def readSwcInternalBehaviorEvents(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
913
|
-
for child_element in
|
|
1010
|
+
for child_element in self.findall(element, "EVENTS/*"):
|
|
914
1011
|
tag_name = self.getTagName(child_element.tag)
|
|
915
1012
|
if tag_name == "TIMING-EVENT":
|
|
916
1013
|
self.readTimingEvent(child_element, parent)
|
|
@@ -924,19 +1021,21 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
924
1021
|
self.readInternalTriggerOccurredEvent(child_element, parent)
|
|
925
1022
|
elif tag_name == "INIT-EVENT":
|
|
926
1023
|
self.readInitEvent(child_element, parent)
|
|
1024
|
+
elif tag_name == "ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT":
|
|
1025
|
+
self.readAsynchronousServerCallReturnsEvent(child_element, parent)
|
|
927
1026
|
else:
|
|
928
|
-
self.
|
|
1027
|
+
self.notImplemented("Unsupported SwcInternalBehavior Event <%s>" % tag_name)
|
|
929
1028
|
|
|
930
1029
|
def readSwPointerTargetProps(self, element: ET.Element, parent: SwDataDefProps):
|
|
931
1030
|
child_element = self.find(element, "SW-POINTER-TARGET-PROPS")
|
|
932
1031
|
if child_element is not None:
|
|
933
1032
|
sw_pointer_target_props = SwPointerTargetProps()
|
|
934
|
-
sw_pointer_target_props.
|
|
935
|
-
|
|
1033
|
+
sw_pointer_target_props.setTargetCategory(self.getChildElementOptionalLiteral(child_element, "TARGET-CATEGORY")) \
|
|
1034
|
+
.setSwDataDefProps(self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS"))
|
|
936
1035
|
parent.swPointerTargetProps = sw_pointer_target_props
|
|
937
1036
|
|
|
938
1037
|
def readLanguageSpecific(self, element: ET.Element, specific: LanguageSpecific):
|
|
939
|
-
self.
|
|
1038
|
+
self.readARObjectAttributes(element, specific)
|
|
940
1039
|
specific.value = element.text
|
|
941
1040
|
if 'L' in element.attrib:
|
|
942
1041
|
specific.l = element.attrib['L']
|
|
@@ -953,7 +1052,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
953
1052
|
paragraphs = []
|
|
954
1053
|
for child_element in self.findall(element, key):
|
|
955
1054
|
paragraph = MultiLanguageParagraph()
|
|
956
|
-
self.
|
|
1055
|
+
self.readARObjectAttributes(child_element, paragraph)
|
|
957
1056
|
for l1 in self.getLParagraphs(child_element, "L-1"):
|
|
958
1057
|
paragraph.addL1(l1)
|
|
959
1058
|
paragraphs.append(paragraph)
|
|
@@ -986,13 +1085,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
986
1085
|
child_element = self.find(element, key)
|
|
987
1086
|
if child_element is not None:
|
|
988
1087
|
paragraph = MultiLanguagePlainText()
|
|
989
|
-
self.
|
|
1088
|
+
self.readARObjectAttributes(child_element, paragraph)
|
|
990
1089
|
for l10 in self.getLPlainTexts(child_element, "L-10"):
|
|
991
1090
|
paragraph.addL10(l10)
|
|
992
1091
|
return paragraph
|
|
993
1092
|
|
|
994
1093
|
def readDocumentationBlock(self, element: ET.Element, block: DocumentationBlock):
|
|
995
|
-
self.
|
|
1094
|
+
self.readARObjectAttributes(element, block)
|
|
996
1095
|
for paragraph in self.getMultiLanguageParagraphs(element, "P"):
|
|
997
1096
|
block.addP(paragraph)
|
|
998
1097
|
for list in self.getListElements(element, "LIST"):
|
|
@@ -1021,7 +1120,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1021
1120
|
|
|
1022
1121
|
def getAnnotations(self, element: ET.Element) -> List[Annotation]:
|
|
1023
1122
|
annotations = []
|
|
1024
|
-
for child_element in
|
|
1123
|
+
for child_element in self.findall(element, "ANNOTATIONS/ANNOTATION"):
|
|
1025
1124
|
annotation = Annotation()
|
|
1026
1125
|
self.readGeneralAnnotation(child_element, annotation)
|
|
1027
1126
|
annotations.append(annotation)
|
|
@@ -1029,7 +1128,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1029
1128
|
|
|
1030
1129
|
def getSwAxisIndividual(self, element: ET.Element) -> SwAxisIndividual:
|
|
1031
1130
|
props = SwAxisIndividual()
|
|
1032
|
-
self.
|
|
1131
|
+
self.readARObjectAttributes(element, props)
|
|
1033
1132
|
props.setInputVariableTypeRef(self.getChildElementOptionalRefType(element, "INPUT-VARIABLE-TYPE-REF")) \
|
|
1034
1133
|
.setCompuMethodRef(self.getChildElementOptionalRefType(element, "COMPU-METHOD-REF")) \
|
|
1035
1134
|
.setSwMaxAxisPoints(self.getChildElementOptionalNumericalValue(element, "SW-MAX-AXIS-POINTS")) \
|
|
@@ -1046,10 +1145,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1046
1145
|
axis = SwCalprmAxis()
|
|
1047
1146
|
axis.sw_axis_index = self.getChildElementOptionalNumericalValue(element, "SW-AXIS-INDEX")
|
|
1048
1147
|
axis.category = self.getChildElementOptionalLiteral(element, "CATEGORY")
|
|
1049
|
-
child_element =
|
|
1148
|
+
child_element = self.find(element, "SW-AXIS-INDIVIDUAL")
|
|
1050
1149
|
if child_element is not None:
|
|
1051
1150
|
axis.sw_calprm_axis_type_props = self.getSwAxisIndividual(child_element)
|
|
1052
|
-
child_element =
|
|
1151
|
+
child_element = self.find(element, "SW-AXIS-GROUPED")
|
|
1053
1152
|
if child_element is not None:
|
|
1054
1153
|
axis.sw_calprm_axis_type_props = self.getSwAxisGrouped(child_element)
|
|
1055
1154
|
|
|
@@ -1057,7 +1156,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1057
1156
|
|
|
1058
1157
|
def getSwCalprmAxisSet(self, element: ET.Element, key: str) -> SwCalprmAxisSet:
|
|
1059
1158
|
set = SwCalprmAxisSet()
|
|
1060
|
-
for child_element in
|
|
1159
|
+
for child_element in self.findall(element, "%s/*" % key):
|
|
1061
1160
|
tag_name = self.getTagName(child_element.tag)
|
|
1062
1161
|
if tag_name == "SW-CALPRM-AXIS":
|
|
1063
1162
|
set.addSwCalprmAxis(self.getSwCalprmAxis(child_element))
|
|
@@ -1069,13 +1168,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1069
1168
|
props.setInvalidValue(self.getValueSpecification(child_element))
|
|
1070
1169
|
|
|
1071
1170
|
def getSwDataDefProps(self, element: ET.Element, key: str) -> SwDataDefProps:
|
|
1072
|
-
child_element =
|
|
1171
|
+
child_element = self.find(element, key)
|
|
1073
1172
|
sw_data_def_props = None
|
|
1074
1173
|
if child_element is not None:
|
|
1075
|
-
conditional_tag =
|
|
1174
|
+
conditional_tag = self.find(child_element, "SW-DATA-DEF-PROPS-VARIANTS/SW-DATA-DEF-PROPS-CONDITIONAL")
|
|
1076
1175
|
if conditional_tag is not None:
|
|
1077
1176
|
sw_data_def_props = SwDataDefProps()
|
|
1078
|
-
self.
|
|
1177
|
+
self.readARObjectAttributes(child_element, sw_data_def_props)
|
|
1079
1178
|
|
|
1080
1179
|
for annotation in self.getAnnotations(conditional_tag):
|
|
1081
1180
|
sw_data_def_props.addAnnotation(annotation)
|
|
@@ -1083,6 +1182,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1083
1182
|
sw_data_def_props.setBaseTypeRef(self.getChildElementOptionalRefType(conditional_tag, "BASE-TYPE-REF")) \
|
|
1084
1183
|
.setDataConstrRef(self.getChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF")) \
|
|
1085
1184
|
.setCompuMethodRef(self.getChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF")) \
|
|
1185
|
+
.setSwAddrMethodRef(self.getChildElementOptionalRefType(conditional_tag, "SW-ADDR-METHOD-REF")) \
|
|
1086
1186
|
.setSwImplPolicy(self.getChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY")) \
|
|
1087
1187
|
.setSwIntendedResolution(self.getChildElementOptionalNumericalValue(conditional_tag, "SW-INTENDED-RESOLUTION")) \
|
|
1088
1188
|
.setImplementationDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF")) \
|
|
@@ -1093,7 +1193,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1093
1193
|
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1094
1194
|
self.readSwDataDefProsInvalidValue(conditional_tag, sw_data_def_props)
|
|
1095
1195
|
self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
1096
|
-
self.
|
|
1196
|
+
self.readARObjectAttributes(conditional_tag, sw_data_def_props.conditional)
|
|
1097
1197
|
return sw_data_def_props
|
|
1098
1198
|
|
|
1099
1199
|
def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
@@ -1110,7 +1210,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1110
1210
|
prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
|
|
1111
1211
|
|
|
1112
1212
|
def readApplicationRecordElements(self, element: ET.Element, parent: ApplicationRecordDataType):
|
|
1113
|
-
for child_element in
|
|
1213
|
+
for child_element in self.findall(element, "ELEMENTS/APPLICATION-RECORD-ELEMENT"):
|
|
1114
1214
|
short_name = self.getShortName(child_element)
|
|
1115
1215
|
record_element = parent.createApplicationRecordElement(short_name)
|
|
1116
1216
|
self.logger.debug("readApplicationRecordElements %s" % short_name)
|
|
@@ -1127,10 +1227,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1127
1227
|
|
|
1128
1228
|
def readImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
|
|
1129
1229
|
for child_element in self.findall(element, "SUB-ELEMENTS/IMPLEMENTATION-DATA-TYPE-ELEMENT"):
|
|
1130
|
-
|
|
1131
|
-
type_element = parent.createImplementationDataTypeElement(short_name)
|
|
1230
|
+
type_element = parent.createImplementationDataTypeElement(self.getShortName(child_element))
|
|
1132
1231
|
self.readIdentifiable(child_element, type_element)
|
|
1133
1232
|
type_element.setArraySize(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE")) \
|
|
1233
|
+
.setArraySizeHandling(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING")) \
|
|
1134
1234
|
.setArraySizeSemantics(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS"))
|
|
1135
1235
|
self.readImplementationDataTypeElements(child_element, type_element)
|
|
1136
1236
|
type_element.setSwDataDefProps(self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS"))
|
|
@@ -1139,6 +1239,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1139
1239
|
short_name = self.getShortName(element)
|
|
1140
1240
|
data_type = parent.createImplementationDataType(short_name)
|
|
1141
1241
|
self.readAutosarDataType(element, data_type)
|
|
1242
|
+
data_type.setDynamicArraySizeProfile(self.getChildElementOptionalLiteral(element, "DYNAMIC-ARRAY-SIZE-PROFILE"))
|
|
1142
1243
|
self.readImplementationDataTypeElements(element, data_type)
|
|
1143
1244
|
data_type.setTypeEmitter(self.getChildElementOptionalLiteral(element, "TYPE-EMITTER"))
|
|
1144
1245
|
|
|
@@ -1183,7 +1284,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1183
1284
|
self.readBaseTypeDirectDefinition(element, data_type.baseTypeDefinition)
|
|
1184
1285
|
|
|
1185
1286
|
def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key:str) -> ApplicationCompositeElementInPortInterfaceInstanceRef:
|
|
1186
|
-
child_element =
|
|
1287
|
+
child_element = self.find(element, key)
|
|
1187
1288
|
iref = None
|
|
1188
1289
|
if child_element is not None:
|
|
1189
1290
|
iref = ApplicationCompositeElementInPortInterfaceInstanceRef()
|
|
@@ -1194,25 +1295,26 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1194
1295
|
def getCompositeNetworkRepresentation(self, element: ET.Element) -> CompositeNetworkRepresentation:
|
|
1195
1296
|
self.logger.debug("getCompositeNetworkRepresentation")
|
|
1196
1297
|
representation = CompositeNetworkRepresentation()
|
|
1197
|
-
representation.
|
|
1198
|
-
|
|
1298
|
+
representation.setLeafElementIRef(self.getApplicationCompositeElementInPortInterfaceInstanceRef(element, "LEAF-ELEMENT-IREF")) \
|
|
1299
|
+
.setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION"))
|
|
1199
1300
|
return representation
|
|
1200
1301
|
|
|
1201
1302
|
def readReceiverComSpec(self, element: ET.Element, com_spec: ReceiverComSpec):
|
|
1202
|
-
self.
|
|
1303
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1203
1304
|
for child_element in self.findall(element, "COMPOSITE-NETWORK-REPRESENTATIONS/COMPOSITE-NETWORK-REPRESENTATION"):
|
|
1204
1305
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
1205
|
-
com_spec.
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1306
|
+
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF")) \
|
|
1307
|
+
.setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION")) \
|
|
1308
|
+
.setHandleOutOfRange(self.getChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE")) \
|
|
1309
|
+
.setHandleOutOfRangeStatus(self.getChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE-STATUS")) \
|
|
1310
|
+
.setUsesEndToEndProtection(self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION"))
|
|
1209
1311
|
|
|
1210
1312
|
def getSwValues(self, element: ET.Element, key: str) -> SwValues:
|
|
1211
1313
|
child_element = element.find("./xmlns:%s" % key, self.nsmap) # type: ET.Element
|
|
1212
1314
|
if child_element is None:
|
|
1213
1315
|
return None
|
|
1214
1316
|
sw_values = SwValues()
|
|
1215
|
-
self.
|
|
1317
|
+
self.readARObjectAttributes(child_element, sw_values)
|
|
1216
1318
|
for v in self.getChildElementFloatValueList(child_element, "V"):
|
|
1217
1319
|
sw_values.addV(v)
|
|
1218
1320
|
sw_values.vt = self.getChildElementOptionalLiteral(child_element, "VT")
|
|
@@ -1224,7 +1326,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1224
1326
|
if child_element is not None:
|
|
1225
1327
|
self.logger.debug("getValueList %s" % key)
|
|
1226
1328
|
value_list = ValueList()
|
|
1227
|
-
self.
|
|
1329
|
+
self.readARObjectAttributes(child_element, value_list)
|
|
1228
1330
|
value_list.v = self.getChildElementOptionalFloatValue(child_element, "V")
|
|
1229
1331
|
return value_list
|
|
1230
1332
|
|
|
@@ -1234,7 +1336,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1234
1336
|
if child_element is not None:
|
|
1235
1337
|
self.logger.debug("getSwValueCont")
|
|
1236
1338
|
cont = SwValueCont()
|
|
1237
|
-
self.
|
|
1339
|
+
self.readARObjectAttributes(child_element, cont)
|
|
1238
1340
|
cont.unit_ref = self.getChildElementOptionalRefType(child_element, "UNIT-REF")
|
|
1239
1341
|
cont.sw_arraysize = self.getValueList(child_element, "SW-ARRAYSIZE")
|
|
1240
1342
|
cont.sw_values_phys = self.getSwValues(child_element, "SW-VALUES-PHYS")
|
|
@@ -1257,43 +1359,43 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1257
1359
|
|
|
1258
1360
|
def getClientComSpec(self, element: ET.Element) -> ClientComSpec:
|
|
1259
1361
|
com_spec = ClientComSpec()
|
|
1260
|
-
self.
|
|
1362
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1261
1363
|
com_spec.operationRef = self.getChildElementOptionalRefType(element, "OPERATION-REF")
|
|
1262
1364
|
return com_spec
|
|
1263
1365
|
|
|
1264
1366
|
def getParameterRequireComSpec(self, element: ET.Element) -> ParameterRequireComSpec:
|
|
1265
1367
|
com_spec = ParameterRequireComSpec()
|
|
1266
|
-
self.
|
|
1368
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1267
1369
|
com_spec.setInitValue(self.getInitValue(element)) \
|
|
1268
1370
|
.setParameterRef(self.getChildElementOptionalRefType(element, "PARAMETER-REF"))
|
|
1269
1371
|
return com_spec
|
|
1270
1372
|
|
|
1271
1373
|
def getQueuedReceiverComSpec(self, element: ET.Element) -> QueuedReceiverComSpec:
|
|
1272
1374
|
com_spec = QueuedReceiverComSpec()
|
|
1273
|
-
self.
|
|
1375
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1274
1376
|
self.readReceiverComSpec(element, com_spec)
|
|
1275
1377
|
com_spec.queueLength = self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH")
|
|
1276
1378
|
return com_spec
|
|
1277
1379
|
|
|
1278
1380
|
def getModeSwitchReceiverComSpec(self, element: ET.Element) -> ModeSwitchReceiverComSpec:
|
|
1279
1381
|
com_spec = ModeSwitchReceiverComSpec()
|
|
1280
|
-
self.
|
|
1382
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1281
1383
|
com_spec.modeGroupRef = self.getChildElementOptionalRefType(element, "MODE-GROUP-REF")
|
|
1282
1384
|
return com_spec
|
|
1283
1385
|
|
|
1284
1386
|
def getNonqueuedReceiverComSpec(self, element: ET.Element) -> NonqueuedReceiverComSpec:
|
|
1285
1387
|
com_spec = NonqueuedReceiverComSpec()
|
|
1286
|
-
self.
|
|
1388
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1287
1389
|
self.readReceiverComSpec(element, com_spec)
|
|
1288
|
-
com_spec.
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1390
|
+
com_spec.setAliveTimeout(self.getChildElementOptionalFloatValue(element, "ALIVE-TIMEOUT")) \
|
|
1391
|
+
.setEnableUpdated(self.getChildElementOptionalBooleanValue(element, "ENABLE-UPDATE")) \
|
|
1392
|
+
.setHandleNeverReceived(self.getChildElementOptionalBooleanValue(element, "HANDLE-NEVER-RECEIVED")) \
|
|
1393
|
+
.setHandleTimeoutType(self.getChildElementOptionalLiteral(element, "HANDLE-TIMEOUT-TYPE")) \
|
|
1394
|
+
.setInitValue(self.getInitValue(element))
|
|
1293
1395
|
return com_spec
|
|
1294
1396
|
|
|
1295
1397
|
def readRequiredComSpec(self, element: ET.Element, parent: RPortPrototype):
|
|
1296
|
-
for child_element in
|
|
1398
|
+
for child_element in self.findall(element, "REQUIRED-COM-SPECS/*"):
|
|
1297
1399
|
tag_name = self.getTagName(child_element.tag)
|
|
1298
1400
|
if tag_name == "NONQUEUED-RECEIVER-COM-SPEC":
|
|
1299
1401
|
parent.addRequiredComSpec(self.getNonqueuedReceiverComSpec(child_element))
|
|
@@ -1308,14 +1410,36 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1308
1410
|
else:
|
|
1309
1411
|
self._raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
|
|
1310
1412
|
|
|
1413
|
+
def readAbstractRequiredPortPrototype(self, element: ET.Element, prototype: AbstractRequiredPortPrototype):
|
|
1414
|
+
self.readProvidedComSpec(element, prototype)
|
|
1415
|
+
|
|
1416
|
+
def readPPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
1417
|
+
short_name = self.getShortName(element)
|
|
1418
|
+
self.logger.debug("readPPortPrototype %s" % short_name)
|
|
1419
|
+
prototype = parent.createPPortPrototype(short_name)
|
|
1420
|
+
self.readIdentifiable(element, prototype)
|
|
1421
|
+
self.readAbstractRequiredPortPrototype(element, prototype)
|
|
1422
|
+
prototype.setProvidedInterfaceTRef(self.getChildElementOptionalRefType(element, "PROVIDED-INTERFACE-TREF"))
|
|
1423
|
+
|
|
1424
|
+
def readAbstractProvidedPortPrototype(self, element: ET.Element, prototype: AbstractProvidedPortPrototype):
|
|
1425
|
+
self.readRequiredComSpec(element, prototype)
|
|
1426
|
+
|
|
1311
1427
|
def readRPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
1312
1428
|
short_name = self.getShortName(element)
|
|
1313
|
-
self.logger.debug("
|
|
1429
|
+
self.logger.debug("read RPortPrototype %s" % short_name)
|
|
1314
1430
|
prototype = parent.createRPortPrototype(short_name)
|
|
1315
1431
|
self.readIdentifiable(element, prototype)
|
|
1432
|
+
self.readAbstractProvidedPortPrototype(element, prototype)
|
|
1316
1433
|
prototype.setRequiredInterfaceTRef(self.getChildElementOptionalRefType(element, "REQUIRED-INTERFACE-TREF"))
|
|
1317
1434
|
|
|
1318
|
-
|
|
1435
|
+
def readPRPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
1436
|
+
short_name = self.getShortName(element)
|
|
1437
|
+
self.logger.debug("read PRPortPrototype %s" % short_name)
|
|
1438
|
+
prototype = parent.createPRPortPrototype(short_name)
|
|
1439
|
+
self.readIdentifiable(element, prototype)
|
|
1440
|
+
self.readAbstractRequiredPortPrototype(element, prototype)
|
|
1441
|
+
self.readAbstractProvidedPortPrototype(element, prototype)
|
|
1442
|
+
prototype.setProvidedRequiredInterface(self.getChildElementOptionalRefType(element, "PROVIDED-REQUIRED-INTERFACE-TREF"))
|
|
1319
1443
|
|
|
1320
1444
|
def readAtomicSwComponentTypePorts(self, element: ET.Element, sw_component: AtomicSwComponentType):
|
|
1321
1445
|
for child_element in self.findall(element, "PORTS/*"):
|
|
@@ -1324,6 +1448,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1324
1448
|
self.readPPortPrototype(child_element, sw_component)
|
|
1325
1449
|
elif tag_name == "R-PORT-PROTOTYPE":
|
|
1326
1450
|
self.readRPortPrototype(child_element, sw_component)
|
|
1451
|
+
elif tag_name == "PR-PORT-PROTOTYPE":
|
|
1452
|
+
self.readPRPortPrototype(child_element, sw_component)
|
|
1327
1453
|
else:
|
|
1328
1454
|
self._raiseError("Unsupported Port Prototype <%s>" % tag_name)
|
|
1329
1455
|
|
|
@@ -1331,13 +1457,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1331
1457
|
child_element = element.find("./xmlns:TRANSMISSION-ACKNOWLEDGE", self.nsmap)
|
|
1332
1458
|
if (child_element is not None):
|
|
1333
1459
|
acknowledge = TransmissionAcknowledgementRequest()
|
|
1334
|
-
self.
|
|
1460
|
+
self.readARObjectAttributes(child_element, acknowledge)
|
|
1335
1461
|
acknowledge.timeout = self.getChildElementOptionalFloatValue(child_element, "TIMEOUT")
|
|
1336
1462
|
return acknowledge
|
|
1337
1463
|
return None
|
|
1338
1464
|
|
|
1339
1465
|
def readSenderComSpec(self, element:ET.Element, com_spec: SenderComSpec):
|
|
1340
|
-
self.
|
|
1466
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1341
1467
|
for child_element in element.findall("./xmlns:COMPOSITE-NETWORK-REPRESENTATIONS/xmlns:COMPOSITE-NETWORK-REPRESENTATION", self.nsmap):
|
|
1342
1468
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
1343
1469
|
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF")) \
|
|
@@ -1354,6 +1480,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1354
1480
|
|
|
1355
1481
|
def getServerComSpec(self, element) -> ServerComSpec:
|
|
1356
1482
|
com_spec = ServerComSpec()
|
|
1483
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1357
1484
|
com_spec.setOperationRef(self.getChildElementOptionalRefType(element, "OPERATION-REF")) \
|
|
1358
1485
|
.setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
|
|
1359
1486
|
return com_spec
|
|
@@ -1383,15 +1510,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1383
1510
|
else:
|
|
1384
1511
|
self._raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
|
|
1385
1512
|
|
|
1386
|
-
def readPPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
1387
|
-
short_name = self.getShortName(element)
|
|
1388
|
-
self.logger.debug("readPPortPrototype %s" % short_name)
|
|
1389
|
-
prototype = parent.createPPortPrototype(short_name)
|
|
1390
|
-
self.readIdentifiable(element, prototype)
|
|
1391
|
-
prototype.setProvidedInterfaceTRef(self.getChildElementOptionalRefType(element, "PROVIDED-INTERFACE-TREF"))
|
|
1392
|
-
|
|
1393
|
-
self.readProvidedComSpec(element, prototype)
|
|
1394
|
-
|
|
1395
1513
|
def readPortGroupInnerGroupIRefs(self, element: ET.Element, parent: PortGroup):
|
|
1396
1514
|
for child_element in self.findall(element, "INNER-GROUP-IREFS/INNER-GROUP-IREF"):
|
|
1397
1515
|
inner_group_iref = InnerPortGroupInCompositionInstanceRef()
|
|
@@ -1480,7 +1598,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1480
1598
|
child_element = self.find(element, "PROVIDER-IREF")
|
|
1481
1599
|
if (child_element is not None):
|
|
1482
1600
|
provide_iref = PPortInCompositionInstanceRef()
|
|
1483
|
-
self.
|
|
1601
|
+
self.readARObjectAttributes(child_element, provide_iref)
|
|
1484
1602
|
self.readPPortInCompositionInstanceRef(child_element, provide_iref)
|
|
1485
1603
|
parent.setProviderIRef(provide_iref)
|
|
1486
1604
|
|
|
@@ -1488,7 +1606,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1488
1606
|
child_element = self.find(element, "REQUESTER-IREF")
|
|
1489
1607
|
if (child_element is not None):
|
|
1490
1608
|
requester_iref = RPortInCompositionInstanceRef()
|
|
1491
|
-
self.
|
|
1609
|
+
self.readARObjectAttributes(child_element, requester_iref)
|
|
1492
1610
|
self.readRPortInCompositionInstanceRef(child_element, requester_iref)
|
|
1493
1611
|
parent.setRequesterIRef(requester_iref)
|
|
1494
1612
|
|
|
@@ -1569,9 +1687,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1569
1687
|
def readDataTypeMaps(self, element: ET.Element, parent: DataTypeMappingSet):
|
|
1570
1688
|
for child_element in element.findall("./xmlns:DATA-TYPE-MAPS/xmlns:DATA-TYPE-MAP", self.nsmap):
|
|
1571
1689
|
data_type_map = DataTypeMap()
|
|
1572
|
-
self.
|
|
1573
|
-
data_type_map.
|
|
1574
|
-
data_type_map.
|
|
1690
|
+
self.readARObjectAttributes(child_element, data_type_map)
|
|
1691
|
+
data_type_map.applicationDataTypeRef = self.getChildElementOptionalRefType(child_element, "APPLICATION-DATA-TYPE-REF")
|
|
1692
|
+
data_type_map.implementationDataTypeRef = self.getChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF")
|
|
1575
1693
|
parent.addDataTypeMap(data_type_map)
|
|
1576
1694
|
# add the data type map to global namespace
|
|
1577
1695
|
AUTOSAR.getInstance().addDataTypeMap(data_type_map)
|
|
@@ -1579,9 +1697,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1579
1697
|
def readModeRequestTypeMaps(self, element: ET.Element, parent: DataTypeMappingSet):
|
|
1580
1698
|
for child_element in element.findall("./xmlns:MODE-REQUEST-TYPE-MAPS/xmlns:MODE-REQUEST-TYPE-MAP", self.nsmap):
|
|
1581
1699
|
map = ModeRequestTypeMap()
|
|
1582
|
-
self.
|
|
1583
|
-
map.
|
|
1584
|
-
map.
|
|
1700
|
+
self.readARObjectAttributes(child_element, map)
|
|
1701
|
+
map.implementationDataTypeRef = self.getChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF")
|
|
1702
|
+
map.modeGroupRef = self.getChildElementOptionalRefType(child_element, "MODE-GROUP-REF")
|
|
1585
1703
|
parent.addModeRequestTypeMap(map)
|
|
1586
1704
|
|
|
1587
1705
|
def readDataTypeMappingSet(self, element: ET.Element, parent: ARPackage):
|
|
@@ -1592,7 +1710,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1592
1710
|
self.readModeRequestTypeMaps(element, mapping_set)
|
|
1593
1711
|
|
|
1594
1712
|
def readSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1595
|
-
for child_element in
|
|
1713
|
+
for child_element in self.findall(element, "DATA-ELEMENTS/VARIABLE-DATA-PROTOTYPE"):
|
|
1596
1714
|
short_name = self.getShortName(child_element)
|
|
1597
1715
|
prototype = sr_interface.createDataElement(short_name)
|
|
1598
1716
|
self.readIdentifiable(child_element, prototype)
|
|
@@ -1608,7 +1726,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1608
1726
|
sr_interface.addInvalidationPolicy(policy)
|
|
1609
1727
|
|
|
1610
1728
|
def readInvalidationPolicys(self, element: ET.Element, parent: SenderReceiverInterface):
|
|
1611
|
-
for child_element in
|
|
1729
|
+
for child_element in self.findall(element, "INVALIDATION-POLICYS/INVALIDATION-POLICY"):
|
|
1612
1730
|
# short_name = self.getShortName(child_element)
|
|
1613
1731
|
policy = parent.createInvalidationPolicy()
|
|
1614
1732
|
self.readIdentifiable(child_element, policy)
|
|
@@ -1624,7 +1742,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1624
1742
|
self.readSenderReceiverInterfaceInvalidationPolicies(element, sr_interface)
|
|
1625
1743
|
|
|
1626
1744
|
def readArgumentDataPrototypes(self, element: ET.Element, parent: ClientServerOperation):
|
|
1627
|
-
for child_element in
|
|
1745
|
+
for child_element in self.findall(element, "ARGUMENTS/ARGUMENT-DATA-PROTOTYPE"):
|
|
1628
1746
|
short_name = self.getShortName(child_element)
|
|
1629
1747
|
prototype = ArgumentDataPrototype(property, short_name)
|
|
1630
1748
|
self.readIdentifiable(child_element, prototype)
|
|
@@ -1635,13 +1753,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1635
1753
|
parent.addArgumentDataPrototype(prototype)
|
|
1636
1754
|
|
|
1637
1755
|
def readPossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
|
|
1638
|
-
child_element =
|
|
1756
|
+
child_element = self.find(element, "POSSIBLE-ERROR-REFS")
|
|
1639
1757
|
if child_element is not None:
|
|
1640
|
-
for ref in self.getChildElementRefTypeList(child_element, "
|
|
1758
|
+
for ref in self.getChildElementRefTypeList(child_element, "POSSIBLE-ERROR-REF"):
|
|
1641
1759
|
parent.addPossibleErrorRef(ref)
|
|
1642
1760
|
|
|
1643
1761
|
def readOperations(self, element: ET.Element, parent: ClientServerInterface):
|
|
1644
|
-
for child_element in
|
|
1762
|
+
for child_element in self.findall(element, "OPERATIONS/CLIENT-SERVER-OPERATION"):
|
|
1645
1763
|
short_name = self.getShortName(child_element)
|
|
1646
1764
|
operation = parent.createOperation(short_name)
|
|
1647
1765
|
self.readIdentifiable(child_element, operation)
|
|
@@ -1649,82 +1767,109 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1649
1767
|
self.readPossibleErrorRefs(child_element, operation)
|
|
1650
1768
|
|
|
1651
1769
|
def readPossibleErrors(self, element: ET.Element, parent: ClientServerInterface):
|
|
1652
|
-
for child_element in
|
|
1770
|
+
for child_element in self.findall(element, "POSSIBLE-ERRORS/APPLICATION-ERROR"):
|
|
1653
1771
|
short_name = self.getShortName(child_element)
|
|
1654
1772
|
error = parent.createApplicationError(short_name)
|
|
1655
1773
|
self.readIdentifiable(child_element, error) # some errors has its uuid
|
|
1656
1774
|
error.error_code = self.getChildElementOptionalNumericalValue(child_element, "ERROR-CODE")
|
|
1657
1775
|
|
|
1658
1776
|
def readPortInterface(self, element: ET.Element, port_interface: PortInterface):
|
|
1777
|
+
self.readIdentifiable(element, port_interface)
|
|
1659
1778
|
port_interface.isService = self.getChildElementOptionalBooleanValue(element, "IS-SERVICE")
|
|
1660
1779
|
port_interface.serviceKind = self.getChildElementOptionalLiteral(element, "SERVICE-KIND")
|
|
1661
1780
|
|
|
1781
|
+
def readParameterInterfaceParameters(self, element: ET.Element, param_interface: ParameterInterface):
|
|
1782
|
+
for child_element in self.findall(element, "PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
1783
|
+
short_name = self.getShortName(child_element)
|
|
1784
|
+
prototype = param_interface.createParameter(short_name)
|
|
1785
|
+
self.readParameterDataPrototype(child_element, prototype)
|
|
1786
|
+
|
|
1787
|
+
def readParameterInterface(self, element: ET.Element, parent: ARPackage):
|
|
1788
|
+
short_name = self.getShortName(element)
|
|
1789
|
+
self.logger.debug("Read ParameterInterface %s" % short_name)
|
|
1790
|
+
param_interface = parent.createParameterInterface(short_name)
|
|
1791
|
+
self.readPortInterface(element, param_interface)
|
|
1792
|
+
self.readParameterInterfaceParameters(element, param_interface)
|
|
1793
|
+
|
|
1662
1794
|
def readClientServerInterface(self, element: ET.Element, parent: ARPackage):
|
|
1663
1795
|
short_name = self.getShortName(element)
|
|
1664
1796
|
cs_interface = parent.createClientServerInterface(short_name)
|
|
1665
|
-
self.readIdentifiable(element, cs_interface)
|
|
1666
1797
|
self.readPortInterface(element, cs_interface)
|
|
1667
1798
|
self.readOperations(element, cs_interface)
|
|
1668
1799
|
self.readPossibleErrors(element, cs_interface)
|
|
1669
1800
|
|
|
1670
1801
|
def readCompuConst(self, element: ET.Element, parent: CompuScale):
|
|
1671
|
-
child_element =
|
|
1802
|
+
child_element = self.find(element, "COMPU-CONST/VT")
|
|
1672
1803
|
if (child_element is not None):
|
|
1673
1804
|
self.logger.debug("readCompuConst VT: %s" % child_element.text)
|
|
1674
1805
|
contents = CompuScaleConstantContents()
|
|
1675
|
-
contents.
|
|
1676
|
-
contents.
|
|
1677
|
-
contents.
|
|
1678
|
-
contents.
|
|
1806
|
+
contents.compuConst = CompuConst()
|
|
1807
|
+
contents.compuConst.compuConstContentType = CompuConstTextContent()
|
|
1808
|
+
contents.compuConst.compuConstContentType.vt = ARLiteral()
|
|
1809
|
+
contents.compuConst.compuConstContentType.vt.setValue(child_element.text)
|
|
1679
1810
|
parent.compuScaleContents = contents
|
|
1680
1811
|
|
|
1681
1812
|
def readCompuNominatorDenominator(self, element: ET.Element, key: str, parent: CompuNominatorDenominator):
|
|
1682
|
-
for child_element in
|
|
1813
|
+
for child_element in self.findall(element, "%s/V" % key):
|
|
1683
1814
|
self.logger.debug("readCompuNominatorDenominator - %s: %s" % (key, child_element.text))
|
|
1684
1815
|
parent.add_v(child_element.text)
|
|
1685
1816
|
|
|
1686
1817
|
def readCompuRationCoeffs(self, element: ET.Element, parent: CompuScale):
|
|
1687
|
-
child_element =
|
|
1818
|
+
child_element = self.find(element, "COMPU-RATIONAL-COEFFS")
|
|
1688
1819
|
if (child_element is not None):
|
|
1689
1820
|
self.logger.debug("readCompuRationCoeffs")
|
|
1690
1821
|
contents = CompuScaleRationalFormula()
|
|
1691
|
-
contents.
|
|
1692
|
-
contents.
|
|
1693
|
-
contents.
|
|
1694
|
-
self.readCompuNominatorDenominator(child_element, "COMPU-DENOMINATOR", contents.
|
|
1695
|
-
self.readCompuNominatorDenominator(child_element, "COMPU-NUMERATOR", contents.
|
|
1822
|
+
contents.compuRationalCoeffs = CompuRationalCoeffs()
|
|
1823
|
+
contents.compuRationalCoeffs.compuDenominator = CompuNominatorDenominator()
|
|
1824
|
+
contents.compuRationalCoeffs.compuNumerator = CompuNominatorDenominator()
|
|
1825
|
+
self.readCompuNominatorDenominator(child_element, "COMPU-DENOMINATOR", contents.compuRationalCoeffs.compuDenominator)
|
|
1826
|
+
self.readCompuNominatorDenominator(child_element, "COMPU-NUMERATOR", contents.compuRationalCoeffs.compuNumerator)
|
|
1696
1827
|
parent.compuScaleContents = contents
|
|
1697
1828
|
|
|
1698
1829
|
def readCompuScaleContents(self, element: ET.Element, parent: CompuScale):
|
|
1699
1830
|
self.readCompuConst(element, parent)
|
|
1700
1831
|
self.readCompuRationCoeffs(element, parent)
|
|
1701
1832
|
|
|
1702
|
-
def
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1833
|
+
def getCompuScales(self, element: ET.Element) -> CompuScales:
|
|
1834
|
+
compu_scales = None
|
|
1835
|
+
compu_scales_tag = self.find(element, "COMPU-SCALES")
|
|
1836
|
+
if compu_scales_tag is not None:
|
|
1837
|
+
compu_scales = CompuScales()
|
|
1838
|
+
for child_element in self.findall(compu_scales_tag, 'COMPU-SCALE'):
|
|
1839
|
+
compu_scale = CompuScale()
|
|
1840
|
+
self.readARObjectAttributes(child_element, compu_scale)
|
|
1841
|
+
compu_scale.setLowerLimit(self.getChildLimitElement(child_element, "LOWER-LIMIT")) \
|
|
1842
|
+
.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
1843
|
+
.setSymbol(self.getChildElementOptionalLiteral(child_element, "SYMBOL")) \
|
|
1844
|
+
.setUpperLimit(self.getChildLimitElement(child_element, "UPPER-LIMIT"))
|
|
1845
|
+
self.readCompuScaleContents(child_element, compu_scale)
|
|
1846
|
+
compu_scales.addCompuScale(compu_scale)
|
|
1847
|
+
return compu_scales
|
|
1848
|
+
|
|
1849
|
+
def readCompuInternalToPhys(self, element: ET.Element, compu_method: CompuMethod):
|
|
1850
|
+
child_element = self.find(element, "COMPU-INTERNAL-TO-PHYS")
|
|
1715
1851
|
if (child_element is not None):
|
|
1716
|
-
|
|
1717
|
-
self.
|
|
1718
|
-
|
|
1719
|
-
|
|
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")
|
|
1859
|
+
if (child_element is not None):
|
|
1860
|
+
compu = Compu()
|
|
1861
|
+
self.readARObjectAttributes(child_element, compu)
|
|
1862
|
+
compu.setCompuContent(self.getCompuScales(child_element))
|
|
1863
|
+
compu_method.setCompuPhysToInternal(compu)
|
|
1720
1864
|
|
|
1721
1865
|
def readCompuMethod(self, element: ET.Element, parent: ARPackage):
|
|
1722
1866
|
short_name = self.getShortName(element)
|
|
1723
1867
|
self.logger.debug("readCompuMethods %s" % short_name)
|
|
1724
1868
|
compu_method = parent.createCompuMethod(short_name)
|
|
1725
1869
|
self.readIdentifiable(element, compu_method)
|
|
1726
|
-
compu_method.
|
|
1870
|
+
compu_method.setUnitRef(self.getChildElementOptionalRefType(element, "UNIT-REF"))
|
|
1727
1871
|
self.readCompuInternalToPhys(element, compu_method)
|
|
1872
|
+
self.readCompuPhysToInternal(element, compu_method)
|
|
1728
1873
|
|
|
1729
1874
|
def readSwcBswRunnableMappings(self, element: ET.Element, parent: SwcBswMapping):
|
|
1730
1875
|
for child_element in element.findall("./xmlns:RUNNABLE-MAPPINGS/xmlns:SWC-BSW-RUNNABLE-MAPPING", self.nsmap):
|
|
@@ -1742,30 +1887,33 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1742
1887
|
swc_bsw_mapping.swcBehaviorRef = self.getChildElementOptionalRefType(element, "SWC-BEHAVIOR-REF")
|
|
1743
1888
|
|
|
1744
1889
|
def readValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
|
|
1745
|
-
self.
|
|
1746
|
-
value_spec.
|
|
1890
|
+
self.readARObjectAttributes(element, value_spec)
|
|
1891
|
+
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
|
|
1747
1892
|
self.logger.debug("readValueSpecification")
|
|
1748
1893
|
|
|
1749
1894
|
def getApplicationValueSpecification(self, element: ET.Element) -> ApplicationValueSpecification:
|
|
1750
1895
|
self.logger.debug("getApplicationValueSpecification")
|
|
1751
1896
|
value_spec = ApplicationValueSpecification()
|
|
1752
1897
|
self.readValueSpecification(element, value_spec)
|
|
1753
|
-
value_spec.
|
|
1754
|
-
|
|
1898
|
+
value_spec.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
1899
|
+
.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
1900
|
+
.setSwValueCont(self.getSwValueCont(element))
|
|
1755
1901
|
return value_spec
|
|
1756
1902
|
|
|
1757
1903
|
def getNumericalValueSpecification(self, element: ET.Element) -> NumericalValueSpecification:
|
|
1758
1904
|
self.logger.debug("getNumericalValueSpecification")
|
|
1759
1905
|
value_spec = NumericalValueSpecification()
|
|
1760
1906
|
self.readValueSpecification(element, value_spec)
|
|
1761
|
-
value_spec.
|
|
1907
|
+
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
1908
|
+
.setValue(self.getChildElementOptionalFloatValue(element, "VALUE"))
|
|
1762
1909
|
return value_spec
|
|
1763
1910
|
|
|
1764
1911
|
def getTextValueSpecification(self, element: ET.Element) -> TextValueSpecification:
|
|
1765
1912
|
self.logger.debug("getTextValueSpecification")
|
|
1766
1913
|
value_spec = TextValueSpecification()
|
|
1767
1914
|
self.readValueSpecification(element, value_spec)
|
|
1768
|
-
value_spec.
|
|
1915
|
+
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
1916
|
+
.setValue(self.getChildElementOptionalLiteral(element, "VALUE"))
|
|
1769
1917
|
return value_spec
|
|
1770
1918
|
|
|
1771
1919
|
def getArrayValueSpecification(self, element: ET.Element) -> ArrayValueSpecification:
|
|
@@ -1799,7 +1947,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1799
1947
|
elif tag_name == "CONSTANT-REFERENCE":
|
|
1800
1948
|
value_spec = self.getConstantReference(element)
|
|
1801
1949
|
else:
|
|
1802
|
-
|
|
1950
|
+
self.notImplemented("Unsupported RecordValueSpecificationField %s" % tag_name)
|
|
1803
1951
|
return value_spec
|
|
1804
1952
|
|
|
1805
1953
|
def readRecordValueSpecificationFields(self, element: ET.Element, spec: RecordValueSpecification):
|
|
@@ -1824,7 +1972,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1824
1972
|
child_element = element.find("./xmlns:INTERNAL-CONSTRS", self.nsmap)
|
|
1825
1973
|
if child_element is not None:
|
|
1826
1974
|
constrs = InternalConstrs()
|
|
1827
|
-
self.
|
|
1975
|
+
self.readARObjectAttributes(child_element, constrs)
|
|
1828
1976
|
constrs.lower_limit = self.getChildLimitElement(child_element, "LOWER-LIMIT")
|
|
1829
1977
|
constrs.upper_limit = self.getChildLimitElement(child_element, "UPPER-LIMIT")
|
|
1830
1978
|
parent.internalConstrs = constrs
|
|
@@ -1833,7 +1981,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1833
1981
|
child_element = element.find("./xmlns:PHYS-CONSTRS", self.nsmap)
|
|
1834
1982
|
if child_element is not None:
|
|
1835
1983
|
constrs = PhysConstrs()
|
|
1836
|
-
self.
|
|
1984
|
+
self.readARObjectAttributes(child_element, constrs)
|
|
1837
1985
|
constrs.lower_limit = self.getChildLimitElement(child_element, "LOWER-LIMIT")
|
|
1838
1986
|
constrs.upper_limit = self.getChildLimitElement(child_element, "UPPER-LIMIT")
|
|
1839
1987
|
constrs.unit_ref = self.getChildElementOptionalRefType(child_element, "UNIT-REF")
|
|
@@ -1843,7 +1991,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1843
1991
|
for child_element in element.findall("./xmlns:DATA-CONSTR-RULES/xmlns:DATA-CONSTR-RULE", self.nsmap):
|
|
1844
1992
|
self.logger.debug("readDataConstrRule")
|
|
1845
1993
|
rule = DataConstrRule()
|
|
1846
|
-
self.
|
|
1994
|
+
self.readARObjectAttributes(child_element, rule)
|
|
1847
1995
|
rule.constrLevel = self.getChildElementOptionalNumericalValue(child_element, "CONSTR-LEVEL")
|
|
1848
1996
|
self.readInternalConstrs(child_element, rule)
|
|
1849
1997
|
self.readPhysConstrs(child_element, rule)
|
|
@@ -1959,6 +2107,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1959
2107
|
|
|
1960
2108
|
def readDataPrototype(self, element: ET.Element, prototype: DataPrototype):
|
|
1961
2109
|
self.readIdentifiable(element, prototype)
|
|
2110
|
+
prototype.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
1962
2111
|
|
|
1963
2112
|
def readApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
|
|
1964
2113
|
self.readDataPrototype(element, prototype)
|
|
@@ -2003,6 +2152,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2003
2152
|
.setSwRecordLayoutGroupAxis(self.getChildElementOptionalNumericalValue(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS")) \
|
|
2004
2153
|
.setSwRecordLayoutGroupIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX")) \
|
|
2005
2154
|
.setSwRecordLayoutGroupFrom(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM")) \
|
|
2155
|
+
.setSwRecordLayoutGroupStep(self.getChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP")) \
|
|
2006
2156
|
.setSwRecordLayoutGroupTo(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO")) \
|
|
2007
2157
|
|
|
2008
2158
|
group_content = SwRecordLayoutGroupContent()
|
|
@@ -2025,8 +2175,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2025
2175
|
|
|
2026
2176
|
def readSwAddrMethod(self, element: ET.Element, parent: ARPackage):
|
|
2027
2177
|
short_name = self.getShortName(element)
|
|
2028
|
-
self.logger.debug("
|
|
2029
|
-
|
|
2178
|
+
self.logger.debug("read SwAddrMethod %s" % short_name)
|
|
2179
|
+
method = parent.createSwAddrMethod(short_name)
|
|
2180
|
+
self.readIdentifiable(element, method)
|
|
2181
|
+
method.setMemoryAllocationKeywordPolicy(self.getChildElementOptionalLiteral(element, "MEMORY-ALLOCATION-KEYWORD-POLICY"))
|
|
2182
|
+
for option in self.getChildElementLiteralValueList(element, "OPTIONS/OPTION"):
|
|
2183
|
+
method.addOption(option)
|
|
2184
|
+
method.setSectionInitializationPolicy(self.getChildElementOptionalLiteral(element, "SECTION-INITIALIZATION-POLICY")) \
|
|
2185
|
+
.setSectionType(self.getChildElementOptionalLiteral(element, "SECTION-TYPE"))
|
|
2030
2186
|
|
|
2031
2187
|
def readTriggerInterface(self, element: ET.Element, parent: ARPackage):
|
|
2032
2188
|
short_name = self.getShortName(element)
|
|
@@ -2034,9 +2190,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2034
2190
|
trigger_if = parent.createTriggerInterface(short_name)
|
|
2035
2191
|
|
|
2036
2192
|
def readModeDeclarationGroupModeDeclaration(self, element: ET.Element, parent: ModeDeclarationGroup):
|
|
2037
|
-
for child_element in
|
|
2193
|
+
for child_element in self.findall(element, "MODE-DECLARATIONS/MODE-DECLARATION"):
|
|
2038
2194
|
short_name = self.getShortName(child_element)
|
|
2039
2195
|
declaration = parent.createModeDeclaration(short_name)
|
|
2196
|
+
self.readARObjectAttributes(child_element, declaration)
|
|
2040
2197
|
declaration.setValue(self.getChildElementOptionalNumericalValue(child_element, "VALUE"))
|
|
2041
2198
|
|
|
2042
2199
|
def readModeDeclarationGroup(self, element: ET.Element, parent: ARPackage):
|
|
@@ -2157,7 +2314,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2157
2314
|
triggering = channel.createLinFrameTriggering(self.getShortName(child_element))
|
|
2158
2315
|
self.readLinFrameTriggering(child_element, triggering)
|
|
2159
2316
|
else:
|
|
2160
|
-
|
|
2317
|
+
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2161
2318
|
|
|
2162
2319
|
for child_element in self.findall(element, "I-SIGNAL-TRIGGERINGS/*"):
|
|
2163
2320
|
tag_name = self.getTagName(child_element)
|
|
@@ -2165,7 +2322,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2165
2322
|
triggering = channel.createISignalTriggering(self.getShortName(child_element))
|
|
2166
2323
|
self.readISignalTriggering(child_element, triggering)
|
|
2167
2324
|
else:
|
|
2168
|
-
|
|
2325
|
+
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2169
2326
|
|
|
2170
2327
|
for child_element in self.findall(element, "PDU-TRIGGERINGS/*"):
|
|
2171
2328
|
tag_name = self.getTagName(child_element)
|
|
@@ -2173,7 +2330,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2173
2330
|
triggering = channel.createPduTriggering(self.getShortName(child_element))
|
|
2174
2331
|
self.readPduTriggering(child_element, triggering)
|
|
2175
2332
|
else:
|
|
2176
|
-
|
|
2333
|
+
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2177
2334
|
|
|
2178
2335
|
def readCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
|
|
2179
2336
|
self.readIdentifiable(element, channel)
|
|
@@ -2193,7 +2350,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2193
2350
|
channel = cluster.createLinPhysicalChannel(self.getShortName(child_element))
|
|
2194
2351
|
self.readLinPhysicalChannel(child_element, channel)
|
|
2195
2352
|
else:
|
|
2196
|
-
|
|
2353
|
+
self.notImplemented("Unsupported Physical Channel <%s>" % tag_name)
|
|
2197
2354
|
|
|
2198
2355
|
|
|
2199
2356
|
def readCommunicationCluster(self, element: ET.Element, cluster: CommunicationCluster):
|
|
@@ -2504,11 +2661,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2504
2661
|
self.logger.debug("ISignal %s" % short_name)
|
|
2505
2662
|
signal = parent.createISignal(short_name)
|
|
2506
2663
|
self.readIdentifiable(element, signal)
|
|
2507
|
-
signal.
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2664
|
+
signal.setDataTypePolicy(self.getChildElementOptionalLiteral(element, "DATA-TYPE-POLICY")) \
|
|
2665
|
+
.setInitValue(self.getInitValue(element)) \
|
|
2666
|
+
.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH")) \
|
|
2667
|
+
.setNetworkRepresentationProps(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION-PROPS")) \
|
|
2668
|
+
.setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
|
|
2512
2669
|
|
|
2513
2670
|
def readEcucValueCollectionEcucValues(self, element: ET.Element, parent: EcucValueCollection):
|
|
2514
2671
|
for child_element in self.findall(element, "ECUC-VALUES/ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL"):
|
|
@@ -2550,7 +2707,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2550
2707
|
elif tag_name == "ECUC-NUMERICAL-PARAM-VALUE":
|
|
2551
2708
|
container_value.addParameterValue(self.getEcucNumericalParamValue(child_element))
|
|
2552
2709
|
else:
|
|
2553
|
-
|
|
2710
|
+
self.notImplemented("Unsupported EcucParameterValue <%s>" % tag_name)
|
|
2554
2711
|
|
|
2555
2712
|
def readEcucAbstractReferenceValue(self, element: ET.Element, value: EcucAbstractReferenceValue):
|
|
2556
2713
|
value.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
|
|
@@ -2587,7 +2744,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2587
2744
|
elif tag_name == "ECUC-INSTANCE-REFERENCE-VALUE":
|
|
2588
2745
|
container_value.addReferenceValue(self.getEcucInstanceReferenceValue(child_element))
|
|
2589
2746
|
else:
|
|
2590
|
-
|
|
2747
|
+
self.notImplemented("Unsupported EcucParameterValue <%s>" % tag_name)
|
|
2591
2748
|
|
|
2592
2749
|
def readEcucContainerValue(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2593
2750
|
self.readIdentifiable(element, container_value)
|
|
@@ -2608,7 +2765,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2608
2765
|
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
2609
2766
|
self.readEcucContainerValueEcucContainerValue(child_element, parent)
|
|
2610
2767
|
else:
|
|
2611
|
-
|
|
2768
|
+
self.notImplemented("Unsupported Sub Container %s" % tag_name)
|
|
2612
2769
|
|
|
2613
2770
|
def readEcucModuleConfigurationValuesEcucContainerValue(self, element: ET.Element, parent: EcucModuleConfigurationValues):
|
|
2614
2771
|
short_name = self.getShortName(element)
|
|
@@ -2622,7 +2779,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2622
2779
|
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
2623
2780
|
self.readEcucModuleConfigurationValuesEcucContainerValue(child_element, values)
|
|
2624
2781
|
else:
|
|
2625
|
-
|
|
2782
|
+
self.notImplemented("Unsupported Container %s" % tag_name)
|
|
2626
2783
|
|
|
2627
2784
|
def readEcucModuleConfigurationValues(self, element: ET.Element, parent: ARPackage):
|
|
2628
2785
|
short_name = self.getShortName(element)
|
|
@@ -2636,11 +2793,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2636
2793
|
|
|
2637
2794
|
def readPhysicalDimensions(self, element: ET.Element, parent: ARPackage):
|
|
2638
2795
|
short_name = self.getShortName(element)
|
|
2639
|
-
self.logger.debug("
|
|
2796
|
+
self.logger.debug("read PhysicalDimensions %s" % short_name)
|
|
2640
2797
|
dimension = parent.createPhysicalDimension(short_name)
|
|
2641
2798
|
self.readIdentifiable(element, dimension)
|
|
2642
2799
|
dimension.setCurrentExp(self.getChildElementOptionalNumericalValue(element, "CURRENT-EXP")) \
|
|
2643
2800
|
.setLengthExp(self.getChildElementOptionalNumericalValue(element, "LENGTH-EXP")) \
|
|
2801
|
+
.setTimeExp(self.getChildElementOptionalNumericalValue(element, "TIME-EXP"))
|
|
2644
2802
|
|
|
2645
2803
|
'''
|
|
2646
2804
|
def getIPduMappings(self, element: ET.Element) -> List[IPduMapping]:
|
|
@@ -2807,7 +2965,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2807
2965
|
elif tag_name == "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING":
|
|
2808
2966
|
mapping.addDataMapping(self.getSenderReceiverToSignalGroupMapping(child_element))
|
|
2809
2967
|
else:
|
|
2810
|
-
|
|
2968
|
+
self.notImplemented("Unsupported Data Mapping %s" % tag_name)
|
|
2811
2969
|
|
|
2812
2970
|
def readSwcToEcuMapping(self, element: ET.Element, mapping: SwcToEcuMapping):
|
|
2813
2971
|
self.logger.debug("SwcToEcuMapping %s" % mapping.getShortName())
|
|
@@ -2822,7 +2980,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2822
2980
|
if tag_name == "SWC-TO-ECU-MAPPING":
|
|
2823
2981
|
self.readSwcToEcuMapping(child_element, mapping.createSwcToEcuMapping(self.getShortName(child_element)))
|
|
2824
2982
|
else:
|
|
2825
|
-
|
|
2983
|
+
self.notImplemented("Unsupported Sw Mapping %s" % tag_name)
|
|
2826
2984
|
|
|
2827
2985
|
def readSystemMapping(self, element: ET.Element, parent: System):
|
|
2828
2986
|
short_name = self.getShortName(element)
|
|
@@ -2838,7 +2996,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2838
2996
|
if tag_name == "SYSTEM-MAPPING":
|
|
2839
2997
|
self.readSystemMapping(child_element, system)
|
|
2840
2998
|
else:
|
|
2841
|
-
|
|
2999
|
+
self.notImplemented("Unsupported Mapping %s" % tag_name)
|
|
2842
3000
|
|
|
2843
3001
|
def readRootSwCompositionPrototype(self, element: ET.Element, system: System):
|
|
2844
3002
|
child_element = self.find(element, "ROOT-SOFTWARE-COMPOSITIONS/ROOT-SW-COMPOSITION-PROTOTYPE")
|
|
@@ -2862,19 +3020,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2862
3020
|
self.readRootSwCompositionPrototype(element, system)
|
|
2863
3021
|
system.setSystemVersion(self.getChildElementOptionalRevisionLabelString(element, "SYSTEM-VERSION"))
|
|
2864
3022
|
|
|
2865
|
-
def readParameterInterfaceParameters(self, element: ET.Element, parent: ParameterInterface):
|
|
2866
|
-
for child_element in self.findall(element, "PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
2867
|
-
short_name = self.getShortName(child_element)
|
|
2868
|
-
prototype = parent.createParameter(short_name)
|
|
2869
|
-
self.readParameterDataPrototype(child_element, prototype)
|
|
2870
|
-
|
|
2871
|
-
def readParameterInterface(self, element: ET.Element, parent: ARPackage):
|
|
2872
|
-
short_name = self.getShortName(element)
|
|
2873
|
-
self.logger.debug("Read ParameterInterface %s" % short_name)
|
|
2874
|
-
pi_interface = parent.createParameterInterface(short_name)
|
|
2875
|
-
self.readIdentifiable(element, pi_interface)
|
|
2876
|
-
self.readParameterInterfaceParameters(element, pi_interface)
|
|
2877
|
-
|
|
2878
3023
|
def readGenericEthernetFrame(self, element: ET.Element, parent: ARPackage):
|
|
2879
3024
|
short_name = self.getShortName(element)
|
|
2880
3025
|
self.logger.debug("Read EthernetFrame %s" % short_name)
|