armodel 1.7.5__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.
Files changed (22) hide show
  1. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +2 -2
  2. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +4 -0
  3. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +7 -1
  4. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +13 -0
  5. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +165 -4
  6. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +400 -17
  7. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +356 -8
  8. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinTopology.py +2 -4
  9. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +76 -10
  10. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +45 -23
  11. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +1 -0
  12. armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +55 -2
  13. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +2 -1
  14. armodel/parser/abstract_arxml_parser.py +5 -5
  15. armodel/parser/arxml_parser.py +632 -466
  16. armodel/writer/arxml_writer.py +347 -52
  17. {armodel-1.7.5.dist-info → armodel-1.7.6.dist-info}/METADATA +22 -1
  18. {armodel-1.7.5.dist-info → armodel-1.7.6.dist-info}/RECORD +22 -22
  19. {armodel-1.7.5.dist-info → armodel-1.7.6.dist-info}/LICENSE +0 -0
  20. {armodel-1.7.5.dist-info → armodel-1.7.6.dist-info}/WHEEL +0 -0
  21. {armodel-1.7.5.dist-info → armodel-1.7.6.dist-info}/entry_points.txt +0 -0
  22. {armodel-1.7.5.dist-info → armodel-1.7.6.dist-info}/top_level.txt +0 -0
@@ -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,8 +70,9 @@ 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
@@ -75,19 +80,21 @@ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiv
75
80
  from ..models.M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import DiagnosticConnection
76
81
  from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmNode
77
82
  from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
78
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import ApplicationEntry, LinFrameTriggering, LinScheduleTable, ScheduleTableEntry
79
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinMaster
80
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanClusterBusOffRecovery, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinPhysicalChannel, PhysicalChannel
81
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import Frame, FrameTriggering, IPdu, IPduTiming, ISignalIPdu, ISignalTriggering, PduTriggering
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
82
87
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
83
88
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
84
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering, RxIdentifierRange
85
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
86
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCommunicationConnector, EthernetCommunicationController, InitialSdDelayConfig, RequestResponseDelay, SdClientConfig
87
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
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
88
93
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration, NetworkEndpoint
89
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup, ConsumedServiceInstance, GenericTp, SoAdConfig, SocketAddress, TcpTp, TpPort, TransportProtocolConfiguration, UdpTp
90
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import ISignalMapping
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
91
98
 
92
99
  from .abstract_arxml_parser import AbstractARXMLParser
93
100
 
@@ -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._raiseError("Unsupported ModeSenderPolicy type <%s>." % tag_name)
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.tag)
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._raiseError("Unsupported assigned data type <%s>" % tag_name)
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.tag)
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._raiseError("Unsupported assigned data <%s>" % tag_name)
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.tag)
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._raiseError("Unsupported assigned ports <%s>" % tag_name)
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.tag)
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.tag)
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, parent: ARPackage):
668
- short_name = self.getShortName(element)
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.readBswModuleDescriptionImplementedEntry(element, bsw_module_description)
675
- self.readProvidedModeGroup(element, bsw_module_description)
676
- self.readRequiredModeGroup(element, bsw_module_description)
677
- self.readBswInternalBehavior(element, bsw_module_description)
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, parent: ARPackage):
694
- short_name = self.getShortName(element)
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.tag)
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._raiseError("Unsupported Artifact Descriptor <%s>" % tag_name)
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, parent: ARPackage):
794
- short_name = self.getShortName(element)
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, parent: ARPackage):
803
- short_name = self.getShortName(element)
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.behaviorRef = self.getChildElementOptionalRefType(element, "BEHAVIOR-REF")
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.tag)
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._raiseError("Unsupported server call point type <%s>" % tag_name)
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.tag)
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.tag)
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, parent: ARPackage):
1314
- short_name = self.getShortName(element)
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 readApplicationRecordDataTypes(self, element: ET.Element, parent: ARPackage):
1331
- short_name = self.getShortName(element)
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, parent: ARPackage):
1349
- short_name = self.getShortName(element)
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, parent: ARPackage):
1392
- short_name = self.getShortName(element)
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.tag)
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._raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
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._raiseError("Unsupported Port Prototype <%s>" % tag_name)
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.tag)
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._raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
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.tag)
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._raiseError("Unsupported Port Group type: %s" % tag_name)
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 readEcuAbstractionSwComponent(self, element, parent: ARPackage):
1664
- short_name = self.getShortName(element)
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 readApplicationSwComponentTypes(self, element: ET.Element, parent: ARPackage):
1669
- short_name = self.getShortName(element)
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, parent: ARPackage):
1674
- short_name = self.getShortName(element)
1675
- sw_component = parent.createComplexDeviceDriverSwComponentType(short_name)
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, parent: ARPackage):
1680
- short_name = self.getShortName(element)
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, parent: ARPackage):
1686
- short_name = self.getShortName(element)
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._raiseError("Unsupported child element of INNER-PORT-IREF")
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._raiseError("Invalid PortPrototype of DELEGATION-SW-CONNECTOR")
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, parent: ARPackage):
1789
- short_name = self.getShortName(element)
1790
- self.logger.debug("readCompositionSwComponentTypes: <%s>" % short_name)
1791
-
1792
- sw_component = parent.createCompositionSwComponentType(short_name)
1793
- self.readIdentifiable(element, sw_component)
1794
- self.readSwComponentType(element, sw_component)
1795
- self.readSwComponentPrototypes(element, sw_component)
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, parent: ARPackage):
1821
- short_name = self.getShortName(element)
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 readSenderReceiverInterfaces(self, element, parent: ARPackage):
1852
- short_name = self.getShortName(element)
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.isService = self.getChildElementOptionalBooleanValue(element, "IS-SERVICE")
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, parent: ARPackage):
1903
- short_name = self.getShortName(element)
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, parent: ARPackage):
1910
- short_name = self.getShortName(element)
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, parent: ARPackage):
2002
- short_name = self.getShortName(element)
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 readSwcBswRunnableMappings(self, element: ET.Element, parent: SwcBswMapping):
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 readSwcBswMappings(self, element: ET.Element, parent: ARPackage):
2018
- short_name = self.getShortName(element)
2019
- self.logger.debug("read SwcBswMappings %s" % short_name)
2020
- swc_bsw_mapping = parent.createSwcBswMapping(short_name)
2021
- swc_bsw_mapping.setBswBehaviorRef(self.getChildElementOptionalRefType(element, "BSW-BEHAVIOR-REF"))
2022
- self.readSwcBswRunnableMappings(element, swc_bsw_mapping)
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, parent: ARPackage):
2099
- short_name = self.getShortName(element)
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, parent: ARPackage):
2136
- short_name = self.getShortName(element)
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, parent: ARPackage):
2143
- short_name = self.getShortName(element)
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.tag)
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._raiseError("Unsupported End To End Protection Variable Prototype <%s>" % tag_name)
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 element.findall("./xmlns:END-TO-END-PROTECTIONS/*", self.nsmap):
2209
- tag_name = self.getTagName(child_element.tag)
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, parent: ARPackage):
2214
- short_name = self.getShortName(element)
2215
- self.logger.debug("readEndToEndProtectionSet %s" % short_name)
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 = element.find("./xmlns:SYMBOL-PROPS", self.nsmap)
2170
+ child_element = self.find(element, "SYMBOL-PROPS")
2231
2171
  if child_element is not None:
2232
- short_name = self.getShortName(child_element)
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, parent: ARPackage):
2262
- short_name = self.getShortName(element)
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
 
@@ -2301,17 +2237,13 @@ class ARXMLParser(AbstractARXMLParser):
2301
2237
 
2302
2238
  return group
2303
2239
 
