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
@@ -17,21 +17,25 @@ from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, SwP
17
17
  from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayout, SwRecordLayoutGroup, SwRecordLayoutV
18
18
  from ..models.M2.MSR.DataDictionary.ServiceProcessTask import SwServiceArg
19
19
  from ..models.M2.MSR.Documentation.Annotation import Annotation
20
+ from ..models.M2.MSR.Documentation.BlockElements.Figure import Graphic, MlFigure
21
+ from ..models.M2.MSR.Documentation.TextModel.BlockElements.PaginationAndView import DocumentViewSelectable, Paginateable
20
22
  from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
21
- from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
23
+ from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ARList
22
24
  from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName, LPlainText, LanguageSpecific
23
25
  from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText
24
26
  from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultilanguageLongName
25
27
 
26
28
  from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
27
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswApiOptions, BswBackgroundEvent, BswCalledEntity, BswDataReceivedEvent, BswInternalTriggerOccurredEvent, BswOperationInvokedEvent
29
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswApiOptions, BswAsynchronousServerCallPoint, BswBackgroundEvent
30
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswDataReceivedEvent, BswModuleCallPoint
31
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalTriggerOccurredEvent, BswOperationInvokedEvent
28
32
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswDataReceptionPolicy, BswEvent, BswExternalTriggerOccurredEvent
29
33
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalBehavior, BswInterruptEntity, BswModeSenderPolicy, BswModuleEntity
30
34
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswQueuedDataReceptionPolicy, BswSchedulableEntity, BswScheduleEvent
31
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswTimingEvent, BswVariableAccess
35
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswTimingEvent, BswVariableAccess, BswInternalTriggeringPoint
32
36
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
33
37
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
34
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
38
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleClientServerEntry, BswModuleEntry
35
39
  from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference
36
40
  from ..models.M2.AUTOSARTemplates.CommonStructure import ConstantSpecification, NumericalValueSpecification, RecordValueSpecification
37
41
  from ..models.M2.AUTOSARTemplates.CommonStructure import TextValueSpecification, ValueSpecification
@@ -45,11 +49,14 @@ from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDec
45
49
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
46
50
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
47
51
  from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
48
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal
52
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DltUserNeeds, ServiceNeeds
53
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCapabilityElement, DtcStatusChangeNotificationNeeds
49
54
  from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds
50
55
  from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds
51
56
  from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment
52
57
  from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataTypeAssignment, ServiceDependency
58
+ from ..models.M2.AUTOSARTemplates.CommonStructure.StandardizationTemplate.Keyword import KeywordSet, Keyword
59
+ from ..models.M2.AUTOSARTemplates.CommonStructure.StandardizationTemplate.BlueprintDedicated.PortPrototypeBlueprint import PortPrototypeBlueprint
53
60
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
54
61
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef
55
62
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
@@ -61,12 +68,13 @@ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucReferenceVa
61
68
  from ..models.M2.AUTOSARTemplates.EcuResourceTemplate import HwDescriptionEntity, HwElement, HwPinGroup
62
69
  from ..models.M2.AUTOSARTemplates.EcuResourceTemplate.HwElementCategory import HwAttributeDef, HwCategory, HwType
63
70
  from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
71
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ElementCollection import Collection
64
72
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
65
73
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
66
74
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Describable, Identifiable
67
75
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Referrable, MultilanguageReferrable
68
76
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral, Limit
69
- from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
77
+ from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfo, LifeCycleInfoSet, LifeCyclePeriod
70
78
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest
71
79
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import TransmissionAcknowledgementRequest
72
80
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec
@@ -99,6 +107,7 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import
99
107
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionVariablePrototype
100
108
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
101
109
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ArgumentDataPrototype, ClientServerInterface
110
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ClientServerInterfaceMapping, ClientServerOperationMapping
102
111
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ClientServerOperation, DataInterface
103
112
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import DataPrototypeMapping, ModeSwitchInterface, ParameterInterface
104
113
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import PortInterface, PortInterfaceMappingSet, SenderReceiverInterface
@@ -312,7 +321,7 @@ class ARXMLWriter(AbstractARXMLWriter):
312
321
  self.setAnnotations(element, identifiable.getAnnotations())
313
322
  self.setMultiLanguageOverviewParagraph(element, "DESC", identifiable.getDesc())
314
323
  self.setChildElementOptionalLiteral(element, "CATEGORY", identifiable.getCategory())
315
- self.setDocumentationBlock(element, "INTRODUCTION", identifiable.getIntroduction())
324
+ self.writeDocumentationBlock(element, "INTRODUCTION", identifiable.getIntroduction())
316
325
  self.setAdminData(element, identifiable.getAdminData())
317
326
 
318
327
  def writeARElement(self, parent: ET.Element, ar_element: ARElement):
@@ -735,27 +744,57 @@ class ARXMLWriter(AbstractARXMLWriter):
735
744
  self.writeLParagraphs(child_element, paragraph)
736
745
  return paragraphs
737
746
 
738
- def setListElement(self, element: ET.Element, key: str, list: ListElement):
747
+ def setListElement(self, element: ET.Element, key: str, list: ARList):
739
748
  if list is not None:
740
749
  child_element = ET.SubElement(element, key)
741
750
  type = list.getType()
742
751
  if type is not None:
743
752
  child_element.attrib['TYPE'] = type
744
753
  for item in list.getItems():
745
- self.setDocumentationBlock(child_element, "ITEM", item)
754
+ self.writeDocumentationBlock(child_element, "ITEM", item)
746
755
 
