armodel 1.6.4__py3-none-any.whl → 1.7.1__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 (43) hide show
  1. armodel/cli/arxml_format_cli.py +14 -11
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +50 -13
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +1 -1
  4. armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +86 -0
  5. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +3 -4
  6. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +1 -1
  7. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +95 -13
  8. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +14 -4
  9. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +103 -10
  10. armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +5 -0
  11. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +21 -8
  12. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +24 -0
  13. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +1 -1
  14. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +173 -0
  15. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +1 -1
  16. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +6 -6
  17. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +237 -28
  18. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +223 -0
  19. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +177 -0
  20. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +37 -0
  21. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +88 -16
  22. armodel/models/M2/MSR/AsamHdo/AdminData.py +34 -8
  23. armodel/models/M2/MSR/Documentation/Annotation.py +1 -1
  24. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +54 -0
  25. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +9 -0
  26. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +25 -0
  27. armodel/models/M2/MSR/Documentation/TextModel/LanguageDataModel.py +33 -5
  28. armodel/models/M2/MSR/Documentation/TextModel/MultilanguageData.py +15 -2
  29. armodel/models/M2/MSR/Documentation/__init__.py +1 -1
  30. armodel/models/__init__.py +15 -2
  31. armodel/parser/abstract_arxml_parser.py +55 -18
  32. armodel/parser/arxml_parser.py +344 -101
  33. armodel/tests/test_armodel/models/test_ar_ref.py +7 -4
  34. armodel/tests/test_armodel/parser/test_sw_components.py +6 -19
  35. armodel/tests/test_armodel/parser/test_system.py +2 -2
  36. armodel/writer/abstract_arxml_writer.py +17 -8
  37. armodel/writer/arxml_writer.py +291 -78
  38. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/METADATA +23 -1
  39. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/RECORD +43 -35
  40. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/LICENSE +0 -0
  41. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/WHEEL +0 -0
  42. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/entry_points.txt +0 -0
  43. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/top_level.txt +0 -0
@@ -2,52 +2,61 @@ 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
- from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import InternalConstrs, PhysConstrs
7
- from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxis
8
- from ..models.M2.MSR.DataDictionary.Axis import SwAxisGrouped, SwAxisIndividual
9
- from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
5
+ from armodel.models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
6
+
7
+
8
+
9
+
10
+ from ..models.M2.MSR.AsamHdo.AdminData import AdminData
10
11
  from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
12
+ from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstTextContent, CompuMethod, CompuNominatorDenominator, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
13
+ from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstr, InternalConstrs, PhysConstrs
11
14
  from ..models.M2.MSR.AsamHdo.SpecialData import Sdg
12
- from ..models.M2.MSR.AsamHdo.AdminData import AdminData
13
- from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstTextContent, CompuNominatorDenominator, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
14
- from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph
15
+ from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension, Unit
16
+ from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
17
+ from ..models.M2.MSR.DataDictionary.Axis import SwAxisGrouped, SwAxisIndividual
15
18
  from ..models.M2.MSR.DataDictionary.AuxillaryObjects import SwAddrMethod
16
- from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps
17
- from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension
18
- from ..models.M2.MSR.Documentation.BlockElements import DocumentationBlock
19
- from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuMethod
20
- from ..models.M2.MSR.DataDictionary.DataDefProperties import ValueList
21
- from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultilanguageLongName
22
- from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayout
23
- from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstr
24
- from ..models.M2.MSR.AsamHdo.Units import Unit
19
+ from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxis, SwCalprmAxisSet
20
+ from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, ValueList
21
+ from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayout, SwRecordLayoutGroup, SwRecordLayoutV
25
22
  from ..models.M2.MSR.Documentation.Annotation import Annotation
23
+ from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
24
+ from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
25
+ from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName, LPlainText, LanguageSpecific
26
+ from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText, MultilanguageLongName
26
27
 
27
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption
28
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
29
- from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import TimingExtension
30
- from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef, ExecutionOrderConstraint
31
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
32
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
28
+ from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
33
29
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
34
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType
35
- from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
36
30
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
31
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
32
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswEvent, BswInternalBehavior, BswModeSenderPolicy, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
33
+ from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
34
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
35
+ from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
37
36
  from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Code, Implementation
38
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
39
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataAssignment, ServiceDependency
40
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
37
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
38
+ from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef, ExecutionOrderConstraint
39
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import NvBlockNeeds, RoleBasedDataAssignment, ServiceDependency
41
40
  from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
