armodel 1.7.4__py3-none-any.whl → 1.7.6__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/file_list_cli.py +70 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +2 -2
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +4 -0
- armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/DiagnosticContribution.py +47 -0
- armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/__init__.py +0 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +73 -3
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +22 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DiagnosticConnection.py +58 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +165 -4
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetCommunication.py +16 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +514 -17
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/NetworkEndpoint.py +104 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +783 -13
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinCommunication.py +114 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinTopology.py +92 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +76 -10
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +151 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +143 -36
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +13 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +135 -13
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +79 -2
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +4 -2
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +1 -1
- armodel/models/__init__.py +3 -0
- armodel/parser/abstract_arxml_parser.py +7 -5
- armodel/parser/arxml_parser.py +927 -438
- armodel/writer/arxml_writer.py +799 -178
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/METADATA +52 -1
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/RECORD +33 -28
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/entry_points.txt +1 -0
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/LICENSE +0 -0
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/WHEEL +0 -0
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/top_level.txt +0 -0
armodel/parser/arxml_parser.py
CHANGED
|
@@ -3,15 +3,17 @@ import xml.etree.ElementTree as ET
|
|
|
3
3
|
import os
|
|
4
4
|
|
|
5
5
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
6
|
-
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition
|
|
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
8
|
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent, CompuMethod, Compu, CompuConst, CompuConstTextContent, CompuNominatorDenominator, CompuRationalCoeffs, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
|
|
9
9
|
from ..models.M2.MSR.AsamHdo.SpecialData import Sdg, Sd
|
|
10
|
+
from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension, Unit
|
|
10
11
|
from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
|
|
12
|
+
from ..models.M2.MSR.DataDictionary.AuxillaryObjects import SwAddrMethod
|
|
11
13
|
from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, SwPointerTargetProps
|
|
12
14
|
from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxis
|
|
13
15
|
from ..models.M2.MSR.DataDictionary.Axis import SwAxisGrouped, SwAxisIndividual
|
|
14
|
-
from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroupContent, SwRecordLayoutV
|
|
16
|
+
from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayout, SwRecordLayoutGroupContent, SwRecordLayoutV
|
|
15
17
|
from ..models.M2.MSR.DataDictionary.DataDefProperties import ValueList
|
|
16
18
|
from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroup
|
|
17
19
|
from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxisSet
|
|
@@ -27,7 +29,7 @@ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalled
|
|
|
27
29
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
|
|
28
30
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
|
|
29
31
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
|
|
30
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
|
|
32
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
|
|
31
33
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
|
|
32
34
|
from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
|
|
33
35
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import ImplementationProps, Code
|
|
@@ -41,23 +43,25 @@ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServ
|
|
|
41
43
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
|
|
42
44
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
43
45
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
|
|
44
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import TimingExtension
|
|
46
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
|
|
47
|
+
from ..models.M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import DiagnosticServiceTable
|
|
45
48
|
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
|
|
46
49
|
from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
|
|
47
50
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable
|
|
48
51
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
|
|
49
52
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
|
|
50
53
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Ip6AddressString, RefType, ARLiteral
|
|
54
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
|
|
51
55
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
|
|
52
56
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent
|
|
53
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationRecordDataType, ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
|
|
57
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationPrimitiveDataType, ApplicationRecordDataType, ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
|
|
54
58
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet, EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
|
|
55
59
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
56
60
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
57
61
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, VariableInAtomicSWCTypeInstanceRef
|
|
58
62
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
|
|
59
63
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
|
|
60
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, CompositionSwComponentType, PortGroup, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
|
|
64
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, ApplicationSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PortGroup, SensorActuatorSwComponentType, ServiceSwComponentType, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
|
|
61
65
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
62
66
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
|
|
63
67
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
|
|
@@ -66,26 +70,31 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import Assembl
|
|
|
66
70
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
|
|
67
71
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
68
72
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
69
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, DataPrototypeMapping, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, PortInterfaceMappingSet, SenderReceiverInterface, VariableAndParameterInterfaceMapping
|
|
73
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, DataPrototypeMapping, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, PortInterfaceMappingSet, SenderReceiverInterface, TriggerInterface, VariableAndParameterInterfaceMapping
|
|
70
74
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
|
|
75
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
|
|
71
76
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
72
77
|
|
|
73
78
|
from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping , System, SystemMapping
|
|
74
79
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
75
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.
|
|
80
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import DiagnosticConnection
|
|
81
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmNode
|
|
76
82
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
|
|
77
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering
|
|
78
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.
|
|
79
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.
|
|
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
|
|
80
87
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
81
88
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
82
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering, RxIdentifierRange
|
|
83
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
|
|
84
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.
|
|
85
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.
|
|
86
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import Ipv6Configuration, NetworkEndpoint
|
|
87
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import SoAdConfig, SocketAddress
|
|
88
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.
|
|
89
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
|
|
90
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController, AbstractCanCommunicationControllerAttributes, CanCommunicationConnector, CanCommunicationController, CanControllerConfigurationRequirements, CanControllerFdConfiguration, CanControllerFdConfigurationRequirements
|
|
91
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
|
|
92
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
|
|
93
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration, NetworkEndpoint
|
|
94
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup, ConsumedServiceInstance, EventHandler, GenericTp, ProvidedServiceInstance, SdServerConfig, SoAdConfig, SocketAddress, TcpTp, TpPort, TransportProtocolConfiguration, UdpTp
|
|
95
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPort, CouplingPortDetails, CouplingPortFifo, CouplingPortScheduler, CouplingPortStructuralElement, EthernetCluster, EthernetCommunicationConnector, EthernetCommunicationController, EthernetPriorityRegeneration, InitialSdDelayConfig, MacMulticastGroup, RequestResponseDelay, SdClientConfig, VlanMembership
|
|
96
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, IPduMapping, ISignalMapping, TargetIPduRef
|
|
97
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig, DoIpTpConfig, LinTpConfig
|
|
89
98
|
|
|
90
99
|
from .abstract_arxml_parser import AbstractARXMLParser
|
|
91
100
|
|
|
@@ -299,8 +308,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
299
308
|
if ref_type is not None:
|
|
300
309
|
entity.addManagedModeGroupRef(ref_type)
|
|
301
310
|
|
|
302
|
-
|
|
303
|
-
|
|
304
311
|
def readBswEvent(self, element: ET.Element, event: BswScheduleEvent):
|
|
305
312
|
event.startsOnEventRef = self.getChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF")
|
|
306
313
|
|
|
@@ -346,7 +353,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
346
353
|
if tag_name == "BSW-MODE-SENDER-POLICY":
|
|
347
354
|
parent.addModeSenderPolicy(self.getBswModeSenderPolicy(child_element))
|
|
348
355
|
else:
|
|
349
|
-
self.
|
|
356
|
+
self.raiseError("Unsupported ModeSenderPolicy type <%s>." % tag_name)
|
|
350
357
|
|
|
351
358
|
def readDataTypeMappingRefs(self, element: ET.Element, behavior: InternalBehavior):
|
|
352
359
|
child_element = self.find(element, "DATA-TYPE-MAPPING-REFS")
|
|
@@ -391,27 +398,27 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
391
398
|
def readServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
|
|
392
399
|
self.readIdentifiable(element, dependency)
|
|
393
400
|
for child_element in self.findall(element, "ASSIGNED-DATA-TYPES/*"):
|
|
394
|
-
tag_name = self.getTagName(child_element
|
|
401
|
+
tag_name = self.getTagName(child_element)
|
|
395
402
|
if (tag_name == "ROLE-BASED-DATA-TYPE-ASSIGNMENT"):
|
|
396
403
|
dependency.addAssignedDataType(self.getRoleBasedDataTypeAssignment(child_element))
|
|
397
404
|
else:
|
|
398
|
-
self.
|
|
405
|
+
self.notImplemented("Unsupported assigned data type <%s>" % tag_name)
|
|
399
406
|
|
|
400
407
|
def readSwcServiceDependencyAssignedData(self, element: ET.Element, dependency: SwcServiceDependency):
|
|
401
408
|
for child_element in self.findall(element, "ASSIGNED-DATAS/*"):
|
|
402
|
-
tag_name = self.getTagName(child_element
|
|
409
|
+
tag_name = self.getTagName(child_element)
|
|
403
410
|
if (tag_name == "ROLE-BASED-DATA-ASSIGNMENT"):
|
|
404
411
|
dependency.AddAssignedData(self.getRoleBasedDataAssignment(child_element))
|
|
405
412
|
else:
|
|
406
|
-
self.
|
|
413
|
+
self.raiseError("Unsupported assigned data <%s>" % tag_name)
|
|
407
414
|
|
|
408
415
|
def readSwcServiceDependencyAssignedPorts(self, element: ET.Element, dependency: SwcServiceDependency):
|
|
409
416
|
for child_element in self.findall(element, "ASSIGNED-PORTS/*"):
|
|
410
|
-
tag_name = self.getTagName(child_element
|
|
417
|
+
tag_name = self.getTagName(child_element)
|
|
411
418
|
if (tag_name == "ROLE-BASED-PORT-ASSIGNMENT"):
|
|
412
419
|
dependency.AddAssignedPort(self.getRoleBasedPortAssignment(child_element))
|
|
413
420
|
else:
|
|
414
|
-
self.
|
|
421
|
+
self.raiseError("Unsupported assigned ports <%s>" % tag_name)
|
|
415
422
|
|
|
416
423
|
def readNvBlockNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
417
424
|
short_name = self.getShortName(element)
|
|
@@ -507,7 +514,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
507
514
|
|
|
508
515
|
def readSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
509
516
|
for child_element in self.findall(element, "SERVICE-NEEDS/*"):
|
|
510
|
-
tag_name = self.getTagName(child_element
|
|
517
|
+
tag_name = self.getTagName(child_element)
|
|
511
518
|
if tag_name == "NV-BLOCK-NEEDS":
|
|
512
519
|
self.readNvBlockNeeds(child_element, parent)
|
|
513
520
|
elif tag_name == "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS":
|
|
@@ -538,7 +545,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
538
545
|
|
|
539
546
|
def readSwcInternalBehaviorServiceDependencies(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
540
547
|
for child_element in self.findall(element, "SERVICE-DEPENDENCYS/*"):
|
|
541
|
-
tag_name = self.getTagName(child_element
|
|
548
|
+
tag_name = self.getTagName(child_element)
|
|
542
549
|
if (tag_name == "SWC-SERVICE-DEPENDENCY"):
|
|
543
550
|
self.readSwcServiceDependency(child_element, parent)
|
|
544
551
|
else:
|
|
@@ -664,17 +671,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
664
671
|
for group_set in self.getIncludedModeDeclarationGroupSets(child_element):
|
|
665
672
|
behavior.addIncludedModeDeclarationGroupSet(group_set)
|
|
666
673
|
|
|
667
|
-
def readBswModuleDescription(self, element: ET.Element,
|
|
668
|
-
|
|
669
|
-
bsw_module_description = parent.createBswModuleDescription(short_name)
|
|
670
|
-
bsw_module_description.moduleId = self.getChildElementOptionalNumericalValue(element, "MODULE-ID")
|
|
671
|
-
|
|
672
|
-
self.logger.debug("read BswModuleDescription %s" % bsw_module_description.full_name)
|
|
674
|
+
def readBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
|
|
675
|
+
self.logger.debug("Read BswModuleDescription <%s>" % desc.getShortName())
|
|
673
676
|
|
|
674
|
-
self.
|
|
675
|
-
self.
|
|
676
|
-
self.
|
|
677
|
-
self.
|
|
677
|
+
self.readIdentifiable(element, desc)
|
|
678
|
+
desc.setModuleId(self.getChildElementOptionalNumericalValue(element, "MODULE-ID"))
|
|
679
|
+
self.readBswModuleDescriptionImplementedEntry(element, desc)
|
|
680
|
+
self.readProvidedModeGroup(element, desc)
|
|
681
|
+
self.readRequiredModeGroup(element, desc)
|
|
682
|
+
self.readBswInternalBehavior(element, desc)
|
|
678
683
|
|
|
679
684
|
def readSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
|
|
680
685
|
self.logger.debug("Read SwServiceArg <%s>" % arg.getShortName())
|
|
@@ -690,9 +695,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
690
695
|
else:
|
|
691
696
|
self.notImplemented("Unsupported Argument <%s>" % tag_name)
|
|
692
697
|
|
|
693
|
-
def readBswModuleEntry(self, element: ET.Element,
|
|
694
|
-
|
|
695
|
-
entry = parent.createBswModuleEntry(short_name)
|
|
698
|
+
def readBswModuleEntry(self, element: ET.Element, entry: BswModuleEntry):
|
|
699
|
+
self.logger.debug("Read BswModuleEntry <%s>" % entry.getShortName())
|
|
696
700
|
self.readIdentifiable(element, entry)
|
|
697
701
|
self.readBswModuleEntryArguments(element, entry)
|
|
698
702
|
entry.setIsReentrant(self.getChildElementOptionalBooleanValue(element, "IS-REENTRANT")) \
|
|
@@ -717,11 +721,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
717
721
|
|
|
718
722
|
def readArtifactDescriptor(self, element: ET.Element, code_desc: Code):
|
|
719
723
|
for child_element in self.findall(element, "ARTIFACT-DESCRIPTORS/*"):
|
|
720
|
-
tag_name = self.getTagName(child_element
|
|
724
|
+
tag_name = self.getTagName(child_element)
|
|
721
725
|
if tag_name == "AUTOSAR-ENGINEERING-OBJECT":
|
|
722
726
|
code_desc.addArtifactDescriptor(self.getAutosarEngineeringObject(child_element))
|
|
723
727
|
else:
|
|
724
|
-
self.
|
|
728
|
+
self.raiseError("Unsupported Artifact Descriptor <%s>" % tag_name)
|
|
725
729
|
|
|
726
730
|
def readCodeDescriptor(self, element: ET.Element, impl: Implementation):
|
|
727
731
|
for child_element in self.findall(element, "CODE-DESCRIPTORS/CODE"):
|
|
@@ -790,21 +794,17 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
790
794
|
for ref in self.getChildElementRefTypeList(child_element, "VENDOR-SPECIFIC-MODULE-DEF-REF"):
|
|
791
795
|
impl.addVendorSpecificModuleDefRef(ref)
|
|
792
796
|
|
|
793
|
-
def readBswImplementation(self, element: ET.Element,
|
|
794
|
-
|
|
795
|
-
impl = parent.createBswImplementation(short_name)
|
|
796
|
-
self.logger.debug("readBswImplementation %s" % impl.getShortName())
|
|
797
|
+
def readBswImplementation(self, element: ET.Element, impl: BswImplementation):
|
|
798
|
+
self.logger.debug("Read BswImplementation <%s>" % impl.getShortName())
|
|
797
799
|
self.readImplementation(element, impl)
|
|
798
800
|
impl.setArReleaseVersion(self.getChildElementOptionalLiteral(element, "AR-RELEASE-VERSION")) \
|
|
799
801
|
.setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF"))
|
|
800
802
|
self.readBswImplementationVendorSpecificModuleDefRefs(element, impl)
|
|
801
803
|
|
|
802
|
-
def readSwcImplementation(self, element: ET.Element,
|
|
803
|
-
|
|
804
|
-
impl = parent.createSwcImplementation(short_name)
|
|
805
|
-
self.logger.debug("readSwcImplementation %s" % impl.getShortName())
|
|
804
|
+
def readSwcImplementation(self, element: ET.Element, impl: SwcImplementation):
|
|
805
|
+
self.logger.debug("Read SwcImplementation <%s>" % impl.getShortName())
|
|
806
806
|
self.readImplementation(element, impl)
|
|
807
|
-
impl.
|
|
807
|
+
impl.setBehaviorRef(self.getChildElementOptionalRefType(element, "BEHAVIOR-REF"))
|
|
808
808
|
|
|
809
809
|
def readDataReceivePointByArguments(self, element, parent: RunnableEntity):
|
|
810
810
|
self._readVariableAccesses(element, parent, "DATA-RECEIVE-POINT-BY-ARGUMENTS")
|
|
@@ -890,13 +890,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
890
890
|
|
|
891
891
|
def readInternalBehaviorServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
|
|
892
892
|
for child_element in self.findall(element, "SERVER-CALL-POINTS/*"):
|
|
893
|
-
tag_name = self.getTagName(child_element
|
|
893
|
+
tag_name = self.getTagName(child_element)
|
|
894
894
|
if tag_name == "SYNCHRONOUS-SERVER-CALL-POINT":
|
|
895
895
|
self.readSynchronousServerCallPoint(child_element, parent)
|
|
896
896
|
elif tag_name == "ASYNCHRONOUS-SERVER-CALL-POINT":
|
|
897
897
|
self.readAsynchronousServerCallPoint(child_element, parent)
|
|
898
898
|
else:
|
|
899
|
-
self.
|
|
899
|
+
self.raiseError("Unsupported server call point type <%s>" % tag_name)
|
|
900
900
|
|
|
901
901
|
def readInternalTriggeringPoints(self, element: ET.Element, parent: RunnableEntity):
|
|
902
902
|
for child_element in self.findall(element, "INTERNAL-TRIGGERING-POINTS/INTERNAL-TRIGGERING-POINT"):
|
|
@@ -1107,7 +1107,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1107
1107
|
|
|
1108
1108
|
def readSwcInternalBehaviorEvents(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
1109
1109
|
for child_element in self.findall(element, "EVENTS/*"):
|
|
1110
|
-
tag_name = self.getTagName(child_element
|
|
1110
|
+
tag_name = self.getTagName(child_element)
|
|
1111
1111
|
if tag_name == "TIMING-EVENT":
|
|
1112
1112
|
self.readTimingEvent(child_element, parent)
|
|
1113
1113
|
elif tag_name == "SWC-MODE-SWITCH-EVENT":
|
|
@@ -1265,7 +1265,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1265
1265
|
def getSwCalprmAxisSet(self, element: ET.Element, key: str) -> SwCalprmAxisSet:
|
|
1266
1266
|
set = SwCalprmAxisSet()
|
|
1267
1267
|
for child_element in self.findall(element, "%s/*" % key):
|
|
1268
|
-
tag_name = self.getTagName(child_element
|
|
1268
|
+
tag_name = self.getTagName(child_element)
|
|
1269
1269
|
if tag_name == "SW-CALPRM-AXIS":
|
|
1270
1270
|
set.addSwCalprmAxis(self.getSwCalprmAxis(child_element))
|
|
1271
1271
|
return set
|
|
@@ -1310,10 +1310,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1310
1310
|
self.readIdentifiable(element, data_type)
|
|
1311
1311
|
data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
1312
1312
|
|
|
1313
|
-
def readApplicationPrimitiveDataType(self, element: ET.Element,
|
|
1314
|
-
|
|
1315
|
-
data_type = parent.createApplicationPrimitiveDataType(short_name)
|
|
1316
|
-
self.logger.debug("readApplicationPrimitiveDataTypes %s" % short_name)
|
|
1313
|
+
def readApplicationPrimitiveDataType(self, element: ET.Element, data_type: ApplicationPrimitiveDataType):
|
|
1314
|
+
self.logger.debug("Read ApplicationPrimitiveDataType <%s>" % data_type.getShortName())
|
|
1317
1315
|
self.readAutosarDataType(element, data_type)
|
|
1318
1316
|
|
|
1319
1317
|
def readApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
|
|
@@ -1327,10 +1325,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1327
1325
|
self.readIdentifiable(child_element, record_element)
|
|
1328
1326
|
self.readApplicationCompositeElementDataPrototype(child_element, record_element)
|
|
1329
1327
|
|
|
1330
|
-
def
|
|
1331
|
-
|
|
1332
|
-
data_type = parent.createApplicationRecordDataType(short_name)
|
|
1333
|
-
self.logger.debug("readApplicationRecordDataTypes %s" % short_name)
|
|
1328
|
+
def readApplicationRecordDataType(self, element: ET.Element, data_type: ApplicationRecordDataType):
|
|
1329
|
+
self.logger.debug("Read ApplicationRecordDataType <%s>" % data_type.getShortName())
|
|
1334
1330
|
self.readIdentifiable(element, data_type)
|
|
1335
1331
|
data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
1336
1332
|
self.readApplicationRecordElements(element, data_type)
|
|
@@ -1345,41 +1341,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1345
1341
|
self.readImplementationDataTypeElements(child_element, type_element)
|
|
1346
1342
|
type_element.setSwDataDefProps(self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS"))
|
|
1347
1343
|
|
|
1348
|
-
def readImplementationDataType(self, element: ET.Element,
|
|
1349
|
-
|
|
1350
|
-
data_type = parent.createImplementationDataType(short_name)
|
|
1344
|
+
def readImplementationDataType(self, element: ET.Element, data_type: ImplementationDataType):
|
|
1345
|
+
self.logger.debug("Read ImplementationDataType <%s>" % data_type.getShortName())
|
|
1351
1346
|
self.readAutosarDataType(element, data_type)
|
|
1352
1347
|
data_type.setDynamicArraySizeProfile(self.getChildElementOptionalLiteral(element, "DYNAMIC-ARRAY-SIZE-PROFILE"))
|
|
1353
1348
|
self.readImplementationDataTypeElements(element, data_type)
|
|
1349
|
+
self.readImplementationDataTypeSymbolProps(element, data_type)
|
|
1354
1350
|
data_type.setTypeEmitter(self.getChildElementOptionalLiteral(element, "TYPE-EMITTER"))
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
'''
|
|
1358
|
-
if (data_type.getCategory().getValue() == ImplementationDataType.CATEGORY_ARRAY):
|
|
1359
|
-
if (len(data_type.getImplementationDataTypeElements()) < 1):
|
|
1360
|
-
self._raiseError("Array Sub-Element of <%s> do not defined." % data_type.getShortName())
|
|
1361
|
-
|
|
1362
|
-
array_sub_element = data_type.getImplementationDataTypeElements()[0]
|
|
1363
|
-
if (array_sub_element.getCategory().getValue() == ImplementationDataType.CATEGORY_TYPE_REFERENCE):
|
|
1364
|
-
data_type.setArrayElementType(array_sub_element.swDataDefProps.implementationDataTypeRef.value)
|
|
1365
|
-
elif (array_sub_element.getCategory().getValue() == ImplementationDataType.CATEGORY_TYPE_VALUE): # TODO: fix
|
|
1366
|
-
return
|
|
1367
|
-
else:
|
|
1368
|
-
self._raiseError("The category <%s> of array sub-element <%s> does not support." % (
|
|
1369
|
-
array_sub_element.getCategory().getValue(), data_type.getShortName()))
|
|
1370
|
-
elif (data_type.getCategory().getValue() == ImplementationDataType.CATEGORY_TYPE_STRUCTURE):
|
|
1371
|
-
if len(data_type.getImplementationDataTypeElements()) < 1:
|
|
1372
|
-
self._raiseError("Structure Sub-Element of <%s> do not defined." % data_type.getShortName())
|
|
1373
|
-
self.readImplementationDataTypeSymbolProps(element, data_type)
|
|
1374
|
-
struct_sub_element = data_type.getImplementationDataTypeElements()[0]
|
|
1375
|
-
if struct_sub_element.getCategory().getValue() == ImplementationDataType.CATEGORY_TYPE_REFERENCE:
|
|
1376
|
-
data_type.setStructElementType(struct_sub_element.getSwDataDefProps().getImplementationDataTypeRef().getValue())
|
|
1377
|
-
#elif struct_sub_element.getCategory().getValue() == ImplementationDataType.CATEGORY_TYPE_VALUE:
|
|
1378
|
-
# return
|
|
1379
|
-
else:
|
|
1380
|
-
self._raiseError("The category <%s> of structure sub-element <%s> does not support." % (
|
|
1381
|
-
struct_sub_element.getCategory().getValue(), data_type.getShortName()))
|
|
1382
|
-
'''
|
|
1383
1351
|
|
|
1384
1352
|
def readBaseTypeDirectDefinition(self, element: ET.Element, definition: BaseTypeDirectDefinition):
|
|
1385
1353
|
definition.setBaseTypeSize(self.getChildElementOptionalNumericalValue(element, "BASE-TYPE-SIZE")) \
|
|
@@ -1388,9 +1356,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1388
1356
|
.setMemAlignment(self.getChildElementOptionalNumericalValue(element, "MEM-ALIGNMENT")) \
|
|
1389
1357
|
.setNativeDeclaration(self.getChildElementOptionalLiteral(element, "NATIVE-DECLARATION"))
|
|
1390
1358
|
|
|
1391
|
-
def readSwBaseType(self, element: ET.Element,
|
|
1392
|
-
|
|
1393
|
-
data_type = parent.createSwBaseType(short_name)
|
|
1359
|
+
def readSwBaseType(self, element: ET.Element, data_type: SwBaseType):
|
|
1360
|
+
self.logger.debug("Read SwBaseType <%s>" % data_type.getShortName())
|
|
1394
1361
|
self.readIdentifiable(element, data_type)
|
|
1395
1362
|
self.readBaseTypeDirectDefinition(element, data_type.getBaseTypeDefinition())
|
|
1396
1363
|
|
|
@@ -1510,7 +1477,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1510
1477
|
|
|
1511
1478
|
def readRequiredComSpec(self, element: ET.Element, parent: RPortPrototype):
|
|
1512
1479
|
for child_element in self.findall(element, "REQUIRED-COM-SPECS/*"):
|
|
1513
|
-
tag_name = self.getTagName(child_element
|
|
1480
|
+
tag_name = self.getTagName(child_element)
|
|
1514
1481
|
if tag_name == "NONQUEUED-RECEIVER-COM-SPEC":
|
|
1515
1482
|
parent.addRequiredComSpec(self.getNonqueuedReceiverComSpec(child_element))
|
|
1516
1483
|
elif tag_name == "CLIENT-COM-SPEC":
|
|
@@ -1522,7 +1489,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1522
1489
|
elif tag_name == "PARAMETER-REQUIRE-COM-SPEC":
|
|
1523
1490
|
parent.addRequiredComSpec(self.getParameterRequireComSpec(child_element))
|
|
1524
1491
|
else:
|
|
1525
|
-
self.
|
|
1492
|
+
self.raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
|
|
1526
1493
|
|
|
1527
1494
|
def readAbstractRequiredPortPrototype(self, element: ET.Element, prototype: AbstractRequiredPortPrototype):
|
|
1528
1495
|
self.readProvidedComSpec(element, prototype)
|
|
@@ -1565,7 +1532,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1565
1532
|
elif tag_name == "PR-PORT-PROTOTYPE":
|
|
1566
1533
|
self.readPRPortPrototype(child_element, sw_component)
|
|
1567
1534
|
else:
|
|
1568
|
-
self.
|
|
1535
|
+
self.raiseError("Unsupported Port Prototype <%s>" % tag_name)
|
|
1569
1536
|
|
|
1570
1537
|
def readTransmissionAcknowledgementRequest(self, element: ET.Element) -> TransmissionAcknowledgementRequest:
|
|
1571
1538
|
child_element = self.find(element, "TRANSMISSION-ACKNOWLEDGE")
|
|
@@ -1612,7 +1579,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1612
1579
|
|
|
1613
1580
|
def readProvidedComSpec(self, element: ET.Element, parent: PPortPrototype):
|
|
1614
1581
|
for child_element in self.findall(element, "PROVIDED-COM-SPECS/*"):
|
|
1615
|
-
tag_name = self.getTagName(child_element
|
|
1582
|
+
tag_name = self.getTagName(child_element)
|
|
1616
1583
|
if tag_name == "NONQUEUED-SENDER-COM-SPEC":
|
|
1617
1584
|
parent.addProvidedComSpec(self.getNonqueuedSenderComSpec(child_element))
|
|
1618
1585
|
elif tag_name == "SERVER-COM-SPEC":
|
|
@@ -1622,7 +1589,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1622
1589
|
elif tag_name == "MODE-SWITCH-SENDER-COM-SPEC":
|
|
1623
1590
|
parent.addProvidedComSpec(self.getModeSwitchSenderComSpec(child_element))
|
|
1624
1591
|
else:
|
|
1625
|
-
self.
|
|
1592
|
+
self.raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
|
|
1626
1593
|
|
|
1627
1594
|
def readPortGroupInnerGroupIRefs(self, element: ET.Element, parent: PortGroup):
|
|
1628
1595
|
for child_element in self.findall(element, "INNER-GROUP-IREFS/INNER-GROUP-IREF"):
|
|
@@ -1645,11 +1612,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1645
1612
|
|
|
1646
1613
|
def readSwComponentTypePortGroups(self, element: ET.Element, parent: SwComponentType):
|
|
1647
1614
|
for child_element in self.findall(element, "PORT-GROUPS/*"):
|
|
1648
|
-
tag_name = self.getTagName(child_element
|
|
1615
|
+
tag_name = self.getTagName(child_element)
|
|
1649
1616
|
if tag_name == "PORT-GROUP":
|
|
1650
1617
|
self.readPortGroup(child_element, parent)
|
|
1651
1618
|
else:
|
|
1652
|
-
self.
|
|
1619
|
+
self.raiseError("Unsupported Port Group type: %s" % tag_name)
|
|
1653
1620
|
|
|
1654
1621
|
def readSwComponentType(self, element: ET.Element, parent: SwComponentType):
|
|
1655
1622
|
self.readIdentifiable(element, parent)
|
|
@@ -1660,32 +1627,24 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1660
1627
|
self.readSwComponentType(element, parent)
|
|
1661
1628
|
self.readSwcInternalBehavior(element, parent)
|
|
1662
1629
|
|
|
1663
|
-
def
|
|
1664
|
-
|
|
1665
|
-
sw_component = parent.createEcuAbstractionSwComponentType(short_name)
|
|
1630
|
+
def readEcuAbstractionSwComponentType(self, element, sw_component: EcuAbstractionSwComponentType):
|
|
1631
|
+
self.logger.debug("Read EcuAbstractionSwComponentType <%s>" % sw_component.getShortName())
|
|
1666
1632
|
self.readAtomicSwComponentType(element, sw_component)
|
|
1667
1633
|
|
|
1668
|
-
def
|
|
1669
|
-
|
|
1670
|
-
sw_component = parent.createApplicationSwComponentType(short_name)
|
|
1634
|
+
def readApplicationSwComponentType(self, element: ET.Element, sw_component: ApplicationSwComponentType):
|
|
1635
|
+
self.logger.debug("Read ApplicationSwComponentType <%s>" % sw_component.getShortName())
|
|
1671
1636
|
self.readAtomicSwComponentType(element, sw_component)
|
|
1672
1637
|
|
|
1673
|
-
def readComplexDeviceDriverSwComponentType(self, element: ET.Element,
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
self.logger.debug("readComplexDeviceDriverSwComponentType <%s>" % short_name)
|
|
1677
|
-
self.readAtomicSwComponentType(element, sw_component)
|
|
1638
|
+
def readComplexDeviceDriverSwComponentType(self, element: ET.Element, type: ComplexDeviceDriverSwComponentType):
|
|
1639
|
+
self.logger.debug("Read ComplexDeviceDriverSwComponentType <%s>" % type.getShortName())
|
|
1640
|
+
self.readAtomicSwComponentType(element, type)
|
|
1678
1641
|
|
|
1679
|
-
def readSensorActuatorSwComponentType(self, element: ET.Element,
|
|
1680
|
-
|
|
1681
|
-
sw_component = parent.createSensorActuatorSwComponentType(short_name)
|
|
1682
|
-
self.logger.debug("readSensorActuatorSwComponentType <%s>" % short_name)
|
|
1642
|
+
def readSensorActuatorSwComponentType(self, element: ET.Element, sw_component: SensorActuatorSwComponentType):
|
|
1643
|
+
self.logger.debug("Read SensorActuatorSwComponentType <%s>" % sw_component.getShortName())
|
|
1683
1644
|
self.readAtomicSwComponentType(element, sw_component)
|
|
1684
1645
|
|
|
1685
|
-
def readServiceSwComponentType(self, element: ET.Element,
|
|
1686
|
-
|
|
1687
|
-
sw_component = parent.createServiceSwComponentType(short_name)
|
|
1688
|
-
self.logger.debug("readServiceSwComponentType <%s>" % short_name)
|
|
1646
|
+
def readServiceSwComponentType(self, element: ET.Element, sw_component: ServiceSwComponentType):
|
|
1647
|
+
self.logger.debug("Read ServiceSwComponentType <%s>" % sw_component.getShortName())
|
|
1689
1648
|
self.readAtomicSwComponentType(element, sw_component)
|
|
1690
1649
|
|
|
1691
1650
|
def readPPortInCompositionInstanceRef(self, element: ET.Element, p_port_in_composition_instance_ref: PPortInCompositionInstanceRef):
|
|
@@ -1752,7 +1711,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1752
1711
|
parent.setInnerPortIRref(p_port_in_composition_instance_ref)
|
|
1753
1712
|
return
|
|
1754
1713
|
|
|
1755
|
-
self.
|
|
1714
|
+
self.raiseError("Unsupported child element of INNER-PORT-IREF")
|
|
1756
1715
|
|
|
1757
1716
|
def readDelegationSwConnectors(self, element, parent: CompositionSwComponentType):
|
|
1758
1717
|
for child_element in self.findall(element, "CONNECTORS/DELEGATION-SW-CONNECTOR"):
|
|
@@ -1764,7 +1723,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1764
1723
|
self.readDelegationSwConnectorInnerPortIRef(child_element, connector)
|
|
1765
1724
|
|
|
1766
1725
|
if connector.getInnerPortIRref() == None and connector.getOuterPortRef() == None:
|
|
1767
|
-
self.
|
|
1726
|
+
self.raiseError("Invalid PortPrototype of DELEGATION-SW-CONNECTOR")
|
|
1768
1727
|
|
|
1769
1728
|
connector.setOuterPortRef(self.getChildElementOptionalRefType(child_element, "OUTER-PORT-REF"))
|
|
1770
1729
|
self.logger.debug("OUTER-PORT-REF DEST: %s, %s"
|
|
@@ -1785,19 +1744,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1785
1744
|
for ref in self.getChildElementRefTypeList(child_element, "./DATA-TYPE-MAPPING-REF"):
|
|
1786
1745
|
parent.addDataTypeMapping(ref)
|
|
1787
1746
|
|
|
1788
|
-
def readCompositionSwComponentType(self, element: ET.Element,
|
|
1789
|
-
|
|
1790
|
-
self.
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
self.
|
|
1794
|
-
self.
|
|
1795
|
-
self.
|
|
1796
|
-
self.readAssemblySwConnectors(element, sw_component)
|
|
1797
|
-
self.readDelegationSwConnectors(element, sw_component)
|
|
1798
|
-
self.readCompositionSwComponentTypeDataTypeMappingSet(element, sw_component)
|
|
1799
|
-
|
|
1800
|
-
self.logger.debug("ReadCompositionSwComponentTypes: <%s> (Done)" % short_name)
|
|
1747
|
+
def readCompositionSwComponentType(self, element: ET.Element, type: CompositionSwComponentType):
|
|
1748
|
+
self.logger.debug("Read CompositionSwComponentType: <%s>" % type.getShortName())
|
|
1749
|
+
self.readIdentifiable(element, type)
|
|
1750
|
+
self.readSwComponentType(element, type)
|
|
1751
|
+
self.readSwComponentPrototypes(element, type)
|
|
1752
|
+
self.readAssemblySwConnectors(element, type)
|
|
1753
|
+
self.readDelegationSwConnectors(element, type)
|
|
1754
|
+
self.readCompositionSwComponentTypeDataTypeMappingSet(element, type)
|
|
1801
1755
|
|
|
1802
1756
|
def readDataTypeMaps(self, element: ET.Element, parent: DataTypeMappingSet):
|
|
1803
1757
|
for child_element in element.findall("./xmlns:DATA-TYPE-MAPS/xmlns:DATA-TYPE-MAP", self.nsmap):
|
|
@@ -1817,9 +1771,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1817
1771
|
map.modeGroupRef = self.getChildElementOptionalRefType(child_element, "MODE-GROUP-REF")
|
|
1818
1772
|
parent.addModeRequestTypeMap(map)
|
|
1819
1773
|
|
|
1820
|
-
def readDataTypeMappingSet(self, element: ET.Element,
|
|
1821
|
-
|
|
1822
|
-
mapping_set = parent.createDataTypeMappingSet(short_name)
|
|
1774
|
+
def readDataTypeMappingSet(self, element: ET.Element, mapping_set: DataTypeMappingSet):
|
|
1775
|
+
self.logger.debug("Read DataTypeMappingSet: <%s>" % mapping_set.getShortName())
|
|
1823
1776
|
self.readIdentifiable(element, mapping_set)
|
|
1824
1777
|
self.readDataTypeMaps(element, mapping_set)
|
|
1825
1778
|
self.readModeRequestTypeMaps(element, mapping_set)
|
|
@@ -1848,11 +1801,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1848
1801
|
policy.data_element_ref = self.getChildElementOptionalRefType(child_element, "DATA-ELEMENT-REF")
|
|
1849
1802
|
policy.handle_invalid = self.getChildElementOptionalLiteral(child_element, "HANDLE-INVALID")
|
|
1850
1803
|
|
|
1851
|
-
def
|
|
1852
|
-
|
|
1853
|
-
sr_interface = parent.createSenderReceiverInterface(short_name)
|
|
1804
|
+
def readSenderReceiverInterface(self, element, sr_interface: SenderReceiverInterface):
|
|
1805
|
+
self.logger.debug("Read SenderReceiverInterface <%s>" % sr_interface.getShortName())
|
|
1854
1806
|
self.readIdentifiable(element, sr_interface)
|
|
1855
|
-
sr_interface.
|
|
1807
|
+
sr_interface.setIsService(self.getChildElementOptionalBooleanValue(element, "IS-SERVICE"))
|
|
1856
1808
|
self.readSenderReceiverInterfaceDataElements(element, sr_interface)
|
|
1857
1809
|
self.readSenderReceiverInterfaceInvalidationPolicies(element, sr_interface)
|
|
1858
1810
|
|
|
@@ -1899,16 +1851,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1899
1851
|
prototype = param_interface.createParameter(short_name)
|
|
1900
1852
|
self.readParameterDataPrototype(child_element, prototype)
|
|
1901
1853
|
|
|
1902
|
-
def readParameterInterface(self, element: ET.Element,
|
|
1903
|
-
|
|
1904
|
-
self.logger.debug("Read ParameterInterface %s" % short_name)
|
|
1905
|
-
param_interface = parent.createParameterInterface(short_name)
|
|
1854
|
+
def readParameterInterface(self, element: ET.Element, param_interface: ParameterInterface):
|
|
1855
|
+
self.logger.debug("Read ParameterInterface <%s>" % param_interface.getShortName())
|
|
1906
1856
|
self.readPortInterface(element, param_interface)
|
|
1907
1857
|
self.readParameterInterfaceParameters(element, param_interface)
|
|
1908
1858
|
|
|
1909
|
-
def readClientServerInterface(self, element: ET.Element,
|
|
1910
|
-
|
|
1911
|
-
cs_interface = parent.createClientServerInterface(short_name)
|
|
1859
|
+
def readClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
|
|
1860
|
+
self.logger.debug("Read readClientServerInterface <%s>" % cs_interface.getShortName())
|
|
1912
1861
|
self.readPortInterface(element, cs_interface)
|
|
1913
1862
|
self.readOperations(element, cs_interface)
|
|
1914
1863
|
self.readPossibleErrors(element, cs_interface)
|
|
@@ -1998,29 +1947,26 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1998
1947
|
compu.setCompuDefaultValue(self.getCompuConst(child_element, "COMPU-DEFAULT-VALUE"))
|
|
1999
1948
|
return compu
|
|
2000
1949
|
|
|
2001
|
-
def readCompuMethod(self, element: ET.Element,
|
|
2002
|
-
|
|
2003
|
-
self.logger.debug("readCompuMethods %s" % short_name)
|
|
2004
|
-
compu_method = parent.createCompuMethod(short_name)
|
|
1950
|
+
def readCompuMethod(self, element: ET.Element, compu_method: CompuMethod):
|
|
1951
|
+
self.logger.debug("Read CompuMethods <%s>" % compu_method.getShortName())
|
|
2005
1952
|
self.readIdentifiable(element, compu_method)
|
|
2006
1953
|
compu_method.setUnitRef(self.getChildElementOptionalRefType(element, "UNIT-REF")) \
|
|
2007
1954
|
.setCompuInternalToPhys(self.getCompu(element, "COMPU-INTERNAL-TO-PHYS")) \
|
|
2008
1955
|
.setCompuPhysToInternal(self.getCompu(element, "COMPU-PHYS-TO-INTERNAL"))
|
|
2009
1956
|
|
|
2010
|
-
def
|
|
1957
|
+
def readSwcBswMappingSwcBswRunnableMappings(self, element: ET.Element, parent: SwcBswMapping):
|
|
2011
1958
|
for child_element in self.findall(element, "RUNNABLE-MAPPINGS/SWC-BSW-RUNNABLE-MAPPING"):
|
|
2012
1959
|
mapping = SwcBswRunnableMapping()
|
|
2013
1960
|
mapping.setBswEntityRef(self.getChildElementOptionalRefType(child_element, "BSW-ENTITY-REF")) \
|
|
2014
1961
|
.setSwcRunnableRef(self.getChildElementOptionalRefType(child_element, "SWC-RUNNABLE-REF"))
|
|
2015
1962
|
parent.addRunnableMapping(mapping)
|
|
2016
1963
|
|
|
2017
|
-
def
|
|
2018
|
-
|
|
2019
|
-
self.
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
self.
|
|
2023
|
-
swc_bsw_mapping.setSwcBehaviorRef(self.getChildElementOptionalRefType(element, "SWC-BEHAVIOR-REF"))
|
|
1964
|
+
def readSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
|
|
1965
|
+
self.logger.debug("read SwcBswMappings %s" % mapping.getShortName())
|
|
1966
|
+
self.readIdentifiable(element, mapping)
|
|
1967
|
+
mapping.setBswBehaviorRef(self.getChildElementOptionalRefType(element, "BSW-BEHAVIOR-REF"))
|
|
1968
|
+
self.readSwcBswMappingSwcBswRunnableMappings(element, mapping)
|
|
1969
|
+
mapping.setSwcBehaviorRef(self.getChildElementOptionalRefType(element, "SWC-BEHAVIOR-REF"))
|
|
2024
1970
|
|
|
2025
1971
|
def readValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
|
|
2026
1972
|
self.readARObjectAttributes(element, value_spec)
|
|
@@ -2095,10 +2041,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2095
2041
|
self.readRecordValueSpecificationFields(element, value_spec)
|
|
2096
2042
|
return value_spec
|
|
2097
2043
|
|
|
2098
|
-
def readConstantSpecification(self, element: ET.Element,
|
|
2099
|
-
|
|
2100
|
-
self.logger.debug("readConstantSpecification %s" % short_name)
|
|
2101
|
-
spec = parent.createConstantSpecification(short_name)
|
|
2044
|
+
def readConstantSpecification(self, element: ET.Element, spec: ConstantSpecification):
|
|
2045
|
+
self.logger.debug("readConstantSpecification %s" % spec.getShortName())
|
|
2102
2046
|
self.readIdentifiable(element, spec)
|
|
2103
2047
|
for child_element in self.findall(element, "VALUE-SPEC/*"):
|
|
2104
2048
|
spec.setValueSpec(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
@@ -2132,24 +2076,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2132
2076
|
self.readPhysConstrs(child_element, rule)
|
|
2133
2077
|
parent.addDataConstrRule(rule)
|
|
2134
2078
|
|
|
2135
|
-
def readDataConstr(self, element: ET.Element,
|
|
2136
|
-
|
|
2137
|
-
self.logger.debug("readDataConstr %s" % short_name)
|
|
2138
|
-
constr = parent.createDataConstr(short_name)
|
|
2079
|
+
def readDataConstr(self, element: ET.Element, constr: DataConstr):
|
|
2080
|
+
self.logger.debug("Read DataConstr <%s>" % constr.getShortName())
|
|
2139
2081
|
self.readIdentifiable(element, constr)
|
|
2140
2082
|
self.readDataConstrRule(element, constr)
|
|
2141
2083
|
|
|
2142
|
-
def readUnit(self, element: ET.Element,
|
|
2143
|
-
|
|
2144
|
-
self.logger.debug("readUnit %s" % short_name)
|
|
2145
|
-
unit = parent.createUnit(short_name)
|
|
2084
|
+
def readUnit(self, element: ET.Element, unit: Unit):
|
|
2085
|
+
self.logger.debug("Read Unit <%s>" % unit.getShortName())
|
|
2146
2086
|
self.readIdentifiable(element, unit)
|
|
2147
2087
|
unit.setDisplayName(self.getChildElementOptionalLiteral(element, "DISPLAY-NAME")) \
|
|
2148
2088
|
.setFactorSiToUnit(self.getChildElementOptionalFloatValue(element, "FACTOR-SI-TO-UNIT")) \
|
|
2149
2089
|
.setOffsetSiToUnit(self.getChildElementOptionalFloatValue(element, "OFFSET-SI-TO-UNIT")) \
|
|
2150
2090
|
.setPhysicalDimensionRef(self.getChildElementOptionalRefType(element, "PHYSICAL-DIMENSION-REF"))
|
|
2151
2091
|
|
|
2152
|
-
|
|
2153
2092
|
def readEndToEndDescriptionDataId(self, element: ET.Element, parent: EndToEndDescription):
|
|
2154
2093
|
child_element = element.find("./xmlns:DATA-IDS", self.nsmap)
|
|
2155
2094
|
if child_element is not None:
|
|
@@ -2190,11 +2129,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2190
2129
|
|
|
2191
2130
|
def readEndToEndProtectionVariablePrototypes(self, element: ET.Element, parent: EndToEndProtection):
|
|
2192
2131
|
for child_element in element.findall("./xmlns:END-TO-END-PROTECTION-VARIABLE-PROTOTYPES/*", self.nsmap):
|
|
2193
|
-
tag_name = self.getTagName(child_element
|
|
2132
|
+
tag_name = self.getTagName(child_element)
|
|
2194
2133
|
if tag_name == "END-TO-END-PROTECTION-VARIABLE-PROTOTYPE":
|
|
2195
2134
|
parent.addEndToEndProtectionVariablePrototype(self.getEndToEndProtectionVariablePrototype(child_element))
|
|
2196
2135
|
else:
|
|
2197
|
-
self.
|
|
2136
|
+
self.raiseError("Unsupported End To End Protection Variable Prototype <%s>" % tag_name)
|
|
2198
2137
|
|
|
2199
2138
|
def readEndToEndProtection(self, element: ET.Element, parent: EndToEndProtectionSet):
|
|
2200
2139
|
short_name = self.getShortName(element)
|
|
@@ -2205,15 +2144,16 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2205
2144
|
self.readEndToEndProtectionVariablePrototypes(element, protection)
|
|
2206
2145
|
|
|
2207
2146
|
def readEndToEndProtections(self, element: ET.Element, parent: EndToEndProtectionSet):
|
|
2208
|
-
for child_element in
|
|
2209
|
-
tag_name = self.getTagName(child_element
|
|
2147
|
+
for child_element in self.findall(element, "END-TO-END-PROTECTIONS/*", self.nsmap):
|
|
2148
|
+
tag_name = self.getTagName(child_element)
|
|
2210
2149
|
if tag_name == "END-TO-END-PROTECTION":
|
|
2211
2150
|
self.readEndToEndProtection(child_element, parent)
|
|
2151
|
+
else:
|
|
2152
|
+
self.notImplemented("Unsupported EndToEndProtectionSet <%s>" % tag_name)
|
|
2212
2153
|
|
|
2213
|
-
def readEndToEndProtectionSet(self, element: ET.Element,
|
|
2214
|
-
|
|
2215
|
-
self.
|
|
2216
|
-
protection_set = parent.createEndToEndProtectionSet(short_name)
|
|
2154
|
+
def readEndToEndProtectionSet(self, element: ET.Element, protection_set: EndToEndProtectionSet):
|
|
2155
|
+
self.logger.debug("Read EndToEndProtectionSet <%s>" % protection_set.getShortName())
|
|
2156
|
+
self.readIdentifiable(element, protection_set)
|
|
2217
2157
|
self.readEndToEndProtections(element, protection_set)
|
|
2218
2158
|
|
|
2219
2159
|
def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
@@ -2227,11 +2167,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2227
2167
|
self.readImplementationProps(element, props)
|
|
2228
2168
|
|
|
2229
2169
|
def readImplementationDataTypeSymbolProps(self, element: ET.Element, data_type: ImplementationDataType):
|
|
2230
|
-
child_element =
|
|
2170
|
+
child_element = self.find(element, "SYMBOL-PROPS")
|
|
2231
2171
|
if child_element is not None:
|
|
2232
|
-
|
|
2233
|
-
self.logger.debug("readSymbolProps %s" % short_name)
|
|
2234
|
-
props = data_type.createSymbolProps(short_name)
|
|
2172
|
+
props = data_type.createSymbolProps(self.getShortName(child_element))
|
|
2235
2173
|
self.readSymbolProps(child_element, props)
|
|
2236
2174
|
|
|
2237
2175
|
def readApplicationDataType(self, element: ET.Element, data_type: ApplicationDataType):
|
|
@@ -2258,10 +2196,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2258
2196
|
array_element.setArraySizeSemantics(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS"))
|
|
2259
2197
|
array_element.setMaxNumberOfElements(self.getChildElementOptionalNumericalValue(child_element, "MAX-NUMBER-OF-ELEMENTS"))
|
|
2260
2198
|
|
|
2261
|
-
def readApplicationArrayDataType(self, element: ET.Element,
|
|
2262
|
-
|
|
2263
|
-
self.logger.debug("readApplicationArrayDataType %s" % short_name)
|
|
2264
|
-
data_type = parent.createApplicationArrayDataType(short_name)
|
|
2199
|
+
def readApplicationArrayDataType(self, element: ET.Element, data_type: ApplicationArrayDataType):
|
|
2200
|
+
self.logger.debug("Read ApplicationArrayDataType <%s>" % data_type)
|
|
2265
2201
|
self.readApplicationCompositeDataType(element, data_type)
|
|
2266
2202
|
self.readApplicationArrayElement(element, data_type)
|
|
2267
2203
|
|
|
@@ -2272,7 +2208,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2272
2208
|
layout_v = SwRecordLayoutV()
|
|
2273
2209
|
layout_v.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
2274
2210
|
.setBaseTypeRef(self.getChildElementOptionalRefType(child_element, "BASE-TYPE-REF")) \
|
|
2275
|
-
.setSwRecordLayoutVAxis(self.
|
|
2211
|
+
.setSwRecordLayoutVAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-AXIS")) \
|
|
2276
2212
|
.setSwRecordLayoutVProp(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP")) \
|
|
2277
2213
|
.setSwRecordLayoutVIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX"))
|
|
2278
2214
|
return layout_v
|
|
@@ -2284,7 +2220,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2284
2220
|
group = SwRecordLayoutGroup()
|
|
2285
2221
|
group.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
2286
2222
|
.setCategory(self.getChildElementOptionalLiteral(child_element, "CATEGORY")) \
|
|
2287
|
-
.setSwRecordLayoutGroupAxis(self.
|
|
2223
|
+
.setSwRecordLayoutGroupAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS")) \
|
|
2288
2224
|
.setSwRecordLayoutGroupIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX")) \
|
|
2289
2225
|
.setSwRecordLayoutGroupFrom(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM")) \
|
|
2290
2226
|
.setSwRecordLayoutGroupStep(self.getChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP")) \
|
|
@@ -2301,17 +2237,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2301
2237
|
|
|
2302
2238
|
return group
|
|
2303
2239
|
|
|
2304
|
-
def readSwRecordLayout(self, element: ET.Element,
|
|
2305
|
-
|
|
2306
|
-
self.logger.debug("readSwRecordLayout %s" % short_name)
|
|
2307
|
-
layout = parent.createSwRecordLayout(short_name)
|
|
2240
|
+
def readSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
|
|
2241
|
+
self.logger.debug("Read SwRecordLayout <%s>" % layout.getShortName())
|
|
2308
2242
|
self.readIdentifiable(element, layout)
|
|
2309
2243
|
layout.setSwRecordLayoutGroup(self.getSwRecordLayoutGroup(element, "SW-RECORD-LAYOUT-GROUP"))
|
|
2310
2244
|
|
|
2311
|
-
def readSwAddrMethod(self, element: ET.Element,
|
|
2312
|
-
|
|
2313
|
-
self.logger.debug("read SwAddrMethod %s" % short_name)
|
|
2314
|
-
method = parent.createSwAddrMethod(short_name)
|
|
2245
|
+
def readSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
|
|
2246
|
+
self.logger.debug("Read SwAddrMethod <%s>" % method.getShortName())
|
|
2315
2247
|
self.readIdentifiable(element, method)
|
|
2316
2248
|
method.setMemoryAllocationKeywordPolicy(self.getChildElementOptionalLiteral(element, "MEMORY-ALLOCATION-KEYWORD-POLICY"))
|
|
2317
2249
|
for option in self.getChildElementLiteralValueList(element, "OPTIONS/OPTION"):
|
|
@@ -2319,10 +2251,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2319
2251
|
method.setSectionInitializationPolicy(self.getChildElementOptionalLiteral(element, "SECTION-INITIALIZATION-POLICY")) \
|
|
2320
2252
|
.setSectionType(self.getChildElementOptionalLiteral(element, "SECTION-TYPE"))
|
|
2321
2253
|
|
|
2322
|
-
def readTriggerInterface(self, element: ET.Element,
|
|
2323
|
-
|
|
2324
|
-
self.
|
|
2325
|
-
trigger_if = parent.createTriggerInterface(short_name)
|
|
2254
|
+
def readTriggerInterface(self, element: ET.Element, trigger_if: TriggerInterface):
|
|
2255
|
+
self.logger.debug("Read TriggerInterface <%s>" % trigger_if.getShortName())
|
|
2256
|
+
self.readIdentifiable(element, trigger_if)
|
|
2326
2257
|
|
|
2327
2258
|
def readModeDeclarationGroupModeDeclaration(self, element: ET.Element, parent: ModeDeclarationGroup):
|
|
2328
2259
|
for child_element in self.findall(element, "MODE-DECLARATIONS/MODE-DECLARATION"):
|
|
@@ -2331,10 +2262,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2331
2262
|
self.readARObjectAttributes(child_element, declaration)
|
|
2332
2263
|
declaration.setValue(self.getChildElementOptionalNumericalValue(child_element, "VALUE"))
|
|
2333
2264
|
|
|
2334
|
-
def readModeDeclarationGroup(self, element: ET.Element,
|
|
2335
|
-
|
|
2336
|
-
self.logger.debug("readModeDeclarationGroup %s" % short_name)
|
|
2337
|
-
group = parent.createModeDeclarationGroup(short_name)
|
|
2265
|
+
def readModeDeclarationGroup(self, element: ET.Element, group: ModeDeclarationGroup):
|
|
2266
|
+
self.logger.debug("Read ModeDeclarationGroup <%s>" % group.getShortName())
|
|
2338
2267
|
self.readIdentifiable(element, group)
|
|
2339
2268
|
self.readModeDeclarationGroupModeDeclaration(element, group)
|
|
2340
2269
|
group.setInitialModeRef(self.getChildElementOptionalRefType(element, "INITIAL-MODE-REF"))
|
|
@@ -2348,10 +2277,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2348
2277
|
self.readIdentifiable(child_element, mode_group)
|
|
2349
2278
|
mode_group.type_tref = self.getChildElementOptionalRefType(child_element, "TYPE-TREF")
|
|
2350
2279
|
|
|
2351
|
-
def readModeSwitchInterface(self, element: ET.Element,
|
|
2352
|
-
|
|
2353
|
-
self.logger.debug("readModeSwitchInterface %s" % short_name)
|
|
2354
|
-
mode_interface = parent.createModeSwitchInterface(short_name)
|
|
2280
|
+
def readModeSwitchInterface(self, element: ET.Element, mode_interface: ModeSwitchInterface):
|
|
2281
|
+
self.logger.debug("Read ModeSwitchInterface <%s>" % mode_interface.getShortName())
|
|
2355
2282
|
self.readPortInterface(element, mode_interface)
|
|
2356
2283
|
self.readModeSwitchInterfaceModeGroup(element, mode_interface)
|
|
2357
2284
|
|
|
@@ -2369,7 +2296,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2369
2296
|
if tag_name == "EOC-EXECUTABLE-ENTITY-REF":
|
|
2370
2297
|
self.readEOCExecutableEntityRef(child_element, constrain)
|
|
2371
2298
|
else:
|
|
2372
|
-
self.
|
|
2299
|
+
self.raiseError("Unsupported order element <%s>." % tag_name)
|
|
2373
2300
|
|
|
2374
2301
|
def readExecutionOrderConstraint(self, element: ET.Element, extension: TimingExtension):
|
|
2375
2302
|
short_name = self.getShortName(element)
|
|
@@ -2384,12 +2311,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2384
2311
|
if tag_name == "EXECUTION-ORDER-CONSTRAINT":
|
|
2385
2312
|
self.readExecutionOrderConstraint(child_element, extension)
|
|
2386
2313
|
else:
|
|
2387
|
-
self.
|
|
2314
|
+
self.raiseError("Unsupported timing requirement <%s>" % tag_name)
|
|
2388
2315
|
|
|
2389
|
-
def readSwcTiming(self, element: ET.Element,
|
|
2390
|
-
|
|
2391
|
-
self.logger.debug("readSwcTiming %s" % short_name)
|
|
2392
|
-
timing = parent.createSwcTiming(short_name)
|
|
2316
|
+
def readSwcTiming(self, element: ET.Element, timing: SwcTiming):
|
|
2317
|
+
self.logger.debug("Read SwcTiming <%s>" % timing.getShortName())
|
|
2393
2318
|
self.readIdentifiable(element, timing)
|
|
2394
2319
|
self.readTimingExtension(element, timing)
|
|
2395
2320
|
|
|
@@ -2471,9 +2396,45 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2471
2396
|
self.readIdentifiable(element, channel)
|
|
2472
2397
|
self.readPhysicalChannel(element, channel)
|
|
2473
2398
|
|
|
2399
|
+
def readScheduleTableEntry(self, element: ET.Element, entry: ScheduleTableEntry):
|
|
2400
|
+
entry.setDelay(self.getChildElementOptionalTimeValue(element, "DELAY")) \
|
|
2401
|
+
.setPositionInTable(self.getChildElementOptionalIntegerValue(element, "POSITION-IN-TABLE"))
|
|
2402
|
+
|
|
2403
|
+
def getApplicationEntry(self, element: ET.Element, key: str) -> ApplicationEntry:
|
|
2404
|
+
entry = None
|
|
2405
|
+
if element is not None:
|
|
2406
|
+
entry = ApplicationEntry()
|
|
2407
|
+
self.readScheduleTableEntry(element, entry)
|
|
2408
|
+
entry.setFrameTriggeringRef(self.getChildElementOptionalRefType(element, "FRAME-TRIGGERING-REF"))
|
|
2409
|
+
return entry
|
|
2410
|
+
|
|
2411
|
+
def readLinScheduleTableTableEntries(self, element: ET.Element, table: LinScheduleTable):
|
|
2412
|
+
for child_element in self.findall(element, "TABLE-ENTRYS/*"):
|
|
2413
|
+
tag_name = self.getTagName(child_element)
|
|
2414
|
+
if tag_name == "APPLICATION-ENTRY":
|
|
2415
|
+
table = table.addTableEntry(self.getApplicationEntry(child_element, "APPLICATION-ENTRY"))
|
|
2416
|
+
else:
|
|
2417
|
+
self.notImplemented("Unsupported Schedule Table <%s>" % tag_name)
|
|
2418
|
+
|
|
2419
|
+
def readLinScheduleTable(self, element: ET.Element, table: LinScheduleTable):
|
|
2420
|
+
self.readIdentifiable(element, table)
|
|
2421
|
+
table.setResumePosition(self.getChildElementOptionalLiteral(element, "RESUME-POSITION")) \
|
|
2422
|
+
.setRunMode(self.getChildElementOptionalLiteral(element, "RUN-MODE"))
|
|
2423
|
+
self.readLinScheduleTableTableEntries(element, table)
|
|
2424
|
+
|
|
2425
|
+
def readLinPhysicalChannelScheduleTables(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2426
|
+
for child_element in self.findall(element, "SCHEDULE-TABLES/*"):
|
|
2427
|
+
tag_name = self.getTagName(child_element)
|
|
2428
|
+
if tag_name == "LIN-SCHEDULE-TABLE":
|
|
2429
|
+
table = channel.createLinScheduleTable(self.getShortName(child_element))
|
|
2430
|
+
self.readLinScheduleTable(child_element, table)
|
|
2431
|
+
else:
|
|
2432
|
+
self.notImplemented("Unsupported Schedule Table <%s>" % tag_name)
|
|
2433
|
+
|
|
2474
2434
|
def readLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2475
2435
|
self.readIdentifiable(element, channel)
|
|
2476
2436
|
self.readPhysicalChannel(element, channel)
|
|
2437
|
+
self.readLinPhysicalChannelScheduleTables(element, channel)
|
|
2477
2438
|
|
|
2478
2439
|
def getIpv6Configuration(self, element: ET.Element) -> Ipv6Configuration:
|
|
2479
2440
|
configuration = None
|
|
@@ -2496,8 +2457,25 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2496
2457
|
else:
|
|
2497
2458
|
self.notImplemented("Unsupported Network EndPoint Address <%s>" % tag_name)
|
|
2498
2459
|
|
|
2460
|
+
def getDoIpEntity(self, element: ET.Element, key:str) -> DoIpEntity:
|
|
2461
|
+
entity = None
|
|
2462
|
+
child_element = self.find(element, key)
|
|
2463
|
+
if child_element is not None:
|
|
2464
|
+
entity = DoIpEntity()
|
|
2465
|
+
entity.setDoIpEntityRole(self.getChildElementOptionalLiteral(child_element, "DO-IP-ENTITY-ROLE"))
|
|
2466
|
+
return entity
|
|
2467
|
+
|
|
2468
|
+
def getInfrastructureServices(self, element: ET.Element, key:str) -> InfrastructureServices:
|
|
2469
|
+
services = None
|
|
2470
|
+
child_element = self.find(element, key)
|
|
2471
|
+
if child_element is not None:
|
|
2472
|
+
services = InfrastructureServices()
|
|
2473
|
+
services.setDoIpEntity(self.getDoIpEntity(child_element, "DO-IP-ENTITY"))
|
|
2474
|
+
return services
|
|
2475
|
+
|
|
2499
2476
|
def readNetworkEndPoint(self, element: ET.Element, end_point: NetworkEndpoint):
|
|
2500
2477
|
self.readIdentifiable(element, end_point)
|
|
2478
|
+
end_point.setInfrastructureServices(self.getInfrastructureServices(element, "INFRASTRUCTURE-SERVICES"))
|
|
2501
2479
|
self.readNetworkEndPointNetworkEndPointAddress(element, end_point)
|
|
2502
2480
|
end_point.setPriority(self.getChildElementOptionalPositiveInteger(element, "PRIORITY"))
|
|
2503
2481
|
|
|
@@ -2531,11 +2509,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2531
2509
|
connection = None
|
|
2532
2510
|
if element is not None:
|
|
2533
2511
|
connection = SocketConnection()
|
|
2534
|
-
connection.
|
|
2512
|
+
connection.setClientIpAddrFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST")) \
|
|
2513
|
+
.setClientPortFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-PORT-FROM-CONNECTION-REQUEST")) \
|
|
2514
|
+
.setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF"))
|
|
2535
2515
|
for pdu in self.getSocketConnectionPdus(element):
|
|
2536
2516
|
connection.addPdu(pdu)
|
|
2537
2517
|
connection.setPduCollectionMaxBufferSize(self.getChildElementOptionalPositiveInteger(element, "PDU-COLLECTION-MAX-BUFFER-SIZE")) \
|
|
2538
2518
|
.setPduCollectionTimeout(self.getChildElementOptionalTimeValue(element, "PDU-COLLECTION-TIMEOUT")) \
|
|
2519
|
+
.setRuntimeIpAddressConfiguration(self.getChildElementOptionalLiteral(element, "RUNTIME-IP-ADDRESS-CONFIGURATION")) \
|
|
2520
|
+
.setRuntimePortConfiguration(self.getChildElementOptionalLiteral(element, "RUNTIME-PORT-CONFIGURATION")) \
|
|
2539
2521
|
.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
|
|
2540
2522
|
return connection
|
|
2541
2523
|
|
|
@@ -2560,18 +2542,205 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2560
2542
|
else:
|
|
2561
2543
|
self.notImplemented("Unsupported Connection Bundle <%s>" % tag_name)
|
|
2562
2544
|
|
|
2545
|
+
def getTpPort(self, element: ET.SubElement, key: str) -> TpPort:
|
|
2546
|
+
port = None
|
|
2547
|
+
child_element = self.find(element, key)
|
|
2548
|
+
if child_element is not None:
|
|
2549
|
+
port = TpPort()
|
|
2550
|
+
port.setDynamicallyAssigned(self.getChildElementOptionalBooleanValue(child_element, "DYNAMICALLY-ASSIGNED")) \
|
|
2551
|
+
.setPortNumber(self.getChildElementOptionalPositiveInteger(child_element, "PORT-NUMBER"))
|
|
2552
|
+
return port
|
|
2553
|
+
|
|
2554
|
+
def readUdpTp(self, element: ET.Element, tp: UdpTp):
|
|
2555
|
+
tp.setUdpTpPort(self.getTpPort(element, "UDP-TP-PORT"))
|
|
2556
|
+
|
|
2557
|
+
def readTcpTp(self, element: ET.Element, tp: TcpTp):
|
|
2558
|
+
tp.setKeepAliveInterval(self.getChildElementOptionalTimeValue(element, "KEEP-ALIVE-INTERVAL")) \
|
|
2559
|
+
.setKeepAliveProbesMax(self.getChildElementOptionalPositiveInteger(element, "KEEP-ALIVE-PROBES-MAX")) \
|
|
2560
|
+
.setKeepAliveTime(self.getChildElementOptionalTimeValue(element, "KEEP-ALIVE-TIME")) \
|
|
2561
|
+
.setKeepAlives(self.getChildElementOptionalBooleanValue(element, "KEEP-ALIVES")) \
|
|
2562
|
+
.setNaglesAlgorithm(self.getChildElementOptionalLiteral(element, "NAGLES-ALGORITHM")) \
|
|
2563
|
+
.setTcpTpPort(self.getTpPort(element, "TCP-TP-PORT"))
|
|
2564
|
+
|
|
2565
|
+
|
|
2566
|
+
def readGenericTp(self, element: ET.Element, tp: GenericTp):
|
|
2567
|
+
tp.setTpAddress(self.getChildElementOptionalLiteral(element, "TP-ADDRESS")) \
|
|
2568
|
+
.setTpTechnology(self.getChildElementOptionalLiteral(element, "TP-TECHNOLOGY"))
|
|
2569
|
+
|
|
2570
|
+
def getTransportProtocolConfiguration(self, element: ET.Element, key: str) -> TransportProtocolConfiguration:
|
|
2571
|
+
configuration = None
|
|
2572
|
+
child_element = self.find(element, "%s/*" % key)
|
|
2573
|
+
if child_element is not None:
|
|
2574
|
+
tag_name = self.getTagName(child_element)
|
|
2575
|
+
if tag_name == "UDP-TP":
|
|
2576
|
+
configuration = UdpTp()
|
|
2577
|
+
self.readUdpTp(child_element, configuration)
|
|
2578
|
+
elif tag_name == "TCP-TP":
|
|
2579
|
+
configuration = TcpTp()
|
|
2580
|
+
self.readTcpTp(child_element, configuration)
|
|
2581
|
+
elif tag_name == "GENERIC-TP":
|
|
2582
|
+
configuration = GenericTp()
|
|
2583
|
+
self.readGenericTp(child_element, configuration)
|
|
2584
|
+
else:
|
|
2585
|
+
self.notImplemented("Unsupported TransportProtocolConfiguration <%s>" % tag_name)
|
|
2586
|
+
return configuration
|
|
2587
|
+
|
|
2588
|
+
def readConsumedEventGroupRoutingGroupRefs(self, element: ET.Element, group: ConsumedEventGroup):
|
|
2589
|
+
for ref in self.getChildElementRefTypeList(element, "ROUTING-GROUP-REFS/ROUTING-GROUP-REF"):
|
|
2590
|
+
group.addRoutingGroupRef(ref)
|
|
2591
|
+
|
|
2592
|
+
def getRequestResponseDelay(self, element: ET.Element, key: str) -> RequestResponseDelay:
|
|
2593
|
+
delay = None
|
|
2594
|
+
child_element = self.find(element, key)
|
|
2595
|
+
if child_element is not None:
|
|
2596
|
+
delay = RequestResponseDelay()
|
|
2597
|
+
delay.setMaxValue(self.getChildElementOptionalTimeValue(child_element, "MAX-VALUE")) \
|
|
2598
|
+
.setMinValue(self.getChildElementOptionalTimeValue(child_element, "MIN-VALUE"))
|
|
2599
|
+
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
|
+
|
|
2612
|
+
def getSdClientConfig(self, element: ET.Element, key: str) -> SdClientConfig:
|
|
2613
|
+
config = None
|
|
2614
|
+
child_element = self.find(element, key)
|
|
2615
|
+
if child_element is not None:
|
|
2616
|
+
config = SdClientConfig()
|
|
2617
|
+
config.setClientServiceMajorVersion(self.getChildElementOptionalPositiveInteger(child_element, "CLIENT-SERVICE-MAJOR-VERSION")) \
|
|
2618
|
+
.setClientServiceMinorVersion(self.getChildElementOptionalPositiveInteger(child_element, "CLIENT-SERVICE-MINOR-VERSION")) \
|
|
2619
|
+
.setInitialFindBehavior(self.getInitialSdDelayConfig(child_element, "INITIAL-FIND-BEHAVIOR")) \
|
|
2620
|
+
.setRequestResponseDelay(self.getRequestResponseDelay(child_element, "REQUEST-RESPONSE-DELAY")) \
|
|
2621
|
+
.setTtl(self.getChildElementOptionalPositiveInteger(child_element, "TTL"))
|
|
2622
|
+
return config
|
|
2623
|
+
|
|
2624
|
+
def readConsumedEventGroup(self, element: ET.Element, group: ConsumedEventGroup):
|
|
2625
|
+
self.readIdentifiable(element, group)
|
|
2626
|
+
group.setApplicationEndpointRef(self.getChildElementOptionalRefType(element, "APPLICATION-ENDPOINT-REF")) \
|
|
2627
|
+
.setEventGroupIdentifier(self.getChildElementOptionalPositiveInteger(element, "EVENT-GROUP-IDENTIFIER"))
|
|
2628
|
+
self.readConsumedEventGroupRoutingGroupRefs(element, group)
|
|
2629
|
+
group.setSdClientConfig(self.getSdClientConfig(element, "SD-CLIENT-CONFIG"))
|
|
2630
|
+
|
|
2631
|
+
def readConsumedServiceInstanceConsumedEventGroups(self, element: ET.Element, instance: ConsumedServiceInstance):
|
|
2632
|
+
for child_element in self.findall(element, "CONSUMED-EVENT-GROUPS/*"):
|
|
2633
|
+
tag_name = self.getTagName(child_element)
|
|
2634
|
+
if tag_name == "CONSUMED-EVENT-GROUP":
|
|
2635
|
+
group = instance.createConsumedEventGroup(self.getShortName(child_element))
|
|
2636
|
+
self.readConsumedEventGroup(child_element, group)
|
|
2637
|
+
else:
|
|
2638
|
+
self.notImplemented("Unsupported ConsumedEventGroups <%s>" % tag_name)
|
|
2639
|
+
|
|
2640
|
+
def readConsumedServiceInstance(self, element: ET.Element, instance: ConsumedServiceInstance):
|
|
2641
|
+
self.readIdentifiable(element, instance)
|
|
2642
|
+
self.readConsumedServiceInstanceConsumedEventGroups(element, instance)
|
|
2643
|
+
instance.setProvidedServiceInstanceRef(self.getChildElementOptionalRefType(element, "PROVIDED-SERVICE-INSTANCE-REF"))
|
|
2644
|
+
instance.setSdClientConfig(self.getSdClientConfig(element, "SD-CLIENT-CONFIG"))
|
|
2645
|
+
|
|
2646
|
+
def readSocketAddressApplicationEndpointConsumedServiceInstances(self, element: ET.Element, end_point: ApplicationEndpoint):
|
|
2647
|
+
for child_element in self.findall(element, "CONSUMED-SERVICE-INSTANCES/*"):
|
|
2648
|
+
tag_name = self.getTagName(child_element)
|
|
2649
|
+
if tag_name == "CONSUMED-SERVICE-INSTANCE":
|
|
2650
|
+
instance = end_point.createConsumedServiceInstance(self.getShortName(child_element))
|
|
2651
|
+
self.readConsumedServiceInstance(child_element, instance)
|
|
2652
|
+
else:
|
|
2653
|
+
self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % tag_name)
|
|
2654
|
+
|
|
2655
|
+
def getInitialSdDelayConfig(self, element: ET.Element, key: str) -> InitialSdDelayConfig:
|
|
2656
|
+
config = None
|
|
2657
|
+
child_element = self.find(element, key)
|
|
2658
|
+
if child_element is not None:
|
|
2659
|
+
config = InitialSdDelayConfig()
|
|
2660
|
+
config.setInitialDelayMaxValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE")) \
|
|
2661
|
+
.setInitialDelayMinValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE")) \
|
|
2662
|
+
.setInitialRepetitionsBaseDelay(self.getChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY")) \
|
|
2663
|
+
.setInitialRepetitionsMax(self.getChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX"))
|
|
2664
|
+
return config
|
|
2665
|
+
|
|
2666
|
+
def getSdServerConfig(self, element: ET.Element, key: str) -> SdServerConfig:
|
|
2667
|
+
config = None
|
|
2668
|
+
child_element = self.find(element, key)
|
|
2669
|
+
if child_element is not None:
|
|
2670
|
+
config = SdServerConfig()
|
|
2671
|
+
config.setInitialOfferBehavior(self.getInitialSdDelayConfig(child_element, "INITIAL-OFFER-BEHAVIOR")) \
|
|
2672
|
+
.setOfferCyclicDelay(self.getChildElementOptionalTimeValue(child_element, "OFFER-CYCLIC-DELAY")) \
|
|
2673
|
+
.setRequestResponseDelay(self.getRequestResponseDelay(child_element, "REQUEST-RESPONSE-DELAY")) \
|
|
2674
|
+
.setServerServiceMajorVersion(self.getChildElementOptionalPositiveInteger(child_element, "SERVER-SERVICE-MAJOR-VERSION")) \
|
|
2675
|
+
.setServerServiceMinorVersion(self.getChildElementOptionalPositiveInteger(child_element, "SERVER-SERVICE-MINOR-VERSION")) \
|
|
2676
|
+
.setTtl(self.getChildElementOptionalPositiveInteger(child_element, "TTL"))
|
|
2677
|
+
return config
|
|
2678
|
+
|
|
2679
|
+
def readEventHandler(self, element: ET.Element, handler: EventHandler):
|
|
2680
|
+
self.readIdentifiable(element, handler)
|
|
2681
|
+
handler.setApplicationEndpointRef(self.getChildElementOptionalRefType(element, "APPLICATION-ENDPOINT-REF"))
|
|
2682
|
+
for ref in self.getChildElementRefTypeList(element, "CONSUMED-EVENT-GROUP-REFS/CONSUMED-EVENT-GROUP-REF"):
|
|
2683
|
+
handler.addConsumedEventGroupRef(ref)
|
|
2684
|
+
handler.setMulticastThreshold(self.getChildElementOptionalPositiveInteger(element, "MULTICAST-THRESHOLD"))
|
|
2685
|
+
for ref in self.getChildElementRefTypeList(element, "ROUTING-GROUP-REFS/ROUTING-GROUP-REF"):
|
|
2686
|
+
handler.addRoutingGroupRef(ref)
|
|
2687
|
+
handler.setSdServerConfig(self.getSdServerConfig(element, "SD-SERVER-CONFIG")) \
|
|
2688
|
+
|
|
2689
|
+
def readProvidedServiceInstanceEventHandlers(self, element: ET.Element, instance: ProvidedServiceInstance):
|
|
2690
|
+
for child_element in self.findall(element, "EVENT-HANDLERS/*"):
|
|
2691
|
+
tag_name = self.getTagName(child_element)
|
|
2692
|
+
if tag_name == "EVENT-HANDLER":
|
|
2693
|
+
handler = instance.createEventHandler(self.getShortName(child_element))
|
|
2694
|
+
self.readEventHandler(child_element, handler)
|
|
2695
|
+
else:
|
|
2696
|
+
self.notImplemented("Unsupported Event Handler <%s>" % tag_name)
|
|
2697
|
+
|
|
2698
|
+
def readProvidedServiceInstance(self, element: ET.Element, instance: ProvidedServiceInstance):
|
|
2699
|
+
self.readIdentifiable(element, instance)
|
|
2700
|
+
self.readProvidedServiceInstanceEventHandlers(element, instance)
|
|
2701
|
+
instance.setInstanceIdentifier(self.getChildElementOptionalPositiveInteger(element, "INSTANCE-IDENTIFIER")) \
|
|
2702
|
+
.setSdServerConfig(self.getSdServerConfig(element, "SD-SERVER-CONFIG")) \
|
|
2703
|
+
.setServiceIdentifier(self.getChildElementOptionalPositiveInteger(element, "SERVICE-IDENTIFIER"))
|
|
2704
|
+
|
|
2705
|
+
def readSocketAddressApplicationEndpointProvidedServiceInstance(self, element: ET.Element, end_point: ApplicationEndpoint):
|
|
2706
|
+
for child_element in self.findall(element, "PROVIDED-SERVICE-INSTANCES/*"):
|
|
2707
|
+
tag_name = self.getTagName(child_element)
|
|
2708
|
+
if tag_name == "PROVIDED-SERVICE-INSTANCE":
|
|
2709
|
+
instance = end_point.createProvidedServiceInstance(self.getShortName(child_element))
|
|
2710
|
+
self.readProvidedServiceInstance(child_element, instance)
|
|
2711
|
+
else:
|
|
2712
|
+
self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % tag_name)
|
|
2713
|
+
|
|
2714
|
+
def readSocketAddressApplicationEndpoint(self, element: ET.Element, address: SocketAddress):
|
|
2715
|
+
child_element = self.find(element, "APPLICATION-ENDPOINT")
|
|
2716
|
+
if child_element is not None:
|
|
2717
|
+
end_point = address.createApplicationEndpoint(self.getShortName(child_element))
|
|
2718
|
+
self.readSocketAddressApplicationEndpointConsumedServiceInstances(child_element, end_point)
|
|
2719
|
+
end_point.setNetworkEndpointRef(self.getChildElementOptionalRefType(child_element, "NETWORK-ENDPOINT-REF")) \
|
|
2720
|
+
.setPriority(self.getChildElementOptionalPositiveInteger(child_element, "PRIORITY"))
|
|
2721
|
+
self.readSocketAddressApplicationEndpointProvidedServiceInstance(child_element, end_point)
|
|
2722
|
+
end_point.setTpConfiguration(self.getTransportProtocolConfiguration(child_element, "TP-CONFIGURATION"))
|
|
2723
|
+
|
|
2724
|
+
def readSocketAddressMulticastConnectorRefs(self, element: ET.Element, address: SocketAddress):
|
|
2725
|
+
for ref in self.getChildElementRefTypeList(element, "MULTICAST-CONNECTOR-REFS/MULTICAST-CONNECTOR-REF"):
|
|
2726
|
+
address.addMulticastConnectorRef(ref)
|
|
2727
|
+
|
|
2728
|
+
|
|
2563
2729
|
def readSocketAddress(self, element: ET.Element, address: SocketAddress):
|
|
2564
|
-
self.
|
|
2565
|
-
|
|
2730
|
+
self.readIdentifiable(element, address)
|
|
2731
|
+
self.readSocketAddressApplicationEndpoint(element, address)
|
|
2732
|
+
self.readSocketAddressMulticastConnectorRefs(element, address)
|
|
2733
|
+
address.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF")) \
|
|
2734
|
+
.setPortAddress(self.getChildElementOptionalPositiveInteger(element, "PORT-ADDRESS"))
|
|
2566
2735
|
|
|
2567
2736
|
def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
|
|
2568
2737
|
for child_element in self.findall(element, "SOCKET-ADDRESSS/*"):
|
|
2569
2738
|
tag_name = self.getTagName(child_element)
|
|
2570
2739
|
if tag_name == "SOCKET-ADDRESS":
|
|
2571
|
-
|
|
2572
|
-
self.readSocketAddress(child_element,
|
|
2740
|
+
address = config.createSocketAddress(self.getShortName(child_element))
|
|
2741
|
+
self.readSocketAddress(child_element, address)
|
|
2573
2742
|
else:
|
|
2574
|
-
self.notImplemented("Unsupported
|
|
2743
|
+
self.notImplemented("Unsupported Socket Address <%s>" % tag_name)
|
|
2575
2744
|
|
|
2576
2745
|
def getSoAdConfig(self, element: ET.Element, key: str) -> SoAdConfig:
|
|
2577
2746
|
child_element = self.find(element, key)
|
|
@@ -2581,12 +2750,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2581
2750
|
self.readSoAdConfigConnectionBundles(child_element, config)
|
|
2582
2751
|
self.readSoAdConfigSocketAddresses(child_element, config)
|
|
2583
2752
|
return config
|
|
2753
|
+
|
|
2754
|
+
def readEthernetPhysicalChannelVlan(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2755
|
+
child_element = self.find(element, "VLAN")
|
|
2756
|
+
if child_element is not None:
|
|
2757
|
+
vlan = channel.createVlanConfig(self.getShortName(child_element))
|
|
2758
|
+
vlan.setVlanIdentifier(self.getChildElementOptionalPositiveInteger(child_element, "VLAN-IDENTIFIER"))
|
|
2584
2759
|
|
|
2585
2760
|
def readEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2586
2761
|
self.readIdentifiable(element, channel)
|
|
2587
2762
|
self.readPhysicalChannel(element, channel)
|
|
2588
2763
|
self.readEthernetPhysicalChannelNetworkEndPoints(element, channel)
|
|
2589
2764
|
channel.setSoAdConfig(self.getSoAdConfig(element, "SO-AD-CONFIG"))
|
|
2765
|
+
self.readEthernetPhysicalChannelVlan(element, channel)
|
|
2590
2766
|
|
|
2591
2767
|
def readCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2592
2768
|
for child_element in self.findall(element, "PHYSICAL-CHANNELS/*"):
|
|
@@ -2609,38 +2785,110 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2609
2785
|
self.readCommunicationClusterPhysicalChannels(element, cluster)
|
|
2610
2786
|
cluster.setProtocolName(self.getChildElementOptionalLiteral(element, "PROTOCOL-NAME")) \
|
|
2611
2787
|
.setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
|
|
2612
|
-
|
|
2788
|
+
|
|
2789
|
+
def getCanClusterBusOffRecovery(self, element: ET.Element, key: str) -> CanClusterBusOffRecovery:
|
|
2790
|
+
recovery = None
|
|
2791
|
+
child_element = self.find(element, key)
|
|
2792
|
+
if child_element is not None:
|
|
2793
|
+
recovery = CanClusterBusOffRecovery()
|
|
2794
|
+
recovery.setBorCounterL1ToL2(self.getChildElementOptionalPositiveInteger(child_element, "BOR-COUNTER-L-1-TO-L-2")) \
|
|
2795
|
+
.setBorTimeL1(self.getChildElementOptionalTimeValue(child_element, "BOR-TIME-L-1")) \
|
|
2796
|
+
.setBorTimeL2(self.getChildElementOptionalTimeValue(child_element, "BOR-TIME-L-2"))
|
|
2797
|
+
return recovery
|
|
2798
|
+
|
|
2613
2799
|
def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
|
|
2614
|
-
cluster.
|
|
2800
|
+
cluster.setBusOffRecovery(self.getCanClusterBusOffRecovery(element, "BUS-OFF-RECOVERY")) \
|
|
2801
|
+
.setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE")) \
|
|
2615
2802
|
.setSpeed(self.getChildElementOptionalNumericalValue(element, "SPEED"))
|
|
2616
2803
|
|
|
2617
|
-
def readLinCluster(self, element: ET.Element,
|
|
2618
|
-
|
|
2619
|
-
self.logger.debug("readLinCluster %s" % short_name)
|
|
2620
|
-
cluster = parent.createLinCluster(short_name)
|
|
2804
|
+
def readLinCluster(self, element: ET.Element, cluster: LinCluster):
|
|
2805
|
+
self.logger.debug("Read LinCluster <%s>" % cluster.getShortName())
|
|
2621
2806
|
self.readIdentifiable(element, cluster)
|
|
2622
2807
|
child_element = self.find(element, "LIN-CLUSTER-VARIANTS/LIN-CLUSTER-CONDITIONAL")
|
|
2623
2808
|
if child_element is not None:
|
|
2624
2809
|
self.readCommunicationCluster(child_element, cluster)
|
|
2625
2810
|
|
|
2626
|
-
def readCanCluster(self, element: ET.Element,
|
|
2627
|
-
|
|
2628
|
-
self.logger.debug("readCanCluster %s" % short_name)
|
|
2629
|
-
cluster = parent.createCanCluster(short_name)
|
|
2811
|
+
def readCanCluster(self, element: ET.Element, cluster: CanCluster):
|
|
2812
|
+
self.logger.debug("Read CanCluster <%s>" % cluster.getShortName())
|
|
2630
2813
|
self.readIdentifiable(element, cluster)
|
|
2631
2814
|
child_element = self.find(element, "CAN-CLUSTER-VARIANTS/CAN-CLUSTER-CONDITIONAL")
|
|
2632
2815
|
if child_element is not None:
|
|
2633
2816
|
self.readCommunicationCluster(child_element, cluster)
|
|
2634
2817
|
self.readAbstractCanCluster(child_element, cluster)
|
|
2635
2818
|
|
|
2636
|
-
def
|
|
2637
|
-
|
|
2638
|
-
self.
|
|
2639
|
-
|
|
2819
|
+
def readMacMulticastGroup(self, element: ET.Element, group: MacMulticastGroup):
|
|
2820
|
+
self.readIdentifiable(element, group)
|
|
2821
|
+
group.setMacMulticastAddress(self.getChildElementOptionalLiteral(element, "MAC-MULTICAST-ADDRESS",))
|
|
2822
|
+
|
|
2823
|
+
def readEthernetClusterMacMulticastGroups(self, element: ET.Element, cluster: EthernetCluster):
|
|
2824
|
+
for child_element in self.findall(element, "MAC-MULTICAST-GROUPS/*"):
|
|
2825
|
+
tag_name = self.getTagName(child_element)
|
|
2826
|
+
if (tag_name == "MAC-MULTICAST-GROUP"):
|
|
2827
|
+
group = cluster.createMacMulticastGroup(self.getShortName(child_element))
|
|
2828
|
+
self.readMacMulticastGroup(child_element, group)
|
|
2829
|
+
else:
|
|
2830
|
+
self.notImplemented("Unsupported assigned data type <%s>" % tag_name)
|
|
2831
|
+
|
|
2832
|
+
def readEthernetCluster(self, element: ET.Element, cluster: EthernetCluster):
|
|
2833
|
+
self.logger.debug("Read EthernetCluster <%s>" % cluster.getShortName())
|
|
2640
2834
|
self.readIdentifiable(element, cluster)
|
|
2641
2835
|
child_element = self.find(element, "ETHERNET-CLUSTER-VARIANTS/ETHERNET-CLUSTER-CONDITIONAL")
|
|
2642
2836
|
if child_element is not None:
|
|
2643
2837
|
self.readCommunicationCluster(child_element, cluster)
|
|
2838
|
+
self.readEthernetClusterMacMulticastGroups(child_element, cluster)
|
|
2839
|
+
|
|
2840
|
+
def readDiagnosticConnectionFunctionalRequestRefs(self, element: ET.Element, connection: DiagnosticConnection):
|
|
2841
|
+
for ref in self.getChildElementRefTypeList(element, "FUNCTIONAL-REQUEST-REFS/FUNCTIONAL-REQUEST-REF"):
|
|
2842
|
+
connection.addFunctionalRequestRef(ref)
|
|
2843
|
+
|
|
2844
|
+
def readDiagnosticConnection(self, element: ET.Element, connection: DiagnosticConnection):
|
|
2845
|
+
self.logger.debug("Read DiagnosticConnection <%s>" % connection.getShortName())
|
|
2846
|
+
self.readIdentifiable(element, connection)
|
|
2847
|
+
self.readDiagnosticConnectionFunctionalRequestRefs(element, connection)
|
|
2848
|
+
connection.setPhysicalRequestRef(self.getChildElementOptionalRefType(element, "PHYSICAL-REQUEST-REF")) \
|
|
2849
|
+
.setResponseOnEventRef(self.getChildElementOptionalRefType(element, "RESPONSE-REF"))
|
|
2850
|
+
|
|
2851
|
+
def readDiagnosticServiceTableDiagnosticConnectionRefs(self, element: ET.Element, table: DiagnosticServiceTable):
|
|
2852
|
+
for ref in self.getChildElementRefTypeList(element, "DIAGNOSTIC-CONNECTIONS/DIAGNOSTIC-CONNECTION-REF-CONDITIONAL/DIAGNOSTIC-CONNECTION-REF"):
|
|
2853
|
+
table.addDiagnosticConnectionRef(ref)
|
|
2854
|
+
|
|
2855
|
+
def readDiagnosticServiceTable(self, element: ET.Element, table: DiagnosticServiceTable):
|
|
2856
|
+
self.logger.debug("Read DiagnosticServiceTable <%s>" % table.getShortName())
|
|
2857
|
+
self.readIdentifiable(element, table)
|
|
2858
|
+
self.readDiagnosticServiceTableDiagnosticConnectionRefs(element, table)
|
|
2859
|
+
table.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
|
|
2860
|
+
|
|
2861
|
+
def readMultiplexedIPdu(self, element: ET.Element, i_pdu: MultiplexedIPdu):
|
|
2862
|
+
self.logger.debug("Read MultiplexedIPdu <%s>" % i_pdu.getShortName())
|
|
2863
|
+
self.readIdentifiable(element, i_pdu)
|
|
2864
|
+
|
|
2865
|
+
def readUserDefinedIPdu(self, element: ET.Element, i_pdu: UserDefinedIPdu):
|
|
2866
|
+
self.logger.debug("Read UserDefinedIPdu <%s>" % i_pdu.getShortName())
|
|
2867
|
+
self.readIdentifiable(element, i_pdu)
|
|
2868
|
+
|
|
2869
|
+
def readUserDefinedPdu(self, element: ET.Element, pdu: UserDefinedPdu):
|
|
2870
|
+
self.logger.debug("Read UserDefinedPdu <%s>" % pdu.getShortName())
|
|
2871
|
+
self.readIdentifiable(element, pdu)
|
|
2872
|
+
|
|
2873
|
+
def readGeneralPurposePdu(self, element: ET.Element, pdu: GeneralPurposePdu):
|
|
2874
|
+
self.logger.debug("Read GeneralPurposePdu <%s>" % pdu.getShortName())
|
|
2875
|
+
self.readIdentifiable(element, pdu)
|
|
2876
|
+
|
|
2877
|
+
def readGeneralPurposeIPdu(self, element: ET.Element, i_pdu: GeneralPurposeIPdu):
|
|
2878
|
+
self.logger.debug("Read GeneralPurposeIPdu <%s>" % i_pdu.getShortName())
|
|
2879
|
+
self.readIdentifiable(element, i_pdu)
|
|
2880
|
+
|
|
2881
|
+
def readSecureCommunicationPropsSet(self, element: ET.Element, props_set: SecureCommunicationPropsSet):
|
|
2882
|
+
self.logger.debug("Read SecureCommunicationPropsSet <%s>" % props_set.getShortName())
|
|
2883
|
+
self.readIdentifiable(element, props_set)
|
|
2884
|
+
|
|
2885
|
+
def readSoAdRoutingGroup(self, element: ET.Element, group: SoAdRoutingGroup):
|
|
2886
|
+
self.logger.debug("Read SoAdRoutingGroup <%s>" % group.getShortName())
|
|
2887
|
+
self.readIdentifiable(element, group)
|
|
2888
|
+
|
|
2889
|
+
def readDoIpTpConfig(self, element: ET.Element, config: DoIpTpConfig):
|
|
2890
|
+
self.logger.debug("Read DoIpTpConfig <%s>" % config.getShortName())
|
|
2891
|
+
self.readIdentifiable(element, config)
|
|
2644
2892
|
|
|
2645
2893
|
def readPduToFrameMappings(self, element: ET.Element, parent: Frame):
|
|
2646
2894
|
for child_element in self.findall(element, "PDU-TO-FRAME-MAPPINGS/PDU-TO-FRAME-MAPPING"):
|
|
@@ -2657,45 +2905,34 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2657
2905
|
frame.frameLength = self.getChildElementOptionalNumericalValue(element, "FRAME-LENGTH")
|
|
2658
2906
|
self.readPduToFrameMappings(element, frame)
|
|
2659
2907
|
|
|
2660
|
-
def readLinUnconditionalFrame(self, element: ET.Element,
|
|
2661
|
-
|
|
2662
|
-
self.logger.debug("LinUnconditionalFrame %s" % short_name)
|
|
2663
|
-
frame = parent.createLinUnconditionalFrame(short_name)
|
|
2908
|
+
def readLinUnconditionalFrame(self, element: ET.Element, frame: LinUnconditionalFrame):
|
|
2909
|
+
self.logger.debug("Read LinUnconditionalFrame <%s>" % frame.getShortName())
|
|
2664
2910
|
self.readFrame(element, frame)
|
|
2665
2911
|
|
|
2666
|
-
def readNmPdu(self, element: ET.Element,
|
|
2667
|
-
|
|
2668
|
-
self.logger.debug("readNmPdu %s" % short_name)
|
|
2669
|
-
pdu = parent.createNmPdu(short_name)
|
|
2670
|
-
self.readIdentifiable(element, pdu)
|
|
2912
|
+
def readNmPdu(self, element: ET.Element, pdu: NmPdu):
|
|
2913
|
+
self.logger.debug("Read NmPdu <%s>" % pdu.getShortName())
|
|
2671
2914
|
self.readIPdu(element, pdu)
|
|
2672
2915
|
|
|
2673
|
-
def readNPdu(self, element: ET.Element,
|
|
2674
|
-
|
|
2675
|
-
self.logger.debug("readNPdu %s" % short_name)
|
|
2676
|
-
pdu = parent.createNPdu(short_name)
|
|
2677
|
-
self.readIdentifiable(element, pdu)
|
|
2916
|
+
def readNPdu(self, element: ET.Element, pdu: NPdu):
|
|
2917
|
+
self.logger.debug("Read NPdu <%s>" % pdu.getShortName())
|
|
2678
2918
|
self.readIPdu(element, pdu)
|
|
2679
2919
|
|
|
2680
2920
|
def readIPdu(self, element: ET.Element, pdu: IPdu):
|
|
2921
|
+
self.readIdentifiable(element, pdu)
|
|
2681
2922
|
pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH"))
|
|
2682
2923
|
|
|
2683
|
-
def readDcmIPdu(self, element: ET.Element,
|
|
2684
|
-
|
|
2685
|
-
self.
|
|
2686
|
-
|
|
2687
|
-
self.readIdentifiable(element, pdu)
|
|
2688
|
-
self.readIPdu(element, pdu)
|
|
2689
|
-
pdu.setDiagPduType(self.getChildElementOptionalLiteral(element, "DIAG-PDU-TYPE"))
|
|
2924
|
+
def readDcmIPdu(self, element: ET.Element, i_pdu: DcmIPdu):
|
|
2925
|
+
self.logger.debug("Read DcmIPdu <%s>" % i_pdu.getShortName())
|
|
2926
|
+
self.readIPdu(element, i_pdu)
|
|
2927
|
+
i_pdu.setDiagPduType(self.getChildElementOptionalLiteral(element, "DIAG-PDU-TYPE"))
|
|
2690
2928
|
|
|
2691
|
-
def readSecuredIPdu(self, element: ET.Element,
|
|
2692
|
-
|
|
2693
|
-
self.
|
|
2694
|
-
pdu = parent.createSecuredIPdu(short_name)
|
|
2695
|
-
self.readIdentifiable(element, pdu)
|
|
2696
|
-
self.readIPdu(element, pdu)
|
|
2929
|
+
def readSecuredIPdu(self, element: ET.Element, i_pdu: SecuredIPdu):
|
|
2930
|
+
self.logger.debug("Read SecuredIPdu <%s>" % i_pdu.getShortName())
|
|
2931
|
+
self.readIPdu(element, i_pdu)
|
|
2697
2932
|
|
|
2698
2933
|
def readNmNode(self, element: ET.Element, nm_node: NmNode):
|
|
2934
|
+
self.readIdentifiable(element, nm_node)
|
|
2935
|
+
|
|
2699
2936
|
nm_node.setControllerRef(self.getChildElementOptionalRefType(element, "CONTROLLER-REF")) \
|
|
2700
2937
|
.setNmIfEcuRef(self.getChildElementOptionalRefType(element, "NM-IF-ECU-REF")) \
|
|
2701
2938
|
.setNmNodeId(self.getChildElementOptionalNumericalValue(element, "NM-NODE-ID"))
|
|
@@ -2704,25 +2941,32 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2704
2941
|
for ref in self.getChildElementRefTypeList(element, "TX-NM-PDU-REFS/TX-NM-PDU-REF"):
|
|
2705
2942
|
nm_node.addTxNmPduRefs(ref)
|
|
2706
2943
|
|
|
2707
|
-
def readCanNmNode(self, element: ET.Element,
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
nm_node = parent.createCanNmNode(short_name) # type: CanNmNode
|
|
2711
|
-
self.readIdentifiable(element, nm_node)
|
|
2944
|
+
def readCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
|
|
2945
|
+
self.logger.debug("Read CanNmNode %s" % nm_node.getShortName())
|
|
2946
|
+
|
|
2712
2947
|
self.readNmNode(element, nm_node)
|
|
2713
2948
|
|
|
2714
2949
|
nm_node.setNmMsgCycleOffset(self.getChildElementOptionalFloatValue(element, "NM-MSG-CYCLE-OFFSET")) \
|
|
2715
2950
|
.setNmMsgReducedTime(self.getChildElementOptionalFloatValue(element, "NM-MSG-REDUCED-TIME")) \
|
|
2716
2951
|
.setNmRangeConfig(self.getChildElementRxIdentifierRange(element, "NM-RANGE-CONFIG"))
|
|
2952
|
+
|
|
2953
|
+
def readUdpNmNode(self, element: ET.Element, nm_node: UdpNmNode):
|
|
2954
|
+
self.logger.debug("Read UdpNmNode %s" % nm_node.getShortName())
|
|
2955
|
+
|
|
2956
|
+
self.readNmNode(element, nm_node)
|
|
2717
2957
|
|
|
2718
2958
|
def readNmClusterNmNodes(self, element: ET.Element, parent: NmCluster):
|
|
2719
2959
|
self.logger.debug("readNmConfigNmNodes %s" % parent.getShortName())
|
|
2720
2960
|
for child_element in self.findall(element, "NM-NODES/*"):
|
|
2721
2961
|
tag_name = self.getTagName(child_element)
|
|
2722
2962
|
if tag_name == "CAN-NM-NODE":
|
|
2723
|
-
self.
|
|
2963
|
+
nm_node = parent.createCanNmNode(self.getShortName(child_element))
|
|
2964
|
+
self.readCanNmNode(child_element, nm_node)
|
|
2965
|
+
elif tag_name == "UDP-NM-NODE":
|
|
2966
|
+
nm_node = parent.readUdpNmNode(self.getShortName(child_element))
|
|
2967
|
+
self.readUdpNmNode(child_element, nm_node)
|
|
2724
2968
|
else:
|
|
2725
|
-
self.
|
|
2969
|
+
self.raiseError("Unsupported Nm Node <%s>" % tag_name)
|
|
2726
2970
|
|
|
2727
2971
|
def getCanNmClusterCoupling(self, element: ET.Element) -> CanNmClusterCoupling:
|
|
2728
2972
|
coupling = CanNmClusterCoupling()
|
|
@@ -2734,6 +2978,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2734
2978
|
.setNmImmediateRestartEnabled(self.getChildElementOptionalBooleanValue(element, "NM-IMMEDIATE-RESTART-ENABLED"))
|
|
2735
2979
|
|
|
2736
2980
|
return coupling
|
|
2981
|
+
|
|
2982
|
+
def getUdpNmClusterCoupling(self, element: ET.Element) -> UdpNmClusterCoupling:
|
|
2983
|
+
coupling = UdpNmClusterCoupling()
|
|
2984
|
+
return coupling
|
|
2737
2985
|
|
|
2738
2986
|
def readNmConfigNmClusterCouplings(self, element: ET.Element, nm_config: NmConfig):
|
|
2739
2987
|
self.logger.debug("readNmClusterNmClusterCouplings %s" % nm_config.getShortName())
|
|
@@ -2741,10 +2989,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2741
2989
|
tag_name = self.getTagName(child_element)
|
|
2742
2990
|
if tag_name == "CAN-NM-CLUSTER-COUPLING":
|
|
2743
2991
|
nm_config.addNmClusterCouplings(self.getCanNmClusterCoupling(child_element))
|
|
2992
|
+
elif tag_name == "UDP-NM-CLUSTER-COUPLING":
|
|
2993
|
+
nm_config.addNmClusterCouplings(self.getUdpNmClusterCoupling(child_element))
|
|
2744
2994
|
else:
|
|
2745
|
-
self.
|
|
2995
|
+
self.notImplemented("Unsupported Nm Node <%s>" % tag_name)
|
|
2746
2996
|
|
|
2747
2997
|
def readNmCluster(self, element: ET.Element, cluster: NmCluster):
|
|
2998
|
+
self.readIdentifiable(element, cluster)
|
|
2748
2999
|
cluster.setCommunicationClusterRef(self.getChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF")) \
|
|
2749
3000
|
.setNmChannelId(self.getChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID")) \
|
|
2750
3001
|
.setNmChannelSleepMaster(self.getChildElementOptionalBooleanValue(element, "NM-CHANNEL-SLEEP-MASTER"))
|
|
@@ -2755,7 +3006,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2755
3006
|
short_name = self.getShortName(element)
|
|
2756
3007
|
self.logger.debug("readCanNmCluster %s" % short_name)
|
|
2757
3008
|
cluster = parent.createCanNmCluster(short_name) # type: CanNmCluster
|
|
2758
|
-
self.readIdentifiable(element, cluster)
|
|
2759
3009
|
self.readNmCluster(element, cluster)
|
|
2760
3010
|
|
|
2761
3011
|
cluster.setNmBusloadReductionActive(self.getChildElementOptionalBooleanValue(element, "NM-BUSLOAD-REDUCTION-ACTIVE")) \
|
|
@@ -2773,41 +3023,196 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2773
3023
|
.setNmUserDataLength(self. getChildElementOptionalNumericalValue(element, "NM-USER-DATA-LENGTH")) \
|
|
2774
3024
|
.setNmWaitBusSleepTime(self.getChildElementOptionalFloatValue(element, "NM-WAIT-BUS-SLEEP-TIME"))
|
|
2775
3025
|
|
|
3026
|
+
def readUdpNmCluster(self, element: ET.Element, parent: NmConfig):
|
|
3027
|
+
short_name = self.getShortName(element)
|
|
3028
|
+
self.logger.debug("readCanNmCluster %s" % short_name)
|
|
3029
|
+
cluster = parent.createUdpNmCluster(short_name) # type: CanNmCluster
|
|
3030
|
+
self.readNmCluster(element, cluster)
|
|
3031
|
+
|
|
2776
3032
|
def readNmConfigNmClusters(self, element: ET.Element, parent: NmConfig):
|
|
2777
3033
|
for child_element in self.findall(element, "NM-CLUSTERS/*"):
|
|
2778
3034
|
tag_name = self.getTagName(child_element)
|
|
2779
3035
|
if tag_name == "CAN-NM-CLUSTER":
|
|
2780
3036
|
self.readCanNmCluster(child_element, parent)
|
|
3037
|
+
elif tag_name == "UDP-NM-CLUSTER":
|
|
3038
|
+
self.readUdpNmCluster(child_element, parent)
|
|
2781
3039
|
else:
|
|
2782
|
-
self.
|
|
3040
|
+
self.raiseError("Unsupported Nm Cluster <%s>" % tag_name)
|
|
2783
3041
|
|
|
2784
|
-
def readNmConfig(self, element: ET.Element,
|
|
2785
|
-
|
|
2786
|
-
self.logger.debug("NmConfig %s" % short_name)
|
|
2787
|
-
config = parent.createNmConfig(short_name) # type: NmConfig
|
|
3042
|
+
def readNmConfig(self, element: ET.Element, config: NmConfig):
|
|
3043
|
+
self.logger.debug("Read NmConfig <%s>" % config.getShortName())
|
|
2788
3044
|
self.readIdentifiable(element, config)
|
|
2789
3045
|
self.readNmConfigNmClusters(element, config)
|
|
2790
3046
|
self.readNmConfigNmClusterCouplings(element, config)
|
|
2791
3047
|
|
|
2792
|
-
def readCanTpConfig(self, element: ET.Element,
|
|
2793
|
-
|
|
2794
|
-
self.
|
|
2795
|
-
pdu = parent.createCanTpConfig(short_name)
|
|
2796
|
-
self.readIdentifiable(element, pdu)
|
|
3048
|
+
def readCanTpConfig(self, element: ET.Element, config: CanTpConfig):
|
|
3049
|
+
self.logger.debug("Read CanTpConfig <%s>" % config.getShortName())
|
|
3050
|
+
self.readIdentifiable(element, config)
|
|
2797
3051
|
|
|
2798
|
-
def
|
|
2799
|
-
|
|
2800
|
-
self.
|
|
2801
|
-
|
|
3052
|
+
def readLinTpConfig(self, element: ET.Element, config: LinTpConfig):
|
|
3053
|
+
self.logger.debug("Read LinTpConfig <%s>" % config.getShortName())
|
|
3054
|
+
self.readIdentifiable(element, config)
|
|
3055
|
+
|
|
3056
|
+
def readCanFrame(self, element: ET.Element, frame: CanFrame):
|
|
3057
|
+
self.logger.debug("Read CanFrame <%s>" % frame.getShortName())
|
|
2802
3058
|
self.readFrame(element, frame)
|
|
2803
3059
|
|
|
3060
|
+
def readCommunicationController(self, element: ET.Element, controller: CommunicationController):
|
|
3061
|
+
controller.setWakeUpByControllerSupported(self.getChildElementOptionalBooleanValue(element, "WAKE-UP-BY-CONTROLLER-SUPPORTED"))
|
|
3062
|
+
|
|
3063
|
+
def getCanControllerFdConfiguration(self, element: ET.Element, key: str) -> CanControllerFdConfiguration:
|
|
3064
|
+
configuration = None
|
|
3065
|
+
child_element = self.find(element, key)
|
|
3066
|
+
if child_element is not None:
|
|
3067
|
+
configuration = CanControllerFdConfiguration()
|
|
3068
|
+
#TODO: need to implemented
|
|
3069
|
+
return configuration
|
|
3070
|
+
|
|
3071
|
+
def getCanControllerFdConfigurationRequirements(self, element: ET.Element, key: str) -> CanControllerFdConfigurationRequirements:
|
|
3072
|
+
requirements = None
|
|
3073
|
+
child_element = self.find(element, key)
|
|
3074
|
+
if child_element is not None:
|
|
3075
|
+
requirements = CanControllerFdConfigurationRequirements()
|
|
3076
|
+
requirements.setMaxNumberOfTimeQuantaPerBit(self.getChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT")) \
|
|
3077
|
+
.setMaxSamplePoint(self.getChildElementOptionalFloatValue(child_element, "MAX-SAMPLE-POINT")) \
|
|
3078
|
+
.setMaxSyncJumpWidth(self.getChildElementOptionalFloatValue(child_element, "MAX-SYNC-JUMP-WIDTH")) \
|
|
3079
|
+
.setMaxTrcvDelayCompensationOffset(self.getChildElementOptionalTimeValue(child_element, "MAX-TRCV-DELAY-COMPENSATION-OFFSET")) \
|
|
3080
|
+
.setMinNumberOfTimeQuantaPerBit(self.getChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT")) \
|
|
3081
|
+
.setMinSamplePoint(self.getChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT")) \
|
|
3082
|
+
.setMinSyncJumpWidth(self.getChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH")) \
|
|
3083
|
+
.setMinTrcvDelayCompensationOffset(self.getChildElementOptionalTimeValue(child_element, "MIN-TRCV-DELAY-COMPENSATION-OFFSET")) \
|
|
3084
|
+
.setTxBitRateSwitch(self.getChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH"))
|
|
3085
|
+
return requirements
|
|
3086
|
+
|
|
3087
|
+
def readAbstractCanCommunicationControllerAttributes(self, element: ET.Element, attributes: AbstractCanCommunicationControllerAttributes):
|
|
3088
|
+
attributes.setCanControllerFdAttributes(self.getCanControllerFdConfiguration(element, "CAN-CONTROLLER-FD-CONFIGURATION")) \
|
|
3089
|
+
.setCanControllerFdRequirements(self.getCanControllerFdConfigurationRequirements(element, "CAN-CONTROLLER-FD-REQUIREMENTS"))
|
|
3090
|
+
|
|
3091
|
+
def readCanControllerConfigurationRequirements(self, element: ET.Element, requirements: CanControllerConfigurationRequirements):
|
|
3092
|
+
self.readAbstractCanCommunicationControllerAttributes(element, requirements)
|
|
3093
|
+
requirements.setMaxNumberOfTimeQuantaPerBit(self.getChildElementOptionalIntegerValue(element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT")) \
|
|
3094
|
+
.setMaxSamplePoint(self.getChildElementOptionalFloatValue(element, "MAX-SAMPLE-POINT")) \
|
|
3095
|
+
.setMaxSyncJumpWidth(self.getChildElementOptionalFloatValue(element, "MAX-SYNC-JUMP-WIDTH")) \
|
|
3096
|
+
.setMinNumberOfTimeQuantaPerBit(self.getChildElementOptionalIntegerValue(element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT")) \
|
|
3097
|
+
.setMinSamplePoint(self.getChildElementOptionalFloatValue(element, "MIN-SAMPLE-POINT")) \
|
|
3098
|
+
.setMinSyncJumpWidth(self.getChildElementOptionalFloatValue(element, "MIN-SYNC-JUMP-WIDTH"))
|
|
3099
|
+
|
|
3100
|
+
def readAbstractCanCommunicationControllerCanControllerAttributes(self, element: ET.SubElement, controller: AbstractCanCommunicationController):
|
|
3101
|
+
for child_element in self.findall(element, "CAN-CONTROLLER-ATTRIBUTES/*"):
|
|
3102
|
+
tag_name = self.getTagName(child_element)
|
|
3103
|
+
if tag_name == "CAN-CONTROLLER-CONFIGURATION-REQUIREMENTS":
|
|
3104
|
+
requirements = CanControllerConfigurationRequirements()
|
|
3105
|
+
self.readCanControllerConfigurationRequirements(child_element, requirements)
|
|
3106
|
+
controller.setCanControllerAttributes(requirements)
|
|
3107
|
+
else:
|
|
3108
|
+
self.notImplemented("Unsupported CanControllerAttributes <%s>" % tag_name)
|
|
3109
|
+
|
|
3110
|
+
def readAbstractCanCommunicationController(self, element: ET.Element, controller: AbstractCanCommunicationController):
|
|
3111
|
+
self.readCommunicationController(element, controller)
|
|
3112
|
+
self.readAbstractCanCommunicationControllerCanControllerAttributes(element, controller)
|
|
3113
|
+
|
|
2804
3114
|
def readCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
|
|
2805
3115
|
self.logger.debug("Read CanCommunicationController %s" % controller.getShortName())
|
|
2806
3116
|
self.readIdentifiable(element, controller)
|
|
3117
|
+
child_element = self.find(element, "CAN-COMMUNICATION-CONTROLLER-VARIANTS/CAN-COMMUNICATION-CONTROLLER-CONDITIONAL")
|
|
3118
|
+
if child_element is not None:
|
|
3119
|
+
self.readAbstractCanCommunicationController(child_element, controller)
|
|
3120
|
+
|
|
3121
|
+
def readCouplingPortSchedulerCouplingPortStructuralElement(self, element: ET.Element, item: CouplingPortStructuralElement):
|
|
3122
|
+
self.readIdentifiable(element, item)
|
|
3123
|
+
|
|
3124
|
+
def readCouplingPortFifo(self, element: ET.Element, fifo: CouplingPortFifo):
|
|
3125
|
+
self.readCouplingPortSchedulerCouplingPortStructuralElement(element, fifo)
|
|
3126
|
+
|
|
3127
|
+
def readCouplingPortScheduler(self, element: ET.Element, scheduler: CouplingPortScheduler):
|
|
3128
|
+
self.readCouplingPortSchedulerCouplingPortStructuralElement(element, scheduler)
|
|
3129
|
+
scheduler.setPortScheduler(self.getChildElementOptionalLiteral(element, "PORT-SCHEDULER"))
|
|
3130
|
+
|
|
3131
|
+
def readCouplingPortDetailsCouplingPortStructuralElements(self, item: ET.Element, details: CouplingPortDetails):
|
|
3132
|
+
for child_element in self.findall(item, "COUPLING-PORT-STRUCTURAL-ELEMENTS/*"):
|
|
3133
|
+
tag_name = self.getTagName(child_element)
|
|
3134
|
+
if tag_name == "COUPLING-PORT-FIFO":
|
|
3135
|
+
item = details.createCouplingPortFifo(self.getShortName(child_element))
|
|
3136
|
+
self.readCouplingPortFifo(child_element, item)
|
|
3137
|
+
elif tag_name == "COUPLING-PORT-SCHEDULER":
|
|
3138
|
+
item = details.createCouplingPortScheduler(self.getShortName(child_element))
|
|
3139
|
+
self.readCouplingPortScheduler(child_element, item)
|
|
3140
|
+
else:
|
|
3141
|
+
self.notImplemented("Unsupported CouplingPortStructuralElement <%s>" % tag_name)
|
|
3142
|
+
|
|
3143
|
+
def readEthernetPriorityRegeneration(self, element: ET.Element, regeneration: EthernetPriorityRegeneration):
|
|
3144
|
+
regeneration.setIngressPriority(self.getChildElementOptionalPositiveInteger(element, "INGRESS-PRIORITY")) \
|
|
3145
|
+
.setRegeneratedPriority(self.getChildElementOptionalPositiveInteger(element, "REGENERATED-PRIORITY"))
|
|
3146
|
+
|
|
3147
|
+
def readCouplingPortDetailsEthernetPriorityRegenerations(self, element: ET.Element, details: CouplingPortDetails):
|
|
3148
|
+
for child_element in self.findall(element, "ETHERNET-PRIORITY-REGENERATIONS/*"):
|
|
3149
|
+
tag_name = self.getTagName(child_element)
|
|
3150
|
+
if tag_name == "ETHERNET-PRIORITY-REGENERATION":
|
|
3151
|
+
item = details.createEthernetPriorityRegeneration(self.getShortName(child_element))
|
|
3152
|
+
self.readEthernetPriorityRegeneration(child_element, item)
|
|
3153
|
+
else:
|
|
3154
|
+
self.notImplemented("Unsupported EthernetPriorityRegeneration <%s>" % tag_name)
|
|
3155
|
+
|
|
3156
|
+
def getCouplingPortDetails(self, element: ET.Element, key: str) -> CouplingPortDetails:
|
|
3157
|
+
details = None
|
|
3158
|
+
child_element = self.find(element, key)
|
|
3159
|
+
if child_element is not None:
|
|
3160
|
+
details = CouplingPortDetails()
|
|
3161
|
+
self.readCouplingPortDetailsCouplingPortStructuralElements(child_element, details)
|
|
3162
|
+
self.readCouplingPortDetailsEthernetPriorityRegenerations(child_element, details)
|
|
3163
|
+
details.setLastEgressSchedulerRef(self.getChildElementOptionalRefType(child_element, "LAST-EGRESS-SCHEDULER-REF"))
|
|
3164
|
+
return details
|
|
3165
|
+
|
|
3166
|
+
def readVlanMembership(self, element: ET.Element, membership: VlanMembership):
|
|
3167
|
+
membership.setSendActivity(self.getChildElementOptionalLiteral(element, "SEND-ACTIVITY")) \
|
|
3168
|
+
.setVlanRef(self.getChildElementOptionalRefType(element, "VLAN-REF"))
|
|
3169
|
+
|
|
3170
|
+
def readCouplingPortVlanMemberships(self, element: ET.Element, port: CouplingPort):
|
|
3171
|
+
for child_element in self.findall(element, "VLAN-MEMBERSHIPS/*"):
|
|
3172
|
+
tag_name = self.getTagName(child_element)
|
|
3173
|
+
if tag_name == "VLAN-MEMBERSHIP":
|
|
3174
|
+
membership = VlanMembership()
|
|
3175
|
+
self.readVlanMembership(child_element, membership)
|
|
3176
|
+
port.addVlanMembership(membership)
|
|
3177
|
+
else:
|
|
3178
|
+
self.notImplemented("Unsupported VlanMembership <%s>" % tag_name)
|
|
3179
|
+
|
|
3180
|
+
def readCouplingPort(self, element: ET.Element, port: CouplingPort):
|
|
3181
|
+
self.readIdentifiable(element, port)
|
|
3182
|
+
port.setCouplingPortDetails(self.getCouplingPortDetails(element, "COUPLING-PORT-DETAILS")) \
|
|
3183
|
+
.setMacAddressVlanAssignments(self.getChildElementOptionalLiteral(element, "MAC-LAYER-TYPE"))
|
|
3184
|
+
self.readCouplingPortVlanMemberships(element, port)
|
|
3185
|
+
|
|
3186
|
+
def readEthernetCommunicationControllerCouplingPorts(self, element: ET.Element, controller: EthernetCommunicationController):
|
|
3187
|
+
for child_element in self.findall(element, "COUPLING-PORTS/*"):
|
|
3188
|
+
tag_name = self.getTagName(child_element)
|
|
3189
|
+
if (tag_name == "COUPLING-PORT"):
|
|
3190
|
+
port = controller.createCouplingPort(self.getShortName(child_element))
|
|
3191
|
+
self.readCouplingPort(child_element, port)
|
|
3192
|
+
else:
|
|
3193
|
+
self.notImplemented("Unsupported Coupling Port <%s>" % tag_name)
|
|
2807
3194
|
|
|
2808
3195
|
def readEthernetCommunicationController(self, element: ET.Element, controller: EthernetCommunicationController):
|
|
2809
|
-
self.logger.debug("Read
|
|
3196
|
+
self.logger.debug("Read EthernetCommunicationController %s" % controller.getShortName())
|
|
3197
|
+
self.readIdentifiable(element, controller)
|
|
3198
|
+
child_element = self.find(element, "ETHERNET-COMMUNICATION-CONTROLLER-VARIANTS/ETHERNET-COMMUNICATION-CONTROLLER-CONDITIONAL")
|
|
3199
|
+
if child_element is not None:
|
|
3200
|
+
self.readCommunicationController(child_element, controller)
|
|
3201
|
+
self.readEthernetCommunicationControllerCouplingPorts(child_element, controller)
|
|
3202
|
+
|
|
3203
|
+
def readLinCommunicationController(self, element: ET.Element, controller: LinCommunicationController):
|
|
3204
|
+
self.readCommunicationController(element, controller)
|
|
3205
|
+
controller.setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
|
|
3206
|
+
|
|
3207
|
+
def readLinMaster(self, element: ET.Element, controller: LinMaster):
|
|
3208
|
+
self.logger.debug("Read LinMaster %s" % controller.getShortName())
|
|
2810
3209
|
self.readIdentifiable(element, controller)
|
|
3210
|
+
child_element = self.find(element, "LIN-MASTER-VARIANTS/LIN-MASTER-CONDITIONAL")
|
|
3211
|
+
if child_element is not None:
|
|
3212
|
+
self.readLinCommunicationController(child_element, controller)
|
|
3213
|
+
controller.setTimeBase(self.getChildElementOptionalTimeValue(child_element, "TIME-BASE")) \
|
|
3214
|
+
.setTimeBaseJitter(self.getChildElementOptionalTimeValue(child_element, "TIME-BASE-JITTER"))
|
|
3215
|
+
|
|
2811
3216
|
|
|
2812
3217
|
def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
|
|
2813
3218
|
self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
|
|
@@ -2819,8 +3224,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2819
3224
|
elif tag_name == "ETHERNET-COMMUNICATION-CONTROLLER":
|
|
2820
3225
|
controller = instance.createEthernetCommunicationController(self.getShortName(child_element))
|
|
2821
3226
|
self.readEthernetCommunicationController(child_element, controller)
|
|
3227
|
+
elif tag_name == "LIN-MASTER":
|
|
3228
|
+
controller = instance.createLinMaster(self.getShortName(child_element))
|
|
3229
|
+
self.readLinMaster(child_element, controller)
|
|
2822
3230
|
else:
|
|
2823
|
-
self.
|
|
3231
|
+
self.raiseError("Unsupported Communication Controller <%s>" % tag_name)
|
|
2824
3232
|
|
|
2825
3233
|
def readCommConnectorPort(self, element: ET.Element, port: CommConnectorPort):
|
|
2826
3234
|
self.readIdentifiable(element, port)
|
|
@@ -2831,9 +3239,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2831
3239
|
|
|
2832
3240
|
def readIPduPort(self, element: ET.Element, port: IPduPort):
|
|
2833
3241
|
self.readCommConnectorPort(element, port)
|
|
3242
|
+
port.setKeyId(self.getChildElementOptionalPositiveInteger(element, "KEY-ID")) \
|
|
3243
|
+
.setRxSecurityVerification(self.getChildElementOptionalBooleanValue(element, "RX-SECURITY-VERIFICATION")) \
|
|
3244
|
+
.setUseAuthDataFreshness(self.getChildElementOptionalBooleanValue(element, "USE-AUTH-DATA-FRESHNESS")) \
|
|
2834
3245
|
|
|
2835
3246
|
def readISignalPort(self, element: ET.Element, port: ISignalPort):
|
|
2836
3247
|
self.readCommConnectorPort(element, port)
|
|
3248
|
+
port.setTimeout(self.getChildElementOptionalTimeValue(element, "TIMEOUT"))
|
|
2837
3249
|
|
|
2838
3250
|
def readCommunicationConnectorEcuCommPortInstances(self, element: ET.Element, connector: CommunicationConnector):
|
|
2839
3251
|
self.logger.debug("read EcuCommPortInstances of CommunicationConnector %s" % connector.getShortName())
|
|
@@ -2849,17 +3261,22 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2849
3261
|
port = connector.createISignalPort(self.getShortName(child_element))
|
|
2850
3262
|
self.readISignalPort(child_element, port)
|
|
2851
3263
|
else:
|
|
2852
|
-
self.
|
|
3264
|
+
self.raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
|
|
2853
3265
|
|
|
2854
3266
|
def readCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
|
|
2855
3267
|
self.readIdentifiable(element, connector)
|
|
2856
3268
|
connector.setCommControllerRef(self.getChildElementOptionalRefType(element, "COMM-CONTROLLER-REF"))
|
|
2857
3269
|
self.readCommunicationConnectorEcuCommPortInstances(element, connector)
|
|
3270
|
+
connector.setPncGatewayType(self.getChildElementOptionalLiteral(element, "PNC-GATEWAY-TYPE"))
|
|
2858
3271
|
|
|
2859
3272
|
def readCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
|
|
2860
3273
|
self.readCommunicationConnector(element, connector)
|
|
2861
3274
|
|
|
2862
|
-
def readEthernetCommunicationConnector(self, element: ET.Element, connector:
|
|
3275
|
+
def readEthernetCommunicationConnector(self, element: ET.Element, connector: EthernetCommunicationConnector):
|
|
3276
|
+
self.readCommunicationConnector(element, connector)
|
|
3277
|
+
connector.setMaximumTransmissionUnit(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-TRANSMISSION-UNIT"))
|
|
3278
|
+
|
|
3279
|
+
def readLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
|
|
2863
3280
|
self.readCommunicationConnector(element, connector)
|
|
2864
3281
|
|
|
2865
3282
|
def readEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
|
|
@@ -2872,14 +3289,20 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2872
3289
|
elif tag_name == "ETHERNET-COMMUNICATION-CONNECTOR":
|
|
2873
3290
|
connector = instance.createEthernetCommunicationConnector(self.getShortName(child_element))
|
|
2874
3291
|
self.readEthernetCommunicationConnector(child_element, connector)
|
|
3292
|
+
elif tag_name == "LIN-COMMUNICATION-CONNECTOR":
|
|
3293
|
+
connector = instance.createLinCommunicationConnector(self.getShortName(child_element))
|
|
3294
|
+
self.readLinCommunicationConnector(child_element, connector)
|
|
2875
3295
|
else:
|
|
2876
|
-
self.
|
|
3296
|
+
self.notImplemented("Unsupported Communication Connector <%s>" % tag_name)
|
|
2877
3297
|
|
|
2878
|
-
def
|
|
2879
|
-
|
|
2880
|
-
|
|
2881
|
-
|
|
3298
|
+
def readEcuInstanceAssociatedComIPduGroupRefs(self, element: ET.Element, instance: EcuInstance):
|
|
3299
|
+
for ref in self.getChildElementRefTypeList(element, "ASSOCIATED-COM-I-PDU-GROUP-REFS/ASSOCIATED-COM-I-PDU-GROUP-REF"):
|
|
3300
|
+
instance.addAssociatedComIPduGroupRef(ref)
|
|
3301
|
+
|
|
3302
|
+
def readEcuInstance(self, element: ET.Element, instance: EcuInstance):
|
|
3303
|
+
self.logger.debug("Read EcuInstance <%s>" % instance.getShortName())
|
|
2882
3304
|
self.readIdentifiable(element, instance)
|
|
3305
|
+
self.readEcuInstanceAssociatedComIPduGroupRefs(element, instance)
|
|
2883
3306
|
instance.setComConfigurationGwTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-GW-TIME-BASE")) \
|
|
2884
3307
|
.setComConfigurationRxTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-RX-TIME-BASE")) \
|
|
2885
3308
|
.setComConfigurationTxTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-TX-TIME-BASE")) \
|
|
@@ -2909,30 +3332,34 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2909
3332
|
mappings.append(mapping)
|
|
2910
3333
|
return mappings
|
|
2911
3334
|
|
|
2912
|
-
|
|
3335
|
+
def getTargetIPduRef(self, element, key: str) -> TargetIPduRef:
|
|
3336
|
+
i_pdu_ref = None
|
|
3337
|
+
child_element = self.find(element, key)
|
|
3338
|
+
if child_element is not None:
|
|
3339
|
+
i_pdu_ref = TargetIPduRef()
|
|
3340
|
+
i_pdu_ref.setTargetIPdu(self.getChildElementOptionalRefType(child_element, "TARGET-I-PDU-REF"))
|
|
3341
|
+
return i_pdu_ref
|
|
3342
|
+
|
|
2913
3343
|
def getIPduMappings(self, element: ET.Element) -> List[IPduMapping]:
|
|
2914
3344
|
mappings = []
|
|
2915
|
-
for child_element in self.findall(element,
|
|
3345
|
+
for child_element in self.findall(element, "I-PDU-MAPPINGS/I-PDU-MAPPING"):
|
|
2916
3346
|
mapping = IPduMapping()
|
|
2917
|
-
mapping.
|
|
2918
|
-
|
|
3347
|
+
mapping.setSourceIpduRef(self.getChildElementOptionalRefType(child_element, "SOURCE-I-PDU-REF")) \
|
|
3348
|
+
.setTargetIPdu(self.getTargetIPduRef(child_element, "TARGET-I-PDU"))
|
|
2919
3349
|
mappings.append(mapping)
|
|
2920
3350
|
return mappings
|
|
2921
|
-
'''
|
|
2922
3351
|
|
|
2923
|
-
def readGateway(self, element: ET.Element,
|
|
2924
|
-
|
|
2925
|
-
self.logger.debug("Gateway %s" % short_name)
|
|
2926
|
-
gateway = parent.createGateway(short_name)
|
|
3352
|
+
def readGateway(self, element: ET.Element, gateway: Gateway):
|
|
3353
|
+
self.logger.debug("Read Gateway <%s>" % gateway.getShortName())
|
|
2927
3354
|
self.readIdentifiable(element, gateway)
|
|
2928
|
-
gateway.
|
|
3355
|
+
gateway.setEcuRef(self.getChildElementOptionalRefType(element, "ECU-REF"))
|
|
3356
|
+
for mapping in self.getIPduMappings(element):
|
|
3357
|
+
gateway.addIPduMapping(mapping)
|
|
2929
3358
|
for mapping in self.getISignalMappings(element):
|
|
2930
3359
|
gateway.addSignalMapping(mapping)
|
|
2931
3360
|
|
|
2932
|
-
def readISignal(self, element: ET.Element,
|
|
2933
|
-
|
|
2934
|
-
self.logger.debug("ISignal %s" % short_name)
|
|
2935
|
-
signal = parent.createISignal(short_name)
|
|
3361
|
+
def readISignal(self, element: ET.Element, signal: ISignal):
|
|
3362
|
+
self.logger.debug("Read ISignal <%s>" % signal.getShortName())
|
|
2936
3363
|
self.readIdentifiable(element, signal)
|
|
2937
3364
|
signal.setDataTypePolicy(self.getChildElementOptionalLiteral(element, "DATA-TYPE-POLICY")) \
|
|
2938
3365
|
.setISignalType(self.getChildElementOptionalLiteral(element, "I-SIGNAL-TYPE")) \
|
|
@@ -2948,10 +3375,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2948
3375
|
parent.addEcucValueRef(ref)
|
|
2949
3376
|
self.logger.debug("EcucValue <%s> of EcucValueCollection <%s> has been added", ref.value, parent.getShortName())
|
|
2950
3377
|
|
|
2951
|
-
def readEcucValueCollection(self, element: ET.Element,
|
|
2952
|
-
|
|
2953
|
-
self.logger.debug("EcucValueCollection %s" % short_name)
|
|
2954
|
-
collection = parent.createEcucValueCollection(short_name)
|
|
3378
|
+
def readEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
|
|
3379
|
+
self.logger.debug("Read EcucValueCollection <%s>" % collection.getShortName())
|
|
2955
3380
|
self.readIdentifiable(element, collection)
|
|
2956
3381
|
collection.setEcuExtractRef(self.getChildElementOptionalRefType(element, "ECU-EXTRACT-REF"))
|
|
2957
3382
|
self.readEcucValueCollectionEcucValues(element, collection)
|
|
@@ -3056,20 +3481,16 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3056
3481
|
else:
|
|
3057
3482
|
self.notImplemented("Unsupported Container %s" % tag_name)
|
|
3058
3483
|
|
|
3059
|
-
def readEcucModuleConfigurationValues(self, element: ET.Element,
|
|
3060
|
-
|
|
3061
|
-
self.logger.debug("EcucModuleConfigurationValues %s" % short_name)
|
|
3062
|
-
values = parent.createEcucModuleConfigurationValues(short_name)
|
|
3484
|
+
def readEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
|
|
3485
|
+
self.logger.debug("Read EcucModuleConfigurationValues %s" % values.getShortName())
|
|
3063
3486
|
self.readIdentifiable(element, values)
|
|
3064
3487
|
values.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
|
|
3065
3488
|
values.setImplementationConfigVariant(self.getChildElementOptionalLiteral(element, "IMPLEMENTATION-CONFIG-VARIANT"))
|
|
3066
3489
|
values.setModuleDescriptionRef(self.getChildElementOptionalRefType(element, "MODULE-DESCRIPTION-REF"))
|
|
3067
3490
|
self.readEcucModuleConfigurationValuesContainers(element, values)
|
|
3068
3491
|
|
|
3069
|
-
def
|
|
3070
|
-
|
|
3071
|
-
self.logger.debug("read PhysicalDimensions %s" % short_name)
|
|
3072
|
-
dimension = parent.createPhysicalDimension(short_name)
|
|
3492
|
+
def readPhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
|
|
3493
|
+
self.logger.debug("Read PhysicalDimension <%s>" % dimension.getShortName())
|
|
3073
3494
|
self.readIdentifiable(element, dimension)
|
|
3074
3495
|
dimension.setCurrentExp(self.getChildElementOptionalNumericalValue(element, "CURRENT-EXP")) \
|
|
3075
3496
|
.setLengthExp(self.getChildElementOptionalNumericalValue(element, "LENGTH-EXP")) \
|
|
@@ -3086,27 +3507,21 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3086
3507
|
return mappings
|
|
3087
3508
|
'''
|
|
3088
3509
|
|
|
3089
|
-
def readISignalGroup(self, element: ET.Element,
|
|
3090
|
-
|
|
3091
|
-
self.logger.debug("ISignalGroup %s" % short_name)
|
|
3092
|
-
group = parent.createISignalGroup(short_name)
|
|
3510
|
+
def readISignalGroup(self, element: ET.Element, group: ISignalGroup):
|
|
3511
|
+
self.logger.debug("Read ISignalGroup <%s>" % group.getShortName())
|
|
3093
3512
|
self.readIdentifiable(element, group)
|
|
3094
3513
|
for ref_type in self.getChildElementRefTypeList(element, "I-SIGNAL-REFS/I-SIGNAL-REF"):
|
|
3095
3514
|
group.addISignalRef(ref_type)
|
|
3096
3515
|
group.systemSignalGroupRef = self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-GROUP-REF")
|
|
3097
3516
|
|
|
3098
|
-
def readSystemSignal(self, element: ET.Element,
|
|
3099
|
-
|
|
3100
|
-
self.logger.debug("SystemSignal %s" % short_name)
|
|
3101
|
-
signal = parent.createSystemSignal(short_name)
|
|
3517
|
+
def readSystemSignal(self, element: ET.Element, signal: SystemSignal):
|
|
3518
|
+
self.logger.debug("Read SystemSignal <%s>" % signal.getShortName())
|
|
3102
3519
|
self.readIdentifiable(element, signal)
|
|
3103
3520
|
signal.setDynamicLength(self.getChildElementOptionalBooleanValue(element, "DYNAMIC-LENGTH")) \
|
|
3104
3521
|
.setPhysicalProps(self.getSwDataDefProps(element, "PHYSICAL-PROPS"))
|
|
3105
3522
|
|
|
3106
|
-
def readSystemSignalGroup(self, element: ET.Element,
|
|
3107
|
-
|
|
3108
|
-
self.logger.debug("SystemSignalGroup %s" % short_name)
|
|
3109
|
-
group = parent.createSystemSignalGroup(short_name)
|
|
3523
|
+
def readSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
|
|
3524
|
+
self.logger.debug("Read SystemSignalGroup <%s>" % group.getShortName())
|
|
3110
3525
|
self.readIdentifiable(element, group)
|
|
3111
3526
|
for ref_type in self.getChildElementRefTypeList(element, "SYSTEM-SIGNAL-REFS/SYSTEM-SIGNAL-REF"):
|
|
3112
3527
|
group.addSystemSignalRefs(ref_type)
|
|
@@ -3196,10 +3611,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3196
3611
|
.setTransmissionModeDeclaration(self.getTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION"))
|
|
3197
3612
|
return timing
|
|
3198
3613
|
|
|
3199
|
-
def readISignalIPdu(self, element: ET.Element,
|
|
3200
|
-
|
|
3201
|
-
self.logger.debug("ISignalIPdu %s" % short_name)
|
|
3202
|
-
i_pdu = parent.createISignalIPdu(short_name)
|
|
3614
|
+
def readISignalIPdu(self, element: ET.Element, i_pdu: ISignalIPdu):
|
|
3615
|
+
self.logger.debug("Read ISignalIPdu <%s>" % i_pdu.getShortName())
|
|
3203
3616
|
self.readIdentifiable(element, i_pdu)
|
|
3204
3617
|
i_pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH")) \
|
|
3205
3618
|
.setIPduTimingSpecification(self.getISignalIPduIPduTimingSpecification(element))
|
|
@@ -3212,13 +3625,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3212
3625
|
ref_types.append(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-I-PDU-REF"))
|
|
3213
3626
|
return ref_types
|
|
3214
3627
|
|
|
3215
|
-
def readISignalIPduGroup(self, element: ET.Element,
|
|
3216
|
-
|
|
3217
|
-
self.logger.debug("ISignalIPduGroup %s" % short_name)
|
|
3218
|
-
group = parent.createISignalIPduGroup(short_name)
|
|
3628
|
+
def readISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
|
|
3629
|
+
self.logger.debug("Read ISignalIPduGroup <%s>" % group.getShortName())
|
|
3219
3630
|
self.readIdentifiable(element, group)
|
|
3220
|
-
group.
|
|
3221
|
-
|
|
3631
|
+
group.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")) \
|
|
3632
|
+
.setCommunicationMode(self.getChildElementOptionalLiteral(element, "COMMUNICATION-MODE"))
|
|
3222
3633
|
for ref_type in self.getChildElementRefTypeList(element, "CONTAINED-I-SIGNAL-I-PDU-GROUP-REFS/CONTAINED-I-SIGNAL-I-PDU-GROUP-REF"):
|
|
3223
3634
|
group.addContainedISignalIPduGroupRef(ref_type)
|
|
3224
3635
|
for ref_type in self.getISignalIPduRefs(element):
|
|
@@ -3287,32 +3698,27 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3287
3698
|
self.readIdentifiable(child_element, prototype)
|
|
3288
3699
|
prototype.setFlatMapRef(self.getChildElementOptionalRefType(child_element, "FLAT-MAP-REF")) \
|
|
3289
3700
|
.setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
|
|
3290
|
-
|
|
3701
|
+
|
|
3702
|
+
def readSystemFibexElementRefs(self, element: ET.Element, system: System):
|
|
3703
|
+
for ref in self.getChildElementRefTypeList(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL/FIBEX-ELEMENT-REF"):
|
|
3704
|
+
system.addFibexElementRef(ref)
|
|
3291
3705
|
|
|
3292
|
-
def readSystem(self, element: ET.Element,
|
|
3293
|
-
|
|
3294
|
-
self.logger.debug("Read System %s" % short_name)
|
|
3295
|
-
system = parent.createSystem(short_name)
|
|
3706
|
+
def readSystem(self, element: ET.Element, system: System):
|
|
3707
|
+
self.logger.debug("Read System <%s>" % system.getShortName())
|
|
3296
3708
|
self.readIdentifiable(element, system)
|
|
3297
|
-
|
|
3298
3709
|
system.setEcuExtractVersion(self.getChildElementOptionalLiteral(element, "ECU-EXTRACT-VERSION"))
|
|
3299
|
-
|
|
3300
|
-
system.addFibexElementRef(self.getChildElementOptionalRefType(child_element, "FIBEX-ELEMENT-REF"))
|
|
3710
|
+
self.readSystemFibexElementRefs(element, system)
|
|
3301
3711
|
self.readSystemMappings(element, system)
|
|
3302
3712
|
self.readRootSwCompositionPrototype(element, system)
|
|
3303
3713
|
system.setSystemVersion(self.getChildElementOptionalRevisionLabelString(element, "SYSTEM-VERSION"))
|
|
3304
3714
|
|
|
3305
|
-
def readGenericEthernetFrame(self, element: ET.Element,
|
|
3306
|
-
|
|
3307
|
-
self.logger.debug("Read EthernetFrame %s" % short_name)
|
|
3308
|
-
frame = parent.createGenericEthernetFrame(short_name)
|
|
3715
|
+
def readGenericEthernetFrame(self, element: ET.Element, frame: GenericEthernetFrame):
|
|
3716
|
+
self.logger.debug("Read GenericEthernetFrame <%s>" % frame.getShortName())
|
|
3309
3717
|
self.readFrame(element, frame)
|
|
3310
3718
|
|
|
3311
|
-
def readLifeCycleInfoSet(self, element: ET.Element,
|
|
3312
|
-
|
|
3313
|
-
self.
|
|
3314
|
-
frame = parent.createLifeCycleInfoSet(short_name)
|
|
3315
|
-
self.readIdentifiable(element, frame)
|
|
3719
|
+
def readLifeCycleInfoSet(self, element: ET.Element, info_set: LifeCycleInfoSet):
|
|
3720
|
+
self.logger.debug("Read LifeCycleInfoSet <%s>" % info_set.getShortName())
|
|
3721
|
+
self.readIdentifiable(element, info_set)
|
|
3316
3722
|
|
|
3317
3723
|
def readFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
|
|
3318
3724
|
self.logger.debug("Read LifeCycleInfoSet %s" % desc.getShortName())
|
|
@@ -3329,10 +3735,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3329
3735
|
else:
|
|
3330
3736
|
self.notImplemented("Unsupported Flat Map Instances <%s>" % tag_name)
|
|
3331
3737
|
|
|
3332
|
-
def readFlatMap(self, element: ET.Element,
|
|
3333
|
-
|
|
3334
|
-
self.logger.debug("Read FlatMap %s" % short_name)
|
|
3335
|
-
map = parent.createFlatMap(short_name)
|
|
3738
|
+
def readFlatMap(self, element: ET.Element, map: FlatMap):
|
|
3739
|
+
self.logger.debug("Read FlatMap <%s>" % map.getShortName())
|
|
3336
3740
|
self.readIdentifiable(element, map)
|
|
3337
3741
|
self.readFlatMapInstances(element, map)
|
|
3338
3742
|
|
|
@@ -3360,136 +3764,221 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3360
3764
|
else:
|
|
3361
3765
|
self.notImplemented("Unsupported PortInterfaceMapping <%s>" % tag_name)
|
|
3362
3766
|
|
|
3363
|
-
def readPortInterfaceMappingSet(self, element: ET.Element,
|
|
3364
|
-
|
|
3365
|
-
self.logger.debug("Read PortInterfaceMappingSet %s" % short_name)
|
|
3366
|
-
mapping_set = parent.createPortInterfaceMappingSet(short_name)
|
|
3767
|
+
def readPortInterfaceMappingSet(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
|
|
3768
|
+
self.logger.debug("Read PortInterfaceMappingSet %s" % mapping_set.getShortName())
|
|
3367
3769
|
self.readIdentifiable(element, mapping_set)
|
|
3368
3770
|
self.readPortInterfaceMappings(element, mapping_set)
|
|
3369
3771
|
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
3772
|
def readARPackageElements(self, element: ET.Element, parent: ARPackage):
|
|
3373
3773
|
for child_element in self.findall(element, "ELEMENTS/*"):
|
|
3374
|
-
tag_name = self.getTagName(child_element
|
|
3774
|
+
tag_name = self.getTagName(child_element)
|
|
3375
3775
|
if tag_name == "COMPOSITION-SW-COMPONENT-TYPE":
|
|
3376
|
-
self.
|
|
3776
|
+
type = parent.createCompositionSwComponentType(self.getShortName(child_element))
|
|
3777
|
+
self.readCompositionSwComponentType(child_element, type)
|
|
3377
3778
|
elif tag_name == "COMPLEX-DEVICE-DRIVER-SW-COMPONENT-TYPE":
|
|
3378
|
-
self.
|
|
3779
|
+
type = parent.createComplexDeviceDriverSwComponentType(self.getShortName(child_element))
|
|
3780
|
+
self.readComplexDeviceDriverSwComponentType(child_element, type)
|
|
3379
3781
|
elif tag_name == "SWC-IMPLEMENTATION":
|
|
3380
|
-
self.
|
|
3782
|
+
impl = parent.createSwcImplementation(self.getShortName(child_element))
|
|
3783
|
+
self.readSwcImplementation(child_element, impl)
|
|
3381
3784
|
elif tag_name == "APPLICATION-PRIMITIVE-DATA-TYPE":
|
|
3382
|
-
self.
|
|
3785
|
+
data_type = parent.createApplicationPrimitiveDataType(self.getShortName(child_element))
|
|
3786
|
+
self.readApplicationPrimitiveDataType(child_element, data_type)
|
|
3383
3787
|
elif tag_name == "APPLICATION-RECORD-DATA-TYPE":
|
|
3384
|
-
self.
|
|
3788
|
+
data_type = parent.createApplicationRecordDataType(self.getShortName(child_element))
|
|
3789
|
+
self.readApplicationRecordDataType(child_element, data_type)
|
|
3385
3790
|
elif tag_name == "SW-BASE-TYPE":
|
|
3386
|
-
self.
|
|
3791
|
+
data_type = parent.createSwBaseType(self.getShortName(child_element))
|
|
3792
|
+
self.readSwBaseType(child_element, data_type)
|
|
3387
3793
|
elif tag_name == "COMPU-METHOD":
|
|
3388
|
-
self.
|
|
3794
|
+
compu_method = parent.createCompuMethod(self.getShortName(child_element))
|
|
3795
|
+
self.readCompuMethod(child_element, compu_method)
|
|
3389
3796
|
elif tag_name == "CONSTANT-SPECIFICATION":
|
|
3390
|
-
self.
|
|
3797
|
+
spec = parent.createConstantSpecification(self.getShortName(child_element))
|
|
3798
|
+
self.readConstantSpecification(child_element, spec)
|
|
3391
3799
|
elif tag_name == "DATA-CONSTR":
|
|
3392
|
-
self.
|
|
3800
|
+
constr = parent.createDataConstr(self.getShortName(child_element))
|
|
3801
|
+
self.readDataConstr(child_element, constr)
|
|
3393
3802
|
elif tag_name == "END-TO-END-PROTECTION-SET":
|
|
3394
|
-
self.
|
|
3803
|
+
protection_set = parent.createEndToEndProtectionSet(self.getShortName(child_element))
|
|
3804
|
+
self.readEndToEndProtectionSet(child_element, protection_set)
|
|
3395
3805
|
elif tag_name == "SENDER-RECEIVER-INTERFACE":
|
|
3396
|
-
self.
|
|
3806
|
+
sr_interface = parent.createSenderReceiverInterface(self.getShortName(child_element))
|
|
3807
|
+
self.readSenderReceiverInterface(child_element, sr_interface)
|
|
3397
3808
|
elif tag_name == "UNIT":
|
|
3398
|
-
self.
|
|
3809
|
+
unit = parent.createUnit(self.getShortName(child_element))
|
|
3810
|
+
self.readUnit(child_element, unit)
|
|
3399
3811
|
elif tag_name == "BSW-MODULE-DESCRIPTION":
|
|
3400
|
-
self.
|
|
3812
|
+
desc = parent.createBswModuleDescription(self.getShortName(child_element))
|
|
3813
|
+
self.readBswModuleDescription(child_element, desc)
|
|
3401
3814
|
elif tag_name == "BSW-MODULE-ENTRY":
|
|
3402
|
-
self.
|
|
3815
|
+
entry = parent.createBswModuleEntry(self.getShortName(child_element))
|
|
3816
|
+
self.readBswModuleEntry(child_element, entry)
|
|
3403
3817
|
elif tag_name == "SWC-BSW-MAPPING":
|
|
3404
|
-
self.
|
|
3818
|
+
mapping = parent.createSwcBswMapping(self.getShortName(child_element))
|
|
3819
|
+
self.readSwcBswMapping(child_element, mapping)
|
|
3405
3820
|
elif tag_name == "BSW-IMPLEMENTATION":
|
|
3406
|
-
self.
|
|
3821
|
+
impl = parent.createBswImplementation(self.getShortName(child_element))
|
|
3822
|
+
self.readBswImplementation(child_element, impl)
|
|
3407
3823
|
elif tag_name == "IMPLEMENTATION-DATA-TYPE":
|
|
3408
|
-
self.
|
|
3824
|
+
data_type = parent.createImplementationDataType(self.getShortName(child_element))
|
|
3825
|
+
self.readImplementationDataType(child_element, data_type)
|
|
3409
3826
|
elif tag_name == "CLIENT-SERVER-INTERFACE":
|
|
3410
|
-
self.
|
|
3827
|
+
cs_interface = parent.createClientServerInterface(self.getShortName(child_element))
|
|
3828
|
+
self.readClientServerInterface(child_element, cs_interface)
|
|
3411
3829
|
elif tag_name == "APPLICATION-SW-COMPONENT-TYPE":
|
|
3412
|
-
self.
|
|
3830
|
+
sw_component = parent.createApplicationSwComponentType(self.getShortName(child_element))
|
|
3831
|
+
self.readApplicationSwComponentType(child_element, sw_component)
|
|
3413
3832
|
elif tag_name == "ECU-ABSTRACTION-SW-COMPONENT-TYPE":
|
|
3414
|
-
self.
|
|
3833
|
+
sw_component = parent.createEcuAbstractionSwComponentType(self.getShortName(child_element))
|
|
3834
|
+
self.readEcuAbstractionSwComponentType(child_element, sw_component)
|
|
3415
3835
|
elif tag_name == "APPLICATION-ARRAY-DATA-TYPE":
|
|
3416
|
-
self.
|
|
3836
|
+
data_type = parent.createApplicationArrayDataType(self.getShortName(child_element))
|
|
3837
|
+
self.readApplicationArrayDataType(child_element, data_type)
|
|
3417
3838
|
elif tag_name == "SW-RECORD-LAYOUT":
|
|
3418
|
-
self.
|
|
3839
|
+
layout = parent.createSwRecordLayout(self.getShortName(child_element))
|
|
3840
|
+
self.readSwRecordLayout(child_element, layout)
|
|
3419
3841
|
elif tag_name == "SW-ADDR-METHOD":
|
|
3420
|
-
self.
|
|
3842
|
+
method = parent.createSwAddrMethod(self.getShortName(child_element))
|
|
3843
|
+
self.readSwAddrMethod(child_element, method)
|
|
3421
3844
|
elif tag_name == "TRIGGER-INTERFACE":
|
|
3422
|
-
self.
|
|
3845
|
+
trigger_if = parent.createTriggerInterface(self.getShortName(child_element))
|
|
3846
|
+
self.readTriggerInterface(child_element, trigger_if)
|
|
3423
3847
|
elif tag_name == "SERVICE-SW-COMPONENT-TYPE":
|
|
3424
|
-
self.
|
|
3848
|
+
sw_component = parent.createServiceSwComponentType(self.getShortName(child_element))
|
|
3849
|
+
self.readServiceSwComponentType(child_element, sw_component)
|
|
3425
3850
|
elif tag_name == "SENSOR-ACTUATOR-SW-COMPONENT-TYPE":
|
|
3426
|
-
self.
|
|
3851
|
+
sw_component = parent.createSensorActuatorSwComponentType(self.getShortName(child_element))
|
|
3852
|
+
self.readSensorActuatorSwComponentType(child_element, sw_component)
|
|
3427
3853
|
elif tag_name == "DATA-TYPE-MAPPING-SET":
|
|
3428
|
-
self.
|
|
3854
|
+
mapping_set = parent.createDataTypeMappingSet(self.getShortName(child_element))
|
|
3855
|
+
self.readDataTypeMappingSet(child_element, mapping_set)
|
|
3429
3856
|
elif tag_name == "MODE-DECLARATION-GROUP":
|
|
3430
|
-
self.
|
|
3857
|
+
group = parent.createModeDeclarationGroup(self.getShortName(child_element))
|
|
3858
|
+
self.readModeDeclarationGroup(child_element, group)
|
|
3431
3859
|
elif tag_name == "MODE-SWITCH-INTERFACE":
|
|
3432
|
-
self.
|
|
3860
|
+
mode_interface = parent.createModeSwitchInterface(self.getShortName(child_element))
|
|
3861
|
+
self.readModeSwitchInterface(child_element, mode_interface)
|
|
3433
3862
|
elif tag_name == "SWC-TIMING":
|
|
3434
|
-
self.
|
|
3863
|
+
timing = parent.createSwcTiming(self.getShortName(child_element))
|
|
3864
|
+
self.readSwcTiming(child_element, timing)
|
|
3435
3865
|
elif tag_name == "LIN-CLUSTER":
|
|
3436
|
-
self.
|
|
3866
|
+
cluster = parent.createLinCluster(self.getShortName(child_element))
|
|
3867
|
+
self.readLinCluster(child_element, cluster)
|
|
3437
3868
|
elif tag_name == "LIN-UNCONDITIONAL-FRAME":
|
|
3438
|
-
self.
|
|
3869
|
+
frame = parent.createLinUnconditionalFrame(self.getShortName(child_element))
|
|
3870
|
+
self.readLinUnconditionalFrame(child_element, frame)
|
|
3439
3871
|
elif tag_name == "NM-PDU":
|
|
3440
|
-
self.
|
|
3872
|
+
pdu = parent.createNmPdu(self.getShortName(child_element))
|
|
3873
|
+
self.readNmPdu(child_element, pdu)
|
|
3441
3874
|
elif tag_name == "N-PDU":
|
|
3442
|
-
self.
|
|
3875
|
+
pdu = parent.createNPdu(self.getShortName(child_element))
|
|
3876
|
+
self.readNPdu(child_element, pdu)
|
|
3443
3877
|
elif tag_name == "DCM-I-PDU":
|
|
3444
|
-
self.
|
|
3878
|
+
i_pdu = parent.createDcmIPdu(self.getShortName(child_element))
|
|
3879
|
+
self.readDcmIPdu(child_element, i_pdu)
|
|
3445
3880
|
elif tag_name == "SECURED-I-PDU":
|
|
3446
|
-
self.
|
|
3881
|
+
i_pdu = parent.createSecuredIPdu(self.getShortName(child_element))
|
|
3882
|
+
self.readSecuredIPdu(child_element, i_pdu)
|
|
3447
3883
|
elif tag_name == "NM-CONFIG":
|
|
3448
|
-
self.
|
|
3884
|
+
config = parent.createNmConfig(self.getShortName(child_element))
|
|
3885
|
+
self.readNmConfig(child_element, config)
|
|
3449
3886
|
elif tag_name == "CAN-TP-CONFIG":
|
|
3450
|
-
self.
|
|
3887
|
+
config = parent.createCanTpConfig(self.getShortName(child_element))
|
|
3888
|
+
self.readCanTpConfig(child_element, config)
|
|
3451
3889
|
elif tag_name == "LIN-TP-CONFIG":
|
|
3452
|
-
|
|
3890
|
+
config = parent.createLinTpConfig(self.getShortName(child_element))
|
|
3891
|
+
self.readLinTpConfig(child_element, config)
|
|
3453
3892
|
elif tag_name == "SYSTEM":
|
|
3454
|
-
self.
|
|
3893
|
+
system = parent.createSystem(self.getShortName(child_element))
|
|
3894
|
+
self.readSystem(child_element, system)
|
|
3455
3895
|
elif tag_name == "ECU-INSTANCE":
|
|
3456
|
-
self.
|
|
3896
|
+
instance = parent.createEcuInstance(self.getShortName(child_element))
|
|
3897
|
+
self.readEcuInstance(child_element, instance)
|
|
3457
3898
|
elif tag_name == "GATEWAY":
|
|
3458
|
-
self.
|
|
3899
|
+
gateway = parent.createGateway(self.getShortName(child_element))
|
|
3900
|
+
self.readGateway(child_element, gateway)
|
|
3459
3901
|
elif tag_name == "I-SIGNAL-I-PDU-GROUP":
|
|
3460
|
-
self.
|
|
3902
|
+
group = parent.createISignalIPduGroup(self.getShortName(child_element))
|
|
3903
|
+
self.readISignalIPduGroup(child_element, group)
|
|
3461
3904
|
elif tag_name == "CAN-CLUSTER":
|
|
3462
|
-
self.
|
|
3905
|
+
cluster = parent.createCanCluster(self.getShortName(child_element))
|
|
3906
|
+
self.readCanCluster(child_element, cluster)
|
|
3463
3907
|
elif tag_name == "CAN-FRAME":
|
|
3464
|
-
self.
|
|
3908
|
+
frame = parent.createCanFrame(self.getShortName(child_element))
|
|
3909
|
+
self.readCanFrame(child_element, frame)
|
|
3465
3910
|
elif tag_name == "I-SIGNAL":
|
|
3466
|
-
self.
|
|
3911
|
+
signal = parent.createISignal(self.getShortName(child_element))
|
|
3912
|
+
self.readISignal(child_element, signal)
|
|
3467
3913
|
elif tag_name == "I-SIGNAL-GROUP":
|
|
3468
|
-
self.
|
|
3914
|
+
group = parent.createISignalGroup(self.getShortName(child_element))
|
|
3915
|
+
self.readISignalGroup(child_element, group)
|
|
3469
3916
|
elif tag_name == "I-SIGNAL-I-PDU":
|
|
3470
|
-
self.
|
|
3917
|
+
i_pdu = parent.createISignalIPdu(self.getShortName(child_element))
|
|
3918
|
+
self.readISignalIPdu(child_element, i_pdu)
|
|
3471
3919
|
elif tag_name == "SYSTEM-SIGNAL":
|
|
3472
|
-
self.
|
|
3920
|
+
signal = parent.createSystemSignal(self.getShortName(child_element))
|
|
3921
|
+
self.readSystemSignal(child_element, signal)
|
|
3473
3922
|
elif tag_name == "SYSTEM-SIGNAL-GROUP":
|
|
3474
|
-
self.
|
|
3923
|
+
group = parent.createSystemSignalGroup(self.getShortName(child_element))
|
|
3924
|
+
self.readSystemSignalGroup(child_element, group)
|
|
3475
3925
|
elif tag_name == "ECUC-VALUE-COLLECTION":
|
|
3476
|
-
self.
|
|
3926
|
+
collection = parent.createEcucValueCollection(self.getShortName(child_element))
|
|
3927
|
+
self.readEcucValueCollection(child_element, collection)
|
|
3477
3928
|
elif tag_name == "ECUC-MODULE-CONFIGURATION-VALUES":
|
|
3478
|
-
self.
|
|
3929
|
+
values = parent.createEcucModuleConfigurationValues(self.getShortName(child_element))
|
|
3930
|
+
self.readEcucModuleConfigurationValues(child_element, values)
|
|
3479
3931
|
elif tag_name == "PHYSICAL-DIMENSION":
|
|
3480
|
-
self.
|
|
3932
|
+
dimension = parent.createPhysicalDimension(self.getShortName(child_element))
|
|
3933
|
+
self.readPhysicalDimension(child_element, dimension)
|
|
3481
3934
|
elif tag_name == "PARAMETER-INTERFACE":
|
|
3482
|
-
self.
|
|
3935
|
+
param_interface = parent.createParameterInterface(self.getShortName(child_element))
|
|
3936
|
+
self.readParameterInterface(child_element, param_interface)
|
|
3483
3937
|
elif tag_name == "ETHERNET-FRAME":
|
|
3484
|
-
self.
|
|
3938
|
+
frame = parent.createGenericEthernetFrame(self.getShortName(child_element))
|
|
3939
|
+
self.readGenericEthernetFrame(child_element, frame)
|
|
3485
3940
|
elif tag_name == "LIFE-CYCLE-INFO-SET":
|
|
3486
|
-
self.
|
|
3941
|
+
info_set = parent.createLifeCycleInfoSet(self.getShortName(child_element))
|
|
3942
|
+
self.readLifeCycleInfoSet(child_element, info_set)
|
|
3487
3943
|
elif tag_name == "FLAT-MAP":
|
|
3488
|
-
self.
|
|
3944
|
+
map = parent.createFlatMap(self.getShortName(child_element))
|
|
3945
|
+
self.readFlatMap(child_element, map)
|
|
3489
3946
|
elif tag_name == "PORT-INTERFACE-MAPPING-SET":
|
|
3490
|
-
self.
|
|
3947
|
+
mapping_set = parent.createPortInterfaceMappingSet(self.getShortName(child_element))
|
|
3948
|
+
self.readPortInterfaceMappingSet(child_element, mapping_set)
|
|
3491
3949
|
elif tag_name == "ETHERNET-CLUSTER":
|
|
3492
|
-
self.
|
|
3950
|
+
cluster = parent.createEthernetCluster(self.getShortName(child_element))
|
|
3951
|
+
self.readEthernetCluster(child_element, cluster)
|
|
3952
|
+
elif tag_name == "DIAGNOSTIC-CONNECTION":
|
|
3953
|
+
connection = parent.createDiagnosticConnection(self.getShortName(child_element))
|
|
3954
|
+
self.readDiagnosticConnection(child_element, connection)
|
|
3955
|
+
elif tag_name == "DIAGNOSTIC-SERVICE-TABLE":
|
|
3956
|
+
table = parent.createDiagnosticServiceTable(self.getShortName(child_element))
|
|
3957
|
+
self.readDiagnosticServiceTable(child_element, table)
|
|
3958
|
+
elif tag_name == "MULTIPLEXED-I-PDU":
|
|
3959
|
+
i_pdu = parent.createMultiplexedIPdu(self.getShortName(child_element))
|
|
3960
|
+
self.readMultiplexedIPdu(child_element, i_pdu)
|
|
3961
|
+
elif tag_name == "USER-DEFINED-I-PDU":
|
|
3962
|
+
i_pdu = parent.createUserDefinedIPdu(self.getShortName(child_element))
|
|
3963
|
+
self.readUserDefinedIPdu(child_element, i_pdu)
|
|
3964
|
+
elif tag_name == "USER-DEFINED-PDU":
|
|
3965
|
+
pdu = parent.createUserDefinedPdu(self.getShortName(child_element))
|
|
3966
|
+
self.readUserDefinedPdu(child_element, pdu)
|
|
3967
|
+
elif tag_name == "GENERAL-PURPOSE-PDU":
|
|
3968
|
+
pdu = parent.createGeneralPurposePdu(self.getShortName(child_element))
|
|
3969
|
+
self.readGeneralPurposePdu(child_element, pdu)
|
|
3970
|
+
elif tag_name == "GENERAL-PURPOSE-I-PDU":
|
|
3971
|
+
i_pdu = parent.createGeneralPurposeIPdu(self.getShortName(child_element))
|
|
3972
|
+
self.readGeneralPurposeIPdu(child_element, i_pdu)
|
|
3973
|
+
elif tag_name == "SECURE-COMMUNICATION-PROPS-SET":
|
|
3974
|
+
prop_set = parent.createSecureCommunicationPropsSet(self.getShortName(child_element))
|
|
3975
|
+
self.readSecureCommunicationPropsSet(child_element, prop_set)
|
|
3976
|
+
elif tag_name == "SO-AD-ROUTING-GROUP":
|
|
3977
|
+
group = parent.createSoAdRoutingGroup(self.getShortName(child_element))
|
|
3978
|
+
self.readSoAdRoutingGroup(child_element, group)
|
|
3979
|
+
elif tag_name == "DO-IP-TP-CONFIG":
|
|
3980
|
+
config = parent.createDoIpTpConfig(self.getShortName(child_element))
|
|
3981
|
+
self.readDoIpTpConfig(child_element, config)
|
|
3493
3982
|
else:
|
|
3494
3983
|
self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
|
|
3495
3984
|
|
|
@@ -3522,7 +4011,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3522
4011
|
tree = ET.parse(filename)
|
|
3523
4012
|
root = tree.getroot()
|
|
3524
4013
|
if (self.getPureTagName(root.tag) != "AUTOSAR"):
|
|
3525
|
-
self.
|
|
4014
|
+
self.raiseError("Invalid ARXML file <%s>" % filename)
|
|
3526
4015
|
|
|
3527
4016
|
self.getAUTOSARInfo(root, document)
|
|
3528
4017
|
document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))
|