armodel 1.7.7__py3-none-any.whl → 1.7.8__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_dump_cli.py +33 -22
- armodel/cli/arxml_format_cli.py +25 -13
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +64 -29
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +322 -63
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +134 -35
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +10 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +18 -2
- armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +20 -19
- armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/HwElementCategory.py +59 -0
- armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py +145 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +214 -156
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +60 -32
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +63 -42
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +1 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +13 -6
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +111 -38
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py +9 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +5 -4
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +9 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/{ECUResourceMapping.py → EcuResourceMapping.py} +4 -3
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +31 -21
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +5 -3
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayCommunication.py +76 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayTopology.py +654 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/__init__.py +0 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +64 -31
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +19 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +15 -13
- armodel/models/__init__.py +5 -1
- armodel/parser/abstract_arxml_parser.py +34 -30
- armodel/parser/arxml_parser.py +1196 -525
- armodel/parser/file_parser.py +5 -3
- armodel/tests/test_armodel/models/test_ar_package.py +6 -11
- armodel/tests/test_armodel/models/test_port_interface.py +116 -117
- armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +109 -109
- armodel/tests/test_armodel/parser/test_sw_components.py +38 -27
- armodel/tests/test_armodel/parser/test_system.py +2 -8
- armodel/transformer/__init__.py +0 -0
- armodel/transformer/abstract.py +6 -0
- armodel/transformer/admin_data.py +31 -0
- armodel/writer/abstract_arxml_writer.py +22 -29
- armodel/writer/arxml_writer.py +1198 -477
- {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/METADATA +41 -1
- {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/RECORD +52 -43
- {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/LICENSE +0 -0
- {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/WHEEL +0 -0
- {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/top_level.txt +0 -0
armodel/parser/arxml_parser.py
CHANGED
|
@@ -2,14 +2,12 @@ from typing import List
|
|
|
2
2
|
import xml.etree.ElementTree as ET
|
|
3
3
|
import os
|
|
4
4
|
|
|
5
|
-
from armodel.models.M2.AUTOSARTemplates.SystemTemplate.SWmapping import SwcToImplMapping
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
5
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
10
6
|
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
|
|
11
7
|
from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
|
|
12
|
-
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent, CompuMethod, Compu
|
|
8
|
+
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent, CompuMethod, Compu
|
|
9
|
+
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConst, CompuConstTextContent, CompuNominatorDenominator, CompuRationalCoeffs, CompuScale
|
|
10
|
+
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
|
|
13
11
|
from ..models.M2.MSR.AsamHdo.SpecialData import Sdg, Sd
|
|
14
12
|
from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension, Unit
|
|
15
13
|
from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
|
|
@@ -26,83 +24,180 @@ from ..models.M2.MSR.Documentation.Annotation import Annotation, GeneralAnnotati
|
|
|
26
24
|
from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
|
|
27
25
|
from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
|
|
28
26
|
from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName, LOverviewParagraph, LParagraph, LanguageSpecific
|
|
29
|
-
from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText
|
|
27
|
+
from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText
|
|
28
|
+
from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultilanguageLongName
|
|
30
29
|
|
|
31
30
|
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
32
|
-
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswBackgroundEvent, BswCalledEntity, BswDataReceivedEvent
|
|
31
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswApiOptions, BswBackgroundEvent, BswCalledEntity, BswDataReceivedEvent
|
|
32
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswOperationInvokedEvent
|
|
33
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswDataReceptionPolicy, BswExternalTriggerOccurredEvent, BswInternalBehavior
|
|
34
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalTriggerOccurredEvent, BswInterruptEntity, BswModeSwitchEvent
|
|
35
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswModuleEntity, BswQueuedDataReceptionPolicy, BswSchedulableEntity
|
|
36
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswScheduleEvent, BswModeSenderPolicy, BswTimingEvent, BswVariableAccess
|
|
33
37
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
|
|
34
38
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
|
|
35
39
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
|
|
36
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference
|
|
40
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference
|
|
41
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure import ConstantSpecification, NumericalValueSpecification, RecordValueSpecification
|
|
42
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure import TextValueSpecification, ValueSpecification
|
|
37
43
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
|
|
38
44
|
from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
|
|
39
45
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import ImplementationProps, Code
|
|
46
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
|
|
40
47
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroup, ModeRequestTypeMap, ModeDeclarationGroupPrototype
|
|
41
48
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
|
|
42
49
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import MemorySection
|
|
43
50
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
|
|
44
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
|
|
45
51
|
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
|
|
46
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds,
|
|
52
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal
|
|
53
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds
|
|
54
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds
|
|
55
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment
|
|
56
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedDataTypeAssignment, ServiceDependency
|
|
47
57
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
|
|
48
58
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
49
59
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
|
|
50
60
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
|
|
61
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import Trigger
|
|
51
62
|
from ..models.M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import DiagnosticServiceTable
|
|
52
|
-
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue
|
|
63
|
+
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue
|
|
64
|
+
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue
|
|
65
|
+
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
|
|
66
|
+
from ..models.M2.AUTOSARTemplates.EcuResourceTemplate import HwDescriptionEntity, HwElement, HwPinGroup
|
|
67
|
+
from ..models.M2.AUTOSARTemplates.EcuResourceTemplate.HwElementCategory import HwAttributeDef, HwCategory, HwType
|
|
53
68
|
from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
|
|
54
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import
|
|
69
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Describable, Identifiable
|
|
70
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Referrable, MultilanguageReferrable
|
|
55
71
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
|
|
56
72
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
|
|
57
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import
|
|
73
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral
|
|
58
74
|
from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
|
|
59
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
60
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
61
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import
|
|
62
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import
|
|
63
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
75
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationPrimitiveDataType, ApplicationRecordDataType
|
|
76
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType
|
|
77
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
|
|
78
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionISignalIPdu, EndToEndProtectionSet
|
|
79
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection
|
|
80
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionVariablePrototype
|
|
81
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef
|
|
82
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
64
83
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
65
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
66
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import
|
|
67
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
68
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
69
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
84
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest
|
|
85
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import TransmissionAcknowledgementRequest
|
|
86
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec
|
|
87
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec
|
|
88
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import QueuedReceiverComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec
|
|
89
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ServerComSpec
|
|
90
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, PRPortPrototype
|
|
91
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ApplicationSwComponentType, ComplexDeviceDriverSwComponentType
|
|
92
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import CompositionSwComponentType, EcuAbstractionSwComponentType, PortGroup
|
|
93
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import SensorActuatorSwComponentType, ServiceSwComponentType, SwComponentType
|
|
94
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import SymbolProps, PPortPrototype, RPortPrototype
|
|
95
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
|
|
96
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef
|
|
97
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import ModeGroupInAtomicSwcInstanceRef
|
|
98
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import PModeGroupInAtomicSwcInstanceRef
|
|
99
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import RModeGroupInAtomicSWCInstanceRef
|
|
100
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import RModeInAtomicSwcInstanceRef
|
|
101
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import RVariableInAtomicSwcInstanceRef
|
|
102
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector, SwComponentPrototype, SwConnector
|
|
103
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype
|
|
104
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationRecordElement, AutosarDataPrototype
|
|
105
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
106
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation
|
|
107
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import DataPrototypeMapping, InvalidationPolicy, ModeSwitchInterface
|
|
108
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ParameterInterface, PortInterface, PortInterfaceMappingSet
|
|
109
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import SenderReceiverInterface, TriggerInterface, DataInterface
|
|
110
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import VariableAndParameterInterfaceMapping
|
|
111
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
|
|
70
112
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
|
|
71
113
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
|
|
72
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.
|
|
73
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
74
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.
|
|
114
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
|
|
115
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef
|
|
116
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import VariableInAtomicSWCTypeInstanceRef
|
|
117
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
|
|
118
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import ModeAccessPoint, ModeSwitchPoint
|
|
119
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
|
|
120
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, BackgroundEvent
|
|
121
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent
|
|
122
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import ModeSwitchedAckEvent, OperationInvokedEvent, RTEEvent
|
|
123
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import SwcModeSwitchEvent, TimingEvent
|
|
75
124
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
76
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
77
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, DataPrototypeMapping, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, PortInterfaceMappingSet, SenderReceiverInterface, TriggerInterface, VariableAndParameterInterfaceMapping
|
|
78
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
|
|
79
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
|
|
80
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
125
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
81
126
|
|
|
82
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping
|
|
127
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
|
|
128
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderRecCompositeTypeMapping
|
|
129
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderRecRecordElementMapping, SenderRecRecordTypeMapping
|
|
83
130
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
84
131
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import DiagnosticConnection
|
|
85
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.
|
|
86
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmEcu, NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmEcu, UdpNmNode
|
|
87
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
|
|
88
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import ApplicationEntry, LinFrameTriggering, LinScheduleTable, LinUnconditionalFrame, ScheduleTableEntry
|
|
89
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinCommunicationController, LinMaster
|
|
90
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanClusterBusOffRecovery, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, CommunicationController, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
|
|
91
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import DcmIPdu, DynamicPart, DynamicPartAlternative, Frame, FrameTriggering, GeneralPurposeIPdu, GeneralPurposePdu, IPdu, IPduTiming, ISignal, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalToIPduMapping, ISignalTriggering, MultiplexedIPdu, MultiplexedPart, NPdu, NmPdu, Pdu, PduTriggering, SecureCommunicationAuthenticationProps, SecureCommunicationFreshnessProps, SecureCommunicationProps, SecureCommunicationPropsSet, SecuredIPdu, SegmentPosition, StaticPart, SystemSignal, SystemSignalGroup, UserDefinedIPdu, UserDefinedPdu
|
|
92
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
93
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
132
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.EcuResourceMapping import ECUMapping
|
|
94
133
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
|
|
95
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController
|
|
96
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.
|
|
134
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController
|
|
135
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationControllerAttributes
|
|
136
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
|
|
137
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerConfigurationRequirements
|
|
138
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerFdConfiguration
|
|
139
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanControllerFdConfigurationRequirements
|
|
140
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection
|
|
141
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnectionBundle
|
|
142
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnectionIpduIdentifier
|
|
97
143
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
|
|
98
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.
|
|
99
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.
|
|
100
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import
|
|
144
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPort, CouplingPortDetails, CouplingPortFifo
|
|
145
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPortScheduler, CouplingPortStructuralElement
|
|
146
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCluster, EthernetCommunicationConnector
|
|
147
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCommunicationController
|
|
148
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetPriorityRegeneration, InitialSdDelayConfig
|
|
149
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import MacMulticastGroup, RequestResponseDelay, SdClientConfig
|
|
150
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import VlanMembership
|
|
151
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration
|
|
152
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import NetworkEndpoint
|
|
153
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup
|
|
154
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ConsumedServiceInstance, EventHandler, GenericTp
|
|
155
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ProvidedServiceInstance, SdServerConfig, SoAdConfig
|
|
156
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import SocketAddress, TcpTp, TpPort
|
|
157
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import TransportProtocolConfiguration, UdpTp
|
|
158
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayCommunication import FlexrayAbsolutelyScheduledTiming, FlexrayFrame
|
|
159
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayCommunication import FlexrayFrameTriggering
|
|
160
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayTopology import FlexrayCluster, FlexrayCommunicationConnector
|
|
161
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayTopology import FlexrayCommunicationController
|
|
162
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import ApplicationEntry, LinFrameTriggering, LinScheduleTable
|
|
163
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinUnconditionalFrame, ScheduleTableEntry
|
|
164
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinCommunicationController, LinMaster
|
|
101
165
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, IPduMapping, ISignalMapping, TargetIPduRef
|
|
102
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.
|
|
166
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import DcmIPdu, DynamicPart, DynamicPartAlternative, Frame
|
|
167
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FrameTriggering, GeneralPurposeIPdu, GeneralPurposePdu
|
|
168
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import IPdu, IPduTiming, ISignal, ISignalGroup, ISignalIPdu
|
|
169
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import ISignalIPduGroup, ISignalToIPduMapping, ISignalTriggering
|
|
170
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import MultiplexedIPdu, MultiplexedPart, NPdu, NmPdu, Pdu
|
|
171
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import PduTriggering, SecureCommunicationAuthenticationProps
|
|
172
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import SecureCommunicationFreshnessProps, SecureCommunicationProps
|
|
173
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import SecureCommunicationPropsSet, SecuredIPdu, SegmentPosition
|
|
174
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import StaticPart, SystemSignal, SystemSignalGroup
|
|
175
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import UserDefinedIPdu, UserDefinedPdu
|
|
176
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanClusterBusOffRecovery
|
|
177
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import FlexrayPhysicalChannel, CycleRepetition, CommunicationCycle
|
|
178
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CanPhysicalChannel, CommConnectorPort, CommunicationCluster
|
|
179
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CommunicationConnector, CommunicationController
|
|
180
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort
|
|
181
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import LinCluster, LinPhysicalChannel, PhysicalChannel
|
|
182
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
183
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType
|
|
184
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeCondition, TransmissionModeDeclaration
|
|
185
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import TransmissionModeTiming
|
|
186
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
|
|
187
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmEcu
|
|
188
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmEcu, UdpNmNode
|
|
189
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.SWmapping import SwcToImplMapping
|
|
190
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import BufferProperties, DataTransformation, DataTransformationSet
|
|
191
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import EndToEndTransformationISignalProps, TransformationISignalProps
|
|
192
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import EndToEndTransformationDescription, TransformationDescription
|
|
193
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Transformer import TransformationTechnology
|
|
194
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpAddress, CanTpChannel, CanTpConfig, CanTpConnection, CanTpEcu
|
|
195
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpNode, DoIpLogicAddress, DoIpTpConfig, DoIpTpConnection, LinTpConfig
|
|
196
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import LinTpConnection, LinTpNode, TpAddress, TpConfig, TpConnection
|
|
103
197
|
|
|
104
198
|
from .abstract_arxml_parser import AbstractARXMLParser
|
|
105
199
|
|
|
200
|
+
|
|
106
201
|
class ARXMLParser(AbstractARXMLParser):
|
|
107
202
|
def __init__(self, options=None) -> None:
|
|
108
203
|
super().__init__(options)
|
|
@@ -115,7 +210,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
115
210
|
range.setLowerCanId(self.getChildElementOptionalNumericalValue(child_element, "LOWER-CAN-ID")) \
|
|
116
211
|
.setUpperCanId(self.getChildElementOptionalNumericalValue(child_element, "UPPER-CAN-ID"))
|
|
117
212
|
return range
|
|
118
|
-
|
|
213
|
+
|
|
119
214
|
def readSd(self, element: ET.Element, sdg: Sdg):
|
|
120
215
|
for child_element in self.findall(element, "./SD"):
|
|
121
216
|
sd = Sd()
|
|
@@ -124,12 +219,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
124
219
|
sd.setValue(child_element.text)
|
|
125
220
|
sdg.addSd(sd)
|
|
126
221
|
|
|
127
|
-
def readSdgCaption(self, element: ET.Element, sdg:Sdg):
|
|
222
|
+
def readSdgCaption(self, element: ET.Element, sdg: Sdg):
|
|
128
223
|
child_element = self.find(element, "SDG-CAPTION")
|
|
129
224
|
if child_element is not None:
|
|
130
225
|
sdg.createSdgCaption(self.getShortName(child_element))
|
|
131
226
|
|
|
132
|
-
def readSdgSdxRefs(self, element: ET.SubElement, sdg:Sdg):
|
|
227
|
+
def readSdgSdxRefs(self, element: ET.SubElement, sdg: Sdg):
|
|
133
228
|
for ref in self.getChildElementRefTypeList(element, "SDX-REF"):
|
|
134
229
|
sdg.addSdxRef(ref)
|
|
135
230
|
|
|
@@ -143,16 +238,20 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
143
238
|
sdg.addSdgContentsType(self.getSdg(child_element))
|
|
144
239
|
self.readSdgSdxRefs(element, sdg)
|
|
145
240
|
return sdg
|
|
146
|
-
|
|
241
|
+
|
|
147
242
|
def readSdgs(self, element: ET.Element, admin_data: AdminData):
|
|
148
|
-
for child_element in self.findall(element, "SDGS
|
|
149
|
-
|
|
243
|
+
for child_element in self.findall(element, "SDGS/*"):
|
|
244
|
+
tag_name = self.getTagName(child_element)
|
|
245
|
+
if tag_name == "SDG":
|
|
246
|
+
admin_data.addSdg(self.getSdg(child_element))
|
|
247
|
+
else:
|
|
248
|
+
self.notImplemented("Unsupported SDG <%s>" % tag_name)
|
|
150
249
|
|
|
151
250
|
def getAdminData(self, element: ET.Element, key: str) -> AdminData:
|
|
152
251
|
admin_data = None
|
|
153
252
|
child_element = self.find(element, key)
|
|
154
253
|
if child_element is not None:
|
|
155
|
-
self.logger.debug("
|
|
254
|
+
# self.logger.debug("Read AdminData")
|
|
156
255
|
admin_data = AdminData()
|
|
157
256
|
admin_data.setLanguage(self.getChildElementOptionalLiteral(child_element, "LANGUAGE")) \
|
|
158
257
|
.setUsedLanguages(self.getMultiLanguagePlainText(child_element, "USED-LANGUAGES"))
|
|
@@ -176,8 +275,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
176
275
|
identifiable.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
177
276
|
.setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC")) \
|
|
178
277
|
.setIntroduction(self.getDocumentationBlock(element, "INTRODUCTION"))
|
|
179
|
-
|
|
278
|
+
|
|
180
279
|
identifiable.setAdminData(self.getAdminData(element, "ADMIN-DATA"))
|
|
280
|
+
|
|
281
|
+
def readARElement(self, element: ET.Element, ar_element: ARElement):
|
|
282
|
+
self.readIdentifiable(element, ar_element)
|
|
181
283
|
|
|
182
284
|
def readLLongName(self, element: ET.Element, long_name: MultilanguageLongName):
|
|
183
285
|
for child_element in self.findall(element, "L-4"):
|
|
@@ -185,7 +287,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
185
287
|
self.readARObjectAttributes(child_element, l4)
|
|
186
288
|
l4.value = child_element.text
|
|
187
289
|
if 'L' in child_element.attrib:
|
|
188
|
-
l4.l = child_element.attrib['L']
|
|
290
|
+
l4.l = child_element.attrib['L'] # noqa: E741
|
|
189
291
|
long_name.addL4(l4)
|
|
190
292
|
|
|
191
293
|
def getMultilanguageLongName(self, element: ET.Element, key: str) -> MultilanguageLongName:
|
|
@@ -203,7 +305,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
203
305
|
self.readARObjectAttributes(child_element, l2)
|
|
204
306
|
l2.value = child_element.text
|
|
205
307
|
if 'L' in child_element.attrib:
|
|
206
|
-
l2.l = child_element.attrib['L']
|
|
308
|
+
l2.l = child_element.attrib['L'] # noqa: E741
|
|
207
309
|
paragraph.addL2(l2)
|
|
208
310
|
|
|
209
311
|
def getMultiLanguageOverviewParagraph(self, element: ET.Element, key: str) -> MultiLanguageOverviewParagraph:
|
|
@@ -216,37 +318,37 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
216
318
|
return paragraph
|
|
217
319
|
|
|
218
320
|
def getVariableInAtomicSWCTypeInstanceRef(self, element: ET.Element) -> VariableInAtomicSWCTypeInstanceRef:
|
|
219
|
-
|
|
321
|
+
instance_ref = None
|
|
220
322
|
if element is not None:
|
|
221
|
-
|
|
222
|
-
self.readARObjectAttributes(element,
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
return
|
|
323
|
+
instance_ref = VariableInAtomicSWCTypeInstanceRef()
|
|
324
|
+
self.readARObjectAttributes(element, instance_ref)
|
|
325
|
+
instance_ref.setPortPrototypeRef(self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF"))
|
|
326
|
+
instance_ref.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
|
|
327
|
+
return instance_ref
|
|
226
328
|
|
|
227
329
|
def getComponentInSystemInstanceRef(self, element: ET.Element) -> ComponentInSystemInstanceRef:
|
|
228
|
-
|
|
330
|
+
instance_ref = None
|
|
229
331
|
if element is not None:
|
|
230
|
-
|
|
231
|
-
self.readARObjectAttributes(element,
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
return
|
|
332
|
+
instance_ref = ComponentInSystemInstanceRef()
|
|
333
|
+
self.readARObjectAttributes(element, instance_ref)
|
|
334
|
+
instance_ref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF"))
|
|
335
|
+
instance_ref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF"))
|
|
336
|
+
instance_ref.setTargetComponentRef(self.getChildElementOptionalRefType(element, "TARGET-COMPONENT-REF"))
|
|
337
|
+
return instance_ref
|
|
236
338
|
|
|
237
|
-
def getAutosarVariableRef(self, element: ET.Element, key: str) ->
|
|
339
|
+
def getAutosarVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
|
|
238
340
|
child_element = self.find(element, key)
|
|
239
|
-
|
|
341
|
+
instance_ref = None
|
|
240
342
|
if (child_element is not None):
|
|
241
|
-
|
|
242
|
-
#self.readARObjectAttributes(child_element, ref)
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
return
|
|
343
|
+
instance_ref = AutosarVariableRef()
|
|
344
|
+
# self.readARObjectAttributes(child_element, ref)
|
|
345
|
+
instance_ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF"))) \
|
|
346
|
+
.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
|
|
347
|
+
return instance_ref
|
|
246
348
|
|
|
247
|
-
def getLocalVariableRef(self, element: ET.Element, key: str) ->
|
|
349
|
+
def getLocalVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
|
|
248
350
|
child_element = self.find(element, key)
|
|
249
|
-
ref
|
|
351
|
+
ref = None
|
|
250
352
|
if (child_element is not None):
|
|
251
353
|
ref = AutosarVariableRef()
|
|
252
354
|
ref.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
|
|
@@ -284,31 +386,34 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
284
386
|
|
|
285
387
|
self.readIdentifiable(child_element, variable_access)
|
|
286
388
|
|
|
287
|
-
def
|
|
389
|
+
def readBswModuleDescriptionImplementedEntryRefs(self, element: ET.Element, parent: BswModuleDescription):
|
|
288
390
|
for child_element in self.findall(element, "PROVIDED-ENTRYS/BSW-MODULE-ENTRY-REF-CONDITIONAL"):
|
|
289
|
-
ref = self.getChildElementOptionalRefType(child_element, "BSW-MODULE-ENTRY-REF")
|
|
391
|
+
ref = self.getChildElementOptionalRefType(child_element, "BSW-MODULE-ENTRY-REF")
|
|
290
392
|
if (ref is not None):
|
|
291
|
-
parent.
|
|
393
|
+
parent.addImplementedEntryRef(ref)
|
|
292
394
|
self.logger.debug("ImplementedEntry <%s> of BswModuleDescription <%s> has been added", ref.value, parent.getShortName())
|
|
293
395
|
|
|
294
396
|
def readModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
|
|
295
397
|
self.readIdentifiable(element, prototype)
|
|
296
|
-
prototype.
|
|
297
|
-
|
|
298
|
-
def readProvidedModeGroup(self, element: ET.Element, parent: BswModuleDescription):
|
|
299
|
-
for child_element in self.findall(element, "PROVIDED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE"):
|
|
300
|
-
short_name = self.getShortName(child_element)
|
|
301
|
-
self.logger.debug("readProvidedModeGroup %s" % short_name)
|
|
398
|
+
prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
|
|
302
399
|
|
|
303
|
-
|
|
304
|
-
|
|
400
|
+
def readBswModuleDescriptionProvidedModeGroups(self, element: ET.Element, parent: BswModuleDescription):
|
|
401
|
+
for child_element in self.findall(element, "PROVIDED-MODE-GROUPS/*"):
|
|
402
|
+
tag_name = self.getTagName(child_element)
|
|
403
|
+
if tag_name == "MODE-DECLARATION-GROUP-PROTOTYPE":
|
|
404
|
+
mode_group = parent.createProvidedModeGroup(self.getShortName(child_element))
|
|
405
|
+
self.readModeDeclarationGroupPrototype(child_element, mode_group)
|
|
406
|
+
else:
|
|
407
|
+
self.notImplemented("Unsupported ProvidedModeGroup <%s>" % tag_name)
|
|
305
408
|
|
|
306
|
-
def
|
|
307
|
-
for child_element in self.findall(element, "REQUIRED-MODE-GROUPS
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
409
|
+
def readBswModuleDescriptionRequiredModeGroups(self, element: ET.Element, parent: BswModuleDescription):
|
|
410
|
+
for child_element in self.findall(element, "REQUIRED-MODE-GROUPS/*"):
|
|
411
|
+
tag_name = self.getTagName(child_element)
|
|
412
|
+
if tag_name == "MODE-DECLARATION-GROUP-PROTOTYPE":
|
|
413
|
+
prototype = parent.createProvidedModeGroup(self.getShortName(child_element))
|
|
414
|
+
self.readModeDeclarationGroupPrototype(child_element, prototype)
|
|
415
|
+
else:
|
|
416
|
+
self.notImplemented("Unsupported RequiredModeGroup <%s>" % tag_name)
|
|
312
417
|
|
|
313
418
|
def readCanEnterExclusiveAreaRefs(self, element: ET.Element, entity: ExecutableEntity):
|
|
314
419
|
for ref in self.getChildElementRefTypeList(element, "CAN-ENTER-EXCLUSIVE-AREA-REFS/CAN-ENTER-EXCLUSIVE-AREA-REF"):
|
|
@@ -321,8 +426,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
321
426
|
entity.setMinimumStartInterval(self.getChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL")) \
|
|
322
427
|
.setSwAddrMethodRef(self.getChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF"))
|
|
323
428
|
|
|
324
|
-
def
|
|
325
|
-
for child_element in self.findall(element, "
|
|
429
|
+
def readBswModuleEntityManagedModeGroups(self, element: ET.Element, entity: BswModuleEntity):
|
|
430
|
+
for child_element in self.findall(element, "MANAGED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL"):
|
|
326
431
|
ref_type = self.getChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF")
|
|
327
432
|
if ref_type is not None:
|
|
328
433
|
entity.addManagedModeGroupRef(ref_type)
|
|
@@ -381,10 +486,22 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
381
486
|
behavior.addDataTypeMappingRef(ref)
|
|
382
487
|
|
|
383
488
|
def readInternalBehaviorConstantMemories(self, element: ET.Element, behavior: InternalBehavior):
|
|
384
|
-
for child_element in self.findall(element, "CONSTANT-MEMORYS
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
489
|
+
for child_element in self.findall(element, "CONSTANT-MEMORYS/*"):
|
|
490
|
+
tag_name = self.getTagName(child_element)
|
|
491
|
+
if tag_name == "PARAMETER-DATA-PROTOTYPE":
|
|
492
|
+
prototype = behavior.createConstantMemory(self.getShortName(child_element))
|
|
493
|
+
self.readParameterDataPrototype(child_element, prototype)
|
|
494
|
+
else:
|
|
495
|
+
self.notImplemented("Unsupported constant memories <%s>" % tag_name)
|
|
496
|
+
|
|
497
|
+
def readInternalBehaviorStaticMemories(self, element: ET.Element, behavior: InternalBehavior):
|
|
498
|
+
for child_element in self.findall(element, "STATIC-MEMORYS/*"):
|
|
499
|
+
tag_name = self.getTagName(child_element)
|
|
500
|
+
if tag_name == "VARIABLE-DATA-PROTOTYPE":
|
|
501
|
+
prototype = behavior.createStaticMemory(self.getShortName(child_element))
|
|
502
|
+
self.readVariableDataPrototype(child_element, prototype)
|
|
503
|
+
else:
|
|
504
|
+
self.notImplemented("Unsupported static memories <%s>" % tag_name)
|
|
388
505
|
|
|
389
506
|
def readInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
|
|
390
507
|
self.readIdentifiable(element, behavior)
|
|
@@ -393,6 +510,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
393
510
|
short_name = self.getShortName(child_element)
|
|
394
511
|
behavior.createExclusiveArea(short_name)
|
|
395
512
|
self.readDataTypeMappingRefs(element, behavior)
|
|
513
|
+
self.readInternalBehaviorStaticMemories(element, behavior)
|
|
396
514
|
|
|
397
515
|
def getRoleBasedDataAssignment(self, element: ET.Element) -> RoleBasedDataAssignment:
|
|
398
516
|
assignment = RoleBasedDataAssignment()
|
|
@@ -439,10 +557,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
439
557
|
else:
|
|
440
558
|
self.raiseError("Unsupported assigned ports <%s>" % tag_name)
|
|
441
559
|
|
|
442
|
-
def readNvBlockNeeds(self, element: ET.Element,
|
|
443
|
-
|
|
444
|
-
needs = parent.createNvBlockNeeds(short_name)
|
|
445
|
-
self.logger.debug("read NvBlockNeeds %s" % short_name)
|
|
560
|
+
def readNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
|
|
561
|
+
self.logger.debug("Read NvBlockNeeds <%s>" % needs.getShortName())
|
|
446
562
|
self.readIdentifiable(element, needs)
|
|
447
563
|
needs.setCalcRamBlockCrc(self.getChildElementOptionalBooleanValue(element, "CALC-RAM-BLOCK-CRC")) \
|
|
448
564
|
.setCheckStaticBlockId(self.getChildElementOptionalBooleanValue(element, "CHECK-STATIC-BLOCK-ID")) \
|
|
@@ -464,25 +580,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
464
580
|
.setWritingFrequency(self.getChildElementOptionalPositiveInteger(element, "WRITING-FREQUENCY")) \
|
|
465
581
|
.setWritingPriority(self.getChildElementOptionalLiteral(element, "WRITING-PRIORITY"))
|
|
466
582
|
|
|
467
|
-
def reaDiagnosticCommunicationManagerNeeds(self, element: ET.Element,
|
|
468
|
-
|
|
469
|
-
needs = parent.createDiagnosticCommunicationManagerNeeds(short_name)
|
|
470
|
-
self.logger.debug("read DiagnosticCommunicationManagerNeeds %s" % short_name)
|
|
583
|
+
def reaDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
|
|
584
|
+
self.logger.debug("Read DiagnosticCommunicationManagerNeeds <%s>" % needs.getShortName())
|
|
471
585
|
self.readIdentifiable(element, needs)
|
|
472
586
|
needs.setServiceRequestCallbackType(self.getChildElementOptionalLiteral(element, "SERVICE-REQUEST-CALLBACK-TYPE"))
|
|
473
587
|
|
|
474
|
-
def readDiagnosticRoutineNeeds(self, element: ET.Element,
|
|
475
|
-
|
|
476
|
-
needs = parent.createDiagnosticRoutineNeeds(short_name)
|
|
477
|
-
self.logger.debug("read DiagnosticRoutineNeeds %s" % short_name)
|
|
588
|
+
def readDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
|
|
589
|
+
self.logger.debug("Read DiagnosticRoutineNeeds %s" % needs.getShortName())
|
|
478
590
|
self.readIdentifiable(element, needs)
|
|
479
591
|
needs.setDiagRoutineType(self.getChildElementOptionalLiteral(element, "DIAG-ROUTINE-TYPE")) \
|
|
480
592
|
.setRidNumber(self.getChildElementOptionalIntegerValue(element, "RID-NUMBER"))
|
|
481
593
|
|
|
482
|
-
def readDiagnosticValueNeeds(self, element: ET.Element,
|
|
483
|
-
|
|
484
|
-
needs = parent.createDiagnosticValueNeeds(short_name)
|
|
485
|
-
self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
|
|
594
|
+
def readDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
|
|
595
|
+
self.logger.debug("Read DiagnosticValueNeeds %s" % needs.getShortName())
|
|
486
596
|
self.readIdentifiable(element, needs)
|
|
487
597
|
needs.setDataLength(self.getChildElementOptionalPositiveInteger(element, "DATA-LENGTH")) \
|
|
488
598
|
.setDiagnosticValueAccess(self.getChildElementOptionalLiteral(element, "DIAGNOSTIC-VALUE-ACCESS")) \
|
|
@@ -502,54 +612,54 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
502
612
|
else:
|
|
503
613
|
self.notImplemented("Unsupported DiagEventDebounceAlgorithm <%s>" % tag_name)
|
|
504
614
|
|
|
505
|
-
def readDiagnosticEventNeeds(self, element: ET.Element,
|
|
506
|
-
|
|
507
|
-
needs = parent.createDiagnosticEventNeeds(short_name)
|
|
508
|
-
self.logger.debug("Read DiagnosticEventNeeds %s" % short_name)
|
|
615
|
+
def readDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
|
|
616
|
+
self.logger.debug("Read DiagnosticEventNeeds <%s>" % needs.getShortName())
|
|
509
617
|
self.readIdentifiable(element, needs)
|
|
510
618
|
self.readDiagEventDebounceAlgorithm(element, needs)
|
|
511
619
|
needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND")) \
|
|
512
620
|
.setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
|
|
513
621
|
|
|
514
|
-
def readDiagnosticEventInfoNeeds(self, element: ET.Element,
|
|
515
|
-
|
|
516
|
-
needs = parent.createDiagnosticEventInfoNeeds(short_name)
|
|
517
|
-
self.logger.debug("Read DiagnosticEventInfoNeeds %s" % short_name)
|
|
622
|
+
def readDiagnosticEventInfoNeeds(self, element: ET.Element, needs: DiagnosticEventInfoNeeds):
|
|
623
|
+
self.logger.debug("Read DiagnosticEventInfoNeeds <%s>" % needs.getShortName())
|
|
518
624
|
self.readIdentifiable(element, needs)
|
|
519
625
|
needs.setUdsDtcNumber(self.getChildElementOptionalPositiveInteger(element, "UDS-DTC-NUMBER"))
|
|
520
626
|
|
|
521
|
-
def readCryptoServiceNeeds(self, element: ET.Element,
|
|
522
|
-
|
|
523
|
-
needs = parent.createCryptoServiceNeeds(short_name)
|
|
524
|
-
self.logger.debug("Read DiagnosticValueNeeds %s" % short_name)
|
|
627
|
+
def readCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
|
|
628
|
+
self.logger.debug("Read CryptoServiceNeeds <%s>" % needs.getShortName())
|
|
525
629
|
self.readIdentifiable(element, needs)
|
|
526
630
|
needs.setMaximumKeyLength(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-KEY-LENGTH"))
|
|
527
631
|
|
|
528
|
-
def readEcuStateMgrUserNeeds(self, element: ET.Element,
|
|
529
|
-
|
|
530
|
-
needs = parent.createEcuStateMgrUserNeeds(short_name)
|
|
531
|
-
self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
|
|
632
|
+
def readEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
|
|
633
|
+
self.logger.debug("read EcuStateMgrUserNeeds %s" % needs.getShortName())
|
|
532
634
|
self.readIdentifiable(element, needs)
|
|
533
635
|
|
|
534
636
|
def readSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
535
637
|
for child_element in self.findall(element, "SERVICE-NEEDS/*"):
|
|
536
638
|
tag_name = self.getTagName(child_element)
|
|
537
639
|
if tag_name == "NV-BLOCK-NEEDS":
|
|
538
|
-
self.
|
|
640
|
+
needs = parent.createNvBlockNeeds(self.getShortName(child_element))
|
|
641
|
+
self.readNvBlockNeeds(child_element, needs)
|
|
539
642
|
elif tag_name == "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS":
|
|
540
|
-
self.
|
|
643
|
+
needs = parent.createDiagnosticCommunicationManagerNeeds(self.getShortName(child_element))
|
|
644
|
+
self.reaDiagnosticCommunicationManagerNeeds(child_element, needs)
|
|
541
645
|
elif tag_name == "DIAGNOSTIC-ROUTINE-NEEDS":
|
|
542
|
-
self.
|
|
646
|
+
needs = parent.createDiagnosticRoutineNeeds(self.getShortName(child_element))
|
|
647
|
+
self.readDiagnosticRoutineNeeds(child_element, needs)
|
|
543
648
|
elif tag_name == "DIAGNOSTIC-VALUE-NEEDS":
|
|
544
|
-
self.
|
|
649
|
+
needs = parent.createDiagnosticValueNeeds(self.getShortName(child_element))
|
|
650
|
+
self.readDiagnosticValueNeeds(child_element, needs)
|
|
545
651
|
elif tag_name == "DIAGNOSTIC-EVENT-NEEDS":
|
|
546
|
-
self.
|
|
652
|
+
needs = parent.createDiagnosticEventNeeds(self.getShortName(child_element))
|
|
653
|
+
self.readDiagnosticEventNeeds(child_element, needs)
|
|
547
654
|
elif tag_name == "DIAGNOSTIC-EVENT-INFO-NEEDS":
|
|
548
|
-
self.
|
|
655
|
+
needs = parent.createDiagnosticEventInfoNeeds(self.getShortName(child_element))
|
|
656
|
+
self.readDiagnosticEventInfoNeeds(child_element, needs)
|
|
549
657
|
elif tag_name == "CRYPTO-SERVICE-NEEDS":
|
|
550
|
-
self.
|
|
658
|
+
needs = parent.createCryptoServiceNeeds(self.getShortName(child_element))
|
|
659
|
+
self.readCryptoServiceNeeds(child_element, needs)
|
|
551
660
|
elif tag_name == "ECU-STATE-MGR-USER-NEEDS":
|
|
552
|
-
self.
|
|
661
|
+
needs = parent.createEcuStateMgrUserNeeds(self.getShortName(child_element))
|
|
662
|
+
self.readEcuStateMgrUserNeeds(child_element, needs)
|
|
553
663
|
else:
|
|
554
664
|
self.notImplemented("Unsupported service needs <%s>" % tag_name)
|
|
555
665
|
|
|
@@ -592,28 +702,47 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
592
702
|
prototype = behavior.createSharedParameter(short_name)
|
|
593
703
|
self.readParameterDataPrototype(child_element, prototype)
|
|
594
704
|
|
|
595
|
-
def
|
|
596
|
-
for
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
self.logger.debug("readSwcInternalBehavior %s" % behavior.full_name)
|
|
705
|
+
def readIncludedModeDeclarationGroupSet(self, element: ET.Element, group_set: IncludedModeDeclarationGroupSet):
|
|
706
|
+
for ref in self.getChildElementRefTypeList(element, "MODE-DECLARATION-GROUP-REFS/MODE-DECLARATION-GROUP-REF"):
|
|
707
|
+
group_set.addModeDeclarationGroupRef(ref)
|
|
708
|
+
group_set.setPrefix(self.getChildElementOptionalLiteral(element, "PREFIX"))
|
|
600
709
|
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
710
|
+
def readSwcInternalBehaviorIncludedModeDeclarationGroupSets(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
711
|
+
for child_element in self.findall(element, "INCLUDED-MODE-DECLARATION-GROUP-SETS/*"):
|
|
712
|
+
tag_name = self.getTagName(child_element)
|
|
713
|
+
if tag_name == "INCLUDED-MODE-DECLARATION-GROUP-SET":
|
|
714
|
+
group_set = IncludedModeDeclarationGroupSet()
|
|
715
|
+
self.readIncludedModeDeclarationGroupSet(child_element, group_set)
|
|
716
|
+
behavior.addIncludedModeDeclarationGroupSet(group_set)
|
|
717
|
+
else:
|
|
718
|
+
self.notImplemented("Unsupported IncludedModeDeclarationGroupSet <%s>" % tag_name)
|
|
719
|
+
|
|
720
|
+
def readSwcInternalBehavior(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
721
|
+
# read the internal behavior
|
|
722
|
+
self.readInternalBehavior(element, behavior)
|
|
723
|
+
|
|
724
|
+
# read the extra SwcInternalBehavior
|
|
725
|
+
self.readSwcInternalBehaviorArTypedPerInstanceMemories(element, behavior)
|
|
726
|
+
self.readSwcInternalBehaviorEvents(element, behavior)
|
|
727
|
+
self.readSwcInternalBehaviorExplicitInterRunnableVariables(element, behavior)
|
|
728
|
+
behavior.setHandleTerminationAndRestart(self.getChildElementOptionalLiteral(element, "HANDLE-TERMINATION-AND-RESTART"))
|
|
729
|
+
self.readSwcInternalBehaviorIncludedModeDeclarationGroupSets(element, behavior)
|
|
730
|
+
self.readSwcInternalBehaviorPerInstanceMemories(element, behavior)
|
|
731
|
+
self.readSwcInternalBehaviorPerInstanceParameters(element, behavior)
|
|
732
|
+
self.readSwcInternalBehaviorPortAPIOptions(element, behavior)
|
|
733
|
+
self.readSwcInternalBehaviorRunnables(element, behavior)
|
|
734
|
+
self.readSwcInternalBehaviorServiceDependencies(element, behavior)
|
|
735
|
+
self.readSwcInternalBehaviorSharedParameters(element, behavior)
|
|
736
|
+
behavior.setSupportsMultipleInstantiation(self.getChildElementOptionalBooleanValue(element, "SUPPORTS-MULTIPLE-INSTANTIATION"))
|
|
737
|
+
|
|
738
|
+
def readAtomicSwComponentTypeSwcInternalBehavior(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
739
|
+
for child_element in self.findall(element, "INTERNAL-BEHAVIORS/*"):
|
|
740
|
+
tag_name = self.getTagName(child_element)
|
|
741
|
+
if tag_name == "SWC-INTERNAL-BEHAVIOR":
|
|
742
|
+
behavior = parent.createSwcInternalBehavior(self.getShortName(child_element))
|
|
743
|
+
self.readSwcInternalBehavior(child_element, behavior)
|
|
744
|
+
else:
|
|
745
|
+
self.notImplemented("Unsupported Internal Behaviors <%s>" % tag_name)
|
|
617
746
|
|
|
618
747
|
def getIncludedModeDeclarationGroupSets(self, element: ET.Element) -> List[IncludedModeDeclarationGroupSet]:
|
|
619
748
|
group_sets = []
|
|
@@ -624,10 +753,39 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
624
753
|
group_sets.append(group_set)
|
|
625
754
|
return group_sets
|
|
626
755
|
|
|
756
|
+
def readBswVariableAccess(self, element: ET.Element, access: BswVariableAccess):
|
|
757
|
+
self.readReferrable(element, access)
|
|
758
|
+
access.setAccessedVariableRef(self.getChildElementOptionalRefType(element, "ACCESSED-VARIABLE-REF"))
|
|
759
|
+
|
|
760
|
+
def readBswModuleEntityDataSendPoints(self, element: ET.Element, entity: BswModuleEntity):
|
|
761
|
+
for child_element in self.findall(element, "DATA-SEND-POINTS/*"):
|
|
762
|
+
tag_name = self.getTagName(child_element)
|
|
763
|
+
if tag_name == "BSW-VARIABLE-ACCESS":
|
|
764
|
+
point = entity.createDataSendPoint(self.getShortName(child_element))
|
|
765
|
+
self.readBswVariableAccess(child_element, point)
|
|
766
|
+
else:
|
|
767
|
+
self.notImplemented("Unsupported Data Send Point <%s>" % tag_name)
|
|
768
|
+
|
|
769
|
+
def readBswModuleEntityDataReceiverPoints(self, element: ET.Element, entity: BswModuleEntity):
|
|
770
|
+
for child_element in self.findall(element, "DATA-RECEIVE-POINTS/*"):
|
|
771
|
+
tag_name = self.getTagName(child_element)
|
|
772
|
+
if tag_name == "BSW-VARIABLE-ACCESS":
|
|
773
|
+
point = entity.createDataReceivePoint(self.getShortName(child_element))
|
|
774
|
+
self.readBswVariableAccess(child_element, point)
|
|
775
|
+
else:
|
|
776
|
+
self.notImplemented("Unsupported Data Receive Point <%s>" % tag_name)
|
|
777
|
+
|
|
778
|
+
def readBswModuleEntityIssuedTriggerRefs(self, element: ET.Element, entity: BswModuleEntity):
|
|
779
|
+
for ref in self.getChildElementRefTypeList(element, "ISSUED-TRIGGERS/TRIGGER-REF-CONDITIONAL/TRIGGER-REF"):
|
|
780
|
+
entity.addIssuedTriggerRef(ref)
|
|
781
|
+
|
|
627
782
|
def readBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
|
|
628
783
|
self.readExecutableEntity(element, entity)
|
|
784
|
+
self.readBswModuleEntityDataReceiverPoints(element, entity)
|
|
785
|
+
self.readBswModuleEntityDataSendPoints(element, entity)
|
|
629
786
|
entity.setImplementedEntryRef(self.getChildElementRefType(entity.getShortName(), element, "IMPLEMENTED-ENTRY-REF"))
|
|
630
|
-
self.
|
|
787
|
+
self.readBswModuleEntityManagedModeGroups(element, entity)
|
|
788
|
+
self.readBswModuleEntityIssuedTriggerRefs(element, entity)
|
|
631
789
|
|
|
632
790
|
def readBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
|
|
633
791
|
self.logger.debug("read BswCalledEntity %s" % entity.getShortName())
|
|
@@ -649,7 +807,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
649
807
|
if tag_name == "BSW-CALLED-ENTITY":
|
|
650
808
|
entity = behavior.createBswCalledEntity(self.getShortName(child_element))
|
|
651
809
|
self.readBswCalledEntity(child_element, entity)
|
|
652
|
-
elif tag_name == "BSW-SCHEDULABLE-ENTITY":
|
|
810
|
+
elif tag_name == "BSW-SCHEDULABLE-ENTITY":
|
|
653
811
|
entity = behavior.createBswSchedulableEntity(self.getShortName(child_element))
|
|
654
812
|
self.readBswSchedulableEntity(child_element, entity)
|
|
655
813
|
elif tag_name == "BSW-INTERRUPT-ENTITY":
|
|
@@ -665,13 +823,17 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
665
823
|
self.readBswScheduleEvent(element, event)
|
|
666
824
|
event.setTriggerRef(self.getChildElementOptionalRefType(element, "TRIGGER-REF"))
|
|
667
825
|
|
|
826
|
+
def readBswOperationInvokedEvent(self, element: ET.Element, event: BswOperationInvokedEvent):
|
|
827
|
+
self.readBswEvent(element, event)
|
|
828
|
+
event.setEntryRef(self.getChildElementOptionalRefType(element, "ENTRY-REF"))
|
|
829
|
+
|
|
668
830
|
def readBswInternalBehaviorEvents(self, element: ET.Element, behavior: BswInternalBehavior):
|
|
669
831
|
for child_element in self.findall(element, "EVENTS/*"):
|
|
670
832
|
tag_name = self.getTagName(child_element)
|
|
671
833
|
if tag_name == "BSW-MODE-SWITCH-EVENT":
|
|
672
834
|
event = behavior.createBswModeSwitchEvent(self.getShortName(child_element))
|
|
673
835
|
self.readBswModeSwitchEvent(child_element, event)
|
|
674
|
-
elif tag_name == "BSW-TIMING-EVENT":
|
|
836
|
+
elif tag_name == "BSW-TIMING-EVENT":
|
|
675
837
|
event = behavior.createBswTimingEvent(self.getShortName(child_element))
|
|
676
838
|
self.readBswTimingEvent(child_element, event)
|
|
677
839
|
elif tag_name == "BSW-DATA-RECEIVED-EVENT":
|
|
@@ -686,35 +848,110 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
686
848
|
elif tag_name == "BSW-EXTERNAL-TRIGGER-OCCURRED-EVENT":
|
|
687
849
|
event = behavior.createBswExternalTriggerOccurredEvent(self.getShortName(child_element))
|
|
688
850
|
self.readBswExternalTriggerOccurredEvent(child_element, event)
|
|
851
|
+
elif tag_name == "BSW-OPERATION-INVOKED-EVENT":
|
|
852
|
+
event = behavior.createBswOperationInvokedEvent(self.getShortName(child_element))
|
|
853
|
+
self.readBswOperationInvokedEvent(child_element, event)
|
|
689
854
|
else:
|
|
690
855
|
self.notImplemented("Unsupported BswModuleEntity <%s>" % tag_name)
|
|
691
856
|
|
|
692
|
-
def
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
857
|
+
def readBswApiOptions(self, element: ET.Element, options: BswApiOptions):
|
|
858
|
+
self.readARObjectAttributes(element, options)
|
|
859
|
+
options.setEnableTakeAddress(self.getChildElementOptionalBooleanValue(element, "ENABLE-TAKE-ADDRESS"))
|
|
860
|
+
|
|
861
|
+
def readBswDataReceptionPolicy(self, element: ET.Element, policy: BswDataReceptionPolicy):
|
|
862
|
+
self.readBswApiOptions(element, policy)
|
|
863
|
+
policy.setReceivedDataRef(self.getChildElementOptionalRefType(element, "RECEIVED-DATA-REF"))
|
|
864
|
+
|
|
865
|
+
def readBswQueuedDataReceptionPolicy(self, element: ET.Element, policy: BswQueuedDataReceptionPolicy):
|
|
866
|
+
self.readBswDataReceptionPolicy(element, policy)
|
|
867
|
+
policy.setQueueLength(self.getChildElementOptionalPositiveInteger(element, "QUEUE-LENGTH"))
|
|
868
|
+
|
|
869
|
+
def readBswInternalBehaviorReceptionPolicies(self, element: ET.Element, behavior: BswInternalBehavior):
|
|
870
|
+
for child_element in self.findall(element, "RECEPTION-POLICYS/*"):
|
|
871
|
+
tag_name = self.getTagName(child_element)
|
|
872
|
+
if tag_name == "BSW-QUEUED-DATA-RECEPTION-POLICY":
|
|
873
|
+
policy = BswQueuedDataReceptionPolicy()
|
|
874
|
+
self.readBswQueuedDataReceptionPolicy(child_element, policy)
|
|
875
|
+
behavior.addReceptionPolicy(policy)
|
|
876
|
+
else:
|
|
877
|
+
self.notImplemented("Unsupported Reception Policies <%s>" % tag_name)
|
|
878
|
+
|
|
879
|
+
def readBswInternalBehavior(self, element: ET.Element, behavior: BswInternalBehavior):
|
|
880
|
+
self.logger.debug("Read BswInternalBehavior <%s>" % behavior.full_name)
|
|
881
|
+
|
|
882
|
+
# read the internal behavior
|
|
883
|
+
self.readInternalBehavior(element, behavior)
|
|
884
|
+
self.readBswInternalBehaviorEntities(element, behavior)
|
|
885
|
+
self.readBswInternalBehaviorEvents(element, behavior)
|
|
886
|
+
self.readBswInternalBehaviorModeSenderPolicy(element, behavior)
|
|
887
|
+
for group_set in self.getIncludedModeDeclarationGroupSets(element):
|
|
888
|
+
behavior.addIncludedModeDeclarationGroupSet(group_set)
|
|
889
|
+
self.readBswInternalBehaviorReceptionPolicies(element, behavior)
|
|
890
|
+
|
|
891
|
+
def readBswModuleDescriptionBswInternalBehaviors(self, element: ET.Element, desc: BswModuleDescription):
|
|
892
|
+
for child_element in self.findall(element, "INTERNAL-BEHAVIORS/*"):
|
|
893
|
+
tag_name = self.getTagName(child_element)
|
|
894
|
+
if tag_name == "BSW-INTERNAL-BEHAVIOR":
|
|
895
|
+
behavior = desc.createBswInternalBehavior(self.getShortName(child_element))
|
|
896
|
+
self.readBswInternalBehavior(child_element, behavior)
|
|
897
|
+
else:
|
|
898
|
+
self.notImplemented("Unsupported Internal Behavior <%s>" % tag_name)
|
|
899
|
+
|
|
900
|
+
def readTrigger(self, element: ET.Element, trigger: Trigger):
|
|
901
|
+
self.readIdentifiable(element, trigger)
|
|
902
|
+
|
|
903
|
+
def readBswModuleDescriptionReleasedTriggers(self, element: ET.Element, desc: BswModuleDescription):
|
|
904
|
+
for child_element in self.findall(element, "RELEASED-TRIGGERS/*"):
|
|
905
|
+
tag_name = self.getTagName(child_element)
|
|
906
|
+
if tag_name == "TRIGGER":
|
|
907
|
+
trigger = desc.createReleasedTrigger(self.getShortName(child_element))
|
|
908
|
+
self.readTrigger(child_element, trigger)
|
|
909
|
+
else:
|
|
910
|
+
self.notImplemented("Unsupported Released Trigger <%s>" % tag_name)
|
|
911
|
+
|
|
912
|
+
def readBswModuleDescriptionRequiredTriggers(self, element: ET.Element, desc: BswModuleDescription):
|
|
913
|
+
for child_element in self.findall(element, "REQUIRED-TRIGGERS/*"):
|
|
914
|
+
tag_name = self.getTagName(child_element)
|
|
915
|
+
if tag_name == "TRIGGER":
|
|
916
|
+
trigger = desc.createRequiredTrigger(self.getShortName(child_element))
|
|
917
|
+
self.readTrigger(child_element, trigger)
|
|
918
|
+
else:
|
|
919
|
+
self.notImplemented("Unsupported Required Trigger <%s>" % tag_name)
|
|
920
|
+
|
|
921
|
+
def readBswModuleDescriptionProvidedDatas(self, element: ET.Element, desc: BswModuleDescription):
|
|
922
|
+
for child_element in self.findall(element, "PROVIDED-DATAS/*"):
|
|
923
|
+
tag_name = self.getTagName(child_element)
|
|
924
|
+
if tag_name == "VARIABLE-DATA-PROTOTYPE":
|
|
925
|
+
data = desc.createProvidedData(self.getShortName(child_element))
|
|
926
|
+
self.readVariableDataPrototype(child_element, data)
|
|
927
|
+
else:
|
|
928
|
+
self.notImplemented("Unsupported Provided Data <%s>" % tag_name)
|
|
929
|
+
|
|
930
|
+
def readBswModuleDescriptionRequiredDatas(self, element: ET.Element, desc: BswModuleDescription):
|
|
931
|
+
for child_element in self.findall(element, "REQUIRED-DATAS/*"):
|
|
932
|
+
tag_name = self.getTagName(child_element)
|
|
933
|
+
if tag_name == "VARIABLE-DATA-PROTOTYPE":
|
|
934
|
+
data = desc.createRequiredData(self.getShortName(child_element))
|
|
935
|
+
self.readVariableDataPrototype(child_element, data)
|
|
936
|
+
else:
|
|
937
|
+
self.notImplemented("Unsupported Required Data <%s>" % tag_name)
|
|
705
938
|
|
|
706
939
|
def readBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
|
|
707
940
|
self.logger.debug("Read BswModuleDescription <%s>" % desc.getShortName())
|
|
708
941
|
|
|
709
942
|
self.readIdentifiable(element, desc)
|
|
710
943
|
desc.setModuleId(self.getChildElementOptionalNumericalValue(element, "MODULE-ID"))
|
|
711
|
-
self.
|
|
712
|
-
self.
|
|
713
|
-
self.
|
|
714
|
-
self.
|
|
944
|
+
self.readBswModuleDescriptionImplementedEntryRefs(element, desc)
|
|
945
|
+
self.readBswModuleDescriptionProvidedModeGroups(element, desc)
|
|
946
|
+
self.readBswModuleDescriptionRequiredModeGroups(element, desc)
|
|
947
|
+
self.readBswModuleDescriptionReleasedTriggers(element, desc)
|
|
948
|
+
self.readBswModuleDescriptionRequiredTriggers(element, desc)
|
|
949
|
+
self.readBswModuleDescriptionProvidedDatas(element, desc)
|
|
950
|
+
self.readBswModuleDescriptionRequiredDatas(element, desc)
|
|
951
|
+
self.readBswModuleDescriptionBswInternalBehaviors(element, desc)
|
|
715
952
|
|
|
716
953
|
def readSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
|
|
717
|
-
self.
|
|
954
|
+
self.readIdentifiable(element, arg)
|
|
718
955
|
arg.setDirection(self.getChildElementOptionalLiteral(element, "DIRECTION")) \
|
|
719
956
|
.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
720
957
|
|
|
@@ -778,7 +1015,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
778
1015
|
memory_section = consumption.createMemorySection(self.getShortName(child_element))
|
|
779
1016
|
self.readIdentifiable(child_element, memory_section)
|
|
780
1017
|
memory_section.setAlignment(self.getChildElementOptionalLiteral(child_element, "ALIGNMENT")) \
|
|
781
|
-
.setMemClassSymbol(self.getChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL"))
|
|
1018
|
+
.setMemClassSymbol(self.getChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL"))
|
|
782
1019
|
self.readMemorySectionOptions(child_element, memory_section)
|
|
783
1020
|
memory_section.setSize(self.getChildElementOptionalNumericalValue(child_element, "SIZE")) \
|
|
784
1021
|
.setSwAddrMethodRef(self.getChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF")) \
|
|
@@ -830,7 +1067,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
830
1067
|
self.logger.debug("Read BswImplementation <%s>" % impl.getShortName())
|
|
831
1068
|
self.readImplementation(element, impl)
|
|
832
1069
|
impl.setArReleaseVersion(self.getChildElementOptionalLiteral(element, "AR-RELEASE-VERSION")) \
|
|
833
|
-
.setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF"))
|
|
1070
|
+
.setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF")) \
|
|
1071
|
+
.setVendorApiInfix(self.getChildElementOptionalLiteral(element, "VENDOR-API-INFIX"))
|
|
834
1072
|
self.readBswImplementationVendorSpecificModuleDefRefs(element, impl)
|
|
835
1073
|
AUTOSAR.getInstance().addImplementationBehaviorMap(impl.getFullName(), impl.getBehaviorRef().getValue())
|
|
836
1074
|
|
|
@@ -840,19 +1078,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
840
1078
|
impl.setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF"))
|
|
841
1079
|
AUTOSAR.getInstance().addImplementationBehaviorMap(impl.getFullName(), impl.getBehaviorRef().getValue())
|
|
842
1080
|
|
|
843
|
-
def
|
|
1081
|
+
def readRunnableEntityDataReceivePointByArguments(self, element, parent: RunnableEntity):
|
|
844
1082
|
self._readVariableAccesses(element, parent, "DATA-RECEIVE-POINT-BY-ARGUMENTS")
|
|
845
1083
|
|
|
846
|
-
def
|
|
1084
|
+
def readRunnableEntityDataReceivePointByValues(self, element: ET.Element, parent: RunnableEntity):
|
|
847
1085
|
self._readVariableAccesses(element, parent, "DATA-RECEIVE-POINT-BY-VALUES")
|
|
848
1086
|
|
|
849
|
-
def
|
|
1087
|
+
def readRunnableEntityDataReadAccesses(self, element: ET.Element, parent: RunnableEntity):
|
|
850
1088
|
self._readVariableAccesses(element, parent, "DATA-READ-ACCESSS")
|
|
851
1089
|
|
|
852
|
-
def
|
|
1090
|
+
def readRunnableEntityDataWriteAccesses(self, element: ET.Element, parent: RunnableEntity):
|
|
853
1091
|
self._readVariableAccesses(element, parent, "DATA-WRITE-ACCESSS")
|
|
854
1092
|
|
|
855
|
-
def
|
|
1093
|
+
def readRunnableEntityDataSendPoints(self, element: ET.Element, parent: RunnableEntity):
|
|
856
1094
|
self._readVariableAccesses(element, parent, "DATA-SEND-POINTS")
|
|
857
1095
|
|
|
858
1096
|
def getRunnableEntityArgument(self, element: ET.Element) -> RunnableEntityArgument:
|
|
@@ -868,17 +1106,17 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
868
1106
|
parameter.setLocalParameterRef(self.getChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF"))
|
|
869
1107
|
return parameter
|
|
870
1108
|
|
|
871
|
-
def
|
|
1109
|
+
def readRunnableEntityParameterAccesses(self, element: ET.Element, parent: RunnableEntity):
|
|
872
1110
|
for child_element in self.findall(element, "PARAMETER-ACCESSS/PARAMETER-ACCESS"):
|
|
873
1111
|
short_name = self.getShortName(child_element)
|
|
874
1112
|
self.logger.debug("readParameterAccesses %s" % short_name)
|
|
875
1113
|
parameter_access = parent.createParameterAccess(short_name)
|
|
876
1114
|
parameter_access.setAccessedParameter(self.getAutosarParameterRef(child_element, "ACCESSED-PARAMETER"))
|
|
877
1115
|
|
|
878
|
-
def
|
|
1116
|
+
def readRunnableEntityWrittenLocalVariables(self, element: ET.Element, parent: RunnableEntity):
|
|
879
1117
|
self._readVariableAccesses(element, parent, "WRITTEN-LOCAL-VARIABLES")
|
|
880
1118
|
|
|
881
|
-
def
|
|
1119
|
+
def readRunnableEntityReadLocalVariables(self, element: ET.Element, parent: RunnableEntity):
|
|
882
1120
|
self._readVariableAccesses(element, parent, "READ-LOCAL-VARIABLES")
|
|
883
1121
|
|
|
884
1122
|
def readROperationIRef(self, element: ET.Element, key: str, parent: ServerCallPoint):
|
|
@@ -903,7 +1141,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
903
1141
|
mode_iref = RModeInAtomicSwcInstanceRef()
|
|
904
1142
|
mode_iref.setContextPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF")) \
|
|
905
1143
|
.setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
|
|
906
|
-
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF"))
|
|
1144
|
+
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF")) # NOQA E501
|
|
907
1145
|
parent.addModeIRef(mode_iref)
|
|
908
1146
|
|
|
909
1147
|
def readSynchronousServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
|
|
@@ -922,7 +1160,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
922
1160
|
server_call_point.setTimeout(self.getChildElementOptionalFloatValue(element, "TIMEOUT"))
|
|
923
1161
|
self.readROperationIRef(element, "OPERATION-IREF", server_call_point)
|
|
924
1162
|
|
|
925
|
-
def
|
|
1163
|
+
def readRunnableEntityInternalBehaviorServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
|
|
926
1164
|
for child_element in self.findall(element, "SERVER-CALL-POINTS/*"):
|
|
927
1165
|
tag_name = self.getTagName(child_element)
|
|
928
1166
|
if tag_name == "SYNCHRONOUS-SERVER-CALL-POINT":
|
|
@@ -932,48 +1170,73 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
932
1170
|
else:
|
|
933
1171
|
self.raiseError("Unsupported server call point type <%s>" % tag_name)
|
|
934
1172
|
|
|
935
|
-
def
|
|
1173
|
+
def readRunnableEntityInternalTriggeringPoints(self, element: ET.Element, parent: RunnableEntity):
|
|
936
1174
|
for child_element in self.findall(element, "INTERNAL-TRIGGERING-POINTS/INTERNAL-TRIGGERING-POINT"):
|
|
937
1175
|
short_name = self.getShortName(child_element)
|
|
938
1176
|
point = parent.createInternalTriggeringPoint(short_name)
|
|
939
1177
|
point.sw_impl_policy = self.getChildElementOptionalLiteral(child_element, "SW-IMPL-POLICY")
|
|
940
1178
|
|
|
941
|
-
def
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
1179
|
+
def readModeGroupInAtomicSwcInstanceRef(self, element: ET.Element, instance_ref: ModeGroupInAtomicSwcInstanceRef):
|
|
1180
|
+
instance_ref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
|
|
1181
|
+
.setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF"))
|
|
1182
|
+
|
|
1183
|
+
def readRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, instance_ref: RModeGroupInAtomicSWCInstanceRef):
|
|
1184
|
+
self.readModeGroupInAtomicSwcInstanceRef(element, instance_ref)
|
|
1185
|
+
instance_ref.setContextRPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-R-PORT-REF")) \
|
|
1186
|
+
.setTargetModeGroupRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-GROUP-REF"))
|
|
1187
|
+
|
|
1188
|
+
def readPModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, instance_ref: PModeGroupInAtomicSwcInstanceRef):
|
|
1189
|
+
self.readModeGroupInAtomicSwcInstanceRef(element, instance_ref)
|
|
1190
|
+
instance_ref.setContextPPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-P-PORT-REF")) \
|
|
1191
|
+
.setTargetModeGroupRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-GROUP-REF"))
|
|
1192
|
+
|
|
1193
|
+
def getModeGroupIRef(self, element: ET.Element, key: str) -> ModeGroupInAtomicSwcInstanceRef:
|
|
1194
|
+
instance_ref = None
|
|
1195
|
+
for child_element in self.findall(element, "%s/*" % key):
|
|
1196
|
+
tag_name = self.getTagName(child_element)
|
|
1197
|
+
if tag_name == "P-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF":
|
|
1198
|
+
instance_ref = PModeGroupInAtomicSwcInstanceRef()
|
|
1199
|
+
self.readPModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
|
|
1200
|
+
elif tag_name == "R-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF":
|
|
1201
|
+
instance_ref = RModeGroupInAtomicSWCInstanceRef()
|
|
1202
|
+
self.readRModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
|
|
1203
|
+
else:
|
|
1204
|
+
self.notImplemented("Unsupported Mode Group IRef <%s>" % tag_name)
|
|
1205
|
+
return instance_ref
|
|
1206
|
+
|
|
1207
|
+
def readModeAccessPoint(self, element: ET.Element, point: ModeAccessPoint):
|
|
1208
|
+
self.readARObjectAttributes(element, point)
|
|
1209
|
+
point.setModeGroupIRef(self.getModeGroupIRef(element, "MODE-GROUP-IREF"))
|
|
1210
|
+
|
|
1211
|
+
def readRunnableEntityModeAccessPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
1212
|
+
for child_element in self.findall(element, "MODE-ACCESS-POINTS/*"):
|
|
1213
|
+
tag_name = self.getTagName(child_element)
|
|
1214
|
+
if tag_name == "MODE-ACCESS-POINT":
|
|
1215
|
+
point = ModeAccessPoint()
|
|
1216
|
+
self.readModeAccessPoint(child_element, point)
|
|
1217
|
+
entity.addModeAccessPoint(point)
|
|
1218
|
+
else:
|
|
1219
|
+
self.notImplemented("Unsupported Mode Access Point <%s>" % tag_name)
|
|
1220
|
+
|
|
1221
|
+
def readModeSwitchPointModeGroupIRef(self, element: ET.Element, point: ModeSwitchPoint):
|
|
959
1222
|
child_element = self.find(element, "MODE-GROUP-IREF")
|
|
960
|
-
iref = None
|
|
961
1223
|
if child_element is not None:
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
return iref
|
|
1224
|
+
instance_ref = PModeGroupInAtomicSwcInstanceRef()
|
|
1225
|
+
self.readPModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
|
|
1226
|
+
point.setModeGroupIRef(instance_ref)
|
|
966
1227
|
|
|
967
|
-
def
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
1228
|
+
def readModeSwitchPoint(self, element: ET.Element, point: ModeSwitchPoint):
|
|
1229
|
+
self.readARObjectAttributes(element, point)
|
|
1230
|
+
self.readModeSwitchPointModeGroupIRef(element, point)
|
|
1231
|
+
|
|
1232
|
+
def readRunnableEntityModeSwitchPoints(self, element: ET.Element, parent: RunnableEntity):
|
|
1233
|
+
for child_element in self.findall(element, "MODE-SWITCH-POINTS/*"):
|
|
1234
|
+
tag_name = self.getTagName(child_element)
|
|
1235
|
+
if tag_name == "MODE-SWITCH-POINT":
|
|
1236
|
+
point = parent.createModeSwitchPoint(self.getShortName(child_element))
|
|
1237
|
+
self.readModeSwitchPoint(child_element, point)
|
|
1238
|
+
else:
|
|
1239
|
+
self.notImplemented("Unsupported Mode Switch Point <%s>" % tag_name)
|
|
977
1240
|
|
|
978
1241
|
def readRunnableEntityArguments(self, element: ET.Element, entity: RunnableEntity):
|
|
979
1242
|
for child_element in self.findall(element, "ARGUMENTS/*"):
|
|
@@ -983,7 +1246,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
983
1246
|
else:
|
|
984
1247
|
self.notImplemented("Unsupported Arguments of runnable entity <%s>" % tag_name)
|
|
985
1248
|
|
|
986
|
-
def
|
|
1249
|
+
def readRunnableEntityAsynchronousServerCallResultPoint(self, element: ET.Element, entity: RunnableEntity):
|
|
987
1250
|
for child_element in self.findall(element, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINTS/ASYNCHRONOUS-SERVER-CALL-RESULT-POINT"):
|
|
988
1251
|
point = entity.createAsynchronousServerCallResultPoint(self.getShortName(child_element))
|
|
989
1252
|
self.readIdentifiable(child_element, point)
|
|
@@ -993,38 +1256,39 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
993
1256
|
self.readExecutableEntity(element, entity)
|
|
994
1257
|
self.readRunnableEntityArguments(element, entity)
|
|
995
1258
|
|
|
996
|
-
self.
|
|
1259
|
+
self.readRunnableEntityAsynchronousServerCallResultPoint(element, entity)
|
|
997
1260
|
entity.setCanBeInvokedConcurrently(self.getChildElementOptionalBooleanValue(element, "CAN-BE-INVOKED-CONCURRENTLY"))
|
|
998
|
-
self.
|
|
999
|
-
self.
|
|
1000
|
-
self.
|
|
1001
|
-
self.
|
|
1002
|
-
self.
|
|
1003
|
-
self.
|
|
1004
|
-
self.
|
|
1005
|
-
self.
|
|
1006
|
-
self.
|
|
1007
|
-
self.
|
|
1008
|
-
self.
|
|
1009
|
-
self.
|
|
1261
|
+
self.readRunnableEntityDataReadAccesses(element, entity)
|
|
1262
|
+
self.readRunnableEntityDataReceivePointByArguments(element, entity)
|
|
1263
|
+
self.readRunnableEntityDataReceivePointByValues(element, entity)
|
|
1264
|
+
self.readRunnableEntityDataWriteAccesses(element, entity)
|
|
1265
|
+
self.readRunnableEntityDataSendPoints(element, entity)
|
|
1266
|
+
self.readRunnableEntityInternalBehaviorServerCallPoint(element, entity)
|
|
1267
|
+
self.readRunnableEntityInternalTriggeringPoints(element, entity)
|
|
1268
|
+
self.readRunnableEntityModeAccessPoints(element, entity)
|
|
1269
|
+
self.readRunnableEntityModeSwitchPoints(element, entity)
|
|
1270
|
+
self.readRunnableEntityParameterAccesses(element, entity)
|
|
1271
|
+
self.readRunnableEntityReadLocalVariables(element, entity)
|
|
1272
|
+
self.readRunnableEntityWrittenLocalVariables(element, entity)
|
|
1010
1273
|
|
|
1011
1274
|
entity.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
1012
1275
|
|
|
1013
1276
|
def readSwcInternalBehaviorRunnables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
1014
|
-
for child_element in self.findall(element, "RUNNABLES
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1277
|
+
for child_element in self.findall(element, "RUNNABLES/*"):
|
|
1278
|
+
tag_name = self.getTagName(child_element)
|
|
1279
|
+
if tag_name == "RUNNABLE-ENTITY":
|
|
1280
|
+
entity = parent.createRunnableEntity(self.getShortName(child_element))
|
|
1281
|
+
self.readRunnableEntity(child_element, entity)
|
|
1282
|
+
else:
|
|
1283
|
+
self.notImplemented("Unsupported Runnables <%s>" % tag_name)
|
|
1020
1284
|
|
|
1021
1285
|
def getRModeInAtomicSwcInstanceRef(self, element: ET.Element) -> RModeInAtomicSwcInstanceRef:
|
|
1022
|
-
|
|
1023
|
-
|
|
1286
|
+
instance_ref = RModeInAtomicSwcInstanceRef()
|
|
1287
|
+
instance_ref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
|
|
1024
1288
|
.setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
|
|
1025
1289
|
.setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
|
|
1026
|
-
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-DECLARATION-REF"))
|
|
1027
|
-
return
|
|
1290
|
+
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-DECLARATION-REF")) # NOQA E501
|
|
1291
|
+
return instance_ref
|
|
1028
1292
|
|
|
1029
1293
|
def readRTEEvent(self, element: ET.Element, event: RTEEvent):
|
|
1030
1294
|
self.readIdentifiable(element, event)
|
|
@@ -1039,7 +1303,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1039
1303
|
operation_iref = POperationInAtomicSwcInstanceRef()
|
|
1040
1304
|
self.readARObjectAttributes(child_element, operation_iref)
|
|
1041
1305
|
operation_iref.setContextPPortRef(self.getChildElementRefType(parent.getShortName(), child_element, "CONTEXT-P-PORT-REF")) \
|
|
1042
|
-
.setTargetProvidedOperationRef(self.getChildElementRefType(parent.getShortName(), child_element, "TARGET-PROVIDED-OPERATION-REF"))
|
|
1306
|
+
.setTargetProvidedOperationRef(self.getChildElementRefType(parent.getShortName(), child_element, "TARGET-PROVIDED-OPERATION-REF")) # NOQA E501
|
|
1043
1307
|
parent.setOperationIRef(operation_iref)
|
|
1044
1308
|
|
|
1045
1309
|
def readOperationInvokedEvent(self, element: ET.Element, event: OperationInvokedEvent):
|
|
@@ -1051,13 +1315,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1051
1315
|
self.readAutosarDataPrototype(element, prototype)
|
|
1052
1316
|
prototype.setInitValue(self.getInitValue(element))
|
|
1053
1317
|
|
|
1054
|
-
def
|
|
1318
|
+
def readSwcInternalBehaviorExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
1055
1319
|
for child_element in self.findall(element, "EXPLICIT-INTER-RUNNABLE-VARIABLES/VARIABLE-DATA-PROTOTYPE"):
|
|
1056
1320
|
short_name = self.getShortName(child_element)
|
|
1057
1321
|
prototype = parent.createExplicitInterRunnableVariable(short_name)
|
|
1058
1322
|
self.readVariableDataPrototype(child_element, prototype)
|
|
1059
1323
|
|
|
1060
|
-
def
|
|
1324
|
+
def readSwcInternalBehaviorPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1061
1325
|
for child_element in self.findall(element, "PER-INSTANCE-MEMORYS/PER-INSTANCE-MEMORY"):
|
|
1062
1326
|
short_name = self.getShortName(child_element)
|
|
1063
1327
|
memory = behavior.createPerInstanceMemory(short_name)
|
|
@@ -1072,11 +1336,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1072
1336
|
prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
|
|
1073
1337
|
|
|
1074
1338
|
def readParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
|
|
1075
|
-
self.readIdentifiable(element, prototype)
|
|
1076
1339
|
self.readAutosarDataPrototype(element, prototype)
|
|
1077
1340
|
prototype.setInitValue(self.getInitValue(element))
|
|
1078
1341
|
|
|
1079
|
-
def
|
|
1342
|
+
def readSwcInternalBehaviorPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1080
1343
|
for child_element in self.findall(element, "PER-INSTANCE-PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
1081
1344
|
short_name = self.getShortName(child_element)
|
|
1082
1345
|
prototype = behavior.createPerInstanceParameter(short_name)
|
|
@@ -1090,7 +1353,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1090
1353
|
argument_value.setValueTypeTRef(self.getChildElementOptionalRefType(element, "VALUE-TYPE-TREF"))
|
|
1091
1354
|
return argument_value
|
|
1092
1355
|
|
|
1093
|
-
def
|
|
1356
|
+
def readSwcInternalBehaviorPortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1094
1357
|
for child_element in self.findall(element, "PORT-API-OPTIONS/PORT-API-OPTION"):
|
|
1095
1358
|
option = PortAPIOption()
|
|
1096
1359
|
option.setEnableTakeAddress(self.getChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS")) \
|
|
@@ -1195,7 +1458,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1195
1458
|
self.readARObjectAttributes(element, specific)
|
|
1196
1459
|
specific.value = element.text
|
|
1197
1460
|
if 'L' in element.attrib:
|
|
1198
|
-
specific.l = element.attrib['L']
|
|
1461
|
+
specific.l = element.attrib['L'] # noqa E741
|
|
1199
1462
|
|
|
1200
1463
|
def getLParagraphs(self, element: ET.Element, key: str) -> List[LParagraph]:
|
|
1201
1464
|
results = []
|
|
@@ -1204,7 +1467,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1204
1467
|
self.readLanguageSpecific(child_element, l1)
|
|
1205
1468
|
results.append(l1)
|
|
1206
1469
|
return results
|
|
1207
|
-
|
|
1470
|
+
|
|
1208
1471
|
def getMultiLanguageParagraphs(self, element: ET.Element, key: str) -> List[MultiLanguageParagraph]:
|
|
1209
1472
|
paragraphs = []
|
|
1210
1473
|
for child_element in self.findall(element, key):
|
|
@@ -1235,7 +1498,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1235
1498
|
for block in self.getDocumentationBlockList(child_element, "ITEM"):
|
|
1236
1499
|
list.addItem(block)
|
|
1237
1500
|
result.append(list)
|
|
1238
|
-
return result
|
|
1501
|
+
return result
|
|
1239
1502
|
|
|
1240
1503
|
def getMultiLanguagePlainText(self, element: ET.Element, key: str) -> MultiLanguagePlainText:
|
|
1241
1504
|
paragraph = None
|
|
@@ -1277,10 +1540,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1277
1540
|
|
|
1278
1541
|
def getAnnotations(self, element: ET.Element) -> List[Annotation]:
|
|
1279
1542
|
annotations = []
|
|
1280
|
-
for child_element in self.findall(element, "ANNOTATIONS
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1543
|
+
for child_element in self.findall(element, "ANNOTATIONS/*"):
|
|
1544
|
+
tag_name = self.getTagName(child_element)
|
|
1545
|
+
if tag_name == "ANNOTATION":
|
|
1546
|
+
annotation = Annotation()
|
|
1547
|
+
self.readGeneralAnnotation(child_element, annotation)
|
|
1548
|
+
annotations.append(annotation)
|
|
1549
|
+
else:
|
|
1550
|
+
self.notImplemented("Unsupported Annotation <%s>" % tag_name)
|
|
1284
1551
|
return annotations
|
|
1285
1552
|
|
|
1286
1553
|
def getSwAxisIndividual(self, element: ET.Element) -> SwAxisIndividual:
|
|
@@ -1349,12 +1616,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1349
1616
|
.setSwPointerTargetProps(self.getSwPointerTargetProps(conditional_tag, "SW-POINTER-TARGET-PROPS")) \
|
|
1350
1617
|
.setSwRecordLayoutRef(self.getChildElementOptionalRefType(conditional_tag, "SW-RECORD-LAYOUT-REF")) \
|
|
1351
1618
|
.setValueAxisDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "VALUE-AXIS-DATA-TYPE-REF")) \
|
|
1352
|
-
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1619
|
+
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1353
1620
|
self.readSwDataDefProsInvalidValue(conditional_tag, sw_data_def_props)
|
|
1354
|
-
#self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
1621
|
+
# self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
1355
1622
|
self.readARObjectAttributes(conditional_tag, sw_data_def_props.conditional)
|
|
1356
1623
|
return sw_data_def_props
|
|
1357
|
-
|
|
1624
|
+
|
|
1358
1625
|
def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
1359
1626
|
self.readIdentifiable(element, data_type)
|
|
1360
1627
|
data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
@@ -1363,22 +1630,24 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1363
1630
|
self.logger.debug("Read ApplicationPrimitiveDataType <%s>" % data_type.getShortName())
|
|
1364
1631
|
self.readAutosarDataType(element, data_type)
|
|
1365
1632
|
|
|
1366
|
-
def
|
|
1367
|
-
|
|
1633
|
+
def readApplicationRecordElement(self, element: ET.Element, record_element: ApplicationRecordElement):
|
|
1634
|
+
self.logger.debug("read ApplicationRecordElement %s" % record_element.getShortName())
|
|
1635
|
+
self.readApplicationCompositeElementDataPrototype(element, record_element)
|
|
1368
1636
|
|
|
1369
|
-
def
|
|
1370
|
-
for child_element in self.findall(element, "ELEMENTS
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1637
|
+
def readApplicationRecordDataTypeElements(self, element: ET.Element, parent: ApplicationRecordDataType):
|
|
1638
|
+
for child_element in self.findall(element, "ELEMENTS/*"):
|
|
1639
|
+
tag_name = self.getTagName(child_element)
|
|
1640
|
+
if tag_name == "APPLICATION-RECORD-ELEMENT":
|
|
1641
|
+
record_element = parent.createApplicationRecordElement(self.getShortName(child_element))
|
|
1642
|
+
self.readApplicationRecordElement(child_element, record_element)
|
|
1643
|
+
else:
|
|
1644
|
+
self.notImplemented("Unsupported ApplicationRecordDataType Element <%s>" % tag_name)
|
|
1376
1645
|
|
|
1377
1646
|
def readApplicationRecordDataType(self, element: ET.Element, data_type: ApplicationRecordDataType):
|
|
1378
1647
|
self.logger.debug("Read ApplicationRecordDataType <%s>" % data_type.getShortName())
|
|
1379
1648
|
self.readIdentifiable(element, data_type)
|
|
1380
1649
|
data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
1381
|
-
self.
|
|
1650
|
+
self.readApplicationRecordDataTypeElements(element, data_type)
|
|
1382
1651
|
|
|
1383
1652
|
def readImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
|
|
1384
1653
|
for child_element in self.findall(element, "SUB-ELEMENTS/IMPLEMENTATION-DATA-TYPE-ELEMENT"):
|
|
@@ -1410,7 +1679,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1410
1679
|
self.readIdentifiable(element, data_type)
|
|
1411
1680
|
self.readBaseTypeDirectDefinition(element, data_type.getBaseTypeDefinition())
|
|
1412
1681
|
|
|
1413
|
-
def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key:str)
|
|
1682
|
+
def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key: str) \
|
|
1683
|
+
-> ApplicationCompositeElementInPortInterfaceInstanceRef:
|
|
1414
1684
|
child_element = self.find(element, key)
|
|
1415
1685
|
iref = None
|
|
1416
1686
|
if child_element is not None:
|
|
@@ -1480,7 +1750,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1480
1750
|
value_spec = None
|
|
1481
1751
|
child_element = self.find(element, "INIT-VALUE/*")
|
|
1482
1752
|
if child_element is not None:
|
|
1483
|
-
self.logger.debug("getInitValue")
|
|
1484
1753
|
value_spec = self.getValueSpecification(child_element, self.getTagName(child_element))
|
|
1485
1754
|
return value_spec
|
|
1486
1755
|
|
|
@@ -1514,7 +1783,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1514
1783
|
|
|
1515
1784
|
def getNonqueuedReceiverComSpec(self, element: ET.Element) -> NonqueuedReceiverComSpec:
|
|
1516
1785
|
com_spec = NonqueuedReceiverComSpec()
|
|
1517
|
-
self.readARObjectAttributes(element, com_spec)
|
|
1786
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1518
1787
|
self.readReceiverComSpec(element, com_spec)
|
|
1519
1788
|
com_spec.setAliveTimeout(self.getChildElementOptionalFloatValue(element, "ALIVE-TIMEOUT")) \
|
|
1520
1789
|
.setEnableUpdated(self.getChildElementOptionalBooleanValue(element, "ENABLE-UPDATE")) \
|
|
@@ -1543,10 +1812,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1543
1812
|
def readAbstractRequiredPortPrototype(self, element: ET.Element, prototype: AbstractRequiredPortPrototype):
|
|
1544
1813
|
self.readProvidedComSpec(element, prototype)
|
|
1545
1814
|
|
|
1546
|
-
def readPPortPrototype(self, element: ET.Element,
|
|
1547
|
-
|
|
1548
|
-
self.logger.debug("readPPortPrototype %s" % short_name)
|
|
1549
|
-
prototype = parent.createPPortPrototype(short_name)
|
|
1815
|
+
def readPPortPrototype(self, element: ET.Element, prototype: PPortPrototype):
|
|
1816
|
+
self.logger.debug("Read PPortPrototype %s" % prototype.getShortName())
|
|
1550
1817
|
self.readIdentifiable(element, prototype)
|
|
1551
1818
|
self.readAbstractRequiredPortPrototype(element, prototype)
|
|
1552
1819
|
prototype.setProvidedInterfaceTRef(self.getChildElementOptionalRefType(element, "PROVIDED-INTERFACE-TREF"))
|
|
@@ -1554,34 +1821,33 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1554
1821
|
def readAbstractProvidedPortPrototype(self, element: ET.Element, prototype: AbstractProvidedPortPrototype):
|
|
1555
1822
|
self.readRequiredComSpec(element, prototype)
|
|
1556
1823
|
|
|
1557
|
-
def readRPortPrototype(self, element: ET.Element,
|
|
1558
|
-
|
|
1559
|
-
self.logger.debug("read RPortPrototype %s" % short_name)
|
|
1560
|
-
prototype = parent.createRPortPrototype(short_name)
|
|
1824
|
+
def readRPortPrototype(self, element: ET.Element, prototype: RPortPrototype):
|
|
1825
|
+
self.logger.debug("Read RPortPrototype %s" % prototype.getShortName())
|
|
1561
1826
|
self.readIdentifiable(element, prototype)
|
|
1562
1827
|
self.readAbstractProvidedPortPrototype(element, prototype)
|
|
1563
1828
|
prototype.setRequiredInterfaceTRef(self.getChildElementOptionalRefType(element, "REQUIRED-INTERFACE-TREF"))
|
|
1564
1829
|
|
|
1565
|
-
def readPRPortPrototype(self, element: ET.Element,
|
|
1566
|
-
|
|
1567
|
-
self.logger.debug("read PRPortPrototype %s" % short_name)
|
|
1568
|
-
prototype = parent.createPRPortPrototype(short_name)
|
|
1830
|
+
def readPRPortPrototype(self, element: ET.Element, prototype: PRPortPrototype):
|
|
1831
|
+
self.logger.debug("Read PRPortPrototype %s" % prototype.getShortName())
|
|
1569
1832
|
self.readIdentifiable(element, prototype)
|
|
1570
1833
|
self.readAbstractRequiredPortPrototype(element, prototype)
|
|
1571
1834
|
self.readAbstractProvidedPortPrototype(element, prototype)
|
|
1572
1835
|
prototype.setProvidedRequiredInterface(self.getChildElementOptionalRefType(element, "PROVIDED-REQUIRED-INTERFACE-TREF"))
|
|
1573
1836
|
|
|
1574
|
-
def
|
|
1837
|
+
def readSwComponentTypePorts(self, element: ET.Element, sw_component: SwComponentType):
|
|
1575
1838
|
for child_element in self.findall(element, "PORTS/*"):
|
|
1576
1839
|
tag_name = self.getTagName(child_element)
|
|
1577
1840
|
if tag_name == "P-PORT-PROTOTYPE":
|
|
1578
|
-
self.
|
|
1841
|
+
prototype = sw_component.createPPortPrototype(self.getShortName(child_element))
|
|
1842
|
+
self.readPPortPrototype(child_element, prototype)
|
|
1579
1843
|
elif tag_name == "R-PORT-PROTOTYPE":
|
|
1580
|
-
self.
|
|
1844
|
+
prototype = sw_component.createRPortPrototype(self.getShortName(child_element))
|
|
1845
|
+
self.readRPortPrototype(child_element, prototype)
|
|
1581
1846
|
elif tag_name == "PR-PORT-PROTOTYPE":
|
|
1582
|
-
self.
|
|
1847
|
+
prototype = sw_component.createPRPortPrototype(self.getShortName(child_element))
|
|
1848
|
+
self.readPRPortPrototype(child_element, prototype)
|
|
1583
1849
|
else:
|
|
1584
|
-
self.
|
|
1850
|
+
self.notImplemented("Unsupported Port Prototype <%s>" % tag_name)
|
|
1585
1851
|
|
|
1586
1852
|
def readTransmissionAcknowledgementRequest(self, element: ET.Element) -> TransmissionAcknowledgementRequest:
|
|
1587
1853
|
child_element = self.find(element, "TRANSMISSION-ACKNOWLEDGE")
|
|
@@ -1592,7 +1858,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1592
1858
|
return acknowledge
|
|
1593
1859
|
return None
|
|
1594
1860
|
|
|
1595
|
-
def readSenderComSpec(self, element:ET.Element, com_spec: SenderComSpec):
|
|
1861
|
+
def readSenderComSpec(self, element: ET.Element, com_spec: SenderComSpec):
|
|
1596
1862
|
self.readARObjectAttributes(element, com_spec)
|
|
1597
1863
|
for child_element in self.findall(element, "COMPOSITE-NETWORK-REPRESENTATIONS/COMPOSITE-NETWORK-REPRESENTATION"):
|
|
1598
1864
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
@@ -1602,20 +1868,20 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1602
1868
|
.setTransmissionAcknowledge(self.readTransmissionAcknowledgementRequest(element)) \
|
|
1603
1869
|
.setUsesEndToEndProtection(self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION"))
|
|
1604
1870
|
|
|
1605
|
-
def getNonqueuedSenderComSpec(self, element:ET.Element) -> NonqueuedSenderComSpec:
|
|
1871
|
+
def getNonqueuedSenderComSpec(self, element: ET.Element) -> NonqueuedSenderComSpec:
|
|
1606
1872
|
com_spec = NonqueuedSenderComSpec()
|
|
1607
1873
|
self.readSenderComSpec(element, com_spec)
|
|
1608
1874
|
com_spec.setInitValue(self.getInitValue(element))
|
|
1609
1875
|
return com_spec
|
|
1610
1876
|
|
|
1611
|
-
def getServerComSpec(self, element:ET.Element) -> ServerComSpec:
|
|
1877
|
+
def getServerComSpec(self, element: ET.Element) -> ServerComSpec:
|
|
1612
1878
|
com_spec = ServerComSpec()
|
|
1613
1879
|
self.readARObjectAttributes(element, com_spec)
|
|
1614
1880
|
com_spec.setOperationRef(self.getChildElementOptionalRefType(element, "OPERATION-REF")) \
|
|
1615
1881
|
.setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
|
|
1616
1882
|
return com_spec
|
|
1617
1883
|
|
|
1618
|
-
def getQueuedSenderComSpec(self, element:ET.Element) -> QueuedSenderComSpec:
|
|
1884
|
+
def getQueuedSenderComSpec(self, element: ET.Element) -> QueuedSenderComSpec:
|
|
1619
1885
|
com_spec = QueuedSenderComSpec()
|
|
1620
1886
|
self.readSenderComSpec(element, com_spec)
|
|
1621
1887
|
return com_spec
|
|
@@ -1652,7 +1918,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1652
1918
|
def readPortGroupInnerGroupIRefs(self, element: ET.Element, parent: PortGroup):
|
|
1653
1919
|
for child_element in self.findall(element, "INNER-GROUP-IREFS/INNER-GROUP-IREF"):
|
|
1654
1920
|
inner_group_iref = InnerPortGroupInCompositionInstanceRef()
|
|
1655
|
-
#inner_group_iref.contextRef = self.getChildElementOptionalRefType(child_element, "CONTEXT-REF")
|
|
1921
|
+
# inner_group_iref.contextRef = self.getChildElementOptionalRefType(child_element, "CONTEXT-REF")
|
|
1656
1922
|
inner_group_iref.setTargetRef(self.getChildElementOptionalRefType(child_element, "TARGET-REF"))
|
|
1657
1923
|
parent.addInnerGroupIRef(inner_group_iref)
|
|
1658
1924
|
|
|
@@ -1678,12 +1944,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1678
1944
|
|
|
1679
1945
|
def readSwComponentType(self, element: ET.Element, parent: SwComponentType):
|
|
1680
1946
|
self.readIdentifiable(element, parent)
|
|
1681
|
-
self.
|
|
1947
|
+
self.readSwComponentTypePorts(element, parent)
|
|
1682
1948
|
self.readSwComponentTypePortGroups(element, parent)
|
|
1683
1949
|
|
|
1684
1950
|
def readAtomicSwComponentType(self, element, parent: AtomicSwComponentType):
|
|
1685
1951
|
self.readSwComponentType(element, parent)
|
|
1686
|
-
self.
|
|
1952
|
+
self.readAtomicSwComponentTypeSwcInternalBehavior(element, parent)
|
|
1687
1953
|
|
|
1688
1954
|
def readEcuAbstractionSwComponentType(self, element, sw_component: EcuAbstractionSwComponentType):
|
|
1689
1955
|
self.logger.debug("Read EcuAbstractionSwComponentType <%s>" % sw_component.getShortName())
|
|
@@ -1711,9 +1977,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1711
1977
|
|
|
1712
1978
|
self.logger.debug("PPortInCompositionInstanceRef")
|
|
1713
1979
|
self.logger.debug(" CONTEXT-COMPONENT-REF DEST: %s, %s"
|
|
1714
|
-
% (p_port_in_composition_instance_ref.getContextComponentRef().getDest(),
|
|
1715
|
-
|
|
1716
|
-
|
|
1980
|
+
% (p_port_in_composition_instance_ref.getContextComponentRef().getDest(),
|
|
1981
|
+
p_port_in_composition_instance_ref.getContextComponentRef().getValue()))
|
|
1982
|
+
self.logger.debug(" TARGET-P-PORT-REF DEST: %s, %s"
|
|
1983
|
+
% (p_port_in_composition_instance_ref.getTargetPPortRef().getDest(),
|
|
1984
|
+
p_port_in_composition_instance_ref.getTargetPPortRef().getValue()))
|
|
1717
1985
|
|
|
1718
1986
|
def readRPortInCompositionInstanceRef(self, element, r_port_in_composition_instance_ref: RPortInCompositionInstanceRef):
|
|
1719
1987
|
r_port_in_composition_instance_ref.setContextComponentRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPONENT-REF")) \
|
|
@@ -1721,9 +1989,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1721
1989
|
|
|
1722
1990
|
self.logger.debug("RPortInCompositionInstanceRef")
|
|
1723
1991
|
self.logger.debug(" CONTEXT-COMPONENT-REF DEST: %s, %s"
|
|
1724
|
-
% (r_port_in_composition_instance_ref.getContextComponentRef().getDest(),
|
|
1725
|
-
|
|
1726
|
-
|
|
1992
|
+
% (r_port_in_composition_instance_ref.getContextComponentRef().getDest(),
|
|
1993
|
+
r_port_in_composition_instance_ref.getContextComponentRef().getValue()))
|
|
1994
|
+
self.logger.debug(" TARGET-P-PORT-REF DEST: %s, %s"
|
|
1995
|
+
% (r_port_in_composition_instance_ref.getTargetRPortRef().getDest(),
|
|
1996
|
+
r_port_in_composition_instance_ref.getTargetRPortRef().getValue()))
|
|
1727
1997
|
|
|
1728
1998
|
def readAssemblySwConnectorProviderIRef(self, element: ET.Element, parent: AssemblySwConnector):
|
|
1729
1999
|
child_element = self.find(element, "PROVIDER-IREF")
|
|
@@ -1741,16 +2011,27 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1741
2011
|
self.readRPortInCompositionInstanceRef(child_element, requester_iref)
|
|
1742
2012
|
parent.setRequesterIRef(requester_iref)
|
|
1743
2013
|
|
|
1744
|
-
def
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
self.logger.debug("readAssemblySwConnectors %s" % short_name)
|
|
2014
|
+
def readSwConnector(self, element: ET.Element, connector: SwConnector):
|
|
2015
|
+
self.readIdentifiable(element, connector)
|
|
2016
|
+
connector.setMappingRef(self.getChildElementOptionalRefType(element, "MAPPING-REF"))
|
|
1748
2017
|
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
2018
|
+
def readAssemblySwConnector(self, element: ET.Element, connector: AssemblySwConnector):
|
|
2019
|
+
self.logger.debug("Read AssemblySwConnectors %s" % connector.getShortName())
|
|
2020
|
+
self.readSwConnector(element, connector)
|
|
2021
|
+
self.readAssemblySwConnectorProviderIRef(element, connector)
|
|
2022
|
+
self.readAssemblySwConnectorRequesterIRef(element, connector)
|
|
2023
|
+
|
|
2024
|
+
def readCompositionSwComponentTypeSwConnectors(self, element: ET.Element, parent: CompositionSwComponentType):
|
|
2025
|
+
for child_element in self.findall(element, "CONNECTORS/*"):
|
|
2026
|
+
tag_name = self.getTagName(child_element)
|
|
2027
|
+
if tag_name == "ASSEMBLY-SW-CONNECTOR":
|
|
2028
|
+
connector = parent.createAssemblySwConnector(self.getShortName(child_element))
|
|
2029
|
+
self.readAssemblySwConnector(child_element, connector)
|
|
2030
|
+
elif tag_name == "DELEGATION-SW-CONNECTOR":
|
|
2031
|
+
connector = parent.createDelegationSwConnector(self.getShortName(child_element))
|
|
2032
|
+
self.readDelegationSwConnector(child_element, connector)
|
|
2033
|
+
else:
|
|
2034
|
+
self.notImplemented("Unsupported SwConnector <%s>" % tag_name)
|
|
1754
2035
|
|
|
1755
2036
|
def readDelegationSwConnectorInnerPortIRef(self, element, parent: DelegationSwConnector):
|
|
1756
2037
|
inner_port_iref_element = self.find(element, "INNER-PORT-IREF")
|
|
@@ -1771,45 +2052,45 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1771
2052
|
|
|
1772
2053
|
self.raiseError("Unsupported child element of INNER-PORT-IREF")
|
|
1773
2054
|
|
|
1774
|
-
def
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
2055
|
+
def readDelegationSwConnector(self, element, connector: DelegationSwConnector):
|
|
2056
|
+
self.logger.debug("Read DelegationSwConnectors %s" % connector.getShortName())
|
|
2057
|
+
self.readSwConnector(element, connector)
|
|
2058
|
+
self.readDelegationSwConnectorInnerPortIRef(element, connector)
|
|
1778
2059
|
|
|
1779
|
-
|
|
1780
|
-
self.
|
|
1781
|
-
self.readDelegationSwConnectorInnerPortIRef(child_element, connector)
|
|
2060
|
+
if connector.getInnerPortIRref() is None and connector.getOuterPortRef() is None:
|
|
2061
|
+
self.raiseError("Invalid PortPrototype of DELEGATION-SW-CONNECTOR")
|
|
1782
2062
|
|
|
1783
|
-
|
|
1784
|
-
|
|
2063
|
+
connector.setOuterPortRef(self.getChildElementOptionalRefType(element, "OUTER-PORT-REF"))
|
|
2064
|
+
self.logger.debug("OUTER-PORT-REF DEST: %s, %s" % (connector.getOuterPortRef().getDest(), connector.getOuterPortRef().getValue()))
|
|
1785
2065
|
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
2066
|
+
def readSwComponentPrototype(self, element: ET.Element, prototype: SwComponentPrototype):
|
|
2067
|
+
self.logger.debug("Read SwComponentPrototypes <%s>" % prototype.getShortName())
|
|
2068
|
+
self.readIdentifiable(element, prototype)
|
|
2069
|
+
prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
|
|
1789
2070
|
|
|
1790
|
-
def
|
|
1791
|
-
for child_element in
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
2071
|
+
def readCompositionSwComponentTypeComponents(self, element: ET.Element, parent: CompositionSwComponentType):
|
|
2072
|
+
for child_element in self.findall(element, "COMPONENTS/*"):
|
|
2073
|
+
tag_name = self.getTagName(child_element)
|
|
2074
|
+
if tag_name == "SW-COMPONENT-PROTOTYPE":
|
|
2075
|
+
prototype = parent.createSwComponentPrototype(self.getShortName(child_element))
|
|
2076
|
+
self.readSwComponentPrototype(child_element, prototype)
|
|
2077
|
+
else:
|
|
2078
|
+
self.notImplemented("Unsupported Component <%s>" % tag_name)
|
|
1797
2079
|
|
|
1798
2080
|
def readCompositionSwComponentTypeDataTypeMappingSet(self, element: ET.Element, parent: CompositionSwComponentType):
|
|
1799
|
-
child_element =
|
|
2081
|
+
child_element = self.find(element, "DATA-TYPE-MAPPING-REFS")
|
|
1800
2082
|
self.logger.debug("readDataTypeMappingSet")
|
|
1801
2083
|
if child_element is not None:
|
|
1802
|
-
for ref in self.getChildElementRefTypeList(child_element, "
|
|
2084
|
+
for ref in self.getChildElementRefTypeList(child_element, "DATA-TYPE-MAPPING-REF"):
|
|
1803
2085
|
parent.addDataTypeMapping(ref)
|
|
1804
2086
|
|
|
1805
2087
|
def readCompositionSwComponentType(self, element: ET.Element, type: CompositionSwComponentType):
|
|
1806
2088
|
self.logger.debug("Read CompositionSwComponentType: <%s>" % type.getShortName())
|
|
1807
|
-
self.readIdentifiable(element, type)
|
|
1808
2089
|
self.readSwComponentType(element, type)
|
|
1809
|
-
self.
|
|
1810
|
-
self.
|
|
1811
|
-
self.readDelegationSwConnectors(element, type)
|
|
2090
|
+
self.readCompositionSwComponentTypeComponents(element, type)
|
|
2091
|
+
self.readCompositionSwComponentTypeSwConnectors(element, type)
|
|
1812
2092
|
self.readCompositionSwComponentTypeDataTypeMappingSet(element, type)
|
|
2093
|
+
AUTOSAR.getInstance().addCompositionSwComponentType(type)
|
|
1813
2094
|
|
|
1814
2095
|
def readDataTypeMaps(self, element: ET.Element, parent: DataTypeMappingSet):
|
|
1815
2096
|
for child_element in element.findall("./xmlns:DATA-TYPE-MAPS/xmlns:DATA-TYPE-MAP", self.nsmap):
|
|
@@ -1836,13 +2117,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1836
2117
|
self.readModeRequestTypeMaps(element, mapping_set)
|
|
1837
2118
|
|
|
1838
2119
|
def readSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1839
|
-
for child_element in self.findall(element, "DATA-ELEMENTS
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
2120
|
+
for child_element in self.findall(element, "DATA-ELEMENTS/*"):
|
|
2121
|
+
tag_name = self.getTagName(child_element)
|
|
2122
|
+
if tag_name == "VARIABLE-DATA-PROTOTYPE":
|
|
2123
|
+
prototype = sr_interface.createDataElement(self.getShortName(child_element))
|
|
2124
|
+
self.readVariableDataPrototype(child_element, prototype)
|
|
2125
|
+
# prototype.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
|
|
2126
|
+
# self.readAutosarDataPrototype(child_element, prototype)
|
|
2127
|
+
else:
|
|
2128
|
+
self.notImplemented("Unsupported Data Element <%s>" % tag_name)
|
|
1846
2129
|
|
|
1847
2130
|
def readSenderReceiverInterfaceInvalidationPolicies(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1848
2131
|
for child_element in self.findall(element, "INVALIDATION-POLICYS/INVALIDATION-POLICY"):
|
|
@@ -1866,16 +2149,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1866
2149
|
self.readSenderReceiverInterfaceDataElements(element, sr_interface)
|
|
1867
2150
|
self.readSenderReceiverInterfaceInvalidationPolicies(element, sr_interface)
|
|
1868
2151
|
|
|
1869
|
-
def
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
2152
|
+
def readArgumentDataPrototype(self, element: ET.Element, prototype: ArgumentDataPrototype):
|
|
2153
|
+
self.readAutosarDataPrototype(element, prototype)
|
|
2154
|
+
prototype.setDirection(self.getChildElementOptionalLiteral(element, "DIRECTION")) \
|
|
2155
|
+
.setServerArgumentImplPolicy(self.getChildElementOptionalLiteral(element, "SERVER-ARGUMENT-IMPL-POLICY"))
|
|
2156
|
+
|
|
2157
|
+
def readClientServerOperationArguments(self, element: ET.Element, operation: ClientServerOperation):
|
|
2158
|
+
for child_element in self.findall(element, "ARGUMENTS/*"):
|
|
2159
|
+
tag_name = self.getTagName(child_element)
|
|
2160
|
+
if tag_name == "ARGUMENT-DATA-PROTOTYPE":
|
|
2161
|
+
prototype = operation.createArgumentDataPrototype(self.getShortName(child_element))
|
|
2162
|
+
self.readArgumentDataPrototype(child_element, prototype)
|
|
2163
|
+
else:
|
|
2164
|
+
self.notImplemented("Unsupported Argument <%s>" % tag_name)
|
|
1879
2165
|
|
|
1880
2166
|
def readPossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
|
|
1881
2167
|
child_element = self.find(element, "POSSIBLE-ERROR-REFS")
|
|
@@ -1883,41 +2169,53 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1883
2169
|
for ref in self.getChildElementRefTypeList(child_element, "POSSIBLE-ERROR-REF"):
|
|
1884
2170
|
parent.addPossibleErrorRef(ref)
|
|
1885
2171
|
|
|
1886
|
-
def
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
2172
|
+
def readClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
|
|
2173
|
+
self.readIdentifiable(element, operation)
|
|
2174
|
+
self.readClientServerOperationArguments(element, operation)
|
|
2175
|
+
self.readPossibleErrorRefs(element, operation)
|
|
2176
|
+
|
|
2177
|
+
def readClientServerInterfaceOperations(self, element: ET.Element, parent: ClientServerInterface):
|
|
2178
|
+
for child_element in self.findall(element, "OPERATIONS/*"):
|
|
2179
|
+
tag_name = self.getTagName(child_element)
|
|
2180
|
+
if tag_name == "CLIENT-SERVER-OPERATION":
|
|
2181
|
+
operation = parent.createOperation(self.getShortName(child_element))
|
|
2182
|
+
self.readClientServerOperation(child_element, operation)
|
|
2183
|
+
else:
|
|
2184
|
+
self.notImplemented("Unsupported Operation <%s>" % tag_name)
|
|
1893
2185
|
|
|
1894
2186
|
def readPossibleErrors(self, element: ET.Element, parent: ClientServerInterface):
|
|
1895
2187
|
for child_element in self.findall(element, "POSSIBLE-ERRORS/APPLICATION-ERROR"):
|
|
1896
2188
|
short_name = self.getShortName(child_element)
|
|
1897
2189
|
error = parent.createApplicationError(short_name)
|
|
1898
|
-
self.readIdentifiable(child_element, error)
|
|
2190
|
+
self.readIdentifiable(child_element, error) # some errors has its uuid
|
|
1899
2191
|
error.error_code = self.getChildElementOptionalNumericalValue(child_element, "ERROR-CODE")
|
|
1900
2192
|
|
|
1901
2193
|
def readPortInterface(self, element: ET.Element, port_interface: PortInterface):
|
|
1902
2194
|
self.readIdentifiable(element, port_interface)
|
|
1903
|
-
port_interface.
|
|
1904
|
-
|
|
2195
|
+
port_interface.setIsService(self.getChildElementOptionalBooleanValue(element, "IS-SERVICE"))\
|
|
2196
|
+
.setServiceKind(self.getChildElementOptionalLiteral(element, "SERVICE-KIND"))
|
|
1905
2197
|
|
|
1906
2198
|
def readParameterInterfaceParameters(self, element: ET.Element, param_interface: ParameterInterface):
|
|
1907
|
-
for child_element in self.findall(element, "PARAMETERS
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
2199
|
+
for child_element in self.findall(element, "PARAMETERS/*"):
|
|
2200
|
+
tag_name = self.getTagName(child_element)
|
|
2201
|
+
if tag_name == "PARAMETER-DATA-PROTOTYPE":
|
|
2202
|
+
prototype = param_interface.createParameterDataPrototype(self.getShortName(child_element))
|
|
2203
|
+
self.readParameterDataPrototype(child_element, prototype)
|
|
2204
|
+
else:
|
|
2205
|
+
self.notImplemented("Unsupported Parameter <%s>" % tag_name)
|
|
2206
|
+
|
|
2207
|
+
def readDataInterface(self, element: ET.Element, interface: DataInterface):
|
|
2208
|
+
self.readPortInterface(element, interface)
|
|
1911
2209
|
|
|
1912
|
-
def readParameterInterface(self, element: ET.Element,
|
|
1913
|
-
self.logger.debug("Read ParameterInterface <%s>" %
|
|
1914
|
-
self.
|
|
1915
|
-
self.readParameterInterfaceParameters(element,
|
|
2210
|
+
def readParameterInterface(self, element: ET.Element, interface: ParameterInterface):
|
|
2211
|
+
self.logger.debug("Read ParameterInterface <%s>" % interface.getShortName())
|
|
2212
|
+
self.readDataInterface(element, interface)
|
|
2213
|
+
self.readParameterInterfaceParameters(element, interface)
|
|
1916
2214
|
|
|
1917
2215
|
def readClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
|
|
1918
2216
|
self.logger.debug("Read readClientServerInterface <%s>" % cs_interface.getShortName())
|
|
1919
2217
|
self.readPortInterface(element, cs_interface)
|
|
1920
|
-
self.
|
|
2218
|
+
self.readClientServerInterfaceOperations(element, cs_interface)
|
|
1921
2219
|
self.readPossibleErrors(element, cs_interface)
|
|
1922
2220
|
|
|
1923
2221
|
def getCompuConstContent(self, element: ET.Element) -> CompuConstContent:
|
|
@@ -1979,6 +2277,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1979
2277
|
self.readCompuConst(element, parent)
|
|
1980
2278
|
self.readCompuRationCoeffs(element, parent)
|
|
1981
2279
|
|
|
2280
|
+
def readCompuScale(self, element: ET.Element, compu_scale: CompuScale):
|
|
2281
|
+
self.readARObjectAttributes(element, compu_scale)
|
|
2282
|
+
compu_scale.setLowerLimit(self.getChildLimitElement(element, "LOWER-LIMIT")) \
|
|
2283
|
+
.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
2284
|
+
.setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC")) \
|
|
2285
|
+
.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL")) \
|
|
2286
|
+
.setUpperLimit(self.getChildLimitElement(element, "UPPER-LIMIT"))
|
|
2287
|
+
self.readCompuScaleContents(element, compu_scale)
|
|
2288
|
+
|
|
1982
2289
|
def getCompuScales(self, element: ET.Element) -> CompuScales:
|
|
1983
2290
|
compu_scales = None
|
|
1984
2291
|
compu_scales_tag = self.find(element, "COMPU-SCALES")
|
|
@@ -1986,13 +2293,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1986
2293
|
compu_scales = CompuScales()
|
|
1987
2294
|
for child_element in self.findall(compu_scales_tag, 'COMPU-SCALE'):
|
|
1988
2295
|
compu_scale = CompuScale()
|
|
1989
|
-
self.
|
|
1990
|
-
compu_scale.setLowerLimit(self.getChildLimitElement(child_element, "LOWER-LIMIT")) \
|
|
1991
|
-
.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
1992
|
-
.setDesc(self.getMultiLanguageOverviewParagraph(child_element, "DESC")) \
|
|
1993
|
-
.setSymbol(self.getChildElementOptionalLiteral(child_element, "SYMBOL")) \
|
|
1994
|
-
.setUpperLimit(self.getChildLimitElement(child_element, "UPPER-LIMIT"))
|
|
1995
|
-
self.readCompuScaleContents(child_element, compu_scale)
|
|
2296
|
+
self.readCompuScale(child_element, compu_scale)
|
|
1996
2297
|
compu_scales.addCompuScale(compu_scale)
|
|
1997
2298
|
return compu_scales
|
|
1998
2299
|
|
|
@@ -2002,7 +2303,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2002
2303
|
if (child_element is not None):
|
|
2003
2304
|
compu = Compu()
|
|
2004
2305
|
self.readARObjectAttributes(child_element, compu)
|
|
2005
|
-
compu.setCompuContent(self.getCompuScales(child_element))
|
|
2306
|
+
compu.setCompuContent(self.getCompuScales(child_element))
|
|
2006
2307
|
compu.setCompuDefaultValue(self.getCompuConst(child_element, "COMPU-DEFAULT-VALUE"))
|
|
2007
2308
|
return compu
|
|
2008
2309
|
|
|
@@ -2030,10 +2331,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2030
2331
|
def readValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
|
|
2031
2332
|
self.readARObjectAttributes(element, value_spec)
|
|
2032
2333
|
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
|
|
2033
|
-
self.logger.debug("
|
|
2334
|
+
# self.logger.debug("read ValueSpecification")
|
|
2034
2335
|
|
|
2035
2336
|
def getApplicationValueSpecification(self, element: ET.Element) -> ApplicationValueSpecification:
|
|
2036
|
-
self.logger.debug("getApplicationValueSpecification")
|
|
2037
2337
|
value_spec = ApplicationValueSpecification()
|
|
2038
2338
|
self.readValueSpecification(element, value_spec)
|
|
2039
2339
|
value_spec.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
@@ -2042,7 +2342,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2042
2342
|
return value_spec
|
|
2043
2343
|
|
|
2044
2344
|
def getNumericalValueSpecification(self, element: ET.Element) -> NumericalValueSpecification:
|
|
2045
|
-
self.logger.debug("getNumericalValueSpecification")
|
|
2046
2345
|
value_spec = NumericalValueSpecification()
|
|
2047
2346
|
self.readValueSpecification(element, value_spec)
|
|
2048
2347
|
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
@@ -2071,7 +2370,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2071
2370
|
value_spec = ConstantReference()
|
|
2072
2371
|
self.readValueSpecification(element, value_spec)
|
|
2073
2372
|
value_spec.setConstantRef(self.getChildElementOptionalRefType(element, "CONSTANT-REF"))
|
|
2074
|
-
return value_spec
|
|
2373
|
+
return value_spec
|
|
2075
2374
|
|
|
2076
2375
|
def getValueSpecification(self, element: ET.Element, tag_name: str) -> ValueSpecification:
|
|
2077
2376
|
if tag_name == "APPLICATION-VALUE-SPECIFICATION":
|
|
@@ -2148,59 +2447,80 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2148
2447
|
.setOffsetSiToUnit(self.getChildElementOptionalFloatValue(element, "OFFSET-SI-TO-UNIT")) \
|
|
2149
2448
|
.setPhysicalDimensionRef(self.getChildElementOptionalRefType(element, "PHYSICAL-DIMENSION-REF"))
|
|
2150
2449
|
|
|
2151
|
-
def
|
|
2152
|
-
child_element =
|
|
2450
|
+
def readEndToEndDescriptionDataIds(self, element: ET.Element, parent: EndToEndDescription):
|
|
2451
|
+
child_element = self.find(element, "DATA-IDS")
|
|
2153
2452
|
if child_element is not None:
|
|
2154
2453
|
for value in self.getChildElementNumericalValueList(child_element, "DATA-ID"):
|
|
2155
2454
|
parent.addDataId(value)
|
|
2156
2455
|
|
|
2157
2456
|
def getEndToEndDescription(self, element: ET.Element, key: str) -> EndToEndDescription:
|
|
2158
|
-
child_element =
|
|
2457
|
+
child_element = self.find(element, key)
|
|
2159
2458
|
desc = None
|
|
2160
2459
|
if (child_element is not None):
|
|
2161
2460
|
desc = EndToEndDescription()
|
|
2162
|
-
|
|
2163
|
-
self.
|
|
2164
|
-
|
|
2165
|
-
desc.
|
|
2166
|
-
|
|
2167
|
-
|
|
2461
|
+
self.readARObjectAttributes(child_element, desc)
|
|
2462
|
+
desc.setCategory(self.getChildElementOptionalLiteral(child_element, "CATEGORY"))
|
|
2463
|
+
self.readEndToEndDescriptionDataIds(child_element, desc)
|
|
2464
|
+
desc.setDataIdMode(self.getChildElementOptionalPositiveInteger(child_element, "DATA-ID-MODE")) \
|
|
2465
|
+
.setDataLength(self.getChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH")) \
|
|
2466
|
+
.setMaxDeltaCounterInit(self.getChildElementOptionalPositiveInteger(child_element, "MAX-DELTA-COUNTER-INIT")) \
|
|
2467
|
+
.setCrcOffset(self.getChildElementOptionalPositiveInteger(child_element, "CRC-OFFSET")) \
|
|
2468
|
+
.setCounterOffset(self.getChildElementOptionalPositiveInteger(child_element, "COUNTER-OFFSET"))
|
|
2168
2469
|
return desc
|
|
2169
2470
|
|
|
2170
2471
|
def getVariableDataPrototypeInSystemInstanceRef(self, element: ET.Element) -> VariableDataPrototypeInSystemInstanceRef:
|
|
2171
|
-
|
|
2472
|
+
instance_ref = None
|
|
2172
2473
|
if element is not None:
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2474
|
+
instance_ref = VariableDataPrototypeInSystemInstanceRef()
|
|
2475
|
+
for ref in self.getChildElementRefTypeList(element, "CONTEXT-COMPONENT-REF"):
|
|
2476
|
+
instance_ref.addContextComponentRef(ref)
|
|
2477
|
+
instance_ref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF")) \
|
|
2478
|
+
.setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
|
|
2479
|
+
.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
|
|
2480
|
+
return instance_ref
|
|
2179
2481
|
|
|
2180
|
-
def
|
|
2181
|
-
prototype
|
|
2182
|
-
for child_element in
|
|
2482
|
+
def readEndToEndProtectionVariablePrototype(self, element: ET.Element, prototype: EndToEndProtectionVariablePrototype):
|
|
2483
|
+
self.readARObjectAttributes(element, prototype)
|
|
2484
|
+
for child_element in self.findall(element, "RECEIVER-IREFS/RECEIVER-IREF"):
|
|
2183
2485
|
prototype.addReceiverIref(self.getVariableDataPrototypeInSystemInstanceRef(child_element))
|
|
2184
|
-
child_element =
|
|
2486
|
+
child_element = self.find(element, "SENDER-IREF")
|
|
2185
2487
|
if child_element is not None:
|
|
2186
2488
|
prototype.senderIRef = self.getVariableDataPrototypeInSystemInstanceRef(child_element)
|
|
2187
2489
|
return prototype
|
|
2188
2490
|
|
|
2189
|
-
def
|
|
2190
|
-
for child_element in
|
|
2491
|
+
def readEndToEndProtectionEndToEndProtectionVariablePrototypes(self, element: ET.Element, protection: EndToEndProtection):
|
|
2492
|
+
for child_element in self.findall(element, "END-TO-END-PROTECTION-VARIABLE-PROTOTYPES/*"):
|
|
2191
2493
|
tag_name = self.getTagName(child_element)
|
|
2192
2494
|
if tag_name == "END-TO-END-PROTECTION-VARIABLE-PROTOTYPE":
|
|
2193
|
-
|
|
2495
|
+
prototype = EndToEndProtectionVariablePrototype()
|
|
2496
|
+
self.readEndToEndProtectionVariablePrototype(child_element, prototype)
|
|
2497
|
+
protection.addEndToEndProtectionVariablePrototype(prototype)
|
|
2194
2498
|
else:
|
|
2195
2499
|
self.raiseError("Unsupported End To End Protection Variable Prototype <%s>" % tag_name)
|
|
2196
2500
|
|
|
2501
|
+
def readEndToEndProtectionISignalIPdu(self, element: ET.Element, ipdu: EndToEndProtectionISignalIPdu):
|
|
2502
|
+
ipdu.setDataOffset(self.getChildElementOptionalIntegerValue(element, "DATA-OFFSET")) \
|
|
2503
|
+
.setISignalGroupRef(self.getChildElementOptionalRefType(element, "I-SIGNAL-GROUP-REF")) \
|
|
2504
|
+
.setISignalIPduRef(self.getChildElementOptionalRefType(element, "I-SIGNAL-I-PDU-REF"))
|
|
2505
|
+
|
|
2506
|
+
def readEndToEndProtectionEndToEndProtectionISignalIPdus(self, element: ET.Element, protection: EndToEndProtection):
|
|
2507
|
+
for child_element in self.findall(element, "END-TO-END-PROTECTION-I-SIGNAL-I-PDUS/*"):
|
|
2508
|
+
tag_name = self.getTagName(child_element)
|
|
2509
|
+
if tag_name == "END-TO-END-PROTECTION-I-SIGNAL-I-PDU":
|
|
2510
|
+
ipdu = EndToEndProtectionISignalIPdu()
|
|
2511
|
+
self.readEndToEndProtectionISignalIPdu(child_element, ipdu)
|
|
2512
|
+
protection.addEndToEndProtectionISignalIPdu(ipdu)
|
|
2513
|
+
else:
|
|
2514
|
+
self.notImplemented("Unsupported EndToEndProtectionISignalIPdu <%s>" % tag_name)
|
|
2515
|
+
|
|
2197
2516
|
def readEndToEndProtection(self, element: ET.Element, parent: EndToEndProtectionSet):
|
|
2198
2517
|
short_name = self.getShortName(element)
|
|
2199
2518
|
self.logger.debug("readEndToEndProtection %s" % short_name)
|
|
2200
2519
|
protection = parent.createEndToEndProtection(short_name)
|
|
2201
2520
|
self.readIdentifiable(element, protection)
|
|
2202
|
-
protection.
|
|
2203
|
-
self.
|
|
2521
|
+
protection.setEndToEndProfile(self.getEndToEndDescription(element, "END-TO-END-PROFILE"))
|
|
2522
|
+
self.readEndToEndProtectionEndToEndProtectionISignalIPdus(element, protection)
|
|
2523
|
+
self.readEndToEndProtectionEndToEndProtectionVariablePrototypes(element, protection)
|
|
2204
2524
|
|
|
2205
2525
|
def readEndToEndProtections(self, element: ET.Element, parent: EndToEndProtectionSet):
|
|
2206
2526
|
for child_element in self.findall(element, "END-TO-END-PROTECTIONS/*"):
|
|
@@ -2215,10 +2535,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2215
2535
|
self.readIdentifiable(element, protection_set)
|
|
2216
2536
|
self.readEndToEndProtections(element, protection_set)
|
|
2217
2537
|
|
|
2218
|
-
def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
2219
|
-
self.readIdentifiable(element, data_type)
|
|
2220
|
-
data_type.swDataDefProps = self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS")
|
|
2221
|
-
|
|
2222
2538
|
def readImplementationProps(self, element: ET.Element, props: ImplementationProps):
|
|
2223
2539
|
props.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
2224
2540
|
|
|
@@ -2246,10 +2562,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2246
2562
|
prototype.typeTRef = self.getChildElementOptionalRefType(element, "TYPE-TREF")
|
|
2247
2563
|
|
|
2248
2564
|
def readApplicationArrayElement(self, element: ET.Element, parent: ApplicationArrayDataType):
|
|
2249
|
-
child_element =
|
|
2565
|
+
child_element = self.find(element, "ELEMENT")
|
|
2250
2566
|
if child_element is not None:
|
|
2251
2567
|
short_name = self.getShortName(child_element)
|
|
2252
|
-
self.logger.debug("
|
|
2568
|
+
self.logger.debug("Read ApplicationArrayElement %s" % short_name)
|
|
2253
2569
|
array_element = parent.createApplicationArrayElement(short_name)
|
|
2254
2570
|
self.readApplicationCompositeElementDataPrototype(child_element, array_element)
|
|
2255
2571
|
array_element.setArraySizeHandling(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING"))
|
|
@@ -2257,13 +2573,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2257
2573
|
array_element.setMaxNumberOfElements(self.getChildElementOptionalNumericalValue(child_element, "MAX-NUMBER-OF-ELEMENTS"))
|
|
2258
2574
|
|
|
2259
2575
|
def readApplicationArrayDataType(self, element: ET.Element, data_type: ApplicationArrayDataType):
|
|
2260
|
-
self.logger.debug("Read ApplicationArrayDataType <%s>" % data_type)
|
|
2576
|
+
self.logger.debug("Read ApplicationArrayDataType <%s>" % data_type.getShortName())
|
|
2261
2577
|
self.readApplicationCompositeDataType(element, data_type)
|
|
2262
2578
|
data_type.setDynamicArraySizeProfile(self.getChildElementOptionalLiteral(element, "DYNAMIC-ARRAY-SIZE-PROFILE"))
|
|
2263
2579
|
self.readApplicationArrayElement(element, data_type)
|
|
2264
2580
|
|
|
2265
2581
|
def getSwRecordLayoutV(self, element: ET.Element, key: str) -> SwRecordLayoutV:
|
|
2266
|
-
child_element =
|
|
2582
|
+
child_element = self.find(element, key)
|
|
2267
2583
|
layout_v = None
|
|
2268
2584
|
if child_element is not None:
|
|
2269
2585
|
layout_v = SwRecordLayoutV()
|
|
@@ -2272,7 +2588,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2272
2588
|
.setSwRecordLayoutVAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-AXIS")) \
|
|
2273
2589
|
.setSwRecordLayoutVProp(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP")) \
|
|
2274
2590
|
.setSwRecordLayoutVIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX"))
|
|
2275
|
-
#print(layout_v.getShortLabel())
|
|
2276
2591
|
return layout_v
|
|
2277
2592
|
|
|
2278
2593
|
def readSwRecordLayoutGroupSwRecordLayoutGroupContentType(self, element: ET.Element, group: SwRecordLayoutGroup):
|
|
@@ -2282,19 +2597,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2282
2597
|
group.setSwRecordLayoutGroupContentType(content)
|
|
2283
2598
|
|
|
2284
2599
|
def getSwRecordLayoutGroup(self, element: ET.Element, key: str) -> SwRecordLayoutGroup:
|
|
2285
|
-
child_element =
|
|
2600
|
+
child_element = self.find(element, key)
|
|
2286
2601
|
group = None
|
|
2287
2602
|
if child_element is not None:
|
|
2288
2603
|
group = SwRecordLayoutGroup()
|
|
2289
2604
|
group.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
2290
|
-
.setCategory(self.getChildElementOptionalLiteral(child_element, "CATEGORY"))
|
|
2291
|
-
|
|
2292
|
-
group.setSwRecordLayoutGroupAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS")) \
|
|
2605
|
+
.setCategory(self.getChildElementOptionalLiteral(child_element, "CATEGORY")) \
|
|
2606
|
+
.setSwRecordLayoutGroupAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS")) \
|
|
2293
2607
|
.setSwRecordLayoutGroupIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX")) \
|
|
2294
2608
|
.setSwRecordLayoutGroupFrom(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM")) \
|
|
2295
2609
|
.setSwRecordLayoutGroupStep(self.getChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP")) \
|
|
2296
2610
|
.setSwRecordLayoutGroupTo(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO"))
|
|
2297
|
-
|
|
2611
|
+
self.readSwRecordLayoutGroupSwRecordLayoutGroupContentType(child_element, group)
|
|
2612
|
+
|
|
2298
2613
|
return group
|
|
2299
2614
|
|
|
2300
2615
|
def readSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
|
|
@@ -2305,7 +2620,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2305
2620
|
def readSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
|
|
2306
2621
|
self.logger.debug("Read SwAddrMethod <%s>" % method.getShortName())
|
|
2307
2622
|
self.readIdentifiable(element, method)
|
|
2308
|
-
method.setMemoryAllocationKeywordPolicy(self.getChildElementOptionalLiteral(element, "MEMORY-ALLOCATION-KEYWORD-POLICY"))
|
|
2623
|
+
method.setMemoryAllocationKeywordPolicy(self.getChildElementOptionalLiteral(element, "MEMORY-ALLOCATION-KEYWORD-POLICY"))
|
|
2309
2624
|
for option in self.getChildElementLiteralValueList(element, "OPTIONS/OPTION"):
|
|
2310
2625
|
method.addOption(option)
|
|
2311
2626
|
method.setSectionInitializationPolicy(self.getChildElementOptionalLiteral(element, "SECTION-INITIALIZATION-POLICY")) \
|
|
@@ -2379,6 +2694,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2379
2694
|
self.readTimingExtension(element, timing)
|
|
2380
2695
|
|
|
2381
2696
|
def readFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
|
|
2697
|
+
self.readIdentifiable(element, triggering)
|
|
2382
2698
|
for ref in self.getChildElementRefTypeList(element, 'FRAME-PORT-REFS/FRAME-PORT-REF'):
|
|
2383
2699
|
triggering.addFramePortRef(ref)
|
|
2384
2700
|
triggering.setFrameRef(self.getChildElementOptionalRefType(element, "FRAME-REF"))
|
|
@@ -2387,7 +2703,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2387
2703
|
|
|
2388
2704
|
def readCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
|
|
2389
2705
|
self.logger.debug("Read CanFrameTriggering %s" % triggering.getShortName())
|
|
2390
|
-
self.readIdentifiable(element, triggering)
|
|
2391
2706
|
self.readFrameTriggering(element, triggering)
|
|
2392
2707
|
triggering.setCanAddressingMode(self.getChildElementOptionalLiteral(element, "CAN-ADDRESSING-MODE")) \
|
|
2393
2708
|
.setCanFdFrameSupport(self.getChildElementOptionalBooleanValue(element, "CAN-FD-FRAME-SUPPORT")) \
|
|
@@ -2396,13 +2711,52 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2396
2711
|
.setIdentifier(self.getChildElementOptionalNumericalValue(element, "IDENTIFIER")) \
|
|
2397
2712
|
.setRxIdentifierRange(self.getChildElementRxIdentifierRange(element, "RX-IDENTIFIER-RANGE"))
|
|
2398
2713
|
|
|
2399
|
-
|
|
2400
2714
|
def readLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
|
|
2401
2715
|
self.logger.debug("Read LinFrameTriggering %s" % triggering.getShortName())
|
|
2402
|
-
self.readIdentifiable(element, triggering)
|
|
2403
2716
|
self.readFrameTriggering(element, triggering)
|
|
2404
2717
|
triggering.setIdentifier(self.getChildElementOptionalNumericalValue(element, "IDENTIFIER")) \
|
|
2405
2718
|
.setLinChecksum(self.getChildElementOptionalLiteral(element, "LIN-CHECKSUM"))
|
|
2719
|
+
|
|
2720
|
+
def readCommunicationCycle(self, element: ET.Element, cycle: CommunicationCycle):
|
|
2721
|
+
self.readARObjectAttributes(element, cycle)
|
|
2722
|
+
|
|
2723
|
+
def readCycleRepetition(self, element: ET.Element, cycle: CycleRepetition):
|
|
2724
|
+
self.readCommunicationCycle(element, cycle)
|
|
2725
|
+
cycle.setBaseCycle(self.getChildElementOptionalIntegerValue(element, "BASE-CYCLE")) \
|
|
2726
|
+
.setCycleRepetition(self.getChildElementOptionalLiteral(element, "CYCLE-REPETITION"))
|
|
2727
|
+
|
|
2728
|
+
def readFlexrayAbsolutelyScheduledTimingCommunicationCycle(self, element: ET.Element, timing: FlexrayAbsolutelyScheduledTiming):
|
|
2729
|
+
for child_element in self.findall(element, "COMMUNICATION-CYCLE/*"):
|
|
2730
|
+
tag_name = self.getTagName(child_element)
|
|
2731
|
+
if tag_name == "CYCLE-REPETITION":
|
|
2732
|
+
repetition = CycleRepetition()
|
|
2733
|
+
self.readCycleRepetition(child_element, repetition)
|
|
2734
|
+
timing.setCommunicationCycle(repetition)
|
|
2735
|
+
else:
|
|
2736
|
+
self.notImplemented("Unsupported CommunicationCycle <%s>" % tag_name)
|
|
2737
|
+
|
|
2738
|
+
def readFlexrayAbsolutelyScheduledTiming(self, element: ET.Element, timing: FlexrayAbsolutelyScheduledTiming):
|
|
2739
|
+
self.readARObjectAttributes(element, timing)
|
|
2740
|
+
self.readFlexrayAbsolutelyScheduledTimingCommunicationCycle(element, timing)
|
|
2741
|
+
timing.setSlotID(self.getChildElementOptionalPositiveInteger(element, "SLOT-ID"))
|
|
2742
|
+
|
|
2743
|
+
def readFlexrayFrameTriggeringAbsolutelyScheduledTimings(self, element: ET.Element, triggering: FlexrayFrameTriggering):
|
|
2744
|
+
for child_element in self.findall(element, "ABSOLUTELY-SCHEDULED-TIMINGS/*"):
|
|
2745
|
+
tag_name = self.getTagName(child_element)
|
|
2746
|
+
if tag_name == "FLEXRAY-ABSOLUTELY-SCHEDULED-TIMING":
|
|
2747
|
+
timing = FlexrayAbsolutelyScheduledTiming()
|
|
2748
|
+
self.readFlexrayAbsolutelyScheduledTiming(child_element, timing)
|
|
2749
|
+
triggering.addAbsolutelyScheduledTiming(timing)
|
|
2750
|
+
else:
|
|
2751
|
+
self.notImplemented("Unsupported AbsolutelyScheduledTiming <%s>" % tag_name)
|
|
2752
|
+
|
|
2753
|
+
def readFlexrayFrameTriggering(self, element: ET.Element, triggering: FlexrayFrameTriggering):
|
|
2754
|
+
self.logger.debug("Read FlexrayFrameTriggering %s" % triggering.getShortName())
|
|
2755
|
+
self.readFrameTriggering(element, triggering)
|
|
2756
|
+
self.readFlexrayFrameTriggeringAbsolutelyScheduledTimings(element, triggering)
|
|
2757
|
+
triggering.setAllowDynamicLSduLength(self.getChildElementOptionalBooleanValue(element, "ALLOW-DYNAMIC-L-SDU-LENGTH")) \
|
|
2758
|
+
.setMessageId(self.getChildElementOptionalPositiveInteger(element, "MESSAGE-ID")) \
|
|
2759
|
+
.setPayloadPreambleIndicator(self.getChildElementOptionalBooleanValue(element, "PAYLOAD-PREAMBLE-INDICATOR"))
|
|
2406
2760
|
|
|
2407
2761
|
def readISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
|
|
2408
2762
|
self.logger.debug("Read ISignalTriggering %s" % triggering.getShortName())
|
|
@@ -2421,10 +2775,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2421
2775
|
for child_element in self.findall(element, 'I-SIGNAL-TRIGGERINGS/I-SIGNAL-TRIGGERING-REF-CONDITIONAL'):
|
|
2422
2776
|
triggering.addISignalTriggeringRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-TRIGGERING-REF"))
|
|
2423
2777
|
|
|
2424
|
-
def
|
|
2778
|
+
def readPhysicalChannelCommConnectorRefs(self, element: ET.Element, channel: PhysicalChannel):
|
|
2425
2779
|
for child_element in self.findall(element, 'COMM-CONNECTORS/COMMUNICATION-CONNECTOR-REF-CONDITIONAL'):
|
|
2426
2780
|
channel.addCommConnectorRef(self.getChildElementOptionalRefType(child_element, "COMMUNICATION-CONNECTOR-REF"))
|
|
2427
|
-
|
|
2781
|
+
|
|
2782
|
+
def readPhysicalChannelFrameTriggerings(self, element: ET.Element, channel: PhysicalChannel):
|
|
2428
2783
|
for child_element in self.findall(element, "FRAME-TRIGGERINGS/*"):
|
|
2429
2784
|
tag_name = self.getTagName(child_element)
|
|
2430
2785
|
if tag_name == "CAN-FRAME-TRIGGERING":
|
|
@@ -2433,9 +2788,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2433
2788
|
elif tag_name == "LIN-FRAME-TRIGGERING":
|
|
2434
2789
|
triggering = channel.createLinFrameTriggering(self.getShortName(child_element))
|
|
2435
2790
|
self.readLinFrameTriggering(child_element, triggering)
|
|
2791
|
+
elif tag_name == "FLEXRAY-FRAME-TRIGGERING":
|
|
2792
|
+
triggering = channel.createFlexrayFrameTriggering(self.getShortName(child_element))
|
|
2793
|
+
self.readFlexrayFrameTriggering(child_element, triggering)
|
|
2436
2794
|
else:
|
|
2437
2795
|
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2438
|
-
|
|
2796
|
+
|
|
2797
|
+
def readPhysicalChannelISignalTriggerings(self, element: ET.Element, channel: PhysicalChannel):
|
|
2439
2798
|
for child_element in self.findall(element, "I-SIGNAL-TRIGGERINGS/*"):
|
|
2440
2799
|
tag_name = self.getTagName(child_element)
|
|
2441
2800
|
if tag_name == "I-SIGNAL-TRIGGERING":
|
|
@@ -2443,7 +2802,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2443
2802
|
self.readISignalTriggering(child_element, triggering)
|
|
2444
2803
|
else:
|
|
2445
2804
|
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2446
|
-
|
|
2805
|
+
|
|
2806
|
+
def readPhysicalChannelPduTriggerings(self, element, channel):
|
|
2447
2807
|
for child_element in self.findall(element, "PDU-TRIGGERINGS/*"):
|
|
2448
2808
|
tag_name = self.getTagName(child_element)
|
|
2449
2809
|
if tag_name == "PDU-TRIGGERING":
|
|
@@ -2452,8 +2812,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2452
2812
|
else:
|
|
2453
2813
|
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2454
2814
|
|
|
2455
|
-
def
|
|
2815
|
+
def readPhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
|
|
2456
2816
|
self.readIdentifiable(element, channel)
|
|
2817
|
+
|
|
2818
|
+
self.readPhysicalChannelCommConnectorRefs(element, channel)
|
|
2819
|
+
self.readPhysicalChannelFrameTriggerings(element, channel)
|
|
2820
|
+
self.readPhysicalChannelISignalTriggerings(element, channel)
|
|
2821
|
+
self.readPhysicalChannelPduTriggerings(element, channel)
|
|
2822
|
+
|
|
2823
|
+
def readCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
|
|
2457
2824
|
self.readPhysicalChannel(element, channel)
|
|
2458
2825
|
|
|
2459
2826
|
def readScheduleTableEntry(self, element: ET.Element, entry: ScheduleTableEntry):
|
|
@@ -2492,7 +2859,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2492
2859
|
self.notImplemented("Unsupported Schedule Table <%s>" % tag_name)
|
|
2493
2860
|
|
|
2494
2861
|
def readLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2495
|
-
self.readIdentifiable(element, channel)
|
|
2496
2862
|
self.readPhysicalChannel(element, channel)
|
|
2497
2863
|
self.readLinPhysicalChannelScheduleTables(element, channel)
|
|
2498
2864
|
|
|
@@ -2517,7 +2883,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2517
2883
|
else:
|
|
2518
2884
|
self.notImplemented("Unsupported Network EndPoint Address <%s>" % tag_name)
|
|
2519
2885
|
|
|
2520
|
-
def getDoIpEntity(self, element: ET.Element, key:str) -> DoIpEntity:
|
|
2886
|
+
def getDoIpEntity(self, element: ET.Element, key: str) -> DoIpEntity:
|
|
2521
2887
|
entity = None
|
|
2522
2888
|
child_element = self.find(element, key)
|
|
2523
2889
|
if child_element is not None:
|
|
@@ -2525,7 +2891,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2525
2891
|
entity.setDoIpEntityRole(self.getChildElementOptionalLiteral(child_element, "DO-IP-ENTITY-ROLE"))
|
|
2526
2892
|
return entity
|
|
2527
2893
|
|
|
2528
|
-
def getInfrastructureServices(self, element: ET.Element, key:str) -> InfrastructureServices:
|
|
2894
|
+
def getInfrastructureServices(self, element: ET.Element, key: str) -> InfrastructureServices:
|
|
2529
2895
|
services = None
|
|
2530
2896
|
child_element = self.find(element, key)
|
|
2531
2897
|
if child_element is not None:
|
|
@@ -2571,7 +2937,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2571
2937
|
connection = SocketConnection()
|
|
2572
2938
|
connection.setClientIpAddrFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST")) \
|
|
2573
2939
|
.setClientPortFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-PORT-FROM-CONNECTION-REQUEST")) \
|
|
2574
|
-
.setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF"))
|
|
2940
|
+
.setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF")) # NOQA E501
|
|
2575
2941
|
for pdu in self.getSocketConnectionPdus(element):
|
|
2576
2942
|
connection.addPdu(pdu)
|
|
2577
2943
|
connection.setPduCollectionMaxBufferSize(self.getChildElementOptionalPositiveInteger(element, "PDU-COLLECTION-MAX-BUFFER-SIZE")) \
|
|
@@ -2586,7 +2952,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2586
2952
|
tag_name = self.getTagName(child_element)
|
|
2587
2953
|
if tag_name == "SOCKET-CONNECTION":
|
|
2588
2954
|
bundle.addBundledConnection(self.getSocketConnection(child_element))
|
|
2589
|
-
else:
|
|
2955
|
+
else:
|
|
2590
2956
|
self.notImplemented("Unsupported Bundled Connection <%s>" % tag_name)
|
|
2591
2957
|
|
|
2592
2958
|
def readSocketConnectionBundle(self, element: ET.Element, bundle: SocketConnectionBundle):
|
|
@@ -2616,12 +2982,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2616
2982
|
|
|
2617
2983
|
def readTcpTp(self, element: ET.Element, tp: TcpTp):
|
|
2618
2984
|
tp.setKeepAliveInterval(self.getChildElementOptionalTimeValue(element, "KEEP-ALIVE-INTERVAL")) \
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2985
|
+
.setKeepAliveProbesMax(self.getChildElementOptionalPositiveInteger(element, "KEEP-ALIVE-PROBES-MAX")) \
|
|
2986
|
+
.setKeepAliveTime(self.getChildElementOptionalTimeValue(element, "KEEP-ALIVE-TIME")) \
|
|
2987
|
+
.setKeepAlives(self.getChildElementOptionalBooleanValue(element, "KEEP-ALIVES")) \
|
|
2988
|
+
.setNaglesAlgorithm(self.getChildElementOptionalLiteral(element, "NAGLES-ALGORITHM")) \
|
|
2989
|
+
.setTcpTpPort(self.getTpPort(element, "TCP-TP-PORT"))
|
|
2625
2990
|
|
|
2626
2991
|
def readGenericTp(self, element: ET.Element, tp: GenericTp):
|
|
2627
2992
|
tp.setTpAddress(self.getChildElementOptionalLiteral(element, "TP-ADDRESS")) \
|
|
@@ -2657,17 +3022,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2657
3022
|
delay.setMaxValue(self.getChildElementOptionalTimeValue(child_element, "MAX-VALUE")) \
|
|
2658
3023
|
.setMinValue(self.getChildElementOptionalTimeValue(child_element, "MIN-VALUE"))
|
|
2659
3024
|
return delay
|
|
2660
|
-
|
|
2661
|
-
def getInitialSdDelayConfig(self, element: ET.Element, key: str) -> InitialSdDelayConfig:
|
|
2662
|
-
config = None
|
|
2663
|
-
child_element = self.find(element, key)
|
|
2664
|
-
if child_element is not None:
|
|
2665
|
-
config = InitialSdDelayConfig()
|
|
2666
|
-
config.setInitialDelayMaxValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE")) \
|
|
2667
|
-
.setInitialDelayMinValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE")) \
|
|
2668
|
-
.setInitialRepetitionsBaseDelay(self.getChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY")) \
|
|
2669
|
-
.setInitialRepetitionsMax(self.getChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX"))
|
|
2670
|
-
return config
|
|
2671
3025
|
|
|
2672
3026
|
def getSdClientConfig(self, element: ET.Element, key: str) -> SdClientConfig:
|
|
2673
3027
|
config = None
|
|
@@ -2722,7 +3076,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2722
3076
|
.setInitialRepetitionsBaseDelay(self.getChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY")) \
|
|
2723
3077
|
.setInitialRepetitionsMax(self.getChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX"))
|
|
2724
3078
|
return config
|
|
2725
|
-
|
|
3079
|
+
|
|
2726
3080
|
def getSdServerConfig(self, element: ET.Element, key: str) -> SdServerConfig:
|
|
2727
3081
|
config = None
|
|
2728
3082
|
child_element = self.find(element, key)
|
|
@@ -2744,7 +3098,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2744
3098
|
handler.setMulticastThreshold(self.getChildElementOptionalPositiveInteger(element, "MULTICAST-THRESHOLD"))
|
|
2745
3099
|
for ref in self.getChildElementRefTypeList(element, "ROUTING-GROUP-REFS/ROUTING-GROUP-REF"):
|
|
2746
3100
|
handler.addRoutingGroupRef(ref)
|
|
2747
|
-
handler.setSdServerConfig(self.getSdServerConfig(element, "SD-SERVER-CONFIG"))
|
|
3101
|
+
handler.setSdServerConfig(self.getSdServerConfig(element, "SD-SERVER-CONFIG"))
|
|
2748
3102
|
|
|
2749
3103
|
def readProvidedServiceInstanceEventHandlers(self, element: ET.Element, instance: ProvidedServiceInstance):
|
|
2750
3104
|
for child_element in self.findall(element, "EVENT-HANDLERS/*"):
|
|
@@ -2785,7 +3139,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2785
3139
|
for ref in self.getChildElementRefTypeList(element, "MULTICAST-CONNECTOR-REFS/MULTICAST-CONNECTOR-REF"):
|
|
2786
3140
|
address.addMulticastConnectorRef(ref)
|
|
2787
3141
|
|
|
2788
|
-
|
|
2789
3142
|
def readSocketAddress(self, element: ET.Element, address: SocketAddress):
|
|
2790
3143
|
self.readIdentifiable(element, address)
|
|
2791
3144
|
self.readSocketAddressApplicationEndpoint(element, address)
|
|
@@ -2793,7 +3146,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2793
3146
|
address.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF")) \
|
|
2794
3147
|
.setPortAddress(self.getChildElementOptionalPositiveInteger(element, "PORT-ADDRESS"))
|
|
2795
3148
|
|
|
2796
|
-
def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
|
|
3149
|
+
def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
|
|
2797
3150
|
for child_element in self.findall(element, "SOCKET-ADDRESSS/*"):
|
|
2798
3151
|
tag_name = self.getTagName(child_element)
|
|
2799
3152
|
if tag_name == "SOCKET-ADDRESS":
|
|
@@ -2818,12 +3171,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2818
3171
|
vlan.setVlanIdentifier(self.getChildElementOptionalPositiveInteger(child_element, "VLAN-IDENTIFIER"))
|
|
2819
3172
|
|
|
2820
3173
|
def readEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2821
|
-
self.readIdentifiable(element, channel)
|
|
2822
3174
|
self.readPhysicalChannel(element, channel)
|
|
2823
3175
|
self.readEthernetPhysicalChannelNetworkEndPoints(element, channel)
|
|
2824
3176
|
channel.setSoAdConfig(self.getSoAdConfig(element, "SO-AD-CONFIG"))
|
|
2825
3177
|
self.readEthernetPhysicalChannelVlan(element, channel)
|
|
2826
3178
|
|
|
3179
|
+
def readFlexrayPhysicalChannel(self, element: ET.Element, channel: FlexrayPhysicalChannel):
|
|
3180
|
+
self.readPhysicalChannel(element, channel)
|
|
3181
|
+
channel.setChannelName(self.getChildElementOptionalLiteral(element, "CHANNEL-NAME"))
|
|
3182
|
+
|
|
2827
3183
|
def readCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2828
3184
|
for child_element in self.findall(element, "PHYSICAL-CHANNELS/*"):
|
|
2829
3185
|
tag_name = self.getTagName(child_element)
|
|
@@ -2836,12 +3192,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2836
3192
|
elif tag_name == "ETHERNET-PHYSICAL-CHANNEL":
|
|
2837
3193
|
channel = cluster.createEthernetPhysicalChannel(self.getShortName(child_element))
|
|
2838
3194
|
self.readEthernetPhysicalChannel(child_element, channel)
|
|
3195
|
+
elif tag_name == "FLEXRAY-PHYSICAL-CHANNEL":
|
|
3196
|
+
channel = cluster.createFlexrayPhysicalChannel(self.getShortName(child_element))
|
|
3197
|
+
self.readFlexrayPhysicalChannel(child_element, channel)
|
|
2839
3198
|
else:
|
|
2840
3199
|
self.notImplemented("Unsupported Physical Channel <%s>" % tag_name)
|
|
2841
3200
|
|
|
2842
|
-
|
|
2843
3201
|
def readCommunicationCluster(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2844
|
-
cluster.setBaudrate(self.getChildElementOptionalNumericalValue(element, "BAUDRATE"))
|
|
3202
|
+
cluster.setBaudrate(self.getChildElementOptionalNumericalValue(element, "BAUDRATE"))
|
|
2845
3203
|
self.readCommunicationClusterPhysicalChannels(element, cluster)
|
|
2846
3204
|
cluster.setProtocolName(self.getChildElementOptionalLiteral(element, "PROTOCOL-NAME")) \
|
|
2847
3205
|
.setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
|
|
@@ -2857,6 +3215,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2857
3215
|
return recovery
|
|
2858
3216
|
|
|
2859
3217
|
def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
|
|
3218
|
+
self.readCommunicationCluster(element, cluster)
|
|
2860
3219
|
cluster.setBusOffRecovery(self.getCanClusterBusOffRecovery(element, "BUS-OFF-RECOVERY")) \
|
|
2861
3220
|
.setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE")) \
|
|
2862
3221
|
.setSpeed(self.getChildElementOptionalNumericalValue(element, "SPEED"))
|
|
@@ -2873,9 +3232,47 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2873
3232
|
self.readIdentifiable(element, cluster)
|
|
2874
3233
|
child_element = self.find(element, "CAN-CLUSTER-VARIANTS/CAN-CLUSTER-CONDITIONAL")
|
|
2875
3234
|
if child_element is not None:
|
|
2876
|
-
self.readCommunicationCluster(child_element, cluster)
|
|
2877
3235
|
self.readAbstractCanCluster(child_element, cluster)
|
|
2878
3236
|
|
|
3237
|
+
def readFlexrayCluster(self, element: ET.Element, cluster: FlexrayCluster):
|
|
3238
|
+
self.logger.debug("Read FlexrayCluster <%s>" % cluster.getShortName())
|
|
3239
|
+
self.readIdentifiable(element, cluster)
|
|
3240
|
+
child_element = self.find(element, "FLEXRAY-CLUSTER-VARIANTS/FLEXRAY-CLUSTER-CONDITIONAL")
|
|
3241
|
+
if child_element is not None:
|
|
3242
|
+
self.readCommunicationCluster(child_element, cluster)
|
|
3243
|
+
cluster.setActionPointOffset(self.getChildElementOptionalIntegerValue(child_element, "ACTION-POINT-OFFSET")) \
|
|
3244
|
+
.setBit(self.getChildElementOptionalTimeValue(child_element, "BIT")) \
|
|
3245
|
+
.setCasRxLowMax(self.getChildElementOptionalIntegerValue(child_element, "CAS-RX-LOW-MAX")) \
|
|
3246
|
+
.setColdStartAttempts(self.getChildElementOptionalIntegerValue(child_element, "COLD-START-ATTEMPTS")) \
|
|
3247
|
+
.setCycle(self.getChildElementOptionalTimeValue(child_element, "CYCLE")) \
|
|
3248
|
+
.setCycleCountMax(self.getChildElementOptionalIntegerValue(child_element, "CYCLE-COUNT-MAX")) \
|
|
3249
|
+
.setDetectNitError(self.getChildElementOptionalBooleanValue(child_element, "DETECT-NIT-ERROR")) \
|
|
3250
|
+
.setDynamicSlotIdlePhase(self.getChildElementOptionalIntegerValue(child_element, "DYNAMIC-SLOT-IDLE-PHASE")) \
|
|
3251
|
+
.setIgnoreAfterTx(self.getChildElementOptionalIntegerValue(child_element, "IGNORE-AFTER-TX")) \
|
|
3252
|
+
.setListenNoise(self.getChildElementOptionalIntegerValue(child_element, "LISTEN-NOISE")) \
|
|
3253
|
+
.setMacroPerCycle(self.getChildElementOptionalIntegerValue(child_element, "MACRO-PER-CYCLE")) \
|
|
3254
|
+
.setMacrotickDuration(self.getChildElementOptionalTimeValue(child_element, "MACROTICK-DURATION")) \
|
|
3255
|
+
.setMaxWithoutClockCorrectionFatal(self.getChildElementOptionalIntegerValue(child_element, "MAX-WITHOUT-CLOCK-CORRECTION-FATAL")) \
|
|
3256
|
+
.setMaxWithoutClockCorrectionPassive(self.getChildElementOptionalIntegerValue(child_element, "MAX-WITHOUT-CLOCK-CORRECTION-PASSIVE")) \
|
|
3257
|
+
.setMinislotActionPointOffset(self.getChildElementOptionalIntegerValue(child_element, "MINISLOT-ACTION-POINT-OFFSET")) \
|
|
3258
|
+
.setMinislotDuration(self.getChildElementOptionalIntegerValue(child_element, "MINISLOT-DURATION")) \
|
|
3259
|
+
.setNetworkIdleTime(self.getChildElementOptionalIntegerValue(child_element, "NETWORK-IDLE-TIME")) \
|
|
3260
|
+
.setNetworkManagementVectorLength(self.getChildElementOptionalIntegerValue(child_element, "NETWORK-MANAGEMENT-VECTOR-LENGTH")) \
|
|
3261
|
+
.setNumberOfMinislots(self.getChildElementOptionalIntegerValue(child_element, "NUMBER-OF-MINISLOTS")) \
|
|
3262
|
+
.setNumberOfStaticSlots(self.getChildElementOptionalIntegerValue(child_element, "NUMBER-OF-STATIC-SLOTS")) \
|
|
3263
|
+
.setOffsetCorrectionStart(self.getChildElementOptionalIntegerValue(child_element, "OFFSET-CORRECTION-START")) \
|
|
3264
|
+
.setPayloadLengthStatic(self.getChildElementOptionalIntegerValue(child_element, "PAYLOAD-LENGTH-STATIC")) \
|
|
3265
|
+
.setSafetyMargin(self.getChildElementOptionalIntegerValue(child_element, "SAFETY-MARGIN")) \
|
|
3266
|
+
.setSampleClockPeriod(self.getChildElementOptionalTimeValue(child_element, "SAMPLE-CLOCK-PERIOD")) \
|
|
3267
|
+
.setStaticSlotDuration(self.getChildElementOptionalIntegerValue(child_element, "STATIC-SLOT-DURATION")) \
|
|
3268
|
+
.setSyncFrameIdCountMax(self.getChildElementOptionalIntegerValue(child_element, "SYNC-FRAME-ID-COUNT-MAX")) \
|
|
3269
|
+
.setTransmissionStartSequenceDuration(self.getChildElementOptionalIntegerValue(child_element, "TRANSMISSION-START-SEQUENCE-DURATION")) \
|
|
3270
|
+
.setWakeupRxIdle(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-IDLE")) \
|
|
3271
|
+
.setWakeupRxLow(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-LOW")) \
|
|
3272
|
+
.setWakeupRxWindow(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-RX-WINDOW")) \
|
|
3273
|
+
.setWakeupTxActive(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-TX-ACTIVE")) \
|
|
3274
|
+
.setWakeupTxIdle(self.getChildElementOptionalIntegerValue(child_element, "WAKEUP-TX-IDLE")) # noqa E501
|
|
3275
|
+
|
|
2879
3276
|
def readMacMulticastGroup(self, element: ET.Element, group: MacMulticastGroup):
|
|
2880
3277
|
self.readIdentifiable(element, group)
|
|
2881
3278
|
group.setMacMulticastAddress(self.getChildElementOptionalLiteral(element, "MAC-MULTICAST-ADDRESS",))
|
|
@@ -3082,6 +3479,53 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3082
3479
|
self.readDoIpTpConfigDoIpLogicAddresses(element, config)
|
|
3083
3480
|
self.readDoIpTpConfigTpConnections(element, config)
|
|
3084
3481
|
|
|
3482
|
+
def readHwDescriptionEntityHwCategoryRefs(self, element: ET.Element, entity: HwDescriptionEntity):
|
|
3483
|
+
for ref in self.getChildElementRefTypeList(element, "HW-CATEGORY-REFS/HW-CATEGORY-REF"):
|
|
3484
|
+
entity.addHwCategoryRef(ref)
|
|
3485
|
+
|
|
3486
|
+
def readHwDescriptionEntity(self, element: ET.Element, entity: HwDescriptionEntity):
|
|
3487
|
+
self.readARElement(element, entity)
|
|
3488
|
+
self.readHwDescriptionEntityHwCategoryRefs(element, entity)
|
|
3489
|
+
|
|
3490
|
+
def readHwPinGroup(self, element: ET.SubElement, pin_group: HwPinGroup):
|
|
3491
|
+
self.readHwDescriptionEntity(element, pin_group)
|
|
3492
|
+
|
|
3493
|
+
def readHwElementHwPinGroups(self, element: ET.Element, hw_element: HwElement):
|
|
3494
|
+
for child_element in self.findall(element, "HW-PIN-GROUPS/*"):
|
|
3495
|
+
tag_name = self.getTagName(child_element)
|
|
3496
|
+
if tag_name == "HW-PIN-GROUP":
|
|
3497
|
+
pin_group = hw_element.createHwPinGroup(self.getShortName(child_element))
|
|
3498
|
+
self.readHwPinGroup(child_element, pin_group)
|
|
3499
|
+
else:
|
|
3500
|
+
self.notImplemented("Unsupported Hw Pin Group <%s>" % tag_name)
|
|
3501
|
+
|
|
3502
|
+
def readHwElement(self, element: ET.Element, hw_element: HwElement):
|
|
3503
|
+
self.logger.debug("Read HwElement <%s>" % hw_element.getShortName())
|
|
3504
|
+
self.readHwDescriptionEntity(element, hw_element)
|
|
3505
|
+
self.readHwElementHwPinGroups(element, hw_element)
|
|
3506
|
+
|
|
3507
|
+
def readHwAttributeDef(self, element: ET.Element, attribute_def: HwAttributeDef):
|
|
3508
|
+
self.readIdentifiable(element, attribute_def)
|
|
3509
|
+
attribute_def.setUnitRef(self.getChildElementOptionalRefType(element, "UNIT-REF"))
|
|
3510
|
+
|
|
3511
|
+
def readHwCategoryHwAttributeDef(self, element: ET.Element, hw_category: HwCategory):
|
|
3512
|
+
for child_element in self.findall(element, "HW-ATTRIBUTE-DEFS/*"):
|
|
3513
|
+
tag_name = self.getTagName(child_element)
|
|
3514
|
+
if tag_name == "HW-ATTRIBUTE-DEF":
|
|
3515
|
+
pin_group = hw_category.createHwAttributeDef(self.getShortName(child_element))
|
|
3516
|
+
self.readHwAttributeDef(child_element, pin_group)
|
|
3517
|
+
else:
|
|
3518
|
+
self.notImplemented("Unsupported Hw Attribute Defs <%s>" % tag_name)
|
|
3519
|
+
|
|
3520
|
+
def readHwCategory(self, element: ET.Element, hw_category: HwCategory):
|
|
3521
|
+
self.logger.debug("Read HwCategory <%s>" % hw_category.getShortName())
|
|
3522
|
+
self.readARElement(element, hw_category)
|
|
3523
|
+
self.readHwCategoryHwAttributeDef(element, hw_category)
|
|
3524
|
+
|
|
3525
|
+
def readHwType(self, element: ET.Element, type: HwType):
|
|
3526
|
+
self.logger.debug("Read HwType <%s>" % type.getShortName())
|
|
3527
|
+
self.readARElement(element, type)
|
|
3528
|
+
|
|
3085
3529
|
def readPduToFrameMappings(self, element: ET.Element, parent: Frame):
|
|
3086
3530
|
for child_element in self.findall(element, "PDU-TO-FRAME-MAPPINGS/PDU-TO-FRAME-MAPPING"):
|
|
3087
3531
|
short_name = self.getShortName(child_element)
|
|
@@ -3153,7 +3597,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3153
3597
|
.setDataId(self.getChildElementOptionalPositiveInteger(child_element, "DATA-ID")) \
|
|
3154
3598
|
.setFreshnessValueId(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-ID")) \
|
|
3155
3599
|
.setFreshnessValueLength(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-LENGTH")) \
|
|
3156
|
-
.setFreshnessValueTxLength(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-TX-LENGTH"))
|
|
3600
|
+
.setFreshnessValueTxLength(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-TX-LENGTH")) # NOQA E501
|
|
3157
3601
|
return props
|
|
3158
3602
|
|
|
3159
3603
|
def readSecuredIPdu(self, element: ET.Element, i_pdu: SecuredIPdu):
|
|
@@ -3176,7 +3620,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3176
3620
|
nm_node.addRxNmPduRef(ref)
|
|
3177
3621
|
for ref in self.getChildElementRefTypeList(element, "TX-NM-PDU-REFS/TX-NM-PDU-REF"):
|
|
3178
3622
|
nm_node.addTxNmPduRefs(ref)
|
|
3179
|
-
|
|
3180
3623
|
|
|
3181
3624
|
def readCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
|
|
3182
3625
|
self.logger.debug("Read CanNmNode <%s>" % nm_node.getShortName())
|
|
@@ -3205,7 +3648,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3205
3648
|
self.notImplemented("Unsupported Nm Node <%s>" % tag_name)
|
|
3206
3649
|
|
|
3207
3650
|
def getCanNmClusterCoupling(self, element: ET.Element) -> CanNmClusterCoupling:
|
|
3208
|
-
coupling
|
|
3651
|
+
coupling = CanNmClusterCoupling()
|
|
3209
3652
|
for ref in self.getChildElementRefTypeList(element, "COUPLED-CLUSTER-REFS/COUPLED-CLUSTER-REF"):
|
|
3210
3653
|
coupling.addCoupledClusterRef(ref)
|
|
3211
3654
|
coupling.setNmBusloadReductionEnabled(self.getChildElementOptionalBooleanValue(element, "NM-BUSLOAD-REDUCTION-ENABLED")) \
|
|
@@ -3401,7 +3844,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3401
3844
|
|
|
3402
3845
|
def readCanTpEcu(self, element: ET.Element, tp_ecu: CanTpEcu):
|
|
3403
3846
|
tp_ecu.setCycleTimeMainFunction(self.getChildElementOptionalTimeValue(element, "CYCLE-TIME-MAIN-FUNCTION")) \
|
|
3404
|
-
.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
|
|
3847
|
+
.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
|
|
3405
3848
|
|
|
3406
3849
|
def readCanTpConfigTpEcus(self, element: ET.Element, config: CanTpConfig):
|
|
3407
3850
|
for child_element in self.findall(element, "TP-ECUS/*"):
|
|
@@ -3457,7 +3900,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3457
3900
|
self.readTpConnection(element, connection)
|
|
3458
3901
|
connection.setDataPduRef(self.getChildElementOptionalRefType(element, "DATA-PDU-REF")) \
|
|
3459
3902
|
.setFlowControlRef(self.getChildElementOptionalRefType(element, "FLOW-CONTROL-REF")) \
|
|
3460
|
-
.setLinTpNSduRef(self.getChildElementOptionalRefType(element, "LIN-TP-N-SDU-REF"))
|
|
3903
|
+
.setLinTpNSduRef(self.getChildElementOptionalRefType(element, "LIN-TP-N-SDU-REF"))
|
|
3461
3904
|
self.readTpConnectionReceiverRefs(element, connection)
|
|
3462
3905
|
connection.setTimeoutAs(self.getChildElementOptionalTimeValue(element, "TIMEOUT-AS")) \
|
|
3463
3906
|
.setTimeoutCr(self.getChildElementOptionalTimeValue(element, "TIMEOUT-CR")) \
|
|
@@ -3502,6 +3945,134 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3502
3945
|
self.logger.debug("Read CanFrame <%s>" % frame.getShortName())
|
|
3503
3946
|
self.readFrame(element, frame)
|
|
3504
3947
|
|
|
3948
|
+
def readFlexrayFrame(self, element: ET.Element, frame: FlexrayFrame):
|
|
3949
|
+
self.logger.debug("Read FlexrayFrame <%s>" % frame.getShortName())
|
|
3950
|
+
self.readFrame(element, frame)
|
|
3951
|
+
|
|
3952
|
+
def readFlexrayCommunicationController(self, element: ET.Element, controller: FlexrayCommunicationController):
|
|
3953
|
+
self.logger.debug("Read CommunicationController <%s>" % controller.getShortName())
|
|
3954
|
+
self.readIdentifiable(element, controller)
|
|
3955
|
+
child_element = self.find(element, "FLEXRAY-COMMUNICATION-CONTROLLER-VARIANTS/FLEXRAY-COMMUNICATION-CONTROLLER-CONDITIONAL")
|
|
3956
|
+
if child_element is not None:
|
|
3957
|
+
self.readCommunicationController(element, controller)
|
|
3958
|
+
controller.setAcceptedStartupRange(self.getChildElementOptionalIntegerValue(child_element, "ACCEPTED-STARTUP-RANGE")) \
|
|
3959
|
+
.setAllowHaltDueToClock(self.getChildElementOptionalBooleanValue(child_element, "ALLOW-HALT-DUE-TO-CLOCK")) \
|
|
3960
|
+
.setAllowPassiveToActive(self.getChildElementOptionalIntegerValue(child_element, "ALLOW-PASSIVE-TO-ACTIVE")) \
|
|
3961
|
+
.setClusterDriftDamping(self.getChildElementOptionalIntegerValue(child_element, "CLUSTER-DRIFT-DAMPING")) \
|
|
3962
|
+
.setDecodingCorrection(self.getChildElementOptionalIntegerValue(child_element, "DECODING-CORRECTION")) \
|
|
3963
|
+
.setDelayCompensationA(self.getChildElementOptionalIntegerValue(child_element, "DELAY-COMPENSATION-A")) \
|
|
3964
|
+
.setDelayCompensationB(self.getChildElementOptionalIntegerValue(child_element, "DELAY-COMPENSATION-B")) \
|
|
3965
|
+
.setKeySlotOnlyEnabled(self.getChildElementOptionalBooleanValue(child_element, "KEY-SLOT-ONLY-ENABLED")) \
|
|
3966
|
+
.setKeySlotUsedForStartUp(self.getChildElementOptionalBooleanValue(child_element, "KEY-SLOT-USED-FOR-START-UP")) \
|
|
3967
|
+
.setKeySlotUsedForSync(self.getChildElementOptionalBooleanValue(child_element, "KEY-SLOT-USED-FOR-SYNC")) \
|
|
3968
|
+
.setLatestTX(self.getChildElementOptionalIntegerValue(child_element, "LATEST-TX")) \
|
|
3969
|
+
.setListenTimeout(self.getChildElementOptionalIntegerValue(child_element, "LISTEN-TIMEOUT")) \
|
|
3970
|
+
.setMacroInitialOffsetA(self.getChildElementOptionalIntegerValue(child_element, "MACRO-INITIAL-OFFSET-A")) \
|
|
3971
|
+
.setMacroInitialOffsetB(self.getChildElementOptionalIntegerValue(child_element, "MACRO-INITIAL-OFFSET-B")) \
|
|
3972
|
+
.setMaximumDynamicPayloadLength(self.getChildElementOptionalIntegerValue(child_element, "MAXIMUM-DYNAMIC-PAYLOAD-LENGTH")) \
|
|
3973
|
+
.setMicroInitialOffsetA(self.getChildElementOptionalIntegerValue(child_element, "MICRO-INITIAL-OFFSET-A")) \
|
|
3974
|
+
.setMicroInitialOffsetB(self.getChildElementOptionalIntegerValue(child_element, "MICRO-INITIAL-OFFSET-B")) \
|
|
3975
|
+
.setMicroPerCycle(self.getChildElementOptionalIntegerValue(child_element, "MICRO-PER-CYCLE")) \
|
|
3976
|
+
.setMicrotickDuration(self.getChildElementOptionalTimeValue(child_element, "MICROTICK-DURATION")) \
|
|
3977
|
+
.setOffsetCorrectionOut(self.getChildElementOptionalIntegerValue(child_element, "OFFSET-CORRECTION-OUT")) \
|
|
3978
|
+
.setRateCorrectionOut(self.getChildElementOptionalIntegerValue(child_element, "RATE-CORRECTION-OUT")) \
|
|
3979
|
+
.setSamplesPerMicrotick(self.getChildElementOptionalIntegerValue(child_element, "SAMPLES-PER-MICROTICK")) \
|
|
3980
|
+
.setWakeUpPattern(self.getChildElementOptionalIntegerValue(child_element, "WAKE-UP-PATTERN"))
|
|
3981
|
+
|
|
3982
|
+
def readDataTransformationTransformerChainRefs(self, element: ET.Element, dtf: DataTransformation):
|
|
3983
|
+
for ref in self.getChildElementRefTypeList(element, "TRANSFORMER-CHAIN-REFS/TRANSFORMER-CHAIN-REF"):
|
|
3984
|
+
dtf.addTransformerChainRef(ref)
|
|
3985
|
+
|
|
3986
|
+
def readDataTransformation(self, element: ET.Element, dtf: DataTransformation):
|
|
3987
|
+
self.readIdentifiable(element, dtf)
|
|
3988
|
+
dtf.setExecuteDespiteDataUnavailability(self.getChildElementOptionalBooleanValue(element, "EXECUTE-DESPITE-DATA-UNAVAILABILITY"))
|
|
3989
|
+
self.readDataTransformationTransformerChainRefs(element, dtf)
|
|
3990
|
+
|
|
3991
|
+
def readDataTransformationSetDataTransformations(self, element: ET.Element, dtf_set: DataTransformationSet):
|
|
3992
|
+
for child_element in self.findall(element, "DATA-TRANSFORMATIONS/*"):
|
|
3993
|
+
tag_name = self.getTagName(child_element)
|
|
3994
|
+
if tag_name == "DATA-TRANSFORMATION":
|
|
3995
|
+
dtf = dtf_set.createDataTransformation(self.getShortName(child_element))
|
|
3996
|
+
self.readDataTransformation(child_element, dtf)
|
|
3997
|
+
else:
|
|
3998
|
+
self.notImplemented("Unsupported DataTransformation <%s>" % tag_name)
|
|
3999
|
+
|
|
4000
|
+
def readBufferPropertiesBufferComputation(self, element: ET.Element, properties: BufferProperties):
|
|
4001
|
+
child_element = self.find(element, "BUFFER-COMPUTATION")
|
|
4002
|
+
if child_element is not None:
|
|
4003
|
+
scale = CompuScale()
|
|
4004
|
+
self.readCompuScale(child_element, scale)
|
|
4005
|
+
properties.setBufferComputation(scale)
|
|
4006
|
+
|
|
4007
|
+
def getBufferProperties(self, element: ET.Element, key: str) -> BufferProperties:
|
|
4008
|
+
properties = None
|
|
4009
|
+
child_element = self.find(element, key)
|
|
4010
|
+
if child_element is not None:
|
|
4011
|
+
properties = BufferProperties()
|
|
4012
|
+
self.readBufferPropertiesBufferComputation(child_element, properties)
|
|
4013
|
+
properties.setHeaderLength(self.getChildElementOptionalIntegerValue(child_element, "HEADER-LENGTH")) \
|
|
4014
|
+
.setInPlace(self.getChildElementOptionalBooleanValue(child_element, "IN-PLACE"))
|
|
4015
|
+
return properties
|
|
4016
|
+
|
|
4017
|
+
def readDescribable(self, element: ET.Element, desc: Describable):
|
|
4018
|
+
self.readARObjectAttributes(element, desc)
|
|
4019
|
+
|
|
4020
|
+
def readTransformationDescription(self, element: ET.Element, desc: TransformationDescription):
|
|
4021
|
+
self.readDescribable(element, desc)
|
|
4022
|
+
|
|
4023
|
+
def readEndToEndTransformationDescription(self, element: ET.Element, desc: EndToEndTransformationDescription):
|
|
4024
|
+
self.readTransformationDescription(element, desc)
|
|
4025
|
+
desc.setDataIdMode(self.getChildElementOptionalLiteral(element, "DATA-ID-MODE")) \
|
|
4026
|
+
.setMaxDeltaCounter(self.getChildElementOptionalPositiveInteger(element, "MAX-DELTA-COUNTER")) \
|
|
4027
|
+
.setMaxErrorStateInit(self.getChildElementOptionalPositiveInteger(element, "MAX-ERROR-STATE-INIT")) \
|
|
4028
|
+
.setMaxErrorStateInvalid(self.getChildElementOptionalPositiveInteger(element, "MAX-ERROR-STATE-INVALID")) \
|
|
4029
|
+
.setMaxErrorStateValid(self.getChildElementOptionalPositiveInteger(element, "MAX-ERROR-STATE-VALID")) \
|
|
4030
|
+
.setMaxNoNewOrRepeatedData(self.getChildElementOptionalPositiveInteger(element, "MAX-NO-NEW-OR-REPEATED-DATA")) \
|
|
4031
|
+
.setMinOkStateInit(self.getChildElementOptionalPositiveInteger(element, "MIN-OK-STATE-INIT")) \
|
|
4032
|
+
.setMinOkStateInvalid(self.getChildElementOptionalPositiveInteger(element, "MIN-OK-STATE-INVALID")) \
|
|
4033
|
+
.setMinOkStateValid(self.getChildElementOptionalPositiveInteger(element, "MIN-OK-STATE-VALID")) \
|
|
4034
|
+
.setProfileBehavior(self.getChildElementOptionalLiteral(element, "PROFILE-BEHAVIOR")) \
|
|
4035
|
+
.setProfileName(self.getChildElementOptionalLiteral(element, "PROFILE-NAME")) \
|
|
4036
|
+
.setSyncCounterInit(self.getChildElementOptionalPositiveInteger(element, "SYNC-COUNTER-INIT")) \
|
|
4037
|
+
.setUpperHeaderBitsToShift(self.getChildElementOptionalPositiveInteger(element, "UPPER-HEADER-BITS-TO-SHIFT")) \
|
|
4038
|
+
.setWindowSizeInit(self.getChildElementOptionalPositiveInteger(element, "WINDOW-SIZE-INIT")) \
|
|
4039
|
+
.setWindowSizeInvalid(self.getChildElementOptionalPositiveInteger(element, "WINDOW-SIZE-INVALID")) \
|
|
4040
|
+
.setWindowSizeValid(self.getChildElementOptionalPositiveInteger(element, "WINDOW-SIZE-VALID"))
|
|
4041
|
+
|
|
4042
|
+
def readTransformationTechnologyTransformationDescriptions(self, element: ET.Element, tech: TransformationTechnology):
|
|
4043
|
+
for child_element in self.findall(element, "TRANSFORMATION-DESCRIPTIONS/*"):
|
|
4044
|
+
tag_name = self.getTagName(child_element)
|
|
4045
|
+
if tag_name == "END-TO-END-TRANSFORMATION-DESCRIPTION":
|
|
4046
|
+
desc = EndToEndTransformationDescription()
|
|
4047
|
+
self.readEndToEndTransformationDescription(child_element, desc)
|
|
4048
|
+
tech.setTransformationDescription(desc)
|
|
4049
|
+
else:
|
|
4050
|
+
self.notImplemented("Unsupported TransformationDescription <%s>" % tag_name)
|
|
4051
|
+
|
|
4052
|
+
def readTransformationTechnology(self, element: ET.Element, tech: TransformationTechnology):
|
|
4053
|
+
self.readIdentifiable(element, tech)
|
|
4054
|
+
tech.setBufferProperties(self.getBufferProperties(element, "BUFFER-PROPERTIES")) \
|
|
4055
|
+
.setNeedsOriginalData(self.getChildElementOptionalBooleanValue(element, "NEEDS-ORIGINAL-DATA")) \
|
|
4056
|
+
.setProtocol(self.getChildElementOptionalLiteral(element, "PROTOCOL"))
|
|
4057
|
+
self.readTransformationTechnologyTransformationDescriptions(element, tech)
|
|
4058
|
+
tech.setTransformerClass(self.getChildElementOptionalLiteral(element, "TRANSFORMER-CLASS")) \
|
|
4059
|
+
.setVersion(self.getChildElementOptionalLiteral(element, "VERSION"))
|
|
4060
|
+
|
|
4061
|
+
def readDataTransformationSetTransformationTechnologies(self, element: ET.Element, dtf_set: DataTransformationSet):
|
|
4062
|
+
for child_element in self.findall(element, "TRANSFORMATION-TECHNOLOGYS/*"):
|
|
4063
|
+
tag_name = self.getTagName(child_element)
|
|
4064
|
+
if tag_name == "TRANSFORMATION-TECHNOLOGY":
|
|
4065
|
+
tech = dtf_set.createTransformationTechnology(self.getShortName(child_element))
|
|
4066
|
+
self.readTransformationTechnology(child_element, tech)
|
|
4067
|
+
else:
|
|
4068
|
+
self.notImplemented("Unsupported TransformationTechnology <%s>" % tag_name)
|
|
4069
|
+
|
|
4070
|
+
def readDataTransformationSet(self, element: ET.Element, dtf_set: DataTransformationSet):
|
|
4071
|
+
self.logger.debug("Read DataTransformationSet <%s>" % dtf_set.getShortName())
|
|
4072
|
+
self.readIdentifiable(element, dtf_set)
|
|
4073
|
+
self.readDataTransformationSetDataTransformations(element, dtf_set)
|
|
4074
|
+
self.readDataTransformationSetTransformationTechnologies(element, dtf_set)
|
|
4075
|
+
|
|
3505
4076
|
def readCommunicationController(self, element: ET.Element, controller: CommunicationController):
|
|
3506
4077
|
controller.setWakeUpByControllerSupported(self.getChildElementOptionalBooleanValue(element, "WAKE-UP-BY-CONTROLLER-SUPPORTED"))
|
|
3507
4078
|
|
|
@@ -3510,7 +4081,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3510
4081
|
child_element = self.find(element, key)
|
|
3511
4082
|
if child_element is not None:
|
|
3512
4083
|
configuration = CanControllerFdConfiguration()
|
|
3513
|
-
#TODO: need to implemented
|
|
4084
|
+
# TODO: need to implemented
|
|
3514
4085
|
return configuration
|
|
3515
4086
|
|
|
3516
4087
|
def getCanControllerFdConfigurationRequirements(self, element: ET.Element, key: str) -> CanControllerFdConfigurationRequirements:
|
|
@@ -3526,7 +4097,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3526
4097
|
.setMinSamplePoint(self.getChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT")) \
|
|
3527
4098
|
.setMinSyncJumpWidth(self.getChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH")) \
|
|
3528
4099
|
.setMinTrcvDelayCompensationOffset(self.getChildElementOptionalTimeValue(child_element, "MIN-TRCV-DELAY-COMPENSATION-OFFSET")) \
|
|
3529
|
-
.setTxBitRateSwitch(self.getChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH"))
|
|
4100
|
+
.setTxBitRateSwitch(self.getChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH")) # NOQA E501
|
|
3530
4101
|
return requirements
|
|
3531
4102
|
|
|
3532
4103
|
def readAbstractCanCommunicationControllerAttributes(self, element: ET.Element, attributes: AbstractCanCommunicationControllerAttributes):
|
|
@@ -3616,9 +4187,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3616
4187
|
for child_element in self.findall(element, "VLAN-MEMBERSHIPS/*"):
|
|
3617
4188
|
tag_name = self.getTagName(child_element)
|
|
3618
4189
|
if tag_name == "VLAN-MEMBERSHIP":
|
|
3619
|
-
|
|
3620
|
-
|
|
3621
|
-
|
|
4190
|
+
membership = VlanMembership()
|
|
4191
|
+
self.readVlanMembership(child_element, membership)
|
|
4192
|
+
port.addVlanMembership(membership)
|
|
3622
4193
|
else:
|
|
3623
4194
|
self.notImplemented("Unsupported VlanMembership <%s>" % tag_name)
|
|
3624
4195
|
|
|
@@ -3657,7 +4228,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3657
4228
|
self.readLinCommunicationController(child_element, controller)
|
|
3658
4229
|
controller.setTimeBase(self.getChildElementOptionalTimeValue(child_element, "TIME-BASE")) \
|
|
3659
4230
|
.setTimeBaseJitter(self.getChildElementOptionalTimeValue(child_element, "TIME-BASE-JITTER"))
|
|
3660
|
-
|
|
3661
4231
|
|
|
3662
4232
|
def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
|
|
3663
4233
|
self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
|
|
@@ -3672,6 +4242,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3672
4242
|
elif tag_name == "LIN-MASTER":
|
|
3673
4243
|
controller = instance.createLinMaster(self.getShortName(child_element))
|
|
3674
4244
|
self.readLinMaster(child_element, controller)
|
|
4245
|
+
elif tag_name == "FLEXRAY-COMMUNICATION-CONTROLLER":
|
|
4246
|
+
controller = instance.createFlexrayCommunicationController(self.getShortName(child_element))
|
|
4247
|
+
self.readFlexrayCommunicationController(child_element, controller)
|
|
3675
4248
|
else:
|
|
3676
4249
|
self.raiseError("Unsupported Communication Controller <%s>" % tag_name)
|
|
3677
4250
|
|
|
@@ -3686,7 +4259,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3686
4259
|
self.readCommConnectorPort(element, port)
|
|
3687
4260
|
port.setKeyId(self.getChildElementOptionalPositiveInteger(element, "KEY-ID")) \
|
|
3688
4261
|
.setRxSecurityVerification(self.getChildElementOptionalBooleanValue(element, "RX-SECURITY-VERIFICATION")) \
|
|
3689
|
-
.setUseAuthDataFreshness(self.getChildElementOptionalBooleanValue(element, "USE-AUTH-DATA-FRESHNESS"))
|
|
4262
|
+
.setUseAuthDataFreshness(self.getChildElementOptionalBooleanValue(element, "USE-AUTH-DATA-FRESHNESS"))
|
|
3690
4263
|
|
|
3691
4264
|
def readISignalPort(self, element: ET.Element, port: ISignalPort):
|
|
3692
4265
|
self.readCommConnectorPort(element, port)
|
|
@@ -3706,7 +4279,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3706
4279
|
port = connector.createISignalPort(self.getShortName(child_element))
|
|
3707
4280
|
self.readISignalPort(child_element, port)
|
|
3708
4281
|
else:
|
|
3709
|
-
self.raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
|
|
4282
|
+
self.raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
|
|
3710
4283
|
|
|
3711
4284
|
def readCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
|
|
3712
4285
|
self.readIdentifiable(element, connector)
|
|
@@ -3729,6 +4302,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3729
4302
|
def readLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
|
|
3730
4303
|
self.readCommunicationConnector(element, connector)
|
|
3731
4304
|
|
|
4305
|
+
def readFlexrayCommunicationConnector(self, element: ET.Element, connector: FlexrayCommunicationConnector):
|
|
4306
|
+
self.readCommunicationConnector(element, connector)
|
|
4307
|
+
|
|
3732
4308
|
def readEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
|
|
3733
4309
|
self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
|
|
3734
4310
|
for child_element in self.findall(element, "CONNECTORS/*"):
|
|
@@ -3742,6 +4318,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3742
4318
|
elif tag_name == "LIN-COMMUNICATION-CONNECTOR":
|
|
3743
4319
|
connector = instance.createLinCommunicationConnector(self.getShortName(child_element))
|
|
3744
4320
|
self.readLinCommunicationConnector(child_element, connector)
|
|
4321
|
+
elif tag_name == "FLEXRAY-COMMUNICATION-CONNECTOR":
|
|
4322
|
+
connector = instance.createFlexrayCommunicationConnector(self.getShortName(child_element))
|
|
4323
|
+
self.readFlexrayCommunicationConnector(child_element, connector)
|
|
3745
4324
|
else:
|
|
3746
4325
|
self.notImplemented("Unsupported Communication Connector <%s>" % tag_name)
|
|
3747
4326
|
|
|
@@ -3821,7 +4400,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3821
4400
|
|
|
3822
4401
|
def readEcucValueCollectionEcucValues(self, element: ET.Element, parent: EcucValueCollection):
|
|
3823
4402
|
for child_element in self.findall(element, "ECUC-VALUES/ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL"):
|
|
3824
|
-
ref = self.getChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF")
|
|
4403
|
+
ref = self.getChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF")
|
|
3825
4404
|
if (ref is not None):
|
|
3826
4405
|
parent.addEcucValueRef(ref)
|
|
3827
4406
|
self.logger.debug("EcucValue <%s> of EcucValueCollection <%s> has been added", ref.value, parent.getShortName())
|
|
@@ -3875,7 +4454,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3875
4454
|
child_element = self.find(element, key)
|
|
3876
4455
|
if child_element is not None:
|
|
3877
4456
|
instance_ref = AnyInstanceRef()
|
|
3878
|
-
instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF"))
|
|
4457
|
+
instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF"))
|
|
3879
4458
|
for ref in self.getChildElementRefTypeList(child_element, "CONTEXT-ELEMENT-REF"):
|
|
3880
4459
|
instance_ref.addContextElementRef(ref)
|
|
3881
4460
|
instance_ref.setTargetRef(self.getChildElementOptionalRefType(child_element, "TARGET-REF"))
|
|
@@ -3916,7 +4495,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3916
4495
|
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
3917
4496
|
self.readEcucContainerValueEcucContainerValue(child_element, parent)
|
|
3918
4497
|
else:
|
|
3919
|
-
self.notImplemented("Unsupported Sub Container %s" % tag_name)
|
|
4498
|
+
self.notImplemented("Unsupported Sub Container %s" % tag_name)
|
|
3920
4499
|
|
|
3921
4500
|
def readEcucModuleConfigurationValuesEcucContainerValue(self, element: ET.Element, parent: EcucModuleConfigurationValues):
|
|
3922
4501
|
short_name = self.getShortName(element)
|
|
@@ -3930,7 +4509,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3930
4509
|
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
3931
4510
|
self.readEcucModuleConfigurationValuesEcucContainerValue(child_element, values)
|
|
3932
4511
|
else:
|
|
3933
|
-
self.notImplemented("Unsupported Container %s" % tag_name)
|
|
4512
|
+
self.notImplemented("Unsupported Container %s" % tag_name)
|
|
3934
4513
|
|
|
3935
4514
|
def readEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
|
|
3936
4515
|
self.logger.debug("Read EcucModuleConfigurationValues %s" % values.getShortName())
|
|
@@ -3961,12 +4540,47 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3961
4540
|
return mappings
|
|
3962
4541
|
'''
|
|
3963
4542
|
|
|
4543
|
+
def readISignalGroupISignalRef(self, element: ET.Element, group: ISignalGroup):
|
|
4544
|
+
for ref_type in self.getChildElementRefTypeList(element, "I-SIGNAL-REFS/I-SIGNAL-REF"):
|
|
4545
|
+
group.addISignalRef(ref_type)
|
|
4546
|
+
|
|
4547
|
+
def readISignalGroupComBasedSignalGroupTransformation(self, element: ET.Element, group: ISignalGroup):
|
|
4548
|
+
for ref in self.getChildElementRefTypeList(element, "COM-BASED-SIGNAL-GROUP-TRANSFORMATIONS/DATA-TRANSFORMATION-REF-CONDITIONAL/DATA-TRANSFORMATION-REF"): # noqa E501
|
|
4549
|
+
group.addComBasedSignalGroupTransformationRef(ref)
|
|
4550
|
+
|
|
4551
|
+
def readTransformationISignalProps(self, element: ET.Element, props: TransformationISignalProps):
|
|
4552
|
+
self.readDescribable(element, props)
|
|
4553
|
+
|
|
4554
|
+
def readEndToEndTransformationISignalPropsDataIds(self, element: ET.Element, props: EndToEndTransformationISignalProps):
|
|
4555
|
+
child_element = self.find(element, "DATA-IDS")
|
|
4556
|
+
if child_element is not None:
|
|
4557
|
+
props.addDataId(self.getChildElementOptionalPositiveInteger(child_element, "DATA-ID"))
|
|
4558
|
+
|
|
4559
|
+
def readEndToEndTransformationISignalProps(self, element: ET.Element, props: EndToEndTransformationISignalProps):
|
|
4560
|
+
child_element = self.find(element, "END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS-VARIANTS/END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS-CONDITIONAL")
|
|
4561
|
+
if child_element is not None:
|
|
4562
|
+
self.readTransformationISignalProps(child_element, props)
|
|
4563
|
+
props.setTransformerRef(self.getChildElementOptionalRefType(child_element, "TRANSFORMER-REF"))
|
|
4564
|
+
self.readEndToEndTransformationISignalPropsDataIds(child_element, props)
|
|
4565
|
+
props.setDataLength(self.getChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH"))
|
|
4566
|
+
|
|
4567
|
+
def readISignalGroupTransformationISignalProps(self, element: ET.Element, group: ISignalGroup):
|
|
4568
|
+
for child_element in self.findall(element, "TRANSFORMATION-I-SIGNAL-PROPSS/*"):
|
|
4569
|
+
tag_name = self.getTagName(child_element)
|
|
4570
|
+
if tag_name == "END-TO-END-TRANSFORMATION-I-SIGNAL-PROPS":
|
|
4571
|
+
props = EndToEndTransformationISignalProps()
|
|
4572
|
+
self.readEndToEndTransformationISignalProps(child_element, props)
|
|
4573
|
+
group.setTransformationISignalProps(props)
|
|
4574
|
+
else:
|
|
4575
|
+
self.notImplemented("Unsupported TransformationISignalProps %s" % tag_name)
|
|
4576
|
+
|
|
3964
4577
|
def readISignalGroup(self, element: ET.Element, group: ISignalGroup):
|
|
3965
4578
|
self.logger.debug("Read ISignalGroup <%s>" % group.getShortName())
|
|
3966
4579
|
self.readIdentifiable(element, group)
|
|
3967
|
-
|
|
3968
|
-
|
|
3969
|
-
group.
|
|
4580
|
+
self.readISignalGroupComBasedSignalGroupTransformation(element, group)
|
|
4581
|
+
self.readISignalGroupISignalRef(element, group)
|
|
4582
|
+
group.setSystemSignalGroupRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-GROUP-REF"))
|
|
4583
|
+
self.readISignalGroupTransformationISignalProps(element, group)
|
|
3970
4584
|
|
|
3971
4585
|
def readSystemSignal(self, element: ET.Element, signal: SystemSignal):
|
|
3972
4586
|
self.logger.debug("Read SystemSignal <%s>" % signal.getShortName())
|
|
@@ -3999,7 +4613,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3999
4613
|
filter = DataFilter()
|
|
4000
4614
|
filter.setDataFilterType(self.getChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE")) \
|
|
4001
4615
|
.setMask(self.getChildElementOptionalIntegerValue(child_element, "MASK")) \
|
|
4002
|
-
.setX(self.getChildElementOptionalIntegerValue(child_element, "X"))
|
|
4616
|
+
.setX(self.getChildElementOptionalIntegerValue(child_element, "X"))
|
|
4003
4617
|
|
|
4004
4618
|
return filter
|
|
4005
4619
|
|
|
@@ -4012,7 +4626,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4012
4626
|
.setISignalInIPduRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-IN-I-PDU-REF"))
|
|
4013
4627
|
result.append(condition)
|
|
4014
4628
|
return result
|
|
4015
|
-
|
|
4629
|
+
|
|
4016
4630
|
def getTimeRangeType(self, element: ET.Element, key: str) -> TimeRangeType:
|
|
4017
4631
|
time_range = None
|
|
4018
4632
|
child_element = self.find(element, key)
|
|
@@ -4020,7 +4634,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4020
4634
|
time_range = TimeRangeType()
|
|
4021
4635
|
time_range.setValue(self.getChildElementOptionalTimeValue(child_element, "VALUE"))
|
|
4022
4636
|
return time_range
|
|
4023
|
-
|
|
4637
|
+
|
|
4024
4638
|
def getCyclicTiming(self, element: ET.Element, key: str) -> CyclicTiming:
|
|
4025
4639
|
timing = None
|
|
4026
4640
|
child_element = self.find(element, key)
|
|
@@ -4052,7 +4666,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4052
4666
|
def getTransmissionModeDeclaration(self, element: ET.Element, key: str) -> TransmissionModeDeclaration:
|
|
4053
4667
|
decl = None
|
|
4054
4668
|
child_element = self.find(element, key)
|
|
4055
|
-
if child_element
|
|
4669
|
+
if child_element is not None:
|
|
4056
4670
|
decl = TransmissionModeDeclaration()
|
|
4057
4671
|
for condition in self.getTransmissionModeConditions(child_element, "TRANSMISSION-MODE-CONDITIONS/TRANSMISSION-MODE-CONDITION"):
|
|
4058
4672
|
decl.addTransmissionModeCondition(condition)
|
|
@@ -4078,7 +4692,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4078
4692
|
ipdu.setUnusedBitPattern(self.getChildElementOptionalIntegerValue(element, "UNUSED-BIT-PATTERN"))
|
|
4079
4693
|
|
|
4080
4694
|
def getISignalIPduRefs(self, element: ET.Element) -> List[RefType]:
|
|
4081
|
-
ref_types = []
|
|
4695
|
+
ref_types = []
|
|
4082
4696
|
for child_element in self.findall(element, "I-SIGNAL-I-PDUS/I-SIGNAL-I-PDU-REF-CONDITIONAL"):
|
|
4083
4697
|
ref_types.append(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-I-PDU-REF"))
|
|
4084
4698
|
return ref_types
|
|
@@ -4093,26 +4707,61 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4093
4707
|
for ref_type in self.getISignalIPduRefs(element):
|
|
4094
4708
|
group.addISignalIPduRef(ref_type)
|
|
4095
4709
|
|
|
4096
|
-
def
|
|
4097
|
-
mapping = SenderReceiverToSignalMapping()
|
|
4710
|
+
def readSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
|
|
4098
4711
|
mapping.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")) \
|
|
4099
4712
|
.setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF"))) \
|
|
4100
4713
|
.setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
|
|
4101
|
-
return mapping
|
|
4102
4714
|
|
|
4103
|
-
def
|
|
4104
|
-
mapping
|
|
4715
|
+
def readSenderRecCompositeTypeMapping(self, element: ET.Element, mapping: SenderRecCompositeTypeMapping):
|
|
4716
|
+
self.readARObjectAttributes(element, mapping)
|
|
4717
|
+
|
|
4718
|
+
def readSenderRecRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordElementMapping):
|
|
4719
|
+
self.readARObjectAttributes(element, mapping)
|
|
4720
|
+
mapping.setApplicationRecordElementRef(self.getChildElementOptionalRefType(element, "APPLICATION-RECORD-ELEMENT-REF")) \
|
|
4721
|
+
.setImplementationRecordElementRef(self.getChildElementOptionalRefType(element, "IMPLEMENTATION-RECORD-ELEMENT-REF")) \
|
|
4722
|
+
.setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
|
|
4723
|
+
|
|
4724
|
+
def readSenderRecArrayTypeMappingRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordTypeMapping):
|
|
4725
|
+
for child_element in self.findall(element, "RECORD-ELEMENT-MAPPINGS/*"):
|
|
4726
|
+
tag_name = self.getTagName(child_element)
|
|
4727
|
+
if tag_name == "SENDER-REC-RECORD-ELEMENT-MAPPING":
|
|
4728
|
+
record_element_mapping = SenderRecRecordElementMapping()
|
|
4729
|
+
self.readSenderRecRecordElementMapping(child_element, record_element_mapping)
|
|
4730
|
+
mapping.addRecordElementMapping(record_element_mapping)
|
|
4731
|
+
else:
|
|
4732
|
+
self.notImplemented("Unsupported RecordElementMapping %s" % tag_name)
|
|
4733
|
+
|
|
4734
|
+
def readSenderRecRecordTypeMapping(self, element: ET.Element, mapping: SenderRecRecordTypeMapping):
|
|
4735
|
+
self.readSenderRecCompositeTypeMapping(element, mapping)
|
|
4736
|
+
self.readSenderRecArrayTypeMappingRecordElementMapping(element, mapping)
|
|
4737
|
+
|
|
4738
|
+
def readSenderReceiverToSignalGroupMappingTypeMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
|
|
4739
|
+
child_element = self.find(element, "TYPE-MAPPING/*")
|
|
4740
|
+
if child_element is not None:
|
|
4741
|
+
tag_name = self.getTagName(child_element)
|
|
4742
|
+
if tag_name == "SENDER-REC-RECORD-TYPE-MAPPING":
|
|
4743
|
+
type_mapping = SenderRecRecordTypeMapping()
|
|
4744
|
+
self.readSenderRecRecordTypeMapping(child_element, type_mapping)
|
|
4745
|
+
mapping.setTypeMapping(type_mapping)
|
|
4746
|
+
else:
|
|
4747
|
+
self.notImplemented("Unsupported Type Mapping %s" % tag_name)
|
|
4748
|
+
|
|
4749
|
+
def readSenderReceiverToSignalGroupMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
|
|
4105
4750
|
mapping.setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF")))
|
|
4106
4751
|
mapping.setSignalGroupRef(self.getChildElementOptionalRefType(element, "SIGNAL-GROUP-REF"))
|
|
4107
|
-
|
|
4108
|
-
|
|
4752
|
+
self.readSenderReceiverToSignalGroupMappingTypeMapping(element, mapping)
|
|
4753
|
+
|
|
4109
4754
|
def readSystemMappingDataMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
4110
4755
|
for child_element in self.findall(element, "DATA-MAPPINGS/*"):
|
|
4111
4756
|
tag_name = self.getTagName(child_element)
|
|
4112
4757
|
if tag_name == "SENDER-RECEIVER-TO-SIGNAL-MAPPING":
|
|
4113
|
-
|
|
4758
|
+
signal_mapping = SenderReceiverToSignalMapping()
|
|
4759
|
+
self.readSenderReceiverToSignalMapping(child_element, signal_mapping)
|
|
4760
|
+
mapping.addDataMapping(signal_mapping)
|
|
4114
4761
|
elif tag_name == "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING":
|
|
4115
|
-
|
|
4762
|
+
signal_group_mapping = SenderReceiverToSignalGroupMapping()
|
|
4763
|
+
self.readSenderReceiverToSignalGroupMapping(child_element, signal_group_mapping)
|
|
4764
|
+
mapping.addDataMapping(signal_group_mapping)
|
|
4116
4765
|
else:
|
|
4117
4766
|
self.notImplemented("Unsupported Data Mapping %s" % tag_name)
|
|
4118
4767
|
|
|
@@ -4122,7 +4771,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4122
4771
|
for child_element in self.findall(element, "COMPONENT-IREFS/COMPONENT-IREF"):
|
|
4123
4772
|
mapping.addComponentIRef(self.getComponentInSystemInstanceRef(child_element))
|
|
4124
4773
|
mapping.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
|
|
4125
|
-
|
|
4774
|
+
|
|
4126
4775
|
def readSystemMappingSwMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
4127
4776
|
for child_element in self.findall(element, "SW-MAPPINGS/*"):
|
|
4128
4777
|
tag_name = self.getTagName(child_element)
|
|
@@ -4135,7 +4784,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4135
4784
|
def readEcuMapping(self, element: ET.Element, mapping: ECUMapping):
|
|
4136
4785
|
self.readIdentifiable(element, mapping)
|
|
4137
4786
|
mapping.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF")) \
|
|
4138
|
-
.setEcuRef(self.getChildElementOptionalRefType(element, "ECU-REF"))
|
|
4787
|
+
.setEcuRef(self.getChildElementOptionalRefType(element, "ECU-REF"))
|
|
4139
4788
|
|
|
4140
4789
|
def readSystemMappingEcuResourceMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
4141
4790
|
for child_element in self.findall(element, "ECU-RESOURCE-MAPPINGS/*"):
|
|
@@ -4177,7 +4826,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4177
4826
|
self.readSystemMapping(child_element, mapping)
|
|
4178
4827
|
else:
|
|
4179
4828
|
self.notImplemented("Unsupported Mapping %s" % tag_name)
|
|
4180
|
-
|
|
4829
|
+
|
|
4181
4830
|
def readRootSwCompositionPrototype(self, element: ET.Element, system: System):
|
|
4182
4831
|
child_element = self.find(element, "ROOT-SOFTWARE-COMPOSITIONS/ROOT-SW-COMPOSITION-PROTOTYPE")
|
|
4183
4832
|
if child_element is not None:
|
|
@@ -4188,7 +4837,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4188
4837
|
prototype.setFlatMapRef(self.getChildElementOptionalRefType(child_element, "FLAT-MAP-REF")) \
|
|
4189
4838
|
.setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
|
|
4190
4839
|
AUTOSAR.getInstance().setRootSwCompositionPrototype(prototype)
|
|
4191
|
-
|
|
4840
|
+
|
|
4192
4841
|
def readSystemFibexElementRefs(self, element: ET.Element, system: System):
|
|
4193
4842
|
for ref in self.getChildElementRefTypeList(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL/FIBEX-ELEMENT-REF"):
|
|
4194
4843
|
system.addFibexElementRef(ref)
|
|
@@ -4270,7 +4919,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4270
4919
|
type = parent.createComplexDeviceDriverSwComponentType(self.getShortName(child_element))
|
|
4271
4920
|
self.readComplexDeviceDriverSwComponentType(child_element, type)
|
|
4272
4921
|
elif tag_name == "SWC-IMPLEMENTATION":
|
|
4273
|
-
impl = parent.createSwcImplementation(self.getShortName(child_element))
|
|
4922
|
+
impl = parent.createSwcImplementation(self.getShortName(child_element))
|
|
4274
4923
|
self.readSwcImplementation(child_element, impl)
|
|
4275
4924
|
elif tag_name == "APPLICATION-PRIMITIVE-DATA-TYPE":
|
|
4276
4925
|
data_type = parent.createApplicationPrimitiveDataType(self.getShortName(child_element))
|
|
@@ -4309,7 +4958,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4309
4958
|
mapping = parent.createSwcBswMapping(self.getShortName(child_element))
|
|
4310
4959
|
self.readSwcBswMapping(child_element, mapping)
|
|
4311
4960
|
elif tag_name == "BSW-IMPLEMENTATION":
|
|
4312
|
-
impl = parent.createBswImplementation(self.getShortName(child_element))
|
|
4961
|
+
impl = parent.createBswImplementation(self.getShortName(child_element))
|
|
4313
4962
|
self.readBswImplementation(child_element, impl)
|
|
4314
4963
|
elif tag_name == "IMPLEMENTATION-DATA-TYPE":
|
|
4315
4964
|
data_type = parent.createImplementationDataType(self.getShortName(child_element))
|
|
@@ -4372,7 +5021,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4372
5021
|
i_pdu = parent.createSecuredIPdu(self.getShortName(child_element))
|
|
4373
5022
|
self.readSecuredIPdu(child_element, i_pdu)
|
|
4374
5023
|
elif tag_name == "NM-CONFIG":
|
|
4375
|
-
config = parent.createNmConfig(self.getShortName(child_element))
|
|
5024
|
+
config = parent.createNmConfig(self.getShortName(child_element))
|
|
4376
5025
|
self.readNmConfig(child_element, config)
|
|
4377
5026
|
elif tag_name == "CAN-TP-CONFIG":
|
|
4378
5027
|
config = parent.createCanTpConfig(self.getShortName(child_element))
|
|
@@ -4470,11 +5119,28 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4470
5119
|
elif tag_name == "DO-IP-TP-CONFIG":
|
|
4471
5120
|
config = parent.createDoIpTpConfig(self.getShortName(child_element))
|
|
4472
5121
|
self.readDoIpTpConfig(child_element, config)
|
|
5122
|
+
elif tag_name == "HW-ELEMENT":
|
|
5123
|
+
hw_element = parent.createHwElement(self.getShortName(child_element))
|
|
5124
|
+
self.readHwElement(child_element, hw_element)
|
|
5125
|
+
elif tag_name == "HW-CATEGORY":
|
|
5126
|
+
hw_category = parent.createHwCategory(self.getShortName(child_element))
|
|
5127
|
+
self.readHwCategory(child_element, hw_category)
|
|
5128
|
+
elif tag_name == "HW-TYPE":
|
|
5129
|
+
type = parent.createHwType(self.getShortName(child_element))
|
|
5130
|
+
self.readHwType(child_element, type)
|
|
5131
|
+
elif tag_name == "FLEXRAY-FRAME":
|
|
5132
|
+
frame = parent.createFlexrayFrame(self.getShortName(child_element))
|
|
5133
|
+
self.readFlexrayFrame(child_element, frame)
|
|
5134
|
+
elif tag_name == "FLEXRAY-CLUSTER":
|
|
5135
|
+
cluster = parent.createFlexrayCluster(self.getShortName(child_element))
|
|
5136
|
+
self.readFlexrayCluster(child_element, cluster)
|
|
5137
|
+
elif tag_name == "DATA-TRANSFORMATION-SET":
|
|
5138
|
+
transformation_set = parent.createDataTransformationSet(self.getShortName(child_element))
|
|
5139
|
+
self.readDataTransformationSet(child_element, transformation_set)
|
|
4473
5140
|
else:
|
|
4474
5141
|
self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
|
|
4475
5142
|
|
|
4476
5143
|
def readReferenceBases(self, element: ET.Element, parent: ARPackage):
|
|
4477
|
-
self.logger.debug("Read ReferenceBases")
|
|
4478
5144
|
for child_element in self.findall(element, "REFERENCE-BASES/REFERENCE-BASE"):
|
|
4479
5145
|
base = ReferenceBase()
|
|
4480
5146
|
base.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
@@ -4484,17 +5150,22 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4484
5150
|
.setPackageRef(self.getChildElementOptionalRefType(child_element, "PACKAGE-REF"))
|
|
4485
5151
|
parent.addReferenceBase(base)
|
|
4486
5152
|
|
|
4487
|
-
def
|
|
4488
|
-
|
|
4489
|
-
short_name = self.getShortName(child_element)
|
|
4490
|
-
ar_package = parent.createARPackage(short_name)
|
|
5153
|
+
def readARPackage(self, element: ET.Element, ar_package: ARPackage):
|
|
5154
|
+
self.logger.debug("Read ARPackages %s" % ar_package.getFullName())
|
|
4491
5155
|
|
|
4492
|
-
|
|
5156
|
+
self.readIdentifiable(element, ar_package)
|
|
5157
|
+
self.readARPackages(element, ar_package)
|
|
5158
|
+
self.readARPackageElements(element, ar_package)
|
|
5159
|
+
self.readReferenceBases(element, ar_package)
|
|
4493
5160
|
|
|
4494
|
-
|
|
4495
|
-
|
|
4496
|
-
self.
|
|
4497
|
-
|
|
5161
|
+
def readARPackages(self, element: ET.Element, parent: ARPackage):
|
|
5162
|
+
for child_element in self.findall(element, "AR-PACKAGES/*"):
|
|
5163
|
+
tag_name = self.getTagName(child_element)
|
|
5164
|
+
if tag_name == "AR-PACKAGE":
|
|
5165
|
+
ar_package = parent.createARPackage(self.getShortName(child_element))
|
|
5166
|
+
self.readARPackage(child_element, ar_package)
|
|
5167
|
+
else:
|
|
5168
|
+
self.notImplemented("Unsupported ARPackage <%s>" % tag_name)
|
|
4498
5169
|
|
|
4499
5170
|
def load(self, filename, document: AUTOSAR):
|
|
4500
5171
|
self.logger.info("Loading %s ..." % os.path.realpath(filename))
|
|
@@ -4505,7 +5176,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4505
5176
|
self.raiseError("Invalid ARXML file <%s>" % filename)
|
|
4506
5177
|
|
|
4507
5178
|
self.getAUTOSARInfo(root, document)
|
|
4508
|
-
document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))
|
|
5179
|
+
document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))
|
|
4509
5180
|
self.readARPackages(root, document)
|
|
4510
5181
|
|
|
4511
5182
|
document.reload()
|