2304
- def readSwRecordLayout(self, element: ET.Element, parent: ARPackage):
2305
- short_name = self.getShortName(element)
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, parent: ARPackage):
2312
- short_name = self.getShortName(element)
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, parent: ARPackage):
2323
- short_name = self.getShortName(element)
2324
- self.logger.debug("readTriggerInterface %s" % short_name)
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, parent: ARPackage):
2335
- short_name = self.getShortName(element)
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, parent: ARPackage):
2352
- short_name = self.getShortName(element)
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._raiseError("Unsupported order element <%s>." % tag_name)
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._raiseError("Unsupported timing requirement <%s>" % tag_name)
2314
+ self.raiseError("Unsupported timing requirement <%s>" % tag_name)
2388
2315
 
2389
- def readSwcTiming(self, element: ET.Element, parent: ARPackage):
2390
- short_name = self.getShortName(element)
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
 
@@ -2727,19 +2652,80 @@ class ARXMLParser(AbstractARXMLParser):
2727
2652
  else:
2728
2653
  self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % tag_name)
2729
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
+
2730
2714
  def readSocketAddressApplicationEndpoint(self, element: ET.Element, address: SocketAddress):
2731
2715
  child_element = self.find(element, "APPLICATION-ENDPOINT")
2732
2716
  if child_element is not None:
2733
2717
  end_point = address.createApplicationEndpoint(self.getShortName(child_element))
2734
2718
  self.readSocketAddressApplicationEndpointConsumedServiceInstances(child_element, end_point)
2735
2719
  end_point.setNetworkEndpointRef(self.getChildElementOptionalRefType(child_element, "NETWORK-ENDPOINT-REF")) \
2736
- .setPriority(self.getChildElementOptionalPositiveInteger(child_element, "PRIORITY")) \
2737
- .setTpConfiguration(self.getTransportProtocolConfiguration(child_element, "TP-CONFIGURATION"))
2720
+ .setPriority(self.getChildElementOptionalPositiveInteger(child_element, "PRIORITY"))
2721
+ self.readSocketAddressApplicationEndpointProvidedServiceInstance(child_element, end_point)
2722
+ end_point.setTpConfiguration(self.getTransportProtocolConfiguration(child_element, "TP-CONFIGURATION"))
2738
2723
 
2739
2724
  def readSocketAddressMulticastConnectorRefs(self, element: ET.Element, address: SocketAddress):
2740
2725
  for ref in self.getChildElementRefTypeList(element, "MULTICAST-CONNECTOR-REFS/MULTICAST-CONNECTOR-REF"):
2741
2726
  address.addMulticastConnectorRef(ref)
2742
2727
 
2728
+
2743
2729
  def readSocketAddress(self, element: ET.Element, address: SocketAddress):
2744
2730
  self.readIdentifiable(element, address)
2745
2731
  self.readSocketAddressApplicationEndpoint(element, address)
@@ -2747,7 +2733,6 @@ class ARXMLParser(AbstractARXMLParser):
2747
2733
  address.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF")) \
2748
2734
  .setPortAddress(self.getChildElementOptionalPositiveInteger(element, "PORT-ADDRESS"))
2749
2735
 
2750
-
2751
2736
  def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
2752
2737
  for child_element in self.findall(element, "SOCKET-ADDRESSS/*"):
2753
2738
  tag_name = self.getTagName(child_element)
@@ -2816,98 +2801,94 @@ class ARXMLParser(AbstractARXMLParser):
2816
2801
  .setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE")) \
2817
2802
  .setSpeed(self.getChildElementOptionalNumericalValue(element, "SPEED"))
2818
2803
 
2819
- def readLinCluster(self, element: ET.Element, parent: ARPackage):
2820
- short_name = self.getShortName(element)
2821
- self.logger.debug("readLinCluster %s" % short_name)
2822
- cluster = parent.createLinCluster(short_name)
2804
+ def readLinCluster(self, element: ET.Element, cluster: LinCluster):
2805
+ self.logger.debug("Read LinCluster <%s>" % cluster.getShortName())
2823
2806
  self.readIdentifiable(element, cluster)
2824
2807
  child_element = self.find(element, "LIN-CLUSTER-VARIANTS/LIN-CLUSTER-CONDITIONAL")
2825
2808
  if child_element is not None:
2826
2809
  self.readCommunicationCluster(child_element, cluster)
2827
2810
 
2828
- def readCanCluster(self, element: ET.Element, parent: ARPackage):
2829
- short_name = self.getShortName(element)
2830
- self.logger.debug("readCanCluster %s" % short_name)
2831
- cluster = parent.createCanCluster(short_name)
2811
+ def readCanCluster(self, element: ET.Element, cluster: CanCluster):
2812
+ self.logger.debug("Read CanCluster <%s>" % cluster.getShortName())
2832
2813
  self.readIdentifiable(element, cluster)
2833
2814
  child_element = self.find(element, "CAN-CLUSTER-VARIANTS/CAN-CLUSTER-CONDITIONAL")
2834
2815
  if child_element is not None:
2835
2816
  self.readCommunicationCluster(child_element, cluster)
2836
2817
  self.readAbstractCanCluster(child_element, cluster)
2837
2818
 
2838
- def readEthernetCluster(self, element: ET.Element, parent: ARPackage):
2839
- short_name = self.getShortName(element)
2840
- self.logger.debug("Read EthernetCluster %s" % short_name)
2841
- cluster = parent.createEthernetCluster(short_name)
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())
2842
2834
  self.readIdentifiable(element, cluster)
2843
2835
  child_element = self.find(element, "ETHERNET-CLUSTER-VARIANTS/ETHERNET-CLUSTER-CONDITIONAL")
2844
2836
  if child_element is not None:
2845
2837
  self.readCommunicationCluster(child_element, cluster)
2838
+ self.readEthernetClusterMacMulticastGroups(child_element, cluster)
2846
2839
 
2847
2840
  def readDiagnosticConnectionFunctionalRequestRefs(self, element: ET.Element, connection: DiagnosticConnection):
2848
2841
  for ref in self.getChildElementRefTypeList(element, "FUNCTIONAL-REQUEST-REFS/FUNCTIONAL-REQUEST-REF"):
2849
2842
  connection.addFunctionalRequestRef(ref)
2850
2843
 
2851
2844
  def readDiagnosticConnection(self, element: ET.Element, connection: DiagnosticConnection):
2852
- self.logger.debug("Read DiagnosticConnection %s" % connection.getShortName())
2845
+ self.logger.debug("Read DiagnosticConnection <%s>" % connection.getShortName())
2853
2846
  self.readIdentifiable(element, connection)
2854
2847
  self.readDiagnosticConnectionFunctionalRequestRefs(element, connection)
2855
2848
  connection.setPhysicalRequestRef(self.getChildElementOptionalRefType(element, "PHYSICAL-REQUEST-REF")) \
2856
2849
  .setResponseOnEventRef(self.getChildElementOptionalRefType(element, "RESPONSE-REF"))
2857
-
2858
- def readDiagnosticServiceTable(self, element: ET.Element, parent: ARPackage):
2859
- short_name = self.getShortName(element)
2860
- self.logger.debug("Read DiagnosticServiceTable %s" % short_name)
2861
- table = parent.createDiagnosticServiceTable(short_name)
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())
2862
2857
  self.readIdentifiable(element, table)
2858
+ self.readDiagnosticServiceTableDiagnosticConnectionRefs(element, table)
2859
+ table.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
2863
2860
 
2864
- def readMultiplexedIPdu(self, element: ET.Element, parent: ARPackage):
2865
- short_name = self.getShortName(element)
2866
- self.logger.debug("Read MultiplexedIPdu %s" % short_name)
2867
- i_pdu = parent.createMultiplexedIPdu(short_name)
2861
+ def readMultiplexedIPdu(self, element: ET.Element, i_pdu: MultiplexedIPdu):
2862
+ self.logger.debug("Read MultiplexedIPdu <%s>" % i_pdu.getShortName())
2868
2863
  self.readIdentifiable(element, i_pdu)
2869
2864
 
2870
- def readUserDefinedIPdu(self, element: ET.Element, parent: ARPackage):
2871
- short_name = self.getShortName(element)
2872
- self.logger.debug("Read UserDefinedIPdu %s" % short_name)
2873
- i_pdu = parent.createUserDefinedIPdu(short_name)
2865
+ def readUserDefinedIPdu(self, element: ET.Element, i_pdu: UserDefinedIPdu):
2866
+ self.logger.debug("Read UserDefinedIPdu <%s>" % i_pdu.getShortName())
2874
2867
  self.readIdentifiable(element, i_pdu)