42
- from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclaration, ModeDeclarationGroup
43
- from ..models.M2.AUTOSARTemplates.CommonStructure.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
44
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
45
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, MultilanguageReferrable, Referrable
46
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswEvent, BswInternalBehavior, BswModeSenderPolicy, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
47
41
  from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
48
- from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
42
+ from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
43
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclaration, ModeDeclarationGroup, ModeDeclarationGroupPrototype
44
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
45
+
49
46
  from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
47
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
48
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, MultilanguageReferrable, Referrable
50
49
  from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
50
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
51
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral, Limit
52
+
53
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption
54
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
55
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
56
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType
57
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
58
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
59
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
51
60
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype
52
61
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
53
62
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior, SynchronousServerCallPoint
@@ -59,36 +68,28 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs
59
68
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, AutosarVariableRef, VariableInAtomicSWCTypeInstanceRef
60
69
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, RPortComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
61
70
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef
62
- from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
63
- from ..models.M2.AUTOSARTemplates.SystemTemplate import System, SystemMapping
64
- from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
65
- from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig
66
- from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import VariableDataPrototypeInSystemInstanceRef
67
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, ISignalMapping
68
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
69
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FrameTriggering, IPdu, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalTriggering, PduTriggering, SecuredIPdu, SystemSignal, DcmIPdu, Frame, ISignal, NPdu, NmPdu, SystemSignalGroup
70
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering, LinUnconditionalFrame
71
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, EcuInstance, CanPhysicalChannel, CommunicationCluster, LinCluster, LinPhysicalChannel, PhysicalChannel
72
- from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
73
- from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming
74
-
75
71
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
76
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import NvBlockNeeds
77
72
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationArrayElement, ApplicationCompositeElementDataPrototype, ApplicationRecordElement, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
78
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
79
- from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
80
73
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ServiceSwComponentType
81
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
82
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
83
- from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxisSet
84
- from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroupPrototype
85
74
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import DataTypeMappingSet
86
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Limit
87
75
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
88
76
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ClientServerInterface, ClientServerOperation, ModeSwitchInterface, ParameterInterface, PortInterface, SenderReceiverInterface, TriggerInterface
89
77
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
90
- from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
91
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral
78
+
79
+ from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
80
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
81
+ 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
82
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
83
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
84
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
85
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, ISignalMapping
86
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
87
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
88
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering, LinUnconditionalFrame
89
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
90
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
91
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
92
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig
92
93
 
93
94
  from .abstract_arxml_writer import AbstractARXMLWriter
94
95
  class ARXMLWriter(AbstractARXMLWriter):
@@ -140,44 +141,62 @@ class ARXMLWriter(AbstractARXMLWriter):
140
141
  self.setARObjectAttributes(element, referrable)
141
142
  self.setShortName(element, referrable.short_name)
142
143
 
144
+ def setLanguageSpecific(self, element: ET.Element, key: str, specific: LanguageSpecific):
145
+ child_element = ET.SubElement(element, key)
146
+ self.setARObjectAttributes(child_element, specific)
147
+ if specific.l is not None:
148
+ child_element.attrib['L'] = specific.l
149
+ child_element.text = specific.value
150
+
151
+ def setLLongName(self, element: ET.Element, name: LLongName):
152
+ self.setLanguageSpecific(element, "L-4", name)
153
+
143
154
  def setMultiLongName(self, element: ET.Element, key: str, long_name: MultilanguageLongName):
144
155
  if long_name is not None:
145
- long_name_tag = ET.SubElement(element, key)
146
- self.setARObjectAttributes(long_name_tag, long_name)
156
+ child_element = ET.SubElement(element, key)
157
+ self.setARObjectAttributes(child_element, long_name)
147
158
  for l4 in long_name.getL4s():
148
- l4_tag = ET.SubElement(long_name_tag, "L-4")
149
- self.setARObjectAttributes(l4_tag, l4)
150
- if l4.l is not None:
151
- l4_tag.attrib['L'] = l4.l
152
- l4_tag.text = l4.value
159
+ self.setLLongName(child_element, l4)
160
+
161
+ def setLOverviewParagraph(self, element: ET.Element, name: LLongName):
162
+ self.setLanguageSpecific(element, "L-2", name)
153
163
 
154
164
  def setMultiLanguageOverviewParagraph(self, element: ET.Element, key: str, paragraph: MultiLanguageOverviewParagraph):
155
165
  if paragraph is not None:
156
- long_name_tag = ET.SubElement(element, key)
157
- self.setARObjectAttributes(long_name_tag, paragraph)
166
+ child_element = ET.SubElement(element, key)
167
+ self.setARObjectAttributes(child_element, paragraph)
158
168
  for l2 in paragraph.getL2s():
