armodel 1.6.3__py3-none-any.whl → 1.7.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 (133) hide show
  1. armodel/cli/arxml_dump_cli.py +7 -7
  2. armodel/cli/arxml_format_cli.py +14 -12
  3. armodel/cli/connector2xlsx_cli.py +2 -3
  4. armodel/cli/connector_update_cli.py +1 -4
  5. armodel/cli/memory_section_cli.py +2 -2
  6. armodel/cli/swc_list_cli.py +2 -3
  7. armodel/cli/system_signal_cli.py +2 -2
  8. armodel/lib/sw_component.py +2 -2
  9. armodel/lib/system_signal.py +1 -3
  10. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +5 -10
  11. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +9 -11
  12. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswImplementation.py +51 -12
  13. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +3 -3
  14. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +5 -6
  15. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/__init__.py +4 -1
  16. armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +86 -0
  17. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +186 -29
  18. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +7 -10
  19. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +21 -11
  20. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +3 -3
  21. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +3 -6
  22. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +3 -5
  23. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +10 -6
  24. armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcBswMapping.py +3 -4
  25. armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcInternalBehavior/ModeDeclarationGroup.py +2 -5
  26. armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcInternalBehavior/__init__.py +0 -1
  27. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/ExecutionOrderConstraint.py +45 -0
  28. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/TimingConstraint.py +24 -0
  29. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/TimingExtensions.py +33 -0
  30. armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +2 -2
  31. armodel/models/M2/AUTOSARTemplates/CommonStructure/__init__.py +4 -6
  32. armodel/models/M2/AUTOSARTemplates/{ecuc_description_template.py → ECUCDescriptionTemplate.py} +6 -11
  33. armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +3 -6
  34. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +42 -36
  35. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/EngineeringObject.py +2 -5
  36. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +11 -16
  37. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +87 -4
  38. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/__init__.py +0 -1
  39. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +21 -8
  40. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/InstanceRefs.py +2 -4
  41. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +114 -12
  42. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/InstanceRefs.py +2 -5
  43. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +4 -62
  44. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py +6 -8
  45. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +7 -7
  46. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/__init__.py +0 -1
  47. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/{port_interface/instance_refs.py → PortInterface/InstanceRefs.py} +2 -2
  48. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/{port_interface → PortInterface}/__init__.py +10 -10
  49. armodel/models/{rpt_scenario.py → M2/AUTOSARTemplates/SWComponentTemplate/RPTScenario.py} +4 -6
  50. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcImplementation.py +29 -6
  51. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/DataElements.py +6 -6
  52. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/IncludedDataTypes.py +2 -2
  53. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/InstanceRefsUsage.py +3 -3
  54. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +28 -4
  55. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/PerInstanceMemory.py +3 -3
  56. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/PortAPIOptions.py +86 -0
  57. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +174 -0
  58. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServerCall.py +3 -4
  59. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +37 -3
  60. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/Trigger.py +2 -4
  61. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +166 -10
  62. armodel/models/M2/AUTOSARTemplates/SystemTemplate/{data_mapping.py → DataMapping.py} +2 -3
  63. armodel/models/{fibex/can_communication.py → M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanCommunication.py} +3 -4
  64. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +173 -0
  65. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +14 -0
  66. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +116 -0
  67. armodel/models/{fibex/lin_communication.py → M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinCommunication.py} +4 -5
  68. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/__init__.py +0 -0
  69. armodel/models/{fibex/fibex_4_multiplatform.py → M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py} +5 -6
  70. armodel/models/{fibex/fibex_core/core_communication.py → M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py} +6 -14
  71. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +388 -0
  72. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +223 -0
  73. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +177 -0
  74. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/__init__.py +0 -0
  75. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/__init__.py +0 -0
  76. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +39 -2
  77. armodel/models/M2/AUTOSARTemplates/SystemTemplate/{network_management.py → NetworkManagement.py} +5 -10
  78. armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +6 -0
  79. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +86 -17
  80. armodel/models/M2/MSR/AsamHdo/AdminData.py +2 -5
  81. armodel/models/M2/MSR/AsamHdo/BaseTypes.py +3 -3
  82. armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +5 -6
  83. armodel/models/M2/MSR/AsamHdo/Constraints/GlobalConstraints.py +3 -4
  84. armodel/models/M2/MSR/AsamHdo/Constraints/__init__.py +0 -1
  85. armodel/models/M2/MSR/AsamHdo/SpecialData.py +1 -4
  86. armodel/models/M2/MSR/AsamHdo/Units.py +3 -6
  87. armodel/models/M2/MSR/AsamHdo/__init__.py +0 -1
  88. armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +3 -7
  89. armodel/models/M2/MSR/CalibrationData/__init__.py +0 -1
  90. armodel/models/M2/MSR/DataDictionary/AuxillaryObjects.py +3 -6
  91. armodel/models/M2/MSR/DataDictionary/Axis.py +3 -3
  92. armodel/models/M2/MSR/DataDictionary/CalibrationParameter.py +3 -3
  93. armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +5 -6
  94. armodel/models/M2/MSR/DataDictionary/RecordLayout.py +4 -4
  95. armodel/models/M2/MSR/DataDictionary/__init__.py +0 -1
  96. armodel/models/M2/MSR/Documentation/Annotation.py +4 -6
  97. armodel/models/M2/MSR/Documentation/BlockElements.py +2 -2
  98. armodel/models/M2/MSR/Documentation/TextModel/LanguageDataModel.py +1 -2
  99. armodel/models/M2/MSR/Documentation/TextModel/MultilanguageData.py +3 -6
  100. armodel/models/M2/MSR/Documentation/TextModel/__init__.py +0 -2
  101. armodel/models/M2/MSR/Documentation/__init__.py +1 -1
  102. armodel/models/M2/MSR/__init__.py +1 -1
  103. armodel/models/M2/__init__.py +0 -1
  104. armodel/models/__init__.py +57 -3
  105. armodel/parser/abstract_arxml_parser.py +50 -16
  106. armodel/parser/arxml_parser.py +285 -112
  107. armodel/parser/file_parser.py +2 -1
  108. armodel/report/connector_xls_report.py +2 -1
  109. armodel/tests/test_armodel/models/test_ar_object.py +0 -2
  110. armodel/tests/test_armodel/models/test_ar_package.py +4 -4
  111. armodel/tests/test_armodel/models/test_data_prototype.py +1 -1
  112. armodel/tests/test_armodel/models/test_datatype.py +7 -7
  113. armodel/tests/test_armodel/models/test_port_interface.py +6 -6
  114. armodel/tests/test_armodel/parser/test_parse_bswmd.py +12 -12
  115. armodel/tests/test_armodel/parser/test_sw_components.py +1 -23
  116. armodel/tests/test_armodel/parser/test_system.py +3 -3
  117. armodel/writer/abstract_arxml_writer.py +10 -1
  118. armodel/writer/arxml_writer.py +249 -80
  119. {armodel-1.6.3.dist-info → armodel-1.7.0.dist-info}/METADATA +385 -366
  120. armodel-1.7.0.dist-info/RECORD +160 -0
  121. {armodel-1.6.3.dist-info → armodel-1.7.0.dist-info}/WHEEL +1 -1
  122. armodel/models/M2/AUTOSARTemplates/SystemTemplate/transport_protocols.py +0 -7
  123. armodel/models/fibex/fibex_core/core_topology.py +0 -184
  124. armodel/models/sw_component.py +0 -390
  125. armodel/models/timing.py +0 -91
  126. armodel-1.6.3.dist-info/RECORD +0 -148
  127. /armodel/models/{fibex → M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint}/__init__.py +0 -0
  128. /armodel/models/{fibex/fibex_4_can → M2/AUTOSARTemplates/CommonStructure/Timing}/__init__.py +0 -0
  129. /armodel/models/{fibex/fibex_4_lin → M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can}/__init__.py +0 -0
  130. /armodel/models/{fibex/fibex_core → M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet}/__init__.py +0 -0
  131. {armodel-1.6.3.dist-info → armodel-1.7.0.dist-info}/LICENSE +0 -0
  132. {armodel-1.6.3.dist-info → armodel-1.7.0.dist-info}/entry_points.txt +0 -0
  133. {armodel-1.6.3.dist-info → armodel-1.7.0.dist-info}/top_level.txt +0 -0