2875
2868
 
2876
- def readUserDefinedPdu(self, element: ET.Element, parent: ARPackage):
2877
- short_name = self.getShortName(element)
2878
- self.logger.debug("Read UserDefinedPdu %s" % short_name)
2879
- pdu = parent.createUserDefinedPdu(short_name)
2869
+ def readUserDefinedPdu(self, element: ET.Element, pdu: UserDefinedPdu):
2870
+ self.logger.debug("Read UserDefinedPdu <%s>" % pdu.getShortName())
2880
2871
  self.readIdentifiable(element, pdu)
2881
2872
 
2882
- def readGeneralPurposePdu(self, element: ET.Element, parent: ARPackage):
2883
- short_name = self.getShortName(element)
2884
- self.logger.debug("Read GeneralPurposePdu %s" % short_name)
2885
- pdu = parent.createGeneralPurposePdu(short_name)
2873
+ def readGeneralPurposePdu(self, element: ET.Element, pdu: GeneralPurposePdu):
2874
+ self.logger.debug("Read GeneralPurposePdu <%s>" % pdu.getShortName())
2886
2875
  self.readIdentifiable(element, pdu)
2887
2876
 
2888
- def readGeneralPurposeIPdu(self, element: ET.Element, parent: ARPackage):
2889
- short_name = self.getShortName(element)
2890
- self.logger.debug("Read GeneralPurposeIPdu %s" % short_name)
2891
- i_pdu = parent.createGeneralPurposeIPdu(short_name)
2877
+ def readGeneralPurposeIPdu(self, element: ET.Element, i_pdu: GeneralPurposeIPdu):
2878
+ self.logger.debug("Read GeneralPurposeIPdu <%s>" % i_pdu.getShortName())
2892
2879
  self.readIdentifiable(element, i_pdu)
2893
2880
 
2894
- def readSecureCommunicationPropsSet(self, element: ET.Element, parent: ARPackage):
2895
- short_name = self.getShortName(element)
2896
- self.logger.debug("Read SecureCommunicationPropsSet %s" % short_name)
2897
- prop_set = parent.createSecureCommunicationPropsSet(short_name)
2898
- self.readIdentifiable(element, prop_set)
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)
2899
2884
 
2900
- def readSoAdRoutingGroup(self, element: ET.Element, parent: ARPackage):
2901
- short_name = self.getShortName(element)
2902
- self.logger.debug("Read SoAdRoutingGroup %s" % short_name)
2903
- group = parent.createSoAdRoutingGroup(short_name)
2885
+ def readSoAdRoutingGroup(self, element: ET.Element, group: SoAdRoutingGroup):
2886
+ self.logger.debug("Read SoAdRoutingGroup <%s>" % group.getShortName())
2904
2887
  self.readIdentifiable(element, group)
2905
2888
 
2906
- def readDoIpTpConfig(self, element: ET.Element, parent: ARPackage):
2907
- short_name = self.getShortName(element)
2908
- self.logger.debug("Read DoIpTpConfig %s" % short_name)
2909
- group = parent.createDoIpTpConfig(short_name)
2910
- self.readIdentifiable(element, group)
2889
+ def readDoIpTpConfig(self, element: ET.Element, config: DoIpTpConfig):
2890
+ self.logger.debug("Read DoIpTpConfig <%s>" % config.getShortName())
2891
+ self.readIdentifiable(element, config)
2911
2892
 
2912
2893
  def readPduToFrameMappings(self, element: ET.Element, parent: Frame):
2913
2894
  for child_element in self.findall(element, "PDU-TO-FRAME-MAPPINGS/PDU-TO-FRAME-MAPPING"):
@@ -2924,43 +2905,30 @@ class ARXMLParser(AbstractARXMLParser):
2924
2905
  frame.frameLength = self.getChildElementOptionalNumericalValue(element, "FRAME-LENGTH")
2925
2906
  self.readPduToFrameMappings(element, frame)
2926
2907
 
2927
- def readLinUnconditionalFrame(self, element: ET.Element, parent: ARPackage):
2928
- short_name = self.getShortName(element)
2929
- self.logger.debug("LinUnconditionalFrame %s" % short_name)
2930
- frame = parent.createLinUnconditionalFrame(short_name)
2908
+ def readLinUnconditionalFrame(self, element: ET.Element, frame: LinUnconditionalFrame):
2909
+ self.logger.debug("Read LinUnconditionalFrame <%s>" % frame.getShortName())
2931
2910
  self.readFrame(element, frame)
2932
2911
 
2933
- def readNmPdu(self, element: ET.Element, parent: ARPackage):
2934
- short_name = self.getShortName(element)
2935
- self.logger.debug("readNmPdu %s" % short_name)
2936
- pdu = parent.createNmPdu(short_name)
2937
- self.readIdentifiable(element, pdu)
2912
+ def readNmPdu(self, element: ET.Element, pdu: NmPdu):
2913
+ self.logger.debug("Read NmPdu <%s>" % pdu.getShortName())
2938
2914
  self.readIPdu(element, pdu)
2939
2915
 
2940
- def readNPdu(self, element: ET.Element, parent: ARPackage):
2941
- short_name = self.getShortName(element)
2942
- self.logger.debug("readNPdu %s" % short_name)
2943
- pdu = parent.createNPdu(short_name)
2944
- self.readIdentifiable(element, pdu)
2916
+ def readNPdu(self, element: ET.Element, pdu: NPdu):
2917
+ self.logger.debug("Read NPdu <%s>" % pdu.getShortName())
2945
2918
  self.readIPdu(element, pdu)
2946
2919
 
2947
2920
  def readIPdu(self, element: ET.Element, pdu: IPdu):
2921
+ self.readIdentifiable(element, pdu)
2948
2922
  pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH"))
2949
2923
 
2950
- def readDcmIPdu(self, element: ET.Element, parent: ARPackage):
2951
- short_name = self.getShortName(element)
2952
- self.logger.debug("readDcmIPdu %s" % short_name)
2953
- pdu = parent.createDcmIPdu(short_name)
2954
- self.readIdentifiable(element, pdu)
2955
- self.readIPdu(element, pdu)
2956
- 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"))
2957
2928
 
2958
- def readSecuredIPdu(self, element: ET.Element, parent: ARPackage):
2959
- short_name = self.getShortName(element)
2960
- self.logger.debug("readSecuredIPdu %s" % short_name)
2961
- pdu = parent.createSecuredIPdu(short_name)
2962
- self.readIdentifiable(element, pdu)
2963
- 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)
2964
2932
 
2965
2933
  def readNmNode(self, element: ET.Element, nm_node: NmNode):
2966
2934
  self.readIdentifiable(element, nm_node)
@@ -2998,7 +2966,7 @@ class ARXMLParser(AbstractARXMLParser):
2998
2966
  nm_node = parent.readUdpNmNode(self.getShortName(child_element))
2999
2967
  self.readUdpNmNode(child_element, nm_node)
3000
2968
  else:
3001
- self._raiseError("Unsupported Nm Node <%s>" % tag_name)
2969
+ self.raiseError("Unsupported Nm Node <%s>" % tag_name)
3002
2970
 
3003
2971
  def getCanNmClusterCoupling(self, element: ET.Element) -> CanNmClusterCoupling:
3004
2972
  coupling = CanNmClusterCoupling()
@@ -3069,39 +3037,182 @@ class ARXMLParser(AbstractARXMLParser):
3069
3037
  elif tag_name == "UDP-NM-CLUSTER":
3070
3038
  self.readUdpNmCluster(child_element, parent)
3071
3039
  else:
3072
- self._raiseError("Unsupported Nm Cluster <%s>" % tag_name)
3040
+ self.raiseError("Unsupported Nm Cluster <%s>" % tag_name)
3073
3041
 
