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.
- armodel/cli/arxml_format_cli.py +14 -11
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +50 -13
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +1 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +86 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +3 -4
- armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +1 -1
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +95 -13
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +14 -4
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +103 -10
- armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +5 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +21 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +24 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +1 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +173 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +1 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +6 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +237 -28
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +223 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +177 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +37 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +88 -16
- armodel/models/M2/MSR/AsamHdo/AdminData.py +34 -8
- armodel/models/M2/MSR/Documentation/Annotation.py +1 -1
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +54 -0
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +9 -0
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +25 -0
- armodel/models/M2/MSR/Documentation/TextModel/LanguageDataModel.py +33 -5
- armodel/models/M2/MSR/Documentation/TextModel/MultilanguageData.py +15 -2
- armodel/models/M2/MSR/Documentation/__init__.py +1 -1
- armodel/models/__init__.py +15 -2
- armodel/parser/abstract_arxml_parser.py +55 -18
- armodel/parser/arxml_parser.py +344 -101
- armodel/tests/test_armodel/models/test_ar_ref.py +7 -4
- armodel/tests/test_armodel/parser/test_sw_components.py +6 -19
- armodel/tests/test_armodel/parser/test_system.py +2 -2
- armodel/writer/abstract_arxml_writer.py +17 -8
- armodel/writer/arxml_writer.py +291 -78
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/METADATA +23 -1
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/RECORD +43 -35
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/LICENSE +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/WHEEL +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/entry_points.txt +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/top_level.txt +0 -0
armodel/writer/arxml_writer.py
CHANGED
|
@@ -2,52 +2,61 @@ import xml.etree.cElementTree as ET
|
|
|
2
2
|
|
|
3
3
|
from typing import List
|
|
4
4
|
|
|
5
|
-
from
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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.
|
|
13
|
-
from ..models.M2.MSR.
|
|
14
|
-
from ..models.M2.MSR.
|
|
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.
|
|
17
|
-
from ..models.M2.MSR.
|
|
18
|
-
from ..models.M2.MSR.
|
|
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.
|
|
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.
|
|
39
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.
|
|
40
|
-
from ..models.M2.AUTOSARTemplates.
|
|
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
|
|
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
|
-
|
|
91
|
-
from ..models.M2.AUTOSARTemplates.
|
|
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
|
-
|
|
146
|
-
self.setARObjectAttributes(
|
|
156
|
+
child_element = ET.SubElement(element, key)
|
|
157
|
+
self.setARObjectAttributes(child_element, long_name)
|
|
147
158
|
for l4 in long_name.getL4s():
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
157
|
-
self.setARObjectAttributes(
|
|
166
|
+
child_element = ET.SubElement(element, key)
|
|
167
|
+
self.setARObjectAttributes(child_element, paragraph)
|
|
158
168
|
for l2 in paragraph.getL2s():
|
|
159
|
-
|
|
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
|
-
|
|
172
|
-
|
|
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
|
-
|
|
180
|
-
|
|
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:
|
|
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.
|
|
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
|
+
|