armodel 1.7.8__py3-none-any.whl → 1.8.0__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 (51) hide show
  1. armodel/cli/arxml_format_cli.py +1 -0
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +71 -11
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +102 -12
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +80 -9
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +17 -10
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +10 -8
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +30 -28
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +7 -5
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +38 -3
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +96 -18
  11. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/PortPrototypeBlueprint.py +73 -0
  12. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/__init__.py +0 -0
  13. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/Keyword.py +45 -0
  14. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/__init__.py +0 -0
  15. armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +27 -0
  16. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +33 -4
  17. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ElementCollection.py +73 -0
  18. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +40 -14
  19. armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +151 -1
  20. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +4 -1
  21. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +55 -12
  22. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SoftwareComponentDocumentation.py +80 -0
  23. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +11 -1
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +34 -10
  25. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +11 -10
  26. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +18 -6
  27. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +8 -2
  28. armodel/models/M2/AUTOSARTemplates/SystemTemplate/RteEventToOsTaskMapping.py +35 -0
  29. armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +25 -0
  30. armodel/models/M2/AUTOSARTemplates/SystemTemplate/SecureCommunication.py +83 -0
  31. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +84 -32
  32. armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +10 -1
  33. armodel/models/M2/MSR/Documentation/BlockElements/Figure.py +163 -0
  34. armodel/models/M2/MSR/Documentation/BlockElements/__init__.py +0 -0
  35. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +5 -3
  36. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +22 -1
  37. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +94 -9
  38. armodel/models/__init__.py +4 -0
  39. armodel/models/utils/__init__.py +0 -0
  40. armodel/models/utils/uuid_mgr.py +23 -0
  41. armodel/parser/abstract_arxml_parser.py +10 -2
  42. armodel/parser/arxml_parser.py +332 -104
  43. armodel/tests/test_armodel/models/test_datatype.py +136 -138
  44. armodel/tests/test_armodel/parser/test_sw_components.py +266 -4
  45. armodel/writer/arxml_writer.py +337 -74
  46. {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/METADATA +35 -1
  47. {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/RECORD +51 -40
  48. {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/LICENSE +0 -0
  49. {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/WHEEL +0 -0
  50. {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/entry_points.txt +0 -0
  51. {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/top_level.txt +0 -0
@@ -2,6 +2,8 @@ from typing import List
2
2
  import xml.etree.ElementTree as ET
3
3
  import os
4
4
 
5
+ from armodel.models.M2.MSR.Documentation.TextModel.BlockElements.PaginationAndView import DocumentViewSelectable, Paginateable
6
+
5
7
  from ..models.M2.MSR.AsamHdo.AdminData import AdminData
6
8
  from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
7
9
  from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
@@ -21,20 +23,22 @@ from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroup
21
23
  from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxisSet
22
24
  from ..models.M2.MSR.DataDictionary.ServiceProcessTask import SwServiceArg
23
25
  from ..models.M2.MSR.Documentation.Annotation import Annotation, GeneralAnnotation
26
+ from ..models.M2.MSR.Documentation.BlockElements.Figure import Graphic, LGraphic, MlFigure
24
27
  from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
25
- from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
28
+ from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ARList
26
29
  from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName, LOverviewParagraph, LParagraph, LanguageSpecific
27
30
  from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText
28
31
  from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultilanguageLongName
29
32
 
30
33
  from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
31
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswApiOptions, BswBackgroundEvent, BswCalledEntity, BswDataReceivedEvent
32
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswOperationInvokedEvent
34
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswApiOptions, BswAsynchronousServerCallPoint, BswBackgroundEvent
35
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswDataReceivedEvent, BswModuleCallPoint
36
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalTriggeringPoint, BswOperationInvokedEvent
33
37
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswDataReceptionPolicy, BswExternalTriggerOccurredEvent, BswInternalBehavior
34
38
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalTriggerOccurredEvent, BswInterruptEntity, BswModeSwitchEvent
35
39
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswModuleEntity, BswQueuedDataReceptionPolicy, BswSchedulableEntity
36
40
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswScheduleEvent, BswModeSenderPolicy, BswTimingEvent, BswVariableAccess
37
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
41
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleClientServerEntry, BswModuleEntry
38
42
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
39
43
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
40
44
  from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference
@@ -49,11 +53,14 @@ from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import Res
49
53
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import MemorySection
50
54
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
51
55
  from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
52
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal
56
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DltUserNeeds, ServiceNeeds
57
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCapabilityElement, DtcStatusChangeNotificationNeeds
53
58
  from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds
54
59
  from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds
55
60
  from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment
56
61
  from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataTypeAssignment, ServiceDependency
62
+ from ..models.M2.AUTOSARTemplates.CommonStructure.StandardizationTemplate.BlueprintDedicated.PortPrototypeBlueprint import PortPrototypeBlueprint
63
+ from ..models.M2.AUTOSARTemplates.CommonStructure.StandardizationTemplate.Keyword import Keyword, KeywordSet
57
64
  from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
58
65
  from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
59
66
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
@@ -66,12 +73,13 @@ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucReferenceVa
66
73
  from ..models.M2.AUTOSARTemplates.EcuResourceTemplate import HwDescriptionEntity, HwElement, HwPinGroup
67
74
  from ..models.M2.AUTOSARTemplates.EcuResourceTemplate.HwElementCategory import HwAttributeDef, HwCategory, HwType
68
75
  from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
76
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ElementCollection import Collection
69
77
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Describable, Identifiable
70
78
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Referrable, MultilanguageReferrable
71
79
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
72
80
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
73
81
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral
74
- from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
82
+ from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfo, LifeCycleInfoSet, LifeCyclePeriod
75
83
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationPrimitiveDataType, ApplicationRecordDataType
76
84
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType
77
85
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
@@ -103,7 +111,8 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import Assembl
103
111
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype
104
112
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationRecordElement, AutosarDataPrototype
105
113
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import DataPrototype, ParameterDataPrototype, VariableDataPrototype
106
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation
114
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerInterfaceMapping
115
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ClientServerOperation, ClientServerOperationMapping
107
116
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import DataPrototypeMapping, InvalidationPolicy, ModeSwitchInterface
108
117
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ParameterInterface, PortInterface, PortInterfaceMappingSet
109
118
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import SenderReceiverInterface, TriggerInterface, DataInterface
@@ -358,7 +367,7 @@ class ARXMLParser(AbstractARXMLParser):
358
367
  for child_element in self.findall(element, "%s/VARIABLE-ACCESS" % key):
359
368
  short_name = self.getShortName(child_element)
360
369
 
361
- self.logger.debug("readVariableAccesses %s" % short_name)
370
+ # self.logger.debug("Read VariableAccesses %s" % short_name)
362
371
 
363
372
  if (key == "DATA-RECEIVE-POINT-BY-ARGUMENTS"):
364
373
  variable_access = parent.createDataReceivePointByArgument(short_name)
@@ -391,7 +400,7 @@ class ARXMLParser(AbstractARXMLParser):
391
400
  ref = self.getChildElementOptionalRefType(child_element, "BSW-MODULE-ENTRY-REF")
392
401
  if (ref is not None):
393
402
  parent.addImplementedEntryRef(ref)
394
- self.logger.debug("ImplementedEntry <%s> of BswModuleDescription <%s> has been added", ref.value, parent.getShortName())
403
+ # self.logger.debug("ImplementedEntry <%s> of BswModuleDescription <%s> has been added", ref.value, parent.getShortName())
395
404
 
396
405
  def readModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
397
406
  self.readIdentifiable(element, prototype)
@@ -420,7 +429,7 @@ class ARXMLParser(AbstractARXMLParser):
420
429
  entity.addCanEnterExclusiveAreaRef(ref)
421
430
 
422
431
  def readExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
423
- self.logger.debug("readExecutableEntity %s" % entity.getShortName())
432
+ # self.logger.debug("Read ExecutableEntity %s" % entity.getShortName())
424
433
  self.readIdentifiable(element, entity)
425
434
  self.readCanEnterExclusiveAreaRefs(element, entity)
426
435
  entity.setMinimumStartInterval(self.getChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL")) \
@@ -439,7 +448,7 @@ class ARXMLParser(AbstractARXMLParser):
439
448
  self.readBswEvent(element, event)
440
449
 
441
450
  def readBswModeSwitchEvent(self, element: ET.Element, event: BswModeSwitchEvent):
442
- self.logger.debug("Read BswModeSwitchEvent <%s>" % event.getShortName())
451
+ # self.logger.debug("Read BswModeSwitchEvent <%s>" % event.getShortName())
443
452
  # Read the Inherit BswScheduleEvent
444
453
  self.readBswScheduleEvent(element, event)
445
454
 
@@ -454,13 +463,13 @@ class ARXMLParser(AbstractARXMLParser):
454
463
  self.logger.debug(" Period: <%f, %s>" % (event.getPeriod().getValue(), event.getPeriod().getText()))
455
464
 
456
465
  def readBswDataReceivedEvent(self, element: ET.Element, event: BswDataReceivedEvent):
457
- self.logger.debug("Read BswDataReceivedEvent <%s>" % event.getShortName())
466
+ # self.logger.debug("Read BswDataReceivedEvent <%s>" % event.getShortName())
458
467
  # Read the Inherit BswScheduleEvent
459
468
  self.readBswScheduleEvent(element, event)
460
469
  event.setDataRef(self.getChildElementOptionalRefType(element, "DATA-REF"))
461
470
 
462
471
  def readBswInternalTriggerOccurredEvent(self, element: ET.Element, event: BswInternalTriggerOccurredEvent):
463
- self.logger.debug("Read BswInternalTriggerOccurredEvent <%s>" % event.getShortName())
472
+ # self.logger.debug("Read BswInternalTriggerOccurredEvent <%s>" % event.getShortName())
464
473
  # Read the Inherit BswScheduleEvent
465
474
  self.readBswScheduleEvent(element, event)
466
475
  event.setEventSourceRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
@@ -557,9 +566,12 @@ class ARXMLParser(AbstractARXMLParser):
557
566
  else:
558
567
  self.raiseError("Unsupported assigned ports <%s>" % tag_name)
559
568
 
560
- def readNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
561
- self.logger.debug("Read NvBlockNeeds <%s>" % needs.getShortName())
569
+ def readServiceNeeds(self, element: ET.Element, needs: ServiceNeeds):
562
570
  self.readIdentifiable(element, needs)
571
+
572
+ def readNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
573
+ # self.logger.debug("Read NvBlockNeeds <%s>" % needs.getShortName())
574
+ self.readServiceNeeds(element, needs)
563
575
  needs.setCalcRamBlockCrc(self.getChildElementOptionalBooleanValue(element, "CALC-RAM-BLOCK-CRC")) \
564
576
  .setCheckStaticBlockId(self.getChildElementOptionalBooleanValue(element, "CHECK-STATIC-BLOCK-ID")) \
565
577
  .setNDataSets(self.getChildElementOptionalNumericalValue(element, "N-DATA-SETS")) \
@@ -580,20 +592,23 @@ class ARXMLParser(AbstractARXMLParser):
580
592
  .setWritingFrequency(self.getChildElementOptionalPositiveInteger(element, "WRITING-FREQUENCY")) \
581
593
  .setWritingPriority(self.getChildElementOptionalLiteral(element, "WRITING-PRIORITY"))
582
594
 
583
- def reaDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
584
- self.logger.debug("Read DiagnosticCommunicationManagerNeeds <%s>" % needs.getShortName())
585
- self.readIdentifiable(element, needs)
595
+ def readDiagnosticCapabilityElement(self, element: ET.Element, needs: DiagnosticCapabilityElement):
596
+ self.readServiceNeeds(element, needs)
597
+
598
+ def readDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
599
+ # self.logger.debug("Read DiagnosticCommunicationManagerNeeds <%s>" % needs.getShortName())
600
+ self.readDiagnosticCapabilityElement(element, needs)
586
601
  needs.setServiceRequestCallbackType(self.getChildElementOptionalLiteral(element, "SERVICE-REQUEST-CALLBACK-TYPE"))
587
602
 
588
603
  def readDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
589
- self.logger.debug("Read DiagnosticRoutineNeeds %s" % needs.getShortName())
590
- self.readIdentifiable(element, needs)
604
+ # self.logger.debug("Read DiagnosticRoutineNeeds %s" % needs.getShortName())
605
+ self.readDiagnosticCapabilityElement(element, needs)
591
606
  needs.setDiagRoutineType(self.getChildElementOptionalLiteral(element, "DIAG-ROUTINE-TYPE")) \
592
607
  .setRidNumber(self.getChildElementOptionalIntegerValue(element, "RID-NUMBER"))
593
608
 
594
609
  def readDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
595
- self.logger.debug("Read DiagnosticValueNeeds %s" % needs.getShortName())
596
- self.readIdentifiable(element, needs)
610
+ # self.logger.debug("Read DiagnosticValueNeeds %s" % needs.getShortName())
611
+ self.readDiagnosticCapabilityElement(element, needs)
597
612
  needs.setDataLength(self.getChildElementOptionalPositiveInteger(element, "DATA-LENGTH")) \
598
613
  .setDiagnosticValueAccess(self.getChildElementOptionalLiteral(element, "DIAGNOSTIC-VALUE-ACCESS")) \
599
614
  .setDidNumber(self.getChildElementOptionalIntegerValue(element, "DID-NUMBER")) \
@@ -601,7 +616,7 @@ class ARXMLParser(AbstractARXMLParser):
601
616
  .setProcessingStyle(self.getChildElementOptionalLiteral(element, "PROCESSING-STYLE"))
602
617
 
603
618
  def readDiagEventDebounceMonitorInternal(self, element: ET.Element, algorithm: DiagEventDebounceMonitorInternal):
604
- self.readIdentifiable(element, algorithm)
619
+ self.readDiagnosticCapabilityElement(element, algorithm)
605
620
 
606
621
  def readDiagEventDebounceAlgorithm(self, element: ET.Element, needs: DiagnosticEventNeeds):
607
622
  for child_element in self.findall(element, "DIAG-EVENT-DEBOUNCE-ALGORITHM/*"):
@@ -613,25 +628,35 @@ class ARXMLParser(AbstractARXMLParser):
613
628
  self.notImplemented("Unsupported DiagEventDebounceAlgorithm <%s>" % tag_name)
614
629
 
615
630
  def readDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
616
- self.logger.debug("Read DiagnosticEventNeeds <%s>" % needs.getShortName())
617
- self.readIdentifiable(element, needs)
631
+ # self.logger.debug("Read DiagnosticEventNeeds <%s>" % needs.getShortName())
632
+ self.readDiagnosticCapabilityElement(element, needs)
618
633
  self.readDiagEventDebounceAlgorithm(element, needs)
619
634
  needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND")) \
620
635
  .setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
621
636
 
622
637
  def readDiagnosticEventInfoNeeds(self, element: ET.Element, needs: DiagnosticEventInfoNeeds):
623
- self.logger.debug("Read DiagnosticEventInfoNeeds <%s>" % needs.getShortName())
624
- self.readIdentifiable(element, needs)
638
+ # self.logger.debug("Read DiagnosticEventInfoNeeds <%s>" % needs.getShortName())
639
+ self.readDiagnosticCapabilityElement(element, needs)
640
+ needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND"))
625
641
  needs.setUdsDtcNumber(self.getChildElementOptionalPositiveInteger(element, "UDS-DTC-NUMBER"))
626
642
 
627
643
  def readCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
628
- self.logger.debug("Read CryptoServiceNeeds <%s>" % needs.getShortName())
629
- self.readIdentifiable(element, needs)
644
+ # self.logger.debug("Read CryptoServiceNeeds <%s>" % needs.getShortName())
645
+ self.readServiceNeeds(element, needs)
630
646
  needs.setMaximumKeyLength(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-KEY-LENGTH"))
631
647
 
632
648
  def readEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
633
- self.logger.debug("read EcuStateMgrUserNeeds %s" % needs.getShortName())
634
- self.readIdentifiable(element, needs)
649
+ # self.logger.debug("Read EcuStateMgrUserNeeds %s" % needs.getShortName())
650
+ self.readServiceNeeds(element, needs)
651
+
652
+ def readDtcStatusChangeNotificationNeeds(self, element: ET.Element, needs: DtcStatusChangeNotificationNeeds):
653
+ # self.logger.debug("Read DtcStatusChangeNotificationNeeds %s" % needs.getShortName())
654
+ self.readDiagnosticCapabilityElement(element, needs)
655
+ needs.setDtcFormatType(self.getChildElementOptionalLiteral(element, "DTC-FORMAT-TYPE"))
656
+
657
+ def readDltUserNeeds(self, element: ET.Element, needs: DltUserNeeds):
658
+ # self.logger.debug("Read DltUserNeeds %s" % needs.getShortName())
659
+ self.readServiceNeeds(element, needs)
635
660
 
636
661
  def readSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
637
662
  for child_element in self.findall(element, "SERVICE-NEEDS/*"):
@@ -641,7 +666,7 @@ class ARXMLParser(AbstractARXMLParser):
641
666
  self.readNvBlockNeeds(child_element, needs)
642
667
  elif tag_name == "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS":
643
668
  needs = parent.createDiagnosticCommunicationManagerNeeds(self.getShortName(child_element))
644
- self.reaDiagnosticCommunicationManagerNeeds(child_element, needs)
669
+ self.readDiagnosticCommunicationManagerNeeds(child_element, needs)
645
670
  elif tag_name == "DIAGNOSTIC-ROUTINE-NEEDS":
646
671
  needs = parent.createDiagnosticRoutineNeeds(self.getShortName(child_element))
647
672
  self.readDiagnosticRoutineNeeds(child_element, needs)
@@ -660,13 +685,19 @@ class ARXMLParser(AbstractARXMLParser):
660
685
  elif tag_name == "ECU-STATE-MGR-USER-NEEDS":
661
686
  needs = parent.createEcuStateMgrUserNeeds(self.getShortName(child_element))
662
687
  self.readEcuStateMgrUserNeeds(child_element, needs)
688
+ elif tag_name == "DTC-STATUS-CHANGE-NOTIFICATION-NEEDS":
689
+ needs = parent.createDtcStatusChangeNotificationNeeds(self.getShortName(child_element))
690
+ self.readDtcStatusChangeNotificationNeeds(child_element, needs)
691
+ elif tag_name == "DLT-USER-NEEDS":
692
+ needs = parent.createDltUserNeeds(self.getShortName(child_element))
693
+ self.readDltUserNeeds(child_element, needs)
663
694
  else:
664
695
  self.notImplemented("Unsupported service needs <%s>" % tag_name)
665
696
 
666
697
  def readSwcServiceDependency(self, element: ET.Element, parent: SwcInternalBehavior):
667
698
  short_name = self.getShortName(element)
668
699
  dependency = parent.createSwcServiceDependency(short_name)
669
- self.logger.debug("read SwcServiceDependency %s" % short_name)
700
+ # self.logger.debug("Read SwcServiceDependency %s" % short_name)
670
701
  self.readServiceDependency(element, dependency)
671
702
  self.readSwcServiceDependencyAssignedData(element, dependency)
672
703
  self.readSwcServiceDependencyAssignedPorts(element, dependency)
@@ -778,9 +809,31 @@ class ARXMLParser(AbstractARXMLParser):
778
809
  def readBswModuleEntityIssuedTriggerRefs(self, element: ET.Element, entity: BswModuleEntity):
779
810
  for ref in self.getChildElementRefTypeList(element, "ISSUED-TRIGGERS/TRIGGER-REF-CONDITIONAL/TRIGGER-REF"):
780
811
  entity.addIssuedTriggerRef(ref)
812
+
813
+ def readBswModuleEntityActivationPointRefs(self, element: ET.Element, entity: BswModuleEntity):
814
+ for ref in self.getChildElementRefTypeList(element, "ACTIVATION-POINTS/BSW-INTERNAL-TRIGGERING-POINT-REF-CONDITIONAL/BSW-INTERNAL-TRIGGERING-POINT-REF"): # noqa E501
815
+ entity.addActivationPointRef(ref)
816
+
817
+ def readBswModuleCallPoint(self, element: ET.Element, point: BswModuleCallPoint):
818
+ self.readReferrable(element, point)
819
+
820
+ def readBswAsynchronousServerCallPoint(self, element: ET.Element, point: BswAsynchronousServerCallPoint):
821
+ self.readBswModuleCallPoint(element, point)
822
+ point.setCalledEntryRef(self.getChildElementOptionalRefType(element, "CALLED-ENTRY-REF"))
823
+
824
+ def readBswModuleEntityCallPoints(self, element: ET.Element, entity: BswModuleEntity):
825
+ for child_element in self.findall(element, "CALL-POINTS/*"):
826
+ tag_name = self.getTagName(child_element)
827
+ if tag_name == "BSW-ASYNCHRONOUS-SERVER-CALL-POINT":
828
+ point = entity.createBswAsynchronousServerCallPoint(self.getShortName(child_element))
829
+ self.readBswAsynchronousServerCallPoint(child_element, point)
830
+ else:
831
+ self.notImplemented("Unsupported Call Point <%s>" % tag_name)
781
832
 
782
833
  def readBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
783
834
  self.readExecutableEntity(element, entity)
835
+ self.readBswModuleEntityActivationPointRefs(element, entity)
836
+ self.readBswModuleEntityCallPoints(element, entity)
784
837
  self.readBswModuleEntityDataReceiverPoints(element, entity)
785
838
  self.readBswModuleEntityDataSendPoints(element, entity)
786
839
  entity.setImplementedEntryRef(self.getChildElementRefType(entity.getShortName(), element, "IMPLEMENTED-ENTRY-REF"))
@@ -788,15 +841,15 @@ class ARXMLParser(AbstractARXMLParser):
788
841
  self.readBswModuleEntityIssuedTriggerRefs(element, entity)
789
842
 
790
843
  def readBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
791
- self.logger.debug("read BswCalledEntity %s" % entity.getShortName())
844
+ # self.logger.debug("Read BswCalledEntity %s" % entity.getShortName())
792
845
  self.readBswModuleEntity(element, entity)
793
846
 
794
847
  def readBswSchedulableEntity(self, element: ET.Element, entity: BswSchedulableEntity):
795
- self.logger.debug("read BswSchedulableEntity %s" % entity.getShortName())
848
+ # self.logger.debug("Read BswSchedulableEntity %s" % entity.getShortName())
796
849
  self.readBswModuleEntity(element, entity)
797
850
 
798
851
  def readBswInterruptEntity(self, element: ET.Element, entity: BswInterruptEntity):
799
- self.logger.debug("read BswSchedulableEntity %s" % entity.getShortName())
852
+ # self.logger.debug("Read BswSchedulableEntity %s" % entity.getShortName())
800
853
  self.readBswModuleEntity(element, entity)
801
854
  entity.setInterruptCategory(self.getChildElementOptionalLiteral(element, "INTERRUPT-CATEGORY")) \
802
855
  .setInterruptSource(self.getChildElementOptionalLiteral(element, "INTERRUPT-SOURCE"))
@@ -876,11 +929,24 @@ class ARXMLParser(AbstractARXMLParser):
876
929
  else:
877
930
  self.notImplemented("Unsupported Reception Policies <%s>" % tag_name)
878
931
 
932
+ def readBswInternalTriggeringPoint(self, element: ET.Element, point: BswInternalTriggeringPoint):
933
+ self.readIdentifiable(element, point)
934
+
935
+ def readBswInternalBehaviorInternalTriggeringPoints(self, element: ET.Element, behavior: BswInternalBehavior):
936
+ for child_element in self.findall(element, "INTERNAL-TRIGGERING-POINTS/*"):
937
+ tag_name = self.getTagName(child_element)
938
+ if tag_name == "BSW-INTERNAL-TRIGGERING-POINT":
939
+ point = behavior.createBswInternalTriggeringPoint(self.getShortName(child_element))
940
+ self.readBswInternalTriggeringPoint(child_element, point)
941
+ else:
942
+ self.notImplemented("Unsupported Internal Triggering Points <%s>" % tag_name)
943
+
879
944
  def readBswInternalBehavior(self, element: ET.Element, behavior: BswInternalBehavior):
880
945
  self.logger.debug("Read BswInternalBehavior <%s>" % behavior.full_name)
881
946
 
882
947
  # read the internal behavior
883
948
  self.readInternalBehavior(element, behavior)
949
+ self.readBswInternalBehaviorInternalTriggeringPoints(element, behavior)
884
950
  self.readBswInternalBehaviorEntities(element, behavior)
885
951
  self.readBswInternalBehaviorEvents(element, behavior)
886
952
  self.readBswInternalBehaviorModeSenderPolicy(element, behavior)
@@ -936,6 +1002,30 @@ class ARXMLParser(AbstractARXMLParser):
936
1002
  else:
937
1003
  self.notImplemented("Unsupported Required Data <%s>" % tag_name)
938
1004
 
1005
+ def readBswModuleClientServerEntry(self, element: ET.Element, entry: BswModuleClientServerEntry):
1006
+ self.readReferrable(element, entry)
1007
+ entry.setEncapsulatedEntryRef(self.getChildElementOptionalRefType(element, "ENCAPSULATED-ENTRY-REF")) \
1008
+ .setIsReentrant(self.getChildElementOptionalBooleanValue(element, "IS-REENTRANT")) \
1009
+ .setIsSynchronous(self.getChildElementOptionalBooleanValue(element, "IS-SYNCHRONOUS"))
1010
+
1011
+ def readBswModuleDescriptionProvidedClientServerEntries(self, element: ET.Element, desc: BswModuleDescription):
1012
+ for child_element in self.findall(element, "PROVIDED-CLIENT-SERVER-ENTRYS/*"):
1013
+ tag_name = self.getTagName(child_element)
1014
+ if tag_name == "BSW-MODULE-CLIENT-SERVER-ENTRY":
1015
+ entry = desc.createProvidedClientServerEntry(self.getShortName(child_element))
1016
+ self.readBswModuleClientServerEntry(child_element, entry)
1017
+ else:
1018
+ self.notImplemented("Unsupported Provided Client Server Entry <%s>" % tag_name)
1019
+
1020
+ def readBswModuleDescriptionRequiredClientServerEntries(self, element: ET.Element, desc: BswModuleDescription):
1021
+ for child_element in self.findall(element, "REQUIRED-CLIENT-SERVER-ENTRYS/*"):
1022
+ tag_name = self.getTagName(child_element)
1023
+ if tag_name == "BSW-MODULE-CLIENT-SERVER-ENTRY":
1024
+ entry = desc.createRequiredClientServerEntry(self.getShortName(child_element))
1025
+ self.readBswModuleClientServerEntry(child_element, entry)
1026
+ else:
1027
+ self.notImplemented("Unsupported Required Client Server Entry <%s>" % tag_name)
1028
+
939
1029
  def readBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
940
1030
  self.logger.debug("Read BswModuleDescription <%s>" % desc.getShortName())
941
1031
 
@@ -944,11 +1034,12 @@ class ARXMLParser(AbstractARXMLParser):
944
1034
  self.readBswModuleDescriptionImplementedEntryRefs(element, desc)
945
1035
  self.readBswModuleDescriptionProvidedModeGroups(element, desc)
946
1036
  self.readBswModuleDescriptionRequiredModeGroups(element, desc)
947
- self.readBswModuleDescriptionReleasedTriggers(element, desc)
948
- self.readBswModuleDescriptionRequiredTriggers(element, desc)
1037
+ self.readBswModuleDescriptionProvidedClientServerEntries(element, desc)
1038
+ self.readBswModuleDescriptionRequiredClientServerEntries(element, desc)
949
1039
  self.readBswModuleDescriptionProvidedDatas(element, desc)
950
1040
  self.readBswModuleDescriptionRequiredDatas(element, desc)
951
1041
  self.readBswModuleDescriptionBswInternalBehaviors(element, desc)
1042
+ self.readBswModuleDescriptionRequiredTriggers(element, desc)
952
1043
 
953
1044
  def readSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
954
1045
  self.readIdentifiable(element, arg)
@@ -975,8 +1066,6 @@ class ARXMLParser(AbstractARXMLParser):
975
1066
  .setExecutionContext(self.getChildElementOptionalLiteral(element, "EXECUTION-CONTEXT")) \
976
1067
  .setSwServiceImplPolicy(self.getChildElementOptionalLiteral(element, "SW-SERVICE-IMPL-POLICY"))
977
1068
 
978
- self.logger.debug("read BswModuleEntry %s" % entry.getShortName())
979
-
980
1069
  def readEngineeringObject(self, element: ET.Element, engineering_obj: EngineeringObject):
981
1070
  self.readARObjectAttributes(element, engineering_obj)
982
1071
  engineering_obj.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
@@ -985,7 +1074,7 @@ class ARXMLParser(AbstractARXMLParser):
985
1074
  def getAutosarEngineeringObject(self, element: ET.Element) -> AutosarEngineeringObject:
986
1075
  obj = AutosarEngineeringObject()
987
1076
  self.readEngineeringObject(element, obj)
988
- self.logger.debug("getAutosarEngineeringObject %s", obj.short_label)
1077
+ # self.logger.debug("Get AutosarEngineeringObject %s", obj.short_label)
989
1078
  return obj
990
1079
 
991
1080
  def readArtifactDescriptor(self, element: ET.Element, code_desc: Code):
@@ -994,12 +1083,12 @@ class ARXMLParser(AbstractARXMLParser):
994
1083
  if tag_name == "AUTOSAR-ENGINEERING-OBJECT":
995
1084
  code_desc.addArtifactDescriptor(self.getAutosarEngineeringObject(child_element))
996
1085
  else:
997
- self.raiseError("Unsupported Artifact Descriptor <%s>" % tag_name)
1086
+ self.notImplemented("Unsupported Artifact Descriptor <%s>" % tag_name)
998
1087
 
999
1088
  def readCodeDescriptor(self, element: ET.Element, impl: Implementation):
1000
1089
  for child_element in self.findall(element, "CODE-DESCRIPTORS/CODE"):
1001
1090
  short_name = self.getShortName(child_element)
1002
- self.logger.debug("readCodeDescriptor %s" % short_name)
1091
+ # self.logger.debug("Read CodeDescriptor %s" % short_name)
1003
1092
  code_desc = impl.createCodeDescriptor(short_name)
1004
1093
  self.readIdentifiable(child_element, code_desc)
1005
1094
  self.readArtifactDescriptor(child_element, code_desc)
@@ -1020,7 +1109,7 @@ class ARXMLParser(AbstractARXMLParser):
1020
1109
  memory_section.setSize(self.getChildElementOptionalNumericalValue(child_element, "SIZE")) \
1021
1110
  .setSwAddrMethodRef(self.getChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF")) \
1022
1111
  .setSymbol(self.getChildElementOptionalLiteral(child_element, "SYMBOL"))
1023
- self.logger.debug("read MemorySections %s" % memory_section.getShortName())
1112
+ # self.logger.debug("read MemorySections %s" % memory_section.getShortName())
1024
1113
 
1025
1114
  def readStackUsage(self, element: ET.Element, usage: StackUsage):
1026
1115
  self.logger.debug("read StackUsage %s" % usage.getShortName())
@@ -1145,16 +1234,16 @@ class ARXMLParser(AbstractARXMLParser):
1145
1234
  parent.addModeIRef(mode_iref)
1146
1235
 
1147
1236
  def readSynchronousServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
1237
+ # self.logger.debug("readSynchronousServerCallPoint %s" % short_name)
1148
1238
  short_name = self.getShortName(element)
1149
- self.logger.debug("readSynchronousServerCallPoint %s" % short_name)
1150
1239
  server_call_point = parent.createSynchronousServerCallPoint(short_name)
1151
1240
  self.readIdentifiable(element, server_call_point)
1152
1241
  server_call_point.setTimeout(self.getChildElementOptionalFloatValue(element, "TIMEOUT"))
1153
1242
  self.readROperationIRef(element, "OPERATION-IREF", server_call_point)
1154
1243
 
1155
1244
  def readAsynchronousServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
1245
+ # self.logger.debug("readAsynchronousServerCallPoint %s" % short_name)
1156
1246
  short_name = self.getShortName(element)
1157
- self.logger.debug("readAsynchronousServerCallPoint %s" % short_name)
1158
1247
  server_call_point = parent.createAsynchronousServerCallPoint(short_name)
1159
1248
  self.readIdentifiable(element, server_call_point)
1160
1249
  server_call_point.setTimeout(self.getChildElementOptionalFloatValue(element, "TIMEOUT"))
@@ -1307,7 +1396,7 @@ class ARXMLParser(AbstractARXMLParser):
1307
1396
  parent.setOperationIRef(operation_iref)
1308
1397
 
1309
1398
  def readOperationInvokedEvent(self, element: ET.Element, event: OperationInvokedEvent):
1310
- self.logger.debug("Read OperationInvokedEvent <%s>" % event.getShortName())
1399
+ # self.logger.debug("Read OperationInvokedEvent <%s>" % event.getShortName())
1311
1400
  self.readPOperationIRef(element, "OPERATION-IREF", event)
1312
1401
  self.readRTEEvent(element, event)
1313
1402
 
@@ -1365,43 +1454,43 @@ class ARXMLParser(AbstractARXMLParser):
1365
1454
  behavior.addPortAPIOption(option)
1366
1455
 
1367
1456
  def readTimingEvent(self, element: ET.Element, event: TimingEvent):
1368
- self.logger.debug("Read TimingEvent <%s>" % event.getShortName())
1457
+ # self.logger.debug("Read TimingEvent <%s>" % event.getShortName())
1369
1458
  self.readRTEEvent(element, event)
1370
1459
  event.setOffset(self.getChildElementOptionalTimeValue(element, "OFFSET")) \
1371
1460
  .setPeriod(self.getChildElementOptionalTimeValue(element, "PERIOD"))
1372
1461
 
1373
1462
  def readDataReceivedEvent(self, element: ET.Element, event: DataReceivedEvent):
1374
- self.logger.debug("Read DataReceivedEvent <%s>" % event.getShortName())
1463
+ # self.logger.debug("Read DataReceivedEvent <%s>" % event.getShortName())
1375
1464
  self.readRTEEvent(element, event)
1376
1465
  self.readRVariableInAtomicSwcInstanceRef(element, event)
1377
1466
 
1378
1467
  def readSwcModeSwitchEvent(self, element: ET.Element, event: SwcModeSwitchEvent):
1379
- self.logger.debug("Read SwcModeSwitchEvent <%s>" % event.getShortName())
1468
+ # self.logger.debug("Read SwcModeSwitchEvent <%s>" % event.getShortName())
1380
1469
  self.readRTEEvent(element, event)
1381
1470
  event.setActivation(self.getChildElementOptionalLiteral(element, "ACTIVATION"))
1382
1471
  self.readRModeInAtomicSwcInstanceRef(element, event)
1383
1472
 
1384
1473
  def readInternalTriggerOccurredEvent(self, element: ET.Element, event: InternalTriggerOccurredEvent):
1385
- self.logger.debug("Read InternalTriggerOccurredEvent <%s>" % event.getShortName())
1474
+ # self.logger.debug("Read InternalTriggerOccurredEvent <%s>" % event.getShortName())
1386
1475
  self.readRTEEvent(element, event)
1387
1476
  event.setEventSourceRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
1388
1477
 
1389
1478
  def readInitEvent(self, element, event: InitEvent):
1390
- self.logger.debug("Read InitEvent <%s>" % event.getShortName())
1479
+ # self.logger.debug("Read InitEvent <%s>" % event.getShortName())
1391
1480
  self.readRTEEvent(element, event)
1392
1481
 
1393
1482
  def readAsynchronousServerCallReturnsEvent(self, element, event: AsynchronousServerCallReturnsEvent):
1394
- self.logger.debug("Read AsynchronousServerCallReturnsEvent <%s>" % event.getShortName())
1483
+ # self.logger.debug("Read AsynchronousServerCallReturnsEvent <%s>" % event.getShortName())
1395
1484
  self.readRTEEvent(element, event)
1396
1485
  event.setActivationReasonRepresentationRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
1397
1486
 
1398
1487
  def readModeSwitchedAckEvent(self, element, event: ModeSwitchedAckEvent):
1399
- self.logger.debug("Read ModeSwitchedAckEvent <%s>" % event.getShortName())
1488
+ # self.logger.debug("Read ModeSwitchedAckEvent <%s>" % event.getShortName())
1400
1489
  self.readRTEEvent(element, event)
1401
1490
  event.setEventSourceRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
1402
1491
 
1403
1492
  def readBackgroundEvent(self, element, event: BackgroundEvent):
1404
- self.logger.debug("Read BackgroundEvent <%s>" % event.getShortName())
1493
+ # self.logger.debug("Read BackgroundEvent <%s>" % event.getShortName())
1405
1494
  self.readRTEEvent(element, event)
1406
1495
 
1407
1496
  def readSwcInternalBehaviorEvents(self, element: ET.Element, parent: SwcInternalBehavior):
@@ -1486,13 +1575,13 @@ class ARXMLParser(AbstractARXMLParser):
1486
1575
  results.append(l1)
1487
1576
  return results
1488
1577
 
1489
- def getListElements(self, element: ET.Element, key: str) -> List[ListElement]:
1578
+ def getListElements(self, element: ET.Element, key: str) -> List[ARList]:
1490
1579
  '''
1491
1580
  Read the DocumentationBlock List
1492
1581
  '''
1493
1582
  result = []
1494
1583
  for child_element in self.findall(element, key):
1495
- list = ListElement()
1584
+ list = ARList()
1496
1585
  if 'TYPE' in child_element.attrib:
1497
1586
  list.setType(child_element.attrib['TYPE'])
1498
1587
  for block in self.getDocumentationBlockList(child_element, "ITEM"):
@@ -1500,6 +1589,41 @@ class ARXMLParser(AbstractARXMLParser):
1500
1589
  result.append(list)
1501
1590
  return result
1502
1591
 
1592
+ def getGraphic(self, element: ET.Element, key: str) -> Graphic:
1593
+ graphic = None
1594
+ child_element = self.find(element, key)
1595
+ if child_element is not None:
1596
+ graphic = Graphic()
1597
+ if "FILENAME" in child_element.attrib:
1598
+ graphic.setFilename(child_element.attrib["FILENAME"])
1599
+ return graphic
1600
+
1601
+ def readMlFigureLGraphics(self, element: ET.Element, figure: MlFigure):
1602
+ for child_element in self.findall(element, "L-GRAPHIC"):
1603
+ graphic = LGraphic()
1604
+ if "L" in child_element.attrib:
1605
+ graphic.setL(child_element.attrib["L"])
1606
+ graphic.setGraphic(self.getGraphic(child_element, "GRAPHIC"))
1607
+ figure.addLGraphics(graphic)
1608
+
1609
+ def readDocumentViewSelectable(self, element: ET.Element, selectable: DocumentViewSelectable):
1610
+ self.readARObjectAttributes(element, selectable)
1611
+
1612
+ def readPaginateable(self, element: ET.Element, paginateable: Paginateable):
1613
+ self.readDocumentViewSelectable(element, paginateable)
1614
+
1615
+ def readMlFigure(self, element: ET.Element, figure: MlFigure):
1616
+ self.readPaginateable(element, figure)
1617
+ self.readMlFigureLGraphics(element, figure)
1618
+
1619
+ def getMlFigures(self, element: ET.Element, key: str) -> List[MlFigure]:
1620
+ result = []
1621
+ for child_element in self.findall(element, key):
1622
+ figure = MlFigure()
1623
+ self.readMlFigure(child_element, figure)
1624
+ result.append(figure)
1625
+ return result
1626
+
1503
1627
  def getMultiLanguagePlainText(self, element: ET.Element, key: str) -> MultiLanguagePlainText:
1504
1628
  paragraph = None
1505
1629
  child_element = self.find(element, key)
@@ -1509,13 +1633,15 @@ class ARXMLParser(AbstractARXMLParser):
1509
1633
  for l10 in self.getLPlainTexts(child_element, "L-10"):
1510
1634
  paragraph.addL10(l10)
1511
1635
  return paragraph
1512
-
1636
+
1513
1637
  def readDocumentationBlock(self, element: ET.Element, block: DocumentationBlock):
1514
1638
  self.readARObjectAttributes(element, block)
1515
1639
  for paragraph in self.getMultiLanguageParagraphs(element, "P"):
1516
1640
  block.addP(paragraph)
1517
1641
  for list in self.getListElements(element, "LIST"):
1518
1642
  block.addList(list)
1643
+ for figure in self.getMlFigures(element, "FIGURE"):
1644
+ block.addFigure(figure)
1519
1645
 
1520
1646
  def getDocumentationBlock(self, element: ET.Element, key: str) -> DocumentationBlock:
1521
1647
  block = None
@@ -1631,7 +1757,7 @@ class ARXMLParser(AbstractARXMLParser):
1631
1757
  self.readAutosarDataType(element, data_type)
1632
1758
 
1633
1759
  def readApplicationRecordElement(self, element: ET.Element, record_element: ApplicationRecordElement):
1634
- self.logger.debug("read ApplicationRecordElement %s" % record_element.getShortName())
1760
+ # self.logger.debug("Read ApplicationRecordElement %s" % record_element.getShortName())
1635
1761
  self.readApplicationCompositeElementDataPrototype(element, record_element)
1636
1762
 
1637
1763
  def readApplicationRecordDataTypeElements(self, element: ET.Element, parent: ApplicationRecordDataType):
@@ -1690,7 +1816,7 @@ class ARXMLParser(AbstractARXMLParser):
1690
1816
  return iref
1691
1817
 
1692
1818
  def getCompositeNetworkRepresentation(self, element: ET.Element) -> CompositeNetworkRepresentation:
1693
- self.logger.debug("getCompositeNetworkRepresentation")
1819
+ # self.logger.debug("getCompositeNetworkRepresentation")
1694
1820
  representation = CompositeNetworkRepresentation()
1695
1821
  representation.setLeafElementIRef(self.getApplicationCompositeElementInPortInterfaceInstanceRef(element, "LEAF-ELEMENT-IREF")) \
1696
1822
  .setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION"))
@@ -1721,7 +1847,7 @@ class ARXMLParser(AbstractARXMLParser):
1721
1847
  value_list = None
1722
1848
  child_element = self.find(element, key)
1723
1849
  if child_element is not None:
1724
- self.logger.debug("getValueList %s" % key)
1850
+ # self.logger.debug("Get ValueList %s" % key)
1725
1851
  value_list = ValueList()
1726
1852
  self.readARObjectAttributes(child_element, value_list)
1727
1853
  value_list.setV(self.getChildElementOptionalFloatValue(child_element, "V"))
@@ -1731,7 +1857,7 @@ class ARXMLParser(AbstractARXMLParser):
1731
1857
  cont = None
1732
1858
  child_element = self.find(element, "SW-VALUE-CONT")
1733
1859
  if child_element is not None:
1734
- self.logger.debug("getSwValueCont")
1860
+ # self.logger.debug("Get SwValueCont")
1735
1861
  cont = SwValueCont()
1736
1862
  self.readARObjectAttributes(child_element, cont)
1737
1863
  cont.setUnitRef(self.getChildElementOptionalRefType(child_element, "UNIT-REF")) \
@@ -1813,7 +1939,7 @@ class ARXMLParser(AbstractARXMLParser):
1813
1939
  self.readProvidedComSpec(element, prototype)
1814
1940
 
1815
1941
  def readPPortPrototype(self, element: ET.Element, prototype: PPortPrototype):
1816
- self.logger.debug("Read PPortPrototype %s" % prototype.getShortName())
1942
+ # self.logger.debug("Read PPortPrototype %s" % prototype.getShortName())
1817
1943
  self.readIdentifiable(element, prototype)
1818
1944
  self.readAbstractRequiredPortPrototype(element, prototype)
1819
1945
  prototype.setProvidedInterfaceTRef(self.getChildElementOptionalRefType(element, "PROVIDED-INTERFACE-TREF"))
@@ -1822,13 +1948,13 @@ class ARXMLParser(AbstractARXMLParser):
1822
1948
  self.readRequiredComSpec(element, prototype)
1823
1949
 
1824
1950
  def readRPortPrototype(self, element: ET.Element, prototype: RPortPrototype):
1825
- self.logger.debug("Read RPortPrototype %s" % prototype.getShortName())
1951
+ # self.logger.debug("Read RPortPrototype %s" % prototype.getShortName())
1826
1952
  self.readIdentifiable(element, prototype)
1827
1953
  self.readAbstractProvidedPortPrototype(element, prototype)
1828
1954
  prototype.setRequiredInterfaceTRef(self.getChildElementOptionalRefType(element, "REQUIRED-INTERFACE-TREF"))
1829
1955
 
1830
1956
  def readPRPortPrototype(self, element: ET.Element, prototype: PRPortPrototype):
1831
- self.logger.debug("Read PRPortPrototype %s" % prototype.getShortName())
1957
+ # self.logger.debug("Read PRPortPrototype %s" % prototype.getShortName())
1832
1958
  self.readIdentifiable(element, prototype)
1833
1959
  self.readAbstractRequiredPortPrototype(element, prototype)
1834
1960
  self.readAbstractProvidedPortPrototype(element, prototype)
@@ -1975,6 +2101,7 @@ class ARXMLParser(AbstractARXMLParser):
1975
2101
  p_port_in_composition_instance_ref.setContextComponentRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPONENT-REF")) \
1976
2102
  .setTargetPPortRef(self.getChildElementOptionalRefType(element, "TARGET-P-PORT-REF"))
1977
2103
 
2104
+ '''
1978
2105
  self.logger.debug("PPortInCompositionInstanceRef")
1979
2106
  self.logger.debug(" CONTEXT-COMPONENT-REF DEST: %s, %s"
1980
2107
  % (p_port_in_composition_instance_ref.getContextComponentRef().getDest(),
@@ -1982,11 +2109,13 @@ class ARXMLParser(AbstractARXMLParser):
1982
2109
  self.logger.debug(" TARGET-P-PORT-REF DEST: %s, %s"
1983
2110
  % (p_port_in_composition_instance_ref.getTargetPPortRef().getDest(),
1984
2111
  p_port_in_composition_instance_ref.getTargetPPortRef().getValue()))
2112
+ '''
1985
2113
 
1986
2114
  def readRPortInCompositionInstanceRef(self, element, r_port_in_composition_instance_ref: RPortInCompositionInstanceRef):
1987
2115
  r_port_in_composition_instance_ref.setContextComponentRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPONENT-REF")) \
1988
2116
  .setTargetRPortRef(self.getChildElementOptionalRefType(element, "TARGET-R-PORT-REF"))
1989
2117
 
2118
+ '''
1990
2119
  self.logger.debug("RPortInCompositionInstanceRef")
1991
2120
  self.logger.debug(" CONTEXT-COMPONENT-REF DEST: %s, %s"
1992
2121
  % (r_port_in_composition_instance_ref.getContextComponentRef().getDest(),
@@ -1994,6 +2123,7 @@ class ARXMLParser(AbstractARXMLParser):
1994
2123
  self.logger.debug(" TARGET-P-PORT-REF DEST: %s, %s"
1995
2124
  % (r_port_in_composition_instance_ref.getTargetRPortRef().getDest(),
1996
2125
  r_port_in_composition_instance_ref.getTargetRPortRef().getValue()))
2126
+ '''
1997
2127
 
1998
2128
  def readAssemblySwConnectorProviderIRef(self, element: ET.Element, parent: AssemblySwConnector):
1999
2129
  child_element = self.find(element, "PROVIDER-IREF")
@@ -2016,7 +2146,7 @@ class ARXMLParser(AbstractARXMLParser):
2016
2146
  connector.setMappingRef(self.getChildElementOptionalRefType(element, "MAPPING-REF"))
2017
2147
 
2018
2148
  def readAssemblySwConnector(self, element: ET.Element, connector: AssemblySwConnector):
2019
- self.logger.debug("Read AssemblySwConnectors %s" % connector.getShortName())
2149
+ # self.logger.debug("Read AssemblySwConnectors %s" % connector.getShortName())
2020
2150
  self.readSwConnector(element, connector)
2021
2151
  self.readAssemblySwConnectorProviderIRef(element, connector)
2022
2152
  self.readAssemblySwConnectorRequesterIRef(element, connector)
@@ -2053,7 +2183,7 @@ class ARXMLParser(AbstractARXMLParser):
2053
2183
  self.raiseError("Unsupported child element of INNER-PORT-IREF")
2054
2184
 
2055
2185
  def readDelegationSwConnector(self, element, connector: DelegationSwConnector):
2056
- self.logger.debug("Read DelegationSwConnectors %s" % connector.getShortName())
2186
+ # self.logger.debug("Read DelegationSwConnectors %s" % connector.getShortName())
2057
2187
  self.readSwConnector(element, connector)
2058
2188
  self.readDelegationSwConnectorInnerPortIRef(element, connector)
2059
2189
 
@@ -2061,7 +2191,7 @@ class ARXMLParser(AbstractARXMLParser):
2061
2191
  self.raiseError("Invalid PortPrototype of DELEGATION-SW-CONNECTOR")
2062
2192
 
2063
2193
  connector.setOuterPortRef(self.getChildElementOptionalRefType(element, "OUTER-PORT-REF"))
2064
- self.logger.debug("OUTER-PORT-REF DEST: %s, %s" % (connector.getOuterPortRef().getDest(), connector.getOuterPortRef().getValue()))
2194
+ # self.logger.debug("OUTER-PORT-REF DEST: %s, %s" % (connector.getOuterPortRef().getDest(), connector.getOuterPortRef().getValue()))
2065
2195
 
2066
2196
  def readSwComponentPrototype(self, element: ET.Element, prototype: SwComponentPrototype):
2067
2197
  self.logger.debug("Read SwComponentPrototypes <%s>" % prototype.getShortName())
@@ -2079,7 +2209,6 @@ class ARXMLParser(AbstractARXMLParser):
2079
2209
 
2080
2210
  def readCompositionSwComponentTypeDataTypeMappingSet(self, element: ET.Element, parent: CompositionSwComponentType):
2081
2211
  child_element = self.find(element, "DATA-TYPE-MAPPING-REFS")
2082
- self.logger.debug("readDataTypeMappingSet")
2083
2212
  if child_element is not None:
2084
2213
  for ref in self.getChildElementRefTypeList(child_element, "DATA-TYPE-MAPPING-REF"):
2085
2214
  parent.addDataTypeMapping(ref)
@@ -2213,7 +2342,7 @@ class ARXMLParser(AbstractARXMLParser):
2213
2342
  self.readParameterInterfaceParameters(element, interface)
2214
2343
 
2215
2344
  def readClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
2216
- self.logger.debug("Read readClientServerInterface <%s>" % cs_interface.getShortName())
2345
+ self.logger.debug("Read ClientServerInterface <%s>" % cs_interface.getShortName())
2217
2346
  self.readPortInterface(element, cs_interface)
2218
2347
  self.readClientServerInterfaceOperations(element, cs_interface)
2219
2348
  self.readPossibleErrors(element, cs_interface)
@@ -2248,7 +2377,7 @@ class ARXMLParser(AbstractARXMLParser):
2248
2377
  def readCompuConst(self, element: ET.Element, parent: CompuScale):
2249
2378
  child_element = self.find(element, "COMPU-CONST/VT")
2250
2379
  if (child_element is not None):
2251
- self.logger.debug("readCompuConst VT: %s" % child_element.text)
2380
+ # self.logger.debug("Read CompuConst VT: %s" % child_element.text)
2252
2381
  contents = CompuScaleConstantContents()
2253
2382
  contents.compuConst = CompuConst()
2254
2383
  contents.compuConst.compuConstContentType = CompuConstTextContent()
@@ -2258,13 +2387,13 @@ class ARXMLParser(AbstractARXMLParser):
2258
2387
 
2259
2388
  def readCompuNominatorDenominator(self, element: ET.Element, key: str, parent: CompuNominatorDenominator):
2260
2389
  for child_element in self.findall(element, "%s/V" % key):
2261
- self.logger.debug("readCompuNominatorDenominator - %s: %s" % (key, child_element.text))
2390
+ # self.logger.debug("Read CompuNominatorDenominator - %s: %s" % (key, child_element.text))
2262
2391
  parent.add_v(child_element.text)
2263
2392
 
2264
2393
  def readCompuRationCoeffs(self, element: ET.Element, parent: CompuScale):
2265
2394
  child_element = self.find(element, "COMPU-RATIONAL-COEFFS")
2266
2395
  if (child_element is not None):
2267
- self.logger.debug("readCompuRationCoeffs")
2396
+ # self.logger.debug("Read CompuRationCoeffs")
2268
2397
  contents = CompuScaleRationalFormula()
2269
2398
  contents.compuRationalCoeffs = CompuRationalCoeffs()
2270
2399
  contents.compuRationalCoeffs.compuDenominator = CompuNominatorDenominator()
@@ -2308,7 +2437,7 @@ class ARXMLParser(AbstractARXMLParser):
2308
2437
  return compu
2309
2438
 
2310
2439
  def readCompuMethod(self, element: ET.Element, compu_method: CompuMethod):
2311
- self.logger.debug("Read CompuMethods <%s>" % compu_method.getShortName())
2440
+ self.logger.debug("Read CompuMethod <%s>" % compu_method.getShortName())
2312
2441
  self.readIdentifiable(element, compu_method)
2313
2442
  compu_method.setUnitRef(self.getChildElementOptionalRefType(element, "UNIT-REF")) \
2314
2443
  .setCompuInternalToPhys(self.getCompu(element, "COMPU-INTERNAL-TO-PHYS")) \
@@ -2322,7 +2451,7 @@ class ARXMLParser(AbstractARXMLParser):
2322
2451
  parent.addRunnableMapping(mapping)
2323
2452
 
2324
2453
  def readSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
2325
- self.logger.debug("read SwcBswMappings %s" % mapping.getShortName())
2454
+ self.logger.debug("Read SwcBswMapping <%s>" % mapping.getShortName())
2326
2455
  self.readIdentifiable(element, mapping)
2327
2456
  mapping.setBswBehaviorRef(self.getChildElementOptionalRefType(element, "BSW-BEHAVIOR-REF"))
2328
2457
  self.readSwcBswMappingSwcBswRunnableMappings(element, mapping)
@@ -2349,7 +2478,7 @@ class ARXMLParser(AbstractARXMLParser):
2349
2478
  return value_spec
2350
2479
 
2351
2480
  def getTextValueSpecification(self, element: ET.Element) -> TextValueSpecification:
2352
- self.logger.debug("getTextValueSpecification")
2481
+ # self.logger.debug("Get TextValueSpecification")
2353
2482
  value_spec = TextValueSpecification()
2354
2483
  self.readValueSpecification(element, value_spec)
2355
2484
  value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
@@ -2357,7 +2486,7 @@ class ARXMLParser(AbstractARXMLParser):
2357
2486
  return value_spec
2358
2487
 
2359
2488
  def getArrayValueSpecification(self, element: ET.Element) -> ArrayValueSpecification:
2360
- self.logger.debug("getArrayValueSpecification")
2489
+ # self.logger.debug("Get ArrayValueSpecification")
2361
2490
  value_spec = ArrayValueSpecification()
2362
2491
  self.readValueSpecification(element, value_spec)
2363
2492
  child_elements = element.findall("./xmlns:ELEMENTS/*", self.nsmap)
@@ -2366,7 +2495,7 @@ class ARXMLParser(AbstractARXMLParser):
2366
2495
  return value_spec
2367
2496
 
2368
2497
  def getConstantReference(self, element: ET.Element) -> ConstantReference:
2369
- self.logger.debug("getConstantReference")
2498
+ # self.logger.debug("getConstantReference")
2370
2499
  value_spec = ConstantReference()
2371
2500
  self.readValueSpecification(element, value_spec)
2372
2501
  value_spec.setConstantRef(self.getChildElementOptionalRefType(element, "CONSTANT-REF"))
@@ -2400,7 +2529,7 @@ class ARXMLParser(AbstractARXMLParser):
2400
2529
  return value_spec
2401
2530
 
2402
2531
  def readConstantSpecification(self, element: ET.Element, spec: ConstantSpecification):
2403
- self.logger.debug("readConstantSpecification %s" % spec.getShortName())
2532
+ self.logger.debug("Read ConstantSpecification <%s>" % spec.getShortName())
2404
2533
  self.readIdentifiable(element, spec)
2405
2534
  for child_element in self.findall(element, "VALUE-SPEC/*"):
2406
2535
  spec.setValueSpec(self.getValueSpecification(child_element, self.getTagName(child_element)))
@@ -2415,7 +2544,7 @@ class ARXMLParser(AbstractARXMLParser):
2415
2544
  parent.internalConstrs = constrs
2416
2545
 
2417
2546
  def readPhysConstrs(self, element: ET.Element, parent: DataConstrRule):
2418
- child_element = element.find("./xmlns:PHYS-CONSTRS", self.nsmap)
2547
+ child_element = self.find(element, "PHYS-CONSTRS")
2419
2548
  if child_element is not None:
2420
2549
  constrs = PhysConstrs()
2421
2550
  self.readARObjectAttributes(child_element, constrs)
@@ -2425,8 +2554,8 @@ class ARXMLParser(AbstractARXMLParser):
2425
2554
  parent.physConstrs = constrs
2426
2555
 
2427
2556
  def readDataConstrRule(self, element: ET.Element, parent: DataConstr):
2428
- for child_element in element.findall("./xmlns:DATA-CONSTR-RULES/xmlns:DATA-CONSTR-RULE", self.nsmap):
2429
- self.logger.debug("readDataConstrRule")
2557
+ for child_element in self.findall(element, "DATA-CONSTR-RULES/DATA-CONSTR-RULE"):
2558
+ # self.logger.debug("Read DataConstrRule")
2430
2559
  rule = DataConstrRule()
2431
2560
  self.readARObjectAttributes(child_element, rule)
2432
2561
  rule.constrLevel = self.getChildElementOptionalNumericalValue(child_element, "CONSTR-LEVEL")
@@ -2435,7 +2564,7 @@ class ARXMLParser(AbstractARXMLParser):
2435
2564
  parent.addDataConstrRule(rule)
2436
2565
 
2437
2566
  def readDataConstr(self, element: ET.Element, constr: DataConstr):
2438
- self.logger.debug("Read DataConstr <%s>" % constr.getShortName())
2567
+ # self.logger.debug("Read DataConstr <%s>" % constr.getShortName())
2439
2568
  self.readIdentifiable(element, constr)
2440
2569
  self.readDataConstrRule(element, constr)
2441
2570
 
@@ -4069,10 +4198,55 @@ class ARXMLParser(AbstractARXMLParser):
4069
4198
 
4070
4199
  def readDataTransformationSet(self, element: ET.Element, dtf_set: DataTransformationSet):
4071
4200
  self.logger.debug("Read DataTransformationSet <%s>" % dtf_set.getShortName())
4072
- self.readIdentifiable(element, dtf_set)
4201
+ self.readARElement(element, dtf_set)
4073
4202
  self.readDataTransformationSetDataTransformations(element, dtf_set)
4074
4203
  self.readDataTransformationSetTransformationTechnologies(element, dtf_set)
4075
4204
 
4205
+ def readCollectionElementRefs(self, element: ET.Element, collection: Collection):
4206
+ for ref in self.getChildElementRefTypeList(element, "ELEMENT-REFS/ELEMENT-REF"):
4207
+ collection.addElementRef(ref)
4208
+
4209
+ def readCollectionSourceElementRefs(self, element: ET.Element, collection: Collection):
4210
+ for ref in self.getChildElementRefTypeList(element, "SOURCE-ELEMENT-REFS/SOURCE-ELEMENT-REF"):
4211
+ collection.addSourceElementRef(ref)
4212
+
4213
+ def readCollection(self, element: ET.Element, collection: Collection):
4214
+ self.logger.debug("Read Collection <%s>" % collection.getShortName())
4215
+ self.readARElement(element, collection)
4216
+ collection.setAutoCollect(self.getChildElementOptionalLiteral(element, "AUTO-COLLECT")) \
4217
+ .setElementRole(self.getChildElementOptionalLiteral(element, "ELEMENT-ROLE"))
4218
+ self.readCollectionElementRefs(element, collection)
4219
+ self.readCollectionSourceElementRefs(element, collection)
4220
+
4221
+ def readKeywordClassifications(self, element: ET.Element, keyword: Keyword):
4222
+ for literal in self.getChildElementLiteralValueList(element, "CLASSIFICATIONS/CLASSIFICATION"):
4223
+ keyword.addClassification(literal)
4224
+
4225
+ def readKeyword(self, element: ET.Element, keyword: Keyword):
4226
+ # self.logger.debug("Read Keyword <%s>" % keyword.getShortName())
4227
+ self.readIdentifiable(element, keyword)
4228
+ keyword.setAbbrName(self.getChildElementOptionalLiteral(element, "ABBR-NAME"))
4229
+ self.readKeywordClassifications(element, keyword)
4230
+
4231
+ def readKeywordSetKeywords(self, element: ET.Element, keyword_set: KeywordSet):
4232
+ for child_element in self.findall(element, "KEYWORDS/*"):
4233
+ tag_name = self.getTagName(child_element)
4234
+ if tag_name == "KEYWORD":
4235
+ tech = keyword_set.createKeyword(self.getShortName(child_element))
4236
+ self.readKeyword(child_element, tech)
4237
+ else:
4238
+ self.notImplemented("Unsupported Keyword <%s>" % tag_name)
4239
+
4240
+ def readKeywordSet(self, element: ET.Element, keyword_set: KeywordSet):
4241
+ self.logger.debug("Read KeywordSet <%s>" % keyword_set.getShortName())
4242
+ self.readARElement(element, keyword_set)
4243
+ self.readKeywordSetKeywords(element, keyword_set)
4244
+
4245
+ def readPortPrototypeBlueprint(self, element: ET.Element, blueprint: PortPrototypeBlueprint):
4246
+ self.logger.debug("Read PortPrototypeBlueprint <%s>" % blueprint.getShortName())
4247
+ self.readARElement(element, blueprint)
4248
+ blueprint.setInterfaceRef(self.getChildElementOptionalRefType(element, "INTERFACE-REF"))
4249
+
4076
4250
  def readCommunicationController(self, element: ET.Element, controller: CommunicationController):
4077
4251
  controller.setWakeUpByControllerSupported(self.getChildElementOptionalBooleanValue(element, "WAKE-UP-BY-CONTROLLER-SUPPORTED"))
4078
4252
 
@@ -4525,20 +4699,10 @@ class ARXMLParser(AbstractARXMLParser):
4525
4699
  dimension.setLengthExp(self.getChildElementOptionalNumericalValue(element, "LENGTH-EXP")) \
4526
4700
  .setLuminousIntensityExp(self.getChildElementOptionalNumericalValue(element, "LUMINOUS-INTENSITY-EXP")) \
4527
4701
  .setMassExp(self.getChildElementOptionalNumericalValue(element, "MASS-EXP")) \
4702
+ .setMolarAmountExp(self.getChildElementOptionalNumericalValue(element, "MOLAR-AMOUNT-EXP")) \
4528
4703
  .setTemperatureExp(self.getChildElementOptionalNumericalValue(element, "TEMPERATURE-EXP")) \
4529
4704
  .setTimeExp(self.getChildElementOptionalNumericalValue(element, "TIME-EXP")) \
4530
- .setCurrentExp(self.getChildElementOptionalNumericalValue(element, "CURRENT-EXP")) \
4531
-
4532
- '''
4533
- def getIPduMappings(self, element: ET.Element) -> List[IPduMapping]:
4534
- mappings = []
4535
- for child_element in self.findall(element, tag_name):
4536
- mapping = IPduMapping()
4537
- mapping.sourceIPduRef = self.getChildElementOptionalRefType(child_element, "SOURCE-IPDU-REF")
4538
- mapping.targetIPduRef = self.getChildElementOptionalRefType(child_element, "TARGET-IPDU-REF")
4539
- mappings.append(mapping)
4540
- return mappings
4541
- '''
4705
+ .setCurrentExp(self.getChildElementOptionalNumericalValue(element, "CURRENT-EXP"))
4542
4706
 
4543
4707
  def readISignalGroupISignalRef(self, element: ET.Element, group: ISignalGroup):
4544
4708
  for ref_type in self.getChildElementRefTypeList(element, "I-SIGNAL-REFS/I-SIGNAL-REF"):
@@ -4657,7 +4821,7 @@ class ARXMLParser(AbstractARXMLParser):
4657
4821
  timing = None
4658
4822
  child_element = self.find(element, key)
4659
4823
  if child_element is not None:
4660
- self.logger.debug("Get TransmissionModeTiming of <%s>" % key)
4824
+ # self.logger.debug("Get TransmissionModeTiming of <%s>" % key)
4661
4825
  timing = TransmissionModeTiming()
4662
4826
  timing.setCyclicTiming(self.getCyclicTiming(child_element, "CYCLIC-TIMING")) \
4663
4827
  .setEventControlledTiming(self.getEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING"))
@@ -4766,7 +4930,7 @@ class ARXMLParser(AbstractARXMLParser):
4766
4930
  self.notImplemented("Unsupported Data Mapping %s" % tag_name)
4767
4931
 
4768
4932
  def readSwcToEcuMapping(self, element: ET.Element, mapping: SwcToEcuMapping):
4769
- self.logger.debug("SwcToEcuMapping %s" % mapping.getShortName())
4933
+ # self.logger.debug("SwcToEcuMapping %s" % mapping.getShortName())
4770
4934
  self.readIdentifiable(element, mapping)
4771
4935
  for child_element in self.findall(element, "COMPONENT-IREFS/COMPONENT-IREF"):
4772
4936
  mapping.addComponentIRef(self.getComponentInSystemInstanceRef(child_element))
@@ -4811,7 +4975,7 @@ class ARXMLParser(AbstractARXMLParser):
4811
4975
  self.notImplemented("Unsupported SwImplMapping <%s>" % tag_name)
4812
4976
 
4813
4977
  def readSystemMapping(self, element: ET.Element, mapping: SystemMapping):
4814
- self.logger.debug("SystemMapping %s" % mapping.getShortName())
4978
+ # self.logger.debug("Read SystemMapping <%s>" % mapping.getShortName())
4815
4979
  self.readIdentifiable(element, mapping)
4816
4980
  self.readSystemMappingDataMappings(element, mapping)
4817
4981
  self.readSystemMappingEcuResourceMappings(element, mapping)
@@ -4856,9 +5020,42 @@ class ARXMLParser(AbstractARXMLParser):
4856
5020
  self.logger.debug("Read GenericEthernetFrame <%s>" % frame.getShortName())
4857
5021
  self.readFrame(element, frame)
4858
5022
 
5023
+ def getLifeCyclePeriod(self, element: ET.Element, key: str) -> LifeCyclePeriod:
5024
+ child_element = self.find(element, key)
5025
+ period = None
5026
+ if child_element is not None:
5027
+ period = LifeCyclePeriod()
5028
+ period.setArReleaseVersion(self.getChildElementOptionalRevisionLabelString(child_element, "AR-RELEASE-VERSION"))
5029
+ return period
5030
+
5031
+ def readLifeCycleInfoUseInsteadRefs(self, element: ET.Element, info: LifeCycleInfo):
5032
+ for ref in self.getChildElementRefTypeList(element, "USE-INSTEAD-REFS/USE-INSTEAD-REF"):
5033
+ info.addUseInsteadRef(ref)
5034
+
5035
+ def readLifeCycleInfo(self, element: ET.Element, info: LifeCycleInfo):
5036
+ self.readARObjectAttributes(element, info)
5037
+ info.setLcObjectRef(self.getChildElementOptionalRefType(element, "LC-OBJECT-REF")) \
5038
+ .setLcStateRef(self.getChildElementOptionalRefType(element, "LC-STATE-REF")) \
5039
+ .setPeriodBegin(self.getLifeCyclePeriod(element, "PERIOD-BEGIN")) \
5040
+ .setRemark(self.getDocumentationBlock(element, "REMARK"))
5041
+ self.readLifeCycleInfoUseInsteadRefs(element, info)
5042
+
5043
+ def readLifeCycleInfoSetLifeCycleInfos(self, element: ET.Element, info_set: LifeCycleInfoSet):
5044
+ for child_element in self.findall(element, "LIFE-CYCLE-INFOS/*"):
5045
+ tag_name = self.getTagName(child_element)
5046
+ if tag_name == "LIFE-CYCLE-INFO":
5047
+ info = LifeCycleInfo()
5048
+ self.readLifeCycleInfo(child_element, info)
5049
+ info_set.addLifeCycleInfo(info)
5050
+ else:
5051
+ self.notImplemented("Unsupported Life Cycle Info <%s>" % tag_name)
5052
+
4859
5053
  def readLifeCycleInfoSet(self, element: ET.Element, info_set: LifeCycleInfoSet):
4860
5054
  self.logger.debug("Read LifeCycleInfoSet <%s>" % info_set.getShortName())
4861
5055
  self.readIdentifiable(element, info_set)
5056
+ info_set.setDefaultLcStateRef(self.getChildElementOptionalRefType(element, "DEFAULT-LC-STATE-REF"))
5057
+ self.readLifeCycleInfoSetLifeCycleInfos(element, info_set)
5058
+ info_set.setUsedLifeCycleStateDefinitionGroupRef(self.getChildElementOptionalRefType(element, "USED-LIFE-CYCLE-STATE-DEFINITION-GROUP-REF"))
4862
5059
 
4863
5060
  def readFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
4864
5061
  self.logger.debug("Read LifeCycleInfoSet %s" % desc.getShortName())
@@ -4889,18 +5086,40 @@ class ARXMLParser(AbstractARXMLParser):
4889
5086
  mappings.append(mapping)
4890
5087
  return mappings
4891
5088
 
4892
- def getVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
4893
- self.logger.debug("get VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
5089
+ def readVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
5090
+ # self.logger.debug("Read VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
4894
5091
  self.readIdentifiable(element, mapping)
4895
5092
  for item in self.getDataPrototypeMappings(element, "DATA-MAPPINGS"):
4896
5093
  mapping.addDataMapping(item)
4897
5094
 
5095
+ def readClientServerOperationMapping(self, element: ET.Element, mapping: ClientServerOperationMapping):
5096
+ mapping.setFirstOperationRef(self.getChildElementOptionalRefType(element, "FIRST-OPERATION-REF")) \
5097
+ .setSecondOperationRef(self.getChildElementOptionalRefType(element, "SECOND-OPERATION-REF"))
5098
+
5099
+ def readClientServerInterfaceMappingOperationMappings(self, element: ET.Element, mapping: ClientServerInterfaceMapping):
5100
+ for child_element in self.findall(element, "OPERATION-MAPPINGS/*"):
5101
+ tag_name = self.getTagName(child_element)
5102
+ if tag_name == "CLIENT-SERVER-OPERATION-MAPPING":
5103
+ operation_mapping = ClientServerOperationMapping()
5104
+ self.readClientServerOperationMapping(child_element, operation_mapping)
5105
+ mapping.addOperationMapping(operation_mapping)
5106
+ else:
5107
+ self.notImplemented("Unsupported Operation Mapping <%s>" % tag_name)
5108
+
5109
+ def readClientServerInterfaceMapping(self, element: ET.Element, mapping: ClientServerInterfaceMapping):
5110
+ # self.logger.debug("Read ClientServerInterfaceMapping %s" % mapping.getShortName())
5111
+ self.readIdentifiable(element, mapping)
5112
+ self.readClientServerInterfaceMappingOperationMappings(element, mapping)
5113
+
4898
5114
  def readPortInterfaceMappings(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
4899
5115
  for child_element in self.findall(element, "PORT-INTERFACE-MAPPINGS/*"):
4900
5116
  tag_name = self.getTagName(child_element)
4901
5117
  if tag_name == "VARIABLE-AND-PARAMETER-INTERFACE-MAPPING":
4902
5118
  mapping = mapping_set.createVariableAndParameterInterfaceMapping(self.getShortName(child_element))
4903
- self.getVariableAndParameterInterfaceMapping(child_element, mapping)
5119
+ self.readVariableAndParameterInterfaceMapping(child_element, mapping)
5120
+ elif tag_name == "CLIENT-SERVER-INTERFACE-MAPPING":
5121
+ mapping = mapping_set.createClientServerInterfaceMapping(self.getShortName(child_element))
5122
+ self.readClientServerInterfaceMapping(child_element, mapping)
4904
5123
  else:
4905
5124
  self.notImplemented("Unsupported PortInterfaceMapping <%s>" % tag_name)
4906
5125
 
@@ -5137,8 +5356,17 @@ class ARXMLParser(AbstractARXMLParser):
5137
5356
  elif tag_name == "DATA-TRANSFORMATION-SET":
5138
5357
  transformation_set = parent.createDataTransformationSet(self.getShortName(child_element))
5139
5358
  self.readDataTransformationSet(child_element, transformation_set)
5359
+ elif tag_name == "COLLECTION":
5360
+ collection = parent.createCollection(self.getShortName(child_element))
5361
+ self.readCollection(child_element, collection)
5362
+ elif tag_name == "KEYWORD-SET":
5363
+ keyword_set = parent.createKeywordSet(self.getShortName(child_element))
5364
+ self.readKeywordSet(child_element, keyword_set)
5365
+ elif tag_name == "PORT-PROTOTYPE-BLUEPRINT":
5366
+ keyword_set = parent.createPortPrototypeBlueprint(self.getShortName(child_element))
5367
+ self.readPortPrototypeBlueprint(child_element, keyword_set)
5140
5368
  else:
5141
- self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
5369
+ self.notImplemented("Unsupported Element type of ARPackage <%s>" % tag_name)
5142
5370
 
5143
5371
  def readReferenceBases(self, element: ET.Element, parent: ARPackage):
5144
5372
  for child_element in self.findall(element, "REFERENCE-BASES/REFERENCE-BASE"):
@@ -5151,7 +5379,7 @@ class ARXMLParser(AbstractARXMLParser):
5151
5379
  parent.addReferenceBase(base)
5152
5380
 
5153
5381
  def readARPackage(self, element: ET.Element, ar_package: ARPackage):
5154
- self.logger.debug("Read ARPackages %s" % ar_package.getFullName())
5382
+ self.logger.debug("Read ARPackages <%s>" % ar_package.getFullName())
5155
5383
 
5156
5384
  self.readIdentifiable(element, ar_package)
5157
5385
  self.readARPackages(element, ar_package)