armodel 1.7.0__py3-none-any.whl → 1.7.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/cli/arxml_dump_cli.py +2 -2
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +53 -16
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +41 -19
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +14 -14
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +22 -11
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +26 -9
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +8 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +711 -27
- armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +1 -1
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +91 -14
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +17 -4
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +78 -11
- armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +5 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +41 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -15
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +44 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +46 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +56 -35
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +1 -1
- armodel/models/M2/MSR/AsamHdo/AdminData.py +34 -8
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +170 -23
- armodel/models/M2/MSR/DataDictionary/AuxillaryObjects.py +4 -4
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +130 -37
- armodel/models/M2/MSR/Documentation/Annotation.py +1 -1
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +54 -0
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +9 -0
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +25 -0
- armodel/models/M2/MSR/Documentation/TextModel/LanguageDataModel.py +33 -5
- armodel/models/M2/MSR/Documentation/TextModel/MultilanguageData.py +15 -2
- armodel/models/M2/MSR/Documentation/__init__.py +1 -1
- armodel/models/__init__.py +4 -1
- armodel/parser/abstract_arxml_parser.py +31 -15
- armodel/parser/arxml_parser.py +456 -237
- armodel/tests/test_armodel/models/test_ar_ref.py +7 -4
- armodel/tests/test_armodel/models/test_datatype.py +4 -4
- armodel/tests/test_armodel/models/test_m2_msr.py +5 -5
- armodel/tests/test_armodel/parser/test_sw_components.py +10 -1
- armodel/tests/test_armodel/parser/test_system.py +0 -1
- armodel/writer/abstract_arxml_writer.py +17 -8
- armodel/writer/arxml_writer.py +436 -195
- {armodel-1.7.0.dist-info → armodel-1.7.2.dist-info}/METADATA +29 -1
- {armodel-1.7.0.dist-info → armodel-1.7.2.dist-info}/RECORD +47 -43
- {armodel-1.7.0.dist-info → armodel-1.7.2.dist-info}/LICENSE +0 -0
- {armodel-1.7.0.dist-info → armodel-1.7.2.dist-info}/WHEEL +0 -0
- {armodel-1.7.0.dist-info → armodel-1.7.2.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.0.dist-info → armodel-1.7.2.dist-info}/top_level.txt +0 -0
armodel/parser/arxml_parser.py
CHANGED
|
@@ -5,7 +5,6 @@ import os
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
10
9
|
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition
|
|
11
10
|
from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
|
|
@@ -20,9 +19,10 @@ from ..models.M2.MSR.DataDictionary.DataDefProperties import ValueList
|
|
|
20
19
|
from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroup
|
|
21
20
|
from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxisSet
|
|
22
21
|
from ..models.M2.MSR.Documentation.Annotation import Annotation, GeneralAnnotation
|
|
23
|
-
from ..models.M2.MSR.Documentation.BlockElements import DocumentationBlock
|
|
24
|
-
from ..models.M2.MSR.Documentation.TextModel.
|
|
25
|
-
from ..models.M2.MSR.Documentation.TextModel.
|
|
22
|
+
from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
|
|
23
|
+
from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
|
|
24
|
+
from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName, LOverviewParagraph, LParagraph, LanguageSpecific
|
|
25
|
+
from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText, MultilanguageLongName
|
|
26
26
|
|
|
27
27
|
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
28
28
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalBehavior, BswModuleEntity, BswScheduleEvent, BswModeSenderPolicy
|
|
@@ -36,7 +36,7 @@ from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import Res
|
|
|
36
36
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import MemorySection
|
|
37
37
|
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
|
|
38
38
|
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
|
|
39
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataAssignment, ServiceDependency
|
|
39
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceAlgorithm, DiagEventDebounceMonitorInternal, DiagnosticEventNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
|
|
40
40
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
|
|
41
41
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
42
42
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
|
|
@@ -45,7 +45,7 @@ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractRef
|
|
|
45
45
|
from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
|
|
46
46
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable
|
|
47
47
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
|
|
48
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
|
|
48
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
|
|
49
49
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral
|
|
50
50
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
|
|
51
51
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent
|
|
@@ -58,11 +58,11 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import Compo
|
|
|
58
58
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
|
|
59
59
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
60
60
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
|
|
61
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
61
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
62
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, CompositionSwComponentType, PortGroup, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
|
|
62
63
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector
|
|
63
64
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
|
|
64
65
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
65
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
66
66
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
67
67
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, SenderReceiverInterface
|
|
68
68
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
|
|
@@ -117,16 +117,20 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
117
117
|
for child_element in self.findall(element, "./SDGS/SDG"):
|
|
118
118
|
admin_data.addSdg(self.getSdg(child_element))
|
|
119
119
|
|
|
120
|
-
def
|
|
121
|
-
|
|
120
|
+
def getAdminData(self, element: ET.Element, key: str) -> AdminData:
|
|
121
|
+
admin_data = None
|
|
122
|
+
child_element = self.find(element, key)
|
|
122
123
|
if child_element is not None:
|
|
123
124
|
self.logger.debug("readAdminData")
|
|
124
125
|
admin_data = AdminData()
|
|
126
|
+
admin_data.setLanguage(self.getChildElementOptionalLiteral(child_element, "LANGUAGE")) \
|
|
127
|
+
.setUsedLanguages(self.getMultiLanguagePlainText(child_element, "USED-LANGUAGES"))
|
|
128
|
+
|
|
125
129
|
self.readSdgs(child_element, admin_data)
|
|
126
|
-
|
|
130
|
+
return admin_data
|
|
127
131
|
|
|
128
132
|
def readMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
|
|
129
|
-
self.
|
|
133
|
+
self.readARObjectAttributes(element, referrable)
|
|
130
134
|
referrable.setLongName(self.getMultilanguageLongName(element, "LONG-NAME"))
|
|
131
135
|
|
|
132
136
|
def readIdentifiable(self, element: ET.Element, identifiable: Identifiable):
|
|
@@ -136,14 +140,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
136
140
|
identifiable.addAnnotation(annotation)
|
|
137
141
|
|
|
138
142
|
identifiable.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
139
|
-
.setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC"))
|
|
143
|
+
.setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC")) \
|
|
144
|
+
.setIntroduction(self.getDocumentationBlock(element, "INTRODUCTION"))
|
|
140
145
|
|
|
141
|
-
self.
|
|
146
|
+
identifiable.setAdminData(self.getAdminData(element, "ADMIN-DATA"))
|
|
142
147
|
|
|
143
148
|
def readLLongName(self, element: ET.Element, long_name: MultilanguageLongName):
|
|
144
149
|
for child_element in self.findall(element, "./L-4"):
|
|
145
150
|
l4 = LLongName()
|
|
146
|
-
self.
|
|
151
|
+
self.readARObjectAttributes(child_element, l4)
|
|
147
152
|
l4.value = child_element.text
|
|
148
153
|
if 'L' in child_element.attrib:
|
|
149
154
|
l4.l = child_element.attrib['L']
|
|
@@ -154,14 +159,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
154
159
|
child_element = self.find(element, "./%s" % key)
|
|
155
160
|
if child_element is not None:
|
|
156
161
|
long_name = MultilanguageLongName()
|
|
157
|
-
self.
|
|
162
|
+
self.readARObjectAttributes(child_element, long_name)
|
|
158
163
|
self.readLLongName(child_element, long_name)
|
|
159
164
|
return long_name
|
|
160
165
|
|
|
161
166
|
def readLOverviewParagraph(self, element: ET.Element, paragraph: MultiLanguageOverviewParagraph):
|
|
162
167
|
for child_element in self.findall(element, "./L-2"):
|
|
163
168
|
l2 = LOverviewParagraph()
|
|
164
|
-
self.
|
|
169
|
+
self.readARObjectAttributes(child_element, l2)
|
|
165
170
|
l2.value = child_element.text
|
|
166
171
|
if 'L' in child_element.attrib:
|
|
167
172
|
l2.l = child_element.attrib['L']
|
|
@@ -172,7 +177,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
172
177
|
child_element = element.find("./xmlns:%s" % key, self.nsmap)
|
|
173
178
|
if child_element is not None:
|
|
174
179
|
paragraph = MultiLanguageOverviewParagraph()
|
|
175
|
-
self.
|
|
180
|
+
self.readARObjectAttributes(child_element, paragraph)
|
|
176
181
|
self.readLOverviewParagraph(child_element, paragraph)
|
|
177
182
|
return paragraph
|
|
178
183
|
|
|
@@ -180,7 +185,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
180
185
|
iref = None
|
|
181
186
|
if element is not None:
|
|
182
187
|
iref = VariableInAtomicSWCTypeInstanceRef()
|
|
183
|
-
self.
|
|
188
|
+
self.readARObjectAttributes(element, iref)
|
|
184
189
|
iref.setPortPrototypeRef(self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF"))
|
|
185
190
|
iref.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
|
|
186
191
|
return iref
|
|
@@ -189,7 +194,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
189
194
|
iref = None
|
|
190
195
|
if element is not None:
|
|
191
196
|
iref = ComponentInSystemInstanceRef()
|
|
192
|
-
self.
|
|
197
|
+
self.readARObjectAttributes(element, iref)
|
|
193
198
|
iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF"))
|
|
194
199
|
iref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF"))
|
|
195
200
|
iref.setTargetComponentRef(self.getChildElementOptionalRefType(element, "TARGET-COMPONENT-REF"))
|
|
@@ -244,7 +249,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
244
249
|
self.readIdentifiable(child_element, variable_access)
|
|
245
250
|
|
|
246
251
|
def readBswModuleDescriptionImplementedEntry(self, element: ET.Element, parent: BswModuleDescription):
|
|
247
|
-
for child_element in
|
|
252
|
+
for child_element in self.findall(element, "PROVIDED-ENTRYS/BSW-MODULE-ENTRY-REF-CONDITIONAL"):
|
|
248
253
|
ref = self.getChildElementOptionalRefType(child_element, "BSW-MODULE-ENTRY-REF")
|
|
249
254
|
if (ref is not None):
|
|
250
255
|
parent.addImplementedEntry(ref)
|
|
@@ -255,7 +260,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
255
260
|
prototype.type_tref = self.getChildElementOptionalRefType(element, "TYPE-TREF")
|
|
256
261
|
|
|
257
262
|
def readProvidedModeGroup(self, element: ET.Element, parent: BswModuleDescription):
|
|
258
|
-
for child_element in
|
|
263
|
+
for child_element in self.findall(element, "PROVIDED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE"):
|
|
259
264
|
short_name = self.getShortName(child_element)
|
|
260
265
|
self.logger.debug("readProvidedModeGroup %s" % short_name)
|
|
261
266
|
|
|
@@ -263,7 +268,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
263
268
|
self.readModeDeclarationGroupPrototype(child_element, mode_group)
|
|
264
269
|
|
|
265
270
|
def readRequiredModeGroup(self, element: ET.Element, parent: BswModuleDescription):
|
|
266
|
-
for child_element in
|
|
271
|
+
for child_element in self.findall(element, "REQUIRED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE"):
|
|
267
272
|
short_name = self.getShortName(child_element)
|
|
268
273
|
self.logger.debug("readRequiredModeGroup %s" % short_name)
|
|
269
274
|
mode_group = parent.createProvidedModeGroup(short_name)
|
|
@@ -313,7 +318,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
313
318
|
self.readBswEvent(element, event)
|
|
314
319
|
|
|
315
320
|
def readBswModeSwitchEvent(self, element: ET.Element, parent: BswInternalBehavior):
|
|
316
|
-
for child_element in
|
|
321
|
+
for child_element in self.findall(element, "EVENTS/BSW-MODE-SWITCH-EVENT"):
|
|
317
322
|
short_name = self.getShortName(child_element)
|
|
318
323
|
self.logger.debug("readBswModeSwitchEvent %s" % short_name)
|
|
319
324
|
event = parent.createBswModeSwitchEvent(short_name)
|
|
@@ -321,29 +326,29 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
321
326
|
self.readBswScheduleEvent(child_element, event)
|
|
322
327
|
|
|
323
328
|
def readBswTimingEvent(self, element: ET.Element, parent: BswInternalBehavior):
|
|
324
|
-
for child_element in
|
|
329
|
+
for child_element in self.findall(element, "EVENTS/BSW-TIMING-EVENT"):
|
|
325
330
|
short_name = self.getShortName(child_element)
|
|
326
|
-
self.logger.debug("
|
|
331
|
+
self.logger.debug("read BswTimingEvent %s" % short_name)
|
|
327
332
|
event = parent.createBswTimingEvent(short_name)
|
|
328
|
-
event.
|
|
333
|
+
event.setPeriod(self.getChildElementOptionalTimeValue(child_element, "PERIOD"))
|
|
329
334
|
# Read the Inherit BswScheduleEvent
|
|
330
335
|
self.readBswScheduleEvent(child_element, event)
|
|
331
336
|
|
|
332
337
|
def readBswDataReceivedEvent(self, element: ET.Element, parent: BswInternalBehavior):
|
|
333
|
-
for child_element in
|
|
338
|
+
for child_element in self.findall(element, "EVENTS/BSW-DATA-RECEIVED-EVENT"):
|
|
334
339
|
short_name = self.getShortName(child_element)
|
|
335
340
|
self.logger.debug("readBswDataReceivedEvent %s" % short_name)
|
|
336
341
|
event = parent.createBswDataReceivedEvent(short_name)
|
|
337
|
-
event.
|
|
342
|
+
event.dataRef = self.getChildElementRefType(parent.getShortName(), child_element, "DATA-REF")
|
|
338
343
|
# Read the Inherit BswScheduleEvent
|
|
339
344
|
self.readBswScheduleEvent(child_element, event)
|
|
340
345
|
|
|
341
346
|
def readBswInternalTriggerOccurredEvent(self, element: ET.Element, parent: BswInternalBehavior):
|
|
342
|
-
for child_element in self.findall(element, "
|
|
347
|
+
for child_element in self.findall(element, "EVENTS/BSW-INTERNAL-TRIGGER-OCCURRED-EVENT"):
|
|
343
348
|
short_name = self.getShortName(child_element)
|
|
344
349
|
self.logger.debug("readBswInternalTriggerOccurredEvent %s" % short_name)
|
|
345
350
|
event = parent.createBswInternalTriggerOccurredEvent(short_name)
|
|
346
|
-
event.
|
|
351
|
+
event.eventSourceRef = self.getChildElementRefType(parent.getShortName(), child_element, "EVENT-SOURCE-REF")
|
|
347
352
|
# Read the Inherit BswScheduleEvent
|
|
348
353
|
self.readBswScheduleEvent(child_element, event)
|
|
349
354
|
|
|
@@ -354,7 +359,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
354
359
|
return policy
|
|
355
360
|
|
|
356
361
|
def readBswInternalBehaviorModeSenderPolicy(self, element: ET.Element, parent: BswInternalBehavior):
|
|
357
|
-
for child_element in self.findall(element, "
|
|
362
|
+
for child_element in self.findall(element, "MODE-SENDER-POLICYS/*"):
|
|
358
363
|
tag_name = self.getTagName(child_element)
|
|
359
364
|
if tag_name == "BSW-MODE-SENDER-POLICY":
|
|
360
365
|
parent.addModeSenderPolicy(self.getBswModeSenderPolicy(child_element))
|
|
@@ -383,9 +388,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
383
388
|
|
|
384
389
|
def getRoleBasedDataAssignment(self, element: ET.Element) -> RoleBasedDataAssignment:
|
|
385
390
|
assignment = RoleBasedDataAssignment()
|
|
386
|
-
assignment.
|
|
387
|
-
|
|
388
|
-
|
|
391
|
+
assignment.setRole(self.getChildElementOptionalLiteral(element, "ROLE")) \
|
|
392
|
+
.setUsedParameterElement(self.getAutosarParameterRef(element, "USED-PARAMETER-ELEMENT")) \
|
|
393
|
+
.setUsedPimRef(self.getChildElementOptionalRefType(element, "USED-PIM-REF"))
|
|
389
394
|
return assignment
|
|
390
395
|
|
|
391
396
|
def getRoleBasedPortAssignment(self, element: ET.Element) -> RoleBasedPortAssignment:
|
|
@@ -393,12 +398,24 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
393
398
|
assignment.portPrototypeRef = self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF")
|
|
394
399
|
assignment.role = self.getChildElementOptionalLiteral(element, "ROLE")
|
|
395
400
|
return assignment
|
|
401
|
+
|
|
402
|
+
def getRoleBasedDataTypeAssignment(self, element: ET.Element) -> RoleBasedDataTypeAssignment:
|
|
403
|
+
assignment = RoleBasedDataTypeAssignment()
|
|
404
|
+
assignment.setRole(self.getChildElementOptionalLiteral(element, "ROLE"))
|
|
405
|
+
assignment.setUsedImplementationDataTypeRef(self.getChildElementOptionalRefType(element, "USED-IMPLEMENTATION-DATA-TYPE-REF"))
|
|
406
|
+
return assignment
|
|
396
407
|
|
|
397
408
|
def readServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
|
|
398
409
|
self.readIdentifiable(element, dependency)
|
|
410
|
+
for child_element in self.findall(element, "ASSIGNED-DATA-TYPES/*"):
|
|
411
|
+
tag_name = self.getTagName(child_element.tag)
|
|
412
|
+
if (tag_name == "ROLE-BASED-DATA-TYPE-ASSIGNMENT"):
|
|
413
|
+
dependency.addAssignedDataType(self.getRoleBasedDataTypeAssignment(child_element))
|
|
414
|
+
else:
|
|
415
|
+
self._raiseError("Unsupported assigned data type <%s>" % tag_name)
|
|
399
416
|
|
|
400
417
|
def readSwcServiceDependencyAssignedData(self, element: ET.Element, dependency: SwcServiceDependency):
|
|
401
|
-
for child_element in
|
|
418
|
+
for child_element in self.findall(element, "ASSIGNED-DATAS/*"):
|
|
402
419
|
tag_name = self.getTagName(child_element.tag)
|
|
403
420
|
if (tag_name == "ROLE-BASED-DATA-ASSIGNMENT"):
|
|
404
421
|
dependency.AddAssignedData(self.getRoleBasedDataAssignment(child_element))
|
|
@@ -416,27 +433,93 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
416
433
|
def readNvBlockNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
417
434
|
short_name = self.getShortName(element)
|
|
418
435
|
needs = parent.createNvBlockNeeds(short_name)
|
|
419
|
-
self.logger.debug("
|
|
420
|
-
needs.
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
436
|
+
self.logger.debug("read NvBlockNeeds %s" % short_name)
|
|
437
|
+
needs.setCalcRamBlockCrc(self.getChildElementOptionalBooleanValue(element, "CALC-RAM-BLOCK-CRC")) \
|
|
438
|
+
.setCheckStaticBlockId(self.getChildElementOptionalBooleanValue(element, "CHECK-STATIC-BLOCK-ID")) \
|
|
439
|
+
.setNDataSets(self.getChildElementOptionalNumericalValue(element, "N-DATA-SETS")) \
|
|
440
|
+
.setNRomBlocks(self.getChildElementOptionalNumericalValue(element, "N-ROM-BLOCKS")) \
|
|
441
|
+
.setRamBlockStatusControl(self.getChildElementOptionalLiteral(element, "RAM-BLOCK-STATUS-CONTROL")) \
|
|
442
|
+
.setReadonly(self.getChildElementOptionalBooleanValue(element, "READONLY")) \
|
|
443
|
+
.setReliability(self.getChildElementOptionalLiteral(element, "RELIABILITY")) \
|
|
444
|
+
.setResistantToChangedSw(self.getChildElementOptionalBooleanValue(element, "RESISTANT-TO-CHANGED-SW")) \
|
|
445
|
+
.setRestoreAtStart(self.getChildElementOptionalBooleanValue(element, "RESTORE-AT-START")) \
|
|
446
|
+
.setStoreAtShutdown(self.getChildElementOptionalBooleanValue(element, "STORE-AT-SHUTDOWN")) \
|
|
447
|
+
.setStoreCyclic(self.getChildElementOptionalBooleanValue(element, "STORE-CYCLIC")) \
|
|
448
|
+
.setStoreEmergency(self.getChildElementOptionalBooleanValue(element, "STORE-EMERGENCY")) \
|
|
449
|
+
.setStoreImmediate(self.getChildElementOptionalBooleanValue(element, "STORE-IMMEDIATE")) \
|
|
450
|
+
.setUseAutoValidationAtShutDown(self.getChildElementOptionalBooleanValue(element, "USE-AUTO-VALIDATION-AT-SHUT-DOWN")) \
|
|
451
|
+
.setUseCRCCompMechanism(self.getChildElementOptionalBooleanValue(element, "USE-CRC-COMP-MECHANISM")) \
|
|
452
|
+
.setWriteOnlyOnce(self.getChildElementOptionalBooleanValue(element, "WRITE-ONLY-ONCE")) \
|
|
453
|
+
.setWriteVerification(self.getChildElementOptionalBooleanValue(element, "WRITE-VERIFICATION")) \
|
|
454
|
+
.setWritingPriority(self.getChildElementOptionalLiteral(element, "WRITING-PRIORITY"))
|
|
455
|
+
|
|
456
|
+
def reaDiagnosticCommunicationManagerNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
457
|
+
short_name = self.getShortName(element)
|
|
458
|
+
needs = parent.createDiagnosticCommunicationManagerNeeds(short_name)
|
|
459
|
+
self.logger.debug("read DiagnosticCommunicationManagerNeeds %s" % short_name)
|
|
460
|
+
needs.setServiceRequestCallbackType(self.getChildElementOptionalLiteral(element, "SERVICE-REQUEST-CALLBACK-TYPE"))
|
|
461
|
+
|
|
462
|
+
def readDiagnosticRoutineNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
463
|
+
short_name = self.getShortName(element)
|
|
464
|
+
needs = parent.createDiagnosticRoutineNeeds(short_name)
|
|
465
|
+
self.logger.debug("read DiagnosticRoutineNeeds %s" % short_name)
|
|
466
|
+
needs.setDiagRoutineType(self.getChildElementOptionalLiteral(element, "DIAG-ROUTINE-TYPE")) \
|
|
467
|
+
.setRidNumber(self.getChildElementOptionalIntegerValue(element, "RID-NUMBER"))
|
|
468
|
+
|
|
469
|
+
def readDiagnosticValueNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
470
|
+
short_name = self.getShortName(element)
|
|
471
|
+
needs = parent.createDiagnosticValueNeeds(short_name)
|
|
472
|
+
self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
|
|
473
|
+
needs.setDataLength(self.getChildElementOptionalPositiveInteger(element, "DATA-LENGTH")) \
|
|
474
|
+
.setDiagnosticValueAccess(self.getChildElementOptionalLiteral(element, "DIAGNOSTIC-VALUE-ACCESS")) \
|
|
475
|
+
.setDidNumber(self.getChildElementOptionalIntegerValue(element, "DID-NUMBER")) \
|
|
476
|
+
.setFixedLength(self.getChildElementOptionalBooleanValue(element, "FIXED-LENGTH")) \
|
|
477
|
+
.setProcessingStyle(self.getChildElementOptionalLiteral(element, "PROCESSING-STYLE"))
|
|
478
|
+
|
|
479
|
+
def readDiagEventDebounceMonitorInternal(self, element: ET.Element, algorithm: DiagEventDebounceMonitorInternal):
|
|
480
|
+
self.readIdentifiable(element, algorithm)
|
|
481
|
+
|
|
482
|
+
def readDiagEventDebounceAlgorithm(self, element: ET.Element, needs: DiagnosticEventNeeds):
|
|
483
|
+
for child_element in self.findall(element, "DIAG-EVENT-DEBOUNCE-ALGORITHM/*"):
|
|
484
|
+
tag_name = self.getTagName(child_element)
|
|
485
|
+
if tag_name == "DIAG-EVENT-DEBOUNCE-MONITOR-INTERNAL":
|
|
486
|
+
algorithm = needs.createDiagEventDebounceMonitorInternal(self.getShortName(child_element))
|
|
487
|
+
self.readDiagEventDebounceMonitorInternal(child_element, algorithm)
|
|
488
|
+
else:
|
|
489
|
+
self.notImplemented("Unsupported DiagEventDebounceAlgorithm <%s>" % tag_name)
|
|
490
|
+
|
|
491
|
+
def readDiagnosticEventNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
492
|
+
short_name = self.getShortName(element)
|
|
493
|
+
needs = parent.createDiagnosticEventNeeds(short_name)
|
|
494
|
+
self.logger.debug("read DiagnosticEventNeeds %s" % short_name)
|
|
495
|
+
|
|
496
|
+
self.readDiagEventDebounceAlgorithm(element, needs)
|
|
497
|
+
needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND")) \
|
|
498
|
+
.setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
|
|
499
|
+
|
|
500
|
+
def readCryptoServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
501
|
+
short_name = self.getShortName(element)
|
|
502
|
+
needs = parent.createCryptoServiceNeeds(short_name)
|
|
503
|
+
self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
|
|
504
|
+
needs.setMaximumKeyLength(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-KEY-LENGTH"))
|
|
432
505
|
|
|
433
506
|
def readSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
434
507
|
for child_element in element.findall("./xmlns:SERVICE-NEEDS/*", self.nsmap):
|
|
435
508
|
tag_name = self.getTagName(child_element.tag)
|
|
436
509
|
if tag_name == "NV-BLOCK-NEEDS":
|
|
437
510
|
self.readNvBlockNeeds(child_element, parent)
|
|
511
|
+
elif tag_name == "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS":
|
|
512
|
+
self.reaDiagnosticCommunicationManagerNeeds(child_element, parent)
|
|
513
|
+
elif tag_name == "DIAGNOSTIC-ROUTINE-NEEDS":
|
|
514
|
+
self.readDiagnosticRoutineNeeds(child_element, parent)
|
|
515
|
+
elif tag_name == "DIAGNOSTIC-VALUE-NEEDS":
|
|
516
|
+
self.readDiagnosticValueNeeds(child_element, parent)
|
|
517
|
+
elif tag_name == "DIAGNOSTIC-EVENT-NEEDS":
|
|
518
|
+
self.readDiagnosticEventNeeds(child_element, parent)
|
|
519
|
+
elif tag_name == "CRYPTO-SERVICE-NEEDS":
|
|
520
|
+
self.readCryptoServiceNeeds(child_element, parent)
|
|
438
521
|
else:
|
|
439
|
-
self.
|
|
522
|
+
self.notImplemented("Unsupported service needs <%s>" % tag_name)
|
|
440
523
|
|
|
441
524
|
def readSwcServiceDependency(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
442
525
|
short_name = self.getShortName(element)
|
|
@@ -459,7 +542,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
459
542
|
include_data_type_sets = []
|
|
460
543
|
for child_element in self.findall(element, "./INCLUDED-DATA-TYPE-SETS/INCLUDED-DATA-TYPE-SET"):
|
|
461
544
|
include_data_type_set = IncludedDataTypeSet()
|
|
462
|
-
self.
|
|
545
|
+
self.readARObjectAttributes(child_element, include_data_type_set)
|
|
463
546
|
for ref_type in self.getChildElementRefTypeList(child_element, "./DATA-TYPE-REFS/DATA-TYPE-REF"):
|
|
464
547
|
include_data_type_set.addDataTypeRef(ref_type)
|
|
465
548
|
include_data_type_sets.append(include_data_type_set)
|
|
@@ -540,7 +623,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
540
623
|
self.logger.debug("readBswModuleEntry %s" % entry.getShortName())
|
|
541
624
|
|
|
542
625
|
def readEngineeringObject(self, element: ET.Element, engineering_obj: EngineeringObject):
|
|
543
|
-
self.
|
|
626
|
+
self.readARObjectAttributes(element, engineering_obj)
|
|
544
627
|
engineering_obj.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
545
628
|
.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY"))
|
|
546
629
|
|
|
@@ -574,14 +657,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
574
657
|
|
|
575
658
|
def readMemorySections(self, element: ET.Element, consumption: ResourceConsumption):
|
|
576
659
|
for child_element in element.findall("./xmlns:MEMORY-SECTIONS/xmlns:MEMORY-SECTION", self.nsmap):
|
|
577
|
-
|
|
578
|
-
memory_section = consumption.createMemorySection(short_name)
|
|
660
|
+
memory_section = consumption.createMemorySection(self.getShortName(child_element))
|
|
579
661
|
self.readIdentifiable(child_element, memory_section)
|
|
580
|
-
memory_section.setAlignment(self.getChildElementOptionalLiteral(child_element, "ALIGNMENT"))
|
|
662
|
+
memory_section.setAlignment(self.getChildElementOptionalLiteral(child_element, "ALIGNMENT")) \
|
|
663
|
+
.setMemClassSymbol(self.getChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL"))
|
|
581
664
|
self.readMemorySectionOptions(child_element, memory_section)
|
|
582
|
-
memory_section.
|
|
583
|
-
|
|
584
|
-
|
|
665
|
+
memory_section.setSize(self.getChildElementOptionalNumericalValue(child_element, "SIZE")) \
|
|
666
|
+
.setSwAddrMethodRef(self.getChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF")) \
|
|
667
|
+
.setSymbol(self.getChildElementOptionalLiteral(child_element, "SYMBOL"))
|
|
585
668
|
self.logger.debug("readMemorySections %s" % memory_section.getShortName())
|
|
586
669
|
|
|
587
670
|
def readResourceConsumption(self, element: ET.Element, impl: Implementation):
|
|
@@ -667,11 +750,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
667
750
|
self._readVariableAccesses(element, parent, "READ-LOCAL-VARIABLES")
|
|
668
751
|
|
|
669
752
|
def readROperationIRef(self, element: ET.Element, key: str, parent: ServerCallPoint):
|
|
670
|
-
child_element =
|
|
753
|
+
child_element = self.find(element, key)
|
|
671
754
|
if (child_element is not None):
|
|
672
755
|
operation_iref = ROperationInAtomicSwcInstanceRef()
|
|
673
|
-
|
|
674
|
-
operation_iref.
|
|
756
|
+
self.readARObjectAttributes(child_element, operation_iref)
|
|
757
|
+
operation_iref.setContextRPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF")) \
|
|
758
|
+
.setTargetRequiredOperationRef(self.getChildElementOptionalRefType(child_element, "TARGET-REQUIRED-OPERATION-REF"))
|
|
675
759
|
parent.setOperationIRef(operation_iref)
|
|
676
760
|
|
|
677
761
|
def readRVariableInAtomicSwcInstanceRef(self, element: ET.Element, parent: DataReceivedEvent):
|
|
@@ -683,7 +767,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
683
767
|
parent.setDataIRef(data_iref)
|
|
684
768
|
|
|
685
769
|
def readRModeInAtomicSwcInstanceRef(self, element: ET.Element, parent: SwcModeSwitchEvent):
|
|
686
|
-
for child_element in
|
|
770
|
+
for child_element in self.findall(element, "MODE-IREFS/MODE-IREF"):
|
|
687
771
|
mode_iref = RModeInAtomicSwcInstanceRef()
|
|
688
772
|
mode_iref.setContextPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF")) \
|
|
689
773
|
.setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
|
|
@@ -765,18 +849,23 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
765
849
|
if tag_name == "RUNNABLE-ENTITY-ARGUMENT":
|
|
766
850
|
entity.addArgument(self.getRunnableEntityArgument(child_element))
|
|
767
851
|
else:
|
|
768
|
-
|
|
852
|
+
self.notImplemented("Unsupported Arguments of runnable entity <%s>" % tag_name)
|
|
853
|
+
|
|
854
|
+
def readAsynchronousServerCallResultPoint(self, element: ET.Element, entity: RunnableEntity):
|
|
855
|
+
for child_element in self.findall(element, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINTS/ASYNCHRONOUS-SERVER-CALL-RESULT-POINT"):
|
|
856
|
+
point = entity.createAsynchronousServerCallResultPoint(self.getShortName(child_element))
|
|
857
|
+
self.readIdentifiable(child_element, point)
|
|
858
|
+
point.setAsynchronousServerCallPointRef(self.getChildElementOptionalRefType(child_element, "ASYNCHRONOUS-SERVER-CALL-POINT-REF"))
|
|
769
859
|
|
|
770
860
|
def readRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
|
|
771
861
|
self.readExecutableEntity(element, entity)
|
|
772
862
|
self.readRunnableEntityArguments(element, entity)
|
|
773
863
|
|
|
864
|
+
self.readAsynchronousServerCallResultPoint(element, entity)
|
|
774
865
|
entity.setCanBeInvokedConcurrently(self.getChildElementOptionalBooleanValue(element, "CAN-BE-INVOKED-CONCURRENTLY"))
|
|
775
|
-
|
|
776
|
-
|
|
866
|
+
self.readDataReadAccesses(element, entity)
|
|
777
867
|
self.readDataReceivePointByArguments(element, entity)
|
|
778
868
|
self.readDataReceivePointByValues(element, entity)
|
|
779
|
-
self.readDataReadAccesses(element, entity)
|
|
780
869
|
self.readDataWriteAccesses(element, entity)
|
|
781
870
|
self.readDataSendPoints(element, entity)
|
|
782
871
|
self.readInternalBehaviorServerCallPoint(element, entity)
|
|
@@ -787,6 +876,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
787
876
|
self.readReadLocalVariables(element, entity)
|
|
788
877
|
self.readWrittenLocalVariables(element, entity)
|
|
789
878
|
|
|
879
|
+
entity.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
880
|
+
|
|
790
881
|
def readSwcInternalBehaviorRunnables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
791
882
|
for child_element in self.findall(element, "RUNNABLES/RUNNABLE-ENTITY"):
|
|
792
883
|
short_name = self.getShortName(child_element)
|
|
@@ -810,17 +901,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
810
901
|
iref = self.getRModeInAtomicSwcInstanceRef(child_element)
|
|
811
902
|
event.addDisabledModeIRef(iref)
|
|
812
903
|
|
|
813
|
-
def
|
|
814
|
-
child_element =
|
|
904
|
+
def readPOperationIRef(self, element: ET.Element, key: str, parent: OperationInvokedEvent):
|
|
905
|
+
child_element = self.find(element, key)
|
|
815
906
|
if (child_element is not None):
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
907
|
+
operation_iref = POperationInAtomicSwcInstanceRef()
|
|
908
|
+
self.readARObjectAttributes(child_element, operation_iref)
|
|
909
|
+
operation_iref.setContextPPortRef(self.getChildElementRefType(parent.getShortName(), child_element, "CONTEXT-P-PORT-REF")) \
|
|
910
|
+
.setTargetProvidedOperationRef(self.getChildElementRefType(parent.getShortName(), child_element, "TARGET-PROVIDED-OPERATION-REF"))
|
|
911
|
+
parent.setOperationIRef(operation_iref)
|
|
819
912
|
|
|
820
913
|
def readOperationInvokedEvent(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
821
914
|
short_name = self.getShortName(element)
|
|
822
915
|
event = parent.createOperationInvokedEvent(short_name)
|
|
823
|
-
self.
|
|
916
|
+
self.readPOperationIRef(element, "OPERATION-IREF", event)
|
|
824
917
|
self.readRTEEvent(element, event)
|
|
825
918
|
|
|
826
919
|
def readVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
|
|
@@ -828,13 +921,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
828
921
|
prototype.setInitValue(self.getInitValue(element))
|
|
829
922
|
|
|
830
923
|
def readExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
831
|
-
for child_element in
|
|
924
|
+
for child_element in self.findall(element, "EXPLICIT-INTER-RUNNABLE-VARIABLES/VARIABLE-DATA-PROTOTYPE"):
|
|
832
925
|
short_name = self.getShortName(child_element)
|
|
833
926
|
prototype = parent.createExplicitInterRunnableVariable(short_name)
|
|
834
927
|
self.readVariableDataPrototype(child_element, prototype)
|
|
835
928
|
|
|
836
929
|
def readPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
837
|
-
for child_element in
|
|
930
|
+
for child_element in self.findall(element, "PER-INSTANCE-MEMORYS/PER-INSTANCE-MEMORY"):
|
|
838
931
|
short_name = self.getShortName(child_element)
|
|
839
932
|
memory = behavior.createPerInstanceMemory(short_name)
|
|
840
933
|
self.readIdentifiable(child_element, memory)
|
|
@@ -853,26 +946,26 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
853
946
|
prototype.setInitValue(self.getInitValue(element))
|
|
854
947
|
|
|
855
948
|
def readPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
856
|
-
for child_element in
|
|
949
|
+
for child_element in self.findall(element, "PER-INSTANCE-PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
857
950
|
short_name = self.getShortName(child_element)
|
|
858
951
|
prototype = behavior.createPerInstanceParameter(short_name)
|
|
859
952
|
self.readParameterDataPrototype(child_element, prototype)
|
|
860
953
|
|
|
861
954
|
def readPortDefinedArgumentValue(self, element: ET.Element) -> PortDefinedArgumentValue:
|
|
862
955
|
argument_value = PortDefinedArgumentValue()
|
|
863
|
-
child_element =
|
|
956
|
+
child_element = self.find(element, "VALUE/*")
|
|
864
957
|
if child_element is not None:
|
|
865
958
|
argument_value.value = self.getValueSpecification(child_element)
|
|
866
959
|
argument_value.valueTypeTRef = self.getChildElementOptionalRefType(element, "VALUE-TYPE-TREF")
|
|
867
960
|
return argument_value
|
|
868
961
|
|
|
869
962
|
def readPortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
870
|
-
for child_element in
|
|
963
|
+
for child_element in self.findall(element, "PORT-API-OPTIONS/PORT-API-OPTION"):
|
|
871
964
|
option = PortAPIOption()
|
|
872
965
|
option.enableTakeAddress = self.getChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS")
|
|
873
966
|
option.indirectAPI = self.getChildElementOptionalBooleanValue(child_element, "INDIRECT-API")
|
|
874
967
|
option.portRef = self.getChildElementOptionalRefType(child_element, "PORT-REF")
|
|
875
|
-
for argument_value_tag in
|
|
968
|
+
for argument_value_tag in self.findall(child_element, "PORT-ARG-VALUES/PORT-DEFINED-ARGUMENT-VALUE"):
|
|
876
969
|
option.addPortArgValue(self.readPortDefinedArgumentValue(argument_value_tag))
|
|
877
970
|
behavior.addPortAPIOption(option)
|
|
878
971
|
|
|
@@ -880,8 +973,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
880
973
|
short_name = self.getShortName(element)
|
|
881
974
|
event = parent.createTimingEvent(short_name)
|
|
882
975
|
self.readRTEEvent(element, event)
|
|
883
|
-
event.
|
|
884
|
-
|
|
976
|
+
event.setOffset(self.getChildElementOptionalTimeValue(element, "OFFSET")) \
|
|
977
|
+
.setPeriod(self.getChildElementOptionalTimeValue(element, "PERIOD"))
|
|
885
978
|
|
|
886
979
|
def readDataReceivedEvent(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
887
980
|
short_name = self.getShortName(element)
|
|
@@ -893,22 +986,28 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
893
986
|
short_name = self.getShortName(element)
|
|
894
987
|
event = parent.createSwcModeSwitchEvent(short_name)
|
|
895
988
|
self.readRTEEvent(element, event)
|
|
896
|
-
event.
|
|
989
|
+
event.setActivation(self.getChildElementOptionalLiteral(element, "ACTIVATION"))
|
|
897
990
|
self.readRModeInAtomicSwcInstanceRef(element, event)
|
|
898
991
|
|
|
899
992
|
def readInternalTriggerOccurredEvent(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
900
993
|
short_name = self.getShortName(element)
|
|
901
994
|
event = parent.createInternalTriggerOccurredEvent(short_name)
|
|
902
995
|
self.readRTEEvent(element, event)
|
|
903
|
-
event.
|
|
996
|
+
event.setEventSourceRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
|
|
904
997
|
|
|
905
998
|
def readInitEvent(self, element, parent: SwcInternalBehavior):
|
|
906
999
|
short_name = self.getShortName(element)
|
|
907
1000
|
event = parent.createInitEvent(short_name)
|
|
908
1001
|
self.readRTEEvent(element, event)
|
|
909
1002
|
|
|
1003
|
+
def readAsynchronousServerCallReturnsEvent(self, element, parent: SwcInternalBehavior):
|
|
1004
|
+
short_name = self.getShortName(element)
|
|
1005
|
+
event = parent.createAsynchronousServerCallReturnsEvent(short_name)
|
|
1006
|
+
self.readRTEEvent(element, event)
|
|
1007
|
+
event.setActivationReasonRepresentationRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
|
|
1008
|
+
|
|
910
1009
|
def readSwcInternalBehaviorEvents(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
911
|
-
for child_element in
|
|
1010
|
+
for child_element in self.findall(element, "EVENTS/*"):
|
|
912
1011
|
tag_name = self.getTagName(child_element.tag)
|
|
913
1012
|
if tag_name == "TIMING-EVENT":
|
|
914
1013
|
self.readTimingEvent(child_element, parent)
|
|
@@ -922,44 +1021,97 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
922
1021
|
self.readInternalTriggerOccurredEvent(child_element, parent)
|
|
923
1022
|
elif tag_name == "INIT-EVENT":
|
|
924
1023
|
self.readInitEvent(child_element, parent)
|
|
1024
|
+
elif tag_name == "ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT":
|
|
1025
|
+
self.readAsynchronousServerCallReturnsEvent(child_element, parent)
|
|
925
1026
|
else:
|
|
926
|
-
self.
|
|
1027
|
+
self.notImplemented("Unsupported SwcInternalBehavior Event <%s>" % tag_name)
|
|
927
1028
|
|
|
928
1029
|
def readSwPointerTargetProps(self, element: ET.Element, parent: SwDataDefProps):
|
|
929
1030
|
child_element = self.find(element, "SW-POINTER-TARGET-PROPS")
|
|
930
1031
|
if child_element is not None:
|
|
931
1032
|
sw_pointer_target_props = SwPointerTargetProps()
|
|
932
|
-
sw_pointer_target_props.
|
|
933
|
-
|
|
1033
|
+
sw_pointer_target_props.setTargetCategory(self.getChildElementOptionalLiteral(child_element, "TARGET-CATEGORY")) \
|
|
1034
|
+
.setSwDataDefProps(self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS"))
|
|
934
1035
|
parent.swPointerTargetProps = sw_pointer_target_props
|
|
935
1036
|
|
|
936
|
-
def
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
1037
|
+
def readLanguageSpecific(self, element: ET.Element, specific: LanguageSpecific):
|
|
1038
|
+
self.readARObjectAttributes(element, specific)
|
|
1039
|
+
specific.value = element.text
|
|
1040
|
+
if 'L' in element.attrib:
|
|
1041
|
+
specific.l = element.attrib['L']
|
|
1042
|
+
|
|
1043
|
+
def getLParagraphs(self, element: ET.Element, key: str) -> List[LParagraph]:
|
|
1044
|
+
results = []
|
|
1045
|
+
for child_element in self.findall(element, key):
|
|
1046
|
+
l1 = LParagraph()
|
|
1047
|
+
self.readLanguageSpecific(child_element, l1)
|
|
1048
|
+
results.append(l1)
|
|
1049
|
+
return results
|
|
944
1050
|
|
|
945
1051
|
def getMultiLanguageParagraphs(self, element: ET.Element, key: str) -> List[MultiLanguageParagraph]:
|
|
946
1052
|
paragraphs = []
|
|
947
1053
|
for child_element in self.findall(element, key):
|
|
948
1054
|
paragraph = MultiLanguageParagraph()
|
|
949
|
-
self.
|
|
950
|
-
self.
|
|
1055
|
+
self.readARObjectAttributes(child_element, paragraph)
|
|
1056
|
+
for l1 in self.getLParagraphs(child_element, "L-1"):
|
|
1057
|
+
paragraph.addL1(l1)
|
|
951
1058
|
paragraphs.append(paragraph)
|
|
952
1059
|
return paragraphs
|
|
1060
|
+
|
|
1061
|
+
def getLPlainTexts(self, element: ET.Element, key: str) -> List[LParagraph]:
|
|
1062
|
+
results = []
|
|
1063
|
+
for child_element in self.findall(element, key):
|
|
1064
|
+
l1 = LParagraph()
|
|
1065
|
+
self.readLanguageSpecific(child_element, l1)
|
|
1066
|
+
results.append(l1)
|
|
1067
|
+
return results
|
|
1068
|
+
|
|
1069
|
+
def getListElements(self, element: ET.Element, key: str) -> List[ListElement]:
|
|
1070
|
+
'''
|
|
1071
|
+
Read the DocumentationBlock List
|
|
1072
|
+
'''
|
|
1073
|
+
result = []
|
|
1074
|
+
for child_element in self.findall(element, key):
|
|
1075
|
+
list = ListElement()
|
|
1076
|
+
if 'TYPE' in child_element.attrib:
|
|
1077
|
+
list.setType(child_element.attrib['TYPE'])
|
|
1078
|
+
for block in self.getDocumentationBlockList(child_element, "ITEM"):
|
|
1079
|
+
list.addItem(block)
|
|
1080
|
+
result.append(list)
|
|
1081
|
+
return result
|
|
1082
|
+
|
|
1083
|
+
def getMultiLanguagePlainText(self, element: ET.Element, key: str) -> MultiLanguagePlainText:
|
|
1084
|
+
paragraph = None
|
|
1085
|
+
child_element = self.find(element, key)
|
|
1086
|
+
if child_element is not None:
|
|
1087
|
+
paragraph = MultiLanguagePlainText()
|
|
1088
|
+
self.readARObjectAttributes(child_element, paragraph)
|
|
1089
|
+
for l10 in self.getLPlainTexts(child_element, "L-10"):
|
|
1090
|
+
paragraph.addL10(l10)
|
|
1091
|
+
return paragraph
|
|
1092
|
+
|
|
1093
|
+
def readDocumentationBlock(self, element: ET.Element, block: DocumentationBlock):
|
|
1094
|
+
self.readARObjectAttributes(element, block)
|
|
1095
|
+
for paragraph in self.getMultiLanguageParagraphs(element, "P"):
|
|
1096
|
+
block.addP(paragraph)
|
|
1097
|
+
for list in self.getListElements(element, "LIST"):
|
|
1098
|
+
block.addList(list)
|
|
953
1099
|
|
|
954
1100
|
def getDocumentationBlock(self, element: ET.Element, key: str) -> DocumentationBlock:
|
|
955
1101
|
block = None
|
|
956
1102
|
child_element = self.find(element, key)
|
|
957
1103
|
if child_element is not None:
|
|
958
1104
|
block = DocumentationBlock()
|
|
959
|
-
self.
|
|
960
|
-
for paragraph in self.getMultiLanguageParagraphs(child_element, "P"):
|
|
961
|
-
block.addP(paragraph)
|
|
1105
|
+
self.readDocumentationBlock(child_element, block)
|
|
962
1106
|
return block
|
|
1107
|
+
|
|
1108
|
+
def getDocumentationBlockList(self, element: ET.Element, key: str) -> List[DocumentationBlock]:
|
|
1109
|
+
blocks = []
|
|
1110
|
+
for child_element in self.findall(element, key):
|
|
1111
|
+
block = DocumentationBlock()
|
|
1112
|
+
self.readDocumentationBlock(child_element, block)
|
|
1113
|
+
blocks.append(block)
|
|
1114
|
+
return blocks
|
|
963
1115
|
|
|
964
1116
|
def readGeneralAnnotation(self, element: ET.Element, annotation: GeneralAnnotation):
|
|
965
1117
|
annotation.setAnnotationOrigin(self.getChildElementOptionalLiteral(element, 'ANNOTATION-ORIGIN')) \
|
|
@@ -968,7 +1120,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
968
1120
|
|
|
969
1121
|
def getAnnotations(self, element: ET.Element) -> List[Annotation]:
|
|
970
1122
|
annotations = []
|
|
971
|
-
for child_element in
|
|
1123
|
+
for child_element in self.findall(element, "ANNOTATIONS/ANNOTATION"):
|
|
972
1124
|
annotation = Annotation()
|
|
973
1125
|
self.readGeneralAnnotation(child_element, annotation)
|
|
974
1126
|
annotations.append(annotation)
|
|
@@ -976,7 +1128,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
976
1128
|
|
|
977
1129
|
def getSwAxisIndividual(self, element: ET.Element) -> SwAxisIndividual:
|
|
978
1130
|
props = SwAxisIndividual()
|
|
979
|
-
self.
|
|
1131
|
+
self.readARObjectAttributes(element, props)
|
|
980
1132
|
props.setInputVariableTypeRef(self.getChildElementOptionalRefType(element, "INPUT-VARIABLE-TYPE-REF")) \
|
|
981
1133
|
.setCompuMethodRef(self.getChildElementOptionalRefType(element, "COMPU-METHOD-REF")) \
|
|
982
1134
|
.setSwMaxAxisPoints(self.getChildElementOptionalNumericalValue(element, "SW-MAX-AXIS-POINTS")) \
|
|
@@ -993,10 +1145,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
993
1145
|
axis = SwCalprmAxis()
|
|
994
1146
|
axis.sw_axis_index = self.getChildElementOptionalNumericalValue(element, "SW-AXIS-INDEX")
|
|
995
1147
|
axis.category = self.getChildElementOptionalLiteral(element, "CATEGORY")
|
|
996
|
-
child_element =
|
|
1148
|
+
child_element = self.find(element, "SW-AXIS-INDIVIDUAL")
|
|
997
1149
|
if child_element is not None:
|
|
998
1150
|
axis.sw_calprm_axis_type_props = self.getSwAxisIndividual(child_element)
|
|
999
|
-
child_element =
|
|
1151
|
+
child_element = self.find(element, "SW-AXIS-GROUPED")
|
|
1000
1152
|
if child_element is not None:
|
|
1001
1153
|
axis.sw_calprm_axis_type_props = self.getSwAxisGrouped(child_element)
|
|
1002
1154
|
|
|
@@ -1004,7 +1156,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1004
1156
|
|
|
1005
1157
|
def getSwCalprmAxisSet(self, element: ET.Element, key: str) -> SwCalprmAxisSet:
|
|
1006
1158
|
set = SwCalprmAxisSet()
|
|
1007
|
-
for child_element in
|
|
1159
|
+
for child_element in self.findall(element, "%s/*" % key):
|
|
1008
1160
|
tag_name = self.getTagName(child_element.tag)
|
|
1009
1161
|
if tag_name == "SW-CALPRM-AXIS":
|
|
1010
1162
|
set.addSwCalprmAxis(self.getSwCalprmAxis(child_element))
|
|
@@ -1016,13 +1168,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1016
1168
|
props.setInvalidValue(self.getValueSpecification(child_element))
|
|
1017
1169
|
|
|
1018
1170
|
def getSwDataDefProps(self, element: ET.Element, key: str) -> SwDataDefProps:
|
|
1019
|
-
child_element =
|
|
1171
|
+
child_element = self.find(element, key)
|
|
1020
1172
|
sw_data_def_props = None
|
|
1021
1173
|
if child_element is not None:
|
|
1022
|
-
conditional_tag =
|
|
1174
|
+
conditional_tag = self.find(child_element, "SW-DATA-DEF-PROPS-VARIANTS/SW-DATA-DEF-PROPS-CONDITIONAL")
|
|
1023
1175
|
if conditional_tag is not None:
|
|
1024
1176
|
sw_data_def_props = SwDataDefProps()
|
|
1025
|
-
self.
|
|
1177
|
+
self.readARObjectAttributes(child_element, sw_data_def_props)
|
|
1026
1178
|
|
|
1027
1179
|
for annotation in self.getAnnotations(conditional_tag):
|
|
1028
1180
|
sw_data_def_props.addAnnotation(annotation)
|
|
@@ -1030,7 +1182,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1030
1182
|
sw_data_def_props.setBaseTypeRef(self.getChildElementOptionalRefType(conditional_tag, "BASE-TYPE-REF")) \
|
|
1031
1183
|
.setDataConstrRef(self.getChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF")) \
|
|
1032
1184
|
.setCompuMethodRef(self.getChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF")) \
|
|
1185
|
+
.setSwAddrMethodRef(self.getChildElementOptionalRefType(conditional_tag, "SW-ADDR-METHOD-REF")) \
|
|
1033
1186
|
.setSwImplPolicy(self.getChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY")) \
|
|
1187
|
+
.setSwIntendedResolution(self.getChildElementOptionalNumericalValue(conditional_tag, "SW-INTENDED-RESOLUTION")) \
|
|
1034
1188
|
.setImplementationDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF")) \
|
|
1035
1189
|
.setSwCalibrationAccess(self.getChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS")) \
|
|
1036
1190
|
.setSwCalprmAxisSet(self.getSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET")) \
|
|
@@ -1039,7 +1193,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1039
1193
|
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1040
1194
|
self.readSwDataDefProsInvalidValue(conditional_tag, sw_data_def_props)
|
|
1041
1195
|
self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
1042
|
-
self.
|
|
1196
|
+
self.readARObjectAttributes(conditional_tag, sw_data_def_props.conditional)
|
|
1043
1197
|
return sw_data_def_props
|
|
1044
1198
|
|
|
1045
1199
|
def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
@@ -1056,7 +1210,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1056
1210
|
prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
|
|
1057
1211
|
|
|
1058
1212
|
def readApplicationRecordElements(self, element: ET.Element, parent: ApplicationRecordDataType):
|
|
1059
|
-
for child_element in
|
|
1213
|
+
for child_element in self.findall(element, "ELEMENTS/APPLICATION-RECORD-ELEMENT"):
|
|
1060
1214
|
short_name = self.getShortName(child_element)
|
|
1061
1215
|
record_element = parent.createApplicationRecordElement(short_name)
|
|
1062
1216
|
self.logger.debug("readApplicationRecordElements %s" % short_name)
|
|
@@ -1073,10 +1227,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1073
1227
|
|
|
1074
1228
|
def readImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
|
|
1075
1229
|
for child_element in self.findall(element, "SUB-ELEMENTS/IMPLEMENTATION-DATA-TYPE-ELEMENT"):
|
|
1076
|
-
|
|
1077
|
-
type_element = parent.createImplementationDataTypeElement(short_name)
|
|
1230
|
+
type_element = parent.createImplementationDataTypeElement(self.getShortName(child_element))
|
|
1078
1231
|
self.readIdentifiable(child_element, type_element)
|
|
1079
1232
|
type_element.setArraySize(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE")) \
|
|
1233
|
+
.setArraySizeHandling(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING")) \
|
|
1080
1234
|
.setArraySizeSemantics(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS"))
|
|
1081
1235
|
self.readImplementationDataTypeElements(child_element, type_element)
|
|
1082
1236
|
type_element.setSwDataDefProps(self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS"))
|
|
@@ -1085,6 +1239,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1085
1239
|
short_name = self.getShortName(element)
|
|
1086
1240
|
data_type = parent.createImplementationDataType(short_name)
|
|
1087
1241
|
self.readAutosarDataType(element, data_type)
|
|
1242
|
+
data_type.setDynamicArraySizeProfile(self.getChildElementOptionalLiteral(element, "DYNAMIC-ARRAY-SIZE-PROFILE"))
|
|
1088
1243
|
self.readImplementationDataTypeElements(element, data_type)
|
|
1089
1244
|
data_type.setTypeEmitter(self.getChildElementOptionalLiteral(element, "TYPE-EMITTER"))
|
|
1090
1245
|
|
|
@@ -1129,7 +1284,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1129
1284
|
self.readBaseTypeDirectDefinition(element, data_type.baseTypeDefinition)
|
|
1130
1285
|
|
|
1131
1286
|
def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key:str) -> ApplicationCompositeElementInPortInterfaceInstanceRef:
|
|
1132
|
-
child_element =
|
|
1287
|
+
child_element = self.find(element, key)
|
|
1133
1288
|
iref = None
|
|
1134
1289
|
if child_element is not None:
|
|
1135
1290
|
iref = ApplicationCompositeElementInPortInterfaceInstanceRef()
|
|
@@ -1140,25 +1295,26 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1140
1295
|
def getCompositeNetworkRepresentation(self, element: ET.Element) -> CompositeNetworkRepresentation:
|
|
1141
1296
|
self.logger.debug("getCompositeNetworkRepresentation")
|
|
1142
1297
|
representation = CompositeNetworkRepresentation()
|
|
1143
|
-
representation.
|
|
1144
|
-
|
|
1298
|
+
representation.setLeafElementIRef(self.getApplicationCompositeElementInPortInterfaceInstanceRef(element, "LEAF-ELEMENT-IREF")) \
|
|
1299
|
+
.setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION"))
|
|
1145
1300
|
return representation
|
|
1146
1301
|
|
|
1147
1302
|
def readReceiverComSpec(self, element: ET.Element, com_spec: ReceiverComSpec):
|
|
1148
|
-
self.
|
|
1303
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1149
1304
|
for child_element in self.findall(element, "COMPOSITE-NETWORK-REPRESENTATIONS/COMPOSITE-NETWORK-REPRESENTATION"):
|
|
1150
1305
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
1151
|
-
com_spec.
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1306
|
+
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF")) \
|
|
1307
|
+
.setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION")) \
|
|
1308
|
+
.setHandleOutOfRange(self.getChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE")) \
|
|
1309
|
+
.setHandleOutOfRangeStatus(self.getChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE-STATUS")) \
|
|
1310
|
+
.setUsesEndToEndProtection(self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION"))
|
|
1155
1311
|
|
|
1156
1312
|
def getSwValues(self, element: ET.Element, key: str) -> SwValues:
|
|
1157
1313
|
child_element = element.find("./xmlns:%s" % key, self.nsmap) # type: ET.Element
|
|
1158
1314
|
if child_element is None:
|
|
1159
1315
|
return None
|
|
1160
1316
|
sw_values = SwValues()
|
|
1161
|
-
self.
|
|
1317
|
+
self.readARObjectAttributes(child_element, sw_values)
|
|
1162
1318
|
for v in self.getChildElementFloatValueList(child_element, "V"):
|
|
1163
1319
|
sw_values.addV(v)
|
|
1164
1320
|
sw_values.vt = self.getChildElementOptionalLiteral(child_element, "VT")
|
|
@@ -1170,7 +1326,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1170
1326
|
if child_element is not None:
|
|
1171
1327
|
self.logger.debug("getValueList %s" % key)
|
|
1172
1328
|
value_list = ValueList()
|
|
1173
|
-
self.
|
|
1329
|
+
self.readARObjectAttributes(child_element, value_list)
|
|
1174
1330
|
value_list.v = self.getChildElementOptionalFloatValue(child_element, "V")
|
|
1175
1331
|
return value_list
|
|
1176
1332
|
|
|
@@ -1180,7 +1336,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1180
1336
|
if child_element is not None:
|
|
1181
1337
|
self.logger.debug("getSwValueCont")
|
|
1182
1338
|
cont = SwValueCont()
|
|
1183
|
-
self.
|
|
1339
|
+
self.readARObjectAttributes(child_element, cont)
|
|
1184
1340
|
cont.unit_ref = self.getChildElementOptionalRefType(child_element, "UNIT-REF")
|
|
1185
1341
|
cont.sw_arraysize = self.getValueList(child_element, "SW-ARRAYSIZE")
|
|
1186
1342
|
cont.sw_values_phys = self.getSwValues(child_element, "SW-VALUES-PHYS")
|
|
@@ -1203,43 +1359,43 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1203
1359
|
|
|
1204
1360
|
def getClientComSpec(self, element: ET.Element) -> ClientComSpec:
|
|
1205
1361
|
com_spec = ClientComSpec()
|
|
1206
|
-
self.
|
|
1362
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1207
1363
|
com_spec.operationRef = self.getChildElementOptionalRefType(element, "OPERATION-REF")
|
|
1208
1364
|
return com_spec
|
|
1209
1365
|
|
|
1210
1366
|
def getParameterRequireComSpec(self, element: ET.Element) -> ParameterRequireComSpec:
|
|
1211
1367
|
com_spec = ParameterRequireComSpec()
|
|
1212
|
-
self.
|
|
1368
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1213
1369
|
com_spec.setInitValue(self.getInitValue(element)) \
|
|
1214
1370
|
.setParameterRef(self.getChildElementOptionalRefType(element, "PARAMETER-REF"))
|
|
1215
1371
|
return com_spec
|
|
1216
1372
|
|
|
1217
1373
|
def getQueuedReceiverComSpec(self, element: ET.Element) -> QueuedReceiverComSpec:
|
|
1218
1374
|
com_spec = QueuedReceiverComSpec()
|
|
1219
|
-
self.
|
|
1375
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1220
1376
|
self.readReceiverComSpec(element, com_spec)
|
|
1221
1377
|
com_spec.queueLength = self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH")
|
|
1222
1378
|
return com_spec
|
|
1223
1379
|
|
|
1224
1380
|
def getModeSwitchReceiverComSpec(self, element: ET.Element) -> ModeSwitchReceiverComSpec:
|
|
1225
1381
|
com_spec = ModeSwitchReceiverComSpec()
|
|
1226
|
-
self.
|
|
1382
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1227
1383
|
com_spec.modeGroupRef = self.getChildElementOptionalRefType(element, "MODE-GROUP-REF")
|
|
1228
1384
|
return com_spec
|
|
1229
1385
|
|
|
1230
1386
|
def getNonqueuedReceiverComSpec(self, element: ET.Element) -> NonqueuedReceiverComSpec:
|
|
1231
1387
|
com_spec = NonqueuedReceiverComSpec()
|
|
1232
|
-
self.
|
|
1388
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1233
1389
|
self.readReceiverComSpec(element, com_spec)
|
|
1234
|
-
com_spec.
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1390
|
+
com_spec.setAliveTimeout(self.getChildElementOptionalFloatValue(element, "ALIVE-TIMEOUT")) \
|
|
1391
|
+
.setEnableUpdated(self.getChildElementOptionalBooleanValue(element, "ENABLE-UPDATE")) \
|
|
1392
|
+
.setHandleNeverReceived(self.getChildElementOptionalBooleanValue(element, "HANDLE-NEVER-RECEIVED")) \
|
|
1393
|
+
.setHandleTimeoutType(self.getChildElementOptionalLiteral(element, "HANDLE-TIMEOUT-TYPE")) \
|
|
1394
|
+
.setInitValue(self.getInitValue(element))
|
|
1239
1395
|
return com_spec
|
|
1240
1396
|
|
|
1241
1397
|
def readRequiredComSpec(self, element: ET.Element, parent: RPortPrototype):
|
|
1242
|
-
for child_element in
|
|
1398
|
+
for child_element in self.findall(element, "REQUIRED-COM-SPECS/*"):
|
|
1243
1399
|
tag_name = self.getTagName(child_element.tag)
|
|
1244
1400
|
if tag_name == "NONQUEUED-RECEIVER-COM-SPEC":
|
|
1245
1401
|
parent.addRequiredComSpec(self.getNonqueuedReceiverComSpec(child_element))
|
|
@@ -1254,14 +1410,36 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1254
1410
|
else:
|
|
1255
1411
|
self._raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
|
|
1256
1412
|
|
|
1413
|
+
def readAbstractRequiredPortPrototype(self, element: ET.Element, prototype: AbstractRequiredPortPrototype):
|
|
1414
|
+
self.readProvidedComSpec(element, prototype)
|
|
1415
|
+
|
|
1416
|
+
def readPPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
1417
|
+
short_name = self.getShortName(element)
|
|
1418
|
+
self.logger.debug("readPPortPrototype %s" % short_name)
|
|
1419
|
+
prototype = parent.createPPortPrototype(short_name)
|
|
1420
|
+
self.readIdentifiable(element, prototype)
|
|
1421
|
+
self.readAbstractRequiredPortPrototype(element, prototype)
|
|
1422
|
+
prototype.setProvidedInterfaceTRef(self.getChildElementOptionalRefType(element, "PROVIDED-INTERFACE-TREF"))
|
|
1423
|
+
|
|
1424
|
+
def readAbstractProvidedPortPrototype(self, element: ET.Element, prototype: AbstractProvidedPortPrototype):
|
|
1425
|
+
self.readRequiredComSpec(element, prototype)
|
|
1426
|
+
|
|
1257
1427
|
def readRPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
1258
1428
|
short_name = self.getShortName(element)
|
|
1259
|
-
self.logger.debug("
|
|
1429
|
+
self.logger.debug("read RPortPrototype %s" % short_name)
|
|
1260
1430
|
prototype = parent.createRPortPrototype(short_name)
|
|
1261
1431
|
self.readIdentifiable(element, prototype)
|
|
1432
|
+
self.readAbstractProvidedPortPrototype(element, prototype)
|
|
1262
1433
|
prototype.setRequiredInterfaceTRef(self.getChildElementOptionalRefType(element, "REQUIRED-INTERFACE-TREF"))
|
|
1263
1434
|
|
|
1264
|
-
|
|
1435
|
+
def readPRPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
1436
|
+
short_name = self.getShortName(element)
|
|
1437
|
+
self.logger.debug("read PRPortPrototype %s" % short_name)
|
|
1438
|
+
prototype = parent.createPRPortPrototype(short_name)
|
|
1439
|
+
self.readIdentifiable(element, prototype)
|
|
1440
|
+
self.readAbstractRequiredPortPrototype(element, prototype)
|
|
1441
|
+
self.readAbstractProvidedPortPrototype(element, prototype)
|
|
1442
|
+
prototype.setProvidedRequiredInterface(self.getChildElementOptionalRefType(element, "PROVIDED-REQUIRED-INTERFACE-TREF"))
|
|
1265
1443
|
|
|
1266
1444
|
def readAtomicSwComponentTypePorts(self, element: ET.Element, sw_component: AtomicSwComponentType):
|
|
1267
1445
|
for child_element in self.findall(element, "PORTS/*"):
|
|
@@ -1270,6 +1448,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1270
1448
|
self.readPPortPrototype(child_element, sw_component)
|
|
1271
1449
|
elif tag_name == "R-PORT-PROTOTYPE":
|
|
1272
1450
|
self.readRPortPrototype(child_element, sw_component)
|
|
1451
|
+
elif tag_name == "PR-PORT-PROTOTYPE":
|
|
1452
|
+
self.readPRPortPrototype(child_element, sw_component)
|
|
1273
1453
|
else:
|
|
1274
1454
|
self._raiseError("Unsupported Port Prototype <%s>" % tag_name)
|
|
1275
1455
|
|
|
@@ -1277,13 +1457,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1277
1457
|
child_element = element.find("./xmlns:TRANSMISSION-ACKNOWLEDGE", self.nsmap)
|
|
1278
1458
|
if (child_element is not None):
|
|
1279
1459
|
acknowledge = TransmissionAcknowledgementRequest()
|
|
1280
|
-
self.
|
|
1460
|
+
self.readARObjectAttributes(child_element, acknowledge)
|
|
1281
1461
|
acknowledge.timeout = self.getChildElementOptionalFloatValue(child_element, "TIMEOUT")
|
|
1282
1462
|
return acknowledge
|
|
1283
1463
|
return None
|
|
1284
1464
|
|
|
1285
1465
|
def readSenderComSpec(self, element:ET.Element, com_spec: SenderComSpec):
|
|
1286
|
-
self.
|
|
1466
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1287
1467
|
for child_element in element.findall("./xmlns:COMPOSITE-NETWORK-REPRESENTATIONS/xmlns:COMPOSITE-NETWORK-REPRESENTATION", self.nsmap):
|
|
1288
1468
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
1289
1469
|
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF")) \
|
|
@@ -1300,6 +1480,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1300
1480
|
|
|
1301
1481
|
def getServerComSpec(self, element) -> ServerComSpec:
|
|
1302
1482
|
com_spec = ServerComSpec()
|
|
1483
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1303
1484
|
com_spec.setOperationRef(self.getChildElementOptionalRefType(element, "OPERATION-REF")) \
|
|
1304
1485
|
.setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
|
|
1305
1486
|
return com_spec
|
|
@@ -1329,15 +1510,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1329
1510
|
else:
|
|
1330
1511
|
self._raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
|
|
1331
1512
|
|
|
1332
|
-
def readPPortPrototype(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
1333
|
-
short_name = self.getShortName(element)
|
|
1334
|
-
self.logger.debug("readPPortPrototype %s" % short_name)
|
|
1335
|
-
prototype = parent.createPPortPrototype(short_name)
|
|
1336
|
-
self.readIdentifiable(element, prototype)
|
|
1337
|
-
prototype.setProvidedInterfaceTRef(self.getChildElementOptionalRefType(element, "PROVIDED-INTERFACE-TREF"))
|
|
1338
|
-
|
|
1339
|
-
self.readProvidedComSpec(element, prototype)
|
|
1340
|
-
|
|
1341
1513
|
def readPortGroupInnerGroupIRefs(self, element: ET.Element, parent: PortGroup):
|
|
1342
1514
|
for child_element in self.findall(element, "INNER-GROUP-IREFS/INNER-GROUP-IREF"):
|
|
1343
1515
|
inner_group_iref = InnerPortGroupInCompositionInstanceRef()
|
|
@@ -1426,7 +1598,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1426
1598
|
child_element = self.find(element, "PROVIDER-IREF")
|
|
1427
1599
|
if (child_element is not None):
|
|
1428
1600
|
provide_iref = PPortInCompositionInstanceRef()
|
|
1429
|
-
self.
|
|
1601
|
+
self.readARObjectAttributes(child_element, provide_iref)
|
|
1430
1602
|
self.readPPortInCompositionInstanceRef(child_element, provide_iref)
|
|
1431
1603
|
parent.setProviderIRef(provide_iref)
|
|
1432
1604
|
|
|
@@ -1434,7 +1606,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1434
1606
|
child_element = self.find(element, "REQUESTER-IREF")
|
|
1435
1607
|
if (child_element is not None):
|
|
1436
1608
|
requester_iref = RPortInCompositionInstanceRef()
|
|
1437
|
-
self.
|
|
1609
|
+
self.readARObjectAttributes(child_element, requester_iref)
|
|
1438
1610
|
self.readRPortInCompositionInstanceRef(child_element, requester_iref)
|
|
1439
1611
|
parent.setRequesterIRef(requester_iref)
|
|
1440
1612
|
|
|
@@ -1515,9 +1687,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1515
1687
|
def readDataTypeMaps(self, element: ET.Element, parent: DataTypeMappingSet):
|
|
1516
1688
|
for child_element in element.findall("./xmlns:DATA-TYPE-MAPS/xmlns:DATA-TYPE-MAP", self.nsmap):
|
|
1517
1689
|
data_type_map = DataTypeMap()
|
|
1518
|
-
self.
|
|
1519
|
-
data_type_map.
|
|
1520
|
-
data_type_map.
|
|
1690
|
+
self.readARObjectAttributes(child_element, data_type_map)
|
|
1691
|
+
data_type_map.applicationDataTypeRef = self.getChildElementOptionalRefType(child_element, "APPLICATION-DATA-TYPE-REF")
|
|
1692
|
+
data_type_map.implementationDataTypeRef = self.getChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF")
|
|
1521
1693
|
parent.addDataTypeMap(data_type_map)
|
|
1522
1694
|
# add the data type map to global namespace
|
|
1523
1695
|
AUTOSAR.getInstance().addDataTypeMap(data_type_map)
|
|
@@ -1525,9 +1697,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1525
1697
|
def readModeRequestTypeMaps(self, element: ET.Element, parent: DataTypeMappingSet):
|
|
1526
1698
|
for child_element in element.findall("./xmlns:MODE-REQUEST-TYPE-MAPS/xmlns:MODE-REQUEST-TYPE-MAP", self.nsmap):
|
|
1527
1699
|
map = ModeRequestTypeMap()
|
|
1528
|
-
self.
|
|
1529
|
-
map.
|
|
1530
|
-
map.
|
|
1700
|
+
self.readARObjectAttributes(child_element, map)
|
|
1701
|
+
map.implementationDataTypeRef = self.getChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF")
|
|
1702
|
+
map.modeGroupRef = self.getChildElementOptionalRefType(child_element, "MODE-GROUP-REF")
|
|
1531
1703
|
parent.addModeRequestTypeMap(map)
|
|
1532
1704
|
|
|
1533
1705
|
def readDataTypeMappingSet(self, element: ET.Element, parent: ARPackage):
|
|
@@ -1538,7 +1710,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1538
1710
|
self.readModeRequestTypeMaps(element, mapping_set)
|
|
1539
1711
|
|
|
1540
1712
|
def readSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1541
|
-
for child_element in
|
|
1713
|
+
for child_element in self.findall(element, "DATA-ELEMENTS/VARIABLE-DATA-PROTOTYPE"):
|
|
1542
1714
|
short_name = self.getShortName(child_element)
|
|
1543
1715
|
prototype = sr_interface.createDataElement(short_name)
|
|
1544
1716
|
self.readIdentifiable(child_element, prototype)
|
|
@@ -1554,7 +1726,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1554
1726
|
sr_interface.addInvalidationPolicy(policy)
|
|
1555
1727
|
|
|
1556
1728
|
def readInvalidationPolicys(self, element: ET.Element, parent: SenderReceiverInterface):
|
|
1557
|
-
for child_element in
|
|
1729
|
+
for child_element in self.findall(element, "INVALIDATION-POLICYS/INVALIDATION-POLICY"):
|
|
1558
1730
|
# short_name = self.getShortName(child_element)
|
|
1559
1731
|
policy = parent.createInvalidationPolicy()
|
|
1560
1732
|
self.readIdentifiable(child_element, policy)
|
|
@@ -1570,7 +1742,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1570
1742
|
self.readSenderReceiverInterfaceInvalidationPolicies(element, sr_interface)
|
|
1571
1743
|
|
|
1572
1744
|
def readArgumentDataPrototypes(self, element: ET.Element, parent: ClientServerOperation):
|
|
1573
|
-
for child_element in
|
|
1745
|
+
for child_element in self.findall(element, "ARGUMENTS/ARGUMENT-DATA-PROTOTYPE"):
|
|
1574
1746
|
short_name = self.getShortName(child_element)
|
|
1575
1747
|
prototype = ArgumentDataPrototype(property, short_name)
|
|
1576
1748
|
self.readIdentifiable(child_element, prototype)
|
|
@@ -1581,13 +1753,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1581
1753
|
parent.addArgumentDataPrototype(prototype)
|
|
1582
1754
|
|
|
1583
1755
|
def readPossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
|
|
1584
|
-
child_element =
|
|
1756
|
+
child_element = self.find(element, "POSSIBLE-ERROR-REFS")
|
|
1585
1757
|
if child_element is not None:
|
|
1586
|
-
for ref in self.getChildElementRefTypeList(child_element, "
|
|
1758
|
+
for ref in self.getChildElementRefTypeList(child_element, "POSSIBLE-ERROR-REF"):
|
|
1587
1759
|
parent.addPossibleErrorRef(ref)
|
|
1588
1760
|
|
|
1589
1761
|
def readOperations(self, element: ET.Element, parent: ClientServerInterface):
|
|
1590
|
-
for child_element in
|
|
1762
|
+
for child_element in self.findall(element, "OPERATIONS/CLIENT-SERVER-OPERATION"):
|
|
1591
1763
|
short_name = self.getShortName(child_element)
|
|
1592
1764
|
operation = parent.createOperation(short_name)
|
|
1593
1765
|
self.readIdentifiable(child_element, operation)
|
|
@@ -1595,82 +1767,109 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1595
1767
|
self.readPossibleErrorRefs(child_element, operation)
|
|
1596
1768
|
|
|
1597
1769
|
def readPossibleErrors(self, element: ET.Element, parent: ClientServerInterface):
|
|
1598
|
-
for child_element in
|
|
1770
|
+
for child_element in self.findall(element, "POSSIBLE-ERRORS/APPLICATION-ERROR"):
|
|
1599
1771
|
short_name = self.getShortName(child_element)
|
|
1600
1772
|
error = parent.createApplicationError(short_name)
|
|
1601
1773
|
self.readIdentifiable(child_element, error) # some errors has its uuid
|
|
1602
1774
|
error.error_code = self.getChildElementOptionalNumericalValue(child_element, "ERROR-CODE")
|
|
1603
1775
|
|
|
1604
1776
|
def readPortInterface(self, element: ET.Element, port_interface: PortInterface):
|
|
1777
|
+
self.readIdentifiable(element, port_interface)
|
|
1605
1778
|
port_interface.isService = self.getChildElementOptionalBooleanValue(element, "IS-SERVICE")
|
|
1606
1779
|
port_interface.serviceKind = self.getChildElementOptionalLiteral(element, "SERVICE-KIND")
|
|
1607
1780
|
|
|
1781
|
+
def readParameterInterfaceParameters(self, element: ET.Element, param_interface: ParameterInterface):
|
|
1782
|
+
for child_element in self.findall(element, "PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
1783
|
+
short_name = self.getShortName(child_element)
|
|
1784
|
+
prototype = param_interface.createParameter(short_name)
|
|
1785
|
+
self.readParameterDataPrototype(child_element, prototype)
|
|
1786
|
+
|
|
1787
|
+
def readParameterInterface(self, element: ET.Element, parent: ARPackage):
|
|
1788
|
+
short_name = self.getShortName(element)
|
|
1789
|
+
self.logger.debug("Read ParameterInterface %s" % short_name)
|
|
1790
|
+
param_interface = parent.createParameterInterface(short_name)
|
|
1791
|
+
self.readPortInterface(element, param_interface)
|
|
1792
|
+
self.readParameterInterfaceParameters(element, param_interface)
|
|
1793
|
+
|
|
1608
1794
|
def readClientServerInterface(self, element: ET.Element, parent: ARPackage):
|
|
1609
1795
|
short_name = self.getShortName(element)
|
|
1610
1796
|
cs_interface = parent.createClientServerInterface(short_name)
|
|
1611
|
-
self.readIdentifiable(element, cs_interface)
|
|
1612
1797
|
self.readPortInterface(element, cs_interface)
|
|
1613
1798
|
self.readOperations(element, cs_interface)
|
|
1614
1799
|
self.readPossibleErrors(element, cs_interface)
|
|
1615
1800
|
|
|
1616
1801
|
def readCompuConst(self, element: ET.Element, parent: CompuScale):
|
|
1617
|
-
child_element =
|
|
1802
|
+
child_element = self.find(element, "COMPU-CONST/VT")
|
|
1618
1803
|
if (child_element is not None):
|
|
1619
1804
|
self.logger.debug("readCompuConst VT: %s" % child_element.text)
|
|
1620
1805
|
contents = CompuScaleConstantContents()
|
|
1621
|
-
contents.
|
|
1622
|
-
contents.
|
|
1623
|
-
contents.
|
|
1624
|
-
contents.
|
|
1806
|
+
contents.compuConst = CompuConst()
|
|
1807
|
+
contents.compuConst.compuConstContentType = CompuConstTextContent()
|
|
1808
|
+
contents.compuConst.compuConstContentType.vt = ARLiteral()
|
|
1809
|
+
contents.compuConst.compuConstContentType.vt.setValue(child_element.text)
|
|
1625
1810
|
parent.compuScaleContents = contents
|
|
1626
1811
|
|
|
1627
1812
|
def readCompuNominatorDenominator(self, element: ET.Element, key: str, parent: CompuNominatorDenominator):
|
|
1628
|
-
for child_element in
|
|
1813
|
+
for child_element in self.findall(element, "%s/V" % key):
|
|
1629
1814
|
self.logger.debug("readCompuNominatorDenominator - %s: %s" % (key, child_element.text))
|
|
1630
1815
|
parent.add_v(child_element.text)
|
|
1631
1816
|
|
|
1632
1817
|
def readCompuRationCoeffs(self, element: ET.Element, parent: CompuScale):
|
|
1633
|
-
child_element =
|
|
1818
|
+
child_element = self.find(element, "COMPU-RATIONAL-COEFFS")
|
|
1634
1819
|
if (child_element is not None):
|
|
1635
1820
|
self.logger.debug("readCompuRationCoeffs")
|
|
1636
1821
|
contents = CompuScaleRationalFormula()
|
|
1637
|
-
contents.
|
|
1638
|
-
contents.
|
|
1639
|
-
contents.
|
|
1640
|
-
self.readCompuNominatorDenominator(child_element, "COMPU-DENOMINATOR", contents.
|
|
1641
|
-
self.readCompuNominatorDenominator(child_element, "COMPU-NUMERATOR", contents.
|
|
1822
|
+
contents.compuRationalCoeffs = CompuRationalCoeffs()
|
|
1823
|
+
contents.compuRationalCoeffs.compuDenominator = CompuNominatorDenominator()
|
|
1824
|
+
contents.compuRationalCoeffs.compuNumerator = CompuNominatorDenominator()
|
|
1825
|
+
self.readCompuNominatorDenominator(child_element, "COMPU-DENOMINATOR", contents.compuRationalCoeffs.compuDenominator)
|
|
1826
|
+
self.readCompuNominatorDenominator(child_element, "COMPU-NUMERATOR", contents.compuRationalCoeffs.compuNumerator)
|
|
1642
1827
|
parent.compuScaleContents = contents
|
|
1643
1828
|
|
|
1644
1829
|
def readCompuScaleContents(self, element: ET.Element, parent: CompuScale):
|
|
1645
1830
|
self.readCompuConst(element, parent)
|
|
1646
1831
|
self.readCompuRationCoeffs(element, parent)
|
|
1647
1832
|
|
|
1648
|
-
def
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1833
|
+
def getCompuScales(self, element: ET.Element) -> CompuScales:
|
|
1834
|
+
compu_scales = None
|
|
1835
|
+
compu_scales_tag = self.find(element, "COMPU-SCALES")
|
|
1836
|
+
if compu_scales_tag is not None:
|
|
1837
|
+
compu_scales = CompuScales()
|
|
1838
|
+
for child_element in self.findall(compu_scales_tag, 'COMPU-SCALE'):
|
|
1839
|
+
compu_scale = CompuScale()
|
|
1840
|
+
self.readARObjectAttributes(child_element, compu_scale)
|
|
1841
|
+
compu_scale.setLowerLimit(self.getChildLimitElement(child_element, "LOWER-LIMIT")) \
|
|
1842
|
+
.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
1843
|
+
.setSymbol(self.getChildElementOptionalLiteral(child_element, "SYMBOL")) \
|
|
1844
|
+
.setUpperLimit(self.getChildLimitElement(child_element, "UPPER-LIMIT"))
|
|
1845
|
+
self.readCompuScaleContents(child_element, compu_scale)
|
|
1846
|
+
compu_scales.addCompuScale(compu_scale)
|
|
1847
|
+
return compu_scales
|
|
1848
|
+
|
|
1849
|
+
def readCompuInternalToPhys(self, element: ET.Element, compu_method: CompuMethod):
|
|
1850
|
+
child_element = self.find(element, "COMPU-INTERNAL-TO-PHYS")
|
|
1851
|
+
if (child_element is not None):
|
|
1852
|
+
compu = Compu()
|
|
1853
|
+
self.readARObjectAttributes(child_element, compu)
|
|
1854
|
+
compu.setCompuContent(self.getCompuScales(child_element))
|
|
1855
|
+
compu_method.setCompuInternalToPhys(compu)
|
|
1856
|
+
|
|
1857
|
+
def readCompuPhysToInternal(self, element: ET.Element, compu_method: CompuMethod):
|
|
1858
|
+
child_element = self.find(element, "COMPU-PHYS-TO-INTERNAL")
|
|
1661
1859
|
if (child_element is not None):
|
|
1662
|
-
|
|
1663
|
-
self.
|
|
1664
|
-
|
|
1665
|
-
|
|
1860
|
+
compu = Compu()
|
|
1861
|
+
self.readARObjectAttributes(child_element, compu)
|
|
1862
|
+
compu.setCompuContent(self.getCompuScales(child_element))
|
|
1863
|
+
compu_method.setCompuPhysToInternal(compu)
|
|
1666
1864
|
|
|
1667
1865
|
def readCompuMethod(self, element: ET.Element, parent: ARPackage):
|
|
1668
1866
|
short_name = self.getShortName(element)
|
|
1669
1867
|
self.logger.debug("readCompuMethods %s" % short_name)
|
|
1670
1868
|
compu_method = parent.createCompuMethod(short_name)
|
|
1671
1869
|
self.readIdentifiable(element, compu_method)
|
|
1672
|
-
compu_method.
|
|
1870
|
+
compu_method.setUnitRef(self.getChildElementOptionalRefType(element, "UNIT-REF"))
|
|
1673
1871
|
self.readCompuInternalToPhys(element, compu_method)
|
|
1872
|
+
self.readCompuPhysToInternal(element, compu_method)
|
|
1674
1873
|
|
|
1675
1874
|
def readSwcBswRunnableMappings(self, element: ET.Element, parent: SwcBswMapping):
|
|
1676
1875
|
for child_element in element.findall("./xmlns:RUNNABLE-MAPPINGS/xmlns:SWC-BSW-RUNNABLE-MAPPING", self.nsmap):
|
|
@@ -1688,30 +1887,33 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1688
1887
|
swc_bsw_mapping.swcBehaviorRef = self.getChildElementOptionalRefType(element, "SWC-BEHAVIOR-REF")
|
|
1689
1888
|
|
|
1690
1889
|
def readValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
|
|
1691
|
-
self.
|
|
1692
|
-
value_spec.
|
|
1890
|
+
self.readARObjectAttributes(element, value_spec)
|
|
1891
|
+
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
|
|
1693
1892
|
self.logger.debug("readValueSpecification")
|
|
1694
1893
|
|
|
1695
1894
|
def getApplicationValueSpecification(self, element: ET.Element) -> ApplicationValueSpecification:
|
|
1696
1895
|
self.logger.debug("getApplicationValueSpecification")
|
|
1697
1896
|
value_spec = ApplicationValueSpecification()
|
|
1698
1897
|
self.readValueSpecification(element, value_spec)
|
|
1699
|
-
value_spec.
|
|
1700
|
-
|
|
1898
|
+
value_spec.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
1899
|
+
.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
1900
|
+
.setSwValueCont(self.getSwValueCont(element))
|
|
1701
1901
|
return value_spec
|
|
1702
1902
|
|
|
1703
1903
|
def getNumericalValueSpecification(self, element: ET.Element) -> NumericalValueSpecification:
|
|
1704
1904
|
self.logger.debug("getNumericalValueSpecification")
|
|
1705
1905
|
value_spec = NumericalValueSpecification()
|
|
1706
1906
|
self.readValueSpecification(element, value_spec)
|
|
1707
|
-
value_spec.
|
|
1907
|
+
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
1908
|
+
.setValue(self.getChildElementOptionalFloatValue(element, "VALUE"))
|
|
1708
1909
|
return value_spec
|
|
1709
1910
|
|
|
1710
1911
|
def getTextValueSpecification(self, element: ET.Element) -> TextValueSpecification:
|
|
1711
1912
|
self.logger.debug("getTextValueSpecification")
|
|
1712
1913
|
value_spec = TextValueSpecification()
|
|
1713
1914
|
self.readValueSpecification(element, value_spec)
|
|
1714
|
-
value_spec.
|
|
1915
|
+
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
1916
|
+
.setValue(self.getChildElementOptionalLiteral(element, "VALUE"))
|
|
1715
1917
|
return value_spec
|
|
1716
1918
|
|
|
1717
1919
|
def getArrayValueSpecification(self, element: ET.Element) -> ArrayValueSpecification:
|
|
@@ -1745,7 +1947,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1745
1947
|
elif tag_name == "CONSTANT-REFERENCE":
|
|
1746
1948
|
value_spec = self.getConstantReference(element)
|
|
1747
1949
|
else:
|
|
1748
|
-
|
|
1950
|
+
self.notImplemented("Unsupported RecordValueSpecificationField %s" % tag_name)
|
|
1749
1951
|
return value_spec
|
|
1750
1952
|
|
|
1751
1953
|
def readRecordValueSpecificationFields(self, element: ET.Element, spec: RecordValueSpecification):
|
|
@@ -1770,7 +1972,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1770
1972
|
child_element = element.find("./xmlns:INTERNAL-CONSTRS", self.nsmap)
|
|
1771
1973
|
if child_element is not None:
|
|
1772
1974
|
constrs = InternalConstrs()
|
|
1773
|
-
self.
|
|
1975
|
+
self.readARObjectAttributes(child_element, constrs)
|
|
1774
1976
|
constrs.lower_limit = self.getChildLimitElement(child_element, "LOWER-LIMIT")
|
|
1775
1977
|
constrs.upper_limit = self.getChildLimitElement(child_element, "UPPER-LIMIT")
|
|
1776
1978
|
parent.internalConstrs = constrs
|
|
@@ -1779,7 +1981,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1779
1981
|
child_element = element.find("./xmlns:PHYS-CONSTRS", self.nsmap)
|
|
1780
1982
|
if child_element is not None:
|
|
1781
1983
|
constrs = PhysConstrs()
|
|
1782
|
-
self.
|
|
1984
|
+
self.readARObjectAttributes(child_element, constrs)
|
|
1783
1985
|
constrs.lower_limit = self.getChildLimitElement(child_element, "LOWER-LIMIT")
|
|
1784
1986
|
constrs.upper_limit = self.getChildLimitElement(child_element, "UPPER-LIMIT")
|
|
1785
1987
|
constrs.unit_ref = self.getChildElementOptionalRefType(child_element, "UNIT-REF")
|
|
@@ -1789,7 +1991,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1789
1991
|
for child_element in element.findall("./xmlns:DATA-CONSTR-RULES/xmlns:DATA-CONSTR-RULE", self.nsmap):
|
|
1790
1992
|
self.logger.debug("readDataConstrRule")
|
|
1791
1993
|
rule = DataConstrRule()
|
|
1792
|
-
self.
|
|
1994
|
+
self.readARObjectAttributes(child_element, rule)
|
|
1793
1995
|
rule.constrLevel = self.getChildElementOptionalNumericalValue(child_element, "CONSTR-LEVEL")
|
|
1794
1996
|
self.readInternalConstrs(child_element, rule)
|
|
1795
1997
|
self.readPhysConstrs(child_element, rule)
|
|
@@ -1905,6 +2107,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1905
2107
|
|
|
1906
2108
|
def readDataPrototype(self, element: ET.Element, prototype: DataPrototype):
|
|
1907
2109
|
self.readIdentifiable(element, prototype)
|
|
2110
|
+
prototype.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
1908
2111
|
|
|
1909
2112
|
def readApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
|
|
1910
2113
|
self.readDataPrototype(element, prototype)
|
|
@@ -1949,6 +2152,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1949
2152
|
.setSwRecordLayoutGroupAxis(self.getChildElementOptionalNumericalValue(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS")) \
|
|
1950
2153
|
.setSwRecordLayoutGroupIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX")) \
|
|
1951
2154
|
.setSwRecordLayoutGroupFrom(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM")) \
|
|
2155
|
+
.setSwRecordLayoutGroupStep(self.getChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP")) \
|
|
1952
2156
|
.setSwRecordLayoutGroupTo(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO")) \
|
|
1953
2157
|
|
|
1954
2158
|
group_content = SwRecordLayoutGroupContent()
|
|
@@ -1971,8 +2175,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1971
2175
|
|
|
1972
2176
|
def readSwAddrMethod(self, element: ET.Element, parent: ARPackage):
|
|
1973
2177
|
short_name = self.getShortName(element)
|
|
1974
|
-
self.logger.debug("
|
|
1975
|
-
|
|
2178
|
+
self.logger.debug("read SwAddrMethod %s" % short_name)
|
|
2179
|
+
method = parent.createSwAddrMethod(short_name)
|
|
2180
|
+
self.readIdentifiable(element, method)
|
|
2181
|
+
method.setMemoryAllocationKeywordPolicy(self.getChildElementOptionalLiteral(element, "MEMORY-ALLOCATION-KEYWORD-POLICY"))
|
|
2182
|
+
for option in self.getChildElementLiteralValueList(element, "OPTIONS/OPTION"):
|
|
2183
|
+
method.addOption(option)
|
|
2184
|
+
method.setSectionInitializationPolicy(self.getChildElementOptionalLiteral(element, "SECTION-INITIALIZATION-POLICY")) \
|
|
2185
|
+
.setSectionType(self.getChildElementOptionalLiteral(element, "SECTION-TYPE"))
|
|
1976
2186
|
|
|
1977
2187
|
def readTriggerInterface(self, element: ET.Element, parent: ARPackage):
|
|
1978
2188
|
short_name = self.getShortName(element)
|
|
@@ -1980,9 +2190,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1980
2190
|
trigger_if = parent.createTriggerInterface(short_name)
|
|
1981
2191
|
|
|
1982
2192
|
def readModeDeclarationGroupModeDeclaration(self, element: ET.Element, parent: ModeDeclarationGroup):
|
|
1983
|
-
for child_element in
|
|
2193
|
+
for child_element in self.findall(element, "MODE-DECLARATIONS/MODE-DECLARATION"):
|
|
1984
2194
|
short_name = self.getShortName(child_element)
|
|
1985
2195
|
declaration = parent.createModeDeclaration(short_name)
|
|
2196
|
+
self.readARObjectAttributes(child_element, declaration)
|
|
1986
2197
|
declaration.setValue(self.getChildElementOptionalNumericalValue(child_element, "VALUE"))
|
|
1987
2198
|
|
|
1988
2199
|
def readModeDeclarationGroup(self, element: ET.Element, parent: ARPackage):
|
|
@@ -2103,7 +2314,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2103
2314
|
triggering = channel.createLinFrameTriggering(self.getShortName(child_element))
|
|
2104
2315
|
self.readLinFrameTriggering(child_element, triggering)
|
|
2105
2316
|
else:
|
|
2106
|
-
|
|
2317
|
+
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2107
2318
|
|
|
2108
2319
|
for child_element in self.findall(element, "I-SIGNAL-TRIGGERINGS/*"):
|
|
2109
2320
|
tag_name = self.getTagName(child_element)
|
|
@@ -2111,7 +2322,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2111
2322
|
triggering = channel.createISignalTriggering(self.getShortName(child_element))
|
|
2112
2323
|
self.readISignalTriggering(child_element, triggering)
|
|
2113
2324
|
else:
|
|
2114
|
-
|
|
2325
|
+
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2115
2326
|
|
|
2116
2327
|
for child_element in self.findall(element, "PDU-TRIGGERINGS/*"):
|
|
2117
2328
|
tag_name = self.getTagName(child_element)
|
|
@@ -2119,7 +2330,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2119
2330
|
triggering = channel.createPduTriggering(self.getShortName(child_element))
|
|
2120
2331
|
self.readPduTriggering(child_element, triggering)
|
|
2121
2332
|
else:
|
|
2122
|
-
|
|
2333
|
+
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2123
2334
|
|
|
2124
2335
|
def readCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
|
|
2125
2336
|
self.readIdentifiable(element, channel)
|
|
@@ -2139,7 +2350,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2139
2350
|
channel = cluster.createLinPhysicalChannel(self.getShortName(child_element))
|
|
2140
2351
|
self.readLinPhysicalChannel(child_element, channel)
|
|
2141
2352
|
else:
|
|
2142
|
-
|
|
2353
|
+
self.notImplemented("Unsupported Physical Channel <%s>" % tag_name)
|
|
2143
2354
|
|
|
2144
2355
|
|
|
2145
2356
|
def readCommunicationCluster(self, element: ET.Element, cluster: CommunicationCluster):
|
|
@@ -2450,11 +2661,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2450
2661
|
self.logger.debug("ISignal %s" % short_name)
|
|
2451
2662
|
signal = parent.createISignal(short_name)
|
|
2452
2663
|
self.readIdentifiable(element, signal)
|
|
2453
|
-
signal.
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2664
|
+
signal.setDataTypePolicy(self.getChildElementOptionalLiteral(element, "DATA-TYPE-POLICY")) \
|
|
2665
|
+
.setInitValue(self.getInitValue(element)) \
|
|
2666
|
+
.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH")) \
|
|
2667
|
+
.setNetworkRepresentationProps(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION-PROPS")) \
|
|
2668
|
+
.setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
|
|
2458
2669
|
|
|
2459
2670
|
def readEcucValueCollectionEcucValues(self, element: ET.Element, parent: EcucValueCollection):
|
|
2460
2671
|
for child_element in self.findall(element, "ECUC-VALUES/ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL"):
|
|
@@ -2496,7 +2707,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2496
2707
|
elif tag_name == "ECUC-NUMERICAL-PARAM-VALUE":
|
|
2497
2708
|
container_value.addParameterValue(self.getEcucNumericalParamValue(child_element))
|
|
2498
2709
|
else:
|
|
2499
|
-
|
|
2710
|
+
self.notImplemented("Unsupported EcucParameterValue <%s>" % tag_name)
|
|
2500
2711
|
|
|
2501
2712
|
def readEcucAbstractReferenceValue(self, element: ET.Element, value: EcucAbstractReferenceValue):
|
|
2502
2713
|
value.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
|
|
@@ -2533,7 +2744,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2533
2744
|
elif tag_name == "ECUC-INSTANCE-REFERENCE-VALUE":
|
|
2534
2745
|
container_value.addReferenceValue(self.getEcucInstanceReferenceValue(child_element))
|
|
2535
2746
|
else:
|
|
2536
|
-
|
|
2747
|
+
self.notImplemented("Unsupported EcucParameterValue <%s>" % tag_name)
|
|
2537
2748
|
|
|
2538
2749
|
def readEcucContainerValue(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2539
2750
|
self.readIdentifiable(element, container_value)
|
|
@@ -2554,7 +2765,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2554
2765
|
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
2555
2766
|
self.readEcucContainerValueEcucContainerValue(child_element, parent)
|
|
2556
2767
|
else:
|
|
2557
|
-
|
|
2768
|
+
self.notImplemented("Unsupported Sub Container %s" % tag_name)
|
|
2558
2769
|
|
|
2559
2770
|
def readEcucModuleConfigurationValuesEcucContainerValue(self, element: ET.Element, parent: EcucModuleConfigurationValues):
|
|
2560
2771
|
short_name = self.getShortName(element)
|
|
@@ -2568,7 +2779,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2568
2779
|
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
2569
2780
|
self.readEcucModuleConfigurationValuesEcucContainerValue(child_element, values)
|
|
2570
2781
|
else:
|
|
2571
|
-
|
|
2782
|
+
self.notImplemented("Unsupported Container %s" % tag_name)
|
|
2572
2783
|
|
|
2573
2784
|
def readEcucModuleConfigurationValues(self, element: ET.Element, parent: ARPackage):
|
|
2574
2785
|
short_name = self.getShortName(element)
|
|
@@ -2582,11 +2793,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2582
2793
|
|
|
2583
2794
|
def readPhysicalDimensions(self, element: ET.Element, parent: ARPackage):
|
|
2584
2795
|
short_name = self.getShortName(element)
|
|
2585
|
-
self.logger.debug("
|
|
2796
|
+
self.logger.debug("read PhysicalDimensions %s" % short_name)
|
|
2586
2797
|
dimension = parent.createPhysicalDimension(short_name)
|
|
2587
2798
|
self.readIdentifiable(element, dimension)
|
|
2588
2799
|
dimension.setCurrentExp(self.getChildElementOptionalNumericalValue(element, "CURRENT-EXP")) \
|
|
2589
2800
|
.setLengthExp(self.getChildElementOptionalNumericalValue(element, "LENGTH-EXP")) \
|
|
2801
|
+
.setTimeExp(self.getChildElementOptionalNumericalValue(element, "TIME-EXP"))
|
|
2590
2802
|
|
|
2591
2803
|
'''
|
|
2592
2804
|
def getIPduMappings(self, element: ET.Element) -> List[IPduMapping]:
|
|
@@ -2753,7 +2965,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2753
2965
|
elif tag_name == "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING":
|
|
2754
2966
|
mapping.addDataMapping(self.getSenderReceiverToSignalGroupMapping(child_element))
|
|
2755
2967
|
else:
|
|
2756
|
-
|
|
2968
|
+
self.notImplemented("Unsupported Data Mapping %s" % tag_name)
|
|
2757
2969
|
|
|
2758
2970
|
def readSwcToEcuMapping(self, element: ET.Element, mapping: SwcToEcuMapping):
|
|
2759
2971
|
self.logger.debug("SwcToEcuMapping %s" % mapping.getShortName())
|
|
@@ -2768,7 +2980,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2768
2980
|
if tag_name == "SWC-TO-ECU-MAPPING":
|
|
2769
2981
|
self.readSwcToEcuMapping(child_element, mapping.createSwcToEcuMapping(self.getShortName(child_element)))
|
|
2770
2982
|
else:
|
|
2771
|
-
|
|
2983
|
+
self.notImplemented("Unsupported Sw Mapping %s" % tag_name)
|
|
2772
2984
|
|
|
2773
2985
|
def readSystemMapping(self, element: ET.Element, parent: System):
|
|
2774
2986
|
short_name = self.getShortName(element)
|
|
@@ -2784,7 +2996,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2784
2996
|
if tag_name == "SYSTEM-MAPPING":
|
|
2785
2997
|
self.readSystemMapping(child_element, system)
|
|
2786
2998
|
else:
|
|
2787
|
-
|
|
2999
|
+
self.notImplemented("Unsupported Mapping %s" % tag_name)
|
|
2788
3000
|
|
|
2789
3001
|
def readRootSwCompositionPrototype(self, element: ET.Element, system: System):
|
|
2790
3002
|
child_element = self.find(element, "ROOT-SOFTWARE-COMPOSITIONS/ROOT-SW-COMPOSITION-PROTOTYPE")
|
|
@@ -2808,25 +3020,18 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2808
3020
|
self.readRootSwCompositionPrototype(element, system)
|
|
2809
3021
|
system.setSystemVersion(self.getChildElementOptionalRevisionLabelString(element, "SYSTEM-VERSION"))
|
|
2810
3022
|
|
|
2811
|
-
def readParameterInterfaceParameters(self, element: ET.Element, parent: ParameterInterface):
|
|
2812
|
-
for child_element in self.findall(element, "PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
2813
|
-
short_name = self.getShortName(child_element)
|
|
2814
|
-
prototype = parent.createParameter(short_name)
|
|
2815
|
-
self.readParameterDataPrototype(child_element, prototype)
|
|
2816
|
-
|
|
2817
|
-
def readParameterInterface(self, element: ET.Element, parent: ARPackage):
|
|
2818
|
-
short_name = self.getShortName(element)
|
|
2819
|
-
self.logger.debug("Read ParameterInterface %s" % short_name)
|
|
2820
|
-
pi_interface = parent.createParameterInterface(short_name)
|
|
2821
|
-
self.readIdentifiable(element, pi_interface)
|
|
2822
|
-
self.readParameterInterfaceParameters(element, pi_interface)
|
|
2823
|
-
|
|
2824
3023
|
def readGenericEthernetFrame(self, element: ET.Element, parent: ARPackage):
|
|
2825
3024
|
short_name = self.getShortName(element)
|
|
2826
3025
|
self.logger.debug("Read EthernetFrame %s" % short_name)
|
|
2827
3026
|
frame = parent.createGenericEthernetFrame(short_name)
|
|
2828
3027
|
self.readFrame(element, frame)
|
|
2829
3028
|
|
|
3029
|
+
def readLifeCycleInfoSet(self, element: ET.Element, parent: ARPackage):
|
|
3030
|
+
short_name = self.getShortName(element)
|
|
3031
|
+
self.logger.debug("Read LifeCycleInfoSet %s" % short_name)
|
|
3032
|
+
frame = parent.createLifeCycleInfoSet(short_name)
|
|
3033
|
+
self.readIdentifiable(element, frame)
|
|
3034
|
+
|
|
2830
3035
|
def readARPackageElements(self, element: ET.Element, parent: ARPackage):
|
|
2831
3036
|
for child_element in self.findall(element, "./ELEMENTS/*"):
|
|
2832
3037
|
tag_name = self.getTagName(child_element.tag)
|
|
@@ -2940,9 +3145,22 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2940
3145
|
self.readParameterInterface(child_element, parent)
|
|
2941
3146
|
elif tag_name == "ETHERNET-FRAME":
|
|
2942
3147
|
self.readGenericEthernetFrame(child_element, parent)
|
|
3148
|
+
elif tag_name == "LIFE-CYCLE-INFO-SET":
|
|
3149
|
+
self.readLifeCycleInfoSet(child_element, parent)
|
|
2943
3150
|
else:
|
|
2944
3151
|
self._raiseError("Unsupported element type of ARPackage <%s>" % tag_name)
|
|
2945
3152
|
|
|
3153
|
+
def readReferenceBases(self, element: ET.Element, parent: ARPackage):
|
|
3154
|
+
self.logger.debug("Read ReferenceBases")
|
|
3155
|
+
for child_element in self.findall(element, "REFERENCE-BASES/REFERENCE-BASE"):
|
|
3156
|
+
base = ReferenceBase()
|
|
3157
|
+
base.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
3158
|
+
.setIsDefault(self.getChildElementOptionalBooleanValue(child_element, "IS-DEFAULT")) \
|
|
3159
|
+
.setIsGlobal(self.getChildElementOptionalBooleanValue(child_element, "IS-GLOBAL")) \
|
|
3160
|
+
.setBaseIsThisPackage(self.getChildElementOptionalBooleanValue(child_element, "BASE-IS-THIS-PACKAGE")) \
|
|
3161
|
+
.setPackageRef(self.getChildElementOptionalRefType(child_element, "PACKAGE-REF"))
|
|
3162
|
+
parent.addReferenceBase(base)
|
|
3163
|
+
|
|
2946
3164
|
def readARPackages(self, element: ET.Element, parent: ARPackage):
|
|
2947
3165
|
for child_element in element.findall("./xmlns:AR-PACKAGES/xmlns:AR-PACKAGE", self.nsmap):
|
|
2948
3166
|
short_name = self.getShortName(child_element)
|
|
@@ -2951,9 +3169,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2951
3169
|
self.logger.debug("readARPackages %s" % ar_package.full_name)
|
|
2952
3170
|
|
|
2953
3171
|
self.readIdentifiable(child_element, ar_package)
|
|
2954
|
-
self.readARPackageElements(child_element, ar_package)
|
|
2955
3172
|
self.readARPackages(child_element, ar_package)
|
|
2956
|
-
|
|
3173
|
+
self.readARPackageElements(child_element, ar_package)
|
|
3174
|
+
self.readReferenceBases(child_element, ar_package)
|
|
2957
3175
|
|
|
2958
3176
|
def load(self, filename, document: AUTOSAR):
|
|
2959
3177
|
self.logger.info("Load %s ..." % os.path.realpath(filename))
|
|
@@ -2964,6 +3182,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2964
3182
|
self._raiseError("Invalid ARXML file <%s>" % filename)
|
|
2965
3183
|
|
|
2966
3184
|
self.getAUTOSARInfo(root, document)
|
|
3185
|
+
document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))
|
|
2967
3186
|
self.readARPackages(root, document)
|
|
2968
3187
|
|
|
2969
3188
|
document.reload()
|