747
- def setDocumentationBlock(self, element: ET.Element, key: str, block: DocumentationBlock):
756
+ def setGraphic(self, element: ET.Element, key: str, graphic: Graphic):
757
+ if graphic is not None:
758
+ child_element = ET.SubElement(element, key)
759
+ if graphic.getFilename() is not None:
760
+ child_element.attrib["FILENAME"] = graphic.getFilename()
761
+
762
+ def writeMlFigureLGraphics(self, element: ET.Element, figure: MlFigure):
763
+ graphics = figure.getLGraphics()
764
+ for graphic in graphics:
765
+ child_element = ET.SubElement(element, "L-GRAPHIC")
766
+ if graphic.getL() is not None:
767
+ child_element.attrib["L"] = graphic.getL()
768
+ self.setGraphic(child_element, "GRAPHIC", graphic.getGraphic())
769
+
770
+ def writeDocumentViewSelectable(self, element: ET.Element, selectable: DocumentViewSelectable):
771
+ self.writeARObjectAttributes(element, selectable)
772
+
773
+ def writePaginateable(self, element: ET.Element, paginateable: Paginateable):
774
+ self.writeDocumentViewSelectable(element, paginateable)
775
+
776
+ def writeMlFigure(self, element: ET.Element, figure: MlFigure):
777
+ self.writePaginateable(element, figure)
778
+ self.writeMlFigureLGraphics(element, figure)
779
+
780
+ def setMlFigures(self, element: ET.Element, key: str, figures: List[MlFigure]):
781
+ for figure in figures:
782
+ child_element = ET.SubElement(element, key)
783
+ self.writeMlFigure(child_element, figure)
784
+
785
+ def writeDocumentationBlock(self, element: ET.Element, key: str, block: DocumentationBlock):
748
786
  if block is not None:
749
787
  child_element = ET.SubElement(element, key)
750
788
  self.writeARObjectAttributes(child_element, block)
751
789
  self.setMultiLanguageParagraphs(child_element, "P", block.getPs())
752
790
  for list in block.getLists():
753
791
  self.setListElement(child_element, "LIST", list)
792
+ self.setMlFigures(child_element, "FIGURE", block.getFigures())
754
793
 
755
794
  def writeGeneralAnnotation(self, element: ET.Element, annotation: Annotation):
756
795
  self.setMultiLongName(element, "LABEL", annotation.getLabel())
757
796
  self.setChildElementOptionalLiteral(element, "ANNOTATION-ORIGIN", annotation.getAnnotationOrigin())
758
- self.setDocumentationBlock(element, "ANNOTATION-TEXT", annotation.getAnnotationText())
797
+ self.writeDocumentationBlock(element, "ANNOTATION-TEXT", annotation.getAnnotationText())
759
798
 
760
799
  def setAnnotations(self, element: ET.Element, annotations: List[Annotation]):
761
800
  if len(annotations) > 0:
@@ -813,11 +852,11 @@ class ARXMLWriter(AbstractARXMLWriter):
813
852
  self.writeARObjectAttributes(conditional_tag, props.conditional)
814
853
  self.setAnnotations(conditional_tag, props.getAnnotations())
815
854
  self.setChildElementOptionalRefType(conditional_tag, "BASE-TYPE-REF", props.getBaseTypeRef())
855
+ self.setChildElementOptionalRefType(conditional_tag, "SW-ADDR-METHOD-REF", props.getSwAddrMethodRef())
816
856
  self.setChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS", props.getSwCalibrationAccess())
817
857
  self.setChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF", props.getCompuMethodRef())
818
858
  self.setValueSpecification(conditional_tag, "INVALID-VALUE", props.getInvalidValue())
819
859
  self.setChildElementOptionalFloatValue(conditional_tag, "STEP-SIZE", props.getStepSize())
820
- self.setChildElementOptionalRefType(conditional_tag, "SW-ADDR-METHOD-REF", props.getSwAddrMethodRef())
821
860
  self.setChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF", props.getDataConstrRef())
822
861
  self.setChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", props.getImplementationDataTypeRef())
823
862
  self.setSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET", props.getSwCalprmAxisSet())
@@ -1538,10 +1577,13 @@ class ARXMLWriter(AbstractARXMLWriter):
1538
1577
  else:
1539
1578
  self.notImplemented("Unsupported Assigned Data <%s>" % type(data))
1540
1579
 
1541
- def setNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
1580
+ def writeServiceNeeds(self, element: ET.Element, needs: ServiceNeeds):
1581
+ self.writeIdentifiable(element, needs)
1582
+
1583
+ def writeNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
1542
1584
  child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
1543
1585
  self.logger.debug("write NvBlockNeeds %s" % needs.getShortName())
1544
- self.writeIdentifiable(child_element, needs)
1586
+ self.writeServiceNeeds(child_element, needs)
1545
1587
  self.setChildElementOptionalBooleanValue(child_element, "CALC-RAM-BLOCK-CRC", needs.getCalcRamBlockCrc())
1546
1588
  self.setChildElementOptionalBooleanValue(child_element, "CHECK-STATIC-BLOCK-ID", needs.getCheckStaticBlockId())
1547
1589
  self.setChildElementOptionalNumericalValue(child_element, "N-DATA-SETS", needs.getNDataSets())
@@ -1562,23 +1604,26 @@ class ARXMLWriter(AbstractARXMLWriter):
1562
1604
  self.setChildElementOptionalPositiveInteger(child_element, "WRITING-FREQUENCY", needs.getWritingFrequency())
1563
1605
  self.setChildElementOptionalLiteral(child_element, "WRITING-PRIORITY", needs.getWritingPriority())
1564
1606
 
1565
- def setDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
1607
+ def writeDiagnosticCapabilityElement(self, element: ET.Element, needs: DiagnosticCapabilityElement):
1608
+ self.writeServiceNeeds(element, needs)
1609
+
1610
+ def writeDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
1566
1611
  child_element = ET.SubElement(element, "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS")
1567
1612
  self.logger.debug("write DiagnosticCommunicationManagerNeeds %s" % needs.getShortName())
1568
- self.writeIdentifiable(child_element, needs)
1613
+ self.writeDiagnosticCapabilityElement(child_element, needs)
1569
1614
  self.setChildElementOptionalLiteral(child_element, "SERVICE-REQUEST-CALLBACK-TYPE", needs.getServiceRequestCallbackType())
1570
1615
 
1571
- def setDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
1616
+ def writeDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
1572
1617
  child_element = ET.SubElement(element, "DIAGNOSTIC-ROUTINE-NEEDS")
1573
1618
  self.logger.debug("write DiagnosticRoutineNeeds %s" % needs.getShortName())
