armodel 1.7.1__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 +3 -3
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +3 -3
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +81 -36
- 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/ImplementationDataTypes.py +22 -11
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +29 -22
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +26 -9
- 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/MemorySectionUsage.py +8 -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 +735 -27
- 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 +20 -3
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +3 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +55 -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/Composition/__init__.py +8 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +239 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +56 -6
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +91 -55
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +10 -1
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +186 -24
- armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +34 -3
- armodel/models/M2/MSR/DataDictionary/AuxillaryObjects.py +4 -4
- armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +7 -0
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +130 -37
- armodel/models/M2/MSR/DataDictionary/ServiceProcessTask.py +33 -0
- armodel/models/__init__.py +4 -0
- armodel/parser/abstract_arxml_parser.py +30 -27
- armodel/parser/arxml_parser.py +683 -371
- armodel/tests/test_armodel/models/test_ar_object.py +6 -2
- 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/models/test_port_interface.py +4 -4
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +48 -48
- 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 +10 -0
- armodel/writer/arxml_writer.py +668 -358
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/METADATA +34 -1
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/RECORD +54 -48
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/LICENSE +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/WHEEL +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/top_level.txt +0 -0
armodel/parser/arxml_parser.py
CHANGED
|
@@ -2,10 +2,14 @@ from typing import List
|
|
|
2
2
|
import xml.etree.ElementTree as ET
|
|
3
3
|
import os
|
|
4
4
|
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
5
9
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
6
10
|
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition
|
|
7
11
|
from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
|
|
8
|
-
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
|
|
9
13
|
from ..models.M2.MSR.AsamHdo.SpecialData import Sdg, Sd
|
|
10
14
|
from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
|
|
11
15
|
from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, SwPointerTargetProps
|
|
@@ -15,6 +19,7 @@ from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroupConte
|
|
|
15
19
|
from ..models.M2.MSR.DataDictionary.DataDefProperties import ValueList
|
|
16
20
|
from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroup
|
|
17
21
|
from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxisSet
|
|
22
|
+
from ..models.M2.MSR.DataDictionary.ServiceProcessTask import SwServiceArg
|
|
18
23
|
from ..models.M2.MSR.Documentation.Annotation import Annotation, GeneralAnnotation
|
|
19
24
|
from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
|
|
20
25
|
from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
|
|
@@ -22,18 +27,21 @@ from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName,
|
|
|
22
27
|
from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText, MultilanguageLongName
|
|
23
28
|
|
|
24
29
|
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
25
|
-
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
|
|
26
32
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
|
|
27
33
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
|
|
28
34
|
from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
|
|
29
35
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
|
|
36
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
|
|
30
37
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import ImplementationProps, Code
|
|
31
38
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroup, ModeRequestTypeMap, ModeDeclarationGroupPrototype
|
|
32
39
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
|
|
33
40
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import MemorySection
|
|
41
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
|
|
34
42
|
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
|
|
35
43
|
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
|
|
36
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataAssignment, ServiceDependency
|
|
44
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceAlgorithm, DiagEventDebounceMonitorInternal, DiagnosticEventNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
|
|
37
45
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
|
|
38
46
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
39
47
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
|
|
@@ -55,13 +63,13 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import Compo
|
|
|
55
63
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
|
|
56
64
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
57
65
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
|
|
58
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
66
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
67
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, CompositionSwComponentType, PortGroup, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
|
|
59
68
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector
|
|
60
69
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
|
|
61
70
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
62
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
63
71
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
64
|
-
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
|
|
65
73
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
|
|
66
74
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
67
75
|
|
|
@@ -111,7 +119,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
111
119
|
return sdg
|
|
112
120
|
|
|
113
121
|
def readSdgs(self, element: ET.Element, admin_data: AdminData):
|
|
114
|
-
for child_element in self.findall(element, "
|
|
122
|
+
for child_element in self.findall(element, "SDGS/SDG"):
|
|
115
123
|
admin_data.addSdg(self.getSdg(child_element))
|
|
116
124
|
|
|
117
125
|
def getAdminData(self, element: ET.Element, key: str) -> AdminData:
|
|
@@ -127,7 +135,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
127
135
|
return admin_data
|
|
128
136
|
|
|
129
137
|
def readMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
|
|
130
|
-
self.
|
|
138
|
+
self.readARObjectAttributes(element, referrable)
|
|
131
139
|
referrable.setLongName(self.getMultilanguageLongName(element, "LONG-NAME"))
|
|
132
140
|
|
|
133
141
|
def readIdentifiable(self, element: ET.Element, identifiable: Identifiable):
|
|
@@ -143,9 +151,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
143
151
|
identifiable.setAdminData(self.getAdminData(element, "ADMIN-DATA"))
|
|
144
152
|
|
|
145
153
|
def readLLongName(self, element: ET.Element, long_name: MultilanguageLongName):
|
|
146
|
-
for child_element in self.findall(element, "
|
|
154
|
+
for child_element in self.findall(element, "L-4"):
|
|
147
155
|
l4 = LLongName()
|
|
148
|
-
self.
|
|
156
|
+
self.readARObjectAttributes(child_element, l4)
|
|
149
157
|
l4.value = child_element.text
|
|
150
158
|
if 'L' in child_element.attrib:
|
|
151
159
|
l4.l = child_element.attrib['L']
|
|
@@ -153,17 +161,17 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
153
161
|
|
|
154
162
|
def getMultilanguageLongName(self, element: ET.Element, key: str) -> MultilanguageLongName:
|
|
155
163
|
long_name = None
|
|
156
|
-
child_element = self.find(element, "
|
|
164
|
+
child_element = self.find(element, "%s" % key)
|
|
157
165
|
if child_element is not None:
|
|
158
166
|
long_name = MultilanguageLongName()
|
|
159
|
-
self.
|
|
167
|
+
self.readARObjectAttributes(child_element, long_name)
|
|
160
168
|
self.readLLongName(child_element, long_name)
|
|
161
169
|
return long_name
|
|
162
170
|
|
|
163
171
|
def readLOverviewParagraph(self, element: ET.Element, paragraph: MultiLanguageOverviewParagraph):
|
|
164
|
-
for child_element in self.findall(element, "
|
|
172
|
+
for child_element in self.findall(element, "L-2"):
|
|
165
173
|
l2 = LOverviewParagraph()
|
|
166
|
-
self.
|
|
174
|
+
self.readARObjectAttributes(child_element, l2)
|
|
167
175
|
l2.value = child_element.text
|
|
168
176
|
if 'L' in child_element.attrib:
|
|
169
177
|
l2.l = child_element.attrib['L']
|
|
@@ -171,10 +179,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
171
179
|
|
|
172
180
|
def getMultiLanguageOverviewParagraph(self, element: ET.Element, key: str) -> MultiLanguageOverviewParagraph:
|
|
173
181
|
paragraph = None
|
|
174
|
-
child_element =
|
|
182
|
+
child_element = self.find(element, key)
|
|
175
183
|
if child_element is not None:
|
|
176
184
|
paragraph = MultiLanguageOverviewParagraph()
|
|
177
|
-
self.
|
|
185
|
+
self.readARObjectAttributes(child_element, paragraph)
|
|
178
186
|
self.readLOverviewParagraph(child_element, paragraph)
|
|
179
187
|
return paragraph
|
|
180
188
|
|
|
@@ -182,7 +190,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
182
190
|
iref = None
|
|
183
191
|
if element is not None:
|
|
184
192
|
iref = VariableInAtomicSWCTypeInstanceRef()
|
|
185
|
-
self.
|
|
193
|
+
self.readARObjectAttributes(element, iref)
|
|
186
194
|
iref.setPortPrototypeRef(self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF"))
|
|
187
195
|
iref.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
|
|
188
196
|
return iref
|
|
@@ -191,7 +199,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
191
199
|
iref = None
|
|
192
200
|
if element is not None:
|
|
193
201
|
iref = ComponentInSystemInstanceRef()
|
|
194
|
-
self.
|
|
202
|
+
self.readARObjectAttributes(element, iref)
|
|
195
203
|
iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF"))
|
|
196
204
|
iref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF"))
|
|
197
205
|
iref.setTargetComponentRef(self.getChildElementOptionalRefType(element, "TARGET-COMPONENT-REF"))
|
|
@@ -202,6 +210,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
202
210
|
ref = None
|
|
203
211
|
if (child_element is not None):
|
|
204
212
|
ref = AutosarVariableRef()
|
|
213
|
+
#self.readARObjectAttributes(child_element, ref)
|
|
205
214
|
ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF")))
|
|
206
215
|
return ref
|
|
207
216
|
|
|
@@ -214,7 +223,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
214
223
|
return ref
|
|
215
224
|
|
|
216
225
|
def _readVariableAccesses(self, element: ET.Element, parent: RunnableEntity, key: str):
|
|
217
|
-
for child_element in
|
|
226
|
+
for child_element in self.findall(element, "%s/VARIABLE-ACCESS" % key):
|
|
218
227
|
short_name = self.getShortName(child_element)
|
|
219
228
|
|
|
220
229
|
self.logger.debug("readVariableAccesses %s" % short_name)
|
|
@@ -241,12 +250,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
241
250
|
variable_access = parent.createReadLocalVariable(short_name)
|
|
242
251
|
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element))
|
|
243
252
|
else:
|
|
244
|
-
self.
|
|
253
|
+
self.notImplemented("Unsupported Variable Accesss <%s>" % key)
|
|
245
254
|
|
|
246
255
|
self.readIdentifiable(child_element, variable_access)
|
|
247
256
|
|
|
248
257
|
def readBswModuleDescriptionImplementedEntry(self, element: ET.Element, parent: BswModuleDescription):
|
|
249
|
-
for child_element in
|
|
258
|
+
for child_element in self.findall(element, "PROVIDED-ENTRYS/BSW-MODULE-ENTRY-REF-CONDITIONAL"):
|
|
250
259
|
ref = self.getChildElementOptionalRefType(child_element, "BSW-MODULE-ENTRY-REF")
|
|
251
260
|
if (ref is not None):
|
|
252
261
|
parent.addImplementedEntry(ref)
|
|
@@ -257,7 +266,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
257
266
|
prototype.type_tref = self.getChildElementOptionalRefType(element, "TYPE-TREF")
|
|
258
267
|
|
|
259
268
|
def readProvidedModeGroup(self, element: ET.Element, parent: BswModuleDescription):
|
|
260
|
-
for child_element in
|
|
269
|
+
for child_element in self.findall(element, "PROVIDED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE"):
|
|
261
270
|
short_name = self.getShortName(child_element)
|
|
262
271
|
self.logger.debug("readProvidedModeGroup %s" % short_name)
|
|
263
272
|
|
|
@@ -265,7 +274,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
265
274
|
self.readModeDeclarationGroupPrototype(child_element, mode_group)
|
|
266
275
|
|
|
267
276
|
def readRequiredModeGroup(self, element: ET.Element, parent: BswModuleDescription):
|
|
268
|
-
for child_element in
|
|
277
|
+
for child_element in self.findall(element, "REQUIRED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE"):
|
|
269
278
|
short_name = self.getShortName(child_element)
|
|
270
279
|
self.logger.debug("readRequiredModeGroup %s" % short_name)
|
|
271
280
|
mode_group = parent.createProvidedModeGroup(short_name)
|
|
@@ -283,71 +292,45 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
283
292
|
.setSwAddrMethodRef(self.getChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF"))
|
|
284
293
|
|
|
285
294
|
def readBswModuleEntityManagedModeGroup(self, element: ET.Element, entity: BswModuleEntity):
|
|
286
|
-
for child_element in self.findall(element, "
|
|
295
|
+
for child_element in self.findall(element, "sMANAGED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL"):
|
|
287
296
|
ref_type = self.getChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF")
|
|
288
297
|
if ref_type is not None:
|
|
289
298
|
entity.addManagedModeGroupRef(ref_type)
|
|
290
299
|
|
|
291
|
-
|
|
292
|
-
self.readExecutableEntity(element, entity)
|
|
293
|
-
entity.setImplementedEntryRef(self.getChildElementRefType(entity.getShortName(), element, "IMPLEMENTED-ENTRY-REF"))
|
|
294
|
-
self.readBswModuleEntityManagedModeGroup(element, entity)
|
|
295
|
-
|
|
296
|
-
def readBswCalledEntity(self, element: ET.Element, parent: BswInternalBehavior):
|
|
297
|
-
for child_element in element.findall("./xmlns:ENTITYS/xmlns:BSW-CALLED-ENTITY", self.nsmap):
|
|
298
|
-
short_name = self.getShortName(child_element)
|
|
299
|
-
self.logger.debug("readBswCalledEntity %s" % short_name)
|
|
300
|
-
entity = parent.createBswCalledEntity(short_name)
|
|
301
|
-
|
|
302
|
-
self.readBswModuleEntity(child_element, entity)
|
|
303
|
-
|
|
304
|
-
def readBswSchedulableEntity(self, element: ET.Element, parent: BswInternalBehavior):
|
|
305
|
-
for child_element in element.findall("./xmlns:ENTITYS/xmlns:BSW-SCHEDULABLE-ENTITY", self.nsmap):
|
|
306
|
-
short_name = self.getShortName(child_element)
|
|
307
|
-
self.logger.debug("readBswSchedulableEntity %s" % short_name)
|
|
308
|
-
entity = parent.createBswSchedulableEntity(short_name)
|
|
309
|
-
self.readBswModuleEntity(child_element, entity)
|
|
300
|
+
|
|
310
301
|
|
|
311
302
|
def readBswEvent(self, element: ET.Element, event: BswScheduleEvent):
|
|
312
|
-
event.startsOnEventRef = self.
|
|
303
|
+
event.startsOnEventRef = self.getChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF")
|
|
313
304
|
|
|
314
305
|
def readBswScheduleEvent(self, element, event: BswScheduleEvent):
|
|
315
306
|
self.readBswEvent(element, event)
|
|
316
307
|
|
|
317
|
-
def readBswModeSwitchEvent(self, element: ET.Element,
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
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()))
|
|
324
322
|
|
|
325
|
-
def
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
short_name = self.getShortName(child_element)
|
|
337
|
-
self.logger.debug("readBswDataReceivedEvent %s" % short_name)
|
|
338
|
-
event = parent.createBswDataReceivedEvent(short_name)
|
|
339
|
-
event.data_ref = self.getChildElementRefType(parent.getShortName(), child_element, "DATA-REF")
|
|
340
|
-
# Read the Inherit BswScheduleEvent
|
|
341
|
-
self.readBswScheduleEvent(child_element, event)
|
|
342
|
-
|
|
343
|
-
def readBswInternalTriggerOccurredEvent(self, element: ET.Element, parent: BswInternalBehavior):
|
|
344
|
-
for child_element in self.findall(element, "./EVENTS/BSW-INTERNAL-TRIGGER-OCCURRED-EVENT"):
|
|
345
|
-
short_name = self.getShortName(child_element)
|
|
346
|
-
self.logger.debug("readBswInternalTriggerOccurredEvent %s" % short_name)
|
|
347
|
-
event = parent.createBswInternalTriggerOccurredEvent(short_name)
|
|
348
|
-
event.event_source_ref = self.getChildElementRefType(parent.getShortName(), child_element, "EVENT-SOURCE-REF")
|
|
349
|
-
# Read the Inherit BswScheduleEvent
|
|
350
|
-
self.readBswScheduleEvent(child_element, event)
|
|
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"))
|
|
351
334
|
|
|
352
335
|
def getBswModeSenderPolicy(self, element: ET.Element) -> BswModeSenderPolicy:
|
|
353
336
|
policy = BswModeSenderPolicy()
|
|
@@ -356,7 +339,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
356
339
|
return policy
|
|
357
340
|
|
|
358
341
|
def readBswInternalBehaviorModeSenderPolicy(self, element: ET.Element, parent: BswInternalBehavior):
|
|
359
|
-
for child_element in self.findall(element, "
|
|
342
|
+
for child_element in self.findall(element, "MODE-SENDER-POLICYS/*"):
|
|
360
343
|
tag_name = self.getTagName(child_element)
|
|
361
344
|
if tag_name == "BSW-MODE-SENDER-POLICY":
|
|
362
345
|
parent.addModeSenderPolicy(self.getBswModeSenderPolicy(child_element))
|
|
@@ -364,13 +347,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
364
347
|
self._raiseError("Unsupported ModeSenderPolicy type <%s>." % tag_name)
|
|
365
348
|
|
|
366
349
|
def readDataTypeMappingRefs(self, element: ET.Element, behavior: InternalBehavior):
|
|
367
|
-
child_element =
|
|
350
|
+
child_element = self.find(element, "DATA-TYPE-MAPPING-REFS")
|
|
368
351
|
if child_element is not None:
|
|
369
|
-
for ref in self.getChildElementRefTypeList(child_element, "
|
|
352
|
+
for ref in self.getChildElementRefTypeList(child_element, "DATA-TYPE-MAPPING-REF"):
|
|
370
353
|
behavior.addDataTypeMappingRef(ref)
|
|
371
354
|
|
|
372
355
|
def readInternalBehaviorConstantMemories(self, element: ET.Element, behavior: InternalBehavior):
|
|
373
|
-
for child_element in
|
|
356
|
+
for child_element in self.findall(element, "CONSTANT-MEMORYS/PARAMETER-DATA-PROTOTYPE"):
|
|
374
357
|
short_name = self.getShortName(child_element)
|
|
375
358
|
prototype = behavior.createConstantMemory(short_name)
|
|
376
359
|
self.readParameterDataPrototype(child_element, prototype)
|
|
@@ -378,16 +361,16 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
378
361
|
def readInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
|
|
379
362
|
self.readIdentifiable(element, behavior)
|
|
380
363
|
self.readInternalBehaviorConstantMemories(element, behavior)
|
|
381
|
-
for child_element in
|
|
364
|
+
for child_element in self.findall(element, "EXCLUSIVE-AREAS/EXCLUSIVE-AREA"):
|
|
382
365
|
short_name = self.getShortName(child_element)
|
|
383
366
|
behavior.createExclusiveArea(short_name)
|
|
384
367
|
self.readDataTypeMappingRefs(element, behavior)
|
|
385
368
|
|
|
386
369
|
def getRoleBasedDataAssignment(self, element: ET.Element) -> RoleBasedDataAssignment:
|
|
387
370
|
assignment = RoleBasedDataAssignment()
|
|
388
|
-
assignment.
|
|
389
|
-
|
|
390
|
-
|
|
371
|
+
assignment.setRole(self.getChildElementOptionalLiteral(element, "ROLE")) \
|
|
372
|
+
.setUsedParameterElement(self.getAutosarParameterRef(element, "USED-PARAMETER-ELEMENT")) \
|
|
373
|
+
.setUsedPimRef(self.getChildElementOptionalRefType(element, "USED-PIM-REF"))
|
|
391
374
|
return assignment
|
|
392
375
|
|
|
393
376
|
def getRoleBasedPortAssignment(self, element: ET.Element) -> RoleBasedPortAssignment:
|
|
@@ -395,12 +378,24 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
395
378
|
assignment.portPrototypeRef = self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF")
|
|
396
379
|
assignment.role = self.getChildElementOptionalLiteral(element, "ROLE")
|
|
397
380
|
return assignment
|
|
381
|
+
|
|
382
|
+
def getRoleBasedDataTypeAssignment(self, element: ET.Element) -> RoleBasedDataTypeAssignment:
|
|
383
|
+
assignment = RoleBasedDataTypeAssignment()
|
|
384
|
+
assignment.setRole(self.getChildElementOptionalLiteral(element, "ROLE"))
|
|
385
|
+
assignment.setUsedImplementationDataTypeRef(self.getChildElementOptionalRefType(element, "USED-IMPLEMENTATION-DATA-TYPE-REF"))
|
|
386
|
+
return assignment
|
|
398
387
|
|
|
399
388
|
def readServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
|
|
400
389
|
self.readIdentifiable(element, dependency)
|
|
390
|
+
for child_element in self.findall(element, "ASSIGNED-DATA-TYPES/*"):
|
|
391
|
+
tag_name = self.getTagName(child_element.tag)
|
|
392
|
+
if (tag_name == "ROLE-BASED-DATA-TYPE-ASSIGNMENT"):
|
|
393
|
+
dependency.addAssignedDataType(self.getRoleBasedDataTypeAssignment(child_element))
|
|
394
|
+
else:
|
|
395
|
+
self._raiseError("Unsupported assigned data type <%s>" % tag_name)
|
|
401
396
|
|
|
402
397
|
def readSwcServiceDependencyAssignedData(self, element: ET.Element, dependency: SwcServiceDependency):
|
|
403
|
-
for child_element in
|
|
398
|
+
for child_element in self.findall(element, "ASSIGNED-DATAS/*"):
|
|
404
399
|
tag_name = self.getTagName(child_element.tag)
|
|
405
400
|
if (tag_name == "ROLE-BASED-DATA-ASSIGNMENT"):
|
|
406
401
|
dependency.AddAssignedData(self.getRoleBasedDataAssignment(child_element))
|
|
@@ -408,7 +403,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
408
403
|
self._raiseError("Unsupported assigned data <%s>" % tag_name)
|
|
409
404
|
|
|
410
405
|
def readSwcServiceDependencyAssignedPorts(self, element: ET.Element, dependency: SwcServiceDependency):
|
|
411
|
-
for child_element in
|
|
406
|
+
for child_element in self.findall(element, "ASSIGNED-PORTS/*"):
|
|
412
407
|
tag_name = self.getTagName(child_element.tag)
|
|
413
408
|
if (tag_name == "ROLE-BASED-PORT-ASSIGNMENT"):
|
|
414
409
|
dependency.AddAssignedPort(self.getRoleBasedPortAssignment(child_element))
|
|
@@ -418,57 +413,136 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
418
413
|
def readNvBlockNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
419
414
|
short_name = self.getShortName(element)
|
|
420
415
|
needs = parent.createNvBlockNeeds(short_name)
|
|
421
|
-
self.logger.debug("
|
|
422
|
-
|
|
423
|
-
needs.
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
416
|
+
self.logger.debug("read NvBlockNeeds %s" % short_name)
|
|
417
|
+
self.readIdentifiable(element, needs)
|
|
418
|
+
needs.setCalcRamBlockCrc(self.getChildElementOptionalBooleanValue(element, "CALC-RAM-BLOCK-CRC")) \
|
|
419
|
+
.setCheckStaticBlockId(self.getChildElementOptionalBooleanValue(element, "CHECK-STATIC-BLOCK-ID")) \
|
|
420
|
+
.setNDataSets(self.getChildElementOptionalNumericalValue(element, "N-DATA-SETS")) \
|
|
421
|
+
.setNRomBlocks(self.getChildElementOptionalNumericalValue(element, "N-ROM-BLOCKS")) \
|
|
422
|
+
.setRamBlockStatusControl(self.getChildElementOptionalLiteral(element, "RAM-BLOCK-STATUS-CONTROL")) \
|
|
423
|
+
.setReadonly(self.getChildElementOptionalBooleanValue(element, "READONLY")) \
|
|
424
|
+
.setReliability(self.getChildElementOptionalLiteral(element, "RELIABILITY")) \
|
|
425
|
+
.setResistantToChangedSw(self.getChildElementOptionalBooleanValue(element, "RESISTANT-TO-CHANGED-SW")) \
|
|
426
|
+
.setRestoreAtStart(self.getChildElementOptionalBooleanValue(element, "RESTORE-AT-START")) \
|
|
427
|
+
.setStoreAtShutdown(self.getChildElementOptionalBooleanValue(element, "STORE-AT-SHUTDOWN")) \
|
|
428
|
+
.setStoreCyclic(self.getChildElementOptionalBooleanValue(element, "STORE-CYCLIC")) \
|
|
429
|
+
.setStoreEmergency(self.getChildElementOptionalBooleanValue(element, "STORE-EMERGENCY")) \
|
|
430
|
+
.setStoreImmediate(self.getChildElementOptionalBooleanValue(element, "STORE-IMMEDIATE")) \
|
|
431
|
+
.setUseAutoValidationAtShutDown(self.getChildElementOptionalBooleanValue(element, "USE-AUTO-VALIDATION-AT-SHUT-DOWN")) \
|
|
432
|
+
.setUseCRCCompMechanism(self.getChildElementOptionalBooleanValue(element, "USE-CRC-COMP-MECHANISM")) \
|
|
433
|
+
.setWriteOnlyOnce(self.getChildElementOptionalBooleanValue(element, "WRITE-ONLY-ONCE")) \
|
|
434
|
+
.setWriteVerification(self.getChildElementOptionalBooleanValue(element, "WRITE-VERIFICATION")) \
|
|
435
|
+
.setWritingPriority(self.getChildElementOptionalLiteral(element, "WRITING-PRIORITY"))
|
|
436
|
+
|
|
437
|
+
def reaDiagnosticCommunicationManagerNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
438
|
+
short_name = self.getShortName(element)
|
|
439
|
+
needs = parent.createDiagnosticCommunicationManagerNeeds(short_name)
|
|
440
|
+
self.logger.debug("read DiagnosticCommunicationManagerNeeds %s" % short_name)
|
|
441
|
+
self.readIdentifiable(element, needs)
|
|
442
|
+
needs.setServiceRequestCallbackType(self.getChildElementOptionalLiteral(element, "SERVICE-REQUEST-CALLBACK-TYPE"))
|
|
443
|
+
|
|
444
|
+
def readDiagnosticRoutineNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
445
|
+
short_name = self.getShortName(element)
|
|
446
|
+
needs = parent.createDiagnosticRoutineNeeds(short_name)
|
|
447
|
+
self.logger.debug("read DiagnosticRoutineNeeds %s" % short_name)
|
|
448
|
+
self.readIdentifiable(element, needs)
|
|
449
|
+
needs.setDiagRoutineType(self.getChildElementOptionalLiteral(element, "DIAG-ROUTINE-TYPE")) \
|
|
450
|
+
.setRidNumber(self.getChildElementOptionalIntegerValue(element, "RID-NUMBER"))
|
|
451
|
+
|
|
452
|
+
def readDiagnosticValueNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
453
|
+
short_name = self.getShortName(element)
|
|
454
|
+
needs = parent.createDiagnosticValueNeeds(short_name)
|
|
455
|
+
self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
|
|
456
|
+
self.readIdentifiable(element, needs)
|
|
457
|
+
needs.setDataLength(self.getChildElementOptionalPositiveInteger(element, "DATA-LENGTH")) \
|
|
458
|
+
.setDiagnosticValueAccess(self.getChildElementOptionalLiteral(element, "DIAGNOSTIC-VALUE-ACCESS")) \
|
|
459
|
+
.setDidNumber(self.getChildElementOptionalIntegerValue(element, "DID-NUMBER")) \
|
|
460
|
+
.setFixedLength(self.getChildElementOptionalBooleanValue(element, "FIXED-LENGTH")) \
|
|
461
|
+
.setProcessingStyle(self.getChildElementOptionalLiteral(element, "PROCESSING-STYLE"))
|
|
462
|
+
|
|
463
|
+
def readDiagEventDebounceMonitorInternal(self, element: ET.Element, algorithm: DiagEventDebounceMonitorInternal):
|
|
464
|
+
self.readIdentifiable(element, algorithm)
|
|
465
|
+
|
|
466
|
+
def readDiagEventDebounceAlgorithm(self, element: ET.Element, needs: DiagnosticEventNeeds):
|
|
467
|
+
for child_element in self.findall(element, "DIAG-EVENT-DEBOUNCE-ALGORITHM/*"):
|
|
468
|
+
tag_name = self.getTagName(child_element)
|
|
469
|
+
if tag_name == "DIAG-EVENT-DEBOUNCE-MONITOR-INTERNAL":
|
|
470
|
+
algorithm = needs.createDiagEventDebounceMonitorInternal(self.getShortName(child_element))
|
|
471
|
+
self.readDiagEventDebounceMonitorInternal(child_element, algorithm)
|
|
472
|
+
else:
|
|
473
|
+
self.notImplemented("Unsupported DiagEventDebounceAlgorithm <%s>" % tag_name)
|
|
474
|
+
|
|
475
|
+
def readDiagnosticEventNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
476
|
+
short_name = self.getShortName(element)
|
|
477
|
+
needs = parent.createDiagnosticEventNeeds(short_name)
|
|
478
|
+
self.logger.debug("read DiagnosticEventNeeds %s" % short_name)
|
|
479
|
+
self.readIdentifiable(element, needs)
|
|
480
|
+
self.readDiagEventDebounceAlgorithm(element, needs)
|
|
481
|
+
needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND")) \
|
|
482
|
+
.setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
|
|
483
|
+
|
|
484
|
+
def readCryptoServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
485
|
+
short_name = self.getShortName(element)
|
|
486
|
+
needs = parent.createCryptoServiceNeeds(short_name)
|
|
487
|
+
self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
|
|
488
|
+
self.readIdentifiable(element, needs)
|
|
489
|
+
needs.setMaximumKeyLength(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-KEY-LENGTH"))
|
|
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)
|
|
434
496
|
|
|
435
497
|
def readSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
436
|
-
for child_element in
|
|
498
|
+
for child_element in self.findall(element, "SERVICE-NEEDS/*"):
|
|
437
499
|
tag_name = self.getTagName(child_element.tag)
|
|
438
500
|
if tag_name == "NV-BLOCK-NEEDS":
|
|
439
501
|
self.readNvBlockNeeds(child_element, parent)
|
|
502
|
+
elif tag_name == "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS":
|
|
503
|
+
self.reaDiagnosticCommunicationManagerNeeds(child_element, parent)
|
|
504
|
+
elif tag_name == "DIAGNOSTIC-ROUTINE-NEEDS":
|
|
505
|
+
self.readDiagnosticRoutineNeeds(child_element, parent)
|
|
506
|
+
elif tag_name == "DIAGNOSTIC-VALUE-NEEDS":
|
|
507
|
+
self.readDiagnosticValueNeeds(child_element, parent)
|
|
508
|
+
elif tag_name == "DIAGNOSTIC-EVENT-NEEDS":
|
|
509
|
+
self.readDiagnosticEventNeeds(child_element, parent)
|
|
510
|
+
elif tag_name == "CRYPTO-SERVICE-NEEDS":
|
|
511
|
+
self.readCryptoServiceNeeds(child_element, parent)
|
|
512
|
+
elif tag_name == "ECU-STATE-MGR-USER-NEEDS":
|
|
513
|
+
self.readEcuStateMgrUserNeeds(child_element, parent)
|
|
440
514
|
else:
|
|
441
|
-
self.
|
|
515
|
+
self.notImplemented("Unsupported service needs <%s>" % tag_name)
|
|
442
516
|
|
|
443
517
|
def readSwcServiceDependency(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
444
518
|
short_name = self.getShortName(element)
|
|
445
519
|
dependency = parent.createSwcServiceDependency(short_name)
|
|
446
|
-
self.logger.debug("
|
|
520
|
+
self.logger.debug("read SwcServiceDependency %s" % short_name)
|
|
447
521
|
self.readServiceDependency(element, dependency)
|
|
448
522
|
self.readSwcServiceDependencyAssignedData(element, dependency)
|
|
449
523
|
self.readSwcServiceDependencyAssignedPorts(element, dependency)
|
|
450
524
|
self.readSwcServiceDependencyServiceNeeds(element, dependency)
|
|
451
525
|
|
|
452
526
|
def readSwcInternalBehaviorServiceDependencies(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
453
|
-
for child_element in
|
|
527
|
+
for child_element in self.findall(element, "SERVICE-DEPENDENCYS/*"):
|
|
454
528
|
tag_name = self.getTagName(child_element.tag)
|
|
455
529
|
if (tag_name == "SWC-SERVICE-DEPENDENCY"):
|
|
456
530
|
self.readSwcServiceDependency(child_element, parent)
|
|
457
531
|
else:
|
|
458
|
-
self.
|
|
532
|
+
self.notImplemented("Unsupported Service Dependencies <%s>" % tag_name)
|
|
459
533
|
|
|
460
534
|
def getIncludedDataTypeSets(self, element: ET.Element) -> List[IncludedDataTypeSet]:
|
|
461
535
|
include_data_type_sets = []
|
|
462
|
-
for child_element in self.findall(element, "
|
|
536
|
+
for child_element in self.findall(element, "INCLUDED-DATA-TYPE-SETS/INCLUDED-DATA-TYPE-SET"):
|
|
463
537
|
include_data_type_set = IncludedDataTypeSet()
|
|
464
|
-
self.
|
|
465
|
-
for ref_type in self.getChildElementRefTypeList(child_element, "
|
|
538
|
+
self.readARObjectAttributes(child_element, include_data_type_set)
|
|
539
|
+
for ref_type in self.getChildElementRefTypeList(child_element, "DATA-TYPE-REFS/DATA-TYPE-REF"):
|
|
466
540
|
include_data_type_set.addDataTypeRef(ref_type)
|
|
467
541
|
include_data_type_sets.append(include_data_type_set)
|
|
468
542
|
return include_data_type_sets
|
|
469
543
|
|
|
470
544
|
def readSwcInternalBehavior(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
471
|
-
for child_element in self.findall(element, "
|
|
545
|
+
for child_element in self.findall(element, "INTERNAL-BEHAVIORS/SWC-INTERNAL-BEHAVIOR"):
|
|
472
546
|
short_name = self.getShortName(child_element)
|
|
473
547
|
behavior = parent.createSwcInternalBehavior(short_name)
|
|
474
548
|
self.logger.debug("readSwcInternalBehavior %s" % behavior.full_name)
|
|
@@ -483,35 +557,83 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
483
557
|
self.readExplicitInterRunnableVariables(child_element, behavior)
|
|
484
558
|
for data_type_set in self.getIncludedDataTypeSets(child_element):
|
|
485
559
|
behavior.addIncludedDataTypeSet(data_type_set)
|
|
486
|
-
behavior.
|
|
560
|
+
behavior.handleTerminationAndRestart = self.getChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART")
|
|
487
561
|
self.readPerInstanceMemories(child_element, behavior)
|
|
488
562
|
self.readPerInstanceParameters(child_element, behavior)
|
|
489
563
|
self.readPortAPIOptions(child_element, behavior)
|
|
490
|
-
behavior.
|
|
564
|
+
behavior.setSupportsMultipleInstantiation(self.getChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION"))
|
|
491
565
|
|
|
492
566
|
def getIncludedModeDeclarationGroupSets(self, element: ET.Element) -> List[IncludedModeDeclarationGroupSet]:
|
|
493
567
|
group_sets = []
|
|
494
568
|
for child_element in self.findall(element, "INCLUDED-MODE-DECLARATION-GROUP-SETS/INCLUDED-MODE-DECLARATION-GROUP-SET"):
|
|
495
569
|
group_set = IncludedModeDeclarationGroupSet()
|
|
496
|
-
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"):
|
|
497
571
|
group_set.addModeDeclarationGroupRef(ref_type)
|
|
498
572
|
group_sets.append(group_set)
|
|
499
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)
|
|
500
626
|
|
|
501
627
|
def readBswInternalBehavior(self, element: ET.Element, parent: BswModuleDescription):
|
|
502
|
-
for child_element in
|
|
628
|
+
for child_element in self.findall(element, "INTERNAL-BEHAVIORS/BSW-INTERNAL-BEHAVIOR"):
|
|
503
629
|
short_name = self.getShortName(child_element)
|
|
504
630
|
behavior = parent.createBswInternalBehavior(short_name)
|
|
505
|
-
self.logger.debug("
|
|
631
|
+
self.logger.debug("read BswInternalBehavior %s" % behavior.full_name)
|
|
506
632
|
|
|
507
633
|
# read the internal behavior
|
|
508
634
|
self.readInternalBehavior(child_element, behavior)
|
|
509
|
-
self.
|
|
510
|
-
self.
|
|
511
|
-
self.readBswModeSwitchEvent(child_element, behavior)
|
|
512
|
-
self.readBswTimingEvent(child_element, behavior)
|
|
513
|
-
self.readBswDataReceivedEvent(child_element, behavior)
|
|
514
|
-
self.readBswInternalTriggerOccurredEvent(child_element, behavior)
|
|
635
|
+
self.readBswInternalBehaviorEntities(child_element, behavior)
|
|
636
|
+
self.readBswInternalBehaviorEvents(child_element, behavior)
|
|
515
637
|
self.readBswInternalBehaviorModeSenderPolicy(child_element, behavior)
|
|
516
638
|
for group_set in self.getIncludedModeDeclarationGroupSets(child_element):
|
|
517
639
|
behavior.addIncludedModeDeclarationGroupSet(group_set)
|
|
@@ -519,30 +641,45 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
519
641
|
def readBswModuleDescription(self, element: ET.Element, parent: ARPackage):
|
|
520
642
|
short_name = self.getShortName(element)
|
|
521
643
|
bsw_module_description = parent.createBswModuleDescription(short_name)
|
|
522
|
-
bsw_module_description.
|
|
644
|
+
bsw_module_description.moduleId = self.getChildElementOptionalNumericalValue(element, "MODULE-ID")
|
|
523
645
|
|
|
524
|
-
self.logger.debug("
|
|
646
|
+
self.logger.debug("read BswModuleDescription %s" % bsw_module_description.full_name)
|
|
525
647
|
|
|
526
648
|
self.readBswModuleDescriptionImplementedEntry(element, bsw_module_description)
|
|
527
649
|
self.readProvidedModeGroup(element, bsw_module_description)
|
|
528
650
|
self.readRequiredModeGroup(element, bsw_module_description)
|
|
529
651
|
self.readBswInternalBehavior(element, bsw_module_description)
|
|
530
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
|
+
|
|
531
667
|
def readBswModuleEntry(self, element: ET.Element, parent: ARPackage):
|
|
532
668
|
short_name = self.getShortName(element)
|
|
533
669
|
entry = parent.createBswModuleEntry(short_name)
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
entry.
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
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"))
|
|
540
678
|
|
|
541
|
-
|
|
542
|
-
self.logger.debug("readBswModuleEntry %s" % entry.getShortName())
|
|
679
|
+
self.logger.debug("read BswModuleEntry %s" % entry.getShortName())
|
|
543
680
|
|
|
544
681
|
def readEngineeringObject(self, element: ET.Element, engineering_obj: EngineeringObject):
|
|
545
|
-
self.
|
|
682
|
+
self.readARObjectAttributes(element, engineering_obj)
|
|
546
683
|
engineering_obj.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
547
684
|
.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY"))
|
|
548
685
|
|
|
@@ -553,7 +690,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
553
690
|
return obj
|
|
554
691
|
|
|
555
692
|
def readArtifactDescriptor(self, element: ET.Element, code_desc: Code):
|
|
556
|
-
for child_element in
|
|
693
|
+
for child_element in self.findall(element, "ARTIFACT-DESCRIPTORS/*"):
|
|
557
694
|
tag_name = self.getTagName(child_element.tag)
|
|
558
695
|
if tag_name == "AUTOSAR-ENGINEERING-OBJECT":
|
|
559
696
|
code_desc.addArtifactDescriptor(self.getAutosarEngineeringObject(child_element))
|
|
@@ -561,7 +698,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
561
698
|
self._raiseError("Unsupported Artifact Descriptor <%s>" % tag_name)
|
|
562
699
|
|
|
563
700
|
def readCodeDescriptor(self, element: ET.Element, impl: Implementation):
|
|
564
|
-
for child_element in
|
|
701
|
+
for child_element in self.findall(element, "CODE-DESCRIPTORS/CODE"):
|
|
565
702
|
short_name = self.getShortName(child_element)
|
|
566
703
|
self.logger.debug("readCodeDescriptor %s" % short_name)
|
|
567
704
|
code_desc = impl.createCodeDescriptor(short_name)
|
|
@@ -569,47 +706,63 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
569
706
|
self.readArtifactDescriptor(child_element, code_desc)
|
|
570
707
|
|
|
571
708
|
def readMemorySectionOptions(self, element: ET.Element, section: MemorySection):
|
|
572
|
-
child_element =
|
|
709
|
+
child_element = self.find(element, "OPTIONS")
|
|
573
710
|
if child_element is not None:
|
|
574
711
|
for value in self.getChildElementLiteralValueList(child_element, "OPTION"):
|
|
575
712
|
section.addOption(value)
|
|
576
713
|
|
|
577
714
|
def readMemorySections(self, element: ET.Element, consumption: ResourceConsumption):
|
|
578
|
-
for child_element in
|
|
579
|
-
|
|
580
|
-
memory_section = consumption.createMemorySection(short_name)
|
|
715
|
+
for child_element in self.findall(element, "MEMORY-SECTIONS/MEMORY-SECTION"):
|
|
716
|
+
memory_section = consumption.createMemorySection(self.getShortName(child_element))
|
|
581
717
|
self.readIdentifiable(child_element, memory_section)
|
|
582
|
-
memory_section.setAlignment(self.getChildElementOptionalLiteral(child_element, "ALIGNMENT"))
|
|
718
|
+
memory_section.setAlignment(self.getChildElementOptionalLiteral(child_element, "ALIGNMENT")) \
|
|
719
|
+
.setMemClassSymbol(self.getChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL"))
|
|
583
720
|
self.readMemorySectionOptions(child_element, memory_section)
|
|
584
|
-
memory_section.
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
self.logger.debug("
|
|
721
|
+
memory_section.setSize(self.getChildElementOptionalNumericalValue(child_element, "SIZE")) \
|
|
722
|
+
.setSwAddrMethodRef(self.getChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF")) \
|
|
723
|
+
.setSymbol(self.getChildElementOptionalLiteral(child_element, "SYMBOL"))
|
|
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)
|
|
588
742
|
|
|
589
743
|
def readResourceConsumption(self, element: ET.Element, impl: Implementation):
|
|
590
|
-
child_element =
|
|
744
|
+
child_element = self.find(element, "RESOURCE-CONSUMPTION")
|
|
591
745
|
if (child_element is not None):
|
|
592
|
-
|
|
593
|
-
consumption = ResourceConsumption(impl, short_name)
|
|
746
|
+
consumption = impl.createResourceConsumption(self.getShortName(child_element))
|
|
594
747
|
self.readIdentifiable(child_element, consumption)
|
|
595
748
|
self.readMemorySections(child_element, consumption)
|
|
596
|
-
|
|
749
|
+
self.readStackUsages(child_element, consumption)
|
|
597
750
|
|
|
598
751
|
def readImplementation(self, element: ET.Element, impl: Implementation):
|
|
599
752
|
self.readIdentifiable(element, impl)
|
|
600
753
|
self.readCodeDescriptor(element, impl)
|
|
601
|
-
impl.
|
|
754
|
+
impl.setProgrammingLanguage(self.getChildElementOptionalLiteral(element, "PROGRAMMING-LANGUAGE"))
|
|
602
755
|
self.readResourceConsumption(element, impl)
|
|
603
|
-
impl.
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
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"))
|
|
607
760
|
|
|
608
|
-
def readBswImplementationVendorSpecificModuleDefRefs(self, element: ET.Element,
|
|
609
|
-
child_element =
|
|
761
|
+
def readBswImplementationVendorSpecificModuleDefRefs(self, element: ET.Element, impl: BswImplementation):
|
|
762
|
+
child_element = self.find(element, "VENDOR-SPECIFIC-MODULE-DEF-REFS")
|
|
610
763
|
if child_element is not None:
|
|
611
|
-
for ref in self.getChildElementRefTypeList(child_element, "
|
|
612
|
-
|
|
764
|
+
for ref in self.getChildElementRefTypeList(child_element, "VENDOR-SPECIFIC-MODULE-DEF-REF"):
|
|
765
|
+
impl.addVendorSpecificModuleDefRef(ref)
|
|
613
766
|
|
|
614
767
|
def readBswImplementation(self, element: ET.Element, parent: ARPackage):
|
|
615
768
|
short_name = self.getShortName(element)
|
|
@@ -649,14 +802,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
649
802
|
|
|
650
803
|
def getAutosarParameterRef(self, element: ET.Element, key: str) -> AutosarParameterRef:
|
|
651
804
|
accessed_parameter = None
|
|
652
|
-
child_element =
|
|
805
|
+
child_element = self.find(element, key)
|
|
653
806
|
if child_element is not None:
|
|
654
807
|
accessed_parameter = AutosarParameterRef()
|
|
655
808
|
accessed_parameter.local_parameter_ref = self.getChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF")
|
|
656
809
|
return accessed_parameter
|
|
657
810
|
|
|
658
811
|
def readParameterAccesses(self, element: ET.Element, parent: RunnableEntity):
|
|
659
|
-
for child_element in
|
|
812
|
+
for child_element in self.findall(element, "PARAMETER-ACCESSS/PARAMETER-ACCESS"):
|
|
660
813
|
short_name = self.getShortName(child_element)
|
|
661
814
|
self.logger.debug("readParameterAccesses %s" % short_name)
|
|
662
815
|
parameter_access = parent.createParameterAccess(short_name)
|
|
@@ -669,11 +822,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
669
822
|
self._readVariableAccesses(element, parent, "READ-LOCAL-VARIABLES")
|
|
670
823
|
|
|
671
824
|
def readROperationIRef(self, element: ET.Element, key: str, parent: ServerCallPoint):
|
|
672
|
-
child_element =
|
|
825
|
+
child_element = self.find(element, key)
|
|
673
826
|
if (child_element is not None):
|
|
674
827
|
operation_iref = ROperationInAtomicSwcInstanceRef()
|
|
675
|
-
|
|
676
|
-
operation_iref.
|
|
828
|
+
self.readARObjectAttributes(child_element, operation_iref)
|
|
829
|
+
operation_iref.setContextRPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF")) \
|
|
830
|
+
.setTargetRequiredOperationRef(self.getChildElementOptionalRefType(child_element, "TARGET-REQUIRED-OPERATION-REF"))
|
|
677
831
|
parent.setOperationIRef(operation_iref)
|
|
678
832
|
|
|
679
833
|
def readRVariableInAtomicSwcInstanceRef(self, element: ET.Element, parent: DataReceivedEvent):
|
|
@@ -685,7 +839,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
685
839
|
parent.setDataIRef(data_iref)
|
|
686
840
|
|
|
687
841
|
def readRModeInAtomicSwcInstanceRef(self, element: ET.Element, parent: SwcModeSwitchEvent):
|
|
688
|
-
for child_element in
|
|
842
|
+
for child_element in self.findall(element, "MODE-IREFS/MODE-IREF"):
|
|
689
843
|
mode_iref = RModeInAtomicSwcInstanceRef()
|
|
690
844
|
mode_iref.setContextPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF")) \
|
|
691
845
|
.setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
|
|
@@ -767,18 +921,23 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
767
921
|
if tag_name == "RUNNABLE-ENTITY-ARGUMENT":
|
|
768
922
|
entity.addArgument(self.getRunnableEntityArgument(child_element))
|
|
769
923
|
else:
|
|
770
|
-
|
|
924
|
+
self.notImplemented("Unsupported Arguments of runnable entity <%s>" % tag_name)
|
|
925
|
+
|
|
926
|
+
def readAsynchronousServerCallResultPoint(self, element: ET.Element, entity: RunnableEntity):
|
|
927
|
+
for child_element in self.findall(element, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINTS/ASYNCHRONOUS-SERVER-CALL-RESULT-POINT"):
|
|
928
|
+
point = entity.createAsynchronousServerCallResultPoint(self.getShortName(child_element))
|
|
929
|
+
self.readIdentifiable(child_element, point)
|
|
930
|
+
point.setAsynchronousServerCallPointRef(self.getChildElementOptionalRefType(child_element, "ASYNCHRONOUS-SERVER-CALL-POINT-REF"))
|
|
771
931
|
|
|
772
932
|
def readRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
|
|
773
933
|
self.readExecutableEntity(element, entity)
|
|
774
934
|
self.readRunnableEntityArguments(element, entity)
|
|
775
935
|
|
|
936
|
+
self.readAsynchronousServerCallResultPoint(element, entity)
|
|
776
937
|
entity.setCanBeInvokedConcurrently(self.getChildElementOptionalBooleanValue(element, "CAN-BE-INVOKED-CONCURRENTLY"))
|
|
777
|
-
|
|
778
|
-
|
|
938
|
+
self.readDataReadAccesses(element, entity)
|
|
779
939
|
self.readDataReceivePointByArguments(element, entity)
|
|
780
940
|
self.readDataReceivePointByValues(element, entity)
|
|
781
|
-
self.readDataReadAccesses(element, entity)
|
|
782
941
|
self.readDataWriteAccesses(element, entity)
|
|
783
942
|
self.readDataSendPoints(element, entity)
|
|
784
943
|
self.readInternalBehaviorServerCallPoint(element, entity)
|
|
@@ -789,6 +948,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
789
948
|
self.readReadLocalVariables(element, entity)
|
|
790
949
|
self.readWrittenLocalVariables(element, entity)
|
|
791
950
|
|
|
951
|
+
entity.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
952
|
+
|
|
792
953
|
def readSwcInternalBehaviorRunnables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
793
954
|
for child_element in self.findall(element, "RUNNABLES/RUNNABLE-ENTITY"):
|
|
794
955
|
short_name = self.getShortName(child_element)
|
|
@@ -808,21 +969,23 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
808
969
|
def readRTEEvent(self, element: ET.Element, event: RTEEvent):
|
|
809
970
|
self.readIdentifiable(element, event)
|
|
810
971
|
event.startOnEventRef = self.getChildElementOptionalRefType(element, "START-ON-EVENT-REF")
|
|
811
|
-
for child_element in
|
|
972
|
+
for child_element in self.findall(element, "DISABLED-MODE-IREFS/DISABLED-MODE-IREF"):
|
|
812
973
|
iref = self.getRModeInAtomicSwcInstanceRef(child_element)
|
|
813
974
|
event.addDisabledModeIRef(iref)
|
|
814
975
|
|
|
815
|
-
def
|
|
816
|
-
child_element =
|
|
976
|
+
def readPOperationIRef(self, element: ET.Element, key: str, parent: OperationInvokedEvent):
|
|
977
|
+
child_element = self.find(element, key)
|
|
817
978
|
if (child_element is not None):
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
979
|
+
operation_iref = POperationInAtomicSwcInstanceRef()
|
|
980
|
+
self.readARObjectAttributes(child_element, operation_iref)
|
|
981
|
+
operation_iref.setContextPPortRef(self.getChildElementRefType(parent.getShortName(), child_element, "CONTEXT-P-PORT-REF")) \
|
|
982
|
+
.setTargetProvidedOperationRef(self.getChildElementRefType(parent.getShortName(), child_element, "TARGET-PROVIDED-OPERATION-REF"))
|
|
983
|
+
parent.setOperationIRef(operation_iref)
|
|
821
984
|
|
|
822
985
|
def readOperationInvokedEvent(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
823
986
|
short_name = self.getShortName(element)
|
|
824
987
|
event = parent.createOperationInvokedEvent(short_name)
|
|
825
|
-
self.
|
|
988
|
+
self.readPOperationIRef(element, "OPERATION-IREF", event)
|
|
826
989
|
self.readRTEEvent(element, event)
|
|
827
990
|
|
|
828
991
|
def readVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
|
|
@@ -830,13 +993,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
830
993
|
prototype.setInitValue(self.getInitValue(element))
|
|
831
994
|
|
|
832
995
|
def readExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
833
|
-
for child_element in
|
|
996
|
+
for child_element in self.findall(element, "EXPLICIT-INTER-RUNNABLE-VARIABLES/VARIABLE-DATA-PROTOTYPE"):
|
|
834
997
|
short_name = self.getShortName(child_element)
|
|
835
998
|
prototype = parent.createExplicitInterRunnableVariable(short_name)
|
|
836
999
|
self.readVariableDataPrototype(child_element, prototype)
|
|
837
1000
|
|
|
838
1001
|
def readPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
839
|
-
for child_element in
|
|
1002
|
+
for child_element in self.findall(element, "PER-INSTANCE-MEMORYS/PER-INSTANCE-MEMORY"):
|
|
840
1003
|
short_name = self.getShortName(child_element)
|
|
841
1004
|
memory = behavior.createPerInstanceMemory(short_name)
|
|
842
1005
|
self.readIdentifiable(child_element, memory)
|
|
@@ -855,26 +1018,27 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
855
1018
|
prototype.setInitValue(self.getInitValue(element))
|
|
856
1019
|
|
|
857
1020
|
def readPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
858
|
-
for child_element in
|
|
1021
|
+
for child_element in self.findall(element, "PER-INSTANCE-PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
859
1022
|
short_name = self.getShortName(child_element)
|
|
860
1023
|
prototype = behavior.createPerInstanceParameter(short_name)
|
|
861
1024
|
self.readParameterDataPrototype(child_element, prototype)
|
|
862
1025
|
|
|
863
1026
|
def readPortDefinedArgumentValue(self, element: ET.Element) -> PortDefinedArgumentValue:
|
|
864
1027
|
argument_value = PortDefinedArgumentValue()
|
|
865
|
-
child_element =
|
|
1028
|
+
child_element = self.find(element, "VALUE/*")
|
|
866
1029
|
if child_element is not None:
|
|
867
|
-
argument_value.
|
|
868
|
-
argument_value.
|
|
1030
|
+
argument_value.setValue(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1031
|
+
argument_value.setValueTypeTRef(self.getChildElementOptionalRefType(element, "VALUE-TYPE-TREF"))
|
|
869
1032
|
return argument_value
|
|
870
1033
|
|
|
871
1034
|
def readPortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
872
|
-
for child_element in
|
|
1035
|
+
for child_element in self.findall(element, "PORT-API-OPTIONS/PORT-API-OPTION"):
|
|
873
1036
|
option = PortAPIOption()
|
|
874
|
-
option.
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
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"))
|
|
1041
|
+
for argument_value_tag in self.findall(child_element, "PORT-ARG-VALUES/PORT-DEFINED-ARGUMENT-VALUE"):
|
|
878
1042
|
option.addPortArgValue(self.readPortDefinedArgumentValue(argument_value_tag))
|
|
879
1043
|
behavior.addPortAPIOption(option)
|
|
880
1044
|
|
|
@@ -882,8 +1046,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
882
1046
|
short_name = self.getShortName(element)
|
|
883
1047
|
event = parent.createTimingEvent(short_name)
|
|
884
1048
|
self.readRTEEvent(element, event)
|
|
885
|
-
event.
|
|
886
|
-
|
|
1049
|
+
event.setOffset(self.getChildElementOptionalTimeValue(element, "OFFSET")) \
|
|
1050
|
+
.setPeriod(self.getChildElementOptionalTimeValue(element, "PERIOD"))
|
|
887
1051
|
|
|
888
1052
|
def readDataReceivedEvent(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
889
1053
|
short_name = self.getShortName(element)
|
|
@@ -895,22 +1059,28 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
895
1059
|
short_name = self.getShortName(element)
|
|
896
1060
|
event = parent.createSwcModeSwitchEvent(short_name)
|
|
897
1061
|
self.readRTEEvent(element, event)
|
|
898
|
-
event.
|
|
1062
|
+
event.setActivation(self.getChildElementOptionalLiteral(element, "ACTIVATION"))
|
|
899
1063
|
self.readRModeInAtomicSwcInstanceRef(element, event)
|
|
900
1064
|
|
|
901
1065
|
def readInternalTriggerOccurredEvent(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
902
1066
|
short_name = self.getShortName(element)
|
|
903
1067
|
event = parent.createInternalTriggerOccurredEvent(short_name)
|
|
904
1068
|
self.readRTEEvent(element, event)
|
|
905
|
-
event.
|
|
1069
|
+
event.setEventSourceRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
|
|
906
1070
|
|
|
907
1071
|
def readInitEvent(self, element, parent: SwcInternalBehavior):
|
|
908
1072
|
short_name = self.getShortName(element)
|
|
909
1073
|
event = parent.createInitEvent(short_name)
|
|
910
1074
|
self.readRTEEvent(element, event)
|
|
911
1075
|
|
|
1076
|
+
def readAsynchronousServerCallReturnsEvent(self, element, parent: SwcInternalBehavior):
|
|
1077
|
+
short_name = self.getShortName(element)
|
|
1078
|
+
event = parent.createAsynchronousServerCallReturnsEvent(short_name)
|
|
1079
|
+
self.readRTEEvent(element, event)
|
|
1080
|
+
event.setActivationReasonRepresentationRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
|
|
1081
|
+
|
|
912
1082
|
def readSwcInternalBehaviorEvents(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
913
|
-
for child_element in
|
|
1083
|
+
for child_element in self.findall(element, "EVENTS/*"):
|
|
914
1084
|
tag_name = self.getTagName(child_element.tag)
|
|
915
1085
|
if tag_name == "TIMING-EVENT":
|
|
916
1086
|
self.readTimingEvent(child_element, parent)
|
|
@@ -924,19 +1094,30 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
924
1094
|
self.readInternalTriggerOccurredEvent(child_element, parent)
|
|
925
1095
|
elif tag_name == "INIT-EVENT":
|
|
926
1096
|
self.readInitEvent(child_element, parent)
|
|
1097
|
+
elif tag_name == "ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT":
|
|
1098
|
+
self.readAsynchronousServerCallReturnsEvent(child_element, parent)
|
|
927
1099
|
else:
|
|
928
|
-
self.
|
|
1100
|
+
self.notImplemented("Unsupported SwcInternalBehavior Event <%s>" % tag_name)
|
|
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
|
|
929
1110
|
|
|
930
1111
|
def readSwPointerTargetProps(self, element: ET.Element, parent: SwDataDefProps):
|
|
931
1112
|
child_element = self.find(element, "SW-POINTER-TARGET-PROPS")
|
|
932
1113
|
if child_element is not None:
|
|
933
1114
|
sw_pointer_target_props = SwPointerTargetProps()
|
|
934
|
-
sw_pointer_target_props.
|
|
935
|
-
|
|
1115
|
+
sw_pointer_target_props.setTargetCategory(self.getChildElementOptionalLiteral(child_element, "TARGET-CATEGORY")) \
|
|
1116
|
+
.setSwDataDefProps(self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS"))
|
|
936
1117
|
parent.swPointerTargetProps = sw_pointer_target_props
|
|
937
1118
|
|
|
938
1119
|
def readLanguageSpecific(self, element: ET.Element, specific: LanguageSpecific):
|
|
939
|
-
self.
|
|
1120
|
+
self.readARObjectAttributes(element, specific)
|
|
940
1121
|
specific.value = element.text
|
|
941
1122
|
if 'L' in element.attrib:
|
|
942
1123
|
specific.l = element.attrib['L']
|
|
@@ -953,7 +1134,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
953
1134
|
paragraphs = []
|
|
954
1135
|
for child_element in self.findall(element, key):
|
|
955
1136
|
paragraph = MultiLanguageParagraph()
|
|
956
|
-
self.
|
|
1137
|
+
self.readARObjectAttributes(child_element, paragraph)
|
|
957
1138
|
for l1 in self.getLParagraphs(child_element, "L-1"):
|
|
958
1139
|
paragraph.addL1(l1)
|
|
959
1140
|
paragraphs.append(paragraph)
|
|
@@ -986,13 +1167,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
986
1167
|
child_element = self.find(element, key)
|
|
987
1168
|
if child_element is not None:
|
|
988
1169
|
paragraph = MultiLanguagePlainText()
|
|
989
|
-
self.
|
|
1170
|
+
self.readARObjectAttributes(child_element, paragraph)
|
|
990
1171
|
for l10 in self.getLPlainTexts(child_element, "L-10"):
|
|
991
1172
|
paragraph.addL10(l10)
|
|
992
1173
|
return paragraph
|
|
993
1174
|
|
|
994
1175
|
def readDocumentationBlock(self, element: ET.Element, block: DocumentationBlock):
|
|
995
|
-
self.
|
|
1176
|
+
self.readARObjectAttributes(element, block)
|
|
996
1177
|
for paragraph in self.getMultiLanguageParagraphs(element, "P"):
|
|
997
1178
|
block.addP(paragraph)
|
|
998
1179
|
for list in self.getListElements(element, "LIST"):
|
|
@@ -1021,7 +1202,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1021
1202
|
|
|
1022
1203
|
def getAnnotations(self, element: ET.Element) -> List[Annotation]:
|
|
1023
1204
|
annotations = []
|
|
1024
|
-
for child_element in
|
|
1205
|
+
for child_element in self.findall(element, "ANNOTATIONS/ANNOTATION"):
|
|
1025
1206
|
annotation = Annotation()
|
|
1026
1207
|
self.readGeneralAnnotation(child_element, annotation)
|
|
1027
1208
|
annotations.append(annotation)
|
|
@@ -1029,7 +1210,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1029
1210
|
|
|
1030
1211
|
def getSwAxisIndividual(self, element: ET.Element) -> SwAxisIndividual:
|
|
1031
1212
|
props = SwAxisIndividual()
|
|
1032
|
-
self.
|
|
1213
|
+
self.readARObjectAttributes(element, props)
|
|
1033
1214
|
props.setInputVariableTypeRef(self.getChildElementOptionalRefType(element, "INPUT-VARIABLE-TYPE-REF")) \
|
|
1034
1215
|
.setCompuMethodRef(self.getChildElementOptionalRefType(element, "COMPU-METHOD-REF")) \
|
|
1035
1216
|
.setSwMaxAxisPoints(self.getChildElementOptionalNumericalValue(element, "SW-MAX-AXIS-POINTS")) \
|
|
@@ -1046,10 +1227,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1046
1227
|
axis = SwCalprmAxis()
|
|
1047
1228
|
axis.sw_axis_index = self.getChildElementOptionalNumericalValue(element, "SW-AXIS-INDEX")
|
|
1048
1229
|
axis.category = self.getChildElementOptionalLiteral(element, "CATEGORY")
|
|
1049
|
-
child_element =
|
|
1230
|
+
child_element = self.find(element, "SW-AXIS-INDIVIDUAL")
|
|
1050
1231
|
if child_element is not None:
|
|
1051
1232
|
axis.sw_calprm_axis_type_props = self.getSwAxisIndividual(child_element)
|
|
1052
|
-
child_element =
|
|
1233
|
+
child_element = self.find(element, "SW-AXIS-GROUPED")
|
|
1053
1234
|
if child_element is not None:
|
|
1054
1235
|
axis.sw_calprm_axis_type_props = self.getSwAxisGrouped(child_element)
|
|
1055
1236
|
|
|
@@ -1057,7 +1238,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1057
1238
|
|
|
1058
1239
|
def getSwCalprmAxisSet(self, element: ET.Element, key: str) -> SwCalprmAxisSet:
|
|
1059
1240
|
set = SwCalprmAxisSet()
|
|
1060
|
-
for child_element in
|
|
1241
|
+
for child_element in self.findall(element, "%s/*" % key):
|
|
1061
1242
|
tag_name = self.getTagName(child_element.tag)
|
|
1062
1243
|
if tag_name == "SW-CALPRM-AXIS":
|
|
1063
1244
|
set.addSwCalprmAxis(self.getSwCalprmAxis(child_element))
|
|
@@ -1066,16 +1247,16 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1066
1247
|
def readSwDataDefProsInvalidValue(self, element: ET.Element, props: SwDataDefProps):
|
|
1067
1248
|
child_element = self.find(element, "INVALID-VALUE/*")
|
|
1068
1249
|
if child_element is not None:
|
|
1069
|
-
props.setInvalidValue(self.getValueSpecification(child_element))
|
|
1250
|
+
props.setInvalidValue(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1070
1251
|
|
|
1071
1252
|
def getSwDataDefProps(self, element: ET.Element, key: str) -> SwDataDefProps:
|
|
1072
|
-
child_element =
|
|
1253
|
+
child_element = self.find(element, key)
|
|
1073
1254
|
sw_data_def_props = None
|
|
1074
1255
|
if child_element is not None:
|
|
1075
|
-
conditional_tag =
|
|
1256
|
+
conditional_tag = self.find(child_element, "SW-DATA-DEF-PROPS-VARIANTS/SW-DATA-DEF-PROPS-CONDITIONAL")
|
|
1076
1257
|
if conditional_tag is not None:
|
|
1077
1258
|
sw_data_def_props = SwDataDefProps()
|
|
1078
|
-
self.
|
|
1259
|
+
self.readARObjectAttributes(child_element, sw_data_def_props)
|
|
1079
1260
|
|
|
1080
1261
|
for annotation in self.getAnnotations(conditional_tag):
|
|
1081
1262
|
sw_data_def_props.addAnnotation(annotation)
|
|
@@ -1083,17 +1264,20 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1083
1264
|
sw_data_def_props.setBaseTypeRef(self.getChildElementOptionalRefType(conditional_tag, "BASE-TYPE-REF")) \
|
|
1084
1265
|
.setDataConstrRef(self.getChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF")) \
|
|
1085
1266
|
.setCompuMethodRef(self.getChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF")) \
|
|
1267
|
+
.setSwAddrMethodRef(self.getChildElementOptionalRefType(conditional_tag, "SW-ADDR-METHOD-REF")) \
|
|
1086
1268
|
.setSwImplPolicy(self.getChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY")) \
|
|
1087
1269
|
.setSwIntendedResolution(self.getChildElementOptionalNumericalValue(conditional_tag, "SW-INTENDED-RESOLUTION")) \
|
|
1088
1270
|
.setImplementationDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF")) \
|
|
1271
|
+
.setStepSize(self.getChildElementOptionalFloatValue(conditional_tag, "STEP-SIZE")) \
|
|
1089
1272
|
.setSwCalibrationAccess(self.getChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS")) \
|
|
1090
1273
|
.setSwCalprmAxisSet(self.getSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET")) \
|
|
1274
|
+
.setSwPointerTargetProps(self.getSwPointerTargetProps(conditional_tag, "SW-POINTER-TARGET-PROPS")) \
|
|
1091
1275
|
.setSwRecordLayoutRef(self.getChildElementOptionalRefType(conditional_tag, "SW-RECORD-LAYOUT-REF")) \
|
|
1092
1276
|
.setValueAxisDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "VALUE-AXIS-DATA-TYPE-REF")) \
|
|
1093
|
-
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1277
|
+
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1094
1278
|
self.readSwDataDefProsInvalidValue(conditional_tag, sw_data_def_props)
|
|
1095
|
-
self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
1096
|
-
self.
|
|
1279
|
+
#self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
1280
|
+
self.readARObjectAttributes(conditional_tag, sw_data_def_props.conditional)
|
|
1097
1281
|
return sw_data_def_props
|
|
1098
1282
|
|
|
1099
1283
|
def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
@@ -1110,7 +1294,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1110
1294
|
prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
|
|
1111
1295
|
|
|
1112
1296
|
def readApplicationRecordElements(self, element: ET.Element, parent: ApplicationRecordDataType):
|
|
1113
|
-
for child_element in
|
|
1297
|
+
for child_element in self.findall(element, "ELEMENTS/APPLICATION-RECORD-ELEMENT"):
|
|
1114
1298
|
short_name = self.getShortName(child_element)
|
|
1115
1299
|
record_element = parent.createApplicationRecordElement(short_name)
|
|
1116
1300
|
self.logger.debug("readApplicationRecordElements %s" % short_name)
|
|
@@ -1127,10 +1311,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1127
1311
|
|
|
1128
1312
|
def readImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
|
|
1129
1313
|
for child_element in self.findall(element, "SUB-ELEMENTS/IMPLEMENTATION-DATA-TYPE-ELEMENT"):
|
|
1130
|
-
|
|
1131
|
-
type_element = parent.createImplementationDataTypeElement(short_name)
|
|
1314
|
+
type_element = parent.createImplementationDataTypeElement(self.getShortName(child_element))
|
|
1132
1315
|
self.readIdentifiable(child_element, type_element)
|
|
1133
1316
|
type_element.setArraySize(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE")) \
|
|
1317
|
+
.setArraySizeHandling(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING")) \
|
|
1134
1318
|
.setArraySizeSemantics(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS"))
|
|
1135
1319
|
self.readImplementationDataTypeElements(child_element, type_element)
|
|
1136
1320
|
type_element.setSwDataDefProps(self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS"))
|
|
@@ -1139,6 +1323,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1139
1323
|
short_name = self.getShortName(element)
|
|
1140
1324
|
data_type = parent.createImplementationDataType(short_name)
|
|
1141
1325
|
self.readAutosarDataType(element, data_type)
|
|
1326
|
+
data_type.setDynamicArraySizeProfile(self.getChildElementOptionalLiteral(element, "DYNAMIC-ARRAY-SIZE-PROFILE"))
|
|
1142
1327
|
self.readImplementationDataTypeElements(element, data_type)
|
|
1143
1328
|
data_type.setTypeEmitter(self.getChildElementOptionalLiteral(element, "TYPE-EMITTER"))
|
|
1144
1329
|
|
|
@@ -1183,7 +1368,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1183
1368
|
self.readBaseTypeDirectDefinition(element, data_type.baseTypeDefinition)
|
|
1184
1369
|
|
|
1185
1370
|
def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key:str) -> ApplicationCompositeElementInPortInterfaceInstanceRef:
|
|
1186
|
-
child_element =
|
|
1371
|
+
child_element = self.find(element, key)
|
|
1187
1372
|
iref = None
|
|
1188
1373
|
if child_element is not None:
|
|
1189
1374
|
iref = ApplicationCompositeElementInPortInterfaceInstanceRef()
|
|
@@ -1194,25 +1379,26 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1194
1379
|
def getCompositeNetworkRepresentation(self, element: ET.Element) -> CompositeNetworkRepresentation:
|
|
1195
1380
|
self.logger.debug("getCompositeNetworkRepresentation")
|
|
1196
1381
|
representation = CompositeNetworkRepresentation()
|
|
1197
|
-
representation.
|
|
1198
|
-
|
|
1382
|
+
representation.setLeafElementIRef(self.getApplicationCompositeElementInPortInterfaceInstanceRef(element, "LEAF-ELEMENT-IREF")) \
|
|
1383
|
+
.setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION"))
|
|
1199
1384
|
return representation
|
|
1200
1385
|
|
|
1201
1386
|
def readReceiverComSpec(self, element: ET.Element, com_spec: ReceiverComSpec):
|
|
1202
|
-
self.
|
|
1387
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1203
1388
|
for child_element in self.findall(element, "COMPOSITE-NETWORK-REPRESENTATIONS/COMPOSITE-NETWORK-REPRESENTATION"):
|
|
1204
1389
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
1205
|
-
com_spec.
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1390
|
+
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF")) \
|
|
1391
|
+
.setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION")) \
|
|
1392
|
+
.setHandleOutOfRange(self.getChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE")) \
|
|
1393
|
+
.setHandleOutOfRangeStatus(self.getChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE-STATUS")) \
|
|
1394
|
+
.setUsesEndToEndProtection(self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION"))
|
|
1209
1395
|
|
|
1210
1396
|
def getSwValues(self, element: ET.Element, key: str) -> SwValues:
|
|
1211
|
-
child_element =
|
|
1397
|
+
child_element = self.find(element, key)
|
|
1212
1398
|
if child_element is None:
|
|
1213
1399
|
return None
|
|
1214
1400
|
sw_values = SwValues()
|
|
1215
|
-
self.
|
|
1401
|
+
self.readARObjectAttributes(child_element, sw_values)
|
|
1216
1402
|
for v in self.getChildElementFloatValueList(child_element, "V"):
|
|
1217
1403
|
sw_values.addV(v)
|
|
1218
1404
|
sw_values.vt = self.getChildElementOptionalLiteral(child_element, "VT")
|
|
@@ -1220,30 +1406,30 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1220
1406
|
|
|
1221
1407
|
def getValueList(self, element: ET.Element, key: str) -> ValueList:
|
|
1222
1408
|
value_list = None
|
|
1223
|
-
child_element =
|
|
1409
|
+
child_element = self.find(element, key)
|
|
1224
1410
|
if child_element is not None:
|
|
1225
1411
|
self.logger.debug("getValueList %s" % key)
|
|
1226
1412
|
value_list = ValueList()
|
|
1227
|
-
self.
|
|
1228
|
-
value_list.
|
|
1413
|
+
self.readARObjectAttributes(child_element, value_list)
|
|
1414
|
+
value_list.setV(self.getChildElementOptionalFloatValue(child_element, "V"))
|
|
1229
1415
|
return value_list
|
|
1230
1416
|
|
|
1231
1417
|
def getSwValueCont(self, element: ET.Element) -> SwValueCont:
|
|
1232
1418
|
cont = None
|
|
1233
|
-
child_element =
|
|
1419
|
+
child_element = self.find(element, "SW-VALUE-CONT")
|
|
1234
1420
|
if child_element is not None:
|
|
1235
1421
|
self.logger.debug("getSwValueCont")
|
|
1236
1422
|
cont = SwValueCont()
|
|
1237
|
-
self.
|
|
1238
|
-
cont.
|
|
1239
|
-
|
|
1240
|
-
|
|
1423
|
+
self.readARObjectAttributes(child_element, cont)
|
|
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"))
|
|
1241
1427
|
return cont
|
|
1242
1428
|
|
|
1243
1429
|
def readApplicationValueSpecification(self, element: ET.Element, value_spec: ApplicationValueSpecification):
|
|
1244
1430
|
self.readValueSpecification(element, value_spec)
|
|
1245
|
-
value_spec.
|
|
1246
|
-
|
|
1431
|
+
value_spec.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
1432
|
+
.setSwValueCont(self.getSwValueCont(element))
|
|
1247
1433
|
|
|
1248
1434
|
self.logger.debug("readApplicationValueSpecification Category %s" % value_spec.category)
|
|
1249
1435
|
|
|
@@ -1252,48 +1438,49 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1252
1438
|
child_element = self.find(element, "INIT-VALUE/*")
|
|
1253
1439
|
if child_element is not None:
|
|
1254
1440
|
self.logger.debug("getInitValue")
|
|
1255
|
-
value_spec = self.getValueSpecification(child_element)
|
|
1441
|
+
value_spec = self.getValueSpecification(child_element, self.getTagName(child_element))
|
|
1256
1442
|
return value_spec
|
|
1257
1443
|
|
|
1258
1444
|
def getClientComSpec(self, element: ET.Element) -> ClientComSpec:
|
|
1259
1445
|
com_spec = ClientComSpec()
|
|
1260
|
-
self.
|
|
1446
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1261
1447
|
com_spec.operationRef = self.getChildElementOptionalRefType(element, "OPERATION-REF")
|
|
1262
1448
|
return com_spec
|
|
1263
1449
|
|
|
1264
1450
|
def getParameterRequireComSpec(self, element: ET.Element) -> ParameterRequireComSpec:
|
|
1265
1451
|
com_spec = ParameterRequireComSpec()
|
|
1266
|
-
self.
|
|
1452
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1267
1453
|
com_spec.setInitValue(self.getInitValue(element)) \
|
|
1268
1454
|
.setParameterRef(self.getChildElementOptionalRefType(element, "PARAMETER-REF"))
|
|
1269
1455
|
return com_spec
|
|
1270
1456
|
|
|
1271
1457
|
def getQueuedReceiverComSpec(self, element: ET.Element) -> QueuedReceiverComSpec:
|
|
1272
1458
|
com_spec = QueuedReceiverComSpec()
|
|
1273
|
-
self.
|
|
1459
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1274
1460
|
self.readReceiverComSpec(element, com_spec)
|
|
1275
1461
|
com_spec.queueLength = self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH")
|
|
1276
1462
|
return com_spec
|
|
1277
1463
|
|
|
1278
1464
|
def getModeSwitchReceiverComSpec(self, element: ET.Element) -> ModeSwitchReceiverComSpec:
|
|
1279
1465
|
com_spec = ModeSwitchReceiverComSpec()
|
|
1280
|
-
self.
|
|
1466
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1281
1467
|
com_spec.modeGroupRef = self.getChildElementOptionalRefType(element, "MODE-GROUP-REF")
|
|
1282
1468
|
return com_spec
|
|
1283
1469
|
|
|
1284
1470
|
def getNonqueuedReceiverComSpec(self, element: ET.Element) -> NonqueuedReceiverComSpec:
|
|
1285
1471
|
com_spec = NonqueuedReceiverComSpec()
|
|
1286
|
-
self.
|
|
1472
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1287
1473
|
self.readReceiverComSpec(element, com_spec)
|
|
1288
|
-
com_spec.
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1474
|
+
com_spec.setAliveTimeout(self.getChildElementOptionalFloatValue(element, "ALIVE-TIMEOUT")) \
|
|
1475
|
+
.setEnableUpdated(self.getChildElementOptionalBooleanValue(element, "ENABLE-UPDATE")) \
|
|
1476
|
+
.setHandleNeverReceived(self.getChildElementOptionalBooleanValue(element, "HANDLE-NEVER-RECEIVED")) \
|
|
1477
|
+
.setFilter(self.getDataFilter(element, "FILTER")) \
|
|
1478
|
+
.setHandleTimeoutType(self.getChildElementOptionalLiteral(element, "HANDLE-TIMEOUT-TYPE")) \
|
|
1479
|
+
.setInitValue(self.getInitValue(element))
|
|
1293
1480
|
return com_spec
|
|
1294
1481
|
|
|
1295
1482
|
def readRequiredComSpec(self, element: ET.Element, parent: RPortPrototype):
|
|
1296
|
-
for child_element in
|
|
1483
|
+
for child_element in self.findall(element, "REQUIRED-COM-SPECS/*"):
|
|
1297
1484
|
tag_name = self.getTagName(child_element.tag)
|
|
1298
1485
|
if tag_name == "NONQUEUED-RECEIVER-COM-SPEC":
|
|
1299
1486
|
parent.addRequiredComSpec(self.getNonqueuedReceiverComSpec(child_element))
|
|
@@ -1308,14 +1495,36 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1308
1495
|
else:
|
|
1309
1496
|
self._raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
|
|
1310
1497
|
|
|
1498
|
+
def readAbstractRequiredPortPrototype(self, element: ET.Element, prototype: AbstractRequiredPortPrototype):
|
|
1499
|
+
self.readProvidedComSpec(element, prototype)
|
|
1500
|
+
|
|
1501
|
+
def readPPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
1502
|
+
short_name = self.getShortName(element)
|
|
1503
|
+
self.logger.debug("readPPortPrototype %s" % short_name)
|
|
1504
|
+
prototype = parent.createPPortPrototype(short_name)
|
|
1505
|
+
self.readIdentifiable(element, prototype)
|
|
1506
|
+
self.readAbstractRequiredPortPrototype(element, prototype)
|
|
1507
|
+
prototype.setProvidedInterfaceTRef(self.getChildElementOptionalRefType(element, "PROVIDED-INTERFACE-TREF"))
|
|
1508
|
+
|
|
1509
|
+
def readAbstractProvidedPortPrototype(self, element: ET.Element, prototype: AbstractProvidedPortPrototype):
|
|
1510
|
+
self.readRequiredComSpec(element, prototype)
|
|
1511
|
+
|
|
1311
1512
|
def readRPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
1312
1513
|
short_name = self.getShortName(element)
|
|
1313
|
-
self.logger.debug("
|
|
1514
|
+
self.logger.debug("read RPortPrototype %s" % short_name)
|
|
1314
1515
|
prototype = parent.createRPortPrototype(short_name)
|
|
1315
1516
|
self.readIdentifiable(element, prototype)
|
|
1517
|
+
self.readAbstractProvidedPortPrototype(element, prototype)
|
|
1316
1518
|
prototype.setRequiredInterfaceTRef(self.getChildElementOptionalRefType(element, "REQUIRED-INTERFACE-TREF"))
|
|
1317
1519
|
|
|
1318
|
-
|
|
1520
|
+
def readPRPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
1521
|
+
short_name = self.getShortName(element)
|
|
1522
|
+
self.logger.debug("read PRPortPrototype %s" % short_name)
|
|
1523
|
+
prototype = parent.createPRPortPrototype(short_name)
|
|
1524
|
+
self.readIdentifiable(element, prototype)
|
|
1525
|
+
self.readAbstractRequiredPortPrototype(element, prototype)
|
|
1526
|
+
self.readAbstractProvidedPortPrototype(element, prototype)
|
|
1527
|
+
prototype.setProvidedRequiredInterface(self.getChildElementOptionalRefType(element, "PROVIDED-REQUIRED-INTERFACE-TREF"))
|
|
1319
1528
|
|
|
1320
1529
|
def readAtomicSwComponentTypePorts(self, element: ET.Element, sw_component: AtomicSwComponentType):
|
|
1321
1530
|
for child_element in self.findall(element, "PORTS/*"):
|
|
@@ -1324,21 +1533,23 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1324
1533
|
self.readPPortPrototype(child_element, sw_component)
|
|
1325
1534
|
elif tag_name == "R-PORT-PROTOTYPE":
|
|
1326
1535
|
self.readRPortPrototype(child_element, sw_component)
|
|
1536
|
+
elif tag_name == "PR-PORT-PROTOTYPE":
|
|
1537
|
+
self.readPRPortPrototype(child_element, sw_component)
|
|
1327
1538
|
else:
|
|
1328
1539
|
self._raiseError("Unsupported Port Prototype <%s>" % tag_name)
|
|
1329
1540
|
|
|
1330
1541
|
def readTransmissionAcknowledgementRequest(self, element: ET.Element) -> TransmissionAcknowledgementRequest:
|
|
1331
|
-
child_element =
|
|
1542
|
+
child_element = self.find(element, "TRANSMISSION-ACKNOWLEDGE")
|
|
1332
1543
|
if (child_element is not None):
|
|
1333
1544
|
acknowledge = TransmissionAcknowledgementRequest()
|
|
1334
|
-
self.
|
|
1545
|
+
self.readARObjectAttributes(child_element, acknowledge)
|
|
1335
1546
|
acknowledge.timeout = self.getChildElementOptionalFloatValue(child_element, "TIMEOUT")
|
|
1336
1547
|
return acknowledge
|
|
1337
1548
|
return None
|
|
1338
1549
|
|
|
1339
1550
|
def readSenderComSpec(self, element:ET.Element, com_spec: SenderComSpec):
|
|
1340
|
-
self.
|
|
1341
|
-
for child_element in
|
|
1551
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1552
|
+
for child_element in self.findall(element, "COMPOSITE-NETWORK-REPRESENTATIONS/COMPOSITE-NETWORK-REPRESENTATION"):
|
|
1342
1553
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
1343
1554
|
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF")) \
|
|
1344
1555
|
.setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION")) \
|
|
@@ -1354,6 +1565,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1354
1565
|
|
|
1355
1566
|
def getServerComSpec(self, element) -> ServerComSpec:
|
|
1356
1567
|
com_spec = ServerComSpec()
|
|
1568
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1357
1569
|
com_spec.setOperationRef(self.getChildElementOptionalRefType(element, "OPERATION-REF")) \
|
|
1358
1570
|
.setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
|
|
1359
1571
|
return com_spec
|
|
@@ -1370,7 +1582,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1370
1582
|
return com_spec
|
|
1371
1583
|
|
|
1372
1584
|
def readProvidedComSpec(self, element: ET.Element, parent: PPortPrototype):
|
|
1373
|
-
for child_element in
|
|
1585
|
+
for child_element in self.findall(element, "PROVIDED-COM-SPECS/*"):
|
|
1374
1586
|
tag_name = self.getTagName(child_element.tag)
|
|
1375
1587
|
if tag_name == "NONQUEUED-SENDER-COM-SPEC":
|
|
1376
1588
|
parent.addProvidedComSpec(self.getNonqueuedSenderComSpec(child_element))
|
|
@@ -1383,15 +1595,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1383
1595
|
else:
|
|
1384
1596
|
self._raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
|
|
1385
1597
|
|
|
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
1598
|
def readPortGroupInnerGroupIRefs(self, element: ET.Element, parent: PortGroup):
|
|
1396
1599
|
for child_element in self.findall(element, "INNER-GROUP-IREFS/INNER-GROUP-IREF"):
|
|
1397
1600
|
inner_group_iref = InnerPortGroupInCompositionInstanceRef()
|
|
@@ -1412,7 +1615,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1412
1615
|
self.readPortGroupOuterPortRefs(element, port_group)
|
|
1413
1616
|
|
|
1414
1617
|
def readSwComponentTypePortGroups(self, element: ET.Element, parent: SwComponentType):
|
|
1415
|
-
for child_element in
|
|
1618
|
+
for child_element in self.findall(element, "PORT-GROUPS/*"):
|
|
1416
1619
|
tag_name = self.getTagName(child_element.tag)
|
|
1417
1620
|
if tag_name == "PORT-GROUP":
|
|
1418
1621
|
self.readPortGroup(child_element, parent)
|
|
@@ -1480,7 +1683,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1480
1683
|
child_element = self.find(element, "PROVIDER-IREF")
|
|
1481
1684
|
if (child_element is not None):
|
|
1482
1685
|
provide_iref = PPortInCompositionInstanceRef()
|
|
1483
|
-
self.
|
|
1686
|
+
self.readARObjectAttributes(child_element, provide_iref)
|
|
1484
1687
|
self.readPPortInCompositionInstanceRef(child_element, provide_iref)
|
|
1485
1688
|
parent.setProviderIRef(provide_iref)
|
|
1486
1689
|
|
|
@@ -1488,17 +1691,18 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1488
1691
|
child_element = self.find(element, "REQUESTER-IREF")
|
|
1489
1692
|
if (child_element is not None):
|
|
1490
1693
|
requester_iref = RPortInCompositionInstanceRef()
|
|
1491
|
-
self.
|
|
1694
|
+
self.readARObjectAttributes(child_element, requester_iref)
|
|
1492
1695
|
self.readRPortInCompositionInstanceRef(child_element, requester_iref)
|
|
1493
1696
|
parent.setRequesterIRef(requester_iref)
|
|
1494
1697
|
|
|
1495
1698
|
def readAssemblySwConnectors(self, element: ET.Element, parent: CompositionSwComponentType):
|
|
1496
|
-
for child_element in
|
|
1699
|
+
for child_element in self.findall(element, "CONNECTORS/ASSEMBLY-SW-CONNECTOR"):
|
|
1497
1700
|
short_name = self.getShortName(child_element)
|
|
1498
1701
|
self.logger.debug("readAssemblySwConnectors %s" % short_name)
|
|
1499
1702
|
|
|
1500
1703
|
connector = parent.createAssemblySwConnector(short_name)
|
|
1501
1704
|
self.readIdentifiable(child_element, connector)
|
|
1705
|
+
connector.setMappingRef(self.getChildElementOptionalRefType(child_element, "MAPPING-REF"))
|
|
1502
1706
|
self.readAssemblySwConnectorProviderIRef(child_element, connector)
|
|
1503
1707
|
self.readAssemblySwConnectorRequesterIRef(child_element, connector)
|
|
1504
1708
|
|
|
@@ -1569,9 +1773,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1569
1773
|
def readDataTypeMaps(self, element: ET.Element, parent: DataTypeMappingSet):
|
|
1570
1774
|
for child_element in element.findall("./xmlns:DATA-TYPE-MAPS/xmlns:DATA-TYPE-MAP", self.nsmap):
|
|
1571
1775
|
data_type_map = DataTypeMap()
|
|
1572
|
-
self.
|
|
1573
|
-
data_type_map.
|
|
1574
|
-
data_type_map.
|
|
1776
|
+
self.readARObjectAttributes(child_element, data_type_map)
|
|
1777
|
+
data_type_map.applicationDataTypeRef = self.getChildElementOptionalRefType(child_element, "APPLICATION-DATA-TYPE-REF")
|
|
1778
|
+
data_type_map.implementationDataTypeRef = self.getChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF")
|
|
1575
1779
|
parent.addDataTypeMap(data_type_map)
|
|
1576
1780
|
# add the data type map to global namespace
|
|
1577
1781
|
AUTOSAR.getInstance().addDataTypeMap(data_type_map)
|
|
@@ -1579,9 +1783,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1579
1783
|
def readModeRequestTypeMaps(self, element: ET.Element, parent: DataTypeMappingSet):
|
|
1580
1784
|
for child_element in element.findall("./xmlns:MODE-REQUEST-TYPE-MAPS/xmlns:MODE-REQUEST-TYPE-MAP", self.nsmap):
|
|
1581
1785
|
map = ModeRequestTypeMap()
|
|
1582
|
-
self.
|
|
1583
|
-
map.
|
|
1584
|
-
map.
|
|
1786
|
+
self.readARObjectAttributes(child_element, map)
|
|
1787
|
+
map.implementationDataTypeRef = self.getChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF")
|
|
1788
|
+
map.modeGroupRef = self.getChildElementOptionalRefType(child_element, "MODE-GROUP-REF")
|
|
1585
1789
|
parent.addModeRequestTypeMap(map)
|
|
1586
1790
|
|
|
1587
1791
|
def readDataTypeMappingSet(self, element: ET.Element, parent: ARPackage):
|
|
@@ -1592,7 +1796,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1592
1796
|
self.readModeRequestTypeMaps(element, mapping_set)
|
|
1593
1797
|
|
|
1594
1798
|
def readSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1595
|
-
for child_element in
|
|
1799
|
+
for child_element in self.findall(element, "DATA-ELEMENTS/VARIABLE-DATA-PROTOTYPE"):
|
|
1596
1800
|
short_name = self.getShortName(child_element)
|
|
1597
1801
|
prototype = sr_interface.createDataElement(short_name)
|
|
1598
1802
|
self.readIdentifiable(child_element, prototype)
|
|
@@ -1608,7 +1812,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1608
1812
|
sr_interface.addInvalidationPolicy(policy)
|
|
1609
1813
|
|
|
1610
1814
|
def readInvalidationPolicys(self, element: ET.Element, parent: SenderReceiverInterface):
|
|
1611
|
-
for child_element in
|
|
1815
|
+
for child_element in self.findall(element, "INVALIDATION-POLICYS/INVALIDATION-POLICY"):
|
|
1612
1816
|
# short_name = self.getShortName(child_element)
|
|
1613
1817
|
policy = parent.createInvalidationPolicy()
|
|
1614
1818
|
self.readIdentifiable(child_element, policy)
|
|
@@ -1624,24 +1828,24 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1624
1828
|
self.readSenderReceiverInterfaceInvalidationPolicies(element, sr_interface)
|
|
1625
1829
|
|
|
1626
1830
|
def readArgumentDataPrototypes(self, element: ET.Element, parent: ClientServerOperation):
|
|
1627
|
-
for child_element in
|
|
1831
|
+
for child_element in self.findall(element, "ARGUMENTS/ARGUMENT-DATA-PROTOTYPE"):
|
|
1628
1832
|
short_name = self.getShortName(child_element)
|
|
1629
1833
|
prototype = ArgumentDataPrototype(property, short_name)
|
|
1630
1834
|
self.readIdentifiable(child_element, prototype)
|
|
1631
1835
|
prototype.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
|
|
1632
1836
|
prototype.typeTRef = self.getChildElementOptionalRefType(child_element, "TYPE-TREF")
|
|
1633
1837
|
prototype.direction = self.getChildElementOptionalLiteral(child_element, "DIRECTION")
|
|
1634
|
-
prototype.
|
|
1838
|
+
prototype.serverArgumentImplPolicy = self.getChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY")
|
|
1635
1839
|
parent.addArgumentDataPrototype(prototype)
|
|
1636
1840
|
|
|
1637
1841
|
def readPossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
|
|
1638
|
-
child_element =
|
|
1842
|
+
child_element = self.find(element, "POSSIBLE-ERROR-REFS")
|
|
1639
1843
|
if child_element is not None:
|
|
1640
|
-
for ref in self.getChildElementRefTypeList(child_element, "
|
|
1844
|
+
for ref in self.getChildElementRefTypeList(child_element, "POSSIBLE-ERROR-REF"):
|
|
1641
1845
|
parent.addPossibleErrorRef(ref)
|
|
1642
1846
|
|
|
1643
1847
|
def readOperations(self, element: ET.Element, parent: ClientServerInterface):
|
|
1644
|
-
for child_element in
|
|
1848
|
+
for child_element in self.findall(element, "OPERATIONS/CLIENT-SERVER-OPERATION"):
|
|
1645
1849
|
short_name = self.getShortName(child_element)
|
|
1646
1850
|
operation = parent.createOperation(short_name)
|
|
1647
1851
|
self.readIdentifiable(child_element, operation)
|
|
@@ -1649,123 +1853,174 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1649
1853
|
self.readPossibleErrorRefs(child_element, operation)
|
|
1650
1854
|
|
|
1651
1855
|
def readPossibleErrors(self, element: ET.Element, parent: ClientServerInterface):
|
|
1652
|
-
for child_element in
|
|
1856
|
+
for child_element in self.findall(element, "POSSIBLE-ERRORS/APPLICATION-ERROR"):
|
|
1653
1857
|
short_name = self.getShortName(child_element)
|
|
1654
1858
|
error = parent.createApplicationError(short_name)
|
|
1655
1859
|
self.readIdentifiable(child_element, error) # some errors has its uuid
|
|
1656
1860
|
error.error_code = self.getChildElementOptionalNumericalValue(child_element, "ERROR-CODE")
|
|
1657
1861
|
|
|
1658
1862
|
def readPortInterface(self, element: ET.Element, port_interface: PortInterface):
|
|
1863
|
+
self.readIdentifiable(element, port_interface)
|
|
1659
1864
|
port_interface.isService = self.getChildElementOptionalBooleanValue(element, "IS-SERVICE")
|
|
1660
1865
|
port_interface.serviceKind = self.getChildElementOptionalLiteral(element, "SERVICE-KIND")
|
|
1661
1866
|
|
|
1867
|
+
def readParameterInterfaceParameters(self, element: ET.Element, param_interface: ParameterInterface):
|
|
1868
|
+
for child_element in self.findall(element, "PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
1869
|
+
short_name = self.getShortName(child_element)
|
|
1870
|
+
prototype = param_interface.createParameter(short_name)
|
|
1871
|
+
self.readParameterDataPrototype(child_element, prototype)
|
|
1872
|
+
|
|
1873
|
+
def readParameterInterface(self, element: ET.Element, parent: ARPackage):
|
|
1874
|
+
short_name = self.getShortName(element)
|
|
1875
|
+
self.logger.debug("Read ParameterInterface %s" % short_name)
|
|
1876
|
+
param_interface = parent.createParameterInterface(short_name)
|
|
1877
|
+
self.readPortInterface(element, param_interface)
|
|
1878
|
+
self.readParameterInterfaceParameters(element, param_interface)
|
|
1879
|
+
|
|
1662
1880
|
def readClientServerInterface(self, element: ET.Element, parent: ARPackage):
|
|
1663
1881
|
short_name = self.getShortName(element)
|
|
1664
1882
|
cs_interface = parent.createClientServerInterface(short_name)
|
|
1665
|
-
self.readIdentifiable(element, cs_interface)
|
|
1666
1883
|
self.readPortInterface(element, cs_interface)
|
|
1667
1884
|
self.readOperations(element, cs_interface)
|
|
1668
1885
|
self.readPossibleErrors(element, cs_interface)
|
|
1669
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
|
+
|
|
1670
1914
|
def readCompuConst(self, element: ET.Element, parent: CompuScale):
|
|
1671
|
-
child_element =
|
|
1915
|
+
child_element = self.find(element, "COMPU-CONST/VT")
|
|
1672
1916
|
if (child_element is not None):
|
|
1673
1917
|
self.logger.debug("readCompuConst VT: %s" % child_element.text)
|
|
1674
1918
|
contents = CompuScaleConstantContents()
|
|
1675
|
-
contents.
|
|
1676
|
-
contents.
|
|
1677
|
-
contents.
|
|
1678
|
-
contents.
|
|
1919
|
+
contents.compuConst = CompuConst()
|
|
1920
|
+
contents.compuConst.compuConstContentType = CompuConstTextContent()
|
|
1921
|
+
contents.compuConst.compuConstContentType.vt = ARLiteral()
|
|
1922
|
+
contents.compuConst.compuConstContentType.vt.setValue(child_element.text)
|
|
1679
1923
|
parent.compuScaleContents = contents
|
|
1680
1924
|
|
|
1681
1925
|
def readCompuNominatorDenominator(self, element: ET.Element, key: str, parent: CompuNominatorDenominator):
|
|
1682
|
-
for child_element in
|
|
1926
|
+
for child_element in self.findall(element, "%s/V" % key):
|
|
1683
1927
|
self.logger.debug("readCompuNominatorDenominator - %s: %s" % (key, child_element.text))
|
|
1684
1928
|
parent.add_v(child_element.text)
|
|
1685
1929
|
|
|
1686
1930
|
def readCompuRationCoeffs(self, element: ET.Element, parent: CompuScale):
|
|
1687
|
-
child_element =
|
|
1931
|
+
child_element = self.find(element, "COMPU-RATIONAL-COEFFS")
|
|
1688
1932
|
if (child_element is not None):
|
|
1689
1933
|
self.logger.debug("readCompuRationCoeffs")
|
|
1690
1934
|
contents = CompuScaleRationalFormula()
|
|
1691
|
-
contents.
|
|
1692
|
-
contents.
|
|
1693
|
-
contents.
|
|
1694
|
-
self.readCompuNominatorDenominator(child_element, "COMPU-DENOMINATOR", contents.
|
|
1695
|
-
self.readCompuNominatorDenominator(child_element, "COMPU-NUMERATOR", contents.
|
|
1935
|
+
contents.compuRationalCoeffs = CompuRationalCoeffs()
|
|
1936
|
+
contents.compuRationalCoeffs.compuDenominator = CompuNominatorDenominator()
|
|
1937
|
+
contents.compuRationalCoeffs.compuNumerator = CompuNominatorDenominator()
|
|
1938
|
+
self.readCompuNominatorDenominator(child_element, "COMPU-DENOMINATOR", contents.compuRationalCoeffs.compuDenominator)
|
|
1939
|
+
self.readCompuNominatorDenominator(child_element, "COMPU-NUMERATOR", contents.compuRationalCoeffs.compuNumerator)
|
|
1696
1940
|
parent.compuScaleContents = contents
|
|
1697
1941
|
|
|
1698
1942
|
def readCompuScaleContents(self, element: ET.Element, parent: CompuScale):
|
|
1699
1943
|
self.readCompuConst(element, parent)
|
|
1700
1944
|
self.readCompuRationCoeffs(element, parent)
|
|
1701
1945
|
|
|
1702
|
-
def
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1946
|
+
def getCompuScales(self, element: ET.Element) -> CompuScales:
|
|
1947
|
+
compu_scales = None
|
|
1948
|
+
compu_scales_tag = self.find(element, "COMPU-SCALES")
|
|
1949
|
+
if compu_scales_tag is not None:
|
|
1950
|
+
compu_scales = CompuScales()
|
|
1951
|
+
for child_element in self.findall(compu_scales_tag, 'COMPU-SCALE'):
|
|
1952
|
+
compu_scale = CompuScale()
|
|
1953
|
+
self.readARObjectAttributes(child_element, compu_scale)
|
|
1954
|
+
compu_scale.setLowerLimit(self.getChildLimitElement(child_element, "LOWER-LIMIT")) \
|
|
1955
|
+
.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
1956
|
+
.setSymbol(self.getChildElementOptionalLiteral(child_element, "SYMBOL")) \
|
|
1957
|
+
.setUpperLimit(self.getChildLimitElement(child_element, "UPPER-LIMIT"))
|
|
1958
|
+
self.readCompuScaleContents(child_element, compu_scale)
|
|
1959
|
+
compu_scales.addCompuScale(compu_scale)
|
|
1960
|
+
return compu_scales
|
|
1961
|
+
|
|
1962
|
+
def getCompu(self, element: ET.Element, key: str) -> Compu:
|
|
1963
|
+
child_element = self.find(element, key)
|
|
1964
|
+
compu = None
|
|
1715
1965
|
if (child_element is not None):
|
|
1716
|
-
|
|
1717
|
-
self.
|
|
1718
|
-
|
|
1719
|
-
self.
|
|
1966
|
+
compu = Compu()
|
|
1967
|
+
self.readARObjectAttributes(child_element, compu)
|
|
1968
|
+
compu.setCompuContent(self.getCompuScales(child_element))
|
|
1969
|
+
compu.setCompuDefaultValue(self.getCompuConst(child_element, "COMPU-DEFAULT-VALUE"))
|
|
1970
|
+
return compu
|
|
1720
1971
|
|
|
1721
1972
|
def readCompuMethod(self, element: ET.Element, parent: ARPackage):
|
|
1722
1973
|
short_name = self.getShortName(element)
|
|
1723
1974
|
self.logger.debug("readCompuMethods %s" % short_name)
|
|
1724
1975
|
compu_method = parent.createCompuMethod(short_name)
|
|
1725
1976
|
self.readIdentifiable(element, compu_method)
|
|
1726
|
-
compu_method.
|
|
1727
|
-
|
|
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"))
|
|
1728
1980
|
|
|
1729
1981
|
def readSwcBswRunnableMappings(self, element: ET.Element, parent: SwcBswMapping):
|
|
1730
|
-
for child_element in
|
|
1982
|
+
for child_element in self.findall(element, "RUNNABLE-MAPPINGS/SWC-BSW-RUNNABLE-MAPPING"):
|
|
1731
1983
|
mapping = SwcBswRunnableMapping()
|
|
1732
|
-
mapping.
|
|
1733
|
-
|
|
1984
|
+
mapping.setBswEntityRef(self.getChildElementOptionalRefType(child_element, "BSW-ENTITY-REF")) \
|
|
1985
|
+
.setSwcRunnableRef(self.getChildElementOptionalRefType(child_element, "SWC-RUNNABLE-REF"))
|
|
1734
1986
|
parent.addRunnableMapping(mapping)
|
|
1735
1987
|
|
|
1736
1988
|
def readSwcBswMappings(self, element: ET.Element, parent: ARPackage):
|
|
1737
1989
|
short_name = self.getShortName(element)
|
|
1738
|
-
self.logger.debug("
|
|
1990
|
+
self.logger.debug("read SwcBswMappings %s" % short_name)
|
|
1739
1991
|
swc_bsw_mapping = parent.createSwcBswMapping(short_name)
|
|
1740
|
-
swc_bsw_mapping.
|
|
1992
|
+
swc_bsw_mapping.setBswBehaviorRef(self.getChildElementOptionalRefType(element, "BSW-BEHAVIOR-REF"))
|
|
1741
1993
|
self.readSwcBswRunnableMappings(element, swc_bsw_mapping)
|
|
1742
|
-
swc_bsw_mapping.
|
|
1994
|
+
swc_bsw_mapping.setSwcBehaviorRef(self.getChildElementOptionalRefType(element, "SWC-BEHAVIOR-REF"))
|
|
1743
1995
|
|
|
1744
1996
|
def readValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
|
|
1745
|
-
self.
|
|
1746
|
-
value_spec.
|
|
1997
|
+
self.readARObjectAttributes(element, value_spec)
|
|
1998
|
+
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
|
|
1747
1999
|
self.logger.debug("readValueSpecification")
|
|
1748
2000
|
|
|
1749
2001
|
def getApplicationValueSpecification(self, element: ET.Element) -> ApplicationValueSpecification:
|
|
1750
2002
|
self.logger.debug("getApplicationValueSpecification")
|
|
1751
2003
|
value_spec = ApplicationValueSpecification()
|
|
1752
2004
|
self.readValueSpecification(element, value_spec)
|
|
1753
|
-
value_spec.
|
|
1754
|
-
|
|
2005
|
+
value_spec.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
2006
|
+
.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
2007
|
+
.setSwValueCont(self.getSwValueCont(element))
|
|
1755
2008
|
return value_spec
|
|
1756
2009
|
|
|
1757
2010
|
def getNumericalValueSpecification(self, element: ET.Element) -> NumericalValueSpecification:
|
|
1758
2011
|
self.logger.debug("getNumericalValueSpecification")
|
|
1759
2012
|
value_spec = NumericalValueSpecification()
|
|
1760
2013
|
self.readValueSpecification(element, value_spec)
|
|
1761
|
-
value_spec.
|
|
2014
|
+
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
2015
|
+
.setValue(self.getChildElementOptionalFloatValue(element, "VALUE"))
|
|
1762
2016
|
return value_spec
|
|
1763
2017
|
|
|
1764
2018
|
def getTextValueSpecification(self, element: ET.Element) -> TextValueSpecification:
|
|
1765
2019
|
self.logger.debug("getTextValueSpecification")
|
|
1766
2020
|
value_spec = TextValueSpecification()
|
|
1767
2021
|
self.readValueSpecification(element, value_spec)
|
|
1768
|
-
value_spec.
|
|
2022
|
+
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
2023
|
+
.setValue(self.getChildElementOptionalLiteral(element, "VALUE"))
|
|
1769
2024
|
return value_spec
|
|
1770
2025
|
|
|
1771
2026
|
def getArrayValueSpecification(self, element: ET.Element) -> ArrayValueSpecification:
|
|
@@ -1774,7 +2029,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1774
2029
|
self.readValueSpecification(element, value_spec)
|
|
1775
2030
|
child_elements = element.findall("./xmlns:ELEMENTS/*", self.nsmap)
|
|
1776
2031
|
for child_element in child_elements:
|
|
1777
|
-
value_spec.addElement(self.getValueSpecification(child_element))
|
|
2032
|
+
value_spec.addElement(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1778
2033
|
return value_spec
|
|
1779
2034
|
|
|
1780
2035
|
def getConstantReference(self, element: ET.Element) -> ConstantReference:
|
|
@@ -1784,8 +2039,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1784
2039
|
value_spec.setConstantRef(self.getChildElementOptionalRefType(element, "CONSTANT-REF"))
|
|
1785
2040
|
return value_spec
|
|
1786
2041
|
|
|
1787
|
-
def getValueSpecification(self, element: ET.Element) -> ValueSpecification:
|
|
1788
|
-
tag_name = self.getTagName(element.tag)
|
|
2042
|
+
def getValueSpecification(self, element: ET.Element, tag_name: str) -> ValueSpecification:
|
|
1789
2043
|
if tag_name == "APPLICATION-VALUE-SPECIFICATION":
|
|
1790
2044
|
value_spec = self.getApplicationValueSpecification(element)
|
|
1791
2045
|
elif tag_name == "RECORD-VALUE-SPECIFICATION":
|
|
@@ -1799,12 +2053,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1799
2053
|
elif tag_name == "CONSTANT-REFERENCE":
|
|
1800
2054
|
value_spec = self.getConstantReference(element)
|
|
1801
2055
|
else:
|
|
1802
|
-
|
|
2056
|
+
self.notImplemented("Unsupported RecordValueSpecificationField %s" % tag_name)
|
|
1803
2057
|
return value_spec
|
|
1804
2058
|
|
|
1805
2059
|
def readRecordValueSpecificationFields(self, element: ET.Element, spec: RecordValueSpecification):
|
|
1806
2060
|
for child_element in element.findall("./xmlns:FIELDS/*", self.nsmap):
|
|
1807
|
-
spec.addField(self.getValueSpecification(child_element))
|
|
2061
|
+
spec.addField(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1808
2062
|
|
|
1809
2063
|
def getRecordValueSpecification(self, element: ET.Element) -> RecordValueSpecification:
|
|
1810
2064
|
value_spec = RecordValueSpecification()
|
|
@@ -1817,14 +2071,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1817
2071
|
self.logger.debug("readConstantSpecification %s" % short_name)
|
|
1818
2072
|
spec = parent.createConstantSpecification(short_name)
|
|
1819
2073
|
self.readIdentifiable(element, spec)
|
|
1820
|
-
for
|
|
1821
|
-
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)))
|
|
1822
2076
|
|
|
1823
2077
|
def readInternalConstrs(self, element: ET.Element, parent: DataConstrRule):
|
|
1824
2078
|
child_element = element.find("./xmlns:INTERNAL-CONSTRS", self.nsmap)
|
|
1825
2079
|
if child_element is not None:
|
|
1826
2080
|
constrs = InternalConstrs()
|
|
1827
|
-
self.
|
|
2081
|
+
self.readARObjectAttributes(child_element, constrs)
|
|
1828
2082
|
constrs.lower_limit = self.getChildLimitElement(child_element, "LOWER-LIMIT")
|
|
1829
2083
|
constrs.upper_limit = self.getChildLimitElement(child_element, "UPPER-LIMIT")
|
|
1830
2084
|
parent.internalConstrs = constrs
|
|
@@ -1833,7 +2087,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1833
2087
|
child_element = element.find("./xmlns:PHYS-CONSTRS", self.nsmap)
|
|
1834
2088
|
if child_element is not None:
|
|
1835
2089
|
constrs = PhysConstrs()
|
|
1836
|
-
self.
|
|
2090
|
+
self.readARObjectAttributes(child_element, constrs)
|
|
1837
2091
|
constrs.lower_limit = self.getChildLimitElement(child_element, "LOWER-LIMIT")
|
|
1838
2092
|
constrs.upper_limit = self.getChildLimitElement(child_element, "UPPER-LIMIT")
|
|
1839
2093
|
constrs.unit_ref = self.getChildElementOptionalRefType(child_element, "UNIT-REF")
|
|
@@ -1843,7 +2097,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1843
2097
|
for child_element in element.findall("./xmlns:DATA-CONSTR-RULES/xmlns:DATA-CONSTR-RULE", self.nsmap):
|
|
1844
2098
|
self.logger.debug("readDataConstrRule")
|
|
1845
2099
|
rule = DataConstrRule()
|
|
1846
|
-
self.
|
|
2100
|
+
self.readARObjectAttributes(child_element, rule)
|
|
1847
2101
|
rule.constrLevel = self.getChildElementOptionalNumericalValue(child_element, "CONSTR-LEVEL")
|
|
1848
2102
|
self.readInternalConstrs(child_element, rule)
|
|
1849
2103
|
self.readPhysConstrs(child_element, rule)
|
|
@@ -1959,6 +2213,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1959
2213
|
|
|
1960
2214
|
def readDataPrototype(self, element: ET.Element, prototype: DataPrototype):
|
|
1961
2215
|
self.readIdentifiable(element, prototype)
|
|
2216
|
+
prototype.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
1962
2217
|
|
|
1963
2218
|
def readApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
|
|
1964
2219
|
self.readDataPrototype(element, prototype)
|
|
@@ -2003,6 +2258,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2003
2258
|
.setSwRecordLayoutGroupAxis(self.getChildElementOptionalNumericalValue(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS")) \
|
|
2004
2259
|
.setSwRecordLayoutGroupIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX")) \
|
|
2005
2260
|
.setSwRecordLayoutGroupFrom(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM")) \
|
|
2261
|
+
.setSwRecordLayoutGroupStep(self.getChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP")) \
|
|
2006
2262
|
.setSwRecordLayoutGroupTo(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO")) \
|
|
2007
2263
|
|
|
2008
2264
|
group_content = SwRecordLayoutGroupContent()
|
|
@@ -2025,8 +2281,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2025
2281
|
|
|
2026
2282
|
def readSwAddrMethod(self, element: ET.Element, parent: ARPackage):
|
|
2027
2283
|
short_name = self.getShortName(element)
|
|
2028
|
-
self.logger.debug("
|
|
2029
|
-
|
|
2284
|
+
self.logger.debug("read SwAddrMethod %s" % short_name)
|
|
2285
|
+
method = parent.createSwAddrMethod(short_name)
|
|
2286
|
+
self.readIdentifiable(element, method)
|
|
2287
|
+
method.setMemoryAllocationKeywordPolicy(self.getChildElementOptionalLiteral(element, "MEMORY-ALLOCATION-KEYWORD-POLICY"))
|
|
2288
|
+
for option in self.getChildElementLiteralValueList(element, "OPTIONS/OPTION"):
|
|
2289
|
+
method.addOption(option)
|
|
2290
|
+
method.setSectionInitializationPolicy(self.getChildElementOptionalLiteral(element, "SECTION-INITIALIZATION-POLICY")) \
|
|
2291
|
+
.setSectionType(self.getChildElementOptionalLiteral(element, "SECTION-TYPE"))
|
|
2030
2292
|
|
|
2031
2293
|
def readTriggerInterface(self, element: ET.Element, parent: ARPackage):
|
|
2032
2294
|
short_name = self.getShortName(element)
|
|
@@ -2034,9 +2296,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2034
2296
|
trigger_if = parent.createTriggerInterface(short_name)
|
|
2035
2297
|
|
|
2036
2298
|
def readModeDeclarationGroupModeDeclaration(self, element: ET.Element, parent: ModeDeclarationGroup):
|
|
2037
|
-
for child_element in
|
|
2299
|
+
for child_element in self.findall(element, "MODE-DECLARATIONS/MODE-DECLARATION"):
|
|
2038
2300
|
short_name = self.getShortName(child_element)
|
|
2039
2301
|
declaration = parent.createModeDeclaration(short_name)
|
|
2302
|
+
self.readARObjectAttributes(child_element, declaration)
|
|
2040
2303
|
declaration.setValue(self.getChildElementOptionalNumericalValue(child_element, "VALUE"))
|
|
2041
2304
|
|
|
2042
2305
|
def readModeDeclarationGroup(self, element: ET.Element, parent: ARPackage):
|
|
@@ -2157,7 +2420,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2157
2420
|
triggering = channel.createLinFrameTriggering(self.getShortName(child_element))
|
|
2158
2421
|
self.readLinFrameTriggering(child_element, triggering)
|
|
2159
2422
|
else:
|
|
2160
|
-
|
|
2423
|
+
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2161
2424
|
|
|
2162
2425
|
for child_element in self.findall(element, "I-SIGNAL-TRIGGERINGS/*"):
|
|
2163
2426
|
tag_name = self.getTagName(child_element)
|
|
@@ -2165,7 +2428,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2165
2428
|
triggering = channel.createISignalTriggering(self.getShortName(child_element))
|
|
2166
2429
|
self.readISignalTriggering(child_element, triggering)
|
|
2167
2430
|
else:
|
|
2168
|
-
|
|
2431
|
+
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2169
2432
|
|
|
2170
2433
|
for child_element in self.findall(element, "PDU-TRIGGERINGS/*"):
|
|
2171
2434
|
tag_name = self.getTagName(child_element)
|
|
@@ -2173,7 +2436,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2173
2436
|
triggering = channel.createPduTriggering(self.getShortName(child_element))
|
|
2174
2437
|
self.readPduTriggering(child_element, triggering)
|
|
2175
2438
|
else:
|
|
2176
|
-
|
|
2439
|
+
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2177
2440
|
|
|
2178
2441
|
def readCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
|
|
2179
2442
|
self.readIdentifiable(element, channel)
|
|
@@ -2193,7 +2456,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2193
2456
|
channel = cluster.createLinPhysicalChannel(self.getShortName(child_element))
|
|
2194
2457
|
self.readLinPhysicalChannel(child_element, channel)
|
|
2195
2458
|
else:
|
|
2196
|
-
|
|
2459
|
+
self.notImplemented("Unsupported Physical Channel <%s>" % tag_name)
|
|
2197
2460
|
|
|
2198
2461
|
|
|
2199
2462
|
def readCommunicationCluster(self, element: ET.Element, cluster: CommunicationCluster):
|
|
@@ -2504,11 +2767,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2504
2767
|
self.logger.debug("ISignal %s" % short_name)
|
|
2505
2768
|
signal = parent.createISignal(short_name)
|
|
2506
2769
|
self.readIdentifiable(element, signal)
|
|
2507
|
-
signal.
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2770
|
+
signal.setDataTypePolicy(self.getChildElementOptionalLiteral(element, "DATA-TYPE-POLICY")) \
|
|
2771
|
+
.setInitValue(self.getInitValue(element)) \
|
|
2772
|
+
.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH")) \
|
|
2773
|
+
.setNetworkRepresentationProps(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION-PROPS")) \
|
|
2774
|
+
.setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
|
|
2512
2775
|
|
|
2513
2776
|
def readEcucValueCollectionEcucValues(self, element: ET.Element, parent: EcucValueCollection):
|
|
2514
2777
|
for child_element in self.findall(element, "ECUC-VALUES/ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL"):
|
|
@@ -2550,7 +2813,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2550
2813
|
elif tag_name == "ECUC-NUMERICAL-PARAM-VALUE":
|
|
2551
2814
|
container_value.addParameterValue(self.getEcucNumericalParamValue(child_element))
|
|
2552
2815
|
else:
|
|
2553
|
-
|
|
2816
|
+
self.notImplemented("Unsupported EcucParameterValue <%s>" % tag_name)
|
|
2554
2817
|
|
|
2555
2818
|
def readEcucAbstractReferenceValue(self, element: ET.Element, value: EcucAbstractReferenceValue):
|
|
2556
2819
|
value.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
|
|
@@ -2568,9 +2831,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2568
2831
|
child_element = self.find(element, key)
|
|
2569
2832
|
if child_element is not None:
|
|
2570
2833
|
instance_ref = AnyInstanceRef()
|
|
2571
|
-
instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF"))
|
|
2572
|
-
|
|
2573
|
-
|
|
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"))
|
|
2574
2838
|
return instance_ref
|
|
2575
2839
|
|
|
2576
2840
|
def getEcucInstanceReferenceValue(self, element: ET.Element) -> EcucInstanceReferenceValue:
|
|
@@ -2587,7 +2851,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2587
2851
|
elif tag_name == "ECUC-INSTANCE-REFERENCE-VALUE":
|
|
2588
2852
|
container_value.addReferenceValue(self.getEcucInstanceReferenceValue(child_element))
|
|
2589
2853
|
else:
|
|
2590
|
-
|
|
2854
|
+
self.notImplemented("Unsupported EcucParameterValue <%s>" % tag_name)
|
|
2591
2855
|
|
|
2592
2856
|
def readEcucContainerValue(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2593
2857
|
self.readIdentifiable(element, container_value)
|
|
@@ -2608,7 +2872,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2608
2872
|
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
2609
2873
|
self.readEcucContainerValueEcucContainerValue(child_element, parent)
|
|
2610
2874
|
else:
|
|
2611
|
-
|
|
2875
|
+
self.notImplemented("Unsupported Sub Container %s" % tag_name)
|
|
2612
2876
|
|
|
2613
2877
|
def readEcucModuleConfigurationValuesEcucContainerValue(self, element: ET.Element, parent: EcucModuleConfigurationValues):
|
|
2614
2878
|
short_name = self.getShortName(element)
|
|
@@ -2622,7 +2886,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2622
2886
|
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
2623
2887
|
self.readEcucModuleConfigurationValuesEcucContainerValue(child_element, values)
|
|
2624
2888
|
else:
|
|
2625
|
-
|
|
2889
|
+
self.notImplemented("Unsupported Container %s" % tag_name)
|
|
2626
2890
|
|
|
2627
2891
|
def readEcucModuleConfigurationValues(self, element: ET.Element, parent: ARPackage):
|
|
2628
2892
|
short_name = self.getShortName(element)
|
|
@@ -2636,11 +2900,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2636
2900
|
|
|
2637
2901
|
def readPhysicalDimensions(self, element: ET.Element, parent: ARPackage):
|
|
2638
2902
|
short_name = self.getShortName(element)
|
|
2639
|
-
self.logger.debug("
|
|
2903
|
+
self.logger.debug("read PhysicalDimensions %s" % short_name)
|
|
2640
2904
|
dimension = parent.createPhysicalDimension(short_name)
|
|
2641
2905
|
self.readIdentifiable(element, dimension)
|
|
2642
2906
|
dimension.setCurrentExp(self.getChildElementOptionalNumericalValue(element, "CURRENT-EXP")) \
|
|
2643
2907
|
.setLengthExp(self.getChildElementOptionalNumericalValue(element, "LENGTH-EXP")) \
|
|
2908
|
+
.setTimeExp(self.getChildElementOptionalNumericalValue(element, "TIME-EXP"))
|
|
2644
2909
|
|
|
2645
2910
|
'''
|
|
2646
2911
|
def getIPduMappings(self, element: ET.Element) -> List[IPduMapping]:
|
|
@@ -2789,8 +3054,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2789
3054
|
|
|
2790
3055
|
def getSenderReceiverToSignalMapping(self, element: ET.Element) -> SenderReceiverToSignalMapping:
|
|
2791
3056
|
mapping = SenderReceiverToSignalMapping()
|
|
2792
|
-
mapping.
|
|
2793
|
-
|
|
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"))
|
|
2794
3060
|
return mapping
|
|
2795
3061
|
|
|
2796
3062
|
def getSenderReceiverToSignalGroupMapping(self, element: ET.Element) -> SenderReceiverToSignalGroupMapping:
|
|
@@ -2807,7 +3073,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2807
3073
|
elif tag_name == "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING":
|
|
2808
3074
|
mapping.addDataMapping(self.getSenderReceiverToSignalGroupMapping(child_element))
|
|
2809
3075
|
else:
|
|
2810
|
-
|
|
3076
|
+
self.notImplemented("Unsupported Data Mapping %s" % tag_name)
|
|
2811
3077
|
|
|
2812
3078
|
def readSwcToEcuMapping(self, element: ET.Element, mapping: SwcToEcuMapping):
|
|
2813
3079
|
self.logger.debug("SwcToEcuMapping %s" % mapping.getShortName())
|
|
@@ -2822,7 +3088,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2822
3088
|
if tag_name == "SWC-TO-ECU-MAPPING":
|
|
2823
3089
|
self.readSwcToEcuMapping(child_element, mapping.createSwcToEcuMapping(self.getShortName(child_element)))
|
|
2824
3090
|
else:
|
|
2825
|
-
|
|
3091
|
+
self.notImplemented("Unsupported Sw Mapping %s" % tag_name)
|
|
2826
3092
|
|
|
2827
3093
|
def readSystemMapping(self, element: ET.Element, parent: System):
|
|
2828
3094
|
short_name = self.getShortName(element)
|
|
@@ -2838,7 +3104,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2838
3104
|
if tag_name == "SYSTEM-MAPPING":
|
|
2839
3105
|
self.readSystemMapping(child_element, system)
|
|
2840
3106
|
else:
|
|
2841
|
-
|
|
3107
|
+
self.notImplemented("Unsupported Mapping %s" % tag_name)
|
|
2842
3108
|
|
|
2843
3109
|
def readRootSwCompositionPrototype(self, element: ET.Element, system: System):
|
|
2844
3110
|
child_element = self.find(element, "ROOT-SOFTWARE-COMPOSITIONS/ROOT-SW-COMPOSITION-PROTOTYPE")
|
|
@@ -2847,7 +3113,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2847
3113
|
self.logger.debug("Read RootSwCompositionPrototype %s" % short_name)
|
|
2848
3114
|
prototype = system.createRootSoftwareComposition(short_name)
|
|
2849
3115
|
self.readIdentifiable(child_element, prototype)
|
|
2850
|
-
prototype.
|
|
3116
|
+
prototype.setFlatMapRef(self.getChildElementOptionalRefType(child_element, "FLAT-MAP-REF")) \
|
|
3117
|
+
.setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
|
|
3118
|
+
|
|
2851
3119
|
|
|
2852
3120
|
def readSystem(self, element: ET.Element, parent: ARPackage):
|
|
2853
3121
|
short_name = self.getShortName(element)
|
|
@@ -2862,19 +3130,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2862
3130
|
self.readRootSwCompositionPrototype(element, system)
|
|
2863
3131
|
system.setSystemVersion(self.getChildElementOptionalRevisionLabelString(element, "SYSTEM-VERSION"))
|
|
2864
3132
|
|
|
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
3133
|
def readGenericEthernetFrame(self, element: ET.Element, parent: ARPackage):
|
|
2879
3134
|
short_name = self.getShortName(element)
|
|
2880
3135
|
self.logger.debug("Read EthernetFrame %s" % short_name)
|
|
@@ -2887,8 +3142,61 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2887
3142
|
frame = parent.createLifeCycleInfoSet(short_name)
|
|
2888
3143
|
self.readIdentifiable(element, frame)
|
|
2889
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
|
+
|
|
2890
3198
|
def readARPackageElements(self, element: ET.Element, parent: ARPackage):
|
|
2891
|
-
for child_element in self.findall(element, "
|
|
3199
|
+
for child_element in self.findall(element, "ELEMENTS/*"):
|
|
2892
3200
|
tag_name = self.getTagName(child_element.tag)
|
|
2893
3201
|
if tag_name == "COMPOSITION-SW-COMPONENT-TYPE":
|
|
2894
3202
|
self.readCompositionSwComponentType(child_element, parent)
|
|
@@ -3002,8 +3310,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3002
3310
|
self.readGenericEthernetFrame(child_element, parent)
|
|
3003
3311
|
elif tag_name == "LIFE-CYCLE-INFO-SET":
|
|
3004
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)
|
|
3005
3317
|
else:
|
|
3006
|
-
self.
|
|
3318
|
+
self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
|
|
3007
3319
|
|
|
3008
3320
|
def readReferenceBases(self, element: ET.Element, parent: ARPackage):
|
|
3009
3321
|
self.logger.debug("Read ReferenceBases")
|