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/parser/arxml_parser.py
CHANGED
|
@@ -2,12 +2,12 @@ from typing import List
|
|
|
2
2
|
import xml.etree.ElementTree as ET
|
|
3
3
|
import os
|
|
4
4
|
|
|
5
|
-
from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs
|
|
6
|
-
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition
|
|
7
|
-
from ..models.M2.MSR.AsamHdo.SpecialData import Sdg
|
|
8
5
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
9
|
-
from ..models.M2.MSR.AsamHdo.
|
|
10
|
-
from ..models.M2.MSR.
|
|
6
|
+
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition
|
|
7
|
+
from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
|
|
8
|
+
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuMethod, Compu, CompuConst, CompuConstTextContent, CompuNominatorDenominator, CompuRationalCoeffs, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
|
|
9
|
+
from ..models.M2.MSR.AsamHdo.SpecialData import Sdg, Sd
|
|
10
|
+
from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
|
|
11
11
|
from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, SwPointerTargetProps
|
|
12
12
|
from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxis
|
|
13
13
|
from ..models.M2.MSR.DataDictionary.Axis import SwAxisGrouped, SwAxisIndividual
|
|
@@ -15,80 +15,68 @@ from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroupConte
|
|
|
15
15
|
from ..models.M2.MSR.DataDictionary.DataDefProperties import ValueList
|
|
16
16
|
from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroup
|
|
17
17
|
from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxisSet
|
|
18
|
-
from ..models.M2.MSR.Documentation.
|
|
19
|
-
from ..models.M2.MSR.Documentation.BlockElements import DocumentationBlock
|
|
20
|
-
from ..models.M2.MSR.Documentation.TextModel.
|
|
21
|
-
from ..models.M2.MSR.Documentation.TextModel.
|
|
22
|
-
from ..models.M2.MSR.Documentation.
|
|
18
|
+
from ..models.M2.MSR.Documentation.Annotation import Annotation, GeneralAnnotation
|
|
19
|
+
from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
|
|
20
|
+
from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
|
|
21
|
+
from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName, LOverviewParagraph, LParagraph, LanguageSpecific
|
|
22
|
+
from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText, MultilanguageLongName
|
|
23
23
|
|
|
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
|
|
24
|
+
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
25
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalBehavior, BswModuleEntity, BswScheduleEvent, BswModeSenderPolicy
|
|
26
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
|
|
27
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
|
|
28
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
|
|
29
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
|
|
30
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import ImplementationProps, Code
|
|
31
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroup, ModeRequestTypeMap, ModeDeclarationGroupPrototype
|
|
33
32
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
|
|
34
33
|
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
|
|
34
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
|
|
37
35
|
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.
|
|
36
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataAssignment, ServiceDependency
|
|
37
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
|
|
38
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
39
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
|
|
40
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import TimingExtension
|
|
41
|
+
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
|
|
44
42
|
from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
|
|
45
|
-
from ..models.M2.AUTOSARTemplates.
|
|
43
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable
|
|
44
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
|
|
45
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
|
|
46
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral
|
|
47
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
|
|
48
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent
|
|
49
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationRecordDataType, ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
|
|
50
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet, EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
|
|
46
51
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
47
52
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
48
53
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, AutosarVariableRef, VariableInAtomicSWCTypeInstanceRef
|
|
49
|
-
from ..models.M2.AUTOSARTemplates.
|
|
54
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
|
|
55
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
|
|
50
56
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
51
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument
|
|
57
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
|
|
52
58
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import CompositionSwComponentType, PortGroup, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
|
|
53
59
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector
|
|
54
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import ModeAccessPoint
|
|
60
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
|
|
55
61
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
62
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
56
63
|
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
64
|
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
65
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
|
|
82
66
|
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.
|
|
67
|
+
|
|
68
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping , System, SystemMapping
|
|
69
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
70
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
|
|
71
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
|
|
72
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering
|
|
73
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, FramePort, IPduPort, ISignalPort, LinPhysicalChannel, PhysicalChannel
|
|
74
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import Frame, FrameTriggering, IPdu, IPduTiming, ISignalIPdu, ISignalTriggering, PduTriggering
|
|
75
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
76
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
77
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering, RxIdentifierRange
|
|
78
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
|
|
79
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import ISignalMapping
|
|
92
80
|
|
|
93
81
|
from .abstract_arxml_parser import AbstractARXMLParser
|
|
94
82
|
|
|
@@ -126,13 +114,17 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
126
114
|
for child_element in self.findall(element, "./SDGS/SDG"):
|
|
127
115
|
admin_data.addSdg(self.getSdg(child_element))
|
|
128
116
|
|
|
129
|
-
def
|
|
130
|
-
|
|
117
|
+
def getAdminData(self, element: ET.Element, key: str) -> AdminData:
|
|
118
|
+
admin_data = None
|
|
119
|
+
child_element = self.find(element, key)
|
|
131
120
|
if child_element is not None:
|
|
132
121
|
self.logger.debug("readAdminData")
|
|
133
122
|
admin_data = AdminData()
|
|
123
|
+
admin_data.setLanguage(self.getChildElementOptionalLiteral(child_element, "LANGUAGE")) \
|
|
124
|
+
.setUsedLanguages(self.getMultiLanguagePlainText(child_element, "USED-LANGUAGES"))
|
|
125
|
+
|
|
134
126
|
self.readSdgs(child_element, admin_data)
|
|
135
|
-
|
|
127
|
+
return admin_data
|
|
136
128
|
|
|
137
129
|
def readMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
|
|
138
130
|
self.readElementAttributes(element, referrable)
|
|
@@ -145,9 +137,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
145
137
|
identifiable.addAnnotation(annotation)
|
|
146
138
|
|
|
147
139
|
identifiable.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
148
|
-
.setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC"))
|
|
140
|
+
.setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC")) \
|
|
141
|
+
.setIntroduction(self.getDocumentationBlock(element, "INTRODUCTION"))
|
|
149
142
|
|
|
150
|
-
self.
|
|
143
|
+
identifiable.setAdminData(self.getAdminData(element, "ADMIN-DATA"))
|
|
151
144
|
|
|
152
145
|
def readLLongName(self, element: ET.Element, long_name: MultilanguageLongName):
|
|
153
146
|
for child_element in self.findall(element, "./L-4"):
|
|
@@ -186,29 +179,39 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
186
179
|
return paragraph
|
|
187
180
|
|
|
188
181
|
def getVariableInAtomicSWCTypeInstanceRef(self, element: ET.Element) -> VariableInAtomicSWCTypeInstanceRef:
|
|
189
|
-
|
|
182
|
+
iref = None
|
|
183
|
+
if element is not None:
|
|
184
|
+
iref = VariableInAtomicSWCTypeInstanceRef()
|
|
185
|
+
self.readElementAttributes(element, iref)
|
|
186
|
+
iref.setPortPrototypeRef(self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF"))
|
|
187
|
+
iref.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
|
|
188
|
+
return iref
|
|
189
|
+
|
|
190
|
+
def getComponentInSystemInstanceRef(self, element: ET.Element) -> ComponentInSystemInstanceRef:
|
|
191
|
+
iref = None
|
|
190
192
|
if element is not None:
|
|
191
|
-
|
|
192
|
-
self.readElementAttributes(element,
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
193
|
+
iref = ComponentInSystemInstanceRef()
|
|
194
|
+
self.readElementAttributes(element, iref)
|
|
195
|
+
iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF"))
|
|
196
|
+
iref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF"))
|
|
197
|
+
iref.setTargetComponentRef(self.getChildElementOptionalRefType(element, "TARGET-COMPONENT-REF"))
|
|
198
|
+
return iref
|
|
196
199
|
|
|
197
200
|
def getAutosarVariableInImplDatatype(self, element: ET.Element) -> AutosarVariableRef:
|
|
198
201
|
child_element = self.find(element, "ACCESSED-VARIABLE")
|
|
199
|
-
|
|
202
|
+
ref = None
|
|
200
203
|
if (child_element is not None):
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
return
|
|
204
|
+
ref = AutosarVariableRef()
|
|
205
|
+
ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF")))
|
|
206
|
+
return ref
|
|
204
207
|
|
|
205
208
|
def getLocalVariableRef(self, element: ET.Element) -> AutosarVariableRef:
|
|
206
209
|
child_element = self.find(element, "ACCESSED-VARIABLE")
|
|
207
|
-
|
|
210
|
+
ref = None
|
|
208
211
|
if (child_element is not None):
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
return
|
|
212
|
+
ref = AutosarVariableRef()
|
|
213
|
+
ref.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
|
|
214
|
+
return ref
|
|
212
215
|
|
|
213
216
|
def _readVariableAccesses(self, element: ET.Element, parent: RunnableEntity, key: str):
|
|
214
217
|
for child_element in element.findall("./xmlns:%s/xmlns:VARIABLE-ACCESS" % key, self.nsmap):
|
|
@@ -932,33 +935,84 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
932
935
|
sw_pointer_target_props.sw_data_def_props = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
|
|
933
936
|
parent.swPointerTargetProps = sw_pointer_target_props
|
|
934
937
|
|
|
935
|
-
def
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
938
|
+
def readLanguageSpecific(self, element: ET.Element, specific: LanguageSpecific):
|
|
939
|
+
self.readElementAttributes(element, specific)
|
|
940
|
+
specific.value = element.text
|
|
941
|
+
if 'L' in element.attrib:
|
|
942
|
+
specific.l = element.attrib['L']
|
|
943
|
+
|
|
944
|
+
def getLParagraphs(self, element: ET.Element, key: str) -> List[LParagraph]:
|
|
945
|
+
results = []
|
|
946
|
+
for child_element in self.findall(element, key):
|
|
947
|
+
l1 = LParagraph()
|
|
948
|
+
self.readLanguageSpecific(child_element, l1)
|
|
949
|
+
results.append(l1)
|
|
950
|
+
return results
|
|
943
951
|
|
|
944
952
|
def getMultiLanguageParagraphs(self, element: ET.Element, key: str) -> List[MultiLanguageParagraph]:
|
|
945
953
|
paragraphs = []
|
|
946
954
|
for child_element in self.findall(element, key):
|
|
947
955
|
paragraph = MultiLanguageParagraph()
|
|
948
956
|
self.readElementAttributes(child_element, paragraph)
|
|
949
|
-
self.
|
|
957
|
+
for l1 in self.getLParagraphs(child_element, "L-1"):
|
|
958
|
+
paragraph.addL1(l1)
|
|
950
959
|
paragraphs.append(paragraph)
|
|
951
960
|
return paragraphs
|
|
961
|
+
|
|
962
|
+
def getLPlainTexts(self, element: ET.Element, key: str) -> List[LParagraph]:
|
|
963
|
+
results = []
|
|
964
|
+
for child_element in self.findall(element, key):
|
|
965
|
+
l1 = LParagraph()
|
|
966
|
+
self.readLanguageSpecific(child_element, l1)
|
|
967
|
+
results.append(l1)
|
|
968
|
+
return results
|
|
969
|
+
|
|
970
|
+
def getListElements(self, element: ET.Element, key: str) -> List[ListElement]:
|
|
971
|
+
'''
|
|
972
|
+
Read the DocumentationBlock List
|
|
973
|
+
'''
|
|
974
|
+
result = []
|
|
975
|
+
for child_element in self.findall(element, key):
|
|
976
|
+
list = ListElement()
|
|
977
|
+
if 'TYPE' in child_element.attrib:
|
|
978
|
+
list.setType(child_element.attrib['TYPE'])
|
|
979
|
+
for block in self.getDocumentationBlockList(child_element, "ITEM"):
|
|
980
|
+
list.addItem(block)
|
|
981
|
+
result.append(list)
|
|
982
|
+
return result
|
|
983
|
+
|
|
984
|
+
def getMultiLanguagePlainText(self, element: ET.Element, key: str) -> MultiLanguagePlainText:
|
|
985
|
+
paragraph = None
|
|
986
|
+
child_element = self.find(element, key)
|
|
987
|
+
if child_element is not None:
|
|
988
|
+
paragraph = MultiLanguagePlainText()
|
|
989
|
+
self.readElementAttributes(child_element, paragraph)
|
|
990
|
+
for l10 in self.getLPlainTexts(child_element, "L-10"):
|
|
991
|
+
paragraph.addL10(l10)
|
|
992
|
+
return paragraph
|
|
993
|
+
|
|
994
|
+
def readDocumentationBlock(self, element: ET.Element, block: DocumentationBlock):
|
|
995
|
+
self.readElementAttributes(element, block)
|
|
996
|
+
for paragraph in self.getMultiLanguageParagraphs(element, "P"):
|
|
997
|
+
block.addP(paragraph)
|
|
998
|
+
for list in self.getListElements(element, "LIST"):
|
|
999
|
+
block.addList(list)
|
|
952
1000
|
|
|
953
1001
|
def getDocumentationBlock(self, element: ET.Element, key: str) -> DocumentationBlock:
|
|
954
1002
|
block = None
|
|
955
1003
|
child_element = self.find(element, key)
|
|
956
1004
|
if child_element is not None:
|
|
957
1005
|
block = DocumentationBlock()
|
|
958
|
-
self.
|
|
959
|
-
for paragraph in self.getMultiLanguageParagraphs(child_element, "P"):
|
|
960
|
-
block.addP(paragraph)
|
|
1006
|
+
self.readDocumentationBlock(child_element, block)
|
|
961
1007
|
return block
|
|
1008
|
+
|
|
1009
|
+
def getDocumentationBlockList(self, element: ET.Element, key: str) -> List[DocumentationBlock]:
|
|
1010
|
+
blocks = []
|
|
1011
|
+
for child_element in self.findall(element, key):
|
|
1012
|
+
block = DocumentationBlock()
|
|
1013
|
+
self.readDocumentationBlock(child_element, block)
|
|
1014
|
+
blocks.append(block)
|
|
1015
|
+
return blocks
|
|
962
1016
|
|
|
963
1017
|
def readGeneralAnnotation(self, element: ET.Element, annotation: GeneralAnnotation):
|
|
964
1018
|
annotation.setAnnotationOrigin(self.getChildElementOptionalLiteral(element, 'ANNOTATION-ORIGIN')) \
|
|
@@ -1030,6 +1084,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1030
1084
|
.setDataConstrRef(self.getChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF")) \
|
|
1031
1085
|
.setCompuMethodRef(self.getChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF")) \
|
|
1032
1086
|
.setSwImplPolicy(self.getChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY")) \
|
|
1087
|
+
.setSwIntendedResolution(self.getChildElementOptionalNumericalValue(conditional_tag, "SW-INTENDED-RESOLUTION")) \
|
|
1033
1088
|
.setImplementationDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF")) \
|
|
1034
1089
|
.setSwCalibrationAccess(self.getChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS")) \
|
|
1035
1090
|
.setSwCalprmAxisSet(self.getSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET")) \
|
|
@@ -2148,7 +2203,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2148
2203
|
.setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
|
|
2149
2204
|
|
|
2150
2205
|
def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
|
|
2151
|
-
cluster.setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE"))
|
|
2206
|
+
cluster.setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE")) \
|
|
2207
|
+
.setSpeed(self.getChildElementOptionalNumericalValue(element, "SPEED"))
|
|
2152
2208
|
|
|
2153
2209
|
def readLinCluster(self, element: ET.Element, parent: ARPackage):
|
|
2154
2210
|
short_name = self.getShortName(element)
|
|
@@ -2318,21 +2374,90 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2318
2374
|
|
|
2319
2375
|
def readCanTpConfig(self, element: ET.Element, parent: ARPackage):
|
|
2320
2376
|
short_name = self.getShortName(element)
|
|
2321
|
-
self.logger.debug("CanTpConfig %s" % short_name)
|
|
2377
|
+
self.logger.debug("read CanTpConfig %s" % short_name)
|
|
2322
2378
|
pdu = parent.createCanTpConfig(short_name)
|
|
2323
2379
|
self.readIdentifiable(element, pdu)
|
|
2324
2380
|
|
|
2325
2381
|
def readCanFrame(self, element: ET.Element, parent: ARPackage):
|
|
2326
2382
|
short_name = self.getShortName(element)
|
|
2327
|
-
self.logger.debug("CanFrame %s" % short_name)
|
|
2383
|
+
self.logger.debug("read CanFrame %s" % short_name)
|
|
2328
2384
|
frame = parent.createCanFrame(short_name)
|
|
2329
2385
|
self.readFrame(element, frame)
|
|
2330
2386
|
|
|
2387
|
+
def readCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
|
|
2388
|
+
self.logger.debug("read CanCommunicationController %s" % controller.getShortName())
|
|
2389
|
+
self.readIdentifiable(element, controller)
|
|
2390
|
+
|
|
2391
|
+
def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
|
|
2392
|
+
self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
|
|
2393
|
+
for child_element in self.findall(element, "COMM-CONTROLLERS/*"):
|
|
2394
|
+
tag_name = self.getTagName(child_element)
|
|
2395
|
+
if tag_name == "CAN-COMMUNICATION-CONTROLLER":
|
|
2396
|
+
controller = instance.createCanCommunicationController(self.getShortName(child_element))
|
|
2397
|
+
self.readCanCommunicationController(child_element, controller)
|
|
2398
|
+
else:
|
|
2399
|
+
self._raiseError("Unsupported Communication Controller <%s>" % tag_name)
|
|
2400
|
+
|
|
2401
|
+
def readCommConnectorPort(self, element: ET.Element, port: CommConnectorPort):
|
|
2402
|
+
self.readIdentifiable(element, port)
|
|
2403
|
+
port.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION"))
|
|
2404
|
+
|
|
2405
|
+
def readFramePort(self, element: ET.Element, port: FramePort):
|
|
2406
|
+
self.readCommConnectorPort(element, port)
|
|
2407
|
+
|
|
2408
|
+
def readIPduPort(self, element: ET.Element, port: IPduPort):
|
|
2409
|
+
self.readCommConnectorPort(element, port)
|
|
2410
|
+
|
|
2411
|
+
def readISignalPort(self, element: ET.Element, port: ISignalPort):
|
|
2412
|
+
self.readCommConnectorPort(element, port)
|
|
2413
|
+
|
|
2414
|
+
def readCommunicationConnectorEcuCommPortInstances(self, element: ET.Element, connector: CommunicationConnector):
|
|
2415
|
+
self.logger.debug("read EcuCommPortInstances of CommunicationConnector %s" % connector.getShortName())
|
|
2416
|
+
for child_element in self.findall(element, "ECU-COMM-PORT-INSTANCES/*"):
|
|
2417
|
+
tag_name = self.getTagName(child_element)
|
|
2418
|
+
if tag_name == "FRAME-PORT":
|
|
2419
|
+
port = connector.createFramePort(self.getShortName(child_element))
|
|
2420
|
+
self.readFramePort(child_element, port)
|
|
2421
|
+
elif tag_name == "I-PDU-PORT":
|
|
2422
|
+
port = connector.createIPduPort(self.getShortName(child_element))
|
|
2423
|
+
self.readIPduPort(child_element, port)
|
|
2424
|
+
elif tag_name == "I-SIGNAL-PORT":
|
|
2425
|
+
port = connector.createISignalPort(self.getShortName(child_element))
|
|
2426
|
+
self.readISignalPort(child_element, port)
|
|
2427
|
+
else:
|
|
2428
|
+
self._raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
|
|
2429
|
+
|
|
2430
|
+
def readCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
|
|
2431
|
+
self.readIdentifiable(element, connector)
|
|
2432
|
+
connector.setCommControllerRef(self.getChildElementOptionalRefType(element, "COMM-CONTROLLER-REF"))
|
|
2433
|
+
self.readCommunicationConnectorEcuCommPortInstances(element, connector)
|
|
2434
|
+
|
|
2435
|
+
def readCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
|
|
2436
|
+
self.readCommunicationConnector(element, connector)
|
|
2437
|
+
|
|
2438
|
+
def readEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
|
|
2439
|
+
self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
|
|
2440
|
+
for child_element in self.findall(element, "CONNECTORS/*"):
|
|
2441
|
+
tag_name = self.getTagName(child_element)
|
|
2442
|
+
if tag_name == "CAN-COMMUNICATION-CONNECTOR":
|
|
2443
|
+
connector = instance.createCanCommunicationConnector(self.getShortName(child_element))
|
|
2444
|
+
self.readCanCommunicationConnector(child_element, connector)
|
|
2445
|
+
else:
|
|
2446
|
+
self._raiseError("Unsupported Communication Controller <%s>" % tag_name)
|
|
2447
|
+
|
|
2331
2448
|
def readEcuInstance(self, element: ET.Element, parent: ARPackage):
|
|
2332
2449
|
short_name = self.getShortName(element)
|
|
2333
2450
|
self.logger.debug("EcuInstance %s" % short_name)
|
|
2334
2451
|
instance = parent.createEcuInstance(short_name)
|
|
2335
2452
|
self.readIdentifiable(element, instance)
|
|
2453
|
+
instance.setComConfigurationGwTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-GW-TIME-BASE")) \
|
|
2454
|
+
.setComConfigurationRxTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-RX-TIME-BASE")) \
|
|
2455
|
+
.setComConfigurationTxTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-TX-TIME-BASE")) \
|
|
2456
|
+
.setComEnableMDTForCyclicTransmission(self.getChildElementOptionalBooleanValue(element, "COM-ENABLE-MDT-FOR-CYCLIC-TRANSMISSION"))
|
|
2457
|
+
self.readEcuInstanceCommControllers(element, instance)
|
|
2458
|
+
self.readEcuInstanceConnectors(element, instance)
|
|
2459
|
+
instance.setSleepModeSupported(self.getChildElementOptionalBooleanValue(element, "SLEEP-MODE-SUPPORTED")) \
|
|
2460
|
+
.setWakeUpOverBusSupported(self.getChildElementOptionalBooleanValue(element, "WAKE-UP-OVER-BUS-SUPPORTED"))
|
|
2336
2461
|
|
|
2337
2462
|
'''
|
|
2338
2463
|
def getFrameMappings(self, element: ET.Element) -> List[FrameMapping]:
|
|
@@ -2563,13 +2688,84 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2563
2688
|
.setStartPosition(self.getChildElementOptionalNumericalValue(child_element, "START-POSITION")) \
|
|
2564
2689
|
.setTransferProperty(self.getChildElementOptionalLiteral(child_element, "TRANSFER-PROPERTY")) \
|
|
2565
2690
|
.setUpdateIndicationBitPosition(self.getChildElementOptionalNumericalValue(child_element, "UPDATE-INDICATION-BIT-POSITION"))
|
|
2691
|
+
|
|
2692
|
+
def getDataFilter(self, element: ET.Element, key: str) -> DataFilter:
|
|
2693
|
+
filter = None
|
|
2694
|
+
child_element = self.find(element, key)
|
|
2695
|
+
if child_element is not None:
|
|
2696
|
+
filter = DataFilter()
|
|
2697
|
+
filter.setDataFilterType(self.getChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE"))
|
|
2698
|
+
return filter
|
|
2699
|
+
|
|
2700
|
+
def getTransmissionModeConditions(self, element: ET.Element, key: str) -> List[TransmissionModeCondition]:
|
|
2701
|
+
result = []
|
|
2702
|
+
child_elements = self.findall(element, key)
|
|
2703
|
+
for child_element in child_elements:
|
|
2704
|
+
condition = TransmissionModeCondition()
|
|
2705
|
+
condition.setDataFilter(self.getDataFilter(child_element, "DATA-FILTER")) \
|
|
2706
|
+
.setISignalInIPduRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-IN-I-PDU-REF"))
|
|
2707
|
+
result.append(condition)
|
|
2708
|
+
return result
|
|
2709
|
+
|
|
2710
|
+
def getTimeRangeType(self, element: ET.Element, key: str) -> TimeRangeType:
|
|
2711
|
+
time_range = None
|
|
2712
|
+
child_element = self.find(element, key)
|
|
2713
|
+
if child_element is not None:
|
|
2714
|
+
time_range = TimeRangeType()
|
|
2715
|
+
time_range.setValue(self.getChildElementOptionalTimeValue(child_element, "VALUE"))
|
|
2716
|
+
return time_range
|
|
2717
|
+
|
|
2718
|
+
def getCyclicTiming(self, element: ET.Element, key: str) -> CyclicTiming:
|
|
2719
|
+
timing = None
|
|
2720
|
+
child_element = self.find(element, key)
|
|
2721
|
+
if child_element is not None:
|
|
2722
|
+
timing = CyclicTiming()
|
|
2723
|
+
return timing
|
|
2724
|
+
|
|
2725
|
+
def getEventControlledTiming(self, element: ET.Element, key: str) -> EventControlledTiming:
|
|
2726
|
+
timing = None
|
|
2727
|
+
child_element = self.find(element, key)
|
|
2728
|
+
if child_element is not None:
|
|
2729
|
+
timing = EventControlledTiming()
|
|
2730
|
+
timing.setNumberOfRepetitions(self.getChildElementOptionalIntegerValue(child_element, "NUMBER-OF-REPETITIONS"))
|
|
2731
|
+
timing.setRepetitionPeriod(self.getTimeRangeType(child_element, "REPETITION-PERIOD"))
|
|
2732
|
+
return timing
|
|
2733
|
+
|
|
2734
|
+
def getTransmissionModeTiming(self, element: ET.Element, key: str) -> TransmissionModeTiming:
|
|
2735
|
+
timing = None
|
|
2736
|
+
child_element = self.find(element, key)
|
|
2737
|
+
if child_element is not None:
|
|
2738
|
+
self.logger.debug("Get TransmissionModeTiming of <%s>" % key)
|
|
2739
|
+
timing = TransmissionModeTiming()
|
|
2740
|
+
#timing.getCyclicTiming(child_element, "")
|
|
2741
|
+
timing.setEventControlledTiming(self.getEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING"))
|
|
2742
|
+
return timing
|
|
2743
|
+
|
|
2744
|
+
def getTransmissionModeDeclaration(self, element: ET.Element, key: str) -> TransmissionModeDeclaration:
|
|
2745
|
+
decl = None
|
|
2746
|
+
child_element = self.find(element, key)
|
|
2747
|
+
if child_element != None:
|
|
2748
|
+
decl = TransmissionModeDeclaration()
|
|
2749
|
+
for condition in self.getTransmissionModeConditions(child_element, "TRANSMISSION-MODE-CONDITIONS/TRANSMISSION-MODE-CONDITION"):
|
|
2750
|
+
decl.addTransmissionModeCondition(condition)
|
|
2751
|
+
decl.setTransmissionModeTrueTiming(self.getTransmissionModeTiming(child_element, "TRANSMISSION-MODE-TRUE-TIMING"))
|
|
2752
|
+
return decl
|
|
2753
|
+
|
|
2754
|
+
def getISignalIPduIPduTimingSpecification(self, element: ET.Element) -> IPduTiming:
|
|
2755
|
+
timing = None
|
|
2756
|
+
child_element = self.find(element, "I-PDU-TIMING-SPECIFICATIONS/I-PDU-TIMING")
|
|
2757
|
+
if child_element is not None:
|
|
2758
|
+
timing = IPduTiming()
|
|
2759
|
+
timing.setTransmissionModeDeclaration(self.getTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION"))
|
|
2760
|
+
return timing
|
|
2566
2761
|
|
|
2567
2762
|
def readISignalIPdu(self, element: ET.Element, parent: ARPackage):
|
|
2568
2763
|
short_name = self.getShortName(element)
|
|
2569
2764
|
self.logger.debug("ISignalIPdu %s" % short_name)
|
|
2570
2765
|
i_pdu = parent.createISignalIPdu(short_name)
|
|
2571
2766
|
self.readIdentifiable(element, i_pdu)
|
|
2572
|
-
i_pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH"))
|
|
2767
|
+
i_pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH")) \
|
|
2768
|
+
.setIPduTimingSpecification(self.getISignalIPduIPduTimingSpecification(element))
|
|
2573
2769
|
self.readISignalToPduMappings(element, i_pdu)
|
|
2574
2770
|
i_pdu.setUnusedBitPattern(self.getChildElementOptionalLiteral(element, "UNUSED-BIT-PATTERN"))
|
|
2575
2771
|
|
|
@@ -2613,12 +2809,28 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2613
2809
|
else:
|
|
2614
2810
|
raise NotImplementedError("Unsupported Data Mapping %s" % tag_name)
|
|
2615
2811
|
|
|
2812
|
+
def readSwcToEcuMapping(self, element: ET.Element, mapping: SwcToEcuMapping):
|
|
2813
|
+
self.logger.debug("SwcToEcuMapping %s" % mapping.getShortName())
|
|
2814
|
+
self.readIdentifiable(element, mapping)
|
|
2815
|
+
for child_element in self.findall(element, "COMPONENT-IREFS/COMPONENT-IREF"):
|
|
2816
|
+
mapping.addComponentIRef(self.getComponentInSystemInstanceRef(child_element))
|
|
2817
|
+
mapping.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
|
|
2818
|
+
|
|
2819
|
+
def readSystemMappingSwMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
2820
|
+
for child_element in self.findall(element, "SW-MAPPINGS/*"):
|
|
2821
|
+
tag_name = self.getTagName(child_element)
|
|
2822
|
+
if tag_name == "SWC-TO-ECU-MAPPING":
|
|
2823
|
+
self.readSwcToEcuMapping(child_element, mapping.createSwcToEcuMapping(self.getShortName(child_element)))
|
|
2824
|
+
else:
|
|
2825
|
+
raise NotImplementedError("Unsupported Sw Mapping %s" % tag_name)
|
|
2826
|
+
|
|
2616
2827
|
def readSystemMapping(self, element: ET.Element, parent: System):
|
|
2617
2828
|
short_name = self.getShortName(element)
|
|
2618
2829
|
self.logger.debug("SystemMapping %s" % short_name)
|
|
2619
2830
|
mapping = parent.createSystemMapping(short_name)
|
|
2620
2831
|
self.readIdentifiable(element, mapping)
|
|
2621
2832
|
self.readSystemMappingDataMappings(element, mapping)
|
|
2833
|
+
self.readSystemMappingSwMappings(element, mapping)
|
|
2622
2834
|
|
|
2623
2835
|
def readSystemMappings(self, element: ET.Element, system: System):
|
|
2624
2836
|
for child_element in self.findall(element, "MAPPINGS/*"):
|
|
@@ -2627,10 +2839,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2627
2839
|
self.readSystemMapping(child_element, system)
|
|
2628
2840
|
else:
|
|
2629
2841
|
raise NotImplementedError("Unsupported Mapping %s" % tag_name)
|
|
2842
|
+
|
|
2843
|
+
def readRootSwCompositionPrototype(self, element: ET.Element, system: System):
|
|
2844
|
+
child_element = self.find(element, "ROOT-SOFTWARE-COMPOSITIONS/ROOT-SW-COMPOSITION-PROTOTYPE")
|
|
2845
|
+
if child_element is not None:
|
|
2846
|
+
short_name = self.getShortName(child_element)
|
|
2847
|
+
self.logger.debug("Read RootSwCompositionPrototype %s" % short_name)
|
|
2848
|
+
prototype = system.createRootSoftwareComposition(short_name)
|
|
2849
|
+
self.readIdentifiable(child_element, prototype)
|
|
2850
|
+
prototype.setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
|
|
2630
2851
|
|
|
2631
2852
|
def readSystem(self, element: ET.Element, parent: ARPackage):
|
|
2632
2853
|
short_name = self.getShortName(element)
|
|
2633
|
-
self.logger.debug("System %s" % short_name)
|
|
2854
|
+
self.logger.debug("Read System %s" % short_name)
|
|
2634
2855
|
system = parent.createSystem(short_name)
|
|
2635
2856
|
self.readIdentifiable(element, system)
|
|
2636
2857
|
|
|
@@ -2638,6 +2859,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2638
2859
|
for child_element in self.findall(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL"):
|
|
2639
2860
|
system.addFibexElementRef(self.getChildElementOptionalRefType(child_element, "FIBEX-ELEMENT-REF"))
|
|
2640
2861
|
self.readSystemMappings(element, system)
|
|
2862
|
+
self.readRootSwCompositionPrototype(element, system)
|
|
2863
|
+
system.setSystemVersion(self.getChildElementOptionalRevisionLabelString(element, "SYSTEM-VERSION"))
|
|
2641
2864
|
|
|
2642
2865
|
def readParameterInterfaceParameters(self, element: ET.Element, parent: ParameterInterface):
|
|
2643
2866
|
for child_element in self.findall(element, "PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
@@ -2658,6 +2881,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2658
2881
|
frame = parent.createGenericEthernetFrame(short_name)
|
|
2659
2882
|
self.readFrame(element, frame)
|
|
2660
2883
|
|
|
2884
|
+
def readLifeCycleInfoSet(self, element: ET.Element, parent: ARPackage):
|
|
2885
|
+
short_name = self.getShortName(element)
|
|
2886
|
+
self.logger.debug("Read LifeCycleInfoSet %s" % short_name)
|
|
2887
|
+
frame = parent.createLifeCycleInfoSet(short_name)
|
|
2888
|
+
self.readIdentifiable(element, frame)
|
|
2889
|
+
|
|
2661
2890
|
def readARPackageElements(self, element: ET.Element, parent: ARPackage):
|
|
2662
2891
|
for child_element in self.findall(element, "./ELEMENTS/*"):
|
|
2663
2892
|
tag_name = self.getTagName(child_element.tag)
|
|
@@ -2771,9 +3000,22 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2771
3000
|
self.readParameterInterface(child_element, parent)
|
|
2772
3001
|
elif tag_name == "ETHERNET-FRAME":
|
|
2773
3002
|
self.readGenericEthernetFrame(child_element, parent)
|
|
3003
|
+
elif tag_name == "LIFE-CYCLE-INFO-SET":
|
|
3004
|
+
self.readLifeCycleInfoSet(child_element, parent)
|
|
2774
3005
|
else:
|
|
2775
3006
|
self._raiseError("Unsupported element type of ARPackage <%s>" % tag_name)
|
|
2776
3007
|
|
|
3008
|
+
def readReferenceBases(self, element: ET.Element, parent: ARPackage):
|
|
3009
|
+
self.logger.debug("Read ReferenceBases")
|
|
3010
|
+
for child_element in self.findall(element, "REFERENCE-BASES/REFERENCE-BASE"):
|
|
3011
|
+
base = ReferenceBase()
|
|
3012
|
+
base.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
3013
|
+
.setIsDefault(self.getChildElementOptionalBooleanValue(child_element, "IS-DEFAULT")) \
|
|
3014
|
+
.setIsGlobal(self.getChildElementOptionalBooleanValue(child_element, "IS-GLOBAL")) \
|
|
3015
|
+
.setBaseIsThisPackage(self.getChildElementOptionalBooleanValue(child_element, "BASE-IS-THIS-PACKAGE")) \
|
|
3016
|
+
.setPackageRef(self.getChildElementOptionalRefType(child_element, "PACKAGE-REF"))
|
|
3017
|
+
parent.addReferenceBase(base)
|
|
3018
|
+
|
|
2777
3019
|
def readARPackages(self, element: ET.Element, parent: ARPackage):
|
|
2778
3020
|
for child_element in element.findall("./xmlns:AR-PACKAGES/xmlns:AR-PACKAGE", self.nsmap):
|
|
2779
3021
|
short_name = self.getShortName(child_element)
|
|
@@ -2782,9 +3024,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2782
3024
|
self.logger.debug("readARPackages %s" % ar_package.full_name)
|
|
2783
3025
|
|
|
2784
3026
|
self.readIdentifiable(child_element, ar_package)
|
|
2785
|
-
self.readARPackageElements(child_element, ar_package)
|
|
2786
3027
|
self.readARPackages(child_element, ar_package)
|
|
2787
|
-
|
|
3028
|
+
self.readARPackageElements(child_element, ar_package)
|
|
3029
|
+
self.readReferenceBases(child_element, ar_package)
|
|
2788
3030
|
|
|
2789
3031
|
def load(self, filename, document: AUTOSAR):
|
|
2790
3032
|
self.logger.info("Load %s ..." % os.path.realpath(filename))
|
|
@@ -2795,6 +3037,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2795
3037
|
self._raiseError("Invalid ARXML file <%s>" % filename)
|
|
2796
3038
|
|
|
2797
3039
|
self.getAUTOSARInfo(root, document)
|
|
3040
|
+
document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))
|
|
2798
3041
|
self.readARPackages(root, document)
|
|
2799
3042
|
|
|
2800
3043
|
document.reload()
|