armodel 1.6.4__py3-none-any.whl → 1.7.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/cli/arxml_format_cli.py +14 -11
- 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/GenericStructure/GeneralTemplateClasses/ARPackage.py +3 -1
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +70 -2
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +21 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +24 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +173 -0
- 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/__init__.py +12 -1
- armodel/parser/abstract_arxml_parser.py +50 -16
- armodel/parser/arxml_parser.py +249 -80
- armodel/tests/test_armodel/parser/test_sw_components.py +0 -22
- armodel/tests/test_armodel/parser/test_system.py +2 -2
- armodel/writer/abstract_arxml_writer.py +10 -1
- armodel/writer/arxml_writer.py +215 -58
- {armodel-1.6.4.dist-info → armodel-1.7.0.dist-info}/METADATA +15 -1
- {armodel-1.6.4.dist-info → armodel-1.7.0.dist-info}/RECORD +28 -24
- {armodel-1.6.4.dist-info → armodel-1.7.0.dist-info}/LICENSE +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.0.dist-info}/WHEEL +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.0.dist-info}/entry_points.txt +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.0.dist-info}/top_level.txt +0 -0
armodel/parser/arxml_parser.py
CHANGED
|
@@ -2,12 +2,16 @@ from typing import List
|
|
|
2
2
|
import xml.etree.ElementTree as ET
|
|
3
3
|
import os
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
8
9
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
9
|
-
from ..models.M2.MSR.AsamHdo.
|
|
10
|
-
from ..models.M2.MSR.
|
|
10
|
+
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition
|
|
11
|
+
from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
|
|
12
|
+
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuMethod, Compu, CompuConst, CompuConstTextContent, CompuNominatorDenominator, CompuRationalCoeffs, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
|
|
13
|
+
from ..models.M2.MSR.AsamHdo.SpecialData import Sdg, Sd
|
|
14
|
+
from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
|
|
11
15
|
from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, SwPointerTargetProps
|
|
12
16
|
from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxis
|
|
13
17
|
from ..models.M2.MSR.DataDictionary.Axis import SwAxisGrouped, SwAxisIndividual
|
|
@@ -15,80 +19,67 @@ from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroupConte
|
|
|
15
19
|
from ..models.M2.MSR.DataDictionary.DataDefProperties import ValueList
|
|
16
20
|
from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroup
|
|
17
21
|
from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxisSet
|
|
18
|
-
from ..models.M2.MSR.Documentation.
|
|
22
|
+
from ..models.M2.MSR.Documentation.Annotation import Annotation, GeneralAnnotation
|
|
19
23
|
from ..models.M2.MSR.Documentation.BlockElements import DocumentationBlock
|
|
20
|
-
from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LOverviewParagraph
|
|
24
|
+
from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName, LOverviewParagraph
|
|
21
25
|
from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultilanguageLongName
|
|
22
|
-
from ..models.M2.MSR.Documentation.Annotation import GeneralAnnotation
|
|
23
26
|
|
|
24
|
-
from ..models.M2.AUTOSARTemplates.
|
|
25
|
-
from ..models.M2.AUTOSARTemplates.
|
|
26
|
-
from ..models.M2.AUTOSARTemplates.
|
|
27
|
-
from ..models.M2.AUTOSARTemplates.
|
|
28
|
-
from ..models.M2.AUTOSARTemplates.
|
|
29
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.
|
|
30
|
-
from ..models.M2.AUTOSARTemplates.
|
|
31
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroup, ModeRequestTypeMap
|
|
32
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
|
|
27
|
+
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
28
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalBehavior, BswModuleEntity, BswScheduleEvent, BswModeSenderPolicy
|
|
29
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
|
|
30
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
|
|
31
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
|
|
32
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
|
|
33
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import ImplementationProps, Code
|
|
34
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroup, ModeRequestTypeMap, ModeDeclarationGroupPrototype
|
|
33
35
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
|
|
34
36
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import MemorySection
|
|
35
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
|
|
36
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
|
|
37
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
|
|
37
38
|
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
|
|
38
|
-
from ..models.M2.AUTOSARTemplates.
|
|
39
|
-
from ..models.M2.AUTOSARTemplates.
|
|
40
|
-
from ..models.M2.AUTOSARTemplates.
|
|
41
|
-
from ..models.M2.AUTOSARTemplates.
|
|
42
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.
|
|
43
|
-
from ..models.M2.AUTOSARTemplates.
|
|
39
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataAssignment, ServiceDependency
|
|
40
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
|
|
41
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
42
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
|
|
43
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import TimingExtension
|
|
44
|
+
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
|
|
44
45
|
from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
|
|
45
|
-
from ..models.M2.AUTOSARTemplates.
|
|
46
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable
|
|
47
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
|
|
48
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
|
|
49
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral
|
|
50
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
|
|
51
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent
|
|
52
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationRecordDataType, ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
|
|
53
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet, EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
|
|
46
54
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
47
55
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
48
56
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, AutosarVariableRef, VariableInAtomicSWCTypeInstanceRef
|
|
49
|
-
from ..models.M2.AUTOSARTemplates.
|
|
57
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
|
|
58
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
|
|
50
59
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
51
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument
|
|
60
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
|
|
52
61
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import CompositionSwComponentType, PortGroup, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
|
|
53
62
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector
|
|
54
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import ModeAccessPoint
|
|
63
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
|
|
55
64
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
65
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
56
66
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
57
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering
|
|
58
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanPhysicalChannel, CommunicationCluster, LinPhysicalChannel, PhysicalChannel
|
|
59
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering, RxIdentifierRange
|
|
60
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import ISignalMapping
|
|
61
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import Frame, FrameTriggering, IPdu, ISignalIPdu, ISignalTriggering, PduTriggering
|
|
62
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate import System, SystemMapping
|
|
63
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
64
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
|
|
65
|
-
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
|
|
66
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
|
|
67
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
|
|
68
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import TimingExtension
|
|
69
|
-
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswModeSenderPolicy
|
|
70
67
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, SenderReceiverInterface
|
|
71
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroupPrototype
|
|
72
|
-
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
|
|
73
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import MultilanguageReferrable
|
|
74
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType
|
|
75
|
-
|
|
76
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
|
|
77
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
78
|
-
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
79
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral
|
|
80
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataAssignment, ServiceDependency
|
|
81
68
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
|
|
82
69
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
83
|
-
|
|
84
|
-
from ..models.M2.
|
|
85
|
-
from ..models.M2.
|
|
86
|
-
from ..models.M2.
|
|
87
|
-
from ..models.M2.
|
|
88
|
-
from ..models.M2.
|
|
89
|
-
from ..models.M2.AUTOSARTemplates.
|
|
90
|
-
from ..models.M2.AUTOSARTemplates.
|
|
91
|
-
from ..models.M2.AUTOSARTemplates.
|
|
70
|
+
|
|
71
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping , System, SystemMapping
|
|
72
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
73
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
|
|
74
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
|
|
75
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering
|
|
76
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, FramePort, IPduPort, ISignalPort, LinPhysicalChannel, PhysicalChannel
|
|
77
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import Frame, FrameTriggering, IPdu, IPduTiming, ISignalIPdu, ISignalTriggering, PduTriggering
|
|
78
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
79
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
80
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering, RxIdentifierRange
|
|
81
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
|
|
82
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import ISignalMapping
|
|
92
83
|
|
|
93
84
|
from .abstract_arxml_parser import AbstractARXMLParser
|
|
94
85
|
|
|
@@ -186,29 +177,39 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
186
177
|
return paragraph
|
|
187
178
|
|
|
188
179
|
def getVariableInAtomicSWCTypeInstanceRef(self, element: ET.Element) -> VariableInAtomicSWCTypeInstanceRef:
|
|
189
|
-
|
|
180
|
+
iref = None
|
|
181
|
+
if element is not None:
|
|
182
|
+
iref = VariableInAtomicSWCTypeInstanceRef()
|
|
183
|
+
self.readElementAttributes(element, iref)
|
|
184
|
+
iref.setPortPrototypeRef(self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF"))
|
|
185
|
+
iref.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
|
|
186
|
+
return iref
|
|
187
|
+
|
|
188
|
+
def getComponentInSystemInstanceRef(self, element: ET.Element) -> ComponentInSystemInstanceRef:
|
|
189
|
+
iref = None
|
|
190
190
|
if element is not None:
|
|
191
|
-
|
|
192
|
-
self.readElementAttributes(element,
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
191
|
+
iref = ComponentInSystemInstanceRef()
|
|
192
|
+
self.readElementAttributes(element, iref)
|
|
193
|
+
iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF"))
|
|
194
|
+
iref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF"))
|
|
195
|
+
iref.setTargetComponentRef(self.getChildElementOptionalRefType(element, "TARGET-COMPONENT-REF"))
|
|
196
|
+
return iref
|
|
196
197
|
|
|
197
198
|
def getAutosarVariableInImplDatatype(self, element: ET.Element) -> AutosarVariableRef:
|
|
198
199
|
child_element = self.find(element, "ACCESSED-VARIABLE")
|
|
199
|
-
|
|
200
|
+
ref = None
|
|
200
201
|
if (child_element is not None):
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
return
|
|
202
|
+
ref = AutosarVariableRef()
|
|
203
|
+
ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF")))
|
|
204
|
+
return ref
|
|
204
205
|
|
|
205
206
|
def getLocalVariableRef(self, element: ET.Element) -> AutosarVariableRef:
|
|
206
207
|
child_element = self.find(element, "ACCESSED-VARIABLE")
|
|
207
|
-
|
|
208
|
+
ref = None
|
|
208
209
|
if (child_element is not None):
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
return
|
|
210
|
+
ref = AutosarVariableRef()
|
|
211
|
+
ref.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
|
|
212
|
+
return ref
|
|
212
213
|
|
|
213
214
|
def _readVariableAccesses(self, element: ET.Element, parent: RunnableEntity, key: str):
|
|
214
215
|
for child_element in element.findall("./xmlns:%s/xmlns:VARIABLE-ACCESS" % key, self.nsmap):
|
|
@@ -2148,7 +2149,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2148
2149
|
.setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
|
|
2149
2150
|
|
|
2150
2151
|
def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
|
|
2151
|
-
cluster.setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE"))
|
|
2152
|
+
cluster.setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE")) \
|
|
2153
|
+
.setSpeed(self.getChildElementOptionalNumericalValue(element, "SPEED"))
|
|
2152
2154
|
|
|
2153
2155
|
def readLinCluster(self, element: ET.Element, parent: ARPackage):
|
|
2154
2156
|
short_name = self.getShortName(element)
|
|
@@ -2318,21 +2320,90 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2318
2320
|
|
|
2319
2321
|
def readCanTpConfig(self, element: ET.Element, parent: ARPackage):
|
|
2320
2322
|
short_name = self.getShortName(element)
|
|
2321
|
-
self.logger.debug("CanTpConfig %s" % short_name)
|
|
2323
|
+
self.logger.debug("read CanTpConfig %s" % short_name)
|
|
2322
2324
|
pdu = parent.createCanTpConfig(short_name)
|
|
2323
2325
|
self.readIdentifiable(element, pdu)
|
|
2324
2326
|
|
|
2325
2327
|
def readCanFrame(self, element: ET.Element, parent: ARPackage):
|
|
2326
2328
|
short_name = self.getShortName(element)
|
|
2327
|
-
self.logger.debug("CanFrame %s" % short_name)
|
|
2329
|
+
self.logger.debug("read CanFrame %s" % short_name)
|
|
2328
2330
|
frame = parent.createCanFrame(short_name)
|
|
2329
2331
|
self.readFrame(element, frame)
|
|
2330
2332
|
|
|
2333
|
+
def readCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
|
|
2334
|
+
self.logger.debug("read CanCommunicationController %s" % controller.getShortName())
|
|
2335
|
+
self.readIdentifiable(element, controller)
|
|
2336
|
+
|
|
2337
|
+
def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
|
|
2338
|
+
self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
|
|
2339
|
+
for child_element in self.findall(element, "COMM-CONTROLLERS/*"):
|
|
2340
|
+
tag_name = self.getTagName(child_element)
|
|
2341
|
+
if tag_name == "CAN-COMMUNICATION-CONTROLLER":
|
|
2342
|
+
controller = instance.createCanCommunicationController(self.getShortName(child_element))
|
|
2343
|
+
self.readCanCommunicationController(child_element, controller)
|
|
2344
|
+
else:
|
|
2345
|
+
self._raiseError("Unsupported Communication Controller <%s>" % tag_name)
|
|
2346
|
+
|
|
2347
|
+
def readCommConnectorPort(self, element: ET.Element, port: CommConnectorPort):
|
|
2348
|
+
self.readIdentifiable(element, port)
|
|
2349
|
+
port.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION"))
|
|
2350
|
+
|
|
2351
|
+
def readFramePort(self, element: ET.Element, port: FramePort):
|
|
2352
|
+
self.readCommConnectorPort(element, port)
|
|
2353
|
+
|
|
2354
|
+
def readIPduPort(self, element: ET.Element, port: IPduPort):
|
|
2355
|
+
self.readCommConnectorPort(element, port)
|
|
2356
|
+
|
|
2357
|
+
def readISignalPort(self, element: ET.Element, port: ISignalPort):
|
|
2358
|
+
self.readCommConnectorPort(element, port)
|
|
2359
|
+
|
|
2360
|
+
def readCommunicationConnectorEcuCommPortInstances(self, element: ET.Element, connector: CommunicationConnector):
|
|
2361
|
+
self.logger.debug("read EcuCommPortInstances of CommunicationConnector %s" % connector.getShortName())
|
|
2362
|
+
for child_element in self.findall(element, "ECU-COMM-PORT-INSTANCES/*"):
|
|
2363
|
+
tag_name = self.getTagName(child_element)
|
|
2364
|
+
if tag_name == "FRAME-PORT":
|
|
2365
|
+
port = connector.createFramePort(self.getShortName(child_element))
|
|
2366
|
+
self.readFramePort(child_element, port)
|
|
2367
|
+
elif tag_name == "I-PDU-PORT":
|
|
2368
|
+
port = connector.createIPduPort(self.getShortName(child_element))
|
|
2369
|
+
self.readIPduPort(child_element, port)
|
|
2370
|
+
elif tag_name == "I-SIGNAL-PORT":
|
|
2371
|
+
port = connector.createISignalPort(self.getShortName(child_element))
|
|
2372
|
+
self.readISignalPort(child_element, port)
|
|
2373
|
+
else:
|
|
2374
|
+
self._raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
|
|
2375
|
+
|
|
2376
|
+
def readCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
|
|
2377
|
+
self.readIdentifiable(element, connector)
|
|
2378
|
+
connector.setCommControllerRef(self.getChildElementOptionalRefType(element, "COMM-CONTROLLER-REF"))
|
|
2379
|
+
self.readCommunicationConnectorEcuCommPortInstances(element, connector)
|
|
2380
|
+
|
|
2381
|
+
def readCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
|
|
2382
|
+
self.readCommunicationConnector(element, connector)
|
|
2383
|
+
|
|
2384
|
+
def readEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
|
|
2385
|
+
self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
|
|
2386
|
+
for child_element in self.findall(element, "CONNECTORS/*"):
|
|
2387
|
+
tag_name = self.getTagName(child_element)
|
|
2388
|
+
if tag_name == "CAN-COMMUNICATION-CONNECTOR":
|
|
2389
|
+
connector = instance.createCanCommunicationConnector(self.getShortName(child_element))
|
|
2390
|
+
self.readCanCommunicationConnector(child_element, connector)
|
|
2391
|
+
else:
|
|
2392
|
+
self._raiseError("Unsupported Communication Controller <%s>" % tag_name)
|
|
2393
|
+
|
|
2331
2394
|
def readEcuInstance(self, element: ET.Element, parent: ARPackage):
|
|
2332
2395
|
short_name = self.getShortName(element)
|
|
2333
2396
|
self.logger.debug("EcuInstance %s" % short_name)
|
|
2334
2397
|
instance = parent.createEcuInstance(short_name)
|
|
2335
2398
|
self.readIdentifiable(element, instance)
|
|
2399
|
+
instance.setComConfigurationGwTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-GW-TIME-BASE")) \
|
|
2400
|
+
.setComConfigurationRxTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-RX-TIME-BASE")) \
|
|
2401
|
+
.setComConfigurationTxTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-TX-TIME-BASE")) \
|
|
2402
|
+
.setComEnableMDTForCyclicTransmission(self.getChildElementOptionalBooleanValue(element, "COM-ENABLE-MDT-FOR-CYCLIC-TRANSMISSION"))
|
|
2403
|
+
self.readEcuInstanceCommControllers(element, instance)
|
|
2404
|
+
self.readEcuInstanceConnectors(element, instance)
|
|
2405
|
+
instance.setSleepModeSupported(self.getChildElementOptionalBooleanValue(element, "SLEEP-MODE-SUPPORTED")) \
|
|
2406
|
+
.setWakeUpOverBusSupported(self.getChildElementOptionalBooleanValue(element, "WAKE-UP-OVER-BUS-SUPPORTED"))
|
|
2336
2407
|
|
|
2337
2408
|
'''
|
|
2338
2409
|
def getFrameMappings(self, element: ET.Element) -> List[FrameMapping]:
|
|
@@ -2563,13 +2634,84 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2563
2634
|
.setStartPosition(self.getChildElementOptionalNumericalValue(child_element, "START-POSITION")) \
|
|
2564
2635
|
.setTransferProperty(self.getChildElementOptionalLiteral(child_element, "TRANSFER-PROPERTY")) \
|
|
2565
2636
|
.setUpdateIndicationBitPosition(self.getChildElementOptionalNumericalValue(child_element, "UPDATE-INDICATION-BIT-POSITION"))
|
|
2637
|
+
|
|
2638
|
+
def getDataFilter(self, element: ET.Element, key: str) -> DataFilter:
|
|
2639
|
+
filter = None
|
|
2640
|
+
child_element = self.find(element, key)
|
|
2641
|
+
if child_element is not None:
|
|
2642
|
+
filter = DataFilter()
|
|
2643
|
+
filter.setDataFilterType(self.getChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE"))
|
|
2644
|
+
return filter
|
|
2645
|
+
|
|
2646
|
+
def getTransmissionModeConditions(self, element: ET.Element, key: str) -> List[TransmissionModeCondition]:
|
|
2647
|
+
result = []
|
|
2648
|
+
child_elements = self.findall(element, key)
|
|
2649
|
+
for child_element in child_elements:
|
|
2650
|
+
condition = TransmissionModeCondition()
|
|
2651
|
+
condition.setDataFilter(self.getDataFilter(child_element, "DATA-FILTER")) \
|
|
2652
|
+
.setISignalInIPduRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-IN-I-PDU-REF"))
|
|
2653
|
+
result.append(condition)
|
|
2654
|
+
return result
|
|
2655
|
+
|
|
2656
|
+
def getTimeRangeType(self, element: ET.Element, key: str) -> TimeRangeType:
|
|
2657
|
+
time_range = None
|
|
2658
|
+
child_element = self.find(element, key)
|
|
2659
|
+
if child_element is not None:
|
|
2660
|
+
time_range = TimeRangeType()
|
|
2661
|
+
time_range.setValue(self.getChildElementOptionalTimeValue(child_element, "VALUE"))
|
|
2662
|
+
return time_range
|
|
2663
|
+
|
|
2664
|
+
def getCyclicTiming(self, element: ET.Element, key: str) -> CyclicTiming:
|
|
2665
|
+
timing = None
|
|
2666
|
+
child_element = self.find(element, key)
|
|
2667
|
+
if child_element is not None:
|
|
2668
|
+
timing = CyclicTiming()
|
|
2669
|
+
return timing
|
|
2670
|
+
|
|
2671
|
+
def getEventControlledTiming(self, element: ET.Element, key: str) -> EventControlledTiming:
|
|
2672
|
+
timing = None
|
|
2673
|
+
child_element = self.find(element, key)
|
|
2674
|
+
if child_element is not None:
|
|
2675
|
+
timing = EventControlledTiming()
|
|
2676
|
+
timing.setNumberOfRepetitions(self.getChildElementOptionalIntegerValue(child_element, "NUMBER-OF-REPETITIONS"))
|
|
2677
|
+
timing.setRepetitionPeriod(self.getTimeRangeType(child_element, "REPETITION-PERIOD"))
|
|
2678
|
+
return timing
|
|
2679
|
+
|
|
2680
|
+
def getTransmissionModeTiming(self, element: ET.Element, key: str) -> TransmissionModeTiming:
|
|
2681
|
+
timing = None
|
|
2682
|
+
child_element = self.find(element, key)
|
|
2683
|
+
if child_element is not None:
|
|
2684
|
+
self.logger.debug("Get TransmissionModeTiming of <%s>" % key)
|
|
2685
|
+
timing = TransmissionModeTiming()
|
|
2686
|
+
#timing.getCyclicTiming(child_element, "")
|
|
2687
|
+
timing.setEventControlledTiming(self.getEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING"))
|
|
2688
|
+
return timing
|
|
2689
|
+
|
|
2690
|
+
def getTransmissionModeDeclaration(self, element: ET.Element, key: str) -> TransmissionModeDeclaration:
|
|
2691
|
+
decl = None
|
|
2692
|
+
child_element = self.find(element, key)
|
|
2693
|
+
if child_element != None:
|
|
2694
|
+
decl = TransmissionModeDeclaration()
|
|
2695
|
+
for condition in self.getTransmissionModeConditions(child_element, "TRANSMISSION-MODE-CONDITIONS/TRANSMISSION-MODE-CONDITION"):
|
|
2696
|
+
decl.addTransmissionModeCondition(condition)
|
|
2697
|
+
decl.setTransmissionModeTrueTiming(self.getTransmissionModeTiming(child_element, "TRANSMISSION-MODE-TRUE-TIMING"))
|
|
2698
|
+
return decl
|
|
2699
|
+
|
|
2700
|
+
def getISignalIPduIPduTimingSpecification(self, element: ET.Element) -> IPduTiming:
|
|
2701
|
+
timing = None
|
|
2702
|
+
child_element = self.find(element, "I-PDU-TIMING-SPECIFICATIONS/I-PDU-TIMING")
|
|
2703
|
+
if child_element is not None:
|
|
2704
|
+
timing = IPduTiming()
|
|
2705
|
+
timing.setTransmissionModeDeclaration(self.getTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION"))
|
|
2706
|
+
return timing
|
|
2566
2707
|
|
|
2567
2708
|
def readISignalIPdu(self, element: ET.Element, parent: ARPackage):
|
|
2568
2709
|
short_name = self.getShortName(element)
|
|
2569
2710
|
self.logger.debug("ISignalIPdu %s" % short_name)
|
|
2570
2711
|
i_pdu = parent.createISignalIPdu(short_name)
|
|
2571
2712
|
self.readIdentifiable(element, i_pdu)
|
|
2572
|
-
i_pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH"))
|
|
2713
|
+
i_pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH")) \
|
|
2714
|
+
.setIPduTimingSpecification(self.getISignalIPduIPduTimingSpecification(element))
|
|
2573
2715
|
self.readISignalToPduMappings(element, i_pdu)
|
|
2574
2716
|
i_pdu.setUnusedBitPattern(self.getChildElementOptionalLiteral(element, "UNUSED-BIT-PATTERN"))
|
|
2575
2717
|
|
|
@@ -2613,12 +2755,28 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2613
2755
|
else:
|
|
2614
2756
|
raise NotImplementedError("Unsupported Data Mapping %s" % tag_name)
|
|
2615
2757
|
|
|
2758
|
+
def readSwcToEcuMapping(self, element: ET.Element, mapping: SwcToEcuMapping):
|
|
2759
|
+
self.logger.debug("SwcToEcuMapping %s" % mapping.getShortName())
|
|
2760
|
+
self.readIdentifiable(element, mapping)
|
|
2761
|
+
for child_element in self.findall(element, "COMPONENT-IREFS/COMPONENT-IREF"):
|
|
2762
|
+
mapping.addComponentIRef(self.getComponentInSystemInstanceRef(child_element))
|
|
2763
|
+
mapping.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
|
|
2764
|
+
|
|
2765
|
+
def readSystemMappingSwMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
2766
|
+
for child_element in self.findall(element, "SW-MAPPINGS/*"):
|
|
2767
|
+
tag_name = self.getTagName(child_element)
|
|
2768
|
+
if tag_name == "SWC-TO-ECU-MAPPING":
|
|
2769
|
+
self.readSwcToEcuMapping(child_element, mapping.createSwcToEcuMapping(self.getShortName(child_element)))
|
|
2770
|
+
else:
|
|
2771
|
+
raise NotImplementedError("Unsupported Sw Mapping %s" % tag_name)
|
|
2772
|
+
|
|
2616
2773
|
def readSystemMapping(self, element: ET.Element, parent: System):
|
|
2617
2774
|
short_name = self.getShortName(element)
|
|
2618
2775
|
self.logger.debug("SystemMapping %s" % short_name)
|
|
2619
2776
|
mapping = parent.createSystemMapping(short_name)
|
|
2620
2777
|
self.readIdentifiable(element, mapping)
|
|
2621
2778
|
self.readSystemMappingDataMappings(element, mapping)
|
|
2779
|
+
self.readSystemMappingSwMappings(element, mapping)
|
|
2622
2780
|
|
|
2623
2781
|
def readSystemMappings(self, element: ET.Element, system: System):
|
|
2624
2782
|
for child_element in self.findall(element, "MAPPINGS/*"):
|
|
@@ -2627,10 +2785,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2627
2785
|
self.readSystemMapping(child_element, system)
|
|
2628
2786
|
else:
|
|
2629
2787
|
raise NotImplementedError("Unsupported Mapping %s" % tag_name)
|
|
2788
|
+
|
|
2789
|
+
def readRootSwCompositionPrototype(self, element: ET.Element, system: System):
|
|
2790
|
+
child_element = self.find(element, "ROOT-SOFTWARE-COMPOSITIONS/ROOT-SW-COMPOSITION-PROTOTYPE")
|
|
2791
|
+
if child_element is not None:
|
|
2792
|
+
short_name = self.getShortName(child_element)
|
|
2793
|
+
self.logger.debug("Read RootSwCompositionPrototype %s" % short_name)
|
|
2794
|
+
prototype = system.createRootSoftwareComposition(short_name)
|
|
2795
|
+
self.readIdentifiable(child_element, prototype)
|
|
2796
|
+
prototype.setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
|
|
2630
2797
|
|
|
2631
2798
|
def readSystem(self, element: ET.Element, parent: ARPackage):
|
|
2632
2799
|
short_name = self.getShortName(element)
|
|
2633
|
-
self.logger.debug("System %s" % short_name)
|
|
2800
|
+
self.logger.debug("Read System %s" % short_name)
|
|
2634
2801
|
system = parent.createSystem(short_name)
|
|
2635
2802
|
self.readIdentifiable(element, system)
|
|
2636
2803
|
|
|
@@ -2638,6 +2805,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2638
2805
|
for child_element in self.findall(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL"):
|
|
2639
2806
|
system.addFibexElementRef(self.getChildElementOptionalRefType(child_element, "FIBEX-ELEMENT-REF"))
|
|
2640
2807
|
self.readSystemMappings(element, system)
|
|
2808
|
+
self.readRootSwCompositionPrototype(element, system)
|
|
2809
|
+
system.setSystemVersion(self.getChildElementOptionalRevisionLabelString(element, "SYSTEM-VERSION"))
|
|
2641
2810
|
|
|
2642
2811
|
def readParameterInterfaceParameters(self, element: ET.Element, parent: ParameterInterface):
|
|
2643
2812
|
for child_element in self.findall(element, "PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
@@ -53,28 +53,6 @@ class TestSWComponents:
|
|
|
53
53
|
assert(len(sw_component.getAssemblySwConnectors()) == 0)
|
|
54
54
|
assert(len(sw_component.getDelegationSwConnectors()) == 0)
|
|
55
55
|
|
|
56
|
-
def test_software_components_arxml_loading_and_saving(self):
|
|
57
|
-
document = AUTOSAR.getInstance()
|
|
58
|
-
document.clear()
|
|
59
|
-
parser = ARXMLParser()
|
|
60
|
-
parser.load("src/armodel/tests/test_files/SoftwareComponents.arxml", document)
|
|
61
|
-
|
|
62
|
-
writer = ARXMLWriter()
|
|
63
|
-
writer.save("data/generated.arxml", document)
|
|
64
|
-
|
|
65
|
-
assert(filecmp.cmp("src/armodel/tests/test_files/SoftwareComponents.arxml", "data/generated.arxml", shallow = False) == True)
|
|
66
|
-
|
|
67
|
-
def test_software_components_arxml_loading_and_saving(self):
|
|
68
|
-
document = AUTOSAR.getInstance()
|
|
69
|
-
document.clear()
|
|
70
|
-
parser = ARXMLParser()
|
|
71
|
-
parser.load("src/armodel/tests/test_files/AUTOSAR_Datatypes.arxml", document)
|
|
72
|
-
|
|
73
|
-
writer = ARXMLWriter()
|
|
74
|
-
writer.save("data/generated_AUTOSAR_Datatypes.arxml", document)
|
|
75
|
-
|
|
76
|
-
assert(filecmp.cmp("src/armodel/tests/test_files/AUTOSAR_Datatypes.arxml", "data/generated_AUTOSAR_Datatypes.arxml", shallow = False) == True)
|
|
77
|
-
|
|
78
56
|
def test_bswm_mode_arxml_loading_and_saving(self):
|
|
79
57
|
document = AUTOSAR.getInstance()
|
|
80
58
|
document.clear()
|
|
@@ -12,7 +12,7 @@ class TestSystemTemplate:
|
|
|
12
12
|
parser.load("src/armodel/tests/test_files/CanSystem.arxml", document)
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
def
|
|
15
|
+
def test_can_system_arxml_loading_and_saving(self):
|
|
16
16
|
document = AUTOSAR.getInstance()
|
|
17
17
|
document.clear()
|
|
18
18
|
parser = ARXMLParser()
|
|
@@ -21,7 +21,7 @@ class TestSystemTemplate:
|
|
|
21
21
|
writer = ARXMLWriter()
|
|
22
22
|
writer.save("data/generated_CanSystem.arxml", document)
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
assert(filecmp.cmp("src/armodel/tests/test_files/CanSystem.arxml", "data/generated_CanSystem.arxml", shallow = False) == True)
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
|
|
@@ -9,7 +9,7 @@ import xml.etree.cElementTree as ET
|
|
|
9
9
|
|
|
10
10
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
11
11
|
|
|
12
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, ARLiteral, ARNumerical
|
|
12
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, ARLiteral, ARNumerical, Integer, TimeValue
|
|
13
13
|
from armodel.models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import TRefType
|
|
14
14
|
|
|
15
15
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean
|
|
@@ -71,6 +71,9 @@ class AbstractARXMLWriter:
|
|
|
71
71
|
self.setARObjectAttributes(child_element, numerical)
|
|
72
72
|
child_element.text = numerical._text
|
|
73
73
|
|
|
74
|
+
def setChildElementOptionalIntegerValue(self, element: ET.Element, key: str, value: Integer):
|
|
75
|
+
self.setChildElementOptionalNumericalValue(element, key, value)
|
|
76
|
+
|
|
74
77
|
def setChildElementOptionalLiteral(self, element: ET.Element, key: str, literal: ARLiteral):
|
|
75
78
|
if literal is not None:
|
|
76
79
|
child_element = ET.SubElement(element, key)
|
|
@@ -78,6 +81,9 @@ class AbstractARXMLWriter:
|
|
|
78
81
|
if literal._value is not None:
|
|
79
82
|
child_element.text = str(literal._value)
|
|
80
83
|
|
|
84
|
+
def setChildElementOptionalRevisionLabelString(self, element: ET.Element, key: str, literal: ARLiteral):
|
|
85
|
+
self.setChildElementOptionalLiteral(element, key, literal)
|
|
86
|
+
|
|
81
87
|
def setChildElementOptionalRefType(self, parent: ET.Element, child_tag_name: str, ref: TRefType):
|
|
82
88
|
if ref is not None:
|
|
83
89
|
child_tag = ET.SubElement(parent, child_tag_name)
|
|
@@ -91,6 +97,9 @@ class AbstractARXMLWriter:
|
|
|
91
97
|
child_element = ET.SubElement(element, key)
|
|
92
98
|
child_element.text = value.getText()
|
|
93
99
|
|
|
100
|
+
def setChildElementOptionalTimeValue(self, element: ET.Element, key: str, value: TimeValue):
|
|
101
|
+
self.setChildElementOptionalFloatValue(element, key, value)
|
|
102
|
+
|
|
94
103
|
def setChildElementOptionalBooleanValue(self, element: ET.Element, key: str, value: ARBoolean) -> ET.Element:
|
|
95
104
|
child_element = None
|
|
96
105
|
if value is not None:
|