159
- l2_tag = ET.SubElement(long_name_tag, "L-2")
160
- self.setARObjectAttributes(l2_tag, l2)
161
- if l2.l is not None:
162
- l2_tag.attrib['L'] = l2.l
163
- l2_tag.text = l2.value
169
+ self.setLOverviewParagraph(child_element, l2)
164
170
 
165
171
  def setMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
166
172
  self.setReferable(element, referrable)
167
173
  if referrable.longName is not None:
168
174
  self.setMultiLongName(element, "LONG-NAME", referrable.longName)
169
175
 
176
+ def setLPlainText(self, element: ET.Element, text: LPlainText):
177
+ self.setLanguageSpecific(element, "L-10", text)
178
+
179
+ def setMultiLanguagePlainText(self, element: ET.Element, key: str, paragraph: MultiLanguagePlainText):
180
+ if paragraph is not None:
181
+ child_element = ET.SubElement(element, key)
182
+ self.setARObjectAttributes(child_element, paragraph)
183
+ for l10 in paragraph.getL10s():
184
+ self.setLPlainText(child_element, l10)
185
+
170
186
  def setAdminData(self, element: ET.Element, admin_data: AdminData):
171
- element = ET.SubElement(element, "ADMIN-DATA")
172
- self.writeSdgs(element, admin_data)
187
+ if admin_data is not None:
188
+ child_element = ET.SubElement(element, "ADMIN-DATA")
189
+ self.setChildElementOptionalLiteral(child_element, "LANGUAGE", admin_data.getLanguage())
190
+ self.setMultiLanguagePlainText(child_element, "USED-LANGUAGES", admin_data.getUsedLanguages())
191
+ self.writeSdgs(child_element, admin_data)
173
192
 
174
193
  def setIdentifiable(self, element: ET.Element, identifiable: Identifiable):
175
194
  self.setMultilanguageReferrable(element, identifiable)
176
195
  self.setAnnotations(element, identifiable.getAnnotations())
177
196
  self.setMultiLanguageOverviewParagraph(element, "DESC", identifiable.getDesc())
178
197
  self.setChildElementOptionalLiteral(element, "CATEGORY", identifiable.getCategory())
179
- if identifiable.getAdminData() is not None:
180
- self.setAdminData(element, identifiable.getAdminData())
198
+ self.setDocumentationBlock(element, "INTRODUCTION", identifiable.getIntroduction())
199
+ self.setAdminData(element, identifiable.getAdminData())
181
200
 
182
201
  def setARElement(self, parent: ET.Element, ar_element: ARElement):
183
202
  self.setIdentifiable(parent, ar_element)
@@ -575,12 +594,23 @@ class ARXMLWriter(AbstractARXMLWriter):
575
594
  self.setARObjectAttributes(child_element, paragraph)
576
595
  self.writeLParagraphs(child_element, paragraph)
577
596
  return paragraphs
597
+
598
+ def setListElement(self, element: ET.Element, key: str, list: ListElement):
599
+ if list is not None:
600
+ child_element = ET.SubElement(element, key)
601
+ type = list.getType()
602
+ if type is not None:
603
+ child_element.attrib['TYPE'] = type
604
+ for item in list.getItems():
605
+ self.setDocumentationBlock(child_element, "ITEM", item)
578
606
 
579
607
  def setDocumentationBlock(self, element: ET.Element, key: str, block: DocumentationBlock):
580
608
  if block is not None:
581
609
  child_element = ET.SubElement(element, key)
582
610
  self.setARObjectAttributes(child_element, block)
583
611
  self.setMultiLanguageParagraphs(child_element, "P", block.getPs())
612
+ for list in block.getLists():
613
+ self.setListElement(child_element, "LIST", list)
584
614
 
585
615
  def writeGeneralAnnotation(self, element: ET.Element, annotation: Annotation):
586
616
  self.setMultiLongName(element, "LABEL", annotation.getLabel())
@@ -646,9 +676,10 @@ class ARXMLWriter(AbstractARXMLWriter):
646
676
  self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-CALIBRATION-ACCESS", sw_data_def_props.getSwCalibrationAccess())
647
677
  self.setSwCalprmAxisSet(sw_data_def_props_conditional_tag, "SW-CALPRM-AXIS-SET", sw_data_def_props.getSwCalprmAxisSet())
648
678
  self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "COMPU-METHOD-REF", sw_data_def_props.getCompuMethodRef())
