armodel 1.7.0__py3-none-any.whl → 1.7.2__py3-none-any.whl

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