@@ -2,95 +2,91 @@ import xml.etree.cElementTree as ET
2
2
 
3
3
  from typing import List
4
4
 
5
- from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroup, SwRecordLayoutV
6
5
 
7
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
8
6
 
9
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
10
7
 
11
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType
12
8
 
13
- from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import InternalConstrs, PhysConstrs
14
- from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxis
15
- from ..models.M2.MSR.DataDictionary.Axis import SwAxisGrouped, SwAxisIndividual
16
- from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
9
+ from ..models.M2.MSR.AsamHdo.AdminData import AdminData
17
10
  from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
11
+ from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstTextContent, CompuMethod, CompuNominatorDenominator, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
12
+ from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstr, InternalConstrs, PhysConstrs
18
13
  from ..models.M2.MSR.AsamHdo.SpecialData import Sdg
19
- from ..models.M2.MSR.AsamHdo.AdminData import AdminData
20
- from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstTextContent, CompuNominatorDenominator, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
21
- from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph
14
+ from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension, Unit
15
+ from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
16
+ from ..models.M2.MSR.DataDictionary.Axis import SwAxisGrouped, SwAxisIndividual
22
17
  from ..models.M2.MSR.DataDictionary.AuxillaryObjects import SwAddrMethod
23
- from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps
24
- from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension
18
+ from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxis, SwCalprmAxisSet
19
+ from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, ValueList
20
+ from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayout, SwRecordLayoutGroup, SwRecordLayoutV
21
+ from ..models.M2.MSR.Documentation.Annotation import Annotation
25
22
  from ..models.M2.MSR.Documentation.BlockElements import DocumentationBlock
