armodel 1.7.1__py3-none-any.whl → 1.7.3__py3-none-any.whl

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