679
+ self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "DATA-CONSTR-REF", sw_data_def_props.getDataConstrRef())
649
680
  self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-IMPL-POLICY", sw_data_def_props.getSwImplPolicy())
681
+ self.setChildElementOptionalNumericalValue(sw_data_def_props_conditional_tag, "SW-INTENDED-RESOLUTION", sw_data_def_props.getSwIntendedResolution())
650
682
  self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", sw_data_def_props.getImplementationDataTypeRef())
651
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "DATA-CONSTR-REF", sw_data_def_props.getDataConstrRef())
652
683
  self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "SW-RECORD-LAYOUT-REF", sw_data_def_props.getSwRecordLayoutRef())
653
684
  self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "VALUE-AXIS-DATA-TYPE-REF", sw_data_def_props.getValueAxisDataTypeRef())
654
685
  self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "UNIT-REF", sw_data_def_props.getUnitRef())
@@ -963,6 +994,14 @@ class ARXMLWriter(AbstractARXMLWriter):
963
994
  self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", ref.getAutosarVariableIRef().getTargetDataPrototypeRef())
964
995
  self.setChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF", ref.getLocalVariableRef())
965
996
 
997
+ def setComponentInSystemInstanceRef(self, element: ET.Element, tag_name: str, ref: ComponentInSystemInstanceRef):
998
+ if ref is not None:
999
+ child_element = ET.SubElement(element, tag_name)
1000
+ self.setARObjectAttributes(child_element, ref)
1001
+ self.setChildElementOptionalRefType(child_element, "BASE-REF", ref.getBaseRef())
1002
+ self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPOSITION-REF", ref.getContextCompositionRef())
1003
+ self.setChildElementOptionalRefType(child_element, "TARGET-COMPONENT-REF", ref.getTargetComponentRef())
1004
+
966
1005
  def setVariableAccess(self, element: ET.Element, access: VariableAccess):
967
1006
  child_element = ET.SubElement(element, "VARIABLE-ACCESS")
968
1007
  self.setIdentifiable(child_element, access)
@@ -2239,6 +2278,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2239
2278
 
2240
2279
  def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
2241
2280
  self.setChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE", cluster.getCanFdBaudrate())
2281
+ self.setChildElementOptionalNumericalValue(element, "SPEED", cluster.getSpeed())
2242
2282
 
2243
2283
  def writeLinCluster(self, element: ET.Element, cluster: LinCluster):
2244
2284
  self.logger.debug("LinCluster %s" % cluster.short_name)
@@ -2259,14 +2299,89 @@ class ARXMLWriter(AbstractARXMLWriter):
2259
2299
  self.readAbstractCanCluster(child_element, cluster)
2260
2300
 
2261
2301
  def writeCanFrame(self, element: ET.Element, frame: CanFrame):
2262
- self.logger.debug("CanFrame %s" % frame.short_name)
2302
+ self.logger.debug("Write CanFrame %s" % frame.short_name)
2263
2303
  child_element = ET.SubElement(element, "CAN-FRAME")
2264
2304
  self.writeFrame(child_element, frame)
2265
2305
 