26
- from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuMethod
27
- from ..models.M2.MSR.DataDictionary.DataDefProperties import ValueList
28
- from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultilanguageLongName
23
+ from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultilanguageLongName
29
24
 
30
- from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
25
+ from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
26
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
31
27
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
28
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
29
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswEvent, BswInternalBehavior, BswModeSenderPolicy, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
30
+ from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
31
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
32
+ from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
32
33
  from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Code, Implementation
33
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
34
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataAssignment
35
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
34
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
35
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef, ExecutionOrderConstraint
36
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import NvBlockNeeds, RoleBasedDataAssignment, ServiceDependency
36
37
  from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
37
- from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclaration, ModeDeclarationGroup
38
- from ..models.M2.AUTOSARTemplates.CommonStructure.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
39
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
40
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, MultilanguageReferrable, Referrable
41
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswEvent, BswInternalBehavior, BswModeSenderPolicy, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
42
38
  from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
43
- from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
44
- from ..models.M2.AUTOSARTemplates.ecuc_description_template import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
39
+ from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
40
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclaration, ModeDeclarationGroup, ModeDeclarationGroupPrototype
41
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
42
+
43
+ from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
44
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
45
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, MultilanguageReferrable, Referrable
45
46
  from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
46
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype
47
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
48
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral, Limit
49
+
50
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption
51
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
52
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
53
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType
54
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
55
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
56
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
57
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype
47
58
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
48
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntityArgument, SynchronousServerCallPoint
59
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior, SynchronousServerCallPoint
49
60
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
50
61
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.DataElements import ParameterAccess, VariableAccess
51
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, CompositionSwComponentType, DelegationSwConnector, SwComponentPrototype, SwConnector
62
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector, SwComponentPrototype, SwConnector
52
63
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
53
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.port_interface.instance_refs import ApplicationCompositeElementInPortInterfaceInstanceRef
64
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
54
65
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, AutosarVariableRef, VariableInAtomicSWCTypeInstanceRef
55
- from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import VariableDataPrototypeInSystemInstanceRef
56
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef
57
- from ..models.M2.AUTOSARTemplates.SystemTemplate.data_mapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
58
- from ..models.M2.AUTOSARTemplates.SystemTemplate import System, SystemMapping
59
- from ..models.M2.AUTOSARTemplates.SystemTemplate.network_management import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
60
- from ..models.M2.AUTOSARTemplates.SystemTemplate.transport_protocols import CanTpConfig
61
66
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, RPortComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
62
-
63
- from ..models.fibex.fibex_4_multiplatform import Gateway, ISignalMapping
64
- from ..models.fibex.can_communication import CanFrame, CanFrameTriggering, RxIdentifierRange
65
- from ..models.fibex.fibex_core.core_communication import FrameTriggering, IPdu, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalTriggering, PduTriggering, SecuredIPdu, SystemSignal, DcmIPdu, Frame, ISignal, NPdu, NmPdu, SystemSignalGroup
66
- from ..models.fibex.lin_communication import LinFrameTriggering, LinUnconditionalFrame
67
- from ..models.fibex.fibex_core.core_topology import AbstractCanCluster, CanCluster, EcuInstance, CanPhysicalChannel, CommunicationCluster, LinCluster, LinPhysicalChannel, PhysicalChannel
68
-
69
- from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
70
- from ..models.timing import EOCExecutableEntityRef, ExecutionOrderConstraint, SwcTiming, TimingExtension
71
- from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayout
72
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment
73
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import NvBlockNeeds
67
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef
68
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
74
69
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationArrayElement, ApplicationCompositeElementDataPrototype, ApplicationRecordElement, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
75
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
76
- from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
77
- from ..models.sw_component import ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, DataReceivedEvent, EcuAbstractionSwComponentType, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, PortAPIOption, RTEEvent, ServiceDependency, ServiceSwComponentType, SwcModeSwitchEvent, SwcServiceDependency
78
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
79
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
80
- from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxisSet
81
- from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroupPrototype
70
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ServiceSwComponentType
82
71
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import DataTypeMappingSet
83
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Limit
84
-
85
- from ..models.M2.MSR.Documentation.Annotation import Annotation
86
72
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
87
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.port_interface import ApplicationError, ClientServerInterface, ClientServerOperation, ModeSwitchInterface, PortInterface, SenderReceiverInterface, TriggerInterface
88
- from ..models.M2.MSR.AsamHdo.Units import Unit
73
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ClientServerInterface, ClientServerOperation, ModeSwitchInterface, ParameterInterface, PortInterface, SenderReceiverInterface, TriggerInterface
89
74
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
90
- from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
91
- from ..models.sw_component import RunnableEntity, SwcInternalBehavior, TimingEvent
92
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral
93
- from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstr
75
+
76
+ from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
77
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
78
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FrameTriggering, IPdu, IPduTiming, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalTriggering, PduTriggering, SecuredIPdu, SystemSignal, DcmIPdu, Frame, ISignal, NPdu, NmPdu, SystemSignalGroup
79
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
80
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
81
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
82
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, ISignalMapping
83
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
84
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
85
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering, LinUnconditionalFrame
86
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
87
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
88
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
89
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig
94
90
 