1574
- self.writeIdentifiable(child_element, needs)
1619
+ self.writeDiagnosticCapabilityElement(child_element, needs)
1575
1620
  self.setChildElementOptionalLiteral(child_element, "DIAG-ROUTINE-TYPE", needs.getDiagRoutineType())
1576
1621
  self.setChildElementOptionalIntegerValue(child_element, "RID-NUMBER", needs.getRidNumber())
1577
1622
 
1578
- def setDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
1623
+ def writeDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
1579
1624
  child_element = ET.SubElement(element, "DIAGNOSTIC-VALUE-NEEDS")
1580
1625
  self.logger.debug("write DiagnosticValueNeeds %s" % needs.getShortName())
1581
- self.writeIdentifiable(child_element, needs)
1626
+ self.writeDiagnosticCapabilityElement(child_element, needs)
1582
1627
  self.setChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH", needs.getDataLength())
1583
1628
  self.setChildElementOptionalLiteral(child_element, "DIAGNOSTIC-VALUE-ACCESS", needs.getDiagnosticValueAccess())
1584
1629
  self.setChildElementOptionalIntegerValue(child_element, "DID-NUMBER", needs.getDidNumber())
@@ -1587,7 +1632,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1587
1632
 
1588
1633
  def setDiagEventDebounceMonitorInternal(self, element: ET.Element, algorithm: DiagEventDebounceMonitorInternal):
1589
1634
  child_element = ET.SubElement(element, "DIAG-EVENT-DEBOUNCE-MONITOR-INTERNAL")
1590
- self.writeIdentifiable(child_element, algorithm)
1635
+ self.writeDiagnosticCapabilityElement(child_element, algorithm)
1591
1636
 
1592
1637
  def writeDiagEventDebounceAlgorithm(self, element: ET.Element, needs: DiagnosticEventNeeds):
1593
1638
  algorithm = needs.getDiagEventDebounceAlgorithm()
@@ -1598,54 +1643,70 @@ class ARXMLWriter(AbstractARXMLWriter):
1598
1643
  else:
1599
1644
  self.notImplemented("Unsupported DiagEventDebounceAlgorithm <%s>" % type(algorithm))
1600
1645
 
1601
- def setDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
1646
+ def writeDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
1647
+ # self.logger.debug("Write DiagnosticEventNeeds %s" % needs.getShortName())
1602
1648
  child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-NEEDS")
1603
- self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
1604
- self.writeIdentifiable(child_element, needs)
1649
+ self.writeDiagnosticCapabilityElement(child_element, needs)
1605
1650
  self.writeDiagEventDebounceAlgorithm(child_element, needs)
1606
1651
  self.setChildElementOptionalLiteral(child_element, "DTC-KIND", needs.getDtcKind())