3074
- def readNmConfig(self, element: ET.Element, parent: ARPackage):
3075
- short_name = self.getShortName(element)
3076
- self.logger.debug("NmConfig %s" % short_name)
3077
- 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())
3078
3044
  self.readIdentifiable(element, config)
3079
3045
  self.readNmConfigNmClusters(element, config)
3080
3046
  self.readNmConfigNmClusterCouplings(element, config)
3081
3047
 
3082
- def readCanTpConfig(self, element: ET.Element, parent: ARPackage):
3083
- short_name = self.getShortName(element)
3084
- self.logger.debug("read CanTpConfig %s" % short_name)
3085
- pdu = parent.createCanTpConfig(short_name)
3086
- 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)
3087
3051
 
3088
- def readCanFrame(self, element: ET.Element, parent: ARPackage):
3089
- short_name = self.getShortName(element)
3090
- self.logger.debug("read CanFrame %s" % short_name)
3091
- frame = parent.createCanFrame(short_name)
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())
3092
3058
  self.readFrame(element, frame)
3093
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
+
3094
3114
  def readCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
3095
3115
  self.logger.debug("Read CanCommunicationController %s" % controller.getShortName())
3096
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)
3097
3194
 
3098
3195
  def readEthernetCommunicationController(self, element: ET.Element, controller: EthernetCommunicationController):
3099
3196
  self.logger.debug("Read EthernetCommunicationController %s" % controller.getShortName())
3100
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"))
3101
3206
 
3102
3207
  def readLinMaster(self, element: ET.Element, controller: LinMaster):
3103
3208
  self.logger.debug("Read LinMaster %s" % controller.getShortName())
3104
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
+
3105
3216
 
3106
3217
  def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
3107
3218
  self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
@@ -3117,7 +3228,7 @@ class ARXMLParser(AbstractARXMLParser):
3117
3228
  controller = instance.createLinMaster(self.getShortName(child_element))
3118
3229
  self.readLinMaster(child_element, controller)
3119
3230
  else:
3120
- self._raiseError("Unsupported Communication Controller <%s>" % tag_name)
3231
+ self.raiseError("Unsupported Communication Controller <%s>" % tag_name)
3121
3232
 
3122
3233
  def readCommConnectorPort(self, element: ET.Element, port: CommConnectorPort):
3123
3234
  self.readIdentifiable(element, port)
@@ -3128,9 +3239,13 @@ class ARXMLParser(AbstractARXMLParser):
3128
3239
 
3129
3240
  def readIPduPort(self, element: ET.Element, port: IPduPort):
3130
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")) \
3131
3245
 
3132
3246
  def readISignalPort(self, element: ET.Element, port: ISignalPort):
3133
3247
  self.readCommConnectorPort(element, port)
3248
+ port.setTimeout(self.getChildElementOptionalTimeValue(element, "TIMEOUT"))
3134
3249
 
3135
3250
  def readCommunicationConnectorEcuCommPortInstances(self, element: ET.Element, connector: CommunicationConnector):
3136
3251
  self.logger.debug("read EcuCommPortInstances of CommunicationConnector %s" % connector.getShortName())
@@ -3146,18 +3261,20 @@ class ARXMLParser(AbstractARXMLParser):
3146
3261
  port = connector.createISignalPort(self.getShortName(child_element))
3147
3262
  self.readISignalPort(child_element, port)
3148
3263
  else:
3149
- self._raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
3264
+ self.raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
3150
3265
 
3151
3266
  def readCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
3152
3267
  self.readIdentifiable(element, connector)
3153
3268
  connector.setCommControllerRef(self.getChildElementOptionalRefType(element, "COMM-CONTROLLER-REF"))
3154
3269
  self.readCommunicationConnectorEcuCommPortInstances(element, connector)
3270
+ connector.setPncGatewayType(self.getChildElementOptionalLiteral(element, "PNC-GATEWAY-TYPE"))
3155
3271
 
3156
3272
  def readCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
3157
3273
  self.readCommunicationConnector(element, connector)
3158
3274
 
3159
3275
  def readEthernetCommunicationConnector(self, element: ET.Element, connector: EthernetCommunicationConnector):
3160
3276
  self.readCommunicationConnector(element, connector)
3277
+ connector.setMaximumTransmissionUnit(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-TRANSMISSION-UNIT"))
3161
3278
 
3162
3279
  def readLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
3163
3280
  self.readCommunicationConnector(element, connector)
@@ -3176,13 +3293,16 @@ class ARXMLParser(AbstractARXMLParser):
3176
3293
  connector = instance.createLinCommunicationConnector(self.getShortName(child_element))
3177
3294
  self.readLinCommunicationConnector(child_element, connector)
3178
3295
  else:
3179
- self._raiseError("Unsupported Communication Connector <%s>" % tag_name)
3296
+ self.notImplemented("Unsupported Communication Connector <%s>" % tag_name)
3180
3297
 
3181
- def readEcuInstance(self, element: ET.Element, parent: ARPackage):
3182
- short_name = self.getShortName(element)
3183
- self.logger.debug("EcuInstance %s" % short_name)
3184
- instance = parent.createEcuInstance(short_name)
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())
3185
3304
  self.readIdentifiable(element, instance)
3305
+ self.readEcuInstanceAssociatedComIPduGroupRefs(element, instance)
3186
3306
  instance.setComConfigurationGwTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-GW-TIME-BASE")) \
3187
3307
  .setComConfigurationRxTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-RX-TIME-BASE")) \
3188
3308
  .setComConfigurationTxTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-TX-TIME-BASE")) \
@@ -3212,30 +3332,34 @@ class ARXMLParser(AbstractARXMLParser):
3212
3332
  mappings.append(mapping)
3213
3333
  return mappings
3214
3334
 
3215
- '''
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
+
3216
3343
  def getIPduMappings(self, element: ET.Element) -> List[IPduMapping]:
3217
3344
  mappings = []
3218
- for child_element in self.findall(element, tag_name):
3345
+ for child_element in self.findall(element, "I-PDU-MAPPINGS/I-PDU-MAPPING"):
3219
3346
  mapping = IPduMapping()
3220
- mapping.sourceIPduRef = self.getChildElementOptionalRefType(child_element, "SOURCE-IPDU-REF")
3221
- mapping.targetIPduRef = self.getChildElementOptionalRefType(child_element, "TARGET-IPDU-REF")
3347
+ mapping.setSourceIpduRef(self.getChildElementOptionalRefType(child_element, "SOURCE-I-PDU-REF")) \
3348
+ .setTargetIPdu(self.getTargetIPduRef(child_element, "TARGET-I-PDU"))
3222
3349
  mappings.append(mapping)
3223
3350
  return mappings
3224
- '''
3225
3351
 
3226
- def readGateway(self, element: ET.Element, parent: ARPackage):
3227
- short_name = self.getShortName(element)
3228
- self.logger.debug("Gateway %s" % short_name)
3229
- gateway = parent.createGateway(short_name)
3352
+ def readGateway(self, element: ET.Element, gateway: Gateway):
3353
+ self.logger.debug("Read Gateway <%s>" % gateway.getShortName())
3230
3354
  self.readIdentifiable(element, gateway)
3231
- gateway.ecuRef = self.getChildElementOptionalRefType(element, "ECU-REF")
3355
+ gateway.setEcuRef(self.getChildElementOptionalRefType(element, "ECU-REF"))
3356
+ for mapping in self.getIPduMappings(element):
3357
+ gateway.addIPduMapping(mapping)
3232
3358
  for mapping in self.getISignalMappings(element):
3233
3359
  gateway.addSignalMapping(mapping)
3234
3360
 
3235
- def readISignal(self, element: ET.Element, parent: ARPackage):
3236
- short_name = self.getShortName(element)
3237
- self.logger.debug("ISignal %s" % short_name)
3238
- signal = parent.createISignal(short_name)
3361
+ def readISignal(self, element: ET.Element, signal: ISignal):
3362
+ self.logger.debug("Read ISignal <%s>" % signal.getShortName())
3239
3363
  self.readIdentifiable(element, signal)