95
91
  from .abstract_arxml_writer import AbstractARXMLWriter
96
92
  class ARXMLWriter(AbstractARXMLWriter):
@@ -861,7 +857,7 @@ class ARXMLWriter(AbstractARXMLWriter):
861
857
  child_element = ET.SubElement(element, "DISABLED-MODE-IREFS")
862
858
  for iref in irefs:
863
859
  self.setRModeInAtomicSwcInstanceRef(child_element, "DISABLED-MODE-IREF", iref)
864
- self.setChildElementOptionalRefType(element, "START-ON-EVENT-REF", event.start_on_event_ref)
860
+ self.setChildElementOptionalRefType(element, "START-ON-EVENT-REF", event.startOnEventRef)
865
861
 
866
862
  def setTimingEvent(self, element: ET.Element, event: TimingEvent):
867
863
  if event is not None:
@@ -873,7 +869,7 @@ class ARXMLWriter(AbstractARXMLWriter):
873
869
  if event is not None:
874
870
  child_element = ET.SubElement(element, "OPERATION-INVOKED-EVENT")
875
871
  self.setRTEEvent(child_element, event)
876
- self.setPOperationInAtomicSwcInstanceRef(child_element, "OPERATION-IREF", event.operation_iref)
872
+ self.setPOperationInAtomicSwcInstanceRef(child_element, "OPERATION-IREF", event.operationIRef)
877
873
 
878
874
  def setSwcModeSwitchEvent(self, element: ET.Element, event: SwcModeSwitchEvent):
879
875
  if event is not None:
@@ -965,6 +961,14 @@ class ARXMLWriter(AbstractARXMLWriter):
965
961
  self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", ref.getAutosarVariableIRef().getTargetDataPrototypeRef())
966
962
  self.setChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF", ref.getLocalVariableRef())
967
963
 
964
+ def setComponentInSystemInstanceRef(self, element: ET.Element, tag_name: str, ref: ComponentInSystemInstanceRef):
965
+ if ref is not None:
966
+ child_element = ET.SubElement(element, tag_name)
967
+ self.setARObjectAttributes(child_element, ref)
968
+ self.setChildElementOptionalRefType(child_element, "BASE-REF", ref.getBaseRef())
969
+ self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPOSITION-REF", ref.getContextCompositionRef())
970
+ self.setChildElementOptionalRefType(child_element, "TARGET-COMPONENT-REF", ref.getTargetComponentRef())
971
+
968
972
  def setVariableAccess(self, element: ET.Element, access: VariableAccess):
969
973
  child_element = ET.SubElement(element, "VARIABLE-ACCESS")
970
974
  self.setIdentifiable(child_element, access)
@@ -1166,7 +1170,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1166
1170
  if argument_value.value is not None:
1167
1171
  value_tag = ET.SubElement(child_element, "VALUE")
1168
1172
  self.setValueSpecification(value_tag, argument_value.value)
1169
- self.setChildElementOptionalRefType(child_element, "VALUE-TYPE-TREF", argument_value.value_type)
1173
+ self.setChildElementOptionalRefType(child_element, "VALUE-TYPE-TREF", argument_value.valueTypeTRef)
1170
1174
 
1171
1175
  def writePortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
1172
1176
  options = behavior.getPortAPIOptions()
@@ -1174,10 +1178,10 @@ class ARXMLWriter(AbstractARXMLWriter):
1174
1178
  port_api_options_tag = ET.SubElement(element, "PORT-API-OPTIONS")
1175
1179
  for option in options:
1176
1180
  child_element = ET.SubElement(port_api_options_tag, "PORT-API-OPTION")
1177
- self.setChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS", option.enable_take_address)
1178
- self.setChildElementOptionalBooleanValue(child_element, "INDIRECT-API", option.indirect_api)
1181
+ self.setChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS", option.enableTakeAddress)
1182
+ self.setChildElementOptionalBooleanValue(child_element, "INDIRECT-API", option.indirectAPI)
1179
1183
  self.writePortDefinedArgumentValues(child_element, option)
1180
- self.setChildElementOptionalRefType(child_element, "PORT-REF", option.port_ref)
1184
+ self.setChildElementOptionalRefType(child_element, "PORT-REF", option.portRef)
1181
1185
 
1182
1186
  def writeServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
1183
1187
  self.setIdentifiable(element, dependency)
@@ -1358,18 +1362,18 @@ class ARXMLWriter(AbstractARXMLWriter):
1358
1362
  def writeImplementation(self, element: ET.Element, impl: Implementation):
1359
1363
  self.setIdentifiable(element, impl)
1360
1364
  self.writeCodeDescriptors(element, impl)