2306
+ def writeCommConnectorPort(self, element: ET.Element, port: CommConnectorPort):
2307
+ self.setIdentifiable(element, port)
2308
+ self.setChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION", port.getCommunicationDirection())
2309
+
2310
+ def writeFramePort(self, element: ET.Element, port: FramePort):
2311
+ child_element = ET.SubElement(element, "FRAME-PORT")
2312
+ self.writeCommConnectorPort(child_element, port)
2313
+
2314
+ def writeIPduPort(self, element: ET.Element, port: IPduPort):
2315
+ child_element = ET.SubElement(element, "I-PDU-PORT")
2316
+ self.writeCommConnectorPort(child_element, port)
2317
+
2318
+ def writeISignalPort(self, element: ET.Element, port: ISignalPort):
2319
+ child_element = ET.SubElement(element, "I-SIGNAL-PORT")
2320
+ self.writeCommConnectorPort(child_element, port)
2321
+
2322
+ def writeCommunicationConnectorEcuCommPortInstances(self, element: ET.Element, connector: CommunicationConnector):
2323
+ self.logger.debug("write EcuCommPortInstances of CommunicationConnector %s" % connector.getShortName())
2324
+ ports = connector.getEcuCommPortInstances()
2325
+ if len(ports) > 0:
2326
+ instances_tag = ET.SubElement(element, "ECU-COMM-PORT-INSTANCES")
2327
+ for port in ports:
2328
+ if isinstance(port, FramePort):
2329
+ self.writeFramePort(instances_tag, port)
2330
+ elif isinstance(port, IPduPort):
2331
+ self.writeIPduPort(instances_tag, port)
2332
+ elif isinstance(port, ISignalPort):
2333
+ self.writeISignalPort(instances_tag, port)
2334
+ else:
2335
+ self._raiseError("Unsupported CommConnectorPort <%s>" % type(port))
2336
+
2337
+ def writeCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
2338
+ self.logger.debug("Write CanCommunicationController %s" % controller.getShortName())
2339
+ self.setIdentifiable(element, controller)
2340
+
2341
+ def writeEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
2342
+ controllers = instance.getCommControllers()
2343
+ if len(controllers) > 0:
2344
+ controllers_tag = ET.SubElement(element, "COMM-CONTROLLERS")
2345
+ for controller in controllers:
2346
+ if isinstance(controller, CanCommunicationController):
2347
+ child_element = ET.SubElement(controllers_tag, "CAN-COMMUNICATION-CONTROLLER")
2348
+ self.writeCanCommunicationController(child_element, controller)
2349
+ else:
2350
+ self._raiseError("Unsupported Communication Controller <%s>" % type(controller))
2351
+
2352
+ def writeCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
2353
+ self.setIdentifiable(element, connector)
2354
+ self.setChildElementOptionalRefType(element, "COMM-CONTROLLER-REF", connector.getCommControllerRef())
2355
+ self.writeCommunicationConnectorEcuCommPortInstances(element, connector)
2356
+
2357
+
2358
+ def writeCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
2359
+ self.logger.debug("Write CanCommunicationConnector %s" % connector.getShortName())
2360
+ self.writeCommunicationConnector(element, connector)
2361
+
2362
+ def writeEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
2363
+ connectors = instance.getConnectors()
2364
+ if len(connectors) > 0:
2365
+ connectors_tag = ET.SubElement(element, "CONNECTORS")
2366
+ for connector in connectors:
2367
+ if isinstance(connector, CanCommunicationConnector):
2368
+ child_element = ET.SubElement(connectors_tag, "CAN-COMMUNICATION-CONNECTOR")
2369
+ self.writeCanCommunicationConnector(child_element, connector)
2370
+ else:
2371
+ self._raiseError("Unsupported Communication connector <%s>" % type(connector))
2372
+
2266
2373
  def writeEcuInstance(self, element: ET.Element, instance: EcuInstance):
2267
2374
  self.logger.debug("EcuInstance %s" % instance.short_name)
2268
2375
  child_element = ET.SubElement(element, "ECU-INSTANCE")
2269
2376
  self.setIdentifiable(child_element, instance)
2377
+ self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-GW-TIME-BASE", instance.getComConfigurationGwTimeBase())
2378
+ self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-RX-TIME-BASE", instance.getComConfigurationRxTimeBase())
2379
+ self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-TX-TIME-BASE", instance.getComConfigurationTxTimeBase())
2380
+ self.setChildElementOptionalBooleanValue(child_element, "COM-ENABLE-MDT-FOR-CYCLIC-TRANSMISSION", instance.getComEnableMDTForCyclicTransmission())
2381
+ self.writeEcuInstanceCommControllers(child_element, instance)
2382
+ self.writeEcuInstanceConnectors(child_element, instance)
2383
+ self.setChildElementOptionalBooleanValue(child_element, "SLEEP-MODE-SUPPORTED", instance.getSleepModeSupported())
2384
+ self.setChildElementOptionalBooleanValue(child_element, "WAKE-UP-OVER-BUS-SUPPORTED", instance.getWakeUpOverBusSupported())
2270
2385
 
2271
2386
  def writeSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
2272
2387
  self.logger.debug("Write SystemSignalGroup %s" % group.short_name)
@@ -2299,12 +2414,33 @@ class ARXMLWriter(AbstractARXMLWriter):
2299
2414
  self.setSenderReceiverToSignalGroupMapping(child_element, data_mapping)
2300
2415
  else:
2301
2416
  raise NotImplementedError("Unsupported Data Mapping %s" % type(data_mapping))
