armodel 1.7.6__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 +95 -21
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +359 -59
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +134 -35
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +17 -7
- 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 +215 -157
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +69 -35
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +17 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +19 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +113 -39
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +3 -2
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py +41 -16
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +10 -3
- 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/RTEEvents.py +26 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +28 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DoIp.py +29 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/EcuResourceMapping.py +45 -0
- 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/Fibex4Ethernet/EthernetTopology.py +9 -0
- 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 +539 -77
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +28 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +245 -130
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +27 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +592 -17
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +33 -21
- armodel/models/M2/MSR/AsamHdo/AdminData.py +1 -2
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +3 -1
- armodel/models/M2/MSR/AsamHdo/SpecialData.py +35 -8
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +0 -3
- armodel/models/__init__.py +8 -0
- armodel/parser/abstract_arxml_parser.py +34 -27
- armodel/parser/arxml_parser.py +1778 -616
- armodel/parser/file_parser.py +5 -3
- armodel/tests/test_armodel/models/test_ar_package.py +6 -11
- armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -3
- armodel/tests/test_armodel/models/test_datatype.py +1 -1
- armodel/tests/test_armodel/models/test_port_interface.py +116 -117
- armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +218 -0
- armodel/tests/test_armodel/parser/test_sw_components.py +54 -22
- 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 +27 -33
- armodel/writer/arxml_writer.py +1875 -599
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/METADATA +81 -3
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/RECORD +69 -56
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/LICENSE +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/WHEEL +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/top_level.txt +0 -0
armodel/parser/arxml_parser.py
CHANGED
|
@@ -5,7 +5,9 @@ import os
|
|
|
5
5
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
6
6
|
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
|
|
7
7
|
from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
|
|
8
|
-
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
|
|
9
11
|
from ..models.M2.MSR.AsamHdo.SpecialData import Sdg, Sd
|
|
10
12
|
from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension, Unit
|
|
11
13
|
from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
|
|
@@ -22,82 +24,180 @@ from ..models.M2.MSR.Documentation.Annotation import Annotation, GeneralAnnotati
|
|
|
22
24
|
from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
|
|
23
25
|
from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
|
|
24
26
|
from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName, LOverviewParagraph, LParagraph, LanguageSpecific
|
|
25
|
-
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
|
|
26
29
|
|
|
27
30
|
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
28
|
-
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import
|
|
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
|
|
29
37
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
|
|
30
38
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
|
|
31
39
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
|
|
32
|
-
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
|
|
33
43
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
|
|
34
44
|
from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
|
|
35
45
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import ImplementationProps, Code
|
|
46
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
|
|
36
47
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroup, ModeRequestTypeMap, ModeDeclarationGroupPrototype
|
|
37
48
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
|
|
38
49
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import MemorySection
|
|
39
50
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
|
|
40
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
|
|
41
51
|
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
|
|
42
|
-
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
|
|
43
57
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
|
|
44
58
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
45
59
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
|
|
46
60
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
|
|
61
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import Trigger
|
|
47
62
|
from ..models.M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import DiagnosticServiceTable
|
|
48
|
-
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
|
|
49
68
|
from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
|
|
50
|
-
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
|
|
51
71
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
|
|
52
72
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
|
|
53
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import
|
|
73
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral
|
|
54
74
|
from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
|
|
55
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
56
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
57
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import
|
|
58
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import
|
|
59
|
-
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
|
|
60
83
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
61
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
62
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import
|
|
63
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
64
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
65
|
-
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
|
|
66
112
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
|
|
67
113
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
|
|
68
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.
|
|
69
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
70
|
-
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
|
|
71
124
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
72
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.
|
|
73
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, DataPrototypeMapping, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, PortInterfaceMappingSet, SenderReceiverInterface, TriggerInterface, VariableAndParameterInterfaceMapping
|
|
74
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
|
|
75
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
|
|
76
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
125
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
77
126
|
|
|
78
|
-
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
|
|
79
130
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
80
131
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import DiagnosticConnection
|
|
81
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.
|
|
82
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
|
|
83
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import ApplicationEntry, LinFrameTriggering, LinScheduleTable, LinUnconditionalFrame, ScheduleTableEntry
|
|
84
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinCommunicationController, LinMaster
|
|
85
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanClusterBusOffRecovery, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, CommunicationController, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
|
|
86
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import DcmIPdu, Frame, FrameTriggering, GeneralPurposeIPdu, GeneralPurposePdu, IPdu, IPduTiming, ISignal, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalTriggering, MultiplexedIPdu, NPdu, NmPdu, PduTriggering, SecureCommunicationPropsSet, SecuredIPdu, SystemSignal, SystemSignalGroup, UserDefinedIPdu, UserDefinedPdu
|
|
87
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
88
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
132
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.EcuResourceMapping import ECUMapping
|
|
89
133
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
|
|
90
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController
|
|
91
|
-
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
|
|
92
143
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
|
|
93
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.
|
|
94
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.
|
|
95
|
-
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
|
|
96
165
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, IPduMapping, ISignalMapping, TargetIPduRef
|
|
97
|
-
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
|
|
98
197
|
|
|
99
198
|
from .abstract_arxml_parser import AbstractARXMLParser
|
|
100
199
|
|
|
200
|
+
|
|
101
201
|
class ARXMLParser(AbstractARXMLParser):
|
|
102
202
|
def __init__(self, options=None) -> None:
|
|
103
203
|
super().__init__(options)
|
|
@@ -110,7 +210,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
110
210
|
range.setLowerCanId(self.getChildElementOptionalNumericalValue(child_element, "LOWER-CAN-ID")) \
|
|
111
211
|
.setUpperCanId(self.getChildElementOptionalNumericalValue(child_element, "UPPER-CAN-ID"))
|
|
112
212
|
return range
|
|
113
|
-
|
|
213
|
+
|
|
114
214
|
def readSd(self, element: ET.Element, sdg: Sdg):
|
|
115
215
|
for child_element in self.findall(element, "./SD"):
|
|
116
216
|
sd = Sd()
|
|
@@ -119,33 +219,51 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
119
219
|
sd.setValue(child_element.text)
|
|
120
220
|
sdg.addSd(sd)
|
|
121
221
|
|
|
222
|
+
def readSdgCaption(self, element: ET.Element, sdg: Sdg):
|
|
223
|
+
child_element = self.find(element, "SDG-CAPTION")
|
|
224
|
+
if child_element is not None:
|
|
225
|
+
sdg.createSdgCaption(self.getShortName(child_element))
|
|
226
|
+
|
|
227
|
+
def readSdgSdxRefs(self, element: ET.SubElement, sdg: Sdg):
|
|
228
|
+
for ref in self.getChildElementRefTypeList(element, "SDX-REF"):
|
|
229
|
+
sdg.addSdxRef(ref)
|
|
230
|
+
|
|
122
231
|
def getSdg(self, element: ET.Element) -> Sdg:
|
|
123
232
|
sdg = Sdg()
|
|
124
233
|
if 'GID' in element.attrib:
|
|
125
234
|
sdg.setGID(element.attrib["GID"])
|
|
235
|
+
self.readSdgCaption(element, sdg)
|
|
126
236
|
self.readSd(element, sdg)
|
|
127
237
|
for child_element in self.findall(element, "SDG"):
|
|
128
238
|
sdg.addSdgContentsType(self.getSdg(child_element))
|
|
239
|
+
self.readSdgSdxRefs(element, sdg)
|
|
129
240
|
return sdg
|
|
130
|
-
|
|
241
|
+
|
|
131
242
|
def readSdgs(self, element: ET.Element, admin_data: AdminData):
|
|
132
|
-
for child_element in self.findall(element, "SDGS
|
|
133
|
-
|
|
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)
|
|
134
249
|
|
|
135
250
|
def getAdminData(self, element: ET.Element, key: str) -> AdminData:
|
|
136
251
|
admin_data = None
|
|
137
252
|
child_element = self.find(element, key)
|
|
138
253
|
if child_element is not None:
|
|
139
|
-
self.logger.debug("
|
|
254
|
+
# self.logger.debug("Read AdminData")
|
|
140
255
|
admin_data = AdminData()
|
|
141
256
|
admin_data.setLanguage(self.getChildElementOptionalLiteral(child_element, "LANGUAGE")) \
|
|
142
257
|
.setUsedLanguages(self.getMultiLanguagePlainText(child_element, "USED-LANGUAGES"))
|
|
143
258
|
|
|
144
259
|
self.readSdgs(child_element, admin_data)
|
|
145
260
|
return admin_data
|
|
261
|
+
|
|
262
|
+
def readReferrable(self, element: ET.Element, referrable: Referrable):
|
|
263
|
+
self.readARObjectAttributes(element, referrable)
|
|
146
264
|
|
|
147
265
|
def readMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
|
|
148
|
-
self.
|
|
266
|
+
self.readReferrable(element, referrable)
|
|
149
267
|
referrable.setLongName(self.getMultilanguageLongName(element, "LONG-NAME"))
|
|
150
268
|
|
|
151
269
|
def readIdentifiable(self, element: ET.Element, identifiable: Identifiable):
|
|
@@ -157,8 +275,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
157
275
|
identifiable.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
158
276
|
.setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC")) \
|
|
159
277
|
.setIntroduction(self.getDocumentationBlock(element, "INTRODUCTION"))
|
|
160
|
-
|
|
278
|
+
|
|
161
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)
|
|
162
283
|
|
|
163
284
|
def readLLongName(self, element: ET.Element, long_name: MultilanguageLongName):
|
|
164
285
|
for child_element in self.findall(element, "L-4"):
|
|
@@ -166,7 +287,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
166
287
|
self.readARObjectAttributes(child_element, l4)
|
|
167
288
|
l4.value = child_element.text
|
|
168
289
|
if 'L' in child_element.attrib:
|
|
169
|
-
l4.l = child_element.attrib['L']
|
|
290
|
+
l4.l = child_element.attrib['L'] # noqa: E741
|
|
170
291
|
long_name.addL4(l4)
|
|
171
292
|
|
|
172
293
|
def getMultilanguageLongName(self, element: ET.Element, key: str) -> MultilanguageLongName:
|
|
@@ -184,7 +305,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
184
305
|
self.readARObjectAttributes(child_element, l2)
|
|
185
306
|
l2.value = child_element.text
|
|
186
307
|
if 'L' in child_element.attrib:
|
|
187
|
-
l2.l = child_element.attrib['L']
|
|
308
|
+
l2.l = child_element.attrib['L'] # noqa: E741
|
|
188
309
|
paragraph.addL2(l2)
|
|
189
310
|
|
|
190
311
|
def getMultiLanguageOverviewParagraph(self, element: ET.Element, key: str) -> MultiLanguageOverviewParagraph:
|
|
@@ -197,37 +318,37 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
197
318
|
return paragraph
|
|
198
319
|
|
|
199
320
|
def getVariableInAtomicSWCTypeInstanceRef(self, element: ET.Element) -> VariableInAtomicSWCTypeInstanceRef:
|
|
200
|
-
|
|
321
|
+
instance_ref = None
|
|
201
322
|
if element is not None:
|
|
202
|
-
|
|
203
|
-
self.readARObjectAttributes(element,
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
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
|
|
207
328
|
|
|
208
329
|
def getComponentInSystemInstanceRef(self, element: ET.Element) -> ComponentInSystemInstanceRef:
|
|
209
|
-
|
|
330
|
+
instance_ref = None
|
|
210
331
|
if element is not None:
|
|
211
|
-
|
|
212
|
-
self.readARObjectAttributes(element,
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
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
|
|
217
338
|
|
|
218
|
-
def getAutosarVariableRef(self, element: ET.Element, key: str) ->
|
|
339
|
+
def getAutosarVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
|
|
219
340
|
child_element = self.find(element, key)
|
|
220
|
-
|
|
341
|
+
instance_ref = None
|
|
221
342
|
if (child_element is not None):
|
|
222
|
-
|
|
223
|
-
#self.readARObjectAttributes(child_element, ref)
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
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
|
|
227
348
|
|
|
228
|
-
def getLocalVariableRef(self, element: ET.Element, key: str) ->
|
|
349
|
+
def getLocalVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
|
|
229
350
|
child_element = self.find(element, key)
|
|
230
|
-
ref
|
|
351
|
+
ref = None
|
|
231
352
|
if (child_element is not None):
|
|
232
353
|
ref = AutosarVariableRef()
|
|
233
354
|
ref.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
|
|
@@ -265,31 +386,34 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
265
386
|
|
|
266
387
|
self.readIdentifiable(child_element, variable_access)
|
|
267
388
|
|
|
268
|
-
def
|
|
389
|
+
def readBswModuleDescriptionImplementedEntryRefs(self, element: ET.Element, parent: BswModuleDescription):
|
|
269
390
|
for child_element in self.findall(element, "PROVIDED-ENTRYS/BSW-MODULE-ENTRY-REF-CONDITIONAL"):
|
|
270
|
-
ref = self.getChildElementOptionalRefType(child_element, "BSW-MODULE-ENTRY-REF")
|
|
391
|
+
ref = self.getChildElementOptionalRefType(child_element, "BSW-MODULE-ENTRY-REF")
|
|
271
392
|
if (ref is not None):
|
|
272
|
-
parent.
|
|
393
|
+
parent.addImplementedEntryRef(ref)
|
|
273
394
|
self.logger.debug("ImplementedEntry <%s> of BswModuleDescription <%s> has been added", ref.value, parent.getShortName())
|
|
274
395
|
|
|
275
396
|
def readModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
|
|
276
397
|
self.readIdentifiable(element, prototype)
|
|
277
|
-
prototype.
|
|
278
|
-
|
|
279
|
-
def readProvidedModeGroup(self, element: ET.Element, parent: BswModuleDescription):
|
|
280
|
-
for child_element in self.findall(element, "PROVIDED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE"):
|
|
281
|
-
short_name = self.getShortName(child_element)
|
|
282
|
-
self.logger.debug("readProvidedModeGroup %s" % short_name)
|
|
398
|
+
prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
|
|
283
399
|
|
|
284
|
-
|
|
285
|
-
|
|
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)
|
|
286
408
|
|
|
287
|
-
def
|
|
288
|
-
for child_element in self.findall(element, "REQUIRED-MODE-GROUPS
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
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)
|
|
293
417
|
|
|
294
418
|
def readCanEnterExclusiveAreaRefs(self, element: ET.Element, entity: ExecutableEntity):
|
|
295
419
|
for ref in self.getChildElementRefTypeList(element, "CAN-ENTER-EXCLUSIVE-AREA-REFS/CAN-ENTER-EXCLUSIVE-AREA-REF"):
|
|
@@ -302,8 +426,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
302
426
|
entity.setMinimumStartInterval(self.getChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL")) \
|
|
303
427
|
.setSwAddrMethodRef(self.getChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF"))
|
|
304
428
|
|
|
305
|
-
def
|
|
306
|
-
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"):
|
|
307
431
|
ref_type = self.getChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF")
|
|
308
432
|
if ref_type is not None:
|
|
309
433
|
entity.addManagedModeGroupRef(ref_type)
|
|
@@ -315,12 +439,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
315
439
|
self.readBswEvent(element, event)
|
|
316
440
|
|
|
317
441
|
def readBswModeSwitchEvent(self, element: ET.Element, event: BswModeSwitchEvent):
|
|
318
|
-
self.logger.debug("
|
|
442
|
+
self.logger.debug("Read BswModeSwitchEvent <%s>" % event.getShortName())
|
|
319
443
|
# Read the Inherit BswScheduleEvent
|
|
320
444
|
self.readBswScheduleEvent(element, event)
|
|
321
445
|
|
|
322
446
|
def readBswTimingEvent(self, element: ET.Element, event: BswTimingEvent):
|
|
323
|
-
self.logger.debug("
|
|
447
|
+
self.logger.debug("Read BswTimingEvent <%s>" % event.getShortName())
|
|
324
448
|
# Read the Inherit BswScheduleEvent
|
|
325
449
|
self.readBswScheduleEvent(element, event)
|
|
326
450
|
event.setPeriod(self.getChildElementOptionalTimeValue(element, "PERIOD"))
|
|
@@ -330,13 +454,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
330
454
|
self.logger.debug(" Period: <%f, %s>" % (event.getPeriod().getValue(), event.getPeriod().getText()))
|
|
331
455
|
|
|
332
456
|
def readBswDataReceivedEvent(self, element: ET.Element, event: BswDataReceivedEvent):
|
|
333
|
-
self.logger.debug("
|
|
457
|
+
self.logger.debug("Read BswDataReceivedEvent <%s>" % event.getShortName())
|
|
334
458
|
# Read the Inherit BswScheduleEvent
|
|
335
459
|
self.readBswScheduleEvent(element, event)
|
|
336
460
|
event.setDataRef(self.getChildElementOptionalRefType(element, "DATA-REF"))
|
|
337
461
|
|
|
338
462
|
def readBswInternalTriggerOccurredEvent(self, element: ET.Element, event: BswInternalTriggerOccurredEvent):
|
|
339
|
-
self.logger.debug("
|
|
463
|
+
self.logger.debug("Read BswInternalTriggerOccurredEvent <%s>" % event.getShortName())
|
|
340
464
|
# Read the Inherit BswScheduleEvent
|
|
341
465
|
self.readBswScheduleEvent(element, event)
|
|
342
466
|
event.setEventSourceRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
|
|
@@ -362,10 +486,22 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
362
486
|
behavior.addDataTypeMappingRef(ref)
|
|
363
487
|
|
|
364
488
|
def readInternalBehaviorConstantMemories(self, element: ET.Element, behavior: InternalBehavior):
|
|
365
|
-
for child_element in self.findall(element, "CONSTANT-MEMORYS
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
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)
|
|
369
505
|
|
|
370
506
|
def readInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
|
|
371
507
|
self.readIdentifiable(element, behavior)
|
|
@@ -374,6 +510,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
374
510
|
short_name = self.getShortName(child_element)
|
|
375
511
|
behavior.createExclusiveArea(short_name)
|
|
376
512
|
self.readDataTypeMappingRefs(element, behavior)
|
|
513
|
+
self.readInternalBehaviorStaticMemories(element, behavior)
|
|
377
514
|
|
|
378
515
|
def getRoleBasedDataAssignment(self, element: ET.Element) -> RoleBasedDataAssignment:
|
|
379
516
|
assignment = RoleBasedDataAssignment()
|
|
@@ -420,10 +557,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
420
557
|
else:
|
|
421
558
|
self.raiseError("Unsupported assigned ports <%s>" % tag_name)
|
|
422
559
|
|
|
423
|
-
def readNvBlockNeeds(self, element: ET.Element,
|
|
424
|
-
|
|
425
|
-
needs = parent.createNvBlockNeeds(short_name)
|
|
426
|
-
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())
|
|
427
562
|
self.readIdentifiable(element, needs)
|
|
428
563
|
needs.setCalcRamBlockCrc(self.getChildElementOptionalBooleanValue(element, "CALC-RAM-BLOCK-CRC")) \
|
|
429
564
|
.setCheckStaticBlockId(self.getChildElementOptionalBooleanValue(element, "CHECK-STATIC-BLOCK-ID")) \
|
|
@@ -445,25 +580,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
445
580
|
.setWritingFrequency(self.getChildElementOptionalPositiveInteger(element, "WRITING-FREQUENCY")) \
|
|
446
581
|
.setWritingPriority(self.getChildElementOptionalLiteral(element, "WRITING-PRIORITY"))
|
|
447
582
|
|
|
448
|
-
def reaDiagnosticCommunicationManagerNeeds(self, element: ET.Element,
|
|
449
|
-
|
|
450
|
-
needs = parent.createDiagnosticCommunicationManagerNeeds(short_name)
|
|
451
|
-
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())
|
|
452
585
|
self.readIdentifiable(element, needs)
|
|
453
586
|
needs.setServiceRequestCallbackType(self.getChildElementOptionalLiteral(element, "SERVICE-REQUEST-CALLBACK-TYPE"))
|
|
454
587
|
|
|
455
|
-
def readDiagnosticRoutineNeeds(self, element: ET.Element,
|
|
456
|
-
|
|
457
|
-
needs = parent.createDiagnosticRoutineNeeds(short_name)
|
|
458
|
-
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())
|
|
459
590
|
self.readIdentifiable(element, needs)
|
|
460
591
|
needs.setDiagRoutineType(self.getChildElementOptionalLiteral(element, "DIAG-ROUTINE-TYPE")) \
|
|
461
592
|
.setRidNumber(self.getChildElementOptionalIntegerValue(element, "RID-NUMBER"))
|
|
462
593
|
|
|
463
|
-
def readDiagnosticValueNeeds(self, element: ET.Element,
|
|
464
|
-
|
|
465
|
-
needs = parent.createDiagnosticValueNeeds(short_name)
|
|
466
|
-
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())
|
|
467
596
|
self.readIdentifiable(element, needs)
|
|
468
597
|
needs.setDataLength(self.getChildElementOptionalPositiveInteger(element, "DATA-LENGTH")) \
|
|
469
598
|
.setDiagnosticValueAccess(self.getChildElementOptionalLiteral(element, "DIAGNOSTIC-VALUE-ACCESS")) \
|
|
@@ -483,54 +612,54 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
483
612
|
else:
|
|
484
613
|
self.notImplemented("Unsupported DiagEventDebounceAlgorithm <%s>" % tag_name)
|
|
485
614
|
|
|
486
|
-
def readDiagnosticEventNeeds(self, element: ET.Element,
|
|
487
|
-
|
|
488
|
-
needs = parent.createDiagnosticEventNeeds(short_name)
|
|
489
|
-
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())
|
|
490
617
|
self.readIdentifiable(element, needs)
|
|
491
618
|
self.readDiagEventDebounceAlgorithm(element, needs)
|
|
492
619
|
needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND")) \
|
|
493
620
|
.setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
|
|
494
621
|
|
|
495
|
-
def readDiagnosticEventInfoNeeds(self, element: ET.Element,
|
|
496
|
-
|
|
497
|
-
needs = parent.createDiagnosticEventInfoNeeds(short_name)
|
|
498
|
-
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())
|
|
499
624
|
self.readIdentifiable(element, needs)
|
|
500
625
|
needs.setUdsDtcNumber(self.getChildElementOptionalPositiveInteger(element, "UDS-DTC-NUMBER"))
|
|
501
626
|
|
|
502
|
-
def readCryptoServiceNeeds(self, element: ET.Element,
|
|
503
|
-
|
|
504
|
-
needs = parent.createCryptoServiceNeeds(short_name)
|
|
505
|
-
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())
|
|
506
629
|
self.readIdentifiable(element, needs)
|
|
507
630
|
needs.setMaximumKeyLength(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-KEY-LENGTH"))
|
|
508
631
|
|
|
509
|
-
def readEcuStateMgrUserNeeds(self, element: ET.Element,
|
|
510
|
-
|
|
511
|
-
needs = parent.createEcuStateMgrUserNeeds(short_name)
|
|
512
|
-
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())
|
|
513
634
|
self.readIdentifiable(element, needs)
|
|
514
635
|
|
|
515
636
|
def readSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
516
637
|
for child_element in self.findall(element, "SERVICE-NEEDS/*"):
|
|
517
638
|
tag_name = self.getTagName(child_element)
|
|
518
639
|
if tag_name == "NV-BLOCK-NEEDS":
|
|
519
|
-
self.
|
|
640
|
+
needs = parent.createNvBlockNeeds(self.getShortName(child_element))
|
|
641
|
+
self.readNvBlockNeeds(child_element, needs)
|
|
520
642
|
elif tag_name == "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS":
|
|
521
|
-
self.
|
|
643
|
+
needs = parent.createDiagnosticCommunicationManagerNeeds(self.getShortName(child_element))
|
|
644
|
+
self.reaDiagnosticCommunicationManagerNeeds(child_element, needs)
|
|
522
645
|
elif tag_name == "DIAGNOSTIC-ROUTINE-NEEDS":
|
|
523
|
-
self.
|
|
646
|
+
needs = parent.createDiagnosticRoutineNeeds(self.getShortName(child_element))
|
|
647
|
+
self.readDiagnosticRoutineNeeds(child_element, needs)
|
|
524
648
|
elif tag_name == "DIAGNOSTIC-VALUE-NEEDS":
|
|
525
|
-
self.
|
|
649
|
+
needs = parent.createDiagnosticValueNeeds(self.getShortName(child_element))
|
|
650
|
+
self.readDiagnosticValueNeeds(child_element, needs)
|
|
526
651
|
elif tag_name == "DIAGNOSTIC-EVENT-NEEDS":
|
|
527
|
-
self.
|
|
652
|
+
needs = parent.createDiagnosticEventNeeds(self.getShortName(child_element))
|
|
653
|
+
self.readDiagnosticEventNeeds(child_element, needs)
|
|
528
654
|
elif tag_name == "DIAGNOSTIC-EVENT-INFO-NEEDS":
|
|
529
|
-
self.
|
|
655
|
+
needs = parent.createDiagnosticEventInfoNeeds(self.getShortName(child_element))
|
|
656
|
+
self.readDiagnosticEventInfoNeeds(child_element, needs)
|
|
530
657
|
elif tag_name == "CRYPTO-SERVICE-NEEDS":
|
|
531
|
-
self.
|
|
658
|
+
needs = parent.createCryptoServiceNeeds(self.getShortName(child_element))
|
|
659
|
+
self.readCryptoServiceNeeds(child_element, needs)
|
|
532
660
|
elif tag_name == "ECU-STATE-MGR-USER-NEEDS":
|
|
533
|
-
self.
|
|
661
|
+
needs = parent.createEcuStateMgrUserNeeds(self.getShortName(child_element))
|
|
662
|
+
self.readEcuStateMgrUserNeeds(child_element, needs)
|
|
534
663
|
else:
|
|
535
664
|
self.notImplemented("Unsupported service needs <%s>" % tag_name)
|
|
536
665
|
|
|
@@ -573,28 +702,47 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
573
702
|
prototype = behavior.createSharedParameter(short_name)
|
|
574
703
|
self.readParameterDataPrototype(child_element, prototype)
|
|
575
704
|
|
|
576
|
-
def
|
|
577
|
-
for
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
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"))
|
|
581
709
|
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
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)
|
|
598
746
|
|
|
599
747
|
def getIncludedModeDeclarationGroupSets(self, element: ET.Element) -> List[IncludedModeDeclarationGroupSet]:
|
|
600
748
|
group_sets = []
|
|
@@ -605,10 +753,39 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
605
753
|
group_sets.append(group_set)
|
|
606
754
|
return group_sets
|
|
607
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
|
+
|
|
608
782
|
def readBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
|
|
609
783
|
self.readExecutableEntity(element, entity)
|
|
784
|
+
self.readBswModuleEntityDataReceiverPoints(element, entity)
|
|
785
|
+
self.readBswModuleEntityDataSendPoints(element, entity)
|
|
610
786
|
entity.setImplementedEntryRef(self.getChildElementRefType(entity.getShortName(), element, "IMPLEMENTED-ENTRY-REF"))
|
|
611
|
-
self.
|
|
787
|
+
self.readBswModuleEntityManagedModeGroups(element, entity)
|
|
788
|
+
self.readBswModuleEntityIssuedTriggerRefs(element, entity)
|
|
612
789
|
|
|
613
790
|
def readBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
|
|
614
791
|
self.logger.debug("read BswCalledEntity %s" % entity.getShortName())
|
|
@@ -630,7 +807,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
630
807
|
if tag_name == "BSW-CALLED-ENTITY":
|
|
631
808
|
entity = behavior.createBswCalledEntity(self.getShortName(child_element))
|
|
632
809
|
self.readBswCalledEntity(child_element, entity)
|
|
633
|
-
elif tag_name == "BSW-SCHEDULABLE-ENTITY":
|
|
810
|
+
elif tag_name == "BSW-SCHEDULABLE-ENTITY":
|
|
634
811
|
entity = behavior.createBswSchedulableEntity(self.getShortName(child_element))
|
|
635
812
|
self.readBswSchedulableEntity(child_element, entity)
|
|
636
813
|
elif tag_name == "BSW-INTERRUPT-ENTITY":
|
|
@@ -639,13 +816,24 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
639
816
|
else:
|
|
640
817
|
self.notImplemented("Unsupported BswModuleEntity <%s>" % tag_name)
|
|
641
818
|
|
|
819
|
+
def readBswBackgroundEvent(self, element: ET.Element, event: BswBackgroundEvent):
|
|
820
|
+
self.readBswScheduleEvent(element, event)
|
|
821
|
+
|
|
822
|
+
def readBswExternalTriggerOccurredEvent(self, element: ET.Element, event: BswExternalTriggerOccurredEvent):
|
|
823
|
+
self.readBswScheduleEvent(element, event)
|
|
824
|
+
event.setTriggerRef(self.getChildElementOptionalRefType(element, "TRIGGER-REF"))
|
|
825
|
+
|
|
826
|
+
def readBswOperationInvokedEvent(self, element: ET.Element, event: BswOperationInvokedEvent):
|
|
827
|
+
self.readBswEvent(element, event)
|
|
828
|
+
event.setEntryRef(self.getChildElementOptionalRefType(element, "ENTRY-REF"))
|
|
829
|
+
|
|
642
830
|
def readBswInternalBehaviorEvents(self, element: ET.Element, behavior: BswInternalBehavior):
|
|
643
831
|
for child_element in self.findall(element, "EVENTS/*"):
|
|
644
832
|
tag_name = self.getTagName(child_element)
|
|
645
833
|
if tag_name == "BSW-MODE-SWITCH-EVENT":
|
|
646
834
|
event = behavior.createBswModeSwitchEvent(self.getShortName(child_element))
|
|
647
835
|
self.readBswModeSwitchEvent(child_element, event)
|
|
648
|
-
elif tag_name == "BSW-TIMING-EVENT":
|
|
836
|
+
elif tag_name == "BSW-TIMING-EVENT":
|
|
649
837
|
event = behavior.createBswTimingEvent(self.getShortName(child_element))
|
|
650
838
|
self.readBswTimingEvent(child_element, event)
|
|
651
839
|
elif tag_name == "BSW-DATA-RECEIVED-EVENT":
|
|
@@ -654,35 +842,116 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
654
842
|
elif tag_name == "BSW-INTERNAL-TRIGGER-OCCURRED-EVENT":
|
|
655
843
|
event = behavior.createBswInternalTriggerOccurredEvent(self.getShortName(child_element))
|
|
656
844
|
self.readBswInternalTriggerOccurredEvent(child_element, event)
|
|
845
|
+
elif tag_name == "BSW-BACKGROUND-EVENT":
|
|
846
|
+
event = behavior.createBswBackgroundEvent(self.getShortName(child_element))
|
|
847
|
+
self.readBswBackgroundEvent(child_element, event)
|
|
848
|
+
elif tag_name == "BSW-EXTERNAL-TRIGGER-OCCURRED-EVENT":
|
|
849
|
+
event = behavior.createBswExternalTriggerOccurredEvent(self.getShortName(child_element))
|
|
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)
|
|
657
854
|
else:
|
|
658
855
|
self.notImplemented("Unsupported BswModuleEntity <%s>" % tag_name)
|
|
659
856
|
|
|
660
|
-
def
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
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)
|
|
673
938
|
|
|
674
939
|
def readBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
|
|
675
940
|
self.logger.debug("Read BswModuleDescription <%s>" % desc.getShortName())
|
|
676
941
|
|
|
677
942
|
self.readIdentifiable(element, desc)
|
|
678
943
|
desc.setModuleId(self.getChildElementOptionalNumericalValue(element, "MODULE-ID"))
|
|
679
|
-
self.
|
|
680
|
-
self.
|
|
681
|
-
self.
|
|
682
|
-
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)
|
|
683
952
|
|
|
684
953
|
def readSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
|
|
685
|
-
self.
|
|
954
|
+
self.readIdentifiable(element, arg)
|
|
686
955
|
arg.setDirection(self.getChildElementOptionalLiteral(element, "DIRECTION")) \
|
|
687
956
|
.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
688
957
|
|
|
@@ -746,7 +1015,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
746
1015
|
memory_section = consumption.createMemorySection(self.getShortName(child_element))
|
|
747
1016
|
self.readIdentifiable(child_element, memory_section)
|
|
748
1017
|
memory_section.setAlignment(self.getChildElementOptionalLiteral(child_element, "ALIGNMENT")) \
|
|
749
|
-
.setMemClassSymbol(self.getChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL"))
|
|
1018
|
+
.setMemClassSymbol(self.getChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL"))
|
|
750
1019
|
self.readMemorySectionOptions(child_element, memory_section)
|
|
751
1020
|
memory_section.setSize(self.getChildElementOptionalNumericalValue(child_element, "SIZE")) \
|
|
752
1021
|
.setSwAddrMethodRef(self.getChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF")) \
|
|
@@ -798,27 +1067,30 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
798
1067
|
self.logger.debug("Read BswImplementation <%s>" % impl.getShortName())
|
|
799
1068
|
self.readImplementation(element, impl)
|
|
800
1069
|
impl.setArReleaseVersion(self.getChildElementOptionalLiteral(element, "AR-RELEASE-VERSION")) \
|
|
801
|
-
.setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF"))
|
|
1070
|
+
.setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF")) \
|
|
1071
|
+
.setVendorApiInfix(self.getChildElementOptionalLiteral(element, "VENDOR-API-INFIX"))
|
|
802
1072
|
self.readBswImplementationVendorSpecificModuleDefRefs(element, impl)
|
|
1073
|
+
AUTOSAR.getInstance().addImplementationBehaviorMap(impl.getFullName(), impl.getBehaviorRef().getValue())
|
|
803
1074
|
|
|
804
1075
|
def readSwcImplementation(self, element: ET.Element, impl: SwcImplementation):
|
|
805
1076
|
self.logger.debug("Read SwcImplementation <%s>" % impl.getShortName())
|
|
806
1077
|
self.readImplementation(element, impl)
|
|
807
1078
|
impl.setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF"))
|
|
1079
|
+
AUTOSAR.getInstance().addImplementationBehaviorMap(impl.getFullName(), impl.getBehaviorRef().getValue())
|
|
808
1080
|
|
|
809
|
-
def
|
|
1081
|
+
def readRunnableEntityDataReceivePointByArguments(self, element, parent: RunnableEntity):
|
|
810
1082
|
self._readVariableAccesses(element, parent, "DATA-RECEIVE-POINT-BY-ARGUMENTS")
|
|
811
1083
|
|
|
812
|
-
def
|
|
1084
|
+
def readRunnableEntityDataReceivePointByValues(self, element: ET.Element, parent: RunnableEntity):
|
|
813
1085
|
self._readVariableAccesses(element, parent, "DATA-RECEIVE-POINT-BY-VALUES")
|
|
814
1086
|
|
|
815
|
-
def
|
|
1087
|
+
def readRunnableEntityDataReadAccesses(self, element: ET.Element, parent: RunnableEntity):
|
|
816
1088
|
self._readVariableAccesses(element, parent, "DATA-READ-ACCESSS")
|
|
817
1089
|
|
|
818
|
-
def
|
|
1090
|
+
def readRunnableEntityDataWriteAccesses(self, element: ET.Element, parent: RunnableEntity):
|
|
819
1091
|
self._readVariableAccesses(element, parent, "DATA-WRITE-ACCESSS")
|
|
820
1092
|
|
|
821
|
-
def
|
|
1093
|
+
def readRunnableEntityDataSendPoints(self, element: ET.Element, parent: RunnableEntity):
|
|
822
1094
|
self._readVariableAccesses(element, parent, "DATA-SEND-POINTS")
|
|
823
1095
|
|
|
824
1096
|
def getRunnableEntityArgument(self, element: ET.Element) -> RunnableEntityArgument:
|
|
@@ -834,17 +1106,17 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
834
1106
|
parameter.setLocalParameterRef(self.getChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF"))
|
|
835
1107
|
return parameter
|
|
836
1108
|
|
|
837
|
-
def
|
|
1109
|
+
def readRunnableEntityParameterAccesses(self, element: ET.Element, parent: RunnableEntity):
|
|
838
1110
|
for child_element in self.findall(element, "PARAMETER-ACCESSS/PARAMETER-ACCESS"):
|
|
839
1111
|
short_name = self.getShortName(child_element)
|
|
840
1112
|
self.logger.debug("readParameterAccesses %s" % short_name)
|
|
841
1113
|
parameter_access = parent.createParameterAccess(short_name)
|
|
842
1114
|
parameter_access.setAccessedParameter(self.getAutosarParameterRef(child_element, "ACCESSED-PARAMETER"))
|
|
843
1115
|
|
|
844
|
-
def
|
|
1116
|
+
def readRunnableEntityWrittenLocalVariables(self, element: ET.Element, parent: RunnableEntity):
|
|
845
1117
|
self._readVariableAccesses(element, parent, "WRITTEN-LOCAL-VARIABLES")
|
|
846
1118
|
|
|
847
|
-
def
|
|
1119
|
+
def readRunnableEntityReadLocalVariables(self, element: ET.Element, parent: RunnableEntity):
|
|
848
1120
|
self._readVariableAccesses(element, parent, "READ-LOCAL-VARIABLES")
|
|
849
1121
|
|
|
850
1122
|
def readROperationIRef(self, element: ET.Element, key: str, parent: ServerCallPoint):
|
|
@@ -869,7 +1141,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
869
1141
|
mode_iref = RModeInAtomicSwcInstanceRef()
|
|
870
1142
|
mode_iref.setContextPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF")) \
|
|
871
1143
|
.setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
|
|
872
|
-
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF"))
|
|
1144
|
+
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF")) # NOQA E501
|
|
873
1145
|
parent.addModeIRef(mode_iref)
|
|
874
1146
|
|
|
875
1147
|
def readSynchronousServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
|
|
@@ -888,7 +1160,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
888
1160
|
server_call_point.setTimeout(self.getChildElementOptionalFloatValue(element, "TIMEOUT"))
|
|
889
1161
|
self.readROperationIRef(element, "OPERATION-IREF", server_call_point)
|
|
890
1162
|
|
|
891
|
-
def
|
|
1163
|
+
def readRunnableEntityInternalBehaviorServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
|
|
892
1164
|
for child_element in self.findall(element, "SERVER-CALL-POINTS/*"):
|
|
893
1165
|
tag_name = self.getTagName(child_element)
|
|
894
1166
|
if tag_name == "SYNCHRONOUS-SERVER-CALL-POINT":
|
|
@@ -898,48 +1170,73 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
898
1170
|
else:
|
|
899
1171
|
self.raiseError("Unsupported server call point type <%s>" % tag_name)
|
|
900
1172
|
|
|
901
|
-
def
|
|
1173
|
+
def readRunnableEntityInternalTriggeringPoints(self, element: ET.Element, parent: RunnableEntity):
|
|
902
1174
|
for child_element in self.findall(element, "INTERNAL-TRIGGERING-POINTS/INTERNAL-TRIGGERING-POINT"):
|
|
903
1175
|
short_name = self.getShortName(child_element)
|
|
904
1176
|
point = parent.createInternalTriggeringPoint(short_name)
|
|
905
1177
|
point.sw_impl_policy = self.getChildElementOptionalLiteral(child_element, "SW-IMPL-POLICY")
|
|
906
1178
|
|
|
907
|
-
def
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
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):
|
|
925
1222
|
child_element = self.find(element, "MODE-GROUP-IREF")
|
|
926
|
-
iref = None
|
|
927
1223
|
if child_element is not None:
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
return iref
|
|
1224
|
+
instance_ref = PModeGroupInAtomicSwcInstanceRef()
|
|
1225
|
+
self.readPModeGroupInAtomicSWCInstanceRef(child_element, instance_ref)
|
|
1226
|
+
point.setModeGroupIRef(instance_ref)
|
|
932
1227
|
|
|
933
|
-
def
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
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)
|
|
943
1240
|
|
|
944
1241
|
def readRunnableEntityArguments(self, element: ET.Element, entity: RunnableEntity):
|
|
945
1242
|
for child_element in self.findall(element, "ARGUMENTS/*"):
|
|
@@ -949,7 +1246,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
949
1246
|
else:
|
|
950
1247
|
self.notImplemented("Unsupported Arguments of runnable entity <%s>" % tag_name)
|
|
951
1248
|
|
|
952
|
-
def
|
|
1249
|
+
def readRunnableEntityAsynchronousServerCallResultPoint(self, element: ET.Element, entity: RunnableEntity):
|
|
953
1250
|
for child_element in self.findall(element, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINTS/ASYNCHRONOUS-SERVER-CALL-RESULT-POINT"):
|
|
954
1251
|
point = entity.createAsynchronousServerCallResultPoint(self.getShortName(child_element))
|
|
955
1252
|
self.readIdentifiable(child_element, point)
|
|
@@ -959,38 +1256,39 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
959
1256
|
self.readExecutableEntity(element, entity)
|
|
960
1257
|
self.readRunnableEntityArguments(element, entity)
|
|
961
1258
|
|
|
962
|
-
self.
|
|
1259
|
+
self.readRunnableEntityAsynchronousServerCallResultPoint(element, entity)
|
|
963
1260
|
entity.setCanBeInvokedConcurrently(self.getChildElementOptionalBooleanValue(element, "CAN-BE-INVOKED-CONCURRENTLY"))
|
|
964
|
-
self.
|
|
965
|
-
self.
|
|
966
|
-
self.
|
|
967
|
-
self.
|
|
968
|
-
self.
|
|
969
|
-
self.
|
|
970
|
-
self.
|
|
971
|
-
self.
|
|
972
|
-
self.
|
|
973
|
-
self.
|
|
974
|
-
self.
|
|
975
|
-
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)
|
|
976
1273
|
|
|
977
1274
|
entity.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
978
1275
|
|
|
979
1276
|
def readSwcInternalBehaviorRunnables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
980
|
-
for child_element in self.findall(element, "RUNNABLES
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
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)
|
|
986
1284
|
|
|
987
1285
|
def getRModeInAtomicSwcInstanceRef(self, element: ET.Element) -> RModeInAtomicSwcInstanceRef:
|
|
988
|
-
|
|
989
|
-
|
|
1286
|
+
instance_ref = RModeInAtomicSwcInstanceRef()
|
|
1287
|
+
instance_ref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
|
|
990
1288
|
.setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
|
|
991
1289
|
.setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
|
|
992
|
-
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-DECLARATION-REF"))
|
|
993
|
-
return
|
|
1290
|
+
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-DECLARATION-REF")) # NOQA E501
|
|
1291
|
+
return instance_ref
|
|
994
1292
|
|
|
995
1293
|
def readRTEEvent(self, element: ET.Element, event: RTEEvent):
|
|
996
1294
|
self.readIdentifiable(element, event)
|
|
@@ -1005,12 +1303,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1005
1303
|
operation_iref = POperationInAtomicSwcInstanceRef()
|
|
1006
1304
|
self.readARObjectAttributes(child_element, operation_iref)
|
|
1007
1305
|
operation_iref.setContextPPortRef(self.getChildElementRefType(parent.getShortName(), child_element, "CONTEXT-P-PORT-REF")) \
|
|
1008
|
-
.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
|
|
1009
1307
|
parent.setOperationIRef(operation_iref)
|
|
1010
1308
|
|
|
1011
|
-
def readOperationInvokedEvent(self, element: ET.Element,
|
|
1012
|
-
|
|
1013
|
-
event = parent.createOperationInvokedEvent(short_name)
|
|
1309
|
+
def readOperationInvokedEvent(self, element: ET.Element, event: OperationInvokedEvent):
|
|
1310
|
+
self.logger.debug("Read OperationInvokedEvent <%s>" % event.getShortName())
|
|
1014
1311
|
self.readPOperationIRef(element, "OPERATION-IREF", event)
|
|
1015
1312
|
self.readRTEEvent(element, event)
|
|
1016
1313
|
|
|
@@ -1018,13 +1315,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1018
1315
|
self.readAutosarDataPrototype(element, prototype)
|
|
1019
1316
|
prototype.setInitValue(self.getInitValue(element))
|
|
1020
1317
|
|
|
1021
|
-
def
|
|
1318
|
+
def readSwcInternalBehaviorExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
1022
1319
|
for child_element in self.findall(element, "EXPLICIT-INTER-RUNNABLE-VARIABLES/VARIABLE-DATA-PROTOTYPE"):
|
|
1023
1320
|
short_name = self.getShortName(child_element)
|
|
1024
1321
|
prototype = parent.createExplicitInterRunnableVariable(short_name)
|
|
1025
1322
|
self.readVariableDataPrototype(child_element, prototype)
|
|
1026
1323
|
|
|
1027
|
-
def
|
|
1324
|
+
def readSwcInternalBehaviorPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1028
1325
|
for child_element in self.findall(element, "PER-INSTANCE-MEMORYS/PER-INSTANCE-MEMORY"):
|
|
1029
1326
|
short_name = self.getShortName(child_element)
|
|
1030
1327
|
memory = behavior.createPerInstanceMemory(short_name)
|
|
@@ -1039,11 +1336,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1039
1336
|
prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
|
|
1040
1337
|
|
|
1041
1338
|
def readParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
|
|
1042
|
-
self.readIdentifiable(element, prototype)
|
|
1043
1339
|
self.readAutosarDataPrototype(element, prototype)
|
|
1044
1340
|
prototype.setInitValue(self.getInitValue(element))
|
|
1045
1341
|
|
|
1046
|
-
def
|
|
1342
|
+
def readSwcInternalBehaviorPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1047
1343
|
for child_element in self.findall(element, "PER-INSTANCE-PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
1048
1344
|
short_name = self.getShortName(child_element)
|
|
1049
1345
|
prototype = behavior.createPerInstanceParameter(short_name)
|
|
@@ -1057,7 +1353,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1057
1353
|
argument_value.setValueTypeTRef(self.getChildElementOptionalRefType(element, "VALUE-TYPE-TREF"))
|
|
1058
1354
|
return argument_value
|
|
1059
1355
|
|
|
1060
|
-
def
|
|
1356
|
+
def readSwcInternalBehaviorPortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1061
1357
|
for child_element in self.findall(element, "PORT-API-OPTIONS/PORT-API-OPTION"):
|
|
1062
1358
|
option = PortAPIOption()
|
|
1063
1359
|
option.setEnableTakeAddress(self.getChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS")) \
|
|
@@ -1068,60 +1364,76 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1068
1364
|
option.addPortArgValue(self.readPortDefinedArgumentValue(argument_value_tag))
|
|
1069
1365
|
behavior.addPortAPIOption(option)
|
|
1070
1366
|
|
|
1071
|
-
def readTimingEvent(self, element: ET.Element,
|
|
1072
|
-
|
|
1073
|
-
event = parent.createTimingEvent(short_name)
|
|
1367
|
+
def readTimingEvent(self, element: ET.Element, event: TimingEvent):
|
|
1368
|
+
self.logger.debug("Read TimingEvent <%s>" % event.getShortName())
|
|
1074
1369
|
self.readRTEEvent(element, event)
|
|
1075
1370
|
event.setOffset(self.getChildElementOptionalTimeValue(element, "OFFSET")) \
|
|
1076
1371
|
.setPeriod(self.getChildElementOptionalTimeValue(element, "PERIOD"))
|
|
1077
1372
|
|
|
1078
|
-
def readDataReceivedEvent(self, element: ET.Element,
|
|
1079
|
-
|
|
1080
|
-
event = parent.createDataReceivedEvent(short_name)
|
|
1373
|
+
def readDataReceivedEvent(self, element: ET.Element, event: DataReceivedEvent):
|
|
1374
|
+
self.logger.debug("Read DataReceivedEvent <%s>" % event.getShortName())
|
|
1081
1375
|
self.readRTEEvent(element, event)
|
|
1082
1376
|
self.readRVariableInAtomicSwcInstanceRef(element, event)
|
|
1083
1377
|
|
|
1084
|
-
def readSwcModeSwitchEvent(self, element: ET.Element,
|
|
1085
|
-
|
|
1086
|
-
event = parent.createSwcModeSwitchEvent(short_name)
|
|
1378
|
+
def readSwcModeSwitchEvent(self, element: ET.Element, event: SwcModeSwitchEvent):
|
|
1379
|
+
self.logger.debug("Read SwcModeSwitchEvent <%s>" % event.getShortName())
|
|
1087
1380
|
self.readRTEEvent(element, event)
|
|
1088
1381
|
event.setActivation(self.getChildElementOptionalLiteral(element, "ACTIVATION"))
|
|
1089
1382
|
self.readRModeInAtomicSwcInstanceRef(element, event)
|
|
1090
1383
|
|
|
1091
|
-
def readInternalTriggerOccurredEvent(self, element: ET.Element,
|
|
1092
|
-
|
|
1093
|
-
event = parent.createInternalTriggerOccurredEvent(short_name)
|
|
1384
|
+
def readInternalTriggerOccurredEvent(self, element: ET.Element, event: InternalTriggerOccurredEvent):
|
|
1385
|
+
self.logger.debug("Read InternalTriggerOccurredEvent <%s>" % event.getShortName())
|
|
1094
1386
|
self.readRTEEvent(element, event)
|
|
1095
1387
|
event.setEventSourceRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
|
|
1096
1388
|
|
|
1097
|
-
def readInitEvent(self, element,
|
|
1098
|
-
|
|
1099
|
-
event = parent.createInitEvent(short_name)
|
|
1389
|
+
def readInitEvent(self, element, event: InitEvent):
|
|
1390
|
+
self.logger.debug("Read InitEvent <%s>" % event.getShortName())
|
|
1100
1391
|
self.readRTEEvent(element, event)
|
|
1101
1392
|
|
|
1102
|
-
def readAsynchronousServerCallReturnsEvent(self, element,
|
|
1103
|
-
|
|
1104
|
-
event = parent.createAsynchronousServerCallReturnsEvent(short_name)
|
|
1393
|
+
def readAsynchronousServerCallReturnsEvent(self, element, event: AsynchronousServerCallReturnsEvent):
|
|
1394
|
+
self.logger.debug("Read AsynchronousServerCallReturnsEvent <%s>" % event.getShortName())
|
|
1105
1395
|
self.readRTEEvent(element, event)
|
|
1106
1396
|
event.setActivationReasonRepresentationRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
|
|
1107
1397
|
|
|
1398
|
+
def readModeSwitchedAckEvent(self, element, event: ModeSwitchedAckEvent):
|
|
1399
|
+
self.logger.debug("Read ModeSwitchedAckEvent <%s>" % event.getShortName())
|
|
1400
|
+
self.readRTEEvent(element, event)
|
|
1401
|
+
event.setEventSourceRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
|
|
1402
|
+
|
|
1403
|
+
def readBackgroundEvent(self, element, event: BackgroundEvent):
|
|
1404
|
+
self.logger.debug("Read BackgroundEvent <%s>" % event.getShortName())
|
|
1405
|
+
self.readRTEEvent(element, event)
|
|
1406
|
+
|
|
1108
1407
|
def readSwcInternalBehaviorEvents(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
1109
1408
|
for child_element in self.findall(element, "EVENTS/*"):
|
|
1110
1409
|
tag_name = self.getTagName(child_element)
|
|
1111
1410
|
if tag_name == "TIMING-EVENT":
|
|
1112
|
-
self.
|
|
1411
|
+
event = parent.createTimingEvent(self.getShortName(child_element))
|
|
1412
|
+
self.readTimingEvent(child_element, event)
|
|
1113
1413
|
elif tag_name == "SWC-MODE-SWITCH-EVENT":
|
|
1114
|
-
self.
|
|
1414
|
+
event = parent.createSwcModeSwitchEvent(self.getShortName(child_element))
|
|
1415
|
+
self.readSwcModeSwitchEvent(child_element, event)
|
|
1115
1416
|
elif tag_name == "OPERATION-INVOKED-EVENT":
|
|
1116
|
-
self.
|
|
1417
|
+
event = parent.createOperationInvokedEvent(self.getShortName(child_element))
|
|
1418
|
+
self.readOperationInvokedEvent(child_element, event)
|
|
1117
1419
|
elif tag_name == "DATA-RECEIVED-EVENT":
|
|
1118
|
-
self.
|
|
1420
|
+
event = parent.createDataReceivedEvent(self.getShortName(child_element))
|
|
1421
|
+
self.readDataReceivedEvent(child_element, event)
|
|
1119
1422
|
elif tag_name == "INTERNAL-TRIGGER-OCCURRED-EVENT":
|
|
1120
|
-
self.
|
|
1423
|
+
event = parent.createInternalTriggerOccurredEvent(self.getShortName(child_element))
|
|
1424
|
+
self.readInternalTriggerOccurredEvent(child_element, event)
|
|
1121
1425
|
elif tag_name == "INIT-EVENT":
|
|
1122
|
-
self.
|
|
1426
|
+
event = parent.createInitEvent(self.getShortName(child_element))
|
|
1427
|
+
self.readInitEvent(child_element, event)
|
|
1123
1428
|
elif tag_name == "ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT":
|
|
1124
|
-
self.
|
|
1429
|
+
event = parent.createAsynchronousServerCallReturnsEvent(self.getShortName(child_element))
|
|
1430
|
+
self.readAsynchronousServerCallReturnsEvent(child_element, event)
|
|
1431
|
+
elif tag_name == "MODE-SWITCHED-ACK-EVENT":
|
|
1432
|
+
event = parent.createModeSwitchedAckEvent(self.getShortName(child_element))
|
|
1433
|
+
self.readModeSwitchedAckEvent(child_element, event)
|
|
1434
|
+
elif tag_name == "BACKGROUND-EVENT":
|
|
1435
|
+
event = parent.createBackgroundEvent(self.getShortName(child_element))
|
|
1436
|
+
self.readBackgroundEvent(child_element, event)
|
|
1125
1437
|
else:
|
|
1126
1438
|
self.notImplemented("Unsupported SwcInternalBehavior Event <%s>" % tag_name)
|
|
1127
1439
|
|
|
@@ -1146,7 +1458,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1146
1458
|
self.readARObjectAttributes(element, specific)
|
|
1147
1459
|
specific.value = element.text
|
|
1148
1460
|
if 'L' in element.attrib:
|
|
1149
|
-
specific.l = element.attrib['L']
|
|
1461
|
+
specific.l = element.attrib['L'] # noqa E741
|
|
1150
1462
|
|
|
1151
1463
|
def getLParagraphs(self, element: ET.Element, key: str) -> List[LParagraph]:
|
|
1152
1464
|
results = []
|
|
@@ -1155,7 +1467,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1155
1467
|
self.readLanguageSpecific(child_element, l1)
|
|
1156
1468
|
results.append(l1)
|
|
1157
1469
|
return results
|
|
1158
|
-
|
|
1470
|
+
|
|
1159
1471
|
def getMultiLanguageParagraphs(self, element: ET.Element, key: str) -> List[MultiLanguageParagraph]:
|
|
1160
1472
|
paragraphs = []
|
|
1161
1473
|
for child_element in self.findall(element, key):
|
|
@@ -1186,7 +1498,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1186
1498
|
for block in self.getDocumentationBlockList(child_element, "ITEM"):
|
|
1187
1499
|
list.addItem(block)
|
|
1188
1500
|
result.append(list)
|
|
1189
|
-
return result
|
|
1501
|
+
return result
|
|
1190
1502
|
|
|
1191
1503
|
def getMultiLanguagePlainText(self, element: ET.Element, key: str) -> MultiLanguagePlainText:
|
|
1192
1504
|
paragraph = None
|
|
@@ -1228,10 +1540,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1228
1540
|
|
|
1229
1541
|
def getAnnotations(self, element: ET.Element) -> List[Annotation]:
|
|
1230
1542
|
annotations = []
|
|
1231
|
-
for child_element in self.findall(element, "ANNOTATIONS
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
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)
|
|
1235
1551
|
return annotations
|
|
1236
1552
|
|
|
1237
1553
|
def getSwAxisIndividual(self, element: ET.Element) -> SwAxisIndividual:
|
|
@@ -1300,12 +1616,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1300
1616
|
.setSwPointerTargetProps(self.getSwPointerTargetProps(conditional_tag, "SW-POINTER-TARGET-PROPS")) \
|
|
1301
1617
|
.setSwRecordLayoutRef(self.getChildElementOptionalRefType(conditional_tag, "SW-RECORD-LAYOUT-REF")) \
|
|
1302
1618
|
.setValueAxisDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "VALUE-AXIS-DATA-TYPE-REF")) \
|
|
1303
|
-
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1619
|
+
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1304
1620
|
self.readSwDataDefProsInvalidValue(conditional_tag, sw_data_def_props)
|
|
1305
|
-
#self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
1621
|
+
# self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
1306
1622
|
self.readARObjectAttributes(conditional_tag, sw_data_def_props.conditional)
|
|
1307
1623
|
return sw_data_def_props
|
|
1308
|
-
|
|
1624
|
+
|
|
1309
1625
|
def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
1310
1626
|
self.readIdentifiable(element, data_type)
|
|
1311
1627
|
data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
@@ -1314,22 +1630,24 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1314
1630
|
self.logger.debug("Read ApplicationPrimitiveDataType <%s>" % data_type.getShortName())
|
|
1315
1631
|
self.readAutosarDataType(element, data_type)
|
|
1316
1632
|
|
|
1317
|
-
def
|
|
1318
|
-
|
|
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)
|
|
1319
1636
|
|
|
1320
|
-
def
|
|
1321
|
-
for child_element in self.findall(element, "ELEMENTS
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
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)
|
|
1327
1645
|
|
|
1328
1646
|
def readApplicationRecordDataType(self, element: ET.Element, data_type: ApplicationRecordDataType):
|
|
1329
1647
|
self.logger.debug("Read ApplicationRecordDataType <%s>" % data_type.getShortName())
|
|
1330
1648
|
self.readIdentifiable(element, data_type)
|
|
1331
1649
|
data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
1332
|
-
self.
|
|
1650
|
+
self.readApplicationRecordDataTypeElements(element, data_type)
|
|
1333
1651
|
|
|
1334
1652
|
def readImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
|
|
1335
1653
|
for child_element in self.findall(element, "SUB-ELEMENTS/IMPLEMENTATION-DATA-TYPE-ELEMENT"):
|
|
@@ -1361,7 +1679,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1361
1679
|
self.readIdentifiable(element, data_type)
|
|
1362
1680
|
self.readBaseTypeDirectDefinition(element, data_type.getBaseTypeDefinition())
|
|
1363
1681
|
|
|
1364
|
-
def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key:str)
|
|
1682
|
+
def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key: str) \
|
|
1683
|
+
-> ApplicationCompositeElementInPortInterfaceInstanceRef:
|
|
1365
1684
|
child_element = self.find(element, key)
|
|
1366
1685
|
iref = None
|
|
1367
1686
|
if child_element is not None:
|
|
@@ -1431,7 +1750,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1431
1750
|
value_spec = None
|
|
1432
1751
|
child_element = self.find(element, "INIT-VALUE/*")
|
|
1433
1752
|
if child_element is not None:
|
|
1434
|
-
self.logger.debug("getInitValue")
|
|
1435
1753
|
value_spec = self.getValueSpecification(child_element, self.getTagName(child_element))
|
|
1436
1754
|
return value_spec
|
|
1437
1755
|
|
|
@@ -1465,7 +1783,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1465
1783
|
|
|
1466
1784
|
def getNonqueuedReceiverComSpec(self, element: ET.Element) -> NonqueuedReceiverComSpec:
|
|
1467
1785
|
com_spec = NonqueuedReceiverComSpec()
|
|
1468
|
-
self.readARObjectAttributes(element, com_spec)
|
|
1786
|
+
self.readARObjectAttributes(element, com_spec)
|
|
1469
1787
|
self.readReceiverComSpec(element, com_spec)
|
|
1470
1788
|
com_spec.setAliveTimeout(self.getChildElementOptionalFloatValue(element, "ALIVE-TIMEOUT")) \
|
|
1471
1789
|
.setEnableUpdated(self.getChildElementOptionalBooleanValue(element, "ENABLE-UPDATE")) \
|
|
@@ -1494,10 +1812,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1494
1812
|
def readAbstractRequiredPortPrototype(self, element: ET.Element, prototype: AbstractRequiredPortPrototype):
|
|
1495
1813
|
self.readProvidedComSpec(element, prototype)
|
|
1496
1814
|
|
|
1497
|
-
def readPPortPrototype(self, element: ET.Element,
|
|
1498
|
-
|
|
1499
|
-
self.logger.debug("readPPortPrototype %s" % short_name)
|
|
1500
|
-
prototype = parent.createPPortPrototype(short_name)
|
|
1815
|
+
def readPPortPrototype(self, element: ET.Element, prototype: PPortPrototype):
|
|
1816
|
+
self.logger.debug("Read PPortPrototype %s" % prototype.getShortName())
|
|
1501
1817
|
self.readIdentifiable(element, prototype)
|
|
1502
1818
|
self.readAbstractRequiredPortPrototype(element, prototype)
|
|
1503
1819
|
prototype.setProvidedInterfaceTRef(self.getChildElementOptionalRefType(element, "PROVIDED-INTERFACE-TREF"))
|
|
@@ -1505,34 +1821,33 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1505
1821
|
def readAbstractProvidedPortPrototype(self, element: ET.Element, prototype: AbstractProvidedPortPrototype):
|
|
1506
1822
|
self.readRequiredComSpec(element, prototype)
|
|
1507
1823
|
|
|
1508
|
-
def readRPortPrototype(self, element: ET.Element,
|
|
1509
|
-
|
|
1510
|
-
self.logger.debug("read RPortPrototype %s" % short_name)
|
|
1511
|
-
prototype = parent.createRPortPrototype(short_name)
|
|
1824
|
+
def readRPortPrototype(self, element: ET.Element, prototype: RPortPrototype):
|
|
1825
|
+
self.logger.debug("Read RPortPrototype %s" % prototype.getShortName())
|
|
1512
1826
|
self.readIdentifiable(element, prototype)
|
|
1513
1827
|
self.readAbstractProvidedPortPrototype(element, prototype)
|
|
1514
1828
|
prototype.setRequiredInterfaceTRef(self.getChildElementOptionalRefType(element, "REQUIRED-INTERFACE-TREF"))
|
|
1515
1829
|
|
|
1516
|
-
def readPRPortPrototype(self, element: ET.Element,
|
|
1517
|
-
|
|
1518
|
-
self.logger.debug("read PRPortPrototype %s" % short_name)
|
|
1519
|
-
prototype = parent.createPRPortPrototype(short_name)
|
|
1830
|
+
def readPRPortPrototype(self, element: ET.Element, prototype: PRPortPrototype):
|
|
1831
|
+
self.logger.debug("Read PRPortPrototype %s" % prototype.getShortName())
|
|
1520
1832
|
self.readIdentifiable(element, prototype)
|
|
1521
1833
|
self.readAbstractRequiredPortPrototype(element, prototype)
|
|
1522
1834
|
self.readAbstractProvidedPortPrototype(element, prototype)
|
|
1523
1835
|
prototype.setProvidedRequiredInterface(self.getChildElementOptionalRefType(element, "PROVIDED-REQUIRED-INTERFACE-TREF"))
|
|
1524
1836
|
|
|
1525
|
-
def
|
|
1837
|
+
def readSwComponentTypePorts(self, element: ET.Element, sw_component: SwComponentType):
|
|
1526
1838
|
for child_element in self.findall(element, "PORTS/*"):
|
|
1527
1839
|
tag_name = self.getTagName(child_element)
|
|
1528
1840
|
if tag_name == "P-PORT-PROTOTYPE":
|
|
1529
|
-
self.
|
|
1841
|
+
prototype = sw_component.createPPortPrototype(self.getShortName(child_element))
|
|
1842
|
+
self.readPPortPrototype(child_element, prototype)
|
|
1530
1843
|
elif tag_name == "R-PORT-PROTOTYPE":
|
|
1531
|
-
self.
|
|
1844
|
+
prototype = sw_component.createRPortPrototype(self.getShortName(child_element))
|
|
1845
|
+
self.readRPortPrototype(child_element, prototype)
|
|
1532
1846
|
elif tag_name == "PR-PORT-PROTOTYPE":
|
|
1533
|
-
self.
|
|
1847
|
+
prototype = sw_component.createPRPortPrototype(self.getShortName(child_element))
|
|
1848
|
+
self.readPRPortPrototype(child_element, prototype)
|
|
1534
1849
|
else:
|
|
1535
|
-
self.
|
|
1850
|
+
self.notImplemented("Unsupported Port Prototype <%s>" % tag_name)
|
|
1536
1851
|
|
|
1537
1852
|
def readTransmissionAcknowledgementRequest(self, element: ET.Element) -> TransmissionAcknowledgementRequest:
|
|
1538
1853
|
child_element = self.find(element, "TRANSMISSION-ACKNOWLEDGE")
|
|
@@ -1543,7 +1858,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1543
1858
|
return acknowledge
|
|
1544
1859
|
return None
|
|
1545
1860
|
|
|
1546
|
-
def readSenderComSpec(self, element:ET.Element, com_spec: SenderComSpec):
|
|
1861
|
+
def readSenderComSpec(self, element: ET.Element, com_spec: SenderComSpec):
|
|
1547
1862
|
self.readARObjectAttributes(element, com_spec)
|
|
1548
1863
|
for child_element in self.findall(element, "COMPOSITE-NETWORK-REPRESENTATIONS/COMPOSITE-NETWORK-REPRESENTATION"):
|
|
1549
1864
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
@@ -1553,27 +1868,36 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1553
1868
|
.setTransmissionAcknowledge(self.readTransmissionAcknowledgementRequest(element)) \
|
|
1554
1869
|
.setUsesEndToEndProtection(self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION"))
|
|
1555
1870
|
|
|
1556
|
-
def getNonqueuedSenderComSpec(self, element) -> NonqueuedSenderComSpec:
|
|
1871
|
+
def getNonqueuedSenderComSpec(self, element: ET.Element) -> NonqueuedSenderComSpec:
|
|
1557
1872
|
com_spec = NonqueuedSenderComSpec()
|
|
1558
1873
|
self.readSenderComSpec(element, com_spec)
|
|
1559
1874
|
com_spec.setInitValue(self.getInitValue(element))
|
|
1560
1875
|
return com_spec
|
|
1561
1876
|
|
|
1562
|
-
def getServerComSpec(self, element) -> ServerComSpec:
|
|
1877
|
+
def getServerComSpec(self, element: ET.Element) -> ServerComSpec:
|
|
1563
1878
|
com_spec = ServerComSpec()
|
|
1564
1879
|
self.readARObjectAttributes(element, com_spec)
|
|
1565
1880
|
com_spec.setOperationRef(self.getChildElementOptionalRefType(element, "OPERATION-REF")) \
|
|
1566
1881
|
.setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
|
|
1567
1882
|
return com_spec
|
|
1568
1883
|
|
|
1569
|
-
def getQueuedSenderComSpec(self, element) -> QueuedSenderComSpec:
|
|
1884
|
+
def getQueuedSenderComSpec(self, element: ET.Element) -> QueuedSenderComSpec:
|
|
1570
1885
|
com_spec = QueuedSenderComSpec()
|
|
1571
1886
|
self.readSenderComSpec(element, com_spec)
|
|
1572
1887
|
return com_spec
|
|
1573
1888
|
|
|
1889
|
+
def getModeSwitchedAckRequest(self, element: ET.Element, key: str) -> ModeSwitchedAckRequest:
|
|
1890
|
+
request = None
|
|
1891
|
+
child_element = self.find(element, key)
|
|
1892
|
+
if child_element is not None:
|
|
1893
|
+
request = ModeSwitchedAckRequest()
|
|
1894
|
+
request.setTimeout(self.getChildElementOptionalTimeValue(child_element, "TIMEOUT"))
|
|
1895
|
+
return request
|
|
1896
|
+
|
|
1574
1897
|
def getModeSwitchSenderComSpec(self, element) -> ModeSwitchSenderComSpec:
|
|
1575
1898
|
com_spec = ModeSwitchSenderComSpec()
|
|
1576
1899
|
com_spec.setModeGroupRef(self.getChildElementOptionalRefType(element, "MODE-GROUP-REF")) \
|
|
1900
|
+
.setModeSwitchedAck(self.getModeSwitchedAckRequest(element, "MODE-SWITCHED-ACK")) \
|
|
1577
1901
|
.setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
|
|
1578
1902
|
return com_spec
|
|
1579
1903
|
|
|
@@ -1594,7 +1918,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1594
1918
|
def readPortGroupInnerGroupIRefs(self, element: ET.Element, parent: PortGroup):
|
|
1595
1919
|
for child_element in self.findall(element, "INNER-GROUP-IREFS/INNER-GROUP-IREF"):
|
|
1596
1920
|
inner_group_iref = InnerPortGroupInCompositionInstanceRef()
|
|
1597
|
-
#inner_group_iref.contextRef = self.getChildElementOptionalRefType(child_element, "CONTEXT-REF")
|
|
1921
|
+
# inner_group_iref.contextRef = self.getChildElementOptionalRefType(child_element, "CONTEXT-REF")
|
|
1598
1922
|
inner_group_iref.setTargetRef(self.getChildElementOptionalRefType(child_element, "TARGET-REF"))
|
|
1599
1923
|
parent.addInnerGroupIRef(inner_group_iref)
|
|
1600
1924
|
|
|
@@ -1620,12 +1944,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1620
1944
|
|
|
1621
1945
|
def readSwComponentType(self, element: ET.Element, parent: SwComponentType):
|
|
1622
1946
|
self.readIdentifiable(element, parent)
|
|
1623
|
-
self.
|
|
1947
|
+
self.readSwComponentTypePorts(element, parent)
|
|
1624
1948
|
self.readSwComponentTypePortGroups(element, parent)
|
|
1625
1949
|
|
|
1626
1950
|
def readAtomicSwComponentType(self, element, parent: AtomicSwComponentType):
|
|
1627
1951
|
self.readSwComponentType(element, parent)
|
|
1628
|
-
self.
|
|
1952
|
+
self.readAtomicSwComponentTypeSwcInternalBehavior(element, parent)
|
|
1629
1953
|
|
|
1630
1954
|
def readEcuAbstractionSwComponentType(self, element, sw_component: EcuAbstractionSwComponentType):
|
|
1631
1955
|
self.logger.debug("Read EcuAbstractionSwComponentType <%s>" % sw_component.getShortName())
|
|
@@ -1653,9 +1977,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1653
1977
|
|
|
1654
1978
|
self.logger.debug("PPortInCompositionInstanceRef")
|
|
1655
1979
|
self.logger.debug(" CONTEXT-COMPONENT-REF DEST: %s, %s"
|
|
1656
|
-
% (p_port_in_composition_instance_ref.getContextComponentRef().getDest(),
|
|
1657
|
-
|
|
1658
|
-
|
|
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()))
|
|
1659
1985
|
|
|
1660
1986
|
def readRPortInCompositionInstanceRef(self, element, r_port_in_composition_instance_ref: RPortInCompositionInstanceRef):
|
|
1661
1987
|
r_port_in_composition_instance_ref.setContextComponentRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPONENT-REF")) \
|
|
@@ -1663,9 +1989,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1663
1989
|
|
|
1664
1990
|
self.logger.debug("RPortInCompositionInstanceRef")
|
|
1665
1991
|
self.logger.debug(" CONTEXT-COMPONENT-REF DEST: %s, %s"
|
|
1666
|
-
% (r_port_in_composition_instance_ref.getContextComponentRef().getDest(),
|
|
1667
|
-
|
|
1668
|
-
|
|
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()))
|
|
1669
1997
|
|
|
1670
1998
|
def readAssemblySwConnectorProviderIRef(self, element: ET.Element, parent: AssemblySwConnector):
|
|
1671
1999
|
child_element = self.find(element, "PROVIDER-IREF")
|
|
@@ -1683,16 +2011,27 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1683
2011
|
self.readRPortInCompositionInstanceRef(child_element, requester_iref)
|
|
1684
2012
|
parent.setRequesterIRef(requester_iref)
|
|
1685
2013
|
|
|
1686
|
-
def
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
2014
|
+
def readSwConnector(self, element: ET.Element, connector: SwConnector):
|
|
2015
|
+
self.readIdentifiable(element, connector)
|
|
2016
|
+
connector.setMappingRef(self.getChildElementOptionalRefType(element, "MAPPING-REF"))
|
|
2017
|
+
|
|
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)
|
|
1690
2023
|
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
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)
|
|
1696
2035
|
|
|
1697
2036
|
def readDelegationSwConnectorInnerPortIRef(self, element, parent: DelegationSwConnector):
|
|
1698
2037
|
inner_port_iref_element = self.find(element, "INNER-PORT-IREF")
|
|
@@ -1713,45 +2052,45 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1713
2052
|
|
|
1714
2053
|
self.raiseError("Unsupported child element of INNER-PORT-IREF")
|
|
1715
2054
|
|
|
1716
|
-
def
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
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)
|
|
1720
2059
|
|
|
1721
|
-
|
|
1722
|
-
self.
|
|
1723
|
-
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")
|
|
1724
2062
|
|
|
1725
|
-
|
|
1726
|
-
|
|
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()))
|
|
1727
2065
|
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
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"))
|
|
1731
2070
|
|
|
1732
|
-
def
|
|
1733
|
-
for child_element in
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
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)
|
|
1739
2079
|
|
|
1740
2080
|
def readCompositionSwComponentTypeDataTypeMappingSet(self, element: ET.Element, parent: CompositionSwComponentType):
|
|
1741
|
-
child_element =
|
|
2081
|
+
child_element = self.find(element, "DATA-TYPE-MAPPING-REFS")
|
|
1742
2082
|
self.logger.debug("readDataTypeMappingSet")
|
|
1743
2083
|
if child_element is not None:
|
|
1744
|
-
for ref in self.getChildElementRefTypeList(child_element, "
|
|
2084
|
+
for ref in self.getChildElementRefTypeList(child_element, "DATA-TYPE-MAPPING-REF"):
|
|
1745
2085
|
parent.addDataTypeMapping(ref)
|
|
1746
2086
|
|
|
1747
2087
|
def readCompositionSwComponentType(self, element: ET.Element, type: CompositionSwComponentType):
|
|
1748
2088
|
self.logger.debug("Read CompositionSwComponentType: <%s>" % type.getShortName())
|
|
1749
|
-
self.readIdentifiable(element, type)
|
|
1750
2089
|
self.readSwComponentType(element, type)
|
|
1751
|
-
self.
|
|
1752
|
-
self.
|
|
1753
|
-
self.readDelegationSwConnectors(element, type)
|
|
2090
|
+
self.readCompositionSwComponentTypeComponents(element, type)
|
|
2091
|
+
self.readCompositionSwComponentTypeSwConnectors(element, type)
|
|
1754
2092
|
self.readCompositionSwComponentTypeDataTypeMappingSet(element, type)
|
|
2093
|
+
AUTOSAR.getInstance().addCompositionSwComponentType(type)
|
|
1755
2094
|
|
|
1756
2095
|
def readDataTypeMaps(self, element: ET.Element, parent: DataTypeMappingSet):
|
|
1757
2096
|
for child_element in element.findall("./xmlns:DATA-TYPE-MAPS/xmlns:DATA-TYPE-MAP", self.nsmap):
|
|
@@ -1778,13 +2117,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1778
2117
|
self.readModeRequestTypeMaps(element, mapping_set)
|
|
1779
2118
|
|
|
1780
2119
|
def readSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1781
|
-
for child_element in self.findall(element, "DATA-ELEMENTS
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
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)
|
|
1788
2129
|
|
|
1789
2130
|
def readSenderReceiverInterfaceInvalidationPolicies(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1790
2131
|
for child_element in self.findall(element, "INVALIDATION-POLICYS/INVALIDATION-POLICY"):
|
|
@@ -1808,16 +2149,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1808
2149
|
self.readSenderReceiverInterfaceDataElements(element, sr_interface)
|
|
1809
2150
|
self.readSenderReceiverInterfaceInvalidationPolicies(element, sr_interface)
|
|
1810
2151
|
|
|
1811
|
-
def
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
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)
|
|
1821
2165
|
|
|
1822
2166
|
def readPossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
|
|
1823
2167
|
child_element = self.find(element, "POSSIBLE-ERROR-REFS")
|
|
@@ -1825,41 +2169,53 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1825
2169
|
for ref in self.getChildElementRefTypeList(child_element, "POSSIBLE-ERROR-REF"):
|
|
1826
2170
|
parent.addPossibleErrorRef(ref)
|
|
1827
2171
|
|
|
1828
|
-
def
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
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)
|
|
1835
2185
|
|
|
1836
2186
|
def readPossibleErrors(self, element: ET.Element, parent: ClientServerInterface):
|
|
1837
2187
|
for child_element in self.findall(element, "POSSIBLE-ERRORS/APPLICATION-ERROR"):
|
|
1838
2188
|
short_name = self.getShortName(child_element)
|
|
1839
2189
|
error = parent.createApplicationError(short_name)
|
|
1840
|
-
self.readIdentifiable(child_element, error)
|
|
2190
|
+
self.readIdentifiable(child_element, error) # some errors has its uuid
|
|
1841
2191
|
error.error_code = self.getChildElementOptionalNumericalValue(child_element, "ERROR-CODE")
|
|
1842
2192
|
|
|
1843
2193
|
def readPortInterface(self, element: ET.Element, port_interface: PortInterface):
|
|
1844
2194
|
self.readIdentifiable(element, port_interface)
|
|
1845
|
-
port_interface.
|
|
1846
|
-
|
|
2195
|
+
port_interface.setIsService(self.getChildElementOptionalBooleanValue(element, "IS-SERVICE"))\
|
|
2196
|
+
.setServiceKind(self.getChildElementOptionalLiteral(element, "SERVICE-KIND"))
|
|
1847
2197
|
|
|
1848
2198
|
def readParameterInterfaceParameters(self, element: ET.Element, param_interface: ParameterInterface):
|
|
1849
|
-
for child_element in self.findall(element, "PARAMETERS
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
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)
|
|
1853
2209
|
|
|
1854
|
-
def readParameterInterface(self, element: ET.Element,
|
|
1855
|
-
self.logger.debug("Read ParameterInterface <%s>" %
|
|
1856
|
-
self.
|
|
1857
|
-
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)
|
|
1858
2214
|
|
|
1859
2215
|
def readClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
|
|
1860
2216
|
self.logger.debug("Read readClientServerInterface <%s>" % cs_interface.getShortName())
|
|
1861
2217
|
self.readPortInterface(element, cs_interface)
|
|
1862
|
-
self.
|
|
2218
|
+
self.readClientServerInterfaceOperations(element, cs_interface)
|
|
1863
2219
|
self.readPossibleErrors(element, cs_interface)
|
|
1864
2220
|
|
|
1865
2221
|
def getCompuConstContent(self, element: ET.Element) -> CompuConstContent:
|
|
@@ -1921,6 +2277,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1921
2277
|
self.readCompuConst(element, parent)
|
|
1922
2278
|
self.readCompuRationCoeffs(element, parent)
|
|
1923
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
|
+
|
|
1924
2289
|
def getCompuScales(self, element: ET.Element) -> CompuScales:
|
|
1925
2290
|
compu_scales = None
|
|
1926
2291
|
compu_scales_tag = self.find(element, "COMPU-SCALES")
|
|
@@ -1928,12 +2293,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1928
2293
|
compu_scales = CompuScales()
|
|
1929
2294
|
for child_element in self.findall(compu_scales_tag, 'COMPU-SCALE'):
|
|
1930
2295
|
compu_scale = CompuScale()
|
|
1931
|
-
self.
|
|
1932
|
-
compu_scale.setLowerLimit(self.getChildLimitElement(child_element, "LOWER-LIMIT")) \
|
|
1933
|
-
.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
1934
|
-
.setSymbol(self.getChildElementOptionalLiteral(child_element, "SYMBOL")) \
|
|
1935
|
-
.setUpperLimit(self.getChildLimitElement(child_element, "UPPER-LIMIT"))
|
|
1936
|
-
self.readCompuScaleContents(child_element, compu_scale)
|
|
2296
|
+
self.readCompuScale(child_element, compu_scale)
|
|
1937
2297
|
compu_scales.addCompuScale(compu_scale)
|
|
1938
2298
|
return compu_scales
|
|
1939
2299
|
|
|
@@ -1943,7 +2303,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1943
2303
|
if (child_element is not None):
|
|
1944
2304
|
compu = Compu()
|
|
1945
2305
|
self.readARObjectAttributes(child_element, compu)
|
|
1946
|
-
compu.setCompuContent(self.getCompuScales(child_element))
|
|
2306
|
+
compu.setCompuContent(self.getCompuScales(child_element))
|
|
1947
2307
|
compu.setCompuDefaultValue(self.getCompuConst(child_element, "COMPU-DEFAULT-VALUE"))
|
|
1948
2308
|
return compu
|
|
1949
2309
|
|
|
@@ -1971,10 +2331,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1971
2331
|
def readValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
|
|
1972
2332
|
self.readARObjectAttributes(element, value_spec)
|
|
1973
2333
|
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
|
|
1974
|
-
self.logger.debug("
|
|
2334
|
+
# self.logger.debug("read ValueSpecification")
|
|
1975
2335
|
|
|
1976
2336
|
def getApplicationValueSpecification(self, element: ET.Element) -> ApplicationValueSpecification:
|
|
1977
|
-
self.logger.debug("getApplicationValueSpecification")
|
|
1978
2337
|
value_spec = ApplicationValueSpecification()
|
|
1979
2338
|
self.readValueSpecification(element, value_spec)
|
|
1980
2339
|
value_spec.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
@@ -1983,7 +2342,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1983
2342
|
return value_spec
|
|
1984
2343
|
|
|
1985
2344
|
def getNumericalValueSpecification(self, element: ET.Element) -> NumericalValueSpecification:
|
|
1986
|
-
self.logger.debug("getNumericalValueSpecification")
|
|
1987
2345
|
value_spec = NumericalValueSpecification()
|
|
1988
2346
|
self.readValueSpecification(element, value_spec)
|
|
1989
2347
|
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
@@ -2012,7 +2370,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2012
2370
|
value_spec = ConstantReference()
|
|
2013
2371
|
self.readValueSpecification(element, value_spec)
|
|
2014
2372
|
value_spec.setConstantRef(self.getChildElementOptionalRefType(element, "CONSTANT-REF"))
|
|
2015
|
-
return value_spec
|
|
2373
|
+
return value_spec
|
|
2016
2374
|
|
|
2017
2375
|
def getValueSpecification(self, element: ET.Element, tag_name: str) -> ValueSpecification:
|
|
2018
2376
|
if tag_name == "APPLICATION-VALUE-SPECIFICATION":
|
|
@@ -2089,62 +2447,83 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2089
2447
|
.setOffsetSiToUnit(self.getChildElementOptionalFloatValue(element, "OFFSET-SI-TO-UNIT")) \
|
|
2090
2448
|
.setPhysicalDimensionRef(self.getChildElementOptionalRefType(element, "PHYSICAL-DIMENSION-REF"))
|
|
2091
2449
|
|
|
2092
|
-
def
|
|
2093
|
-
child_element =
|
|
2450
|
+
def readEndToEndDescriptionDataIds(self, element: ET.Element, parent: EndToEndDescription):
|
|
2451
|
+
child_element = self.find(element, "DATA-IDS")
|
|
2094
2452
|
if child_element is not None:
|
|
2095
2453
|
for value in self.getChildElementNumericalValueList(child_element, "DATA-ID"):
|
|
2096
2454
|
parent.addDataId(value)
|
|
2097
2455
|
|
|
2098
2456
|
def getEndToEndDescription(self, element: ET.Element, key: str) -> EndToEndDescription:
|
|
2099
|
-
child_element =
|
|
2457
|
+
child_element = self.find(element, key)
|
|
2100
2458
|
desc = None
|
|
2101
2459
|
if (child_element is not None):
|
|
2102
2460
|
desc = EndToEndDescription()
|
|
2103
|
-
|
|
2104
|
-
self.
|
|
2105
|
-
|
|
2106
|
-
desc.
|
|
2107
|
-
|
|
2108
|
-
|
|
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"))
|
|
2109
2469
|
return desc
|
|
2110
2470
|
|
|
2111
2471
|
def getVariableDataPrototypeInSystemInstanceRef(self, element: ET.Element) -> VariableDataPrototypeInSystemInstanceRef:
|
|
2112
|
-
|
|
2472
|
+
instance_ref = None
|
|
2113
2473
|
if element is not None:
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
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
|
|
2120
2481
|
|
|
2121
|
-
def
|
|
2122
|
-
prototype
|
|
2123
|
-
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"):
|
|
2124
2485
|
prototype.addReceiverIref(self.getVariableDataPrototypeInSystemInstanceRef(child_element))
|
|
2125
|
-
child_element =
|
|
2486
|
+
child_element = self.find(element, "SENDER-IREF")
|
|
2126
2487
|
if child_element is not None:
|
|
2127
2488
|
prototype.senderIRef = self.getVariableDataPrototypeInSystemInstanceRef(child_element)
|
|
2128
2489
|
return prototype
|
|
2129
2490
|
|
|
2130
|
-
def
|
|
2131
|
-
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/*"):
|
|
2132
2493
|
tag_name = self.getTagName(child_element)
|
|
2133
2494
|
if tag_name == "END-TO-END-PROTECTION-VARIABLE-PROTOTYPE":
|
|
2134
|
-
|
|
2495
|
+
prototype = EndToEndProtectionVariablePrototype()
|
|
2496
|
+
self.readEndToEndProtectionVariablePrototype(child_element, prototype)
|
|
2497
|
+
protection.addEndToEndProtectionVariablePrototype(prototype)
|
|
2135
2498
|
else:
|
|
2136
2499
|
self.raiseError("Unsupported End To End Protection Variable Prototype <%s>" % tag_name)
|
|
2137
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
|
+
|
|
2138
2516
|
def readEndToEndProtection(self, element: ET.Element, parent: EndToEndProtectionSet):
|
|
2139
2517
|
short_name = self.getShortName(element)
|
|
2140
2518
|
self.logger.debug("readEndToEndProtection %s" % short_name)
|
|
2141
2519
|
protection = parent.createEndToEndProtection(short_name)
|
|
2142
2520
|
self.readIdentifiable(element, protection)
|
|
2143
|
-
protection.
|
|
2144
|
-
self.
|
|
2521
|
+
protection.setEndToEndProfile(self.getEndToEndDescription(element, "END-TO-END-PROFILE"))
|
|
2522
|
+
self.readEndToEndProtectionEndToEndProtectionISignalIPdus(element, protection)
|
|
2523
|
+
self.readEndToEndProtectionEndToEndProtectionVariablePrototypes(element, protection)
|
|
2145
2524
|
|
|
2146
2525
|
def readEndToEndProtections(self, element: ET.Element, parent: EndToEndProtectionSet):
|
|
2147
|
-
for child_element in self.findall(element, "END-TO-END-PROTECTIONS/*"
|
|
2526
|
+
for child_element in self.findall(element, "END-TO-END-PROTECTIONS/*"):
|
|
2148
2527
|
tag_name = self.getTagName(child_element)
|
|
2149
2528
|
if tag_name == "END-TO-END-PROTECTION":
|
|
2150
2529
|
self.readEndToEndProtection(child_element, parent)
|
|
@@ -2156,10 +2535,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2156
2535
|
self.readIdentifiable(element, protection_set)
|
|
2157
2536
|
self.readEndToEndProtections(element, protection_set)
|
|
2158
2537
|
|
|
2159
|
-
def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
2160
|
-
self.readIdentifiable(element, data_type)
|
|
2161
|
-
data_type.swDataDefProps = self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS")
|
|
2162
|
-
|
|
2163
2538
|
def readImplementationProps(self, element: ET.Element, props: ImplementationProps):
|
|
2164
2539
|
props.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
2165
2540
|
|
|
@@ -2187,22 +2562,24 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2187
2562
|
prototype.typeTRef = self.getChildElementOptionalRefType(element, "TYPE-TREF")
|
|
2188
2563
|
|
|
2189
2564
|
def readApplicationArrayElement(self, element: ET.Element, parent: ApplicationArrayDataType):
|
|
2190
|
-
child_element =
|
|
2565
|
+
child_element = self.find(element, "ELEMENT")
|
|
2191
2566
|
if child_element is not None:
|
|
2192
2567
|
short_name = self.getShortName(child_element)
|
|
2193
|
-
self.logger.debug("
|
|
2568
|
+
self.logger.debug("Read ApplicationArrayElement %s" % short_name)
|
|
2194
2569
|
array_element = parent.createApplicationArrayElement(short_name)
|
|
2195
2570
|
self.readApplicationCompositeElementDataPrototype(child_element, array_element)
|
|
2571
|
+
array_element.setArraySizeHandling(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING"))
|
|
2196
2572
|
array_element.setArraySizeSemantics(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS"))
|
|
2197
2573
|
array_element.setMaxNumberOfElements(self.getChildElementOptionalNumericalValue(child_element, "MAX-NUMBER-OF-ELEMENTS"))
|
|
2198
2574
|
|
|
2199
2575
|
def readApplicationArrayDataType(self, element: ET.Element, data_type: ApplicationArrayDataType):
|
|
2200
|
-
self.logger.debug("Read ApplicationArrayDataType <%s>" % data_type)
|
|
2576
|
+
self.logger.debug("Read ApplicationArrayDataType <%s>" % data_type.getShortName())
|
|
2201
2577
|
self.readApplicationCompositeDataType(element, data_type)
|
|
2578
|
+
data_type.setDynamicArraySizeProfile(self.getChildElementOptionalLiteral(element, "DYNAMIC-ARRAY-SIZE-PROFILE"))
|
|
2202
2579
|
self.readApplicationArrayElement(element, data_type)
|
|
2203
2580
|
|
|
2204
2581
|
def getSwRecordLayoutV(self, element: ET.Element, key: str) -> SwRecordLayoutV:
|
|
2205
|
-
child_element =
|
|
2582
|
+
child_element = self.find(element, key)
|
|
2206
2583
|
layout_v = None
|
|
2207
2584
|
if child_element is not None:
|
|
2208
2585
|
layout_v = SwRecordLayoutV()
|
|
@@ -2212,9 +2589,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2212
2589
|
.setSwRecordLayoutVProp(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP")) \
|
|
2213
2590
|
.setSwRecordLayoutVIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX"))
|
|
2214
2591
|
return layout_v
|
|
2592
|
+
|
|
2593
|
+
def readSwRecordLayoutGroupSwRecordLayoutGroupContentType(self, element: ET.Element, group: SwRecordLayoutGroup):
|
|
2594
|
+
content = SwRecordLayoutGroupContent()
|
|
2595
|
+
content.setSwRecordLayoutGroup(self.getSwRecordLayoutGroup(element, "SW-RECORD-LAYOUT-GROUP")) \
|
|
2596
|
+
.setSwRecordLayoutV(self.getSwRecordLayoutV(element, "SW-RECORD-LAYOUT-V"))
|
|
2597
|
+
group.setSwRecordLayoutGroupContentType(content)
|
|
2215
2598
|
|
|
2216
2599
|
def getSwRecordLayoutGroup(self, element: ET.Element, key: str) -> SwRecordLayoutGroup:
|
|
2217
|
-
child_element =
|
|
2600
|
+
child_element = self.find(element, key)
|
|
2218
2601
|
group = None
|
|
2219
2602
|
if child_element is not None:
|
|
2220
2603
|
group = SwRecordLayoutGroup()
|
|
@@ -2224,17 +2607,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2224
2607
|
.setSwRecordLayoutGroupIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX")) \
|
|
2225
2608
|
.setSwRecordLayoutGroupFrom(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM")) \
|
|
2226
2609
|
.setSwRecordLayoutGroupStep(self.getChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP")) \
|
|
2227
|
-
.setSwRecordLayoutGroupTo(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO"))
|
|
2610
|
+
.setSwRecordLayoutGroupTo(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO"))
|
|
2611
|
+
self.readSwRecordLayoutGroupSwRecordLayoutGroupContentType(child_element, group)
|
|
2228
2612
|
|
|
2229
|
-
group_content = SwRecordLayoutGroupContent()
|
|
2230
|
-
group_content.swRecordLayoutGroup = self.getSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP")
|
|
2231
|
-
group_content.swRecordLayoutV = self.getSwRecordLayoutV(child_element, "SW-RECORD-LAYOUT-V")
|
|
2232
|
-
|
|
2233
|
-
if group_content.swRecordLayoutGroup is not None:
|
|
2234
|
-
group.setSwRecordLayoutGroupContentType(group_content)
|
|
2235
|
-
elif group_content.swRecordLayoutV is not None:
|
|
2236
|
-
group.setSwRecordLayoutGroupContentType(group_content)
|
|
2237
|
-
|
|
2238
2613
|
return group
|
|
2239
2614
|
|
|
2240
2615
|
def readSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
|
|
@@ -2245,7 +2620,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2245
2620
|
def readSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
|
|
2246
2621
|
self.logger.debug("Read SwAddrMethod <%s>" % method.getShortName())
|
|
2247
2622
|
self.readIdentifiable(element, method)
|
|
2248
|
-
method.setMemoryAllocationKeywordPolicy(self.getChildElementOptionalLiteral(element, "MEMORY-ALLOCATION-KEYWORD-POLICY"))
|
|
2623
|
+
method.setMemoryAllocationKeywordPolicy(self.getChildElementOptionalLiteral(element, "MEMORY-ALLOCATION-KEYWORD-POLICY"))
|
|
2249
2624
|
for option in self.getChildElementLiteralValueList(element, "OPTIONS/OPTION"):
|
|
2250
2625
|
method.addOption(option)
|
|
2251
2626
|
method.setSectionInitializationPolicy(self.getChildElementOptionalLiteral(element, "SECTION-INITIALIZATION-POLICY")) \
|
|
@@ -2319,6 +2694,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2319
2694
|
self.readTimingExtension(element, timing)
|
|
2320
2695
|
|
|
2321
2696
|
def readFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
|
|
2697
|
+
self.readIdentifiable(element, triggering)
|
|
2322
2698
|
for ref in self.getChildElementRefTypeList(element, 'FRAME-PORT-REFS/FRAME-PORT-REF'):
|
|
2323
2699
|
triggering.addFramePortRef(ref)
|
|
2324
2700
|
triggering.setFrameRef(self.getChildElementOptionalRefType(element, "FRAME-REF"))
|
|
@@ -2327,7 +2703,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2327
2703
|
|
|
2328
2704
|
def readCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
|
|
2329
2705
|
self.logger.debug("Read CanFrameTriggering %s" % triggering.getShortName())
|
|
2330
|
-
self.readIdentifiable(element, triggering)
|
|
2331
2706
|
self.readFrameTriggering(element, triggering)
|
|
2332
2707
|
triggering.setCanAddressingMode(self.getChildElementOptionalLiteral(element, "CAN-ADDRESSING-MODE")) \
|
|
2333
2708
|
.setCanFdFrameSupport(self.getChildElementOptionalBooleanValue(element, "CAN-FD-FRAME-SUPPORT")) \
|
|
@@ -2336,13 +2711,52 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2336
2711
|
.setIdentifier(self.getChildElementOptionalNumericalValue(element, "IDENTIFIER")) \
|
|
2337
2712
|
.setRxIdentifierRange(self.getChildElementRxIdentifierRange(element, "RX-IDENTIFIER-RANGE"))
|
|
2338
2713
|
|
|
2339
|
-
|
|
2340
2714
|
def readLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
|
|
2341
2715
|
self.logger.debug("Read LinFrameTriggering %s" % triggering.getShortName())
|
|
2342
|
-
self.readIdentifiable(element, triggering)
|
|
2343
2716
|
self.readFrameTriggering(element, triggering)
|
|
2344
2717
|
triggering.setIdentifier(self.getChildElementOptionalNumericalValue(element, "IDENTIFIER")) \
|
|
2345
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"))
|
|
2346
2760
|
|
|
2347
2761
|
def readISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
|
|
2348
2762
|
self.logger.debug("Read ISignalTriggering %s" % triggering.getShortName())
|
|
@@ -2361,10 +2775,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2361
2775
|
for child_element in self.findall(element, 'I-SIGNAL-TRIGGERINGS/I-SIGNAL-TRIGGERING-REF-CONDITIONAL'):
|
|
2362
2776
|
triggering.addISignalTriggeringRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-TRIGGERING-REF"))
|
|
2363
2777
|
|
|
2364
|
-
def
|
|
2778
|
+
def readPhysicalChannelCommConnectorRefs(self, element: ET.Element, channel: PhysicalChannel):
|
|
2365
2779
|
for child_element in self.findall(element, 'COMM-CONNECTORS/COMMUNICATION-CONNECTOR-REF-CONDITIONAL'):
|
|
2366
2780
|
channel.addCommConnectorRef(self.getChildElementOptionalRefType(child_element, "COMMUNICATION-CONNECTOR-REF"))
|
|
2367
|
-
|
|
2781
|
+
|
|
2782
|
+
def readPhysicalChannelFrameTriggerings(self, element: ET.Element, channel: PhysicalChannel):
|
|
2368
2783
|
for child_element in self.findall(element, "FRAME-TRIGGERINGS/*"):
|
|
2369
2784
|
tag_name = self.getTagName(child_element)
|
|
2370
2785
|
if tag_name == "CAN-FRAME-TRIGGERING":
|
|
@@ -2373,9 +2788,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2373
2788
|
elif tag_name == "LIN-FRAME-TRIGGERING":
|
|
2374
2789
|
triggering = channel.createLinFrameTriggering(self.getShortName(child_element))
|
|
2375
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)
|
|
2376
2794
|
else:
|
|
2377
2795
|
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2378
|
-
|
|
2796
|
+
|
|
2797
|
+
def readPhysicalChannelISignalTriggerings(self, element: ET.Element, channel: PhysicalChannel):
|
|
2379
2798
|
for child_element in self.findall(element, "I-SIGNAL-TRIGGERINGS/*"):
|
|
2380
2799
|
tag_name = self.getTagName(child_element)
|
|
2381
2800
|
if tag_name == "I-SIGNAL-TRIGGERING":
|
|
@@ -2383,7 +2802,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2383
2802
|
self.readISignalTriggering(child_element, triggering)
|
|
2384
2803
|
else:
|
|
2385
2804
|
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2386
|
-
|
|
2805
|
+
|
|
2806
|
+
def readPhysicalChannelPduTriggerings(self, element, channel):
|
|
2387
2807
|
for child_element in self.findall(element, "PDU-TRIGGERINGS/*"):
|
|
2388
2808
|
tag_name = self.getTagName(child_element)
|
|
2389
2809
|
if tag_name == "PDU-TRIGGERING":
|
|
@@ -2392,8 +2812,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2392
2812
|
else:
|
|
2393
2813
|
self.notImplemented("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2394
2814
|
|
|
2395
|
-
def
|
|
2815
|
+
def readPhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
|
|
2396
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):
|
|
2397
2824
|
self.readPhysicalChannel(element, channel)
|
|
2398
2825
|
|
|
2399
2826
|
def readScheduleTableEntry(self, element: ET.Element, entry: ScheduleTableEntry):
|
|
@@ -2432,7 +2859,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2432
2859
|
self.notImplemented("Unsupported Schedule Table <%s>" % tag_name)
|
|
2433
2860
|
|
|
2434
2861
|
def readLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2435
|
-
self.readIdentifiable(element, channel)
|
|
2436
2862
|
self.readPhysicalChannel(element, channel)
|
|
2437
2863
|
self.readLinPhysicalChannelScheduleTables(element, channel)
|
|
2438
2864
|
|
|
@@ -2457,7 +2883,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2457
2883
|
else:
|
|
2458
2884
|
self.notImplemented("Unsupported Network EndPoint Address <%s>" % tag_name)
|
|
2459
2885
|
|
|
2460
|
-
def getDoIpEntity(self, element: ET.Element, key:str) -> DoIpEntity:
|
|
2886
|
+
def getDoIpEntity(self, element: ET.Element, key: str) -> DoIpEntity:
|
|
2461
2887
|
entity = None
|
|
2462
2888
|
child_element = self.find(element, key)
|
|
2463
2889
|
if child_element is not None:
|
|
@@ -2465,7 +2891,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2465
2891
|
entity.setDoIpEntityRole(self.getChildElementOptionalLiteral(child_element, "DO-IP-ENTITY-ROLE"))
|
|
2466
2892
|
return entity
|
|
2467
2893
|
|
|
2468
|
-
def getInfrastructureServices(self, element: ET.Element, key:str) -> InfrastructureServices:
|
|
2894
|
+
def getInfrastructureServices(self, element: ET.Element, key: str) -> InfrastructureServices:
|
|
2469
2895
|
services = None
|
|
2470
2896
|
child_element = self.find(element, key)
|
|
2471
2897
|
if child_element is not None:
|
|
@@ -2511,7 +2937,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2511
2937
|
connection = SocketConnection()
|
|
2512
2938
|
connection.setClientIpAddrFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST")) \
|
|
2513
2939
|
.setClientPortFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-PORT-FROM-CONNECTION-REQUEST")) \
|
|
2514
|
-
.setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF"))
|
|
2940
|
+
.setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF")) # NOQA E501
|
|
2515
2941
|
for pdu in self.getSocketConnectionPdus(element):
|
|
2516
2942
|
connection.addPdu(pdu)
|
|
2517
2943
|
connection.setPduCollectionMaxBufferSize(self.getChildElementOptionalPositiveInteger(element, "PDU-COLLECTION-MAX-BUFFER-SIZE")) \
|
|
@@ -2526,7 +2952,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2526
2952
|
tag_name = self.getTagName(child_element)
|
|
2527
2953
|
if tag_name == "SOCKET-CONNECTION":
|
|
2528
2954
|
bundle.addBundledConnection(self.getSocketConnection(child_element))
|
|
2529
|
-
else:
|
|
2955
|
+
else:
|
|
2530
2956
|
self.notImplemented("Unsupported Bundled Connection <%s>" % tag_name)
|
|
2531
2957
|
|
|
2532
2958
|
def readSocketConnectionBundle(self, element: ET.Element, bundle: SocketConnectionBundle):
|
|
@@ -2556,12 +2982,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2556
2982
|
|
|
2557
2983
|
def readTcpTp(self, element: ET.Element, tp: TcpTp):
|
|
2558
2984
|
tp.setKeepAliveInterval(self.getChildElementOptionalTimeValue(element, "KEEP-ALIVE-INTERVAL")) \
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
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"))
|
|
2565
2990
|
|
|
2566
2991
|
def readGenericTp(self, element: ET.Element, tp: GenericTp):
|
|
2567
2992
|
tp.setTpAddress(self.getChildElementOptionalLiteral(element, "TP-ADDRESS")) \
|
|
@@ -2597,17 +3022,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2597
3022
|
delay.setMaxValue(self.getChildElementOptionalTimeValue(child_element, "MAX-VALUE")) \
|
|
2598
3023
|
.setMinValue(self.getChildElementOptionalTimeValue(child_element, "MIN-VALUE"))
|
|
2599
3024
|
return delay
|
|
2600
|
-
|
|
2601
|
-
def getInitialSdDelayConfig(self, element: ET.Element, key: str) -> InitialSdDelayConfig:
|
|
2602
|
-
config = None
|
|
2603
|
-
child_element = self.find(element, key)
|
|
2604
|
-
if child_element is not None:
|
|
2605
|
-
config = InitialSdDelayConfig()
|
|
2606
|
-
config.setInitialDelayMaxValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE")) \
|
|
2607
|
-
.setInitialDelayMinValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE")) \
|
|
2608
|
-
.setInitialRepetitionsBaseDelay(self.getChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY")) \
|
|
2609
|
-
.setInitialRepetitionsMax(self.getChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX"))
|
|
2610
|
-
return config
|
|
2611
3025
|
|
|
2612
3026
|
def getSdClientConfig(self, element: ET.Element, key: str) -> SdClientConfig:
|
|
2613
3027
|
config = None
|
|
@@ -2662,7 +3076,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2662
3076
|
.setInitialRepetitionsBaseDelay(self.getChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY")) \
|
|
2663
3077
|
.setInitialRepetitionsMax(self.getChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX"))
|
|
2664
3078
|
return config
|
|
2665
|
-
|
|
3079
|
+
|
|
2666
3080
|
def getSdServerConfig(self, element: ET.Element, key: str) -> SdServerConfig:
|
|
2667
3081
|
config = None
|
|
2668
3082
|
child_element = self.find(element, key)
|
|
@@ -2684,7 +3098,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2684
3098
|
handler.setMulticastThreshold(self.getChildElementOptionalPositiveInteger(element, "MULTICAST-THRESHOLD"))
|
|
2685
3099
|
for ref in self.getChildElementRefTypeList(element, "ROUTING-GROUP-REFS/ROUTING-GROUP-REF"):
|
|
2686
3100
|
handler.addRoutingGroupRef(ref)
|
|
2687
|
-
handler.setSdServerConfig(self.getSdServerConfig(element, "SD-SERVER-CONFIG"))
|
|
3101
|
+
handler.setSdServerConfig(self.getSdServerConfig(element, "SD-SERVER-CONFIG"))
|
|
2688
3102
|
|
|
2689
3103
|
def readProvidedServiceInstanceEventHandlers(self, element: ET.Element, instance: ProvidedServiceInstance):
|
|
2690
3104
|
for child_element in self.findall(element, "EVENT-HANDLERS/*"):
|
|
@@ -2725,7 +3139,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2725
3139
|
for ref in self.getChildElementRefTypeList(element, "MULTICAST-CONNECTOR-REFS/MULTICAST-CONNECTOR-REF"):
|
|
2726
3140
|
address.addMulticastConnectorRef(ref)
|
|
2727
3141
|
|
|
2728
|
-
|
|
2729
3142
|
def readSocketAddress(self, element: ET.Element, address: SocketAddress):
|
|
2730
3143
|
self.readIdentifiable(element, address)
|
|
2731
3144
|
self.readSocketAddressApplicationEndpoint(element, address)
|
|
@@ -2733,7 +3146,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2733
3146
|
address.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF")) \
|
|
2734
3147
|
.setPortAddress(self.getChildElementOptionalPositiveInteger(element, "PORT-ADDRESS"))
|
|
2735
3148
|
|
|
2736
|
-
def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
|
|
3149
|
+
def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
|
|
2737
3150
|
for child_element in self.findall(element, "SOCKET-ADDRESSS/*"):
|
|
2738
3151
|
tag_name = self.getTagName(child_element)
|
|
2739
3152
|
if tag_name == "SOCKET-ADDRESS":
|
|
@@ -2758,12 +3171,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2758
3171
|
vlan.setVlanIdentifier(self.getChildElementOptionalPositiveInteger(child_element, "VLAN-IDENTIFIER"))
|
|
2759
3172
|
|
|
2760
3173
|
def readEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2761
|
-
self.readIdentifiable(element, channel)
|
|
2762
3174
|
self.readPhysicalChannel(element, channel)
|
|
2763
3175
|
self.readEthernetPhysicalChannelNetworkEndPoints(element, channel)
|
|
2764
3176
|
channel.setSoAdConfig(self.getSoAdConfig(element, "SO-AD-CONFIG"))
|
|
2765
3177
|
self.readEthernetPhysicalChannelVlan(element, channel)
|
|
2766
3178
|
|
|
3179
|
+
def readFlexrayPhysicalChannel(self, element: ET.Element, channel: FlexrayPhysicalChannel):
|
|
3180
|
+
self.readPhysicalChannel(element, channel)
|
|
3181
|
+
channel.setChannelName(self.getChildElementOptionalLiteral(element, "CHANNEL-NAME"))
|
|
3182
|
+
|
|
2767
3183
|
def readCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2768
3184
|
for child_element in self.findall(element, "PHYSICAL-CHANNELS/*"):
|
|
2769
3185
|
tag_name = self.getTagName(child_element)
|
|
@@ -2776,12 +3192,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2776
3192
|
elif tag_name == "ETHERNET-PHYSICAL-CHANNEL":
|
|
2777
3193
|
channel = cluster.createEthernetPhysicalChannel(self.getShortName(child_element))
|
|
2778
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)
|
|
2779
3198
|
else:
|
|
2780
3199
|
self.notImplemented("Unsupported Physical Channel <%s>" % tag_name)
|
|
2781
3200
|
|
|
2782
|
-
|
|
2783
3201
|
def readCommunicationCluster(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2784
|
-
cluster.setBaudrate(self.getChildElementOptionalNumericalValue(element, "BAUDRATE"))
|
|
3202
|
+
cluster.setBaudrate(self.getChildElementOptionalNumericalValue(element, "BAUDRATE"))
|
|
2785
3203
|
self.readCommunicationClusterPhysicalChannels(element, cluster)
|
|
2786
3204
|
cluster.setProtocolName(self.getChildElementOptionalLiteral(element, "PROTOCOL-NAME")) \
|
|
2787
3205
|
.setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
|
|
@@ -2797,6 +3215,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2797
3215
|
return recovery
|
|
2798
3216
|
|
|
2799
3217
|
def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
|
|
3218
|
+
self.readCommunicationCluster(element, cluster)
|
|
2800
3219
|
cluster.setBusOffRecovery(self.getCanClusterBusOffRecovery(element, "BUS-OFF-RECOVERY")) \
|
|
2801
3220
|
.setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE")) \
|
|
2802
3221
|
.setSpeed(self.getChildElementOptionalNumericalValue(element, "SPEED"))
|
|
@@ -2813,9 +3232,47 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2813
3232
|
self.readIdentifiable(element, cluster)
|
|
2814
3233
|
child_element = self.find(element, "CAN-CLUSTER-VARIANTS/CAN-CLUSTER-CONDITIONAL")
|
|
2815
3234
|
if child_element is not None:
|
|
2816
|
-
self.readCommunicationCluster(child_element, cluster)
|
|
2817
3235
|
self.readAbstractCanCluster(child_element, cluster)
|
|
2818
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
|
+
|
|
2819
3276
|
def readMacMulticastGroup(self, element: ET.Element, group: MacMulticastGroup):
|
|
2820
3277
|
self.readIdentifiable(element, group)
|
|
2821
3278
|
group.setMacMulticastAddress(self.getChildElementOptionalLiteral(element, "MAC-MULTICAST-ADDRESS",))
|
|
@@ -2858,37 +3315,216 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2858
3315
|
self.readDiagnosticServiceTableDiagnosticConnectionRefs(element, table)
|
|
2859
3316
|
table.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
|
|
2860
3317
|
|
|
2861
|
-
def
|
|
2862
|
-
self.
|
|
2863
|
-
|
|
3318
|
+
def readSegmentPosition(self, element: ET.Element, position: SegmentPosition):
|
|
3319
|
+
position.setSegmentByteOrder(self.getChildElementOptionalLiteral(element, "SEGMENT-BYTE-ORDER")) \
|
|
3320
|
+
.setSegmentLength(self.getChildElementOptionalIntegerValue(element, "SEGMENT-LENGTH")) \
|
|
3321
|
+
.setSegmentPosition(self.getChildElementOptionalIntegerValue(element, "SEGMENT-POSITION"))
|
|
3322
|
+
|
|
3323
|
+
def readMultiplexedPartSegmentPositions(self, element: ET.Element, part: MultiplexedPart):
|
|
3324
|
+
for child_element in self.findall(element, "SEGMENT-POSITIONS/*"):
|
|
3325
|
+
tag_name = self.getTagName(child_element)
|
|
3326
|
+
if tag_name == "SEGMENT-POSITION":
|
|
3327
|
+
position = SegmentPosition()
|
|
3328
|
+
self.readSegmentPosition(child_element, position)
|
|
3329
|
+
part.addSegmentPosition(position)
|
|
3330
|
+
else:
|
|
3331
|
+
self.notImplemented("Unsupported DynamicPart <%s>" % tag_name)
|
|
3332
|
+
|
|
3333
|
+
def readMultiplexedPart(self, element: ET.Element, part: MultiplexedPart):
|
|
3334
|
+
self.readMultiplexedPartSegmentPositions(element, part)
|
|
3335
|
+
|
|
3336
|
+
def readDynamicPartAlternative(self, element: ET.Element, alternative: DynamicPartAlternative):
|
|
3337
|
+
alternative.setIPduRef(self.getChildElementOptionalRefType(element, "I-PDU-REF")) \
|
|
3338
|
+
.setInitialDynamicPart(self.getChildElementOptionalBooleanValue(element, "INITIAL-DYNAMIC-PART")) \
|
|
3339
|
+
.setSelectorFieldCode(self.getChildElementOptionalIntegerValue(element, "SELECTOR-FIELD-CODE"))
|
|
3340
|
+
|
|
3341
|
+
def readDynamicPartDynamicPartAlternatives(self, element: ET.Element, part: DynamicPart):
|
|
3342
|
+
for child_element in self.findall(element, "DYNAMIC-PART-ALTERNATIVES/*"):
|
|
3343
|
+
tag_name = self.getTagName(child_element)
|
|
3344
|
+
if tag_name == "DYNAMIC-PART-ALTERNATIVE":
|
|
3345
|
+
alternative = DynamicPartAlternative()
|
|
3346
|
+
self.readDynamicPartAlternative(child_element, alternative)
|
|
3347
|
+
part.addDynamicPartAlternative(alternative)
|
|
3348
|
+
else:
|
|
3349
|
+
self.notImplemented("Unsupported DynamicPartAlternative <%s>" % tag_name)
|
|
2864
3350
|
|
|
2865
|
-
def
|
|
2866
|
-
self.
|
|
2867
|
-
self.
|
|
3351
|
+
def readDynamicPart(self, element: ET.Element, part: DynamicPart):
|
|
3352
|
+
self.readMultiplexedPart(element, part)
|
|
3353
|
+
self.readDynamicPartDynamicPartAlternatives(element, part)
|
|
3354
|
+
|
|
3355
|
+
def readMultiplexedIPduDynamicParts(self, element: ET.Element, ipdu: MultiplexedIPdu):
|
|
3356
|
+
for child_element in self.findall(element, "DYNAMIC-PARTS/*"):
|
|
3357
|
+
tag_name = self.getTagName(child_element)
|
|
3358
|
+
if tag_name == "DYNAMIC-PART":
|
|
3359
|
+
part = DynamicPart()
|
|
3360
|
+
self.readDynamicPart(child_element, part)
|
|
3361
|
+
ipdu.setDynamicPart(part)
|
|
3362
|
+
else:
|
|
3363
|
+
self.notImplemented("Unsupported DynamicPart <%s>" % tag_name)
|
|
3364
|
+
|
|
3365
|
+
def readStaticPart(self, element: ET.Element, part: StaticPart):
|
|
3366
|
+
self.readMultiplexedPart(element, part)
|
|
3367
|
+
part.setIPduRef(self.getChildElementOptionalRefType(element, "I-PDU-REF"))
|
|
3368
|
+
|
|
3369
|
+
def readMultiplexedIPduStaticParts(self, element: ET.Element, ipdu: MultiplexedIPdu):
|
|
3370
|
+
for child_element in self.findall(element, "STATIC-PARTS/*"):
|
|
3371
|
+
tag_name = self.getTagName(child_element)
|
|
3372
|
+
if tag_name == "STATIC-PART":
|
|
3373
|
+
part = StaticPart()
|
|
3374
|
+
self.readStaticPart(child_element, part)
|
|
3375
|
+
ipdu.setStaticPart(part)
|
|
3376
|
+
else:
|
|
3377
|
+
self.notImplemented("Unsupported StaticPart <%s>" % tag_name)
|
|
3378
|
+
|
|
3379
|
+
def readMultiplexedIPdu(self, element: ET.Element, ipdu: MultiplexedIPdu):
|
|
3380
|
+
self.logger.debug("Read MultiplexedIPdu <%s>" % ipdu.getShortName())
|
|
3381
|
+
self.readIPdu(element, ipdu)
|
|
3382
|
+
self.readMultiplexedIPduDynamicParts(element, ipdu)
|
|
3383
|
+
ipdu.setSelectorFieldByteOrder(self.getChildElementOptionalLiteral(element, "SELECTOR-FIELD-BYTE-ORDER")) \
|
|
3384
|
+
.setSelectorFieldLength(self.getChildElementOptionalIntegerValue(element, "SELECTOR-FIELD-LENGTH")) \
|
|
3385
|
+
.setSelectorFieldStartPosition(self.getChildElementOptionalIntegerValue(element, "SELECTOR-FIELD-START-POSITION"))
|
|
3386
|
+
self.readMultiplexedIPduStaticParts(element, ipdu)
|
|
3387
|
+
ipdu.setTriggerMode(self.getChildElementOptionalLiteral(element, "TRIGGER-MODE")) \
|
|
3388
|
+
.setUnusedBitPattern(self.getChildElementOptionalIntegerValue(element, "UNUSED-BIT-PATTERN"))
|
|
3389
|
+
|
|
3390
|
+
def readUserDefinedIPdu(self, element: ET.Element, ipdu: UserDefinedIPdu):
|
|
3391
|
+
self.logger.debug("Read UserDefinedIPdu <%s>" % ipdu.getShortName())
|
|
3392
|
+
self.readIPdu(element, ipdu)
|
|
3393
|
+
ipdu.setCddType(self.getChildElementOptionalLiteral(element, "CDD-TYPE"))
|
|
2868
3394
|
|
|
2869
3395
|
def readUserDefinedPdu(self, element: ET.Element, pdu: UserDefinedPdu):
|
|
2870
3396
|
self.logger.debug("Read UserDefinedPdu <%s>" % pdu.getShortName())
|
|
2871
|
-
self.
|
|
3397
|
+
self.readPdu(element, pdu)
|
|
3398
|
+
pdu.setCddType(self.getChildElementOptionalLiteral(element, "CDD-TYPE"))
|
|
2872
3399
|
|
|
2873
3400
|
def readGeneralPurposePdu(self, element: ET.Element, pdu: GeneralPurposePdu):
|
|
2874
3401
|
self.logger.debug("Read GeneralPurposePdu <%s>" % pdu.getShortName())
|
|
2875
|
-
self.
|
|
3402
|
+
self.readPdu(element, pdu)
|
|
2876
3403
|
|
|
2877
3404
|
def readGeneralPurposeIPdu(self, element: ET.Element, i_pdu: GeneralPurposeIPdu):
|
|
2878
3405
|
self.logger.debug("Read GeneralPurposeIPdu <%s>" % i_pdu.getShortName())
|
|
2879
|
-
self.
|
|
3406
|
+
self.readIPdu(element, i_pdu)
|
|
3407
|
+
|
|
3408
|
+
def readSecureCommunicationAuthenticationProps(self, element: ET.Element, props: SecureCommunicationAuthenticationProps):
|
|
3409
|
+
self.readIdentifiable(element, props)
|
|
3410
|
+
props.setAuthAlgorithm(self.getChildElementOptionalLiteral(element, "AUTH-ALGORITHM")) \
|
|
3411
|
+
.setAuthInfoTxLength(self.getChildElementOptionalPositiveInteger(element, "AUTH-INFO-TX-LENGTH"))
|
|
3412
|
+
|
|
3413
|
+
def readSecureCommunicationPropsSetAuthenticationProps(self, element: ET.Element, props_set: SecureCommunicationPropsSet):
|
|
3414
|
+
for child_element in self.findall(element, "AUTHENTICATION-PROPSS/*"):
|
|
3415
|
+
tag_name = self.getTagName(child_element)
|
|
3416
|
+
if tag_name == "SECURE-COMMUNICATION-AUTHENTICATION-PROPS":
|
|
3417
|
+
props = props_set.createSecureCommunicationAuthenticationProps(self.getShortName(child_element))
|
|
3418
|
+
self.readSecureCommunicationAuthenticationProps(child_element, props)
|
|
3419
|
+
else:
|
|
3420
|
+
self.notImplemented("Unsupported AuthenticationProps <%s>" % tag_name)
|
|
3421
|
+
|
|
3422
|
+
def readSecureCommunicationFreshnessProps(self, element: ET.Element, props: SecureCommunicationFreshnessProps):
|
|
3423
|
+
self.readIdentifiable(element, props)
|
|
3424
|
+
props.setFreshnessValueLength(self.getChildElementOptionalLiteral(element, "FRESHNESS-VALUE-LENGTH")) \
|
|
3425
|
+
.setFreshnessValueTxLength(self.getChildElementOptionalPositiveInteger(element, "FRESHNESS-VALUE-TX-LENGTH"))
|
|
3426
|
+
|
|
3427
|
+
def readSecureCommunicationPropsSetFreshnessProps(self, element: ET.Element, props_set: SecureCommunicationPropsSet):
|
|
3428
|
+
for child_element in self.findall(element, "FRESHNESS-PROPSS/*"):
|
|
3429
|
+
tag_name = self.getTagName(child_element)
|
|
3430
|
+
if tag_name == "SECURE-COMMUNICATION-FRESHNESS-PROPS":
|
|
3431
|
+
props = props_set.createSecureCommunicationFreshnessProps(self.getShortName(child_element))
|
|
3432
|
+
self.readSecureCommunicationFreshnessProps(child_element, props)
|
|
3433
|
+
else:
|
|
3434
|
+
self.notImplemented("Unsupported FreshnessProps <%s>" % tag_name)
|
|
2880
3435
|
|
|
2881
3436
|
def readSecureCommunicationPropsSet(self, element: ET.Element, props_set: SecureCommunicationPropsSet):
|
|
2882
3437
|
self.logger.debug("Read SecureCommunicationPropsSet <%s>" % props_set.getShortName())
|
|
2883
3438
|
self.readIdentifiable(element, props_set)
|
|
2884
|
-
|
|
3439
|
+
self.readSecureCommunicationPropsSetAuthenticationProps(element, props_set)
|
|
3440
|
+
self.readSecureCommunicationPropsSetFreshnessProps(element, props_set)
|
|
3441
|
+
|
|
2885
3442
|
def readSoAdRoutingGroup(self, element: ET.Element, group: SoAdRoutingGroup):
|
|
2886
3443
|
self.logger.debug("Read SoAdRoutingGroup <%s>" % group.getShortName())
|
|
2887
3444
|
self.readIdentifiable(element, group)
|
|
3445
|
+
group.setEventGroupControlType(self.getChildElementOptionalLiteral(element, "EVENT-GROUP-CONTROL-TYPE"))
|
|
3446
|
+
|
|
3447
|
+
def readDoIpLogicAddress(self, element: ET.Element, address: DoIpLogicAddress):
|
|
3448
|
+
self.readIdentifiable(element, address)
|
|
3449
|
+
address.setAddress(self.getChildElementOptionalIntegerValue(element, "ADDRESS"))
|
|
3450
|
+
|
|
3451
|
+
def readDoIpTpConfigDoIpLogicAddresses(self, element: ET.Element, config: DoIpTpConfig):
|
|
3452
|
+
for child_element in self.findall(element, "DO-IP-LOGIC-ADDRESSS/*"):
|
|
3453
|
+
tag_name = self.getTagName(child_element)
|
|
3454
|
+
if tag_name == "DO-IP-LOGIC-ADDRESS":
|
|
3455
|
+
address = config.createDoIpLogicAddress(self.getShortName(child_element))
|
|
3456
|
+
self.readDoIpLogicAddress(child_element, address)
|
|
3457
|
+
else:
|
|
3458
|
+
self.notImplemented("Unsupported DoIpLogicAddress <%s>" % tag_name)
|
|
3459
|
+
|
|
3460
|
+
def readDoIpTpConnection(self, element: ET.Element, connection: DoIpTpConnection):
|
|
3461
|
+
self.readTpConnection(element, connection)
|
|
3462
|
+
connection.setDoIpSourceAddressRef(self.getChildElementOptionalRefType(element, "DO-IP-SOURCE-ADDRESS-REF")) \
|
|
3463
|
+
.setDoIpTargetAddressRef(self.getChildElementOptionalRefType(element, "DO-IP-TARGET-ADDRESS-REF")) \
|
|
3464
|
+
.setTpSduRef(self.getChildElementOptionalRefType(element, "TP-SDU-REF"))
|
|
3465
|
+
|
|
3466
|
+
def readDoIpTpConfigTpConnections(self, element: ET.Element, config: DoIpTpConfig):
|
|
3467
|
+
for child_element in self.findall(element, "TP-CONNECTIONS/*"):
|
|
3468
|
+
tag_name = self.getTagName(child_element)
|
|
3469
|
+
if tag_name == "DO-IP-TP-CONNECTION":
|
|
3470
|
+
connection = DoIpTpConnection()
|
|
3471
|
+
self.readDoIpTpConnection(child_element, connection)
|
|
3472
|
+
config.addTpConnection(connection)
|
|
3473
|
+
else:
|
|
3474
|
+
self.notImplemented("Unsupported TpConnection <%s>" % tag_name)
|
|
2888
3475
|
|
|
2889
3476
|
def readDoIpTpConfig(self, element: ET.Element, config: DoIpTpConfig):
|
|
2890
3477
|
self.logger.debug("Read DoIpTpConfig <%s>" % config.getShortName())
|
|
2891
|
-
self.
|
|
3478
|
+
self.readTpConfig(element, config)
|
|
3479
|
+
self.readDoIpTpConfigDoIpLogicAddresses(element, config)
|
|
3480
|
+
self.readDoIpTpConfigTpConnections(element, config)
|
|
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)
|
|
2892
3528
|
|
|
2893
3529
|
def readPduToFrameMappings(self, element: ET.Element, parent: Frame):
|
|
2894
3530
|
for child_element in self.findall(element, "PDU-TO-FRAME-MAPPINGS/PDU-TO-FRAME-MAPPING"):
|
|
@@ -2909,82 +3545,124 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2909
3545
|
self.logger.debug("Read LinUnconditionalFrame <%s>" % frame.getShortName())
|
|
2910
3546
|
self.readFrame(element, frame)
|
|
2911
3547
|
|
|
3548
|
+
def readPdu(self, element: ET.Element, pdu: Pdu):
|
|
3549
|
+
self.readIdentifiable(element, pdu)
|
|
3550
|
+
pdu.setHasDynamicLength(self.getChildElementOptionalBooleanValue(element, "HAS-DYNAMIC-LENGTH")) \
|
|
3551
|
+
.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH"))
|
|
3552
|
+
|
|
3553
|
+
def readISignalToIPduMapping(self, element: ET.Element, mapping: ISignalToIPduMapping):
|
|
3554
|
+
self.readIdentifiable(element, mapping)
|
|
3555
|
+
mapping.setISignalRef(self.getChildElementOptionalRefType(element, "I-SIGNAL-REF")) \
|
|
3556
|
+
.setPackingByteOrder(self.getChildElementOptionalLiteral(element, "PACKING-BYTE-ORDER")) \
|
|
3557
|
+
.setStartPosition(self.getChildElementOptionalIntegerValue(element, "START-POSITION")) \
|
|
3558
|
+
.setTransferProperty(self.getChildElementOptionalLiteral(element, "TRANSFER-PROPERTY"))
|
|
3559
|
+
|
|
3560
|
+
def readNmPduISignalToIPduMappings(self, element: ET.Element, pdu: NmPdu):
|
|
3561
|
+
for child_element in self.findall(element, "I-SIGNAL-TO-I-PDU-MAPPINGS/*"):
|
|
3562
|
+
tag_name = self.getTagName(child_element)
|
|
3563
|
+
if tag_name == "I-SIGNAL-TO-I-PDU-MAPPING":
|
|
3564
|
+
mapping = pdu.createISignalToIPduMapping(self.getShortName(child_element))
|
|
3565
|
+
self.readISignalToIPduMapping(child_element, mapping)
|
|
3566
|
+
else:
|
|
3567
|
+
self.notImplemented("Unsupported ISignalToIPduMapping <%s>" % tag_name)
|
|
3568
|
+
|
|
2912
3569
|
def readNmPdu(self, element: ET.Element, pdu: NmPdu):
|
|
2913
3570
|
self.logger.debug("Read NmPdu <%s>" % pdu.getShortName())
|
|
2914
|
-
self.
|
|
3571
|
+
self.readPdu(element, pdu)
|
|
3572
|
+
self.readNmPduISignalToIPduMappings(element, pdu)
|
|
3573
|
+
pdu.setUnusedBitPattern(self.getChildElementOptionalIntegerValue(element, "UNUSED-BIT-PATTERN"))
|
|
3574
|
+
|
|
3575
|
+
def readIPdu(self, element: ET.Element, pdu: IPdu):
|
|
3576
|
+
self.readPdu(element, pdu)
|
|
2915
3577
|
|
|
2916
3578
|
def readNPdu(self, element: ET.Element, pdu: NPdu):
|
|
2917
3579
|
self.logger.debug("Read NPdu <%s>" % pdu.getShortName())
|
|
2918
3580
|
self.readIPdu(element, pdu)
|
|
2919
3581
|
|
|
2920
|
-
def readIPdu(self, element: ET.Element, pdu: IPdu):
|
|
2921
|
-
self.readIdentifiable(element, pdu)
|
|
2922
|
-
pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH"))
|
|
2923
|
-
|
|
2924
3582
|
def readDcmIPdu(self, element: ET.Element, i_pdu: DcmIPdu):
|
|
2925
3583
|
self.logger.debug("Read DcmIPdu <%s>" % i_pdu.getShortName())
|
|
2926
3584
|
self.readIPdu(element, i_pdu)
|
|
2927
3585
|
i_pdu.setDiagPduType(self.getChildElementOptionalLiteral(element, "DIAG-PDU-TYPE"))
|
|
2928
3586
|
|
|
3587
|
+
def getSecureCommunicationProps(self, element: ET.Element, key: str) -> SecureCommunicationProps:
|
|
3588
|
+
props = None
|
|
3589
|
+
child_element = self.find(element, key)
|
|
3590
|
+
if child_element is not None:
|
|
3591
|
+
props = SecureCommunicationProps()
|
|
3592
|
+
props.setAuthDataFreshnessLength(self.getChildElementOptionalPositiveInteger(child_element, "AUTH-DATA-FRESHNESS-LENGTH")) \
|
|
3593
|
+
.setAuthDataFreshnessStartPosition(self.getChildElementOptionalPositiveInteger(child_element, "AUTH-DATA-FRESHNESS-START-POSITION")) \
|
|
3594
|
+
.setAuthInfoTxLength(self.getChildElementOptionalPositiveInteger(child_element, "AUTH-INFO-TX-LENGTH")) \
|
|
3595
|
+
.setAuthenticationBuildAttempts(self.getChildElementOptionalPositiveInteger(child_element, "AUTHENTICATION-BUILD-ATTEMPTS")) \
|
|
3596
|
+
.setAuthenticationRetries(self.getChildElementOptionalPositiveInteger(child_element, "AUTHENTICATION-RETRIES")) \
|
|
3597
|
+
.setDataId(self.getChildElementOptionalPositiveInteger(child_element, "DATA-ID")) \
|
|
3598
|
+
.setFreshnessValueId(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-ID")) \
|
|
3599
|
+
.setFreshnessValueLength(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-LENGTH")) \
|
|
3600
|
+
.setFreshnessValueTxLength(self.getChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-TX-LENGTH")) # NOQA E501
|
|
3601
|
+
return props
|
|
3602
|
+
|
|
2929
3603
|
def readSecuredIPdu(self, element: ET.Element, i_pdu: SecuredIPdu):
|
|
2930
3604
|
self.logger.debug("Read SecuredIPdu <%s>" % i_pdu.getShortName())
|
|
2931
3605
|
self.readIPdu(element, i_pdu)
|
|
3606
|
+
i_pdu.setAuthenticationPropsRef(self.getChildElementOptionalRefType(element, "AUTHENTICATION-PROPS-REF")) \
|
|
3607
|
+
.setFreshnessPropsRef(self.getChildElementOptionalRefType(element, "FRESHNESS-PROPS-REF")) \
|
|
3608
|
+
.setPayloadRef(self.getChildElementOptionalRefType(element, "PAYLOAD-REF")) \
|
|
3609
|
+
.setSecureCommunicationProps(self.getSecureCommunicationProps(element, "SECURE-COMMUNICATION-PROPS")) \
|
|
3610
|
+
.setUseAsCryptographicIPdu(self.getChildElementOptionalBooleanValue(element, "USE-AS-CRYPTOGRAPHIC-I-PDU"))
|
|
2932
3611
|
|
|
2933
3612
|
def readNmNode(self, element: ET.Element, nm_node: NmNode):
|
|
2934
3613
|
self.readIdentifiable(element, nm_node)
|
|
2935
3614
|
|
|
2936
3615
|
nm_node.setControllerRef(self.getChildElementOptionalRefType(element, "CONTROLLER-REF")) \
|
|
2937
|
-
|
|
2938
|
-
|
|
3616
|
+
.setNmIfEcuRef(self.getChildElementOptionalRefType(element, "NM-IF-ECU-REF")) \
|
|
3617
|
+
.setNmPassiveModeEnabled(self.getChildElementOptionalBooleanValue(element, "NM-PASSIVE-MODE-ENABLED")) \
|
|
3618
|
+
.setNmNodeId(self.getChildElementOptionalNumericalValue(element, "NM-NODE-ID"))
|
|
2939
3619
|
for ref in self.getChildElementRefTypeList(element, "RX-NM-PDU-REFS/RX-NM-PDU-REF"):
|
|
2940
3620
|
nm_node.addRxNmPduRef(ref)
|
|
2941
3621
|
for ref in self.getChildElementRefTypeList(element, "TX-NM-PDU-REFS/TX-NM-PDU-REF"):
|
|
2942
3622
|
nm_node.addTxNmPduRefs(ref)
|
|
2943
3623
|
|
|
2944
3624
|
def readCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
|
|
2945
|
-
self.logger.debug("Read CanNmNode
|
|
2946
|
-
|
|
3625
|
+
self.logger.debug("Read CanNmNode <%s>" % nm_node.getShortName())
|
|
2947
3626
|
self.readNmNode(element, nm_node)
|
|
2948
|
-
|
|
2949
|
-
|
|
3627
|
+
nm_node.setNmCarWakeUpRxEnabled(self.getChildElementOptionalBooleanValue(element, "NM-CAR-WAKE-UP-RX-ENABLED")) \
|
|
3628
|
+
.setNmMsgCycleOffset(self.getChildElementOptionalFloatValue(element, "NM-MSG-CYCLE-OFFSET")) \
|
|
2950
3629
|
.setNmMsgReducedTime(self.getChildElementOptionalFloatValue(element, "NM-MSG-REDUCED-TIME")) \
|
|
2951
3630
|
.setNmRangeConfig(self.getChildElementRxIdentifierRange(element, "NM-RANGE-CONFIG"))
|
|
2952
3631
|
|
|
2953
3632
|
def readUdpNmNode(self, element: ET.Element, nm_node: UdpNmNode):
|
|
2954
|
-
self.logger.debug("Read UdpNmNode
|
|
2955
|
-
|
|
3633
|
+
self.logger.debug("Read UdpNmNode <%s>" % nm_node.getShortName())
|
|
2956
3634
|
self.readNmNode(element, nm_node)
|
|
3635
|
+
nm_node.setNmMsgCycleOffset(self.getChildElementOptionalTimeValue(element, "NM-MSG-CYCLE-OFFSET"))
|
|
2957
3636
|
|
|
2958
|
-
def readNmClusterNmNodes(self, element: ET.Element,
|
|
2959
|
-
self.logger.debug("readNmConfigNmNodes %s" %
|
|
3637
|
+
def readNmClusterNmNodes(self, element: ET.Element, cluster: NmCluster):
|
|
3638
|
+
self.logger.debug("readNmConfigNmNodes %s" % cluster.getShortName())
|
|
2960
3639
|
for child_element in self.findall(element, "NM-NODES/*"):
|
|
2961
3640
|
tag_name = self.getTagName(child_element)
|
|
2962
3641
|
if tag_name == "CAN-NM-NODE":
|
|
2963
|
-
nm_node =
|
|
3642
|
+
nm_node = cluster.createCanNmNode(self.getShortName(child_element))
|
|
2964
3643
|
self.readCanNmNode(child_element, nm_node)
|
|
2965
3644
|
elif tag_name == "UDP-NM-NODE":
|
|
2966
|
-
nm_node =
|
|
3645
|
+
nm_node = cluster.readUdpNmNode(self.getShortName(child_element))
|
|
2967
3646
|
self.readUdpNmNode(child_element, nm_node)
|
|
2968
3647
|
else:
|
|
2969
|
-
self.
|
|
3648
|
+
self.notImplemented("Unsupported Nm Node <%s>" % tag_name)
|
|
2970
3649
|
|
|
2971
3650
|
def getCanNmClusterCoupling(self, element: ET.Element) -> CanNmClusterCoupling:
|
|
2972
|
-
coupling
|
|
2973
|
-
|
|
3651
|
+
coupling = CanNmClusterCoupling()
|
|
2974
3652
|
for ref in self.getChildElementRefTypeList(element, "COUPLED-CLUSTER-REFS/COUPLED-CLUSTER-REF"):
|
|
2975
3653
|
coupling.addCoupledClusterRef(ref)
|
|
2976
|
-
|
|
2977
3654
|
coupling.setNmBusloadReductionEnabled(self.getChildElementOptionalBooleanValue(element, "NM-BUSLOAD-REDUCTION-ENABLED")) \
|
|
2978
3655
|
.setNmImmediateRestartEnabled(self.getChildElementOptionalBooleanValue(element, "NM-IMMEDIATE-RESTART-ENABLED"))
|
|
2979
|
-
|
|
2980
3656
|
return coupling
|
|
2981
3657
|
|
|
2982
3658
|
def getUdpNmClusterCoupling(self, element: ET.Element) -> UdpNmClusterCoupling:
|
|
2983
3659
|
coupling = UdpNmClusterCoupling()
|
|
3660
|
+
for ref in self.getChildElementRefTypeList(element, "COUPLED-CLUSTER-REFS/COUPLED-CLUSTER-REF"):
|
|
3661
|
+
coupling.addCoupledClusterRef(ref)
|
|
3662
|
+
coupling.setNmImmediateRestartEnabled(self.getChildElementOptionalBooleanValue(element, "NM-IMMEDIATE-RESTART-ENABLED"))
|
|
2984
3663
|
return coupling
|
|
2985
3664
|
|
|
2986
3665
|
def readNmConfigNmClusterCouplings(self, element: ET.Element, nm_config: NmConfig):
|
|
2987
|
-
self.logger.debug("readNmClusterNmClusterCouplings %s" % nm_config.getShortName())
|
|
2988
3666
|
for child_element in self.findall(element, "NM-CLUSTER-COUPLINGS/*"):
|
|
2989
3667
|
tag_name = self.getTagName(child_element)
|
|
2990
3668
|
if tag_name == "CAN-NM-CLUSTER-COUPLING":
|
|
@@ -2995,6 +3673,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2995
3673
|
self.notImplemented("Unsupported Nm Node <%s>" % tag_name)
|
|
2996
3674
|
|
|
2997
3675
|
def readNmCluster(self, element: ET.Element, cluster: NmCluster):
|
|
3676
|
+
self.logger.debug("read NmCluster %s" % cluster.getShortName())
|
|
2998
3677
|
self.readIdentifiable(element, cluster)
|
|
2999
3678
|
cluster.setCommunicationClusterRef(self.getChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF")) \
|
|
3000
3679
|
.setNmChannelId(self.getChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID")) \
|
|
@@ -3002,12 +3681,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3002
3681
|
self.readNmClusterNmNodes(element, cluster)
|
|
3003
3682
|
cluster.setNmSynchronizingNetwork(self.getChildElementOptionalBooleanValue(element, "NM-SYNCHRONIZING-NETWORK"))
|
|
3004
3683
|
|
|
3005
|
-
def readCanNmCluster(self, element: ET.Element,
|
|
3006
|
-
|
|
3007
|
-
self.logger.debug("readCanNmCluster %s" % short_name)
|
|
3008
|
-
cluster = parent.createCanNmCluster(short_name) # type: CanNmCluster
|
|
3684
|
+
def readCanNmCluster(self, element: ET.Element, cluster: CanNmCluster):
|
|
3685
|
+
self.logger.debug("Read CanNmCluster <%s>" % cluster.getShortName())
|
|
3009
3686
|
self.readNmCluster(element, cluster)
|
|
3010
|
-
|
|
3011
3687
|
cluster.setNmBusloadReductionActive(self.getChildElementOptionalBooleanValue(element, "NM-BUSLOAD-REDUCTION-ACTIVE")) \
|
|
3012
3688
|
.setNmCarWakeUpRxEnabled(self.getChildElementOptionalBooleanValue(element, "NM-CAR-WAKE-UP-RX-ENABLED")) \
|
|
3013
3689
|
.setNmCbvPosition(self.getChildElementOptionalNumericalValue(element, "NM-CBV-POSITION")) \
|
|
@@ -3023,40 +3699,380 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3023
3699
|
.setNmUserDataLength(self. getChildElementOptionalNumericalValue(element, "NM-USER-DATA-LENGTH")) \
|
|
3024
3700
|
.setNmWaitBusSleepTime(self.getChildElementOptionalFloatValue(element, "NM-WAIT-BUS-SLEEP-TIME"))
|
|
3025
3701
|
|
|
3026
|
-
def readUdpNmCluster(self, element: ET.Element,
|
|
3027
|
-
|
|
3028
|
-
self.logger.debug("readCanNmCluster %s" % short_name)
|
|
3029
|
-
cluster = parent.createUdpNmCluster(short_name) # type: CanNmCluster
|
|
3702
|
+
def readUdpNmCluster(self, element: ET.Element, cluster: UdpNmCluster):
|
|
3703
|
+
self.logger.debug("Read UdpNmCluster %s" % cluster.getShortName())
|
|
3030
3704
|
self.readNmCluster(element, cluster)
|
|
3705
|
+
cluster.setNmCbvPosition(self.getChildElementOptionalIntegerValue(element, "NM-CBV-POSITION")) \
|
|
3706
|
+
.setNmChannelActive(self.getChildElementOptionalBooleanValue(element, "NM-CHANNEL-ACTIVE")) \
|
|
3707
|
+
.setNmImmediateNmCycleTime(self.getChildElementOptionalTimeValue(element, "NM-IMMEDIATE-NM-CYCLE-TIME")) \
|
|
3708
|
+
.setNmImmediateNmTransmissions(self.getChildElementOptionalPositiveInteger(element, "NM-IMMEDIATE-NM-TRANSMISSIONS")) \
|
|
3709
|
+
.setNmMessageTimeoutTime(self.getChildElementOptionalTimeValue(element, "NM-MESSAGE-TIMEOUT-TIME")) \
|
|
3710
|
+
.setNmMsgCycleTime(self.getChildElementOptionalTimeValue(element, "NM-MSG-CYCLE-TIME")) \
|
|
3711
|
+
.setNmNetworkTimeout(self.getChildElementOptionalTimeValue(element, "NM-NETWORK-TIMEOUT")) \
|
|
3712
|
+
.setNmNidPosition(self.getChildElementOptionalIntegerValue(element, "NM-NID-POSITION")) \
|
|
3713
|
+
.setNmRemoteSleepIndicationTime(self.getChildElementOptionalTimeValue(element, "NM-REMOTE-SLEEP-INDICATION-TIME")) \
|
|
3714
|
+
.setNmRepeatMessageTime(self.getChildElementOptionalTimeValue(element, "NM-REPEAT-MESSAGE-TIME")) \
|
|
3715
|
+
.setNmWaitBusSleepTime(self.getChildElementOptionalTimeValue(element, "NM-WAIT-BUS-SLEEP-TIME")) \
|
|
3716
|
+
.setVlanRef(self.getChildElementOptionalRefType(element, "VLAN-REF"))
|
|
3031
3717
|
|
|
3032
|
-
def readNmConfigNmClusters(self, element: ET.Element,
|
|
3718
|
+
def readNmConfigNmClusters(self, element: ET.Element, nm_config: NmConfig):
|
|
3033
3719
|
for child_element in self.findall(element, "NM-CLUSTERS/*"):
|
|
3034
3720
|
tag_name = self.getTagName(child_element)
|
|
3035
3721
|
if tag_name == "CAN-NM-CLUSTER":
|
|
3036
|
-
self.
|
|
3722
|
+
cluster = nm_config.createCanNmCluster(self.getShortName(child_element))
|
|
3723
|
+
self.readCanNmCluster(child_element, cluster)
|
|
3037
3724
|
elif tag_name == "UDP-NM-CLUSTER":
|
|
3038
|
-
self.
|
|
3725
|
+
cluster = nm_config.createUdpNmCluster(self.getShortName(child_element))
|
|
3726
|
+
self.readUdpNmCluster(child_element, cluster)
|
|
3039
3727
|
else:
|
|
3040
3728
|
self.raiseError("Unsupported Nm Cluster <%s>" % tag_name)
|
|
3729
|
+
|
|
3730
|
+
def readUdpNmEcu(self, element: ET.Element, ecu: UdpNmEcu):
|
|
3731
|
+
ecu.setNmSynchronizationPointEnabled(self.getChildElementOptionalBooleanValue(element, "NM-SYNCHRONIZATION-POINT-ENABLED"))
|
|
3732
|
+
|
|
3733
|
+
def readBusDependentNmEcus(self, element: ET.Element, nm_ecu: NmEcu):
|
|
3734
|
+
for child_element in self.findall(element, "BUS-DEPENDENT-NM-ECUS/*"):
|
|
3735
|
+
tag_name = self.getTagName(child_element)
|
|
3736
|
+
if tag_name == "UDP-NM-ECU":
|
|
3737
|
+
udp_nm_ecu = UdpNmEcu()
|
|
3738
|
+
self.readUdpNmEcu(child_element, udp_nm_ecu)
|
|
3739
|
+
nm_ecu.addBusDependentNmEcu(udp_nm_ecu)
|
|
3740
|
+
else:
|
|
3741
|
+
self.notImplemented("Unsupported BusDependentNmEcu <%s>" % tag_name)
|
|
3742
|
+
|
|
3743
|
+
def readNmEcu(self, element: ET.Element, nm_ecu: NmEcu):
|
|
3744
|
+
self.readIdentifiable(element, nm_ecu)
|
|
3745
|
+
self.readBusDependentNmEcus(element, nm_ecu)
|
|
3746
|
+
nm_ecu.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF")) \
|
|
3747
|
+
.setNmBusSynchronizationEnabled(self.getChildElementOptionalBooleanValue(element, "NM-BUS-SYNCHRONIZATION-ENABLED")) \
|
|
3748
|
+
.setNmComControlEnabled(self.getChildElementOptionalBooleanValue(element, "NM-COM-CONTROL-ENABLED")) \
|
|
3749
|
+
.setNmNodeDetectionEnabled(self.getChildElementOptionalBooleanValue(element, "NM-NODE-DETECTION-ENABLED")) \
|
|
3750
|
+
.setNmNodeIdEnabled(self.getChildElementOptionalBooleanValue(element, "NM-NODE-ID-ENABLED")) \
|
|
3751
|
+
.setNmPduRxIndicationEnabled(self.getChildElementOptionalBooleanValue(element, "NM-PDU-RX-INDICATION-ENABLED")) \
|
|
3752
|
+
.setNmRemoteSleepIndEnabled(self.getChildElementOptionalBooleanValue(element, "NM-REMOTE-SLEEP-IND-ENABLED")) \
|
|
3753
|
+
.setNmRepeatMsgIndEnabled(self.getChildElementOptionalBooleanValue(element, "NM-REPEAT-MSG-IND-ENABLED")) \
|
|
3754
|
+
.setNmStateChangeIndEnabled(self.getChildElementOptionalBooleanValue(element, "NM-STATE-CHANGE-IND-ENABLED")) \
|
|
3755
|
+
.setNmUserDataEnabled(self.getChildElementOptionalBooleanValue(element, "NM-USER-DATA-ENABLED"))
|
|
3756
|
+
|
|
3757
|
+
def readNmConfigNmIfEcus(self, element: ET.Element, nm_config: NmConfig):
|
|
3758
|
+
for child_element in self.findall(element, "NM-IF-ECUS/*"):
|
|
3759
|
+
tag_name = self.getTagName(child_element)
|
|
3760
|
+
if tag_name == "NM-ECU":
|
|
3761
|
+
ecu = nm_config.createNmEcu(self.getShortName(child_element))
|
|
3762
|
+
self.readNmEcu(child_element, ecu)
|
|
3763
|
+
else:
|
|
3764
|
+
self.notImplemented("Unsupported NmIfEcus <%s>" % tag_name)
|
|
3041
3765
|
|
|
3042
3766
|
def readNmConfig(self, element: ET.Element, config: NmConfig):
|
|
3043
3767
|
self.logger.debug("Read NmConfig <%s>" % config.getShortName())
|
|
3044
3768
|
self.readIdentifiable(element, config)
|
|
3045
3769
|
self.readNmConfigNmClusters(element, config)
|
|
3046
3770
|
self.readNmConfigNmClusterCouplings(element, config)
|
|
3771
|
+
self.readNmConfigNmIfEcus(element, config)
|
|
3772
|
+
|
|
3773
|
+
def readTpConfig(self, element: ET.Element, config: TpConfig):
|
|
3774
|
+
self.readIdentifiable(element, config)
|
|
3775
|
+
config.setCommunicationClusterRef(self.getChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF"))
|
|
3776
|
+
|
|
3777
|
+
def readCanTpAddress(self, element: ET.Element, address: CanTpAddress):
|
|
3778
|
+
self.readIdentifiable(element, address)
|
|
3779
|
+
address.setTpAddress(self.getChildElementOptionalIntegerValue(element, "TP-ADDRESS")) \
|
|
3780
|
+
.setTpAddressExtensionValue(self.getChildElementOptionalIntegerValue(element, "TP-ADDRESS-EXTENSION-VALUE"))
|
|
3781
|
+
|
|
3782
|
+
def readCanTpConfigTpAddresses(self, element: ET.Element, config: CanTpConfig):
|
|
3783
|
+
for child_element in self.findall(element, "TP-ADDRESSS/*"):
|
|
3784
|
+
tag_name = self.getTagName(child_element)
|
|
3785
|
+
if tag_name == "CAN-TP-ADDRESS":
|
|
3786
|
+
address = config.createCanTpAddress(self.getShortName(child_element))
|
|
3787
|
+
self.readCanTpAddress(child_element, address)
|
|
3788
|
+
else:
|
|
3789
|
+
self.notImplemented("Unsupported TpAddress <%s>" % tag_name)
|
|
3790
|
+
|
|
3791
|
+
def readCanTpChannel(self, element: ET.Element, channel: CanTpChannel):
|
|
3792
|
+
self.readIdentifiable(element, channel)
|
|
3793
|
+
channel.setChannelId(self.getChildElementOptionalPositiveInteger(element, "CHANNEL-ID")) \
|
|
3794
|
+
.setChannelMode(self.getChildElementOptionalLiteral(element, "CHANNEL-MODE"))
|
|
3795
|
+
|
|
3796
|
+
def readCanTpConfigTpChannels(self, element: ET.Element, config: CanTpConfig):
|
|
3797
|
+
for child_element in self.findall(element, "TP-CHANNELS/*"):
|
|
3798
|
+
tag_name = self.getTagName(child_element)
|
|
3799
|
+
if tag_name == "CAN-TP-CHANNEL":
|
|
3800
|
+
channel = config.createCanTpChannel(self.getShortName(child_element))
|
|
3801
|
+
self.readCanTpChannel(child_element, channel)
|
|
3802
|
+
else:
|
|
3803
|
+
self.notImplemented("Unsupported TpChannel <%s>" % tag_name)
|
|
3804
|
+
|
|
3805
|
+
def readTpConnection(self, element: ET.Element, connection: TpConnection):
|
|
3806
|
+
self.readARObjectAttributes(element, connection)
|
|
3807
|
+
child_element = self.find(element, "IDENT")
|
|
3808
|
+
if child_element is not None:
|
|
3809
|
+
ident = connection.createTpConnectionIdent(self.getShortName(child_element))
|
|
3810
|
+
self.readReferrable(child_element, ident)
|
|
3811
|
+
|
|
3812
|
+
def readTpConnectionReceiverRefs(self, element: ET.Element, connection: CanTpConnection):
|
|
3813
|
+
for ref in self.getChildElementRefTypeList(element, "RECEIVER-REFS/RECEIVER-REF"):
|
|
3814
|
+
connection.addReceiverRef(ref)
|
|
3815
|
+
|
|
3816
|
+
def readCanTpConnection(self, element: ET.Element, connection: CanTpConnection):
|
|
3817
|
+
self.readTpConnection(element, connection)
|
|
3818
|
+
connection.setAddressingFormat(self.getChildElementOptionalLiteral(element, "ADDRESSING-FORMAT")) \
|
|
3819
|
+
.setCanTpChannelRef(self.getChildElementOptionalRefType(element, "CAN-TP-CHANNEL-REF")) \
|
|
3820
|
+
.setCancellation(self.getChildElementOptionalBooleanValue(element, "CANCELLATION")) \
|
|
3821
|
+
.setDataPduRef(self.getChildElementOptionalRefType(element, "DATA-PDU-REF")) \
|
|
3822
|
+
.setFlowControlPduRef(self.getChildElementOptionalRefType(element, "FLOW-CONTROL-PDU-REF")) \
|
|
3823
|
+
.setMaxBlockSize(self.getChildElementOptionalIntegerValue(element, "MAX-BLOCK-SIZE")) \
|
|
3824
|
+
.setMulticastRef(self.getChildElementOptionalRefType(element, "MULTICAST-REF")) \
|
|
3825
|
+
.setPaddingActivation(self.getChildElementOptionalBooleanValue(element, "PADDING-ACTIVATION"))
|
|
3826
|
+
self.readTpConnectionReceiverRefs(element, connection)
|
|
3827
|
+
connection.setTaType(self.getChildElementOptionalLiteral(element, "TA-TYPE")) \
|
|
3828
|
+
.setTimeoutBr(self.getChildElementOptionalTimeValue(element, "TIMEOUT-BR")) \
|
|
3829
|
+
.setTimeoutBs(self.getChildElementOptionalTimeValue(element, "TIMEOUT-BS")) \
|
|
3830
|
+
.setTimeoutCr(self.getChildElementOptionalTimeValue(element, "TIMEOUT-CR")) \
|
|
3831
|
+
.setTimeoutCs(self.getChildElementOptionalTimeValue(element, "TIMEOUT-CS")) \
|
|
3832
|
+
.setTpSduRef(self.getChildElementOptionalRefType(element, "TP-SDU-REF")) \
|
|
3833
|
+
.setTransmitterRef(self.getChildElementOptionalRefType(element, "TRANSMITTER-REF"))
|
|
3834
|
+
|
|
3835
|
+
def readCanTpConfigTpConnections(self, element: ET.Element, config: CanTpConfig):
|
|
3836
|
+
for child_element in self.findall(element, "TP-CONNECTIONS/*"):
|
|
3837
|
+
tag_name = self.getTagName(child_element)
|
|
3838
|
+
if tag_name == "CAN-TP-CONNECTION":
|
|
3839
|
+
connection = CanTpConnection()
|
|
3840
|
+
self.readCanTpConnection(child_element, connection)
|
|
3841
|
+
config.addTpConnection(connection)
|
|
3842
|
+
else:
|
|
3843
|
+
self.notImplemented("Unsupported TpConnection <%s>" % tag_name)
|
|
3844
|
+
|
|
3845
|
+
def readCanTpEcu(self, element: ET.Element, tp_ecu: CanTpEcu):
|
|
3846
|
+
tp_ecu.setCycleTimeMainFunction(self.getChildElementOptionalTimeValue(element, "CYCLE-TIME-MAIN-FUNCTION")) \
|
|
3847
|
+
.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
|
|
3848
|
+
|
|
3849
|
+
def readCanTpConfigTpEcus(self, element: ET.Element, config: CanTpConfig):
|
|
3850
|
+
for child_element in self.findall(element, "TP-ECUS/*"):
|
|
3851
|
+
tag_name = self.getTagName(child_element)
|
|
3852
|
+
if tag_name == "CAN-TP-ECU":
|
|
3853
|
+
tp_ecu = CanTpEcu()
|
|
3854
|
+
self.readCanTpEcu(child_element, tp_ecu)
|
|
3855
|
+
config.addTpEcu(tp_ecu)
|
|
3856
|
+
else:
|
|
3857
|
+
self.notImplemented("Unsupported TpEcu <%s>" % tag_name)
|
|
3858
|
+
|
|
3859
|
+
def readCanTpNode(self, element: ET.Element, tp_node: CanTpNode):
|
|
3860
|
+
self.readIdentifiable(element, tp_node)
|
|
3861
|
+
tp_node.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF")) \
|
|
3862
|
+
.setMaxFcWait(self.getChildElementOptionalIntegerValue(element, "MAX-FC-WAIT")) \
|
|
3863
|
+
.setStMin(self.getChildElementOptionalTimeValue(element, "ST-MIN")) \
|
|
3864
|
+
.setTimeoutAr(self.getChildElementOptionalTimeValue(element, "TIMEOUT-AR")) \
|
|
3865
|
+
.setTimeoutAs(self.getChildElementOptionalTimeValue(element, "TIMEOUT-AS")) \
|
|
3866
|
+
.setTpAddressRef(self.getChildElementOptionalRefType(element, "TP-ADDRESS-REF"))
|
|
3867
|
+
|
|
3868
|
+
def readCanTpConfigTpNodes(self, element: ET.Element, config: CanTpConfig):
|
|
3869
|
+
for child_element in self.findall(element, "TP-NODES/*"):
|
|
3870
|
+
tag_name = self.getTagName(child_element)
|
|
3871
|
+
if tag_name == "CAN-TP-NODE":
|
|
3872
|
+
tp_node = config.createCanTpNode(self.getShortName(child_element))
|
|
3873
|
+
self.readCanTpNode(child_element, tp_node)
|
|
3874
|
+
else:
|
|
3875
|
+
self.notImplemented("Unsupported TpNode <%s>" % tag_name)
|
|
3047
3876
|
|
|
3048
3877
|
def readCanTpConfig(self, element: ET.Element, config: CanTpConfig):
|
|
3049
3878
|
self.logger.debug("Read CanTpConfig <%s>" % config.getShortName())
|
|
3050
|
-
self.
|
|
3879
|
+
self.readTpConfig(element, config)
|
|
3880
|
+
self.readCanTpConfigTpAddresses(element, config)
|
|
3881
|
+
self.readCanTpConfigTpChannels(element, config)
|
|
3882
|
+
self.readCanTpConfigTpConnections(element, config)
|
|
3883
|
+
self.readCanTpConfigTpEcus(element, config)
|
|
3884
|
+
self.readCanTpConfigTpNodes(element, config)
|
|
3885
|
+
|
|
3886
|
+
def readTpAddress(self, element: ET.Element, address: TpAddress):
|
|
3887
|
+
self.readIdentifiable(element, address)
|
|
3888
|
+
address.setTpAddress(self.getChildElementOptionalIntegerValue(element, "TP-ADDRESS"))
|
|
3889
|
+
|
|
3890
|
+
def readLinTpConfigTpAddresses(self, element: ET.Element, config: LinTpConfig):
|
|
3891
|
+
for child_element in self.findall(element, "TP-ADDRESSS/*"):
|
|
3892
|
+
tag_name = self.getTagName(child_element)
|
|
3893
|
+
if tag_name == "TP-ADDRESS":
|
|
3894
|
+
address = config.createTpAddress(self.getShortName(child_element))
|
|
3895
|
+
self.readTpAddress(child_element, address)
|
|
3896
|
+
else:
|
|
3897
|
+
self.notImplemented("Unsupported TpAddress <%s>" % tag_name)
|
|
3898
|
+
|
|
3899
|
+
def readLinTpConnection(self, element: ET.Element, connection: LinTpConnection):
|
|
3900
|
+
self.readTpConnection(element, connection)
|
|
3901
|
+
connection.setDataPduRef(self.getChildElementOptionalRefType(element, "DATA-PDU-REF")) \
|
|
3902
|
+
.setFlowControlRef(self.getChildElementOptionalRefType(element, "FLOW-CONTROL-REF")) \
|
|
3903
|
+
.setLinTpNSduRef(self.getChildElementOptionalRefType(element, "LIN-TP-N-SDU-REF"))
|
|
3904
|
+
self.readTpConnectionReceiverRefs(element, connection)
|
|
3905
|
+
connection.setTimeoutAs(self.getChildElementOptionalTimeValue(element, "TIMEOUT-AS")) \
|
|
3906
|
+
.setTimeoutCr(self.getChildElementOptionalTimeValue(element, "TIMEOUT-CR")) \
|
|
3907
|
+
.setTimeoutCs(self.getChildElementOptionalTimeValue(element, "TIMEOUT-CS")) \
|
|
3908
|
+
.setTransmitterRef(self.getChildElementOptionalRefType(element, "TRANSMITTER-REF"))
|
|
3909
|
+
|
|
3910
|
+
def readLinTpConfigTpConnections(self, element: ET.Element, config: LinTpConfig):
|
|
3911
|
+
for child_element in self.findall(element, "TP-CONNECTIONS/*"):
|
|
3912
|
+
tag_name = self.getTagName(child_element)
|
|
3913
|
+
if tag_name == "LIN-TP-CONNECTION":
|
|
3914
|
+
connection = LinTpConnection()
|
|
3915
|
+
self.readLinTpConnection(child_element, connection)
|
|
3916
|
+
config.addTpConnection(connection)
|
|
3917
|
+
else:
|
|
3918
|
+
self.notImplemented("Unsupported TpConnection <%s>" % tag_name)
|
|
3919
|
+
|
|
3920
|
+
def readLinTpNode(self, element: ET.Element, tp_node: LinTpNode):
|
|
3921
|
+
self.readIdentifiable(element, tp_node)
|
|
3922
|
+
tp_node.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF")) \
|
|
3923
|
+
.setDropNotRequestedNad(self.getChildElementOptionalBooleanValue(element, "DROP-NOT-REQUESTED-NAD")) \
|
|
3924
|
+
.setP2Max(self.getChildElementOptionalTimeValue(element, "P-2-MAX")) \
|
|
3925
|
+
.setP2Timing(self.getChildElementOptionalTimeValue(element, "P-2-TIMING")) \
|
|
3926
|
+
.setTpAddressRef(self.getChildElementOptionalRefType(element, "TP-ADDRESS-REF"))
|
|
3927
|
+
|
|
3928
|
+
def readLinTpConfigTpNodes(self, element: ET.Element, config: LinTpConfig):
|
|
3929
|
+
for child_element in self.findall(element, "TP-NODES/*"):
|
|
3930
|
+
tag_name = self.getTagName(child_element)
|
|
3931
|
+
if tag_name == "LIN-TP-NODE":
|
|
3932
|
+
tp_node = config.createLinTpNode(self.getShortName(child_element))
|
|
3933
|
+
self.readLinTpNode(child_element, tp_node)
|
|
3934
|
+
else:
|
|
3935
|
+
self.notImplemented("Unsupported TpNode <%s>" % tag_name)
|
|
3051
3936
|
|
|
3052
3937
|
def readLinTpConfig(self, element: ET.Element, config: LinTpConfig):
|
|
3053
3938
|
self.logger.debug("Read LinTpConfig <%s>" % config.getShortName())
|
|
3054
|
-
self.
|
|
3939
|
+
self.readTpConfig(element, config)
|
|
3940
|
+
self.readLinTpConfigTpAddresses(element, config)
|
|
3941
|
+
self.readLinTpConfigTpConnections(element, config)
|
|
3942
|
+
self.readLinTpConfigTpNodes(element, config)
|
|
3055
3943
|
|
|
3056
3944
|
def readCanFrame(self, element: ET.Element, frame: CanFrame):
|
|
3057
3945
|
self.logger.debug("Read CanFrame <%s>" % frame.getShortName())
|
|
3058
3946
|
self.readFrame(element, frame)
|
|
3059
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
|
+
|
|
3060
4076
|
def readCommunicationController(self, element: ET.Element, controller: CommunicationController):
|
|
3061
4077
|
controller.setWakeUpByControllerSupported(self.getChildElementOptionalBooleanValue(element, "WAKE-UP-BY-CONTROLLER-SUPPORTED"))
|
|
3062
4078
|
|
|
@@ -3065,7 +4081,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3065
4081
|
child_element = self.find(element, key)
|
|
3066
4082
|
if child_element is not None:
|
|
3067
4083
|
configuration = CanControllerFdConfiguration()
|
|
3068
|
-
#TODO: need to implemented
|
|
4084
|
+
# TODO: need to implemented
|
|
3069
4085
|
return configuration
|
|
3070
4086
|
|
|
3071
4087
|
def getCanControllerFdConfigurationRequirements(self, element: ET.Element, key: str) -> CanControllerFdConfigurationRequirements:
|
|
@@ -3081,7 +4097,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3081
4097
|
.setMinSamplePoint(self.getChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT")) \
|
|
3082
4098
|
.setMinSyncJumpWidth(self.getChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH")) \
|
|
3083
4099
|
.setMinTrcvDelayCompensationOffset(self.getChildElementOptionalTimeValue(child_element, "MIN-TRCV-DELAY-COMPENSATION-OFFSET")) \
|
|
3084
|
-
.setTxBitRateSwitch(self.getChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH"))
|
|
4100
|
+
.setTxBitRateSwitch(self.getChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH")) # NOQA E501
|
|
3085
4101
|
return requirements
|
|
3086
4102
|
|
|
3087
4103
|
def readAbstractCanCommunicationControllerAttributes(self, element: ET.Element, attributes: AbstractCanCommunicationControllerAttributes):
|
|
@@ -3171,9 +4187,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3171
4187
|
for child_element in self.findall(element, "VLAN-MEMBERSHIPS/*"):
|
|
3172
4188
|
tag_name = self.getTagName(child_element)
|
|
3173
4189
|
if tag_name == "VLAN-MEMBERSHIP":
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
4190
|
+
membership = VlanMembership()
|
|
4191
|
+
self.readVlanMembership(child_element, membership)
|
|
4192
|
+
port.addVlanMembership(membership)
|
|
3177
4193
|
else:
|
|
3178
4194
|
self.notImplemented("Unsupported VlanMembership <%s>" % tag_name)
|
|
3179
4195
|
|
|
@@ -3212,7 +4228,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3212
4228
|
self.readLinCommunicationController(child_element, controller)
|
|
3213
4229
|
controller.setTimeBase(self.getChildElementOptionalTimeValue(child_element, "TIME-BASE")) \
|
|
3214
4230
|
.setTimeBaseJitter(self.getChildElementOptionalTimeValue(child_element, "TIME-BASE-JITTER"))
|
|
3215
|
-
|
|
3216
4231
|
|
|
3217
4232
|
def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
|
|
3218
4233
|
self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
|
|
@@ -3227,6 +4242,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3227
4242
|
elif tag_name == "LIN-MASTER":
|
|
3228
4243
|
controller = instance.createLinMaster(self.getShortName(child_element))
|
|
3229
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)
|
|
3230
4248
|
else:
|
|
3231
4249
|
self.raiseError("Unsupported Communication Controller <%s>" % tag_name)
|
|
3232
4250
|
|
|
@@ -3241,7 +4259,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3241
4259
|
self.readCommConnectorPort(element, port)
|
|
3242
4260
|
port.setKeyId(self.getChildElementOptionalPositiveInteger(element, "KEY-ID")) \
|
|
3243
4261
|
.setRxSecurityVerification(self.getChildElementOptionalBooleanValue(element, "RX-SECURITY-VERIFICATION")) \
|
|
3244
|
-
.setUseAuthDataFreshness(self.getChildElementOptionalBooleanValue(element, "USE-AUTH-DATA-FRESHNESS"))
|
|
4262
|
+
.setUseAuthDataFreshness(self.getChildElementOptionalBooleanValue(element, "USE-AUTH-DATA-FRESHNESS"))
|
|
3245
4263
|
|
|
3246
4264
|
def readISignalPort(self, element: ET.Element, port: ISignalPort):
|
|
3247
4265
|
self.readCommConnectorPort(element, port)
|
|
@@ -3261,7 +4279,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3261
4279
|
port = connector.createISignalPort(self.getShortName(child_element))
|
|
3262
4280
|
self.readISignalPort(child_element, port)
|
|
3263
4281
|
else:
|
|
3264
|
-
self.raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
|
|
4282
|
+
self.raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
|
|
3265
4283
|
|
|
3266
4284
|
def readCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
|
|
3267
4285
|
self.readIdentifiable(element, connector)
|
|
@@ -3272,13 +4290,21 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3272
4290
|
def readCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
|
|
3273
4291
|
self.readCommunicationConnector(element, connector)
|
|
3274
4292
|
|
|
4293
|
+
def readEthernetCommunicationConnectorNetworkEndpointRefs(self, element: ET.Element, connector: EthernetCommunicationConnector):
|
|
4294
|
+
for ref in self.getChildElementRefTypeList(element, "NETWORK-ENDPOINT-REFS/NETWORK-ENDPOINT-REF"):
|
|
4295
|
+
connector.addNetworkEndpointRef(ref)
|
|
4296
|
+
|
|
3275
4297
|
def readEthernetCommunicationConnector(self, element: ET.Element, connector: EthernetCommunicationConnector):
|
|
3276
4298
|
self.readCommunicationConnector(element, connector)
|
|
3277
4299
|
connector.setMaximumTransmissionUnit(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-TRANSMISSION-UNIT"))
|
|
4300
|
+
self.readEthernetCommunicationConnectorNetworkEndpointRefs(element, connector)
|
|
3278
4301
|
|
|
3279
4302
|
def readLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
|
|
3280
4303
|
self.readCommunicationConnector(element, connector)
|
|
3281
4304
|
|
|
4305
|
+
def readFlexrayCommunicationConnector(self, element: ET.Element, connector: FlexrayCommunicationConnector):
|
|
4306
|
+
self.readCommunicationConnector(element, connector)
|
|
4307
|
+
|
|
3282
4308
|
def readEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
|
|
3283
4309
|
self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
|
|
3284
4310
|
for child_element in self.findall(element, "CONNECTORS/*"):
|
|
@@ -3292,6 +4318,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3292
4318
|
elif tag_name == "LIN-COMMUNICATION-CONNECTOR":
|
|
3293
4319
|
connector = instance.createLinCommunicationConnector(self.getShortName(child_element))
|
|
3294
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)
|
|
3295
4324
|
else:
|
|
3296
4325
|
self.notImplemented("Unsupported Communication Connector <%s>" % tag_name)
|
|
3297
4326
|
|
|
@@ -3309,7 +4338,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3309
4338
|
.setComEnableMDTForCyclicTransmission(self.getChildElementOptionalBooleanValue(element, "COM-ENABLE-MDT-FOR-CYCLIC-TRANSMISSION"))
|
|
3310
4339
|
self.readEcuInstanceCommControllers(element, instance)
|
|
3311
4340
|
self.readEcuInstanceConnectors(element, instance)
|
|
3312
|
-
instance.
|
|
4341
|
+
instance.setDiagnosticAddress(self.getChildElementOptionalIntegerValue(element, "DIAGNOSTIC-ADDRESS")) \
|
|
4342
|
+
.setSleepModeSupported(self.getChildElementOptionalBooleanValue(element, "SLEEP-MODE-SUPPORTED")) \
|
|
3313
4343
|
.setWakeUpOverBusSupported(self.getChildElementOptionalBooleanValue(element, "WAKE-UP-OVER-BUS-SUPPORTED"))
|
|
3314
4344
|
|
|
3315
4345
|
'''
|
|
@@ -3370,7 +4400,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3370
4400
|
|
|
3371
4401
|
def readEcucValueCollectionEcucValues(self, element: ET.Element, parent: EcucValueCollection):
|
|
3372
4402
|
for child_element in self.findall(element, "ECUC-VALUES/ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL"):
|
|
3373
|
-
ref = self.getChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF")
|
|
4403
|
+
ref = self.getChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF")
|
|
3374
4404
|
if (ref is not None):
|
|
3375
4405
|
parent.addEcucValueRef(ref)
|
|
3376
4406
|
self.logger.debug("EcucValue <%s> of EcucValueCollection <%s> has been added", ref.value, parent.getShortName())
|
|
@@ -3424,7 +4454,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3424
4454
|
child_element = self.find(element, key)
|
|
3425
4455
|
if child_element is not None:
|
|
3426
4456
|
instance_ref = AnyInstanceRef()
|
|
3427
|
-
instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF"))
|
|
4457
|
+
instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF"))
|
|
3428
4458
|
for ref in self.getChildElementRefTypeList(child_element, "CONTEXT-ELEMENT-REF"):
|
|
3429
4459
|
instance_ref.addContextElementRef(ref)
|
|
3430
4460
|
instance_ref.setTargetRef(self.getChildElementOptionalRefType(child_element, "TARGET-REF"))
|
|
@@ -3465,7 +4495,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3465
4495
|
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
3466
4496
|
self.readEcucContainerValueEcucContainerValue(child_element, parent)
|
|
3467
4497
|
else:
|
|
3468
|
-
self.notImplemented("Unsupported Sub Container %s" % tag_name)
|
|
4498
|
+
self.notImplemented("Unsupported Sub Container %s" % tag_name)
|
|
3469
4499
|
|
|
3470
4500
|
def readEcucModuleConfigurationValuesEcucContainerValue(self, element: ET.Element, parent: EcucModuleConfigurationValues):
|
|
3471
4501
|
short_name = self.getShortName(element)
|
|
@@ -3479,7 +4509,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3479
4509
|
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
3480
4510
|
self.readEcucModuleConfigurationValuesEcucContainerValue(child_element, values)
|
|
3481
4511
|
else:
|
|
3482
|
-
self.notImplemented("Unsupported Container %s" % tag_name)
|
|
4512
|
+
self.notImplemented("Unsupported Container %s" % tag_name)
|
|
3483
4513
|
|
|
3484
4514
|
def readEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
|
|
3485
4515
|
self.logger.debug("Read EcucModuleConfigurationValues %s" % values.getShortName())
|
|
@@ -3492,9 +4522,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3492
4522
|
def readPhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
|
|
3493
4523
|
self.logger.debug("Read PhysicalDimension <%s>" % dimension.getShortName())
|
|
3494
4524
|
self.readIdentifiable(element, dimension)
|
|
3495
|
-
dimension.
|
|
3496
|
-
.
|
|
3497
|
-
.
|
|
4525
|
+
dimension.setLengthExp(self.getChildElementOptionalNumericalValue(element, "LENGTH-EXP")) \
|
|
4526
|
+
.setLuminousIntensityExp(self.getChildElementOptionalNumericalValue(element, "LUMINOUS-INTENSITY-EXP")) \
|
|
4527
|
+
.setMassExp(self.getChildElementOptionalNumericalValue(element, "MASS-EXP")) \
|
|
4528
|
+
.setTemperatureExp(self.getChildElementOptionalNumericalValue(element, "TEMPERATURE-EXP")) \
|
|
4529
|
+
.setTimeExp(self.getChildElementOptionalNumericalValue(element, "TIME-EXP")) \
|
|
4530
|
+
.setCurrentExp(self.getChildElementOptionalNumericalValue(element, "CURRENT-EXP")) \
|
|
3498
4531
|
|
|
3499
4532
|
'''
|
|
3500
4533
|
def getIPduMappings(self, element: ET.Element) -> List[IPduMapping]:
|
|
@@ -3507,12 +4540,47 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3507
4540
|
return mappings
|
|
3508
4541
|
'''
|
|
3509
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
|
+
|
|
3510
4577
|
def readISignalGroup(self, element: ET.Element, group: ISignalGroup):
|
|
3511
4578
|
self.logger.debug("Read ISignalGroup <%s>" % group.getShortName())
|
|
3512
4579
|
self.readIdentifiable(element, group)
|
|
3513
|
-
|
|
3514
|
-
|
|
3515
|
-
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)
|
|
3516
4584
|
|
|
3517
4585
|
def readSystemSignal(self, element: ET.Element, signal: SystemSignal):
|
|
3518
4586
|
self.logger.debug("Read SystemSignal <%s>" % signal.getShortName())
|
|
@@ -3543,7 +4611,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3543
4611
|
child_element = self.find(element, key)
|
|
3544
4612
|
if child_element is not None:
|
|
3545
4613
|
filter = DataFilter()
|
|
3546
|
-
filter.setDataFilterType(self.getChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE"))
|
|
4614
|
+
filter.setDataFilterType(self.getChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE")) \
|
|
4615
|
+
.setMask(self.getChildElementOptionalIntegerValue(child_element, "MASK")) \
|
|
4616
|
+
.setX(self.getChildElementOptionalIntegerValue(child_element, "X"))
|
|
4617
|
+
|
|
3547
4618
|
return filter
|
|
3548
4619
|
|
|
3549
4620
|
def getTransmissionModeConditions(self, element: ET.Element, key: str) -> List[TransmissionModeCondition]:
|
|
@@ -3555,7 +4626,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3555
4626
|
.setISignalInIPduRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-IN-I-PDU-REF"))
|
|
3556
4627
|
result.append(condition)
|
|
3557
4628
|
return result
|
|
3558
|
-
|
|
4629
|
+
|
|
3559
4630
|
def getTimeRangeType(self, element: ET.Element, key: str) -> TimeRangeType:
|
|
3560
4631
|
time_range = None
|
|
3561
4632
|
child_element = self.find(element, key)
|
|
@@ -3563,7 +4634,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3563
4634
|
time_range = TimeRangeType()
|
|
3564
4635
|
time_range.setValue(self.getChildElementOptionalTimeValue(child_element, "VALUE"))
|
|
3565
4636
|
return time_range
|
|
3566
|
-
|
|
4637
|
+
|
|
3567
4638
|
def getCyclicTiming(self, element: ET.Element, key: str) -> CyclicTiming:
|
|
3568
4639
|
timing = None
|
|
3569
4640
|
child_element = self.find(element, key)
|
|
@@ -3595,11 +4666,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3595
4666
|
def getTransmissionModeDeclaration(self, element: ET.Element, key: str) -> TransmissionModeDeclaration:
|
|
3596
4667
|
decl = None
|
|
3597
4668
|
child_element = self.find(element, key)
|
|
3598
|
-
if child_element
|
|
4669
|
+
if child_element is not None:
|
|
3599
4670
|
decl = TransmissionModeDeclaration()
|
|
3600
4671
|
for condition in self.getTransmissionModeConditions(child_element, "TRANSMISSION-MODE-CONDITIONS/TRANSMISSION-MODE-CONDITION"):
|
|
3601
4672
|
decl.addTransmissionModeCondition(condition)
|
|
3602
|
-
decl.
|
|
4673
|
+
decl.setTransmissionModeFalseTiming(self.getTransmissionModeTiming(child_element, "TRANSMISSION-MODE-FALSE-TIMING")) \
|
|
4674
|
+
.setTransmissionModeTrueTiming(self.getTransmissionModeTiming(child_element, "TRANSMISSION-MODE-TRUE-TIMING"))
|
|
3603
4675
|
return decl
|
|
3604
4676
|
|
|
3605
4677
|
def getISignalIPduIPduTimingSpecification(self, element: ET.Element) -> IPduTiming:
|
|
@@ -3611,16 +4683,16 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3611
4683
|
.setTransmissionModeDeclaration(self.getTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION"))
|
|
3612
4684
|
return timing
|
|
3613
4685
|
|
|
3614
|
-
def readISignalIPdu(self, element: ET.Element,
|
|
3615
|
-
self.logger.debug("Read ISignalIPdu <%s>" %
|
|
3616
|
-
self.readIdentifiable(element,
|
|
3617
|
-
|
|
4686
|
+
def readISignalIPdu(self, element: ET.Element, ipdu: ISignalIPdu):
|
|
4687
|
+
self.logger.debug("Read ISignalIPdu <%s>" % ipdu.getShortName())
|
|
4688
|
+
self.readIdentifiable(element, ipdu)
|
|
4689
|
+
ipdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH")) \
|
|
3618
4690
|
.setIPduTimingSpecification(self.getISignalIPduIPduTimingSpecification(element))
|
|
3619
|
-
self.readISignalToPduMappings(element,
|
|
3620
|
-
|
|
4691
|
+
self.readISignalToPduMappings(element, ipdu)
|
|
4692
|
+
ipdu.setUnusedBitPattern(self.getChildElementOptionalIntegerValue(element, "UNUSED-BIT-PATTERN"))
|
|
3621
4693
|
|
|
3622
4694
|
def getISignalIPduRefs(self, element: ET.Element) -> List[RefType]:
|
|
3623
|
-
ref_types = []
|
|
4695
|
+
ref_types = []
|
|
3624
4696
|
for child_element in self.findall(element, "I-SIGNAL-I-PDUS/I-SIGNAL-I-PDU-REF-CONDITIONAL"):
|
|
3625
4697
|
ref_types.append(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-I-PDU-REF"))
|
|
3626
4698
|
return ref_types
|
|
@@ -3635,26 +4707,61 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3635
4707
|
for ref_type in self.getISignalIPduRefs(element):
|
|
3636
4708
|
group.addISignalIPduRef(ref_type)
|
|
3637
4709
|
|
|
3638
|
-
def
|
|
3639
|
-
mapping = SenderReceiverToSignalMapping()
|
|
4710
|
+
def readSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
|
|
3640
4711
|
mapping.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")) \
|
|
3641
4712
|
.setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF"))) \
|
|
3642
4713
|
.setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
|
|
3643
|
-
return mapping
|
|
3644
4714
|
|
|
3645
|
-
def
|
|
3646
|
-
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):
|
|
3647
4750
|
mapping.setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF")))
|
|
3648
4751
|
mapping.setSignalGroupRef(self.getChildElementOptionalRefType(element, "SIGNAL-GROUP-REF"))
|
|
3649
|
-
|
|
3650
|
-
|
|
4752
|
+
self.readSenderReceiverToSignalGroupMappingTypeMapping(element, mapping)
|
|
4753
|
+
|
|
3651
4754
|
def readSystemMappingDataMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
3652
4755
|
for child_element in self.findall(element, "DATA-MAPPINGS/*"):
|
|
3653
4756
|
tag_name = self.getTagName(child_element)
|
|
3654
4757
|
if tag_name == "SENDER-RECEIVER-TO-SIGNAL-MAPPING":
|
|
3655
|
-
|
|
4758
|
+
signal_mapping = SenderReceiverToSignalMapping()
|
|
4759
|
+
self.readSenderReceiverToSignalMapping(child_element, signal_mapping)
|
|
4760
|
+
mapping.addDataMapping(signal_mapping)
|
|
3656
4761
|
elif tag_name == "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING":
|
|
3657
|
-
|
|
4762
|
+
signal_group_mapping = SenderReceiverToSignalGroupMapping()
|
|
4763
|
+
self.readSenderReceiverToSignalGroupMapping(child_element, signal_group_mapping)
|
|
4764
|
+
mapping.addDataMapping(signal_group_mapping)
|
|
3658
4765
|
else:
|
|
3659
4766
|
self.notImplemented("Unsupported Data Mapping %s" % tag_name)
|
|
3660
4767
|
|
|
@@ -3664,31 +4771,62 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3664
4771
|
for child_element in self.findall(element, "COMPONENT-IREFS/COMPONENT-IREF"):
|
|
3665
4772
|
mapping.addComponentIRef(self.getComponentInSystemInstanceRef(child_element))
|
|
3666
4773
|
mapping.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
|
|
3667
|
-
|
|
4774
|
+
|
|
3668
4775
|
def readSystemMappingSwMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
3669
4776
|
for child_element in self.findall(element, "SW-MAPPINGS/*"):
|
|
3670
4777
|
tag_name = self.getTagName(child_element)
|
|
3671
4778
|
if tag_name == "SWC-TO-ECU-MAPPING":
|
|
3672
|
-
|
|
4779
|
+
swc_to_ecu_mapping = mapping.createSwcToEcuMapping(self.getShortName(child_element))
|
|
4780
|
+
self.readSwcToEcuMapping(child_element, swc_to_ecu_mapping)
|
|
3673
4781
|
else:
|
|
3674
4782
|
self.notImplemented("Unsupported Sw Mapping %s" % tag_name)
|
|
3675
4783
|
|
|
3676
|
-
def
|
|
3677
|
-
|
|
3678
|
-
self.
|
|
3679
|
-
|
|
4784
|
+
def readEcuMapping(self, element: ET.Element, mapping: ECUMapping):
|
|
4785
|
+
self.readIdentifiable(element, mapping)
|
|
4786
|
+
mapping.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF")) \
|
|
4787
|
+
.setEcuRef(self.getChildElementOptionalRefType(element, "ECU-REF"))
|
|
4788
|
+
|
|
4789
|
+
def readSystemMappingEcuResourceMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
4790
|
+
for child_element in self.findall(element, "ECU-RESOURCE-MAPPINGS/*"):
|
|
4791
|
+
tag_name = self.getTagName(child_element)
|
|
4792
|
+
if tag_name == "ECU-MAPPING":
|
|
4793
|
+
ecu_mapping = mapping.createECUMapping(self.getShortName(child_element))
|
|
4794
|
+
self.readEcuMapping(child_element, ecu_mapping)
|
|
4795
|
+
else:
|
|
4796
|
+
self.notImplemented("Unsupported EcuResourceMapping <%s>" % tag_name)
|
|
4797
|
+
|
|
4798
|
+
def readSwcToImplMapping(self, element: ET.Element, mapping: SwcToImplMapping):
|
|
4799
|
+
self.readIdentifiable(element, mapping)
|
|
4800
|
+
mapping.setComponentImplementationRef(self.getChildElementOptionalRefType(element, "COMPONENT-IMPLEMENTATION-REF"))
|
|
4801
|
+
for child_element in self.findall(element, "COMPONENT-IREFS/COMPONENT-IREF"):
|
|
4802
|
+
mapping.addComponentIRef(self.getComponentInSystemInstanceRef(child_element))
|
|
4803
|
+
|
|
4804
|
+
def readSystemMappingSwImplMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
4805
|
+
for child_element in self.findall(element, "SW-IMPL-MAPPINGS/*"):
|
|
4806
|
+
tag_name = self.getTagName(child_element)
|
|
4807
|
+
if tag_name == "SWC-TO-IMPL-MAPPING":
|
|
4808
|
+
sw_impl_mapping = mapping.createSwcToImplMapping(self.getShortName(child_element))
|
|
4809
|
+
self.readSwcToImplMapping(child_element, sw_impl_mapping)
|
|
4810
|
+
else:
|
|
4811
|
+
self.notImplemented("Unsupported SwImplMapping <%s>" % tag_name)
|
|
4812
|
+
|
|
4813
|
+
def readSystemMapping(self, element: ET.Element, mapping: SystemMapping):
|
|
4814
|
+
self.logger.debug("SystemMapping %s" % mapping.getShortName())
|
|
3680
4815
|
self.readIdentifiable(element, mapping)
|
|
3681
4816
|
self.readSystemMappingDataMappings(element, mapping)
|
|
4817
|
+
self.readSystemMappingEcuResourceMappings(element, mapping)
|
|
4818
|
+
self.readSystemMappingSwImplMappings(element, mapping)
|
|
3682
4819
|
self.readSystemMappingSwMappings(element, mapping)
|
|
3683
4820
|
|
|
3684
4821
|
def readSystemMappings(self, element: ET.Element, system: System):
|
|
3685
4822
|
for child_element in self.findall(element, "MAPPINGS/*"):
|
|
3686
4823
|
tag_name = self.getTagName(child_element)
|
|
3687
4824
|
if tag_name == "SYSTEM-MAPPING":
|
|
3688
|
-
self.
|
|
4825
|
+
mapping = system.createSystemMapping(self.getShortName(child_element))
|
|
4826
|
+
self.readSystemMapping(child_element, mapping)
|
|
3689
4827
|
else:
|
|
3690
4828
|
self.notImplemented("Unsupported Mapping %s" % tag_name)
|
|
3691
|
-
|
|
4829
|
+
|
|
3692
4830
|
def readRootSwCompositionPrototype(self, element: ET.Element, system: System):
|
|
3693
4831
|
child_element = self.find(element, "ROOT-SOFTWARE-COMPOSITIONS/ROOT-SW-COMPOSITION-PROTOTYPE")
|
|
3694
4832
|
if child_element is not None:
|
|
@@ -3698,7 +4836,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3698
4836
|
self.readIdentifiable(child_element, prototype)
|
|
3699
4837
|
prototype.setFlatMapRef(self.getChildElementOptionalRefType(child_element, "FLAT-MAP-REF")) \
|
|
3700
4838
|
.setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
|
|
3701
|
-
|
|
4839
|
+
AUTOSAR.getInstance().setRootSwCompositionPrototype(prototype)
|
|
4840
|
+
|
|
3702
4841
|
def readSystemFibexElementRefs(self, element: ET.Element, system: System):
|
|
3703
4842
|
for ref in self.getChildElementRefTypeList(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL/FIBEX-ELEMENT-REF"):
|
|
3704
4843
|
system.addFibexElementRef(ref)
|
|
@@ -3711,6 +4850,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3711
4850
|
self.readSystemMappings(element, system)
|
|
3712
4851
|
self.readRootSwCompositionPrototype(element, system)
|
|
3713
4852
|
system.setSystemVersion(self.getChildElementOptionalRevisionLabelString(element, "SYSTEM-VERSION"))
|
|
4853
|
+
AUTOSAR.getInstance().addSystem(system)
|
|
3714
4854
|
|
|
3715
4855
|
def readGenericEthernetFrame(self, element: ET.Element, frame: GenericEthernetFrame):
|
|
3716
4856
|
self.logger.debug("Read GenericEthernetFrame <%s>" % frame.getShortName())
|
|
@@ -3779,7 +4919,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3779
4919
|
type = parent.createComplexDeviceDriverSwComponentType(self.getShortName(child_element))
|
|
3780
4920
|
self.readComplexDeviceDriverSwComponentType(child_element, type)
|
|
3781
4921
|
elif tag_name == "SWC-IMPLEMENTATION":
|
|
3782
|
-
impl = parent.createSwcImplementation(self.getShortName(child_element))
|
|
4922
|
+
impl = parent.createSwcImplementation(self.getShortName(child_element))
|
|
3783
4923
|
self.readSwcImplementation(child_element, impl)
|
|
3784
4924
|
elif tag_name == "APPLICATION-PRIMITIVE-DATA-TYPE":
|
|
3785
4925
|
data_type = parent.createApplicationPrimitiveDataType(self.getShortName(child_element))
|
|
@@ -3818,7 +4958,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3818
4958
|
mapping = parent.createSwcBswMapping(self.getShortName(child_element))
|
|
3819
4959
|
self.readSwcBswMapping(child_element, mapping)
|
|
3820
4960
|
elif tag_name == "BSW-IMPLEMENTATION":
|
|
3821
|
-
impl = parent.createBswImplementation(self.getShortName(child_element))
|
|
4961
|
+
impl = parent.createBswImplementation(self.getShortName(child_element))
|
|
3822
4962
|
self.readBswImplementation(child_element, impl)
|
|
3823
4963
|
elif tag_name == "IMPLEMENTATION-DATA-TYPE":
|
|
3824
4964
|
data_type = parent.createImplementationDataType(self.getShortName(child_element))
|
|
@@ -3881,7 +5021,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3881
5021
|
i_pdu = parent.createSecuredIPdu(self.getShortName(child_element))
|
|
3882
5022
|
self.readSecuredIPdu(child_element, i_pdu)
|
|
3883
5023
|
elif tag_name == "NM-CONFIG":
|
|
3884
|
-
config = parent.createNmConfig(self.getShortName(child_element))
|
|
5024
|
+
config = parent.createNmConfig(self.getShortName(child_element))
|
|
3885
5025
|
self.readNmConfig(child_element, config)
|
|
3886
5026
|
elif tag_name == "CAN-TP-CONFIG":
|
|
3887
5027
|
config = parent.createCanTpConfig(self.getShortName(child_element))
|
|
@@ -3979,11 +5119,28 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3979
5119
|
elif tag_name == "DO-IP-TP-CONFIG":
|
|
3980
5120
|
config = parent.createDoIpTpConfig(self.getShortName(child_element))
|
|
3981
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)
|
|
3982
5140
|
else:
|
|
3983
5141
|
self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
|
|
3984
5142
|
|
|
3985
5143
|
def readReferenceBases(self, element: ET.Element, parent: ARPackage):
|
|
3986
|
-
self.logger.debug("Read ReferenceBases")
|
|
3987
5144
|
for child_element in self.findall(element, "REFERENCE-BASES/REFERENCE-BASE"):
|
|
3988
5145
|
base = ReferenceBase()
|
|
3989
5146
|
base.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
@@ -3993,20 +5150,25 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3993
5150
|
.setPackageRef(self.getChildElementOptionalRefType(child_element, "PACKAGE-REF"))
|
|
3994
5151
|
parent.addReferenceBase(base)
|
|
3995
5152
|
|
|
3996
|
-
def
|
|
3997
|
-
|
|
3998
|
-
short_name = self.getShortName(child_element)
|
|
3999
|
-
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())
|
|
4000
5155
|
|
|
4001
|
-
|
|
5156
|
+
self.readIdentifiable(element, ar_package)
|
|
5157
|
+
self.readARPackages(element, ar_package)
|
|
5158
|
+
self.readARPackageElements(element, ar_package)
|
|
5159
|
+
self.readReferenceBases(element, ar_package)
|
|
4002
5160
|
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
-
self.
|
|
4006
|
-
|
|
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)
|
|
4007
5169
|
|
|
4008
5170
|
def load(self, filename, document: AUTOSAR):
|
|
4009
|
-
self.logger.info("
|
|
5171
|
+
self.logger.info("Loading %s ..." % os.path.realpath(filename))
|
|
4010
5172
|
|
|
4011
5173
|
tree = ET.parse(filename)
|
|
4012
5174
|
root = tree.getroot()
|
|
@@ -4014,7 +5176,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
4014
5176
|
self.raiseError("Invalid ARXML file <%s>" % filename)
|
|
4015
5177
|
|
|
4016
5178
|
self.getAUTOSARInfo(root, document)
|
|
4017
|
-
document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))
|
|
5179
|
+
document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))
|
|
4018
5180
|
self.readARPackages(root, document)
|
|
4019
5181
|
|
|
4020
5182
|
document.reload()
|