1361
- self.setChildElementOptionalLiteral(element, "PROGRAMMING-LANGUAGE", impl.programming_language)
1365
+ self.setChildElementOptionalLiteral(element, "PROGRAMMING-LANGUAGE", impl.getProgrammingLanguage())
1362
1366
  self.setResourceConsumption(element, impl.getResourceConsumption())
1363
- self.setChildElementOptionalLiteral(element, "SW-VERSION", impl.sw_version)
1364
- self.setChildElementOptionalRefType(element, "SWC-BSW-MAPPING-REF", impl.swc_bsw_mapping_ref)
1365
- self.setChildElementOptionalLiteral(element, "USED-CODE-GENERATOR", impl.used_code_generator)
1366
- self.setChildElementOptionalNumericalValue(element, "VENDOR-ID", impl.vendor_id)
1367
+ self.setChildElementOptionalLiteral(element, "SW-VERSION", impl.getSwVersion())
1368
+ self.setChildElementOptionalRefType(element, "SWC-BSW-MAPPING-REF", impl.getSwcBswMappingRef())
1369
+ self.setChildElementOptionalLiteral(element, "USED-CODE-GENERATOR", impl.getUsedCodeGenerator())
1370
+ self.setChildElementOptionalNumericalValue(element, "VENDOR-ID", impl.getVendorId())
1367
1371
 
1368
1372
  def writeSwcImplementation(self, element: ET.Element, impl: SwcImplementation):
1369
1373
  self.logger.debug("writeSwcImplementation %s" % impl.short_name)
1370
1374
  child_element = ET.SubElement(element, "SWC-IMPLEMENTATION")
1371
1375
  self.writeImplementation(child_element, impl)
1372
- self.setChildElementOptionalRefType(child_element, "BEHAVIOR-REF", impl.behavior_ref)
1376
+ self.setChildElementOptionalRefType(child_element, "BEHAVIOR-REF", impl.getBehaviorRef())
1373
1377
 
1374
1378
  def writeEndToEndDescriptionDataId(self, element: ET.Element, parent: EndToEndDescription):
1375
1379
  data_ids = parent.getDataIds()
@@ -1692,8 +1696,8 @@ class ARXMLWriter(AbstractARXMLWriter):
1692
1696
  self.logger.debug("writeBswModuleDescription %s" % impl.short_name)
1693
1697
  child_element = ET.SubElement(element, "BSW-IMPLEMENTATION")
1694
1698
  self.writeImplementation(child_element, impl)
1695
- self.setChildElementOptionalLiteral(child_element, "AR-RELEASE-VERSION", impl.ar_release_version)
1696
- self.setChildElementOptionalRefType(child_element, "BEHAVIOR-REF", impl.behavior_ref)
1699
+ self.setChildElementOptionalLiteral(child_element, "AR-RELEASE-VERSION", impl.getArReleaseVersion())
1700
+ self.setChildElementOptionalRefType(child_element, "BEHAVIOR-REF", impl.getBehaviorRef())
1697
1701
  self.writeBswImplementationVendorSpecificModuleDefRefs(child_element, impl)
1698
1702
 
1699
1703
  def writeImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
@@ -2241,6 +2245,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2241
2245
 
2242
2246
  def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
2243
2247
  self.setChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE", cluster.getCanFdBaudrate())
2248
+ self.setChildElementOptionalNumericalValue(element, "SPEED", cluster.getSpeed())
2244
2249
 
2245
2250
  def writeLinCluster(self, element: ET.Element, cluster: LinCluster):
2246
2251
  self.logger.debug("LinCluster %s" % cluster.short_name)
@@ -2261,14 +2266,89 @@ class ARXMLWriter(AbstractARXMLWriter):
2261
2266
  self.readAbstractCanCluster(child_element, cluster)
2262
2267
 
2263
2268
  def writeCanFrame(self, element: ET.Element, frame: CanFrame):
2264
- self.logger.debug("CanFrame %s" % frame.short_name)
2269
+ self.logger.debug("Write CanFrame %s" % frame.short_name)
2265
2270
  child_element = ET.SubElement(element, "CAN-FRAME")
2266
2271
  self.writeFrame(child_element, frame)
2267
2272
 