2417
+
2418
+ def setSwcToEcuMapping(self, element: ET.Element, mapping: SwcToEcuMapping):
2419
+ child_element = ET.SubElement(element, "SWC-TO-ECU-MAPPING")
2420
+ self.setIdentifiable(child_element, mapping)
2421
+ irefs = mapping.getComponentIRefs()
2422
+ if len(irefs) > 0:
2423
+ irefs_tag = ET.SubElement(child_element, "COMPONENT-IREFS")
2424
+ for iref in irefs:
2425
+ self.setComponentInSystemInstanceRef(irefs_tag, "COMPONENT-IREF", iref)
2426
+ self.setChildElementOptionalRefType(child_element, "ECU-INSTANCE-REF", mapping.getEcuInstanceRef())
2427
+
2428
+ def writeSystemMappingSwMappings(self, element: ET.Element, system_mapping: SystemMapping):
2429
+ sw_mappings = system_mapping.getSwMappings()
2430
+ if len(sw_mappings) > 0:
2431
+ child_element = ET.SubElement(element, "SW-MAPPINGS")
2432
+ for sw_mapping in sw_mappings:
2433
+ if isinstance(sw_mapping, SwcToEcuMapping):
2434
+ self.setSwcToEcuMapping(child_element, sw_mapping)
2435
+ else:
2436
+ raise NotImplementedError("Unsupported Sw Mapping %s" % type(sw_mapping))
2302
2437
 
2303
2438
  def writeSystemMapping(self, element: ET.Element, mapping: SystemMapping):
2304
2439
  self.logger.debug("Write SystemMapping %s" % mapping.short_name)
2305
2440
  child_element = ET.SubElement(element, "SYSTEM-MAPPING")
2306
2441
  self.setIdentifiable(child_element, mapping)
2307
2442
  self.writeSystemMappingDataMappings(child_element, mapping)
2443
+ self.writeSystemMappingSwMappings(child_element, mapping)
2308
2444
 
2309
2445
  def writeSystemMappings(self, element: ET.Element, system: System):
2310
2446
  mappings = system.getMappings()
@@ -2316,6 +2452,15 @@ class ARXMLWriter(AbstractARXMLWriter):
2316
2452
  else:
2317
2453
  raise NotImplementedError("Unsupported Mapping %s" % type(mapping))
2318
2454
 
2455
+ def writeRootSwCompositionPrototype(self, element: ET.Element, system: System):
2456
+ prototype = system.getRootSoftwareComposition()
2457
+ if prototype is not None:
2458
+ self.logger.debug("Write RootSwCompositionPrototype <%s>" % prototype.getShortName())
2459
+ child_element = ET.SubElement(element, "ROOT-SOFTWARE-COMPOSITIONS")
2460
+ child_element = ET.SubElement(child_element, "ROOT-SW-COMPOSITION-PROTOTYPE")
2461
+ self.setIdentifiable(child_element, prototype)
2462
+ self.setChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF", prototype.getSoftwareCompositionTRef())
2463
+
2319
2464
  def writeSystem(self, element: ET.Element, system: System):
2320
2465
  self.logger.debug("Write System %s" % system.short_name)
2321
2466
  child_element = ET.SubElement(element, "SYSTEM")
@@ -2330,6 +2475,8 @@ class ARXMLWriter(AbstractARXMLWriter):
2330
2475
  self.setChildElementOptionalRefType(fibex_element_ref_conditional_tag, "FIBEX-ELEMENT-REF", ref)
2331
2476
 
2332
2477
  self.writeSystemMappings(child_element, system)
2478
+ self.writeRootSwCompositionPrototype(child_element, system)
2479
+ self.setChildElementOptionalRevisionLabelString(child_element, "SYSTEM-VERSION", system.getSystemVersion())
2333
2480
 
2334
2481
  def writePhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
2335
2482
  self.logger.debug("Write PhysicalDimension %s" % dimension.short_name)
@@ -2518,11 +2665,16 @@ class ARXMLWriter(AbstractARXMLWriter):
2518
2665
  child_element = ET.SubElement(element, "PARAMETER-INTERFACE")
2519
2666
  self.setIdentifiable(child_element, signal)
2520
2667
 
2521
- def writeGenericEthernetFrame(self, element: ET.Element, signal: SystemSignal):
2668
+ def writeGenericEthernetFrame(self, element: ET.Element, signal: GenericEthernetFrame):
2522
2669
  self.logger.debug("Write GenericEthernetFrame %s" % signal.short_name)
2523
2670
  child_element = ET.SubElement(element, "ETHERNET-FRAME")
2524
2671
  self.writeFrame(child_element, signal)
2525
2672
 
2673
+ def writeLifeCycleInfoSet(self, element: ET.Element, set: LifeCycleInfoSet):
2674
+ self.logger.debug("Write LifeCycleInfoSet %s" % set.short_name)
2675
+ child_element = ET.SubElement(element, "LIFE-CYCLE-INFO-SET")
2676
+ self.setIdentifiable(child_element, set)
2677
+
2526
2678
  def writeISignalToPduMappings(self, element: ET.Element, parent: ISignalIPdu):