3240
3364
  signal.setDataTypePolicy(self.getChildElementOptionalLiteral(element, "DATA-TYPE-POLICY")) \
3241
3365
  .setISignalType(self.getChildElementOptionalLiteral(element, "I-SIGNAL-TYPE")) \
@@ -3251,10 +3375,8 @@ class ARXMLParser(AbstractARXMLParser):
3251
3375
  parent.addEcucValueRef(ref)
3252
3376
  self.logger.debug("EcucValue <%s> of EcucValueCollection <%s> has been added", ref.value, parent.getShortName())
3253
3377
 
3254
- def readEcucValueCollection(self, element: ET.Element, parent: ARPackage):
3255
- short_name = self.getShortName(element)
3256
- self.logger.debug("EcucValueCollection %s" % short_name)
3257
- collection = parent.createEcucValueCollection(short_name)
3378
+ def readEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
3379
+ self.logger.debug("Read EcucValueCollection <%s>" % collection.getShortName())
3258
3380
  self.readIdentifiable(element, collection)
3259
3381
  collection.setEcuExtractRef(self.getChildElementOptionalRefType(element, "ECU-EXTRACT-REF"))
3260
3382
  self.readEcucValueCollectionEcucValues(element, collection)
@@ -3359,20 +3481,16 @@ class ARXMLParser(AbstractARXMLParser):
3359
3481
  else:
3360
3482
  self.notImplemented("Unsupported Container %s" % tag_name)
3361
3483
 
3362
- def readEcucModuleConfigurationValues(self, element: ET.Element, parent: ARPackage):
3363
- short_name = self.getShortName(element)
3364
- self.logger.debug("EcucModuleConfigurationValues %s" % short_name)
3365
- values = parent.createEcucModuleConfigurationValues(short_name)
3484
+ def readEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
3485
+ self.logger.debug("Read EcucModuleConfigurationValues %s" % values.getShortName())
3366
3486
  self.readIdentifiable(element, values)
3367
3487
  values.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
3368
3488
  values.setImplementationConfigVariant(self.getChildElementOptionalLiteral(element, "IMPLEMENTATION-CONFIG-VARIANT"))
3369
3489
  values.setModuleDescriptionRef(self.getChildElementOptionalRefType(element, "MODULE-DESCRIPTION-REF"))
3370
3490
  self.readEcucModuleConfigurationValuesContainers(element, values)
3371
3491
 
3372
- def readPhysicalDimensions(self, element: ET.Element, parent: ARPackage):
3373
- short_name = self.getShortName(element)
3374
- self.logger.debug("read PhysicalDimensions %s" % short_name)
3375
- dimension = parent.createPhysicalDimension(short_name)
3492
+ def readPhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
3493
+ self.logger.debug("Read PhysicalDimension <%s>" % dimension.getShortName())
3376
3494
  self.readIdentifiable(element, dimension)
3377
3495
  dimension.setCurrentExp(self.getChildElementOptionalNumericalValue(element, "CURRENT-EXP")) \
3378
3496
  .setLengthExp(self.getChildElementOptionalNumericalValue(element, "LENGTH-EXP")) \
@@ -3389,27 +3507,21 @@ class ARXMLParser(AbstractARXMLParser):
3389
3507
  return mappings