2273
+ def writeCommConnectorPort(self, element: ET.Element, port: CommConnectorPort):
2274
+ self.setIdentifiable(element, port)
2275
+ self.setChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION", port.getCommunicationDirection())
2276
+
2277
+ def writeFramePort(self, element: ET.Element, port: FramePort):
2278
+ child_element = ET.SubElement(element, "FRAME-PORT")
2279
+ self.writeCommConnectorPort(child_element, port)
2280
+
2281
+ def writeIPduPort(self, element: ET.Element, port: IPduPort):
2282
+ child_element = ET.SubElement(element, "I-PDU-PORT")
2283
+ self.writeCommConnectorPort(child_element, port)
2284
+
2285
+ def writeISignalPort(self, element: ET.Element, port: ISignalPort):
2286
+ child_element = ET.SubElement(element, "I-SIGNAL-PORT")
2287
+ self.writeCommConnectorPort(child_element, port)
2288
+
2289
+ def writeCommunicationConnectorEcuCommPortInstances(self, element: ET.Element, connector: CommunicationConnector):
2290
+ self.logger.debug("write EcuCommPortInstances of CommunicationConnector %s" % connector.getShortName())
2291
+ ports = connector.getEcuCommPortInstances()
2292
+ if len(ports) > 0:
2293
+ instances_tag = ET.SubElement(element, "ECU-COMM-PORT-INSTANCES")
2294
+ for port in ports:
2295
+ if isinstance(port, FramePort):
2296
+ self.writeFramePort(instances_tag, port)
2297
+ elif isinstance(port, IPduPort):
2298
+ self.writeIPduPort(instances_tag, port)
2299
+ elif isinstance(port, ISignalPort):
2300
+ self.writeISignalPort(instances_tag, port)
2301
+ else:
2302
+ self._raiseError("Unsupported CommConnectorPort <%s>" % type(port))
2303
+
2304
+ def writeCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
2305
+ self.logger.debug("Write CanCommunicationController %s" % controller.getShortName())
2306
+ self.setIdentifiable(element, controller)
2307
+
2308
+ def writeEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
2309
+ controllers = instance.getCommControllers()
2310
+ if len(controllers) > 0:
2311
+ controllers_tag = ET.SubElement(element, "COMM-CONTROLLERS")
2312
+ for controller in controllers:
2313
+ if isinstance(controller, CanCommunicationController):
2314
+ child_element = ET.SubElement(controllers_tag, "CAN-COMMUNICATION-CONTROLLER")
2315
+ self.writeCanCommunicationController(child_element, controller)
2316
+ else:
2317
+ self._raiseError("Unsupported Communication Controller <%s>" % type(controller))
2318
+
2319
+ def writeCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
2320
+ self.setIdentifiable(element, connector)
2321
+ self.setChildElementOptionalRefType(element, "COMM-CONTROLLER-REF", connector.getCommControllerRef())
2322
+ self.writeCommunicationConnectorEcuCommPortInstances(element, connector)
2323
+
2324
+
2325
+ def writeCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
2326
+ self.logger.debug("Write CanCommunicationConnector %s" % connector.getShortName())
2327
+ self.writeCommunicationConnector(element, connector)
2328
+
2329
+ def writeEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
2330
+ connectors = instance.getConnectors()
2331
+ if len(connectors) > 0:
2332
+ connectors_tag = ET.SubElement(element, "CONNECTORS")
2333
+ for connector in connectors:
2334
+ if isinstance(connector, CanCommunicationConnector):
2335
+ child_element = ET.SubElement(connectors_tag, "CAN-COMMUNICATION-CONNECTOR")
2336
+ self.writeCanCommunicationConnector(child_element, connector)
2337
+ else:
2338
+ self._raiseError("Unsupported Communication connector <%s>" % type(connector))
2339
+
2268
2340
  def writeEcuInstance(self, element: ET.Element, instance: EcuInstance):
2269
2341
  self.logger.debug("EcuInstance %s" % instance.short_name)
2270
2342
  child_element = ET.SubElement(element, "ECU-INSTANCE")
2271
2343
  self.setIdentifiable(child_element, instance)
2344
+ self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-GW-TIME-BASE", instance.getComConfigurationGwTimeBase())
2345
+ self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-RX-TIME-BASE", instance.getComConfigurationRxTimeBase())
2346
+ self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-TX-TIME-BASE", instance.getComConfigurationTxTimeBase())
2347
+ self.setChildElementOptionalBooleanValue(child_element, "COM-ENABLE-MDT-FOR-CYCLIC-TRANSMISSION", instance.getComEnableMDTForCyclicTransmission())
2348
+ self.writeEcuInstanceCommControllers(child_element, instance)
2349
+ self.writeEcuInstanceConnectors(child_element, instance)
2350
+ self.setChildElementOptionalBooleanValue(child_element, "SLEEP-MODE-SUPPORTED", instance.getSleepModeSupported())
2351
+ self.setChildElementOptionalBooleanValue(child_element, "WAKE-UP-OVER-BUS-SUPPORTED", instance.getWakeUpOverBusSupported())
2272
2352
 
2273
2353
  def writeSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
2274
2354
  self.logger.debug("Write SystemSignalGroup %s" % group.short_name)
@@ -2301,12 +2381,33 @@ class ARXMLWriter(AbstractARXMLWriter):
2301
2381
  self.setSenderReceiverToSignalGroupMapping(child_element, data_mapping)
2302
2382
  else:
2303
2383
  raise NotImplementedError("Unsupported Data Mapping %s" % type(data_mapping))