2527
2679
  mappings = parent.getISignalToPduMappings()
2528
2680
  if len(mappings) > 0:
@@ -2536,12 +2688,55 @@ class ARXMLWriter(AbstractARXMLWriter):
2536
2688
  self.setChildElementOptionalNumericalValue(child_element, "START-POSITION", mapping.getStartPosition())
2537
2689
  self.setChildElementOptionalLiteral(child_element, "TRANSFER-PROPERTY", mapping.getTransferProperty())
2538
2690
  self.setChildElementOptionalNumericalValue(child_element, "UPDATE-INDICATION-BIT-POSITION", mapping.getUpdateIndicationBitPosition())
2691
+
2692
+ def setDataFilter(self, element: ET.Element, key: str, filter: DataFilter):
2693
+ child_element = ET.SubElement(element, key)
2694
+ self.setChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE", filter.getDataFilterType())
2695
+
2696
+ def setTransmissionModeConditions(self, element: ET.Element, conditions: List[TransmissionModeCondition]):
2697
+ if len(conditions) > 0:
2698
+ conditions_tag = ET.SubElement(element, "TRANSMISSION-MODE-CONDITIONS")
2699
+ for condition in conditions:
2700
+ child_element = ET.SubElement(conditions_tag, "TRANSMISSION-MODE-CONDITION")
2701
+ self.setDataFilter(child_element, "DATA-FILTER", condition.getDataFilter())
2702
+ self.setChildElementOptionalRefType(child_element, "I-SIGNAL-IN-I-PDU-REF", condition.getISignalInIPduRef())
2703
+
2704
+ def setTimeRangeType(self, element: ET.Element, key: str, time_range: TimeRangeType):
2705
+ if time_range is not None:
2706
+ child_element = ET.SubElement(element, key)
2707
+ self.setChildElementOptionalTimeValue(child_element, "VALUE", time_range.getValue())
2708
+
2709
+ def setEventControlledTiming(self, element: ET.Element, key: str, timing: EventControlledTiming):
2710
+ if timing is not None:
2711
+ child_element = ET.SubElement(element, key)
2712
+ self.setChildElementOptionalIntegerValue(child_element, "NUMBER-OF-REPETITIONS", timing.getNumberOfRepetitions())
2713
+ self.setTimeRangeType(child_element, "REPETITION-PERIOD", timing.getRepetitionPeriod())
2714
+
2715
+ def setTransmissionModeTiming(self, element: ET.Element, key: str, timing: TransmissionModeTiming):
2716
+ if timing is not None:
2717
+ self.logger.debug("Set TransmissionModeTiming of <%s>" % key)
2718
+ child_element = ET.SubElement(element, key)
2719
+ #timing.getCyclicTiming(child_element, "")
2720
+ self.setEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING", timing.getEventControlledTiming())
2721
+
2722
+ def setTransmissionModeDeclaration(self, element: ET.Element, key: str, decl : TransmissionModeDeclaration):
2723
+ if decl is not None:
2724
+ child_element = ET.SubElement(element, key)
2725
+ self.setTransmissionModeConditions(child_element, decl.getTransmissionModeConditions())
2726
+ self.setTransmissionModeTiming(child_element, "TRANSMISSION-MODE-TRUE-TIMING", decl.getTransmissionModeTrueTiming())
2727
+
2728
+ def setISignalIPduIPduTimingSpecification(self, element: ET.Element, timing: IPduTiming):
2729
+ if timing is not None:
2730
+ spec_tag = ET.SubElement(element, "I-PDU-TIMING-SPECIFICATIONS")
2731
+ child_element = ET.SubElement(spec_tag, "I-PDU-TIMING")
2732
+ self.setTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION", timing.getTransmissionModeDeclaration())
2539
2733
 
2540
2734
  def writeISignalIPdu(self, element: ET.Element, i_pdu: ISignalIPdu):
2541
2735
  self.logger.debug("ISignalIPdu %s" % i_pdu.short_name)
2542
2736
  child_element = ET.SubElement(element, "I-SIGNAL-I-PDU")
2543
2737
  self.setIdentifiable(child_element, i_pdu)
2544
2738
  self.setChildElementOptionalNumericalValue(child_element, "LENGTH", i_pdu.getLength())
2739
+ self.setISignalIPduIPduTimingSpecification(child_element, i_pdu.getIPduTimingSpecification())
2545
2740
  self.writeISignalToPduMappings(child_element, i_pdu)
2546
2741
  self.setChildElementOptionalLiteral(child_element, "UNUSED-BIT-PATTERN", i_pdu.getUnusedBitPattern())