3390
3508
  '''
3391
3509
 
3392
- def readISignalGroup(self, element: ET.Element, parent: ARPackage):
3393
- short_name = self.getShortName(element)
3394
- self.logger.debug("ISignalGroup %s" % short_name)
3395
- group = parent.createISignalGroup(short_name)
3510
+ def readISignalGroup(self, element: ET.Element, group: ISignalGroup):
3511
+ self.logger.debug("Read ISignalGroup <%s>" % group.getShortName())
3396
3512
  self.readIdentifiable(element, group)
3397
3513
  for ref_type in self.getChildElementRefTypeList(element, "I-SIGNAL-REFS/I-SIGNAL-REF"):
3398
3514
  group.addISignalRef(ref_type)
3399
3515
  group.systemSignalGroupRef = self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-GROUP-REF")
3400
3516
 
3401
- def readSystemSignal(self, element: ET.Element, parent: ARPackage):
3402
- short_name = self.getShortName(element)
3403
- self.logger.debug("SystemSignal %s" % short_name)
3404
- signal = parent.createSystemSignal(short_name)
3517
+ def readSystemSignal(self, element: ET.Element, signal: SystemSignal):
3518
+ self.logger.debug("Read SystemSignal <%s>" % signal.getShortName())
3405
3519
  self.readIdentifiable(element, signal)
3406
3520
  signal.setDynamicLength(self.getChildElementOptionalBooleanValue(element, "DYNAMIC-LENGTH")) \
3407
3521
  .setPhysicalProps(self.getSwDataDefProps(element, "PHYSICAL-PROPS"))
3408
3522
 
3409
- def readSystemSignalGroup(self, element: ET.Element, parent: ARPackage):
3410
- short_name = self.getShortName(element)
3411
- self.logger.debug("SystemSignalGroup %s" % short_name)
3412
- group = parent.createSystemSignalGroup(short_name)
3523
+ def readSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
3524
+ self.logger.debug("Read SystemSignalGroup <%s>" % group.getShortName())
3413
3525
  self.readIdentifiable(element, group)
3414
3526
  for ref_type in self.getChildElementRefTypeList(element, "SYSTEM-SIGNAL-REFS/SYSTEM-SIGNAL-REF"):
3415
3527
  group.addSystemSignalRefs(ref_type)
@@ -3499,10 +3611,8 @@ class ARXMLParser(AbstractARXMLParser):
3499
3611
  .setTransmissionModeDeclaration(self.getTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION"))
3500
3612
  return timing
3501
3613
 
3502
- def readISignalIPdu(self, element: ET.Element, parent: ARPackage):
3503
- short_name = self.getShortName(element)
3504
- self.logger.debug("ISignalIPdu %s" % short_name)
3505
- 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())
3506
3616
  self.readIdentifiable(element, i_pdu)
3507
3617
  i_pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH")) \
3508
3618
  .setIPduTimingSpecification(self.getISignalIPduIPduTimingSpecification(element))
@@ -3515,13 +3625,11 @@ class ARXMLParser(AbstractARXMLParser):
3515
3625
  ref_types.append(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-I-PDU-REF"))
3516
3626
  return ref_types
3517
3627
 
3518
- def readISignalIPduGroup(self, element: ET.Element, parent: ARPackage):
3519
- short_name = self.getShortName(element)
3520
- self.logger.debug("ISignalIPduGroup %s" % short_name)
3521
- group = parent.createISignalIPduGroup(short_name)
3628
+ def readISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
3629
+ self.logger.debug("Read ISignalIPduGroup <%s>" % group.getShortName())
3522
3630
  self.readIdentifiable(element, group)
3523
- group.communicationDirection = self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")
3524
- group.communicationMode = self.getChildElementOptionalLiteral(element, "COMMUNICATION-MODE")
3631
+ group.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")) \
3632
+ .setCommunicationMode(self.getChildElementOptionalLiteral(element, "COMMUNICATION-MODE"))
3525
3633
  for ref_type in self.getChildElementRefTypeList(element, "CONTAINED-I-SIGNAL-I-PDU-GROUP-REFS/CONTAINED-I-SIGNAL-I-PDU-GROUP-REF"):
3526
3634
  group.addContainedISignalIPduGroupRef(ref_type)
3527
3635
  for ref_type in self.getISignalIPduRefs(element):
@@ -3590,32 +3698,27 @@ class ARXMLParser(AbstractARXMLParser):
3590
3698
  self.readIdentifiable(child_element, prototype)
3591
3699
  prototype.setFlatMapRef(self.getChildElementOptionalRefType(child_element, "FLAT-MAP-REF")) \
3592
3700
  .setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
3593
-
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)
3594
3705
 
3595
- def readSystem(self, element: ET.Element, parent: ARPackage):
3596
- short_name = self.getShortName(element)
3597
- self.logger.debug("Read System %s" % short_name)
3598
- system = parent.createSystem(short_name)
3706
+ def readSystem(self, element: ET.Element, system: System):
3707
+ self.logger.debug("Read System <%s>" % system.getShortName())
3599
3708
  self.readIdentifiable(element, system)
3600
-
3601
3709
  system.setEcuExtractVersion(self.getChildElementOptionalLiteral(element, "ECU-EXTRACT-VERSION"))
3602
- for child_element in self.findall(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL"):
3603
- system.addFibexElementRef(self.getChildElementOptionalRefType(child_element, "FIBEX-ELEMENT-REF"))
3710
+ self.readSystemFibexElementRefs(element, system)
3604
3711
  self.readSystemMappings(element, system)
3605
3712
  self.readRootSwCompositionPrototype(element, system)
3606
3713
  system.setSystemVersion(self.getChildElementOptionalRevisionLabelString(element, "SYSTEM-VERSION"))
3607
3714
 
3608
- def readGenericEthernetFrame(self, element: ET.Element, parent: ARPackage):
3609
- short_name = self.getShortName(element)
3610
- self.logger.debug("Read EthernetFrame %s" % short_name)
3611
- frame = parent.createGenericEthernetFrame(short_name)
3715
+ def readGenericEthernetFrame(self, element: ET.Element, frame: GenericEthernetFrame):
3716
+ self.logger.debug("Read GenericEthernetFrame <%s>" % frame.getShortName())
3612
3717
  self.readFrame(element, frame)
3613
3718
 
3614
- def readLifeCycleInfoSet(self, element: ET.Element, parent: ARPackage):
3615
- short_name = self.getShortName(element)
3616
- self.logger.debug("Read LifeCycleInfoSet %s" % short_name)
3617
- frame = parent.createLifeCycleInfoSet(short_name)
3618
- 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)
3619
3722
 
3620
3723
  def readFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
3621
3724
  self.logger.debug("Read LifeCycleInfoSet %s" % desc.getShortName())
@@ -3632,10 +3735,8 @@ class ARXMLParser(AbstractARXMLParser):
3632
3735
  else:
3633
3736
  self.notImplemented("Unsupported Flat Map Instances <%s>" % tag_name)
3634
3737
 
3635
- def readFlatMap(self, element: ET.Element, parent: ARPackage):
3636
- short_name = self.getShortName(element)
3637
- self.logger.debug("Read FlatMap %s" % short_name)
3638
- map = parent.createFlatMap(short_name)
3738
+ def readFlatMap(self, element: ET.Element, map: FlatMap):
3739
+ self.logger.debug("Read FlatMap <%s>" % map.getShortName())
3639
3740
  self.readIdentifiable(element, map)
3640
3741
  self.readFlatMapInstances(element, map)
3641
3742
 
@@ -3663,156 +3764,221 @@ class ARXMLParser(AbstractARXMLParser):
3663
3764
  else:
3664
3765
  self.notImplemented("Unsupported PortInterfaceMapping <%s>" % tag_name)
3665
3766
 
3666
- def readPortInterfaceMappingSet(self, element: ET.Element, parent: ARPackage):
3667
- short_name = self.getShortName(element)
3668
- self.logger.debug("Read PortInterfaceMappingSet %s" % short_name)
3669
- 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())
3670
3769
  self.readIdentifiable(element, mapping_set)
3671
3770
  self.readPortInterfaceMappings(element, mapping_set)
3672
3771
 
3673
3772
  def readARPackageElements(self, element: ET.Element, parent: ARPackage):
3674
3773
  for child_element in self.findall(element, "ELEMENTS/*"):
3675
- tag_name = self.getTagName(child_element.tag)
3774
+ tag_name = self.getTagName(child_element)
3676
3775
  if tag_name == "COMPOSITION-SW-COMPONENT-TYPE":
3677
- self.readCompositionSwComponentType(child_element, parent)
3776
+ type = parent.createCompositionSwComponentType(self.getShortName(child_element))
3777
+ self.readCompositionSwComponentType(child_element, type)
3678
3778
  elif tag_name == "COMPLEX-DEVICE-DRIVER-SW-COMPONENT-TYPE":
3679
- self.readComplexDeviceDriverSwComponentType(child_element, parent)
3779
+ type = parent.createComplexDeviceDriverSwComponentType(self.getShortName(child_element))
3780
+ self.readComplexDeviceDriverSwComponentType(child_element, type)
3680
3781
  elif tag_name == "SWC-IMPLEMENTATION":
3681
- self.readSwcImplementation(child_element, parent)
3782
+ impl = parent.createSwcImplementation(self.getShortName(child_element))
3783
+ self.readSwcImplementation(child_element, impl)
3682
3784
  elif tag_name == "APPLICATION-PRIMITIVE-DATA-TYPE":
3683
- self.readApplicationPrimitiveDataType(child_element, parent)
3785
+ data_type = parent.createApplicationPrimitiveDataType(self.getShortName(child_element))
3786
+ self.readApplicationPrimitiveDataType(child_element, data_type)
3684
3787
  elif tag_name == "APPLICATION-RECORD-DATA-TYPE":
3685
- self.readApplicationRecordDataTypes(child_element, parent)
3788
+ data_type = parent.createApplicationRecordDataType(self.getShortName(child_element))
3789
+ self.readApplicationRecordDataType(child_element, data_type)
3686
3790
  elif tag_name == "SW-BASE-TYPE":
3687
- self.readSwBaseType(child_element, parent)
3791
+ data_type = parent.createSwBaseType(self.getShortName(child_element))
3792
+ self.readSwBaseType(child_element, data_type)
3688
3793
  elif tag_name == "COMPU-METHOD":
3689
- self.readCompuMethod(child_element, parent)
3794
+ compu_method = parent.createCompuMethod(self.getShortName(child_element))
3795
+ self.readCompuMethod(child_element, compu_method)
3690
3796
  elif tag_name == "CONSTANT-SPECIFICATION":
3691
- self.readConstantSpecification(child_element, parent)
3797
+ spec = parent.createConstantSpecification(self.getShortName(child_element))
3798
+ self.readConstantSpecification(child_element, spec)
3692
3799
  elif tag_name == "DATA-CONSTR":
3693
- self.readDataConstr(child_element, parent)
3800
+ constr = parent.createDataConstr(self.getShortName(child_element))
3801
+ self.readDataConstr(child_element, constr)
3694
3802
  elif tag_name == "END-TO-END-PROTECTION-SET":
3695
- self.readEndToEndProtectionSet(child_element, parent)
3803
+ protection_set = parent.createEndToEndProtectionSet(self.getShortName(child_element))
3804
+ self.readEndToEndProtectionSet(child_element, protection_set)
3696
3805
  elif tag_name == "SENDER-RECEIVER-INTERFACE":
3697
- self.readSenderReceiverInterfaces(child_element, parent)
3806
+ sr_interface = parent.createSenderReceiverInterface(self.getShortName(child_element))
3807
+ self.readSenderReceiverInterface(child_element, sr_interface)
3698
3808
  elif tag_name == "UNIT":
3699
- self.readUnit(child_element, parent)
3809
+ unit = parent.createUnit(self.getShortName(child_element))
3810
+ self.readUnit(child_element, unit)
3700
3811
  elif tag_name == "BSW-MODULE-DESCRIPTION":
3701
- self.readBswModuleDescription(child_element, parent)
3812
+ desc = parent.createBswModuleDescription(self.getShortName(child_element))
3813
+ self.readBswModuleDescription(child_element, desc)
3702
3814
  elif tag_name == "BSW-MODULE-ENTRY":
3703
- self.readBswModuleEntry(child_element, parent)
3815
+ entry = parent.createBswModuleEntry(self.getShortName(child_element))
3816
+ self.readBswModuleEntry(child_element, entry)
3704
3817
  elif tag_name == "SWC-BSW-MAPPING":
3705
- self.readSwcBswMappings(child_element, parent)
3818
+ mapping = parent.createSwcBswMapping(self.getShortName(child_element))
3819
+ self.readSwcBswMapping(child_element, mapping)
3706
3820
  elif tag_name == "BSW-IMPLEMENTATION":
3707
- self.readBswImplementation(child_element, parent)
3821
+ impl = parent.createBswImplementation(self.getShortName(child_element))
3822
+ self.readBswImplementation(child_element, impl)
3708
3823
  elif tag_name == "IMPLEMENTATION-DATA-TYPE":
3709
- self.readImplementationDataType(child_element, parent)
3824
+ data_type = parent.createImplementationDataType(self.getShortName(child_element))
3825
+ self.readImplementationDataType(child_element, data_type)
3710
3826
  elif tag_name == "CLIENT-SERVER-INTERFACE":
3711
- self.readClientServerInterface(child_element, parent)
3827
+ cs_interface = parent.createClientServerInterface(self.getShortName(child_element))
3828
+ self.readClientServerInterface(child_element, cs_interface)
3712
3829
  elif tag_name == "APPLICATION-SW-COMPONENT-TYPE":
3713
- self.readApplicationSwComponentTypes(child_element, parent)
3830
+ sw_component = parent.createApplicationSwComponentType(self.getShortName(child_element))
3831
+ self.readApplicationSwComponentType(child_element, sw_component)
3714
3832
  elif tag_name == "ECU-ABSTRACTION-SW-COMPONENT-TYPE":
3715
- self.readEcuAbstractionSwComponent(child_element, parent)
3833
+ sw_component = parent.createEcuAbstractionSwComponentType(self.getShortName(child_element))
3834
+ self.readEcuAbstractionSwComponentType(child_element, sw_component)
3716
3835
  elif tag_name == "APPLICATION-ARRAY-DATA-TYPE":
3717
- self.readApplicationArrayDataType(child_element, parent)
3836
+ data_type = parent.createApplicationArrayDataType(self.getShortName(child_element))
3837
+ self.readApplicationArrayDataType(child_element, data_type)
3718
3838
  elif tag_name == "SW-RECORD-LAYOUT":
3719
-
3720
- self.readSwRecordLayout(child_element, parent)
3839
+ layout = parent.createSwRecordLayout(self.getShortName(child_element))
3840
+ self.readSwRecordLayout(child_element, layout)
3721
3841
  elif tag_name == "SW-ADDR-METHOD":
3722
- self.readSwAddrMethod(child_element, parent)
3842
+ method = parent.createSwAddrMethod(self.getShortName(child_element))
3843
+ self.readSwAddrMethod(child_element, method)
3723
3844
  elif tag_name == "TRIGGER-INTERFACE":
3724
- self.readTriggerInterface(child_element, parent)
3845
+ trigger_if = parent.createTriggerInterface(self.getShortName(child_element))
3846
+ self.readTriggerInterface(child_element, trigger_if)
3725
3847
  elif tag_name == "SERVICE-SW-COMPONENT-TYPE":
3726
- self.readServiceSwComponentType(child_element, parent)
3848
+ sw_component = parent.createServiceSwComponentType(self.getShortName(child_element))
3849
+ self.readServiceSwComponentType(child_element, sw_component)
3727
3850
  elif tag_name == "SENSOR-ACTUATOR-SW-COMPONENT-TYPE":
3728
- self.readSensorActuatorSwComponentType(child_element, parent)
3851
+ sw_component = parent.createSensorActuatorSwComponentType(self.getShortName(child_element))
3852
+ self.readSensorActuatorSwComponentType(child_element, sw_component)
3729
3853
  elif tag_name == "DATA-TYPE-MAPPING-SET":
3730
- self.readDataTypeMappingSet(child_element, parent)
3854
+ mapping_set = parent.createDataTypeMappingSet(self.getShortName(child_element))
3855
+ self.readDataTypeMappingSet(child_element, mapping_set)
3731
3856
  elif tag_name == "MODE-DECLARATION-GROUP":
3732
- self.readModeDeclarationGroup(child_element, parent)
3857
+ group = parent.createModeDeclarationGroup(self.getShortName(child_element))
3858
+ self.readModeDeclarationGroup(child_element, group)
3733
3859
  elif tag_name == "MODE-SWITCH-INTERFACE":
3734
- self.readModeSwitchInterface(child_element, parent)
3860
+ mode_interface = parent.createModeSwitchInterface(self.getShortName(child_element))
3861
+ self.readModeSwitchInterface(child_element, mode_interface)
3735
3862
  elif tag_name == "SWC-TIMING":
3736
- self.readSwcTiming(child_element, parent)
3863
+ timing = parent.createSwcTiming(self.getShortName(child_element))
3864
+ self.readSwcTiming(child_element, timing)
3737
3865
  elif tag_name == "LIN-CLUSTER":
3738
- self.readLinCluster(child_element, parent)
3866
+ cluster = parent.createLinCluster(self.getShortName(child_element))
3867
+ self.readLinCluster(child_element, cluster)
3739
3868
  elif tag_name == "LIN-UNCONDITIONAL-FRAME":
3740
- self.readLinUnconditionalFrame(child_element, parent)
3869
+ frame = parent.createLinUnconditionalFrame(self.getShortName(child_element))
3870
+ self.readLinUnconditionalFrame(child_element, frame)
3741
3871
  elif tag_name == "NM-PDU":
3742
- self.readNmPdu(child_element, parent)
3872
+ pdu = parent.createNmPdu(self.getShortName(child_element))
3873
+ self.readNmPdu(child_element, pdu)
3743
3874
  elif tag_name == "N-PDU":
3744
- self.readNPdu(child_element, parent)
3875
+ pdu = parent.createNPdu(self.getShortName(child_element))
3876
+ self.readNPdu(child_element, pdu)
3745
3877
  elif tag_name == "DCM-I-PDU":
3746
- self.readDcmIPdu(child_element, parent)
3878
+ i_pdu = parent.createDcmIPdu(self.getShortName(child_element))
3879
+ self.readDcmIPdu(child_element, i_pdu)
3747
3880
  elif tag_name == "SECURED-I-PDU":
3748
- self.readSecuredIPdu(child_element, parent)
3881
+ i_pdu = parent.createSecuredIPdu(self.getShortName(child_element))
3882
+ self.readSecuredIPdu(child_element, i_pdu)
3749
3883
  elif tag_name == "NM-CONFIG":
3750
- self.readNmConfig(child_element, parent)
3884
+ config = parent.createNmConfig(self.getShortName(child_element))
3885
+ self.readNmConfig(child_element, config)
3751
3886
  elif tag_name == "CAN-TP-CONFIG":
3752
- self.readCanTpConfig(child_element, parent)
3887
+ config = parent.createCanTpConfig(self.getShortName(child_element))
3888
+ self.readCanTpConfig(child_element, config)
3753
3889
  elif tag_name == "LIN-TP-CONFIG":
3754
- pass
3890
+ config = parent.createLinTpConfig(self.getShortName(child_element))
3891
+ self.readLinTpConfig(child_element, config)
3755
3892
  elif tag_name == "SYSTEM":
3756
- self.readSystem(child_element, parent)
3893
+ system = parent.createSystem(self.getShortName(child_element))
3894
+ self.readSystem(child_element, system)
3757
3895
  elif tag_name == "ECU-INSTANCE":
3758
- self.readEcuInstance(child_element, parent)
3896
+ instance = parent.createEcuInstance(self.getShortName(child_element))
3897
+ self.readEcuInstance(child_element, instance)
3759
3898
  elif tag_name == "GATEWAY":
3760
- self.readGateway(child_element, parent)
3899
+ gateway = parent.createGateway(self.getShortName(child_element))
3900
+ self.readGateway(child_element, gateway)
3761
3901
  elif tag_name == "I-SIGNAL-I-PDU-GROUP":
3762
- self.readISignalIPduGroup(child_element, parent)
3902
+ group = parent.createISignalIPduGroup(self.getShortName(child_element))
3903
+ self.readISignalIPduGroup(child_element, group)
3763
3904
  elif tag_name == "CAN-CLUSTER":
3764
- self.readCanCluster(child_element, parent)
3905
+ cluster = parent.createCanCluster(self.getShortName(child_element))
3906
+ self.readCanCluster(child_element, cluster)
3765
3907
  elif tag_name == "CAN-FRAME":
3766
- self.readCanFrame(child_element, parent)
3908
+ frame = parent.createCanFrame(self.getShortName(child_element))
3909
+ self.readCanFrame(child_element, frame)
3767
3910
  elif tag_name == "I-SIGNAL":
3768
- self.readISignal(child_element, parent)
3911
+ signal = parent.createISignal(self.getShortName(child_element))
3912
+ self.readISignal(child_element, signal)
3769
3913
  elif tag_name == "I-SIGNAL-GROUP":
3770
- self.readISignalGroup(child_element, parent)
3914
+ group = parent.createISignalGroup(self.getShortName(child_element))
3915
+ self.readISignalGroup(child_element, group)
3771
3916
  elif tag_name == "I-SIGNAL-I-PDU":
3772
- self.readISignalIPdu(child_element, parent)
3917
+ i_pdu = parent.createISignalIPdu(self.getShortName(child_element))
3918
+ self.readISignalIPdu(child_element, i_pdu)
3773
3919
  elif tag_name == "SYSTEM-SIGNAL":
3774
- self.readSystemSignal(child_element, parent)
3920
+ signal = parent.createSystemSignal(self.getShortName(child_element))
3921
+ self.readSystemSignal(child_element, signal)
3775
3922
  elif tag_name == "SYSTEM-SIGNAL-GROUP":
3776
- self.readSystemSignalGroup(child_element, parent)
3923
+ group = parent.createSystemSignalGroup(self.getShortName(child_element))
3924
+ self.readSystemSignalGroup(child_element, group)
3777
3925
  elif tag_name == "ECUC-VALUE-COLLECTION":
3778
- self.readEcucValueCollection(child_element, parent)
3926
+ collection = parent.createEcucValueCollection(self.getShortName(child_element))
3927
+ self.readEcucValueCollection(child_element, collection)
3779
3928
  elif tag_name == "ECUC-MODULE-CONFIGURATION-VALUES":
3780
- self.readEcucModuleConfigurationValues(child_element, parent)
3929
+ values = parent.createEcucModuleConfigurationValues(self.getShortName(child_element))
3930
+ self.readEcucModuleConfigurationValues(child_element, values)
3781
3931
  elif tag_name == "PHYSICAL-DIMENSION":
3782
- self.readPhysicalDimensions(child_element, parent)
3932
+ dimension = parent.createPhysicalDimension(self.getShortName(child_element))
3933
+ self.readPhysicalDimension(child_element, dimension)
3783
3934
  elif tag_name == "PARAMETER-INTERFACE":
3784
- self.readParameterInterface(child_element, parent)
3935
+ param_interface = parent.createParameterInterface(self.getShortName(child_element))
3936
+ self.readParameterInterface(child_element, param_interface)
3785
3937
  elif tag_name == "ETHERNET-FRAME":
3786
- self.readGenericEthernetFrame(child_element, parent)
3938
+ frame = parent.createGenericEthernetFrame(self.getShortName(child_element))
3939
+ self.readGenericEthernetFrame(child_element, frame)
3787
3940
  elif tag_name == "LIFE-CYCLE-INFO-SET":
3788
- self.readLifeCycleInfoSet(child_element, parent)
3941
+ info_set = parent.createLifeCycleInfoSet(self.getShortName(child_element))
3942
+ self.readLifeCycleInfoSet(child_element, info_set)
3789
3943
  elif tag_name == "FLAT-MAP":
3790
- self.readFlatMap(child_element, parent)
3944
+ map = parent.createFlatMap(self.getShortName(child_element))
3945
+ self.readFlatMap(child_element, map)
3791
3946
  elif tag_name == "PORT-INTERFACE-MAPPING-SET":
3792
- self.readPortInterfaceMappingSet(child_element, parent)
3947
+ mapping_set = parent.createPortInterfaceMappingSet(self.getShortName(child_element))
3948
+ self.readPortInterfaceMappingSet(child_element, mapping_set)
3793
3949
  elif tag_name == "ETHERNET-CLUSTER":
3794
- self.readEthernetCluster(child_element, parent)
3950
+ cluster = parent.createEthernetCluster(self.getShortName(child_element))
3951
+ self.readEthernetCluster(child_element, cluster)
3795
3952
  elif tag_name == "DIAGNOSTIC-CONNECTION":
3796
3953
  connection = parent.createDiagnosticConnection(self.getShortName(child_element))
3797
3954
  self.readDiagnosticConnection(child_element, connection)
3798
3955
  elif tag_name == "DIAGNOSTIC-SERVICE-TABLE":
3799
- self.readDiagnosticServiceTable(child_element, parent)
3956
+ table = parent.createDiagnosticServiceTable(self.getShortName(child_element))
3957
+ self.readDiagnosticServiceTable(child_element, table)
3800
3958
  elif tag_name == "MULTIPLEXED-I-PDU":
3801
- self.readMultiplexedIPdu(child_element, parent)
3959
+ i_pdu = parent.createMultiplexedIPdu(self.getShortName(child_element))
3960
+ self.readMultiplexedIPdu(child_element, i_pdu)
3802
3961
  elif tag_name == "USER-DEFINED-I-PDU":
3803
- self.readUserDefinedIPdu(child_element, parent)
3962
+ i_pdu = parent.createUserDefinedIPdu(self.getShortName(child_element))
3963
+ self.readUserDefinedIPdu(child_element, i_pdu)
3804
3964
  elif tag_name == "USER-DEFINED-PDU":
3805
- self.readUserDefinedPdu(child_element, parent)
3965
+ pdu = parent.createUserDefinedPdu(self.getShortName(child_element))
3966
+ self.readUserDefinedPdu(child_element, pdu)
3806
3967
  elif tag_name == "GENERAL-PURPOSE-PDU":
3807
- self.readGeneralPurposePdu(child_element, parent)
3968
+ pdu = parent.createGeneralPurposePdu(self.getShortName(child_element))
3969
+ self.readGeneralPurposePdu(child_element, pdu)
3808
3970
  elif tag_name == "GENERAL-PURPOSE-I-PDU":
3809
- self.readGeneralPurposeIPdu(child_element, parent)
3971
+ i_pdu = parent.createGeneralPurposeIPdu(self.getShortName(child_element))
3972
+ self.readGeneralPurposeIPdu(child_element, i_pdu)
3810
3973
  elif tag_name == "SECURE-COMMUNICATION-PROPS-SET":
3811
- self.readSecureCommunicationPropsSet(child_element, parent)
3974
+ prop_set = parent.createSecureCommunicationPropsSet(self.getShortName(child_element))
3975
+ self.readSecureCommunicationPropsSet(child_element, prop_set)
3812
3976
  elif tag_name == "SO-AD-ROUTING-GROUP":
3813
- self.readSoAdRoutingGroup(child_element, parent)
3977
+ group = parent.createSoAdRoutingGroup(self.getShortName(child_element))
3978
+ self.readSoAdRoutingGroup(child_element, group)
3814
3979
  elif tag_name == "DO-IP-TP-CONFIG":
3815
- self.readDoIpTpConfig(child_element, parent)
3980
+ config = parent.createDoIpTpConfig(self.getShortName(child_element))
3981
+ self.readDoIpTpConfig(child_element, config)
3816
3982
  else:
3817
3983
  self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
3818
3984
 
@@ -3845,7 +4011,7 @@ class ARXMLParser(AbstractARXMLParser):
3845
4011
  tree = ET.parse(filename)
3846
4012
  root = tree.getroot()
3847
4013
  if (self.getPureTagName(root.tag) != "AUTOSAR"):
3848
- self._raiseError("Invalid ARXML file <%s>" % filename)
4014
+ self.raiseError("Invalid ARXML file <%s>" % filename)
3849
4015
 
3850
4016
  self.getAUTOSARInfo(root, document)
3851
4017
  document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))