2384
+
2385
+ def setSwcToEcuMapping(self, element: ET.Element, mapping: SwcToEcuMapping):
2386
+ child_element = ET.SubElement(element, "SWC-TO-ECU-MAPPING")
2387
+ self.setIdentifiable(child_element, mapping)
2388
+ irefs = mapping.getComponentIRefs()
2389
+ if len(irefs) > 0:
2390
+ irefs_tag = ET.SubElement(child_element, "COMPONENT-IREFS")
2391
+ for iref in irefs:
2392
+ self.setComponentInSystemInstanceRef(irefs_tag, "COMPONENT-IREF", iref)
2393
+ self.setChildElementOptionalRefType(child_element, "ECU-INSTANCE-REF", mapping.getEcuInstanceRef())
2394
+
2395
+ def writeSystemMappingSwMappings(self, element: ET.Element, system_mapping: SystemMapping):
2396
+ sw_mappings = system_mapping.getSwMappings()
2397
+ if len(sw_mappings) > 0:
2398
+ child_element = ET.SubElement(element, "SW-MAPPINGS")
2399
+ for sw_mapping in sw_mappings:
2400
+ if isinstance(sw_mapping, SwcToEcuMapping):
2401
+ self.setSwcToEcuMapping(child_element, sw_mapping)
2402
+ else:
2403
+ raise NotImplementedError("Unsupported Sw Mapping %s" % type(sw_mapping))
2304
2404
 
2305
2405
  def writeSystemMapping(self, element: ET.Element, mapping: SystemMapping):
2306
2406
  self.logger.debug("Write SystemMapping %s" % mapping.short_name)
2307
2407
  child_element = ET.SubElement(element, "SYSTEM-MAPPING")
2308
2408
  self.setIdentifiable(child_element, mapping)
2309
2409
  self.writeSystemMappingDataMappings(child_element, mapping)
2410
+ self.writeSystemMappingSwMappings(child_element, mapping)
2310
2411
 
2311
2412
  def writeSystemMappings(self, element: ET.Element, system: System):
2312
2413
  mappings = system.getMappings()
@@ -2318,6 +2419,15 @@ class ARXMLWriter(AbstractARXMLWriter):
2318
2419
  else:
2319
2420
  raise NotImplementedError("Unsupported Mapping %s" % type(mapping))
2320
2421
 
2422
+ def writeRootSwCompositionPrototype(self, element: ET.Element, system: System):
2423
+ prototype = system.getRootSoftwareComposition()
2424
+ if prototype is not None:
2425
+ self.logger.debug("Write RootSwCompositionPrototype <%s>" % prototype.getShortName())
2426
+ child_element = ET.SubElement(element, "ROOT-SOFTWARE-COMPOSITIONS")
2427
+ child_element = ET.SubElement(child_element, "ROOT-SW-COMPOSITION-PROTOTYPE")
2428
+ self.setIdentifiable(child_element, prototype)
2429
+ self.setChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF", prototype.getSoftwareCompositionTRef())
2430
+
2321
2431
  def writeSystem(self, element: ET.Element, system: System):
2322
2432
  self.logger.debug("Write System %s" % system.short_name)
2323
2433
  child_element = ET.SubElement(element, "SYSTEM")
@@ -2332,6 +2442,8 @@ class ARXMLWriter(AbstractARXMLWriter):
2332
2442
  self.setChildElementOptionalRefType(fibex_element_ref_conditional_tag, "FIBEX-ELEMENT-REF", ref)
2333
2443
 
2334
2444
  self.writeSystemMappings(child_element, system)
2445
+ self.writeRootSwCompositionPrototype(child_element, system)
2446
+ self.setChildElementOptionalRevisionLabelString(child_element, "SYSTEM-VERSION", system.getSystemVersion())
2335
2447
 
2336
2448
  def writePhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
2337
2449
  self.logger.debug("Write PhysicalDimension %s" % dimension.short_name)
@@ -2515,6 +2627,16 @@ class ARXMLWriter(AbstractARXMLWriter):
2515
2627
  self.setIdentifiable(child_element, signal)
2516
2628
  self.setChildElementOptionalBooleanValue(child_element, "DYNAMIC-LENGTH", signal.getDynamicLength())
2517
2629
 
2630
+ def writeParameterInterface(self, element: ET.Element, signal: SystemSignal):
2631
+ self.logger.debug("Write ParameterInterface %s" % signal.short_name)
2632
+ child_element = ET.SubElement(element, "PARAMETER-INTERFACE")
2633
+ self.setIdentifiable(child_element, signal)
2634
+
2635
+ def writeGenericEthernetFrame(self, element: ET.Element, signal: SystemSignal):
2636
+ self.logger.debug("Write GenericEthernetFrame %s" % signal.short_name)
2637
+ child_element = ET.SubElement(element, "ETHERNET-FRAME")
2638
+ self.writeFrame(child_element, signal)
2639
+
2518
2640
  def writeISignalToPduMappings(self, element: ET.Element, parent: ISignalIPdu):
2519
2641
  mappings = parent.getISignalToPduMappings()
2520
2642
  if len(mappings) > 0:
@@ -2528,12 +2650,55 @@ class ARXMLWriter(AbstractARXMLWriter):
2528
2650
  self.setChildElementOptionalNumericalValue(child_element, "START-POSITION", mapping.getStartPosition())