2547
2742
 
@@ -2640,9 +2835,23 @@ class ARXMLWriter(AbstractARXMLWriter):
2640
2835
  self.writeParameterInterface(element, ar_element)
2641
2836
  elif isinstance(ar_element, GenericEthernetFrame):
2642
2837
  self.writeGenericEthernetFrame(element, ar_element)
2838
+ elif isinstance(ar_element, LifeCycleInfoSet):
2839
+ self.writeLifeCycleInfoSet(element, ar_element)
2643
2840
  else:
2644
2841
  raise NotImplementedError("Unsupported Elements of ARPackage <%s>" % type(ar_element))
2645
2842
 
2843
+ def writeReferenceBases(self, element: ET.Element, bases: List[ReferenceBase]):
2844
+ self.logger.debug("Write ReferenceBases")
2845
+ if len(bases) > 0:
2846
+ bases_tag = ET.SubElement(element, "REFERENCE-BASES")
2847
+ for base in bases:
2848
+ child_element = ET.SubElement(bases_tag, "REFERENCE-BASE")
2849
+ self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", base.getShortLabel())
2850
+ self.setChildElementOptionalBooleanValue(child_element, "IS-DEFAULT", base.getIsDefault())
2851
+ self.setChildElementOptionalBooleanValue(child_element, "IS-GLOBAL", base.getIsDefault())
2852
+ self.setChildElementOptionalBooleanValue(child_element, "BASE-IS-THIS-PACKAGE", base.getBaseIsThisPackage())
2853
+ self.setChildElementOptionalRefType(child_element, "PACKAGE-REF", base.getPackageRef())
2854
+
2646
2855
  def writeARPackages(self, element: ET.Element, pkgs: List[ARPackage]):
2647
2856
  if len(pkgs) > 0:
2648
2857
  pkgs_tag = ET.SubElement(element, "AR-PACKAGES")
@@ -2653,6 +2862,8 @@ class ARXMLWriter(AbstractARXMLWriter):
2653
2862
  self.setIdentifiable(pkg_tag, pkg)
2654
2863
  self.logger.debug("writeARPackage %s" % pkg.full_name)
2655
2864
 
2865
+ self.writeReferenceBases(pkg_tag, pkg.getReferenceBases())
2866
+
2656
2867
  if pkg.getTotalElement() > 0:
2657
2868
  elements_tag = ET.SubElement(pkg_tag, "ELEMENTS")
2658
2869
 
@@ -2661,6 +2872,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2661
2872
  self.writeARPackageElement(elements_tag, ar_element)
2662
2873
 
2663
2874
  self.writeARPackages(pkg_tag, pkg.getARPackages())
2875
+
2664
2876
 
2665
2877
  def save(self, filename, document: AUTOSAR):
2666
2878
  self.logger.info("Save %s ..." % filename)
@@ -2669,6 +2881,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2669
2881
  root.attrib["xmlns:xsi"] = "http://www.w3.org/2001/XMLSchema-instance"
2670
2882
  root.attrib["xsi:schemaLocation"] = document.schema_location
2671
2883
 
2884
+ self.setAdminData(root, document.getAdminData())
2672
2885
  self.writeARPackages(root, document.getARPackages())
2673
2886
 
2674
2887
  self.saveToFile(filename, root)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: armodel
3
- Version: 1.6.4
3
+ Version: 1.7.1
4
4
  Summary: the python arxml parser
5
5
  Home-page: http://github.com/melodypapa/py-armodel
6
6
  Author: melodypapa
@@ -369,3 +369,25 @@ Fix the attribute intervalType of **Limit** is empty issue.
369
369
  2. Fix the Binary value
370
370
  3. Refactor the SwComponentType.
371
371
 
372
+ **Version 1.7.0**
373
+
374
+ 1. To support the following AR Element:
375
+ * SWC-TO-ECU-MAPPING
376
+ * SW-MAPPINGS
377
+ * ROOT-SOFTWARE-COMPOSITIONS
378
+ * SPEED
379
+ * ECU-INSTANCE
380
+ * COMM-CONTROLLERS
381
+ * CAN-COMMUNICATION-CONNECTOR
382
+ * I-PDU-TIMING
383
+ * DATA-FILTER
384
+ * EVENT-CONTROLLED-TIMING
385
+
386
+ **Version 1.7.1**
387
+
388
+ 1. To support the following AR Element:
389
+ * INTRODUCTION
390
+ * LIST
391
+ * SW-INTENDED-RESOLUTION
392
+ * REFERENCE-BASE
393
+