1607
1652
  self.setChildElementOptionalIntegerValue(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
1608
1653
 
1609
- def setDiagnosticEventInfoNeeds(self, element: ET.Element, needs: DiagnosticEventInfoNeeds):
1654
+ def writeDiagnosticEventInfoNeeds(self, element: ET.Element, needs: DiagnosticEventInfoNeeds):
1655
+ # self.logger.debug("Write DiagnosticEventNeeds %s" % needs.getShortName())
1610
1656
  child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-INFO-NEEDS")
1611
- self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
1612
- self.writeIdentifiable(child_element, needs)
1657
+ self.writeDiagnosticCapabilityElement(child_element, needs)
1658
+ self.setChildElementOptionalLiteral(child_element, "DTC-KIND", needs.getDtcKind())
1613
1659
  self.setChildElementOptionalPositiveInteger(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
1614
1660
 
1615
- def setCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
1661
+ def writeCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
1662
+ # self.logger.debug("Write CryptoServiceNeeds %s" % needs.getShortName())
1616
1663
  child_element = ET.SubElement(element, "CRYPTO-SERVICE-NEEDS")
1617
- self.logger.debug("write CryptoServiceNeeds %s" % needs.getShortName())
1618
- self.writeIdentifiable(child_element, needs)
1664
+ self.writeServiceNeeds(child_element, needs)
1619
1665
  self.setChildElementOptionalPositiveInteger(child_element, "MAXIMUM-KEY-LENGTH", needs.getMaximumKeyLength())
1620
1666
 
1621
- def setEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
1667
+ def writeEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
1668
+ # self.logger.debug("write EcuStateMgrUserNeeds %s" % needs.getShortName())
1622
1669
  child_element = ET.SubElement(element, "ECU-STATE-MGR-USER-NEEDS")
1623
- self.logger.debug("write EcuStateMgrUserNeeds %s" % needs.getShortName())
1624
- self.writeIdentifiable(child_element, needs)
1670
+ self.writeServiceNeeds(child_element, needs)
1671
+
1672
+ def writeDtcStatusChangeNotificationNeeds(self, element: ET.Element, needs: DtcStatusChangeNotificationNeeds):
1673
+ # self.logger.debug("Write DtcStatusChangeNotificationNeeds %s" % needs.getShortName())
1674
+ child_element = ET.SubElement(element, "DTC-STATUS-CHANGE-NOTIFICATION-NEEDS")
1675
+ self.writeDiagnosticCapabilityElement(child_element, needs)
1676
+ self.setChildElementOptionalLiteral(child_element, "DTC-FORMAT-TYPE", needs.getDtcFormatType())
1677
+
1678
+ def writeDltUserNeeds(self, element: ET.Element, needs: DtcStatusChangeNotificationNeeds):
1679
+ # self.logger.debug("Write DtcStatusChangeNotificationNeeds %s" % needs.getShortName())
1680
+ child_element = ET.SubElement(element, "DLT-USER-NEEDS")
1681
+ self.writeServiceNeeds(child_element, needs)
1625
1682
 
1626
1683
  def writeSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
1627
- needs = parent.getServiceNeeds()
1628
- if len(needs) > 0:
1684
+ needs_list = parent.getServiceNeeds()
1685
+ if len(needs_list) > 0:
1629
1686
  child_element = ET.SubElement(element, "SERVICE-NEEDS")
1630
- for need in needs:
1631
- if isinstance(need, NvBlockNeeds):
1632
- self.setNvBlockNeeds(child_element, need)
1633
- elif isinstance(need, DiagnosticCommunicationManagerNeeds):
1634
- self.setDiagnosticCommunicationManagerNeeds(child_element, need)
1635
- elif isinstance(need, DiagnosticRoutineNeeds):
1636
- self.setDiagnosticRoutineNeeds(child_element, need)
1637
- elif isinstance(need, DiagnosticValueNeeds):
1638
- self.setDiagnosticValueNeeds(child_element, need)
1639
- elif isinstance(need, DiagnosticEventNeeds):
1640
- self.setDiagnosticEventNeeds(child_element, need)
1641
- elif isinstance(need, DiagnosticEventInfoNeeds):
1642
- self.setDiagnosticEventInfoNeeds(child_element, need)
1643
- elif isinstance(need, CryptoServiceNeeds):
1644
- self.setCryptoServiceNeeds(child_element, need)
1645
- elif isinstance(need, EcuStateMgrUserNeeds):
1646
- self.setEcuStateMgrUserNeeds(child_element, need)
1687
+ for needs in needs_list:
1688
+ if isinstance(needs, NvBlockNeeds):
1689
+ self.writeNvBlockNeeds(child_element, needs)
1690
+ elif isinstance(needs, DiagnosticCommunicationManagerNeeds):
1691
+ self.writeDiagnosticCommunicationManagerNeeds(child_element, needs)
1692
+ elif isinstance(needs, DiagnosticRoutineNeeds):
1693
+ self.writeDiagnosticRoutineNeeds(child_element, needs)
1694
+ elif isinstance(needs, DiagnosticValueNeeds):
1695
+ self.writeDiagnosticValueNeeds(child_element, needs)
1696
+ elif isinstance(needs, DiagnosticEventNeeds):
1697
+ self.writeDiagnosticEventNeeds(child_element, needs)
1698
+ elif isinstance(needs, DiagnosticEventInfoNeeds):
1699
+ self.writeDiagnosticEventInfoNeeds(child_element, needs)
1700
+ elif isinstance(needs, CryptoServiceNeeds):
1701
+ self.writeCryptoServiceNeeds(child_element, needs)
1702
+ elif isinstance(needs, EcuStateMgrUserNeeds):
1703
+ self.writeEcuStateMgrUserNeeds(child_element, needs)
1704
+ elif isinstance(needs, DtcStatusChangeNotificationNeeds):
1705
+ self.writeDtcStatusChangeNotificationNeeds(child_element, needs)
1706
+ elif isinstance(needs, DltUserNeeds):
1707
+ self.writeDltUserNeeds(child_element, needs)
1647
1708
  else:
1648
- self.notImplemented("Unsupported service needs <%s>" % type(need))
1709
+ self.notImplemented("Unsupported service needs <%s>" % type(needs))
1649
1710
 
1650
1711
  def writeSwcServiceDependency(self, element: ET.Element, dependency: SwcServiceDependency):
1651
1712
  child_element = ET.SubElement(element, "SWC-SERVICE-DEPENDENCY")
@@ -1743,8 +1804,8 @@ class ARXMLWriter(AbstractARXMLWriter):
1743
1804
  self.setChildElementOptionalLiteral(artifact_desc_tag, "SHORT-LABEL", artifact_desc.short_label)
1744
1805
  self.setChildElementOptionalLiteral(artifact_desc_tag, "CATEGORY", artifact_desc.category)
1745
1806
 
1746
- def setCode(self, element: ET.SubElement, code_desc: Code):
1747
- self.logger.debug("setCode %s" % code_desc.getShortName())
1807
+ def writeCode(self, element: ET.SubElement, code_desc: Code):
1808
+ # self.logger.debug("Write Code %s" % code_desc.getShortName())
1748
1809
  child_element = ET.SubElement(element, "CODE")
1749
1810
  self.writeIdentifiable(child_element, code_desc)
1750
1811
  self.writeArtifactDescriptor(child_element, code_desc)
@@ -1755,7 +1816,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1755
1816
  child_element = ET.SubElement(element, "CODE-DESCRIPTORS")
1756
1817
  for desc in descs:
1757
1818
  if isinstance(desc, Code):
1758
- self.setCode(child_element, desc)
1819
+ self.writeCode(child_element, desc)
1759
1820
  else:
1760
1821
  self.notImplemented("Unsupported Code Descriptor <%s>" % type(desc))
1761
1822
 
@@ -2035,8 +2096,36 @@ class ARXMLWriter(AbstractARXMLWriter):
2035
2096
  cond_tag = ET.SubElement(child_element, "TRIGGER-REF-CONDITIONAL")
2036
2097
  self.setChildElementOptionalRefType(cond_tag, "TRIGGER-REF", ref)
2037
2098
 
2099
+ def writeBswModuleEntityActivationPointRefs(self, element: ET.Element, entity: BswModuleEntity):
2100
+ refs = entity.getActivationPointRefs()
2101
+ if len(refs) > 0:
2102
+ child_element = ET.SubElement(element, "ACTIVATION-POINTS")
2103
+ for ref in refs:
2104
+ cond_tag = ET.SubElement(child_element, "BSW-INTERNAL-TRIGGERING-POINT-REF-CONDITIONAL")
2105
+ self.setChildElementOptionalRefType(cond_tag, "BSW-INTERNAL-TRIGGERING-POINT-REF", ref)
2106
+
2107
+ def writeBswModuleCallPoint(self, element: ET.Element, point: BswModuleCallPoint):
2108
+ self.writeReferrable(element, point)
2109
+
2110
+ def writeBswAsynchronousServerCallPoint(self, element: ET.Element, point: BswAsynchronousServerCallPoint):
2111
+ child_element = ET.SubElement(element, "BSW-ASYNCHRONOUS-SERVER-CALL-POINT")
2112
+ self.writeBswModuleCallPoint(child_element, point)
2113
+ self.setChildElementOptionalRefType(child_element, "CALLED-ENTRY-REF", point.getCalledEntryRef())
2114
+
2115
+ def writeBswModuleEntityCallPoints(self, element: ET.Element, entity: BswModuleEntity):
2116
+ points = entity.getCallPoints()
2117
+ if len(points) > 0:
2118
+ child_element = ET.SubElement(element, "CALL-POINTS")
2119
+ for point in points:
2120
+ if isinstance(point, BswAsynchronousServerCallPoint):
2121
+ self.writeBswAsynchronousServerCallPoint(child_element, point)
2122
+ else:
2123
+ self.notImplemented("Unsupported Call Point <%s>" % type(point))
2124
+
2038
2125
  def writeBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
2039
2126
  self.writeExecutableEntity(element, entity)
2127
+ self.writeBswModuleEntityActivationPointRefs(element, entity)
2128
+ self.writeBswModuleEntityCallPoints(element, entity)
2040
2129
  self.writeBswModuleEntityDataSendPoints(element, entity)
2041
2130
  self.writeBswModuleEntityDataReceivePoints(element, entity)
2042
2131
  self.setChildElementOptionalRefType(element, "IMPLEMENTED-ENTRY-REF", entity.implementedEntryRef)
@@ -2060,7 +2149,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2060
2149
  self.setChildElementOptionalLiteral(child_element, "INTERRUPT-CATEGORY", entity.getInterruptCategory())
2061
2150
  self.setChildElementOptionalLiteral(child_element, "INTERRUPT-SOURCE", entity.getInterruptSource())
2062
2151
 
2063
- def writeBswInternalBehaviorBswModuleEntities(self, element: ET.Element, parent: BswInternalBehavior):
2152
+ def writeBswInternalBehaviorEntities(self, element: ET.Element, parent: BswInternalBehavior):
2064
2153
  entities = parent.getBswModuleEntities()
2065
2154
  if len(entities) > 0:
2066
2155
  child_element = ET.SubElement(element, "ENTITYS")
@@ -2118,7 +2207,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2118
2207
  self.writeBswEvent(child_element, event)
2119
2208
  self.setChildElementOptionalRefType(child_element, "ENTRY-REF", event.getEntryRef())
2120
2209
 
2121
- def writeBswInternalBehaviorBswEvents(self, element: ET.Element, parent: BswInternalBehavior):
2210
+ def writeBswInternalBehaviorEvents(self, element: ET.Element, parent: BswInternalBehavior):
2122
2211
  events = parent.getBswEvents()
2123
2212
  if len(events) > 0:
2124
2213
  child_element = ET.SubElement(element, "EVENTS")
@@ -2183,11 +2272,26 @@ class ARXMLWriter(AbstractARXMLWriter):
2183
2272
  else:
2184
2273
  self.notImplemented("Unsupported Reception Policies <%s>" % type(policy))
2185
2274
 
2275
+ def writeBswInternalTriggeringPoint(self, element: ET.Element, point: BswInternalTriggeringPoint):
2276
+ child_element = ET.SubElement(element, "BSW-INTERNAL-TRIGGERING-POINT")
2277
+ self.writeIdentifiable(child_element, point)
2278
+
2279
+ def writeBswInternalBehaviorInternalTriggeringPoints(self, element: ET.Element, behavior: BswInternalBehavior):
2280
+ points = behavior.getInternalTriggeringPoints()
2281
+ if len(points) > 0:
2282
+ child_element = ET.SubElement(element, "INTERNAL-TRIGGERING-POINTS")
2283
+ for point in points:
2284
+ if isinstance(point, BswInternalTriggeringPoint):
2285
+ self.writeBswInternalTriggeringPoint(child_element, point)
2286
+ else:
2287
+ self.notImplemented("Unsupported Internal Triggering Points <%s>" % type(point))
2288
+
2186
2289
  def writeBswInternalBehavior(self, element: ET.Element, behavior: BswInternalBehavior):
2187
2290
  child_element = ET.SubElement(element, "BSW-INTERNAL-BEHAVIOR")
2188
2291
  self.writeInternalBehavior(child_element, behavior)
2189
- self.writeBswInternalBehaviorBswModuleEntities(child_element, behavior)
2190
- self.writeBswInternalBehaviorBswEvents(child_element, behavior)
2292
+ self.writeBswInternalBehaviorInternalTriggeringPoints(child_element, behavior)
2293
+ self.writeBswInternalBehaviorEntities(child_element, behavior)
2294
+ self.writeBswInternalBehaviorEvents(child_element, behavior)
2191
2295
  self.writeBswInternalBehaviorModeSenderPolicy(child_element, behavior)
2192
2296
  self.writeBswInternalBehaviorIncludedModeDeclarationGroupSets(child_element, behavior)
2193
2297
  self.writeBswInternalBehaviorReceptionPolicies(child_element, behavior)
@@ -2245,7 +2349,35 @@ class ARXMLWriter(AbstractARXMLWriter):
2245
2349
  self.writeVariableDataPrototype(child_element, data)
2246
2350
  else:
2247
2351
  self.notImplemented("Unsupported Required Data <%s>" % type(data))
2248
-
2352
+
2353
+ def writeBswModuleClientServerEntry(self, element: ET.Element, entry: BswModuleClientServerEntry):
2354
+ if entry is not None:
2355
+ child_element = ET.SubElement(element, "BSW-MODULE-CLIENT-SERVER-ENTRY")
2356
+ self.writeReferrable(child_element, entry)
2357
+ self.setChildElementOptionalRefType(child_element, "ENCAPSULATED-ENTRY-REF", entry.getEncapsulatedEntryRef())
2358
+ self.setChildElementOptionalBooleanValue(child_element, "IS-REENTRANT", entry.getIsReentrant())
2359
+ self.setChildElementOptionalBooleanValue(child_element, "IS-SYNCHRONOUS", entry.getIsSynchronous())
2360
+
2361
+ def writeBswModuleDescriptionProvidedClientServerEntries(self, element: ET.Element, desc: BswModuleDescription):
2362
+ entries = desc.getProvidedClientServerEntries()
2363
+ if len(entries) > 0:
2364
+ child_element = ET.SubElement(element, "PROVIDED-CLIENT-SERVER-ENTRYS")
2365
+ for entry in entries:
2366
+ if isinstance(entry, BswModuleClientServerEntry):
2367
+ self.writeBswModuleClientServerEntry(child_element, entry)
2368
+ else:
2369
+ self.notImplemented("Unsupported Provided Client Server Entry <%s>" % type(entry))
2370
+
2371
+ def writeBswModuleDescriptionRequiredClientServerEntries(self, element: ET.Element, desc: BswModuleDescription):
2372
+ entries = desc.getRequiredClientServerEntries()
2373
+ if len(entries) > 0:
2374
+ child_element = ET.SubElement(element, "REQUIRED-CLIENT-SERVER-ENTRYS")
2375
+ for entry in entries:
2376
+ if isinstance(entry, BswModuleClientServerEntry):
2377
+ self.writeBswModuleClientServerEntry(child_element, entry)
2378
+ else:
2379
+ self.notImplemented("Unsupported Provided Client Server Entry <%s>" % type(entry))
2380
+
2249
2381
  def writeBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
2250
2382
  self.logger.debug("writeBswModuleDescription %s" % desc.getShortName())
2251
2383
  child_element = ET.SubElement(element, "BSW-MODULE-DESCRIPTION")
@@ -2254,11 +2386,12 @@ class ARXMLWriter(AbstractARXMLWriter):
2254
2386
  self.writeBswModuleDescriptionImplementedEntryRefs(child_element, desc)
2255
2387
  self.writeBswModuleDescriptionProvidedModeGroups(child_element, desc)
2256
2388
  self.writeBswModuleDescriptionRequiredModeGroups(child_element, desc)
2257
- self.writeBswModuleDescriptionReleasedTriggers(child_element, desc)
2258
- self.writeBswModuleDescriptionRequiredTriggers(child_element, desc)
2389
+ self.writeBswModuleDescriptionProvidedClientServerEntries(child_element, desc)
2390
+ self.writeBswModuleDescriptionRequiredClientServerEntries(child_element, desc)
2259
2391
  self.writeBswModuleDescriptionProvidedDatas(child_element, desc)
2260
2392
  self.writeBswModuleDescriptionRequiredDatas(child_element, desc)
2261
2393
  self.writeBswModuleDescriptionInternalBehaviors(child_element, desc)
2394
+ self.writeBswModuleDescriptionReleasedTriggers(child_element, desc)
2262
2395
 
2263
2396
  def setSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
2264
2397
  self.logger.debug("Set SwServiceArg <%s>" % arg.getShortName())
@@ -2315,8 +2448,8 @@ class ARXMLWriter(AbstractARXMLWriter):
2315
2448
  self.setChildElementOptionalLiteral(element, "SHORT-LABEL", engineering_obj.short_label)
2316
2449
  self.setChildElementOptionalLiteral(element, "CATEGORY", engineering_obj.category)
2317
2450
 
2318
- def setAutosarEngineeringObject(self, element: ET.Element, obj: AutosarEngineeringObject):
2319
- self.logger.debug("readArtifactDescriptor %s", obj.short_label)
2451
+ def writeAutosarEngineeringObject(self, element: ET.Element, obj: AutosarEngineeringObject):
2452
+ # self.logger.debug("write ArtifactDescriptor %s", obj.short_label)
2320
2453
  child_element = ET.SubElement(element, "AUTOSAR-ENGINEERING-OBJECT")
2321
2454
  self.writeEngineeringObject(child_element, obj)
2322
2455
 
@@ -2326,7 +2459,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2326
2459
  child_element = ET.SubElement(element, "ARTIFACT-DESCRIPTORS")
2327
2460
  for artifact_desc in artifact_descs:
2328
2461
  if isinstance(artifact_desc, AutosarEngineeringObject):
2329
- self.setAutosarEngineeringObject(child_element, artifact_desc)
2462
+ self.writeAutosarEngineeringObject(child_element, artifact_desc)
2330
2463
  else:
2331
2464
  self.notImplemented("Unsupported Artifact descriptor <%s>" % type(artifact_desc))
2332
2465
 
@@ -2348,7 +2481,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2348
2481
  self.writeBswImplementationVendorSpecificModuleDefRefs(child_element, impl)
2349
2482
 
2350
2483
  def writeImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
2351
- sub_elements = parent.getImplementationDataTypeElements()
2484
+ sub_elements = parent.getSubElements()
2352
2485
  if len(sub_elements) > 0:
2353
2486
  sub_elements_tag = ET.SubElement(element, "SUB-ELEMENTS")
2354
2487
  for type_element in sub_elements:
@@ -3743,6 +3876,68 @@ class ARXMLWriter(AbstractARXMLWriter):
3743
3876
  self.setChildElementOptionalIntegerValue(child_element, "WAKEUP-TX-ACTIVE", cluster.getWakeupTxActive())
3744
3877
  self.setChildElementOptionalIntegerValue(child_element, "WAKEUP-TX-IDLE", cluster.getWakeupTxIdle())
3745
3878
 
3879
+ def writeCollectionElementRefs(self, element: ET.Element, collection: Collection):
3880
+ refs = collection.getElementRefs()
3881
+ if len(refs) > 0:
3882
+ child_element = ET.SubElement(element, "ELEMENT-REFS")
3883
+ for ref in refs:
3884
+ self.setChildElementOptionalRefType(child_element, "ELEMENT-REF", ref)
3885
+
3886
+ def writeCollectionSourceElementRefs(self, element: ET.Element, collection: Collection):
3887
+ refs = collection.getSourceElementRefs()
3888
+ if len(refs) > 0:
3889
+ child_element = ET.SubElement(element, "SOURCE-ELEMENT-REFS")
3890
+ for ref in refs:
3891
+ self.setChildElementOptionalRefType(child_element, "SOURCE-ELEMENT-REF", ref)
3892
+
3893
+ def writeCollection(self, element: ET.Element, collection: Collection):
3894
+ if collection is not None:
3895
+ child_element = ET.SubElement(element, "COLLECTION")
3896
+ self.writeARElement(child_element, collection)
3897
+ self.setChildElementOptionalLiteral(child_element, "AUTO-COLLECT", collection.getAutoCollect())
3898
+ self.setChildElementOptionalLiteral(child_element, "ELEMENT-ROLE", collection.getElementRole())
3899
+ self.writeCollectionElementRefs(child_element, collection)
3900
+ self.writeCollectionSourceElementRefs(child_element, collection)
3901
+
3902
+ def writeKeywordClassifications(self, element: ET.Element, keyword: Keyword):
3903
+ classifications = keyword.getClassifications()
3904
+ if len(classifications) > 0:
3905
+ child_element = ET.SubElement(element, "CLASSIFICATIONS")
3906
+ for classification in classifications:
3907
+ self.setChildElementOptionalLiteral(child_element, "CLASSIFICATION", classification)
3908
+
3909
+ def writeKeyword(self, element: ET.Element, keyword: Keyword):
3910
+ if keyword is not None:
3911
+ # self.logger.debug("Write Keyword <%s>" % keyword.getShortName())
3912
+ child_element = ET.SubElement(element, "KEYWORD")
3913
+ self.writeIdentifiable(child_element, keyword)
3914
+ self.setChildElementOptionalLiteral(child_element, "ABBR-NAME", keyword.getAbbrName())
3915
+ self.writeKeywordClassifications(child_element, keyword)
3916
+
3917
+ def writeKeywordSetKeywords(self, element: ET.Element, keyword_set: KeywordSet):
3918
+ keywords = keyword_set.getKeywords()
3919
+ if len(keywords) > 0:
3920
+ child_element = ET.SubElement(element, "KEYWORDS")
3921
+ for keyword in keywords:
3922
+ if isinstance(keyword, Keyword):
3923
+ self.writeKeyword(child_element, keyword)
3924
+ else:
3925
+ self.notImplemented("Unsupported Keyword <%s>" % type(keyword))
3926
+
3927
+ def writeKeywordSet(self, element: ET.Element, keyword_set: KeywordSet):
3928
+ if keyword_set is not None:
3929
+ self.logger.debug("Write KeywordSet <%s>" % keyword_set.getShortName())
3930
+ child_element = ET.SubElement(element, "KEYWORD-SET")
3931
+ self.writeARElement(child_element, keyword_set)
3932
+ self.writeKeywordSetKeywords(child_element, keyword_set)
3933
+
3934
+ def writePortPrototypeBlueprint(self, element: ET.Element, blueprint: PortPrototypeBlueprint):
3935
+ if blueprint is not None:
3936
+ self.logger.debug("Write PortPrototypeBlueprint <%s>" % blueprint.getShortName())
3937
+ child_element = ET.SubElement(element, "PORT-PROTOTYPE-BLUEPRINT")
3938
+ self.writeARElement(child_element, blueprint)
3939
+ self.setChildElementOptionalRefType(child_element, "INTERFACE-REF", blueprint.getInterfaceRef())
3940
+
3746
3941
  def writeMacMulticastGroup(self, element: ET.Element, group: MacMulticastGroup):
3747
3942
  if group is not None:
3748
3943
  child_element = ET.SubElement(element, "MAC-MULTICAST-GROUP")
@@ -4231,6 +4426,7 @@ class ARXMLWriter(AbstractARXMLWriter):
4231
4426
  self.setChildElementOptionalNumericalValue(child_element, "LENGTH-EXP", dimension.getLengthExp())
4232
4427
  self.setChildElementOptionalNumericalValue(child_element, "LUMINOUS-INTENSITY-EXP", dimension.getLuminousIntensityExp())
4233
4428
  self.setChildElementOptionalNumericalValue(child_element, "MASS-EXP", dimension.getMassExp())
4429
+ self.setChildElementOptionalNumericalValue(child_element, "MOLAR-AMOUNT-EXP", dimension.getMolarAmountExp())
4234
4430
  self.setChildElementOptionalNumericalValue(child_element, "TEMPERATURE-EXP", dimension.getTemperatureExp())
4235
4431
  self.setChildElementOptionalNumericalValue(child_element, "TIME-EXP", dimension.getTimeExp())
4236
4432
  self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
@@ -4269,19 +4465,43 @@ class ARXMLWriter(AbstractARXMLWriter):
4269
4465
  for mapping in mappings:
4270
4466
  self.setDataPrototypeMapping(child_element, mapping)
4271
4467
 
4272
- def setVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
4273
- self.logger.debug("set VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
4468
+ def writeVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
4469
+ # self.logger.debug("Write VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
4274
4470
  child_element = ET.SubElement(element, "VARIABLE-AND-PARAMETER-INTERFACE-MAPPING")
4275
4471
  self.writeIdentifiable(child_element, mapping)
4276
4472
  self.setDataPrototypeMappings(child_element, "DATA-MAPPINGS", mapping.getDataMappings())
4277
4473
 
4474
+ def writeClientServerOperationMapping(self, element: ET.Element, mapping: ClientServerOperationMapping):
4475
+ child_element = ET.SubElement(element, "CLIENT-SERVER-OPERATION-MAPPING")
4476
+ self.setChildElementOptionalRefType(child_element, "FIRST-OPERATION-REF", mapping.getFirstOperationRef())
4477
+ self.setChildElementOptionalRefType(child_element, "SECOND-OPERATION-REF", mapping.getSecondOperationRef())
4478
+
4479
+ def writeClientServerInterfaceMappingOperationMappings(self, element: ET.Element, mapping: ClientServerInterfaceMapping):
4480
+ operation_mappings = mapping.getOperationMappings()
4481
+ if len(operation_mappings) > 0:
4482
+ child_element = ET.SubElement(element, "OPERATION-MAPPINGS")
4483
+ for operation_mapping in operation_mappings:
4484
+ if isinstance(operation_mapping, ClientServerOperationMapping):
4485
+ self.writeClientServerOperationMapping(child_element, operation_mapping)
4486
+ else:
4487
+ self.notImplemented("Unsupported Operation Mapping <%s>" % type(operation_mapping))
4488
+
4489
+ def writeClientServerInterfaceMapping(self, element: ET.Element, mapping: ClientServerInterfaceMapping):
4490
+ # self.logger.debug("Read ClientServerInterfaceMapping %s" % mapping.getShortName())
4491
+ if mapping is not None:
4492
+ child_element = ET.SubElement(element, "CLIENT-SERVER-INTERFACE-MAPPING")
4493
+ self.writeIdentifiable(child_element, mapping)
4494
+ self.writeClientServerInterfaceMappingOperationMappings(child_element, mapping)
4495
+
4278
4496
  def writePortInterfaceMappings(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
4279
4497
  mappings = mapping_set.getPortInterfaceMappings()
4280
4498
  if len(mappings) > 0:
4281
4499
  child_element = ET.SubElement(element, "PORT-INTERFACE-MAPPINGS")
4282
4500
  for mapping in mappings:
4283
4501
  if isinstance(mapping, VariableAndParameterInterfaceMapping):
4284
- self.setVariableAndParameterInterfaceMapping(child_element, mapping)
4502
+ self.writeVariableAndParameterInterfaceMapping(child_element, mapping)
4503
+ elif isinstance(mapping, ClientServerInterfaceMapping):
4504
+ self.writeClientServerInterfaceMapping(child_element, mapping)
4285
4505
  else:
4286
4506
  self.notImplemented("Unsupported PortInterfaceMapping <%s>" % type(mapping))
4287
4507
 
@@ -4530,10 +4750,47 @@ class ARXMLWriter(AbstractARXMLWriter):
4530
4750
  child_element = ET.SubElement(element, "ETHERNET-FRAME")
4531
4751
  self.writeFrame(child_element, frame)
4532
4752
 
4533
- def writeLifeCycleInfoSet(self, element: ET.Element, set: LifeCycleInfoSet):
4534
- self.logger.debug("Write LifeCycleInfoSet %s" % set.getShortName())
4535
- child_element = ET.SubElement(element, "LIFE-CYCLE-INFO-SET")
4536
- self.writeIdentifiable(child_element, set)
4753
+ def setLifeCyclePeriod(self, element: ET.Element, key: str, period: LifeCyclePeriod):
4754
+ if period is not None:
4755
+ child_element = ET.SubElement(element, key)
4756
+ self.setChildElementOptionalRevisionLabelString(child_element, "AR-RELEASE-VERSION", period.getArReleaseVersion())
4757
+
4758
+ def writeLifeCycleInfoUseInsteadRefs(self, element: ET.Element, info: LifeCycleInfo):
4759
+ refs = info.getUseInsteadRefs()
4760
+ if len(refs) > 0:
4761
+ child_element = ET.SubElement(element, "USE-INSTEAD-REFS")
4762
+ for ref in refs:
4763
+ self.setChildElementOptionalRefType(child_element, "USE-INSTEAD-REF", ref)
4764
+
4765
+ def writeLifeCycleInfo(self, element: ET.Element, info: LifeCycleInfo):
4766
+ if info is not None:
4767
+ child_element = ET.SubElement(element, "LIFE-CYCLE-INFO")
4768
+ self.writeARObjectAttributes(child_element, info)
4769
+ self.setChildElementOptionalRefType(child_element, "LC-OBJECT-REF", info.getLcObjectRef())
4770
+ self.setChildElementOptionalRefType(child_element, "LC-STATE-REF", info.getLcStateRef())
4771
+ self.setLifeCyclePeriod(child_element, "PERIOD-BEGIN", info.getPeriodBegin())
4772
+ self.writeDocumentationBlock(child_element, "REMARK", info.getRemark())
4773
+ self.writeLifeCycleInfoUseInsteadRefs(child_element, info)
4774
+
4775
+ def writeLifeCycleInfoSetLifeCycleInfos(self, element: ET.Element, info_set: LifeCycleInfoSet):
4776
+ infos = info_set.getLifeCycleInfos()
4777
+ if len(infos) > 0:
4778
+ child_element = ET.SubElement(element, "LIFE-CYCLE-INFOS")
4779
+ for info in infos:
4780
+ if isinstance(info, LifeCycleInfo):
4781
+ self.writeLifeCycleInfo(child_element, info)
4782
+ else:
4783
+ self.notImplemented("Unsupported Life Cycle Info <%s>" % type(info))
4784
+
4785
+ def writeLifeCycleInfoSet(self, element: ET.Element, info_set: LifeCycleInfoSet):
4786
+ if info_set is not None:
4787
+ self.logger.debug("Write LifeCycleInfoSet %s" % info_set.getShortName())
4788
+ child_element = ET.SubElement(element, "LIFE-CYCLE-INFO-SET")
4789
+ self.writeIdentifiable(child_element, info_set)
4790
+ self.setChildElementOptionalRefType(child_element, "DEFAULT-LC-STATE-REF", info_set.getDefaultLcStateRef())
4791
+ self.writeLifeCycleInfoSetLifeCycleInfos(child_element, info_set)
4792
+ self.setChildElementOptionalRefType(child_element, "USED-LIFE-CYCLE-STATE-DEFINITION-GROUP-REF",
4793
+ info_set.getUsedLifeCycleStateDefinitionGroupRef())
4537
4794
 
4538
4795
  def writeDiagnosticConnectionFunctionalRequestRefs(self, element: ET.Element, connection: DiagnosticConnection):
4539
4796
  refs = connection.getFunctionalRequestRefs()
@@ -5191,6 +5448,12 @@ class ARXMLWriter(AbstractARXMLWriter):
5191
5448
  self.writeSystemSignalGroup(element, ar_element)
5192
5449
  elif isinstance(ar_element, FlexrayCluster):
5193
5450
  self.writeFlexrayCluster(element, ar_element)
5451
+ elif isinstance(ar_element, Collection):
5452
+ self.writeCollection(element, ar_element)
5453
+ elif isinstance(ar_element, KeywordSet):
5454
+ self.writeKeywordSet(element, ar_element)
5455
+ elif isinstance(ar_element, PortPrototypeBlueprint):
5456
+ self.writePortPrototypeBlueprint(element, ar_element)
5194
5457
  else:
5195
5458
  self.notImplemented("Unsupported Elements of ARPackage <%s>" % type(ar_element))
5196
5459