2529
2651
  self.setChildElementOptionalLiteral(child_element, "TRANSFER-PROPERTY", mapping.getTransferProperty())
2530
2652
  self.setChildElementOptionalNumericalValue(child_element, "UPDATE-INDICATION-BIT-POSITION", mapping.getUpdateIndicationBitPosition())
2653
+
2654
+ def setDataFilter(self, element: ET.Element, key: str, filter: DataFilter):
2655
+ child_element = ET.SubElement(element, key)
2656
+ self.setChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE", filter.getDataFilterType())
2657
+
2658
+ def setTransmissionModeConditions(self, element: ET.Element, conditions: List[TransmissionModeCondition]):
2659
+ if len(conditions) > 0:
2660
+ conditions_tag = ET.SubElement(element, "TRANSMISSION-MODE-CONDITIONS")
2661
+ for condition in conditions:
2662
+ child_element = ET.SubElement(conditions_tag, "TRANSMISSION-MODE-CONDITION")
2663
+ self.setDataFilter(child_element, "DATA-FILTER", condition.getDataFilter())
2664
+ self.setChildElementOptionalRefType(child_element, "I-SIGNAL-IN-I-PDU-REF", condition.getISignalInIPduRef())
2665
+
2666
+ def setTimeRangeType(self, element: ET.Element, key: str, time_range: TimeRangeType):
2667
+ if time_range is not None:
2668
+ child_element = ET.SubElement(element, key)
2669
+ self.setChildElementOptionalTimeValue(child_element, "VALUE", time_range.getValue())
2670
+
2671
+ def setEventControlledTiming(self, element: ET.Element, key: str, timing: EventControlledTiming):
2672
+ if timing is not None:
2673
+ child_element = ET.SubElement(element, key)
2674
+ self.setChildElementOptionalIntegerValue(child_element, "NUMBER-OF-REPETITIONS", timing.getNumberOfRepetitions())
2675
+ self.setTimeRangeType(child_element, "REPETITION-PERIOD", timing.getRepetitionPeriod())
2676
+
2677
+ def setTransmissionModeTiming(self, element: ET.Element, key: str, timing: TransmissionModeTiming):
2678
+ if timing is not None:
2679
+ self.logger.debug("Set TransmissionModeTiming of <%s>" % key)
2680
+ child_element = ET.SubElement(element, key)
2681
+ #timing.getCyclicTiming(child_element, "")
2682
+ self.setEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING", timing.getEventControlledTiming())
2683
+
2684
+ def setTransmissionModeDeclaration(self, element: ET.Element, key: str, decl : TransmissionModeDeclaration):
2685
+ if decl is not None:
2686
+ child_element = ET.SubElement(element, key)
2687
+ self.setTransmissionModeConditions(child_element, decl.getTransmissionModeConditions())
2688
+ self.setTransmissionModeTiming(child_element, "TRANSMISSION-MODE-TRUE-TIMING", decl.getTransmissionModeTrueTiming())
2689
+
2690
+ def setISignalIPduIPduTimingSpecification(self, element: ET.Element, timing: IPduTiming):
2691
+ if timing is not None:
2692
+ spec_tag = ET.SubElement(element, "I-PDU-TIMING-SPECIFICATIONS")
2693
+ child_element = ET.SubElement(spec_tag, "I-PDU-TIMING")
2694
+ self.setTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION", timing.getTransmissionModeDeclaration())
2531
2695
 
2532
2696
  def writeISignalIPdu(self, element: ET.Element, i_pdu: ISignalIPdu):
2533
2697
  self.logger.debug("ISignalIPdu %s" % i_pdu.short_name)
2534
2698
  child_element = ET.SubElement(element, "I-SIGNAL-I-PDU")
2535
2699
  self.setIdentifiable(child_element, i_pdu)
2536
2700
  self.setChildElementOptionalNumericalValue(child_element, "LENGTH", i_pdu.getLength())
2701
+ self.setISignalIPduIPduTimingSpecification(child_element, i_pdu.getIPduTimingSpecification())
2537
2702
  self.writeISignalToPduMappings(child_element, i_pdu)
2538
2703
  self.setChildElementOptionalLiteral(child_element, "UNUSED-BIT-PATTERN", i_pdu.getUnusedBitPattern())
2539
2704
 
@@ -2628,6 +2793,10 @@ class ARXMLWriter(AbstractARXMLWriter):
2628
2793
  self.writeISignalIPdu(element, ar_element)
2629
2794
  elif isinstance(ar_element, SystemSignal):
2630
2795
  self.writeSystemSignal(element, ar_element)
2796
+ elif isinstance(ar_element, ParameterInterface):
2797
+ self.writeParameterInterface(element, ar_element)
2798
+ elif isinstance(ar_element, GenericEthernetFrame):
2799
+ self.writeGenericEthernetFrame(element, ar_element)
2631
2800
  else:
2632
2801
  raise NotImplementedError("Unsupported Elements of ARPackage <%s>" % type(ar_element))
2633
2802