armodel 1.7.4__py3-none-any.whl → 1.7.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. armodel/cli/file_list_cli.py +70 -0
  2. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +2 -2
  3. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +4 -0
  4. armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/DiagnosticContribution.py +47 -0
  5. armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/__init__.py +0 -0
  6. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +73 -3
  7. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +22 -0
  8. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DiagnosticConnection.py +58 -0
  9. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +165 -4
  10. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetCommunication.py +16 -1
  11. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +514 -17
  12. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/NetworkEndpoint.py +104 -1
  13. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +783 -13
  14. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinCommunication.py +114 -6
  15. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinTopology.py +92 -0
  16. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +76 -10
  17. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +151 -6
  18. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +143 -36
  19. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +13 -0
  20. armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +135 -13
  21. armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +79 -2
  22. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +4 -2
  23. armodel/models/M2/MSR/DataDictionary/RecordLayout.py +1 -1
  24. armodel/models/__init__.py +3 -0
  25. armodel/parser/abstract_arxml_parser.py +7 -5
  26. armodel/parser/arxml_parser.py +927 -438
  27. armodel/writer/arxml_writer.py +799 -178
  28. {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/METADATA +52 -1
  29. {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/RECORD +33 -28
  30. {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/entry_points.txt +1 -0
  31. {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/LICENSE +0 -0
  32. {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/WHEEL +0 -0
  33. {armodel-1.7.4.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,26 +70,31 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import Assembl
66
70
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
67
71
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
68
72
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
69
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, DataPrototypeMapping, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, PortInterfaceMappingSet, SenderReceiverInterface, VariableAndParameterInterfaceMapping
73
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, DataPrototypeMapping, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, PortInterfaceMappingSet, SenderReceiverInterface, TriggerInterface, VariableAndParameterInterfaceMapping
70
74
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
75
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
71
76
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
72
77
 
73
78
  from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping , System, SystemMapping
74
79
  from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
75
- from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
80
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import DiagnosticConnection
81
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmNode
76
82
  from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
77
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering
78
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinPhysicalChannel, PhysicalChannel
79
- 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
80
87
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
81
88
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
82
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering, RxIdentifierRange
83
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
84
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCommunicationController
85
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
86
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import Ipv6Configuration, NetworkEndpoint
87
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import SoAdConfig, SocketAddress
88
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import ISignalMapping
89
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
90
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController, AbstractCanCommunicationControllerAttributes, CanCommunicationConnector, CanCommunicationController, CanControllerConfigurationRequirements, CanControllerFdConfiguration, CanControllerFdConfigurationRequirements
91
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
92
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
93
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration, NetworkEndpoint
94
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup, ConsumedServiceInstance, EventHandler, GenericTp, ProvidedServiceInstance, SdServerConfig, SoAdConfig, SocketAddress, TcpTp, TpPort, TransportProtocolConfiguration, UdpTp
95
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPort, CouplingPortDetails, CouplingPortFifo, CouplingPortScheduler, CouplingPortStructuralElement, EthernetCluster, EthernetCommunicationConnector, EthernetCommunicationController, EthernetPriorityRegeneration, InitialSdDelayConfig, MacMulticastGroup, RequestResponseDelay, SdClientConfig, VlanMembership
96
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, IPduMapping, ISignalMapping, TargetIPduRef
97
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig, DoIpTpConfig, LinTpConfig
89
98
 
90
99
  from .abstract_arxml_parser import AbstractARXMLParser
91
100
 
@@ -299,8 +308,6 @@ class ARXMLParser(AbstractARXMLParser):
299
308
  if ref_type is not None:
300
309
  entity.addManagedModeGroupRef(ref_type)
301
310
 
302
-
303
-
304
311
  def readBswEvent(self, element: ET.Element, event: BswScheduleEvent):
305
312
  event.startsOnEventRef = self.getChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF")
306
313
 
@@ -346,7 +353,7 @@ class ARXMLParser(AbstractARXMLParser):
346
353
  if tag_name == "BSW-MODE-SENDER-POLICY":
347
354
  parent.addModeSenderPolicy(self.getBswModeSenderPolicy(child_element))
348
355
  else:
349
- self._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
 
@@ -2272,7 +2208,7 @@ class ARXMLParser(AbstractARXMLParser):
2272
2208
  layout_v = SwRecordLayoutV()
2273
2209
  layout_v.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
2274
2210
  .setBaseTypeRef(self.getChildElementOptionalRefType(child_element, "BASE-TYPE-REF")) \
2275
- .setSwRecordLayoutVAxis(self.getChildElementOptionalNumericalValue(child_element, "SW-RECORD-LAYOUT-V-AXIS")) \
2211
+ .setSwRecordLayoutVAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-AXIS")) \
2276
2212
  .setSwRecordLayoutVProp(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP")) \
2277
2213
  .setSwRecordLayoutVIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX"))
2278
2214
  return layout_v
@@ -2284,7 +2220,7 @@ class ARXMLParser(AbstractARXMLParser):
2284
2220
  group = SwRecordLayoutGroup()
2285
2221
  group.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
2286
2222
  .setCategory(self.getChildElementOptionalLiteral(child_element, "CATEGORY")) \
2287
- .setSwRecordLayoutGroupAxis(self.getChildElementOptionalNumericalValue(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS")) \
2223
+ .setSwRecordLayoutGroupAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS")) \
2288
2224
  .setSwRecordLayoutGroupIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX")) \
2289
2225
  .setSwRecordLayoutGroupFrom(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM")) \
2290
2226
  .setSwRecordLayoutGroupStep(self.getChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP")) \
@@ -2301,17 +2237,13 @@ class ARXMLParser(AbstractARXMLParser):
2301
2237
 
2302
2238
  return group
2303
2239
 
2304
- def readSwRecordLayout(self, element: ET.Element, 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
 
@@ -2471,9 +2396,45 @@ class ARXMLParser(AbstractARXMLParser):
2471
2396
  self.readIdentifiable(element, channel)
2472
2397
  self.readPhysicalChannel(element, channel)
2473
2398
 
2399
+ def readScheduleTableEntry(self, element: ET.Element, entry: ScheduleTableEntry):
2400
+ entry.setDelay(self.getChildElementOptionalTimeValue(element, "DELAY")) \
2401
+ .setPositionInTable(self.getChildElementOptionalIntegerValue(element, "POSITION-IN-TABLE"))
2402
+
2403
+ def getApplicationEntry(self, element: ET.Element, key: str) -> ApplicationEntry:
2404
+ entry = None
2405
+ if element is not None:
2406
+ entry = ApplicationEntry()
2407
+ self.readScheduleTableEntry(element, entry)
2408
+ entry.setFrameTriggeringRef(self.getChildElementOptionalRefType(element, "FRAME-TRIGGERING-REF"))
2409
+ return entry
2410
+
2411
+ def readLinScheduleTableTableEntries(self, element: ET.Element, table: LinScheduleTable):
2412
+ for child_element in self.findall(element, "TABLE-ENTRYS/*"):
2413
+ tag_name = self.getTagName(child_element)
2414
+ if tag_name == "APPLICATION-ENTRY":
2415
+ table = table.addTableEntry(self.getApplicationEntry(child_element, "APPLICATION-ENTRY"))
2416
+ else:
2417
+ self.notImplemented("Unsupported Schedule Table <%s>" % tag_name)
2418
+
2419
+ def readLinScheduleTable(self, element: ET.Element, table: LinScheduleTable):
2420
+ self.readIdentifiable(element, table)
2421
+ table.setResumePosition(self.getChildElementOptionalLiteral(element, "RESUME-POSITION")) \
2422
+ .setRunMode(self.getChildElementOptionalLiteral(element, "RUN-MODE"))
2423
+ self.readLinScheduleTableTableEntries(element, table)
2424
+
2425
+ def readLinPhysicalChannelScheduleTables(self, element: ET.Element, channel: LinPhysicalChannel):
2426
+ for child_element in self.findall(element, "SCHEDULE-TABLES/*"):
2427
+ tag_name = self.getTagName(child_element)
2428
+ if tag_name == "LIN-SCHEDULE-TABLE":
2429
+ table = channel.createLinScheduleTable(self.getShortName(child_element))
2430
+ self.readLinScheduleTable(child_element, table)
2431
+ else:
2432
+ self.notImplemented("Unsupported Schedule Table <%s>" % tag_name)
2433
+
2474
2434
  def readLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
2475
2435
  self.readIdentifiable(element, channel)
2476
2436
  self.readPhysicalChannel(element, channel)
2437
+ self.readLinPhysicalChannelScheduleTables(element, channel)
2477
2438
 
2478
2439
  def getIpv6Configuration(self, element: ET.Element) -> Ipv6Configuration:
2479
2440
  configuration = None
@@ -2496,8 +2457,25 @@ class ARXMLParser(AbstractARXMLParser):
2496
2457
  else:
2497
2458
  self.notImplemented("Unsupported Network EndPoint Address <%s>" % tag_name)
2498
2459
 
2460
+ def getDoIpEntity(self, element: ET.Element, key:str) -> DoIpEntity:
2461
+ entity = None
2462
+ child_element = self.find(element, key)
2463
+ if child_element is not None:
2464
+ entity = DoIpEntity()
2465
+ entity.setDoIpEntityRole(self.getChildElementOptionalLiteral(child_element, "DO-IP-ENTITY-ROLE"))
2466
+ return entity
2467
+
2468
+ def getInfrastructureServices(self, element: ET.Element, key:str) -> InfrastructureServices:
2469
+ services = None
2470
+ child_element = self.find(element, key)
2471
+ if child_element is not None:
2472
+ services = InfrastructureServices()
2473
+ services.setDoIpEntity(self.getDoIpEntity(child_element, "DO-IP-ENTITY"))
2474
+ return services
2475
+
2499
2476
  def readNetworkEndPoint(self, element: ET.Element, end_point: NetworkEndpoint):
2500
2477
  self.readIdentifiable(element, end_point)
2478
+ end_point.setInfrastructureServices(self.getInfrastructureServices(element, "INFRASTRUCTURE-SERVICES"))
2501
2479
  self.readNetworkEndPointNetworkEndPointAddress(element, end_point)
2502
2480
  end_point.setPriority(self.getChildElementOptionalPositiveInteger(element, "PRIORITY"))
2503
2481
 
@@ -2531,11 +2509,15 @@ class ARXMLParser(AbstractARXMLParser):
2531
2509
  connection = None
2532
2510
  if element is not None:
2533
2511
  connection = SocketConnection()
2534
- connection.setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF"))
2512
+ connection.setClientIpAddrFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST")) \
2513
+ .setClientPortFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-PORT-FROM-CONNECTION-REQUEST")) \
2514
+ .setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF"))
2535
2515
  for pdu in self.getSocketConnectionPdus(element):
2536
2516
  connection.addPdu(pdu)
2537
2517
  connection.setPduCollectionMaxBufferSize(self.getChildElementOptionalPositiveInteger(element, "PDU-COLLECTION-MAX-BUFFER-SIZE")) \
2538
2518
  .setPduCollectionTimeout(self.getChildElementOptionalTimeValue(element, "PDU-COLLECTION-TIMEOUT")) \
2519
+ .setRuntimeIpAddressConfiguration(self.getChildElementOptionalLiteral(element, "RUNTIME-IP-ADDRESS-CONFIGURATION")) \
2520
+ .setRuntimePortConfiguration(self.getChildElementOptionalLiteral(element, "RUNTIME-PORT-CONFIGURATION")) \
2539
2521
  .setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
2540
2522
  return connection
2541
2523
 
@@ -2560,18 +2542,205 @@ class ARXMLParser(AbstractARXMLParser):
2560
2542
  else:
2561
2543
  self.notImplemented("Unsupported Connection Bundle <%s>" % tag_name)
2562
2544
 
2545
+ def getTpPort(self, element: ET.SubElement, key: str) -> TpPort:
2546
+ port = None
2547
+ child_element = self.find(element, key)
2548
+ if child_element is not None:
2549
+ port = TpPort()
2550
+ port.setDynamicallyAssigned(self.getChildElementOptionalBooleanValue(child_element, "DYNAMICALLY-ASSIGNED")) \
2551
+ .setPortNumber(self.getChildElementOptionalPositiveInteger(child_element, "PORT-NUMBER"))
2552
+ return port
2553
+
2554
+ def readUdpTp(self, element: ET.Element, tp: UdpTp):
2555
+ tp.setUdpTpPort(self.getTpPort(element, "UDP-TP-PORT"))
2556
+
2557
+ def readTcpTp(self, element: ET.Element, tp: TcpTp):
2558
+ tp.setKeepAliveInterval(self.getChildElementOptionalTimeValue(element, "KEEP-ALIVE-INTERVAL")) \
2559
+ .setKeepAliveProbesMax(self.getChildElementOptionalPositiveInteger(element, "KEEP-ALIVE-PROBES-MAX")) \
2560
+ .setKeepAliveTime(self.getChildElementOptionalTimeValue(element, "KEEP-ALIVE-TIME")) \
2561
+ .setKeepAlives(self.getChildElementOptionalBooleanValue(element, "KEEP-ALIVES")) \
2562
+ .setNaglesAlgorithm(self.getChildElementOptionalLiteral(element, "NAGLES-ALGORITHM")) \
2563
+ .setTcpTpPort(self.getTpPort(element, "TCP-TP-PORT"))
2564
+
2565
+
2566
+ def readGenericTp(self, element: ET.Element, tp: GenericTp):
2567
+ tp.setTpAddress(self.getChildElementOptionalLiteral(element, "TP-ADDRESS")) \
2568
+ .setTpTechnology(self.getChildElementOptionalLiteral(element, "TP-TECHNOLOGY"))
2569
+
2570
+ def getTransportProtocolConfiguration(self, element: ET.Element, key: str) -> TransportProtocolConfiguration:
2571
+ configuration = None
2572
+ child_element = self.find(element, "%s/*" % key)
2573
+ if child_element is not None:
2574
+ tag_name = self.getTagName(child_element)
2575
+ if tag_name == "UDP-TP":
2576
+ configuration = UdpTp()
2577
+ self.readUdpTp(child_element, configuration)
2578
+ elif tag_name == "TCP-TP":
2579
+ configuration = TcpTp()
2580
+ self.readTcpTp(child_element, configuration)
2581
+ elif tag_name == "GENERIC-TP":
2582
+ configuration = GenericTp()
2583
+ self.readGenericTp(child_element, configuration)
2584
+ else:
2585
+ self.notImplemented("Unsupported TransportProtocolConfiguration <%s>" % tag_name)
2586
+ return configuration
2587
+
2588
+ def readConsumedEventGroupRoutingGroupRefs(self, element: ET.Element, group: ConsumedEventGroup):
2589
+ for ref in self.getChildElementRefTypeList(element, "ROUTING-GROUP-REFS/ROUTING-GROUP-REF"):
2590
+ group.addRoutingGroupRef(ref)
2591
+
2592
+ def getRequestResponseDelay(self, element: ET.Element, key: str) -> RequestResponseDelay:
2593
+ delay = None
2594
+ child_element = self.find(element, key)
2595
+ if child_element is not None:
2596
+ delay = RequestResponseDelay()
2597
+ delay.setMaxValue(self.getChildElementOptionalTimeValue(child_element, "MAX-VALUE")) \
2598
+ .setMinValue(self.getChildElementOptionalTimeValue(child_element, "MIN-VALUE"))
2599
+ return delay
2600
+
2601
+ def getInitialSdDelayConfig(self, element: ET.Element, key: str) -> InitialSdDelayConfig:
2602
+ config = None
2603
+ child_element = self.find(element, key)
2604
+ if child_element is not None:
2605
+ config = InitialSdDelayConfig()
2606
+ config.setInitialDelayMaxValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE")) \
2607
+ .setInitialDelayMinValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE")) \
2608
+ .setInitialRepetitionsBaseDelay(self.getChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY")) \
2609
+ .setInitialRepetitionsMax(self.getChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX"))
2610
+ return config
2611
+
2612
+ def getSdClientConfig(self, element: ET.Element, key: str) -> SdClientConfig:
2613
+ config = None
2614
+ child_element = self.find(element, key)
2615
+ if child_element is not None:
2616
+ config = SdClientConfig()
2617
+ config.setClientServiceMajorVersion(self.getChildElementOptionalPositiveInteger(child_element, "CLIENT-SERVICE-MAJOR-VERSION")) \
2618
+ .setClientServiceMinorVersion(self.getChildElementOptionalPositiveInteger(child_element, "CLIENT-SERVICE-MINOR-VERSION")) \
2619
+ .setInitialFindBehavior(self.getInitialSdDelayConfig(child_element, "INITIAL-FIND-BEHAVIOR")) \
2620
+ .setRequestResponseDelay(self.getRequestResponseDelay(child_element, "REQUEST-RESPONSE-DELAY")) \
2621
+ .setTtl(self.getChildElementOptionalPositiveInteger(child_element, "TTL"))
2622
+ return config
2623
+
2624
+ def readConsumedEventGroup(self, element: ET.Element, group: ConsumedEventGroup):
2625
+ self.readIdentifiable(element, group)
2626
+ group.setApplicationEndpointRef(self.getChildElementOptionalRefType(element, "APPLICATION-ENDPOINT-REF")) \
2627
+ .setEventGroupIdentifier(self.getChildElementOptionalPositiveInteger(element, "EVENT-GROUP-IDENTIFIER"))
2628
+ self.readConsumedEventGroupRoutingGroupRefs(element, group)
2629
+ group.setSdClientConfig(self.getSdClientConfig(element, "SD-CLIENT-CONFIG"))
2630
+
2631
+ def readConsumedServiceInstanceConsumedEventGroups(self, element: ET.Element, instance: ConsumedServiceInstance):
2632
+ for child_element in self.findall(element, "CONSUMED-EVENT-GROUPS/*"):
2633
+ tag_name = self.getTagName(child_element)
2634
+ if tag_name == "CONSUMED-EVENT-GROUP":
2635
+ group = instance.createConsumedEventGroup(self.getShortName(child_element))
2636
+ self.readConsumedEventGroup(child_element, group)
2637
+ else:
2638
+ self.notImplemented("Unsupported ConsumedEventGroups <%s>" % tag_name)
2639
+
2640
+ def readConsumedServiceInstance(self, element: ET.Element, instance: ConsumedServiceInstance):
2641
+ self.readIdentifiable(element, instance)
2642
+ self.readConsumedServiceInstanceConsumedEventGroups(element, instance)
2643
+ instance.setProvidedServiceInstanceRef(self.getChildElementOptionalRefType(element, "PROVIDED-SERVICE-INSTANCE-REF"))
2644
+ instance.setSdClientConfig(self.getSdClientConfig(element, "SD-CLIENT-CONFIG"))
2645
+
2646
+ def readSocketAddressApplicationEndpointConsumedServiceInstances(self, element: ET.Element, end_point: ApplicationEndpoint):
2647
+ for child_element in self.findall(element, "CONSUMED-SERVICE-INSTANCES/*"):
2648
+ tag_name = self.getTagName(child_element)
2649
+ if tag_name == "CONSUMED-SERVICE-INSTANCE":
2650
+ instance = end_point.createConsumedServiceInstance(self.getShortName(child_element))
2651
+ self.readConsumedServiceInstance(child_element, instance)
2652
+ else:
2653
+ self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % tag_name)
2654
+
2655
+ def getInitialSdDelayConfig(self, element: ET.Element, key: str) -> InitialSdDelayConfig:
2656
+ config = None
2657
+ child_element = self.find(element, key)
2658
+ if child_element is not None:
2659
+ config = InitialSdDelayConfig()
2660
+ config.setInitialDelayMaxValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE")) \
2661
+ .setInitialDelayMinValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE")) \
2662
+ .setInitialRepetitionsBaseDelay(self.getChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY")) \
2663
+ .setInitialRepetitionsMax(self.getChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX"))
2664
+ return config
2665
+
2666
+ def getSdServerConfig(self, element: ET.Element, key: str) -> SdServerConfig:
2667
+ config = None
2668
+ child_element = self.find(element, key)
2669
+ if child_element is not None:
2670
+ config = SdServerConfig()
2671
+ config.setInitialOfferBehavior(self.getInitialSdDelayConfig(child_element, "INITIAL-OFFER-BEHAVIOR")) \
2672
+ .setOfferCyclicDelay(self.getChildElementOptionalTimeValue(child_element, "OFFER-CYCLIC-DELAY")) \
2673
+ .setRequestResponseDelay(self.getRequestResponseDelay(child_element, "REQUEST-RESPONSE-DELAY")) \
2674
+ .setServerServiceMajorVersion(self.getChildElementOptionalPositiveInteger(child_element, "SERVER-SERVICE-MAJOR-VERSION")) \
2675
+ .setServerServiceMinorVersion(self.getChildElementOptionalPositiveInteger(child_element, "SERVER-SERVICE-MINOR-VERSION")) \
2676
+ .setTtl(self.getChildElementOptionalPositiveInteger(child_element, "TTL"))
2677
+ return config
2678
+
2679
+ def readEventHandler(self, element: ET.Element, handler: EventHandler):
2680
+ self.readIdentifiable(element, handler)
2681
+ handler.setApplicationEndpointRef(self.getChildElementOptionalRefType(element, "APPLICATION-ENDPOINT-REF"))
2682
+ for ref in self.getChildElementRefTypeList(element, "CONSUMED-EVENT-GROUP-REFS/CONSUMED-EVENT-GROUP-REF"):
2683
+ handler.addConsumedEventGroupRef(ref)
2684
+ handler.setMulticastThreshold(self.getChildElementOptionalPositiveInteger(element, "MULTICAST-THRESHOLD"))
2685
+ for ref in self.getChildElementRefTypeList(element, "ROUTING-GROUP-REFS/ROUTING-GROUP-REF"):
2686
+ handler.addRoutingGroupRef(ref)
2687
+ handler.setSdServerConfig(self.getSdServerConfig(element, "SD-SERVER-CONFIG")) \
2688
+
2689
+ def readProvidedServiceInstanceEventHandlers(self, element: ET.Element, instance: ProvidedServiceInstance):
2690
+ for child_element in self.findall(element, "EVENT-HANDLERS/*"):
2691
+ tag_name = self.getTagName(child_element)
2692
+ if tag_name == "EVENT-HANDLER":
2693
+ handler = instance.createEventHandler(self.getShortName(child_element))
2694
+ self.readEventHandler(child_element, handler)
2695
+ else:
2696
+ self.notImplemented("Unsupported Event Handler <%s>" % tag_name)
2697
+
2698
+ def readProvidedServiceInstance(self, element: ET.Element, instance: ProvidedServiceInstance):
2699
+ self.readIdentifiable(element, instance)
2700
+ self.readProvidedServiceInstanceEventHandlers(element, instance)
2701
+ instance.setInstanceIdentifier(self.getChildElementOptionalPositiveInteger(element, "INSTANCE-IDENTIFIER")) \
2702
+ .setSdServerConfig(self.getSdServerConfig(element, "SD-SERVER-CONFIG")) \
2703
+ .setServiceIdentifier(self.getChildElementOptionalPositiveInteger(element, "SERVICE-IDENTIFIER"))
2704
+
2705
+ def readSocketAddressApplicationEndpointProvidedServiceInstance(self, element: ET.Element, end_point: ApplicationEndpoint):
2706
+ for child_element in self.findall(element, "PROVIDED-SERVICE-INSTANCES/*"):
2707
+ tag_name = self.getTagName(child_element)
2708
+ if tag_name == "PROVIDED-SERVICE-INSTANCE":
2709
+ instance = end_point.createProvidedServiceInstance(self.getShortName(child_element))
2710
+ self.readProvidedServiceInstance(child_element, instance)
2711
+ else:
2712
+ self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % tag_name)
2713
+
2714
+ def readSocketAddressApplicationEndpoint(self, element: ET.Element, address: SocketAddress):
2715
+ child_element = self.find(element, "APPLICATION-ENDPOINT")
2716
+ if child_element is not None:
2717
+ end_point = address.createApplicationEndpoint(self.getShortName(child_element))
2718
+ self.readSocketAddressApplicationEndpointConsumedServiceInstances(child_element, end_point)
2719
+ end_point.setNetworkEndpointRef(self.getChildElementOptionalRefType(child_element, "NETWORK-ENDPOINT-REF")) \
2720
+ .setPriority(self.getChildElementOptionalPositiveInteger(child_element, "PRIORITY"))
2721
+ self.readSocketAddressApplicationEndpointProvidedServiceInstance(child_element, end_point)
2722
+ end_point.setTpConfiguration(self.getTransportProtocolConfiguration(child_element, "TP-CONFIGURATION"))
2723
+
2724
+ def readSocketAddressMulticastConnectorRefs(self, element: ET.Element, address: SocketAddress):
2725
+ for ref in self.getChildElementRefTypeList(element, "MULTICAST-CONNECTOR-REFS/MULTICAST-CONNECTOR-REF"):
2726
+ address.addMulticastConnectorRef(ref)
2727
+
2728
+
2563
2729
  def readSocketAddress(self, element: ET.Element, address: SocketAddress):
2564
- self.readSocketConnectionBundleConnections(element, address)
2565
- address.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF"))
2730
+ self.readIdentifiable(element, address)
2731
+ self.readSocketAddressApplicationEndpoint(element, address)
2732
+ self.readSocketAddressMulticastConnectorRefs(element, address)
2733
+ address.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF")) \
2734
+ .setPortAddress(self.getChildElementOptionalPositiveInteger(element, "PORT-ADDRESS"))
2566
2735
 
2567
2736
  def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
2568
2737
  for child_element in self.findall(element, "SOCKET-ADDRESSS/*"):
2569
2738
  tag_name = self.getTagName(child_element)
2570
2739
  if tag_name == "SOCKET-ADDRESS":
2571
- bundle = config.createSocketAddress(self.getShortName(child_element))
2572
- self.readSocketAddress(child_element, bundle)
2740
+ address = config.createSocketAddress(self.getShortName(child_element))
2741
+ self.readSocketAddress(child_element, address)
2573
2742
  else:
2574
- self.notImplemented("Unsupported Connection Bundle <%s>" % tag_name)
2743
+ self.notImplemented("Unsupported Socket Address <%s>" % tag_name)
2575
2744
 
2576
2745
  def getSoAdConfig(self, element: ET.Element, key: str) -> SoAdConfig:
2577
2746
  child_element = self.find(element, key)
@@ -2581,12 +2750,19 @@ class ARXMLParser(AbstractARXMLParser):
2581
2750
  self.readSoAdConfigConnectionBundles(child_element, config)
2582
2751
  self.readSoAdConfigSocketAddresses(child_element, config)
2583
2752
  return config
2753
+
2754
+ def readEthernetPhysicalChannelVlan(self, element: ET.Element, channel: EthernetPhysicalChannel):
2755
+ child_element = self.find(element, "VLAN")
2756
+ if child_element is not None:
2757
+ vlan = channel.createVlanConfig(self.getShortName(child_element))
2758
+ vlan.setVlanIdentifier(self.getChildElementOptionalPositiveInteger(child_element, "VLAN-IDENTIFIER"))
2584
2759
 
2585
2760
  def readEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
2586
2761
  self.readIdentifiable(element, channel)
2587
2762
  self.readPhysicalChannel(element, channel)
2588
2763
  self.readEthernetPhysicalChannelNetworkEndPoints(element, channel)
2589
2764
  channel.setSoAdConfig(self.getSoAdConfig(element, "SO-AD-CONFIG"))
2765
+ self.readEthernetPhysicalChannelVlan(element, channel)
2590
2766
 
2591
2767
  def readCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
2592
2768
  for child_element in self.findall(element, "PHYSICAL-CHANNELS/*"):
@@ -2609,38 +2785,110 @@ class ARXMLParser(AbstractARXMLParser):
2609
2785
  self.readCommunicationClusterPhysicalChannels(element, cluster)
2610
2786
  cluster.setProtocolName(self.getChildElementOptionalLiteral(element, "PROTOCOL-NAME")) \
2611
2787
  .setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
2612
-
2788
+
2789
+ def getCanClusterBusOffRecovery(self, element: ET.Element, key: str) -> CanClusterBusOffRecovery:
2790
+ recovery = None
2791
+ child_element = self.find(element, key)
2792
+ if child_element is not None:
2793
+ recovery = CanClusterBusOffRecovery()
2794
+ recovery.setBorCounterL1ToL2(self.getChildElementOptionalPositiveInteger(child_element, "BOR-COUNTER-L-1-TO-L-2")) \
2795
+ .setBorTimeL1(self.getChildElementOptionalTimeValue(child_element, "BOR-TIME-L-1")) \
2796
+ .setBorTimeL2(self.getChildElementOptionalTimeValue(child_element, "BOR-TIME-L-2"))
2797
+ return recovery
2798
+
2613
2799
  def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
2614
- cluster.setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE")) \
2800
+ cluster.setBusOffRecovery(self.getCanClusterBusOffRecovery(element, "BUS-OFF-RECOVERY")) \
2801
+ .setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE")) \
2615
2802
  .setSpeed(self.getChildElementOptionalNumericalValue(element, "SPEED"))
2616
2803
 
2617
- def readLinCluster(self, element: ET.Element, parent: ARPackage):
2618
- short_name = self.getShortName(element)
2619
- self.logger.debug("readLinCluster %s" % short_name)
2620
- cluster = parent.createLinCluster(short_name)
2804
+ def readLinCluster(self, element: ET.Element, cluster: LinCluster):
2805
+ self.logger.debug("Read LinCluster <%s>" % cluster.getShortName())
2621
2806
  self.readIdentifiable(element, cluster)
2622
2807
  child_element = self.find(element, "LIN-CLUSTER-VARIANTS/LIN-CLUSTER-CONDITIONAL")
2623
2808
  if child_element is not None:
2624
2809
  self.readCommunicationCluster(child_element, cluster)
2625
2810
 
2626
- def readCanCluster(self, element: ET.Element, parent: ARPackage):
2627
- short_name = self.getShortName(element)
2628
- self.logger.debug("readCanCluster %s" % short_name)
2629
- cluster = parent.createCanCluster(short_name)
2811
+ def readCanCluster(self, element: ET.Element, cluster: CanCluster):
2812
+ self.logger.debug("Read CanCluster <%s>" % cluster.getShortName())
2630
2813
  self.readIdentifiable(element, cluster)
2631
2814
  child_element = self.find(element, "CAN-CLUSTER-VARIANTS/CAN-CLUSTER-CONDITIONAL")
2632
2815
  if child_element is not None:
2633
2816
  self.readCommunicationCluster(child_element, cluster)
2634
2817
  self.readAbstractCanCluster(child_element, cluster)
2635
2818
 
2636
- def readEthernetCluster(self, element: ET.Element, parent: ARPackage):
2637
- short_name = self.getShortName(element)
2638
- self.logger.debug("Read EthernetCluster %s" % short_name)
2639
- 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())
2640
2834
  self.readIdentifiable(element, cluster)
2641
2835
  child_element = self.find(element, "ETHERNET-CLUSTER-VARIANTS/ETHERNET-CLUSTER-CONDITIONAL")
2642
2836
  if child_element is not None:
2643
2837
  self.readCommunicationCluster(child_element, cluster)
2838
+ self.readEthernetClusterMacMulticastGroups(child_element, cluster)
2839
+
2840
+ def readDiagnosticConnectionFunctionalRequestRefs(self, element: ET.Element, connection: DiagnosticConnection):
2841
+ for ref in self.getChildElementRefTypeList(element, "FUNCTIONAL-REQUEST-REFS/FUNCTIONAL-REQUEST-REF"):
2842
+ connection.addFunctionalRequestRef(ref)
2843
+
2844
+ def readDiagnosticConnection(self, element: ET.Element, connection: DiagnosticConnection):
2845
+ self.logger.debug("Read DiagnosticConnection <%s>" % connection.getShortName())
2846
+ self.readIdentifiable(element, connection)
2847
+ self.readDiagnosticConnectionFunctionalRequestRefs(element, connection)
2848
+ connection.setPhysicalRequestRef(self.getChildElementOptionalRefType(element, "PHYSICAL-REQUEST-REF")) \
2849
+ .setResponseOnEventRef(self.getChildElementOptionalRefType(element, "RESPONSE-REF"))
2850
+
2851
+ def readDiagnosticServiceTableDiagnosticConnectionRefs(self, element: ET.Element, table: DiagnosticServiceTable):
2852
+ for ref in self.getChildElementRefTypeList(element, "DIAGNOSTIC-CONNECTIONS/DIAGNOSTIC-CONNECTION-REF-CONDITIONAL/DIAGNOSTIC-CONNECTION-REF"):
2853
+ table.addDiagnosticConnectionRef(ref)
2854
+
2855
+ def readDiagnosticServiceTable(self, element: ET.Element, table: DiagnosticServiceTable):
2856
+ self.logger.debug("Read DiagnosticServiceTable <%s>" % table.getShortName())
2857
+ self.readIdentifiable(element, table)
2858
+ self.readDiagnosticServiceTableDiagnosticConnectionRefs(element, table)
2859
+ table.setEcuInstanceRef(self.getChildElementOptionalRefType(element, "ECU-INSTANCE-REF"))
2860
+
2861
+ def readMultiplexedIPdu(self, element: ET.Element, i_pdu: MultiplexedIPdu):
2862
+ self.logger.debug("Read MultiplexedIPdu <%s>" % i_pdu.getShortName())
2863
+ self.readIdentifiable(element, i_pdu)
2864
+
2865
+ def readUserDefinedIPdu(self, element: ET.Element, i_pdu: UserDefinedIPdu):
2866
+ self.logger.debug("Read UserDefinedIPdu <%s>" % i_pdu.getShortName())
2867
+ self.readIdentifiable(element, i_pdu)
2868
+
2869
+ def readUserDefinedPdu(self, element: ET.Element, pdu: UserDefinedPdu):
2870
+ self.logger.debug("Read UserDefinedPdu <%s>" % pdu.getShortName())
2871
+ self.readIdentifiable(element, pdu)
2872
+
2873
+ def readGeneralPurposePdu(self, element: ET.Element, pdu: GeneralPurposePdu):
2874
+ self.logger.debug("Read GeneralPurposePdu <%s>" % pdu.getShortName())
2875
+ self.readIdentifiable(element, pdu)
2876
+
2877
+ def readGeneralPurposeIPdu(self, element: ET.Element, i_pdu: GeneralPurposeIPdu):
2878
+ self.logger.debug("Read GeneralPurposeIPdu <%s>" % i_pdu.getShortName())
2879
+ self.readIdentifiable(element, i_pdu)
2880
+
2881
+ def readSecureCommunicationPropsSet(self, element: ET.Element, props_set: SecureCommunicationPropsSet):
2882
+ self.logger.debug("Read SecureCommunicationPropsSet <%s>" % props_set.getShortName())
2883
+ self.readIdentifiable(element, props_set)
2884
+
2885
+ def readSoAdRoutingGroup(self, element: ET.Element, group: SoAdRoutingGroup):
2886
+ self.logger.debug("Read SoAdRoutingGroup <%s>" % group.getShortName())
2887
+ self.readIdentifiable(element, group)
2888
+
2889
+ def readDoIpTpConfig(self, element: ET.Element, config: DoIpTpConfig):
2890
+ self.logger.debug("Read DoIpTpConfig <%s>" % config.getShortName())
2891
+ self.readIdentifiable(element, config)
2644
2892
 
2645
2893
  def readPduToFrameMappings(self, element: ET.Element, parent: Frame):
2646
2894
  for child_element in self.findall(element, "PDU-TO-FRAME-MAPPINGS/PDU-TO-FRAME-MAPPING"):
@@ -2657,45 +2905,34 @@ class ARXMLParser(AbstractARXMLParser):
2657
2905
  frame.frameLength = self.getChildElementOptionalNumericalValue(element, "FRAME-LENGTH")
2658
2906
  self.readPduToFrameMappings(element, frame)
2659
2907
 
2660
- def readLinUnconditionalFrame(self, element: ET.Element, parent: ARPackage):
2661
- short_name = self.getShortName(element)
2662
- self.logger.debug("LinUnconditionalFrame %s" % short_name)
2663
- frame = parent.createLinUnconditionalFrame(short_name)
2908
+ def readLinUnconditionalFrame(self, element: ET.Element, frame: LinUnconditionalFrame):
2909
+ self.logger.debug("Read LinUnconditionalFrame <%s>" % frame.getShortName())
2664
2910
  self.readFrame(element, frame)
2665
2911
 
2666
- def readNmPdu(self, element: ET.Element, parent: ARPackage):
2667
- short_name = self.getShortName(element)
2668
- self.logger.debug("readNmPdu %s" % short_name)
2669
- pdu = parent.createNmPdu(short_name)
2670
- self.readIdentifiable(element, pdu)
2912
+ def readNmPdu(self, element: ET.Element, pdu: NmPdu):
2913
+ self.logger.debug("Read NmPdu <%s>" % pdu.getShortName())
2671
2914
  self.readIPdu(element, pdu)
2672
2915
 
2673
- def readNPdu(self, element: ET.Element, parent: ARPackage):
2674
- short_name = self.getShortName(element)
2675
- self.logger.debug("readNPdu %s" % short_name)
2676
- pdu = parent.createNPdu(short_name)
2677
- self.readIdentifiable(element, pdu)
2916
+ def readNPdu(self, element: ET.Element, pdu: NPdu):
2917
+ self.logger.debug("Read NPdu <%s>" % pdu.getShortName())
2678
2918
  self.readIPdu(element, pdu)
2679
2919
 
2680
2920
  def readIPdu(self, element: ET.Element, pdu: IPdu):
2921
+ self.readIdentifiable(element, pdu)
2681
2922
  pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH"))
2682
2923
 
2683
- def readDcmIPdu(self, element: ET.Element, parent: ARPackage):
2684
- short_name = self.getShortName(element)
2685
- self.logger.debug("readDcmIPdu %s" % short_name)
2686
- pdu = parent.createDcmIPdu(short_name)
2687
- self.readIdentifiable(element, pdu)
2688
- self.readIPdu(element, pdu)
2689
- pdu.setDiagPduType(self.getChildElementOptionalLiteral(element, "DIAG-PDU-TYPE"))
2924
+ def readDcmIPdu(self, element: ET.Element, i_pdu: DcmIPdu):
2925
+ self.logger.debug("Read DcmIPdu <%s>" % i_pdu.getShortName())
2926
+ self.readIPdu(element, i_pdu)
2927
+ i_pdu.setDiagPduType(self.getChildElementOptionalLiteral(element, "DIAG-PDU-TYPE"))
2690
2928
 
2691
- def readSecuredIPdu(self, element: ET.Element, parent: ARPackage):
2692
- short_name = self.getShortName(element)
2693
- self.logger.debug("readSecuredIPdu %s" % short_name)
2694
- pdu = parent.createSecuredIPdu(short_name)
2695
- self.readIdentifiable(element, pdu)
2696
- self.readIPdu(element, pdu)
2929
+ def readSecuredIPdu(self, element: ET.Element, i_pdu: SecuredIPdu):
2930
+ self.logger.debug("Read SecuredIPdu <%s>" % i_pdu.getShortName())
2931
+ self.readIPdu(element, i_pdu)
2697
2932
 
2698
2933
  def readNmNode(self, element: ET.Element, nm_node: NmNode):
2934
+ self.readIdentifiable(element, nm_node)
2935
+
2699
2936
  nm_node.setControllerRef(self.getChildElementOptionalRefType(element, "CONTROLLER-REF")) \
2700
2937
  .setNmIfEcuRef(self.getChildElementOptionalRefType(element, "NM-IF-ECU-REF")) \
2701
2938
  .setNmNodeId(self.getChildElementOptionalNumericalValue(element, "NM-NODE-ID"))
@@ -2704,25 +2941,32 @@ class ARXMLParser(AbstractARXMLParser):
2704
2941
  for ref in self.getChildElementRefTypeList(element, "TX-NM-PDU-REFS/TX-NM-PDU-REF"):
2705
2942
  nm_node.addTxNmPduRefs(ref)
2706
2943
 
2707
- def readCanNmNode(self, element: ET.Element, parent: NmCluster):
2708
- short_name = self.getShortName(element)
2709
- self.logger.debug("readCanNmNode %s" % short_name)
2710
- nm_node = parent.createCanNmNode(short_name) # type: CanNmNode
2711
- self.readIdentifiable(element, nm_node)
2944
+ def readCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
2945
+ self.logger.debug("Read CanNmNode %s" % nm_node.getShortName())
2946
+
2712
2947
  self.readNmNode(element, nm_node)
2713
2948
 
2714
2949
  nm_node.setNmMsgCycleOffset(self.getChildElementOptionalFloatValue(element, "NM-MSG-CYCLE-OFFSET")) \
2715
2950
  .setNmMsgReducedTime(self.getChildElementOptionalFloatValue(element, "NM-MSG-REDUCED-TIME")) \
2716
2951
  .setNmRangeConfig(self.getChildElementRxIdentifierRange(element, "NM-RANGE-CONFIG"))
2952
+
2953
+ def readUdpNmNode(self, element: ET.Element, nm_node: UdpNmNode):
2954
+ self.logger.debug("Read UdpNmNode %s" % nm_node.getShortName())
2955
+
2956
+ self.readNmNode(element, nm_node)
2717
2957
 
2718
2958
  def readNmClusterNmNodes(self, element: ET.Element, parent: NmCluster):
2719
2959
  self.logger.debug("readNmConfigNmNodes %s" % parent.getShortName())
2720
2960
  for child_element in self.findall(element, "NM-NODES/*"):
2721
2961
  tag_name = self.getTagName(child_element)
2722
2962
  if tag_name == "CAN-NM-NODE":
2723
- self.readCanNmNode(child_element, parent)
2963
+ nm_node = parent.createCanNmNode(self.getShortName(child_element))
2964
+ self.readCanNmNode(child_element, nm_node)
2965
+ elif tag_name == "UDP-NM-NODE":
2966
+ nm_node = parent.readUdpNmNode(self.getShortName(child_element))
2967
+ self.readUdpNmNode(child_element, nm_node)
2724
2968
  else:
2725
- self._raiseError("Unsupported Nm Node <%s>" % tag_name)
2969
+ self.raiseError("Unsupported Nm Node <%s>" % tag_name)
2726
2970
 
2727
2971
  def getCanNmClusterCoupling(self, element: ET.Element) -> CanNmClusterCoupling:
2728
2972
  coupling = CanNmClusterCoupling()
@@ -2734,6 +2978,10 @@ class ARXMLParser(AbstractARXMLParser):
2734
2978
  .setNmImmediateRestartEnabled(self.getChildElementOptionalBooleanValue(element, "NM-IMMEDIATE-RESTART-ENABLED"))
2735
2979
 
2736
2980
  return coupling
2981
+
2982
+ def getUdpNmClusterCoupling(self, element: ET.Element) -> UdpNmClusterCoupling:
2983
+ coupling = UdpNmClusterCoupling()
2984
+ return coupling
2737
2985
 
2738
2986
  def readNmConfigNmClusterCouplings(self, element: ET.Element, nm_config: NmConfig):
2739
2987
  self.logger.debug("readNmClusterNmClusterCouplings %s" % nm_config.getShortName())
@@ -2741,10 +2989,13 @@ class ARXMLParser(AbstractARXMLParser):
2741
2989
  tag_name = self.getTagName(child_element)
2742
2990
  if tag_name == "CAN-NM-CLUSTER-COUPLING":
2743
2991
  nm_config.addNmClusterCouplings(self.getCanNmClusterCoupling(child_element))
2992
+ elif tag_name == "UDP-NM-CLUSTER-COUPLING":
2993
+ nm_config.addNmClusterCouplings(self.getUdpNmClusterCoupling(child_element))
2744
2994
  else:
2745
- self._raiseError("Unsupported Nm Node <%s>" % tag_name)
2995
+ self.notImplemented("Unsupported Nm Node <%s>" % tag_name)
2746
2996
 
2747
2997
  def readNmCluster(self, element: ET.Element, cluster: NmCluster):
2998
+ self.readIdentifiable(element, cluster)
2748
2999
  cluster.setCommunicationClusterRef(self.getChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF")) \
2749
3000
  .setNmChannelId(self.getChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID")) \
2750
3001
  .setNmChannelSleepMaster(self.getChildElementOptionalBooleanValue(element, "NM-CHANNEL-SLEEP-MASTER"))
@@ -2755,7 +3006,6 @@ class ARXMLParser(AbstractARXMLParser):
2755
3006
  short_name = self.getShortName(element)
2756
3007
  self.logger.debug("readCanNmCluster %s" % short_name)
2757
3008
  cluster = parent.createCanNmCluster(short_name) # type: CanNmCluster
2758
- self.readIdentifiable(element, cluster)
2759
3009
  self.readNmCluster(element, cluster)
2760
3010
 
2761
3011
  cluster.setNmBusloadReductionActive(self.getChildElementOptionalBooleanValue(element, "NM-BUSLOAD-REDUCTION-ACTIVE")) \
@@ -2773,41 +3023,196 @@ class ARXMLParser(AbstractARXMLParser):
2773
3023
  .setNmUserDataLength(self. getChildElementOptionalNumericalValue(element, "NM-USER-DATA-LENGTH")) \
2774
3024
  .setNmWaitBusSleepTime(self.getChildElementOptionalFloatValue(element, "NM-WAIT-BUS-SLEEP-TIME"))
2775
3025
 
3026
+ def readUdpNmCluster(self, element: ET.Element, parent: NmConfig):
3027
+ short_name = self.getShortName(element)
3028
+ self.logger.debug("readCanNmCluster %s" % short_name)
3029
+ cluster = parent.createUdpNmCluster(short_name) # type: CanNmCluster
3030
+ self.readNmCluster(element, cluster)
3031
+
2776
3032
  def readNmConfigNmClusters(self, element: ET.Element, parent: NmConfig):
2777
3033
  for child_element in self.findall(element, "NM-CLUSTERS/*"):
2778
3034
  tag_name = self.getTagName(child_element)
2779
3035
  if tag_name == "CAN-NM-CLUSTER":
2780
3036
  self.readCanNmCluster(child_element, parent)
3037
+ elif tag_name == "UDP-NM-CLUSTER":
3038
+ self.readUdpNmCluster(child_element, parent)
2781
3039
  else:
2782
- self._raiseError("Unsupported Nm Cluster <%s>" % tag_name)
3040
+ self.raiseError("Unsupported Nm Cluster <%s>" % tag_name)
2783
3041
 
2784
- def readNmConfig(self, element: ET.Element, parent: ARPackage):
2785
- short_name = self.getShortName(element)
2786
- self.logger.debug("NmConfig %s" % short_name)
2787
- config = parent.createNmConfig(short_name) # type: NmConfig
3042
+ def readNmConfig(self, element: ET.Element, config: NmConfig):
3043
+ self.logger.debug("Read NmConfig <%s>" % config.getShortName())
2788
3044
  self.readIdentifiable(element, config)
2789
3045
  self.readNmConfigNmClusters(element, config)
2790
3046
  self.readNmConfigNmClusterCouplings(element, config)
2791
3047
 
2792
- def readCanTpConfig(self, element: ET.Element, parent: ARPackage):
2793
- short_name = self.getShortName(element)
2794
- self.logger.debug("read CanTpConfig %s" % short_name)
2795
- pdu = parent.createCanTpConfig(short_name)
2796
- self.readIdentifiable(element, pdu)
3048
+ def readCanTpConfig(self, element: ET.Element, config: CanTpConfig):
3049
+ self.logger.debug("Read CanTpConfig <%s>" % config.getShortName())
3050
+ self.readIdentifiable(element, config)
2797
3051
 
2798
- def readCanFrame(self, element: ET.Element, parent: ARPackage):
2799
- short_name = self.getShortName(element)
2800
- self.logger.debug("read CanFrame %s" % short_name)
2801
- 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())
2802
3058
  self.readFrame(element, frame)
2803
3059
 
3060
+ def readCommunicationController(self, element: ET.Element, controller: CommunicationController):
3061
+ controller.setWakeUpByControllerSupported(self.getChildElementOptionalBooleanValue(element, "WAKE-UP-BY-CONTROLLER-SUPPORTED"))
3062
+
3063
+ def getCanControllerFdConfiguration(self, element: ET.Element, key: str) -> CanControllerFdConfiguration:
3064
+ configuration = None
3065
+ child_element = self.find(element, key)
3066
+ if child_element is not None:
3067
+ configuration = CanControllerFdConfiguration()
3068
+ #TODO: need to implemented
3069
+ return configuration
3070
+
3071
+ def getCanControllerFdConfigurationRequirements(self, element: ET.Element, key: str) -> CanControllerFdConfigurationRequirements:
3072
+ requirements = None
3073
+ child_element = self.find(element, key)
3074
+ if child_element is not None:
3075
+ requirements = CanControllerFdConfigurationRequirements()
3076
+ requirements.setMaxNumberOfTimeQuantaPerBit(self.getChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT")) \
3077
+ .setMaxSamplePoint(self.getChildElementOptionalFloatValue(child_element, "MAX-SAMPLE-POINT")) \
3078
+ .setMaxSyncJumpWidth(self.getChildElementOptionalFloatValue(child_element, "MAX-SYNC-JUMP-WIDTH")) \
3079
+ .setMaxTrcvDelayCompensationOffset(self.getChildElementOptionalTimeValue(child_element, "MAX-TRCV-DELAY-COMPENSATION-OFFSET")) \
3080
+ .setMinNumberOfTimeQuantaPerBit(self.getChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT")) \
3081
+ .setMinSamplePoint(self.getChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT")) \
3082
+ .setMinSyncJumpWidth(self.getChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH")) \
3083
+ .setMinTrcvDelayCompensationOffset(self.getChildElementOptionalTimeValue(child_element, "MIN-TRCV-DELAY-COMPENSATION-OFFSET")) \
3084
+ .setTxBitRateSwitch(self.getChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH"))
3085
+ return requirements
3086
+
3087
+ def readAbstractCanCommunicationControllerAttributes(self, element: ET.Element, attributes: AbstractCanCommunicationControllerAttributes):
3088
+ attributes.setCanControllerFdAttributes(self.getCanControllerFdConfiguration(element, "CAN-CONTROLLER-FD-CONFIGURATION")) \
3089
+ .setCanControllerFdRequirements(self.getCanControllerFdConfigurationRequirements(element, "CAN-CONTROLLER-FD-REQUIREMENTS"))
3090
+
3091
+ def readCanControllerConfigurationRequirements(self, element: ET.Element, requirements: CanControllerConfigurationRequirements):
3092
+ self.readAbstractCanCommunicationControllerAttributes(element, requirements)
3093
+ requirements.setMaxNumberOfTimeQuantaPerBit(self.getChildElementOptionalIntegerValue(element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT")) \
3094
+ .setMaxSamplePoint(self.getChildElementOptionalFloatValue(element, "MAX-SAMPLE-POINT")) \
3095
+ .setMaxSyncJumpWidth(self.getChildElementOptionalFloatValue(element, "MAX-SYNC-JUMP-WIDTH")) \
3096
+ .setMinNumberOfTimeQuantaPerBit(self.getChildElementOptionalIntegerValue(element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT")) \
3097
+ .setMinSamplePoint(self.getChildElementOptionalFloatValue(element, "MIN-SAMPLE-POINT")) \
3098
+ .setMinSyncJumpWidth(self.getChildElementOptionalFloatValue(element, "MIN-SYNC-JUMP-WIDTH"))
3099
+
3100
+ def readAbstractCanCommunicationControllerCanControllerAttributes(self, element: ET.SubElement, controller: AbstractCanCommunicationController):
3101
+ for child_element in self.findall(element, "CAN-CONTROLLER-ATTRIBUTES/*"):
3102
+ tag_name = self.getTagName(child_element)
3103
+ if tag_name == "CAN-CONTROLLER-CONFIGURATION-REQUIREMENTS":
3104
+ requirements = CanControllerConfigurationRequirements()
3105
+ self.readCanControllerConfigurationRequirements(child_element, requirements)
3106
+ controller.setCanControllerAttributes(requirements)
3107
+ else:
3108
+ self.notImplemented("Unsupported CanControllerAttributes <%s>" % tag_name)
3109
+
3110
+ def readAbstractCanCommunicationController(self, element: ET.Element, controller: AbstractCanCommunicationController):
3111
+ self.readCommunicationController(element, controller)
3112
+ self.readAbstractCanCommunicationControllerCanControllerAttributes(element, controller)
3113
+
2804
3114
  def readCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
2805
3115
  self.logger.debug("Read CanCommunicationController %s" % controller.getShortName())
2806
3116
  self.readIdentifiable(element, controller)
3117
+ child_element = self.find(element, "CAN-COMMUNICATION-CONTROLLER-VARIANTS/CAN-COMMUNICATION-CONTROLLER-CONDITIONAL")
3118
+ if child_element is not None:
3119
+ self.readAbstractCanCommunicationController(child_element, controller)
3120
+
3121
+ def readCouplingPortSchedulerCouplingPortStructuralElement(self, element: ET.Element, item: CouplingPortStructuralElement):
3122
+ self.readIdentifiable(element, item)
3123
+
3124
+ def readCouplingPortFifo(self, element: ET.Element, fifo: CouplingPortFifo):
3125
+ self.readCouplingPortSchedulerCouplingPortStructuralElement(element, fifo)
3126
+
3127
+ def readCouplingPortScheduler(self, element: ET.Element, scheduler: CouplingPortScheduler):
3128
+ self.readCouplingPortSchedulerCouplingPortStructuralElement(element, scheduler)
3129
+ scheduler.setPortScheduler(self.getChildElementOptionalLiteral(element, "PORT-SCHEDULER"))
3130
+
3131
+ def readCouplingPortDetailsCouplingPortStructuralElements(self, item: ET.Element, details: CouplingPortDetails):
3132
+ for child_element in self.findall(item, "COUPLING-PORT-STRUCTURAL-ELEMENTS/*"):
3133
+ tag_name = self.getTagName(child_element)
3134
+ if tag_name == "COUPLING-PORT-FIFO":
3135
+ item = details.createCouplingPortFifo(self.getShortName(child_element))
3136
+ self.readCouplingPortFifo(child_element, item)
3137
+ elif tag_name == "COUPLING-PORT-SCHEDULER":
3138
+ item = details.createCouplingPortScheduler(self.getShortName(child_element))
3139
+ self.readCouplingPortScheduler(child_element, item)
3140
+ else:
3141
+ self.notImplemented("Unsupported CouplingPortStructuralElement <%s>" % tag_name)
3142
+
3143
+ def readEthernetPriorityRegeneration(self, element: ET.Element, regeneration: EthernetPriorityRegeneration):
3144
+ regeneration.setIngressPriority(self.getChildElementOptionalPositiveInteger(element, "INGRESS-PRIORITY")) \
3145
+ .setRegeneratedPriority(self.getChildElementOptionalPositiveInteger(element, "REGENERATED-PRIORITY"))
3146
+
3147
+ def readCouplingPortDetailsEthernetPriorityRegenerations(self, element: ET.Element, details: CouplingPortDetails):
3148
+ for child_element in self.findall(element, "ETHERNET-PRIORITY-REGENERATIONS/*"):
3149
+ tag_name = self.getTagName(child_element)
3150
+ if tag_name == "ETHERNET-PRIORITY-REGENERATION":
3151
+ item = details.createEthernetPriorityRegeneration(self.getShortName(child_element))
3152
+ self.readEthernetPriorityRegeneration(child_element, item)
3153
+ else:
3154
+ self.notImplemented("Unsupported EthernetPriorityRegeneration <%s>" % tag_name)
3155
+
3156
+ def getCouplingPortDetails(self, element: ET.Element, key: str) -> CouplingPortDetails:
3157
+ details = None
3158
+ child_element = self.find(element, key)
3159
+ if child_element is not None:
3160
+ details = CouplingPortDetails()
3161
+ self.readCouplingPortDetailsCouplingPortStructuralElements(child_element, details)
3162
+ self.readCouplingPortDetailsEthernetPriorityRegenerations(child_element, details)
3163
+ details.setLastEgressSchedulerRef(self.getChildElementOptionalRefType(child_element, "LAST-EGRESS-SCHEDULER-REF"))
3164
+ return details
3165
+
3166
+ def readVlanMembership(self, element: ET.Element, membership: VlanMembership):
3167
+ membership.setSendActivity(self.getChildElementOptionalLiteral(element, "SEND-ACTIVITY")) \
3168
+ .setVlanRef(self.getChildElementOptionalRefType(element, "VLAN-REF"))
3169
+
3170
+ def readCouplingPortVlanMemberships(self, element: ET.Element, port: CouplingPort):
3171
+ for child_element in self.findall(element, "VLAN-MEMBERSHIPS/*"):
3172
+ tag_name = self.getTagName(child_element)
3173
+ if tag_name == "VLAN-MEMBERSHIP":
3174
+ membership = VlanMembership()
3175
+ self.readVlanMembership(child_element, membership)
3176
+ port.addVlanMembership(membership)
3177
+ else:
3178
+ self.notImplemented("Unsupported VlanMembership <%s>" % tag_name)
3179
+
3180
+ def readCouplingPort(self, element: ET.Element, port: CouplingPort):
3181
+ self.readIdentifiable(element, port)
3182
+ port.setCouplingPortDetails(self.getCouplingPortDetails(element, "COUPLING-PORT-DETAILS")) \
3183
+ .setMacAddressVlanAssignments(self.getChildElementOptionalLiteral(element, "MAC-LAYER-TYPE"))
3184
+ self.readCouplingPortVlanMemberships(element, port)
3185
+
3186
+ def readEthernetCommunicationControllerCouplingPorts(self, element: ET.Element, controller: EthernetCommunicationController):
3187
+ for child_element in self.findall(element, "COUPLING-PORTS/*"):
3188
+ tag_name = self.getTagName(child_element)
3189
+ if (tag_name == "COUPLING-PORT"):
3190
+ port = controller.createCouplingPort(self.getShortName(child_element))
3191
+ self.readCouplingPort(child_element, port)
3192
+ else:
3193
+ self.notImplemented("Unsupported Coupling Port <%s>" % tag_name)
2807
3194
 
2808
3195
  def readEthernetCommunicationController(self, element: ET.Element, controller: EthernetCommunicationController):
2809
- self.logger.debug("Read CanCommunicationController %s" % controller.getShortName())
3196
+ self.logger.debug("Read EthernetCommunicationController %s" % controller.getShortName())
3197
+ self.readIdentifiable(element, controller)
3198
+ child_element = self.find(element, "ETHERNET-COMMUNICATION-CONTROLLER-VARIANTS/ETHERNET-COMMUNICATION-CONTROLLER-CONDITIONAL")
3199
+ if child_element is not None:
3200
+ self.readCommunicationController(child_element, controller)
3201
+ self.readEthernetCommunicationControllerCouplingPorts(child_element, controller)
3202
+
3203
+ def readLinCommunicationController(self, element: ET.Element, controller: LinCommunicationController):
3204
+ self.readCommunicationController(element, controller)
3205
+ controller.setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
3206
+
3207
+ def readLinMaster(self, element: ET.Element, controller: LinMaster):
3208
+ self.logger.debug("Read LinMaster %s" % controller.getShortName())
2810
3209
  self.readIdentifiable(element, controller)
3210
+ child_element = self.find(element, "LIN-MASTER-VARIANTS/LIN-MASTER-CONDITIONAL")
3211
+ if child_element is not None:
3212
+ self.readLinCommunicationController(child_element, controller)
3213
+ controller.setTimeBase(self.getChildElementOptionalTimeValue(child_element, "TIME-BASE")) \
3214
+ .setTimeBaseJitter(self.getChildElementOptionalTimeValue(child_element, "TIME-BASE-JITTER"))
3215
+
2811
3216
 
2812
3217
  def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
2813
3218
  self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
@@ -2819,8 +3224,11 @@ class ARXMLParser(AbstractARXMLParser):
2819
3224
  elif tag_name == "ETHERNET-COMMUNICATION-CONTROLLER":
2820
3225
  controller = instance.createEthernetCommunicationController(self.getShortName(child_element))
2821
3226
  self.readEthernetCommunicationController(child_element, controller)
3227
+ elif tag_name == "LIN-MASTER":
3228
+ controller = instance.createLinMaster(self.getShortName(child_element))
3229
+ self.readLinMaster(child_element, controller)
2822
3230
  else:
2823
- self._raiseError("Unsupported Communication Controller <%s>" % tag_name)
3231
+ self.raiseError("Unsupported Communication Controller <%s>" % tag_name)
2824
3232
 
2825
3233
  def readCommConnectorPort(self, element: ET.Element, port: CommConnectorPort):
2826
3234
  self.readIdentifiable(element, port)
@@ -2831,9 +3239,13 @@ class ARXMLParser(AbstractARXMLParser):
2831
3239
 
2832
3240
  def readIPduPort(self, element: ET.Element, port: IPduPort):
2833
3241
  self.readCommConnectorPort(element, port)
3242
+ port.setKeyId(self.getChildElementOptionalPositiveInteger(element, "KEY-ID")) \
3243
+ .setRxSecurityVerification(self.getChildElementOptionalBooleanValue(element, "RX-SECURITY-VERIFICATION")) \
3244
+ .setUseAuthDataFreshness(self.getChildElementOptionalBooleanValue(element, "USE-AUTH-DATA-FRESHNESS")) \
2834
3245
 
2835
3246
  def readISignalPort(self, element: ET.Element, port: ISignalPort):
2836
3247
  self.readCommConnectorPort(element, port)
3248
+ port.setTimeout(self.getChildElementOptionalTimeValue(element, "TIMEOUT"))
2837
3249
 
2838
3250
  def readCommunicationConnectorEcuCommPortInstances(self, element: ET.Element, connector: CommunicationConnector):
2839
3251
  self.logger.debug("read EcuCommPortInstances of CommunicationConnector %s" % connector.getShortName())
@@ -2849,17 +3261,22 @@ class ARXMLParser(AbstractARXMLParser):
2849
3261
  port = connector.createISignalPort(self.getShortName(child_element))
2850
3262
  self.readISignalPort(child_element, port)
2851
3263
  else:
2852
- self._raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
3264
+ self.raiseError("Unsupported EcuCommPortInstances <%s>" % tag_name)
2853
3265
 
2854
3266
  def readCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
2855
3267
  self.readIdentifiable(element, connector)
2856
3268
  connector.setCommControllerRef(self.getChildElementOptionalRefType(element, "COMM-CONTROLLER-REF"))
2857
3269
  self.readCommunicationConnectorEcuCommPortInstances(element, connector)
3270
+ connector.setPncGatewayType(self.getChildElementOptionalLiteral(element, "PNC-GATEWAY-TYPE"))
2858
3271
 
2859
3272
  def readCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
2860
3273
  self.readCommunicationConnector(element, connector)
2861
3274
 
2862
- def readEthernetCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
3275
+ def readEthernetCommunicationConnector(self, element: ET.Element, connector: EthernetCommunicationConnector):
3276
+ self.readCommunicationConnector(element, connector)
3277
+ connector.setMaximumTransmissionUnit(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-TRANSMISSION-UNIT"))
3278
+
3279
+ def readLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
2863
3280
  self.readCommunicationConnector(element, connector)
2864
3281
 
2865
3282
  def readEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
@@ -2872,14 +3289,20 @@ class ARXMLParser(AbstractARXMLParser):
2872
3289
  elif tag_name == "ETHERNET-COMMUNICATION-CONNECTOR":
2873
3290
  connector = instance.createEthernetCommunicationConnector(self.getShortName(child_element))
2874
3291
  self.readEthernetCommunicationConnector(child_element, connector)
3292
+ elif tag_name == "LIN-COMMUNICATION-CONNECTOR":
3293
+ connector = instance.createLinCommunicationConnector(self.getShortName(child_element))
3294
+ self.readLinCommunicationConnector(child_element, connector)
2875
3295
  else:
2876
- self._raiseError("Unsupported Communication Connector <%s>" % tag_name)
3296
+ self.notImplemented("Unsupported Communication Connector <%s>" % tag_name)
2877
3297
 
2878
- def readEcuInstance(self, element: ET.Element, parent: ARPackage):
2879
- short_name = self.getShortName(element)
2880
- self.logger.debug("EcuInstance %s" % short_name)
2881
- 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())
2882
3304
  self.readIdentifiable(element, instance)
3305
+ self.readEcuInstanceAssociatedComIPduGroupRefs(element, instance)
2883
3306
  instance.setComConfigurationGwTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-GW-TIME-BASE")) \
2884
3307
  .setComConfigurationRxTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-RX-TIME-BASE")) \
2885
3308
  .setComConfigurationTxTimeBase(self.getChildElementOptionalTimeValue(element, "COM-CONFIGURATION-TX-TIME-BASE")) \
@@ -2909,30 +3332,34 @@ class ARXMLParser(AbstractARXMLParser):
2909
3332
  mappings.append(mapping)
2910
3333
  return mappings
2911
3334
 
2912
- '''
3335
+ def getTargetIPduRef(self, element, key: str) -> TargetIPduRef:
3336
+ i_pdu_ref = None
3337
+ child_element = self.find(element, key)
3338
+ if child_element is not None:
3339
+ i_pdu_ref = TargetIPduRef()
3340
+ i_pdu_ref.setTargetIPdu(self.getChildElementOptionalRefType(child_element, "TARGET-I-PDU-REF"))
3341
+ return i_pdu_ref
3342
+
2913
3343
  def getIPduMappings(self, element: ET.Element) -> List[IPduMapping]:
2914
3344
  mappings = []
2915
- for child_element in self.findall(element, tag_name):
3345
+ for child_element in self.findall(element, "I-PDU-MAPPINGS/I-PDU-MAPPING"):
2916
3346
  mapping = IPduMapping()
2917
- mapping.sourceIPduRef = self.getChildElementOptionalRefType(child_element, "SOURCE-IPDU-REF")
2918
- 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"))
2919
3349
  mappings.append(mapping)
2920
3350
  return mappings
2921
- '''
2922
3351
 
2923
- def readGateway(self, element: ET.Element, parent: ARPackage):
2924
- short_name = self.getShortName(element)
2925
- self.logger.debug("Gateway %s" % short_name)
2926
- gateway = parent.createGateway(short_name)
3352
+ def readGateway(self, element: ET.Element, gateway: Gateway):
3353
+ self.logger.debug("Read Gateway <%s>" % gateway.getShortName())
2927
3354
  self.readIdentifiable(element, gateway)
2928
- gateway.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)
2929
3358
  for mapping in self.getISignalMappings(element):
2930
3359
  gateway.addSignalMapping(mapping)
2931
3360
 
2932
- def readISignal(self, element: ET.Element, parent: ARPackage):
2933
- short_name = self.getShortName(element)
2934
- self.logger.debug("ISignal %s" % short_name)
2935
- signal = parent.createISignal(short_name)
3361
+ def readISignal(self, element: ET.Element, signal: ISignal):
3362
+ self.logger.debug("Read ISignal <%s>" % signal.getShortName())
2936
3363
  self.readIdentifiable(element, signal)
2937
3364
  signal.setDataTypePolicy(self.getChildElementOptionalLiteral(element, "DATA-TYPE-POLICY")) \
2938
3365
  .setISignalType(self.getChildElementOptionalLiteral(element, "I-SIGNAL-TYPE")) \
@@ -2948,10 +3375,8 @@ class ARXMLParser(AbstractARXMLParser):
2948
3375
  parent.addEcucValueRef(ref)
2949
3376
  self.logger.debug("EcucValue <%s> of EcucValueCollection <%s> has been added", ref.value, parent.getShortName())
2950
3377
 
2951
- def readEcucValueCollection(self, element: ET.Element, parent: ARPackage):
2952
- short_name = self.getShortName(element)
2953
- self.logger.debug("EcucValueCollection %s" % short_name)
2954
- collection = parent.createEcucValueCollection(short_name)
3378
+ def readEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
3379
+ self.logger.debug("Read EcucValueCollection <%s>" % collection.getShortName())
2955
3380
  self.readIdentifiable(element, collection)
2956
3381
  collection.setEcuExtractRef(self.getChildElementOptionalRefType(element, "ECU-EXTRACT-REF"))
2957
3382
  self.readEcucValueCollectionEcucValues(element, collection)
@@ -3056,20 +3481,16 @@ class ARXMLParser(AbstractARXMLParser):
3056
3481
  else:
3057
3482
  self.notImplemented("Unsupported Container %s" % tag_name)
3058
3483
 
3059
- def readEcucModuleConfigurationValues(self, element: ET.Element, parent: ARPackage):
3060
- short_name = self.getShortName(element)
3061
- self.logger.debug("EcucModuleConfigurationValues %s" % short_name)
3062
- values = parent.createEcucModuleConfigurationValues(short_name)
3484
+ def readEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
3485
+ self.logger.debug("Read EcucModuleConfigurationValues %s" % values.getShortName())
3063
3486
  self.readIdentifiable(element, values)
3064
3487
  values.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
3065
3488
  values.setImplementationConfigVariant(self.getChildElementOptionalLiteral(element, "IMPLEMENTATION-CONFIG-VARIANT"))
3066
3489
  values.setModuleDescriptionRef(self.getChildElementOptionalRefType(element, "MODULE-DESCRIPTION-REF"))
3067
3490
  self.readEcucModuleConfigurationValuesContainers(element, values)
3068
3491
 
3069
- def readPhysicalDimensions(self, element: ET.Element, parent: ARPackage):
3070
- short_name = self.getShortName(element)
3071
- self.logger.debug("read PhysicalDimensions %s" % short_name)
3072
- dimension = parent.createPhysicalDimension(short_name)
3492
+ def readPhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
3493
+ self.logger.debug("Read PhysicalDimension <%s>" % dimension.getShortName())
3073
3494
  self.readIdentifiable(element, dimension)
3074
3495
  dimension.setCurrentExp(self.getChildElementOptionalNumericalValue(element, "CURRENT-EXP")) \
3075
3496
  .setLengthExp(self.getChildElementOptionalNumericalValue(element, "LENGTH-EXP")) \
@@ -3086,27 +3507,21 @@ class ARXMLParser(AbstractARXMLParser):
3086
3507
  return mappings
3087
3508
  '''
3088
3509
 
3089
- def readISignalGroup(self, element: ET.Element, parent: ARPackage):
3090
- short_name = self.getShortName(element)
3091
- self.logger.debug("ISignalGroup %s" % short_name)
3092
- group = parent.createISignalGroup(short_name)
3510
+ def readISignalGroup(self, element: ET.Element, group: ISignalGroup):
3511
+ self.logger.debug("Read ISignalGroup <%s>" % group.getShortName())
3093
3512
  self.readIdentifiable(element, group)
3094
3513
  for ref_type in self.getChildElementRefTypeList(element, "I-SIGNAL-REFS/I-SIGNAL-REF"):
3095
3514
  group.addISignalRef(ref_type)
3096
3515
  group.systemSignalGroupRef = self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-GROUP-REF")
3097
3516
 
3098
- def readSystemSignal(self, element: ET.Element, parent: ARPackage):
3099
- short_name = self.getShortName(element)
3100
- self.logger.debug("SystemSignal %s" % short_name)
3101
- signal = parent.createSystemSignal(short_name)
3517
+ def readSystemSignal(self, element: ET.Element, signal: SystemSignal):
3518
+ self.logger.debug("Read SystemSignal <%s>" % signal.getShortName())
3102
3519
  self.readIdentifiable(element, signal)
3103
3520
  signal.setDynamicLength(self.getChildElementOptionalBooleanValue(element, "DYNAMIC-LENGTH")) \
3104
3521
  .setPhysicalProps(self.getSwDataDefProps(element, "PHYSICAL-PROPS"))
3105
3522
 
3106
- def readSystemSignalGroup(self, element: ET.Element, parent: ARPackage):
3107
- short_name = self.getShortName(element)
3108
- self.logger.debug("SystemSignalGroup %s" % short_name)
3109
- group = parent.createSystemSignalGroup(short_name)
3523
+ def readSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
3524
+ self.logger.debug("Read SystemSignalGroup <%s>" % group.getShortName())
3110
3525
  self.readIdentifiable(element, group)
3111
3526
  for ref_type in self.getChildElementRefTypeList(element, "SYSTEM-SIGNAL-REFS/SYSTEM-SIGNAL-REF"):
3112
3527
  group.addSystemSignalRefs(ref_type)
@@ -3196,10 +3611,8 @@ class ARXMLParser(AbstractARXMLParser):
3196
3611
  .setTransmissionModeDeclaration(self.getTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION"))
3197
3612
  return timing
3198
3613
 
3199
- def readISignalIPdu(self, element: ET.Element, parent: ARPackage):
3200
- short_name = self.getShortName(element)
3201
- self.logger.debug("ISignalIPdu %s" % short_name)
3202
- i_pdu = parent.createISignalIPdu(short_name)
3614
+ def readISignalIPdu(self, element: ET.Element, i_pdu: ISignalIPdu):
3615
+ self.logger.debug("Read ISignalIPdu <%s>" % i_pdu.getShortName())
3203
3616
  self.readIdentifiable(element, i_pdu)
3204
3617
  i_pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH")) \
3205
3618
  .setIPduTimingSpecification(self.getISignalIPduIPduTimingSpecification(element))
@@ -3212,13 +3625,11 @@ class ARXMLParser(AbstractARXMLParser):
3212
3625
  ref_types.append(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-I-PDU-REF"))
3213
3626
  return ref_types
3214
3627
 
3215
- def readISignalIPduGroup(self, element: ET.Element, parent: ARPackage):
3216
- short_name = self.getShortName(element)
3217
- self.logger.debug("ISignalIPduGroup %s" % short_name)
3218
- group = parent.createISignalIPduGroup(short_name)
3628
+ def readISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
3629
+ self.logger.debug("Read ISignalIPduGroup <%s>" % group.getShortName())
3219
3630
  self.readIdentifiable(element, group)
3220
- group.communicationDirection = self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")
3221
- group.communicationMode = self.getChildElementOptionalLiteral(element, "COMMUNICATION-MODE")
3631
+ group.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")) \
3632
+ .setCommunicationMode(self.getChildElementOptionalLiteral(element, "COMMUNICATION-MODE"))
3222
3633
  for ref_type in self.getChildElementRefTypeList(element, "CONTAINED-I-SIGNAL-I-PDU-GROUP-REFS/CONTAINED-I-SIGNAL-I-PDU-GROUP-REF"):
3223
3634
  group.addContainedISignalIPduGroupRef(ref_type)
3224
3635
  for ref_type in self.getISignalIPduRefs(element):
@@ -3287,32 +3698,27 @@ class ARXMLParser(AbstractARXMLParser):
3287
3698
  self.readIdentifiable(child_element, prototype)
3288
3699
  prototype.setFlatMapRef(self.getChildElementOptionalRefType(child_element, "FLAT-MAP-REF")) \
3289
3700
  .setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
3290
-
3701
+
3702
+ def readSystemFibexElementRefs(self, element: ET.Element, system: System):
3703
+ for ref in self.getChildElementRefTypeList(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL/FIBEX-ELEMENT-REF"):
3704
+ system.addFibexElementRef(ref)
3291
3705
 
3292
- def readSystem(self, element: ET.Element, parent: ARPackage):
3293
- short_name = self.getShortName(element)
3294
- self.logger.debug("Read System %s" % short_name)
3295
- system = parent.createSystem(short_name)
3706
+ def readSystem(self, element: ET.Element, system: System):
3707
+ self.logger.debug("Read System <%s>" % system.getShortName())
3296
3708
  self.readIdentifiable(element, system)
3297
-
3298
3709
  system.setEcuExtractVersion(self.getChildElementOptionalLiteral(element, "ECU-EXTRACT-VERSION"))
3299
- for child_element in self.findall(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL"):
3300
- system.addFibexElementRef(self.getChildElementOptionalRefType(child_element, "FIBEX-ELEMENT-REF"))
3710
+ self.readSystemFibexElementRefs(element, system)
3301
3711
  self.readSystemMappings(element, system)
3302
3712
  self.readRootSwCompositionPrototype(element, system)
3303
3713
  system.setSystemVersion(self.getChildElementOptionalRevisionLabelString(element, "SYSTEM-VERSION"))
3304
3714
 
3305
- def readGenericEthernetFrame(self, element: ET.Element, parent: ARPackage):
3306
- short_name = self.getShortName(element)
3307
- self.logger.debug("Read EthernetFrame %s" % short_name)
3308
- frame = parent.createGenericEthernetFrame(short_name)
3715
+ def readGenericEthernetFrame(self, element: ET.Element, frame: GenericEthernetFrame):
3716
+ self.logger.debug("Read GenericEthernetFrame <%s>" % frame.getShortName())
3309
3717
  self.readFrame(element, frame)
3310
3718
 
3311
- def readLifeCycleInfoSet(self, element: ET.Element, parent: ARPackage):
3312
- short_name = self.getShortName(element)
3313
- self.logger.debug("Read LifeCycleInfoSet %s" % short_name)
3314
- frame = parent.createLifeCycleInfoSet(short_name)
3315
- self.readIdentifiable(element, frame)
3719
+ def readLifeCycleInfoSet(self, element: ET.Element, info_set: LifeCycleInfoSet):
3720
+ self.logger.debug("Read LifeCycleInfoSet <%s>" % info_set.getShortName())
3721
+ self.readIdentifiable(element, info_set)
3316
3722
 
3317
3723
  def readFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
3318
3724
  self.logger.debug("Read LifeCycleInfoSet %s" % desc.getShortName())
@@ -3329,10 +3735,8 @@ class ARXMLParser(AbstractARXMLParser):
3329
3735
  else:
3330
3736
  self.notImplemented("Unsupported Flat Map Instances <%s>" % tag_name)
3331
3737
 
3332
- def readFlatMap(self, element: ET.Element, parent: ARPackage):
3333
- short_name = self.getShortName(element)
3334
- self.logger.debug("Read FlatMap %s" % short_name)
3335
- map = parent.createFlatMap(short_name)
3738
+ def readFlatMap(self, element: ET.Element, map: FlatMap):
3739
+ self.logger.debug("Read FlatMap <%s>" % map.getShortName())
3336
3740
  self.readIdentifiable(element, map)
3337
3741
  self.readFlatMapInstances(element, map)
3338
3742
 
@@ -3360,136 +3764,221 @@ class ARXMLParser(AbstractARXMLParser):
3360
3764
  else:
3361
3765
  self.notImplemented("Unsupported PortInterfaceMapping <%s>" % tag_name)
3362
3766
 
3363
- def readPortInterfaceMappingSet(self, element: ET.Element, parent: ARPackage):
3364
- short_name = self.getShortName(element)
3365
- self.logger.debug("Read PortInterfaceMappingSet %s" % short_name)
3366
- mapping_set = parent.createPortInterfaceMappingSet(short_name)
3767
+ def readPortInterfaceMappingSet(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
3768
+ self.logger.debug("Read PortInterfaceMappingSet %s" % mapping_set.getShortName())
3367
3769
  self.readIdentifiable(element, mapping_set)
3368
3770
  self.readPortInterfaceMappings(element, mapping_set)
3369
3771
 
3370
-
3371
-
3372
3772
  def readARPackageElements(self, element: ET.Element, parent: ARPackage):
3373
3773
  for child_element in self.findall(element, "ELEMENTS/*"):
3374
- tag_name = self.getTagName(child_element.tag)
3774
+ tag_name = self.getTagName(child_element)
3375
3775
  if tag_name == "COMPOSITION-SW-COMPONENT-TYPE":
3376
- self.readCompositionSwComponentType(child_element, parent)
3776
+ type = parent.createCompositionSwComponentType(self.getShortName(child_element))
3777
+ self.readCompositionSwComponentType(child_element, type)
3377
3778
  elif tag_name == "COMPLEX-DEVICE-DRIVER-SW-COMPONENT-TYPE":
3378
- self.readComplexDeviceDriverSwComponentType(child_element, parent)
3779
+ type = parent.createComplexDeviceDriverSwComponentType(self.getShortName(child_element))
3780
+ self.readComplexDeviceDriverSwComponentType(child_element, type)
3379
3781
  elif tag_name == "SWC-IMPLEMENTATION":
3380
- self.readSwcImplementation(child_element, parent)
3782
+ impl = parent.createSwcImplementation(self.getShortName(child_element))
3783
+ self.readSwcImplementation(child_element, impl)
3381
3784
  elif tag_name == "APPLICATION-PRIMITIVE-DATA-TYPE":
3382
- self.readApplicationPrimitiveDataType(child_element, parent)
3785
+ data_type = parent.createApplicationPrimitiveDataType(self.getShortName(child_element))
3786
+ self.readApplicationPrimitiveDataType(child_element, data_type)
3383
3787
  elif tag_name == "APPLICATION-RECORD-DATA-TYPE":
3384
- self.readApplicationRecordDataTypes(child_element, parent)
3788
+ data_type = parent.createApplicationRecordDataType(self.getShortName(child_element))
3789
+ self.readApplicationRecordDataType(child_element, data_type)
3385
3790
  elif tag_name == "SW-BASE-TYPE":
3386
- self.readSwBaseType(child_element, parent)
3791
+ data_type = parent.createSwBaseType(self.getShortName(child_element))
3792
+ self.readSwBaseType(child_element, data_type)
3387
3793
  elif tag_name == "COMPU-METHOD":
3388
- self.readCompuMethod(child_element, parent)
3794
+ compu_method = parent.createCompuMethod(self.getShortName(child_element))
3795
+ self.readCompuMethod(child_element, compu_method)
3389
3796
  elif tag_name == "CONSTANT-SPECIFICATION":
3390
- self.readConstantSpecification(child_element, parent)
3797
+ spec = parent.createConstantSpecification(self.getShortName(child_element))
3798
+ self.readConstantSpecification(child_element, spec)
3391
3799
  elif tag_name == "DATA-CONSTR":
3392
- self.readDataConstr(child_element, parent)
3800
+ constr = parent.createDataConstr(self.getShortName(child_element))
3801
+ self.readDataConstr(child_element, constr)
3393
3802
  elif tag_name == "END-TO-END-PROTECTION-SET":
3394
- self.readEndToEndProtectionSet(child_element, parent)
3803
+ protection_set = parent.createEndToEndProtectionSet(self.getShortName(child_element))
3804
+ self.readEndToEndProtectionSet(child_element, protection_set)
3395
3805
  elif tag_name == "SENDER-RECEIVER-INTERFACE":
3396
- self.readSenderReceiverInterfaces(child_element, parent)
3806
+ sr_interface = parent.createSenderReceiverInterface(self.getShortName(child_element))
3807
+ self.readSenderReceiverInterface(child_element, sr_interface)
3397
3808
  elif tag_name == "UNIT":
3398
- self.readUnit(child_element, parent)
3809
+ unit = parent.createUnit(self.getShortName(child_element))
3810
+ self.readUnit(child_element, unit)
3399
3811
  elif tag_name == "BSW-MODULE-DESCRIPTION":
3400
- self.readBswModuleDescription(child_element, parent)
3812
+ desc = parent.createBswModuleDescription(self.getShortName(child_element))
3813
+ self.readBswModuleDescription(child_element, desc)
3401
3814
  elif tag_name == "BSW-MODULE-ENTRY":
3402
- self.readBswModuleEntry(child_element, parent)
3815
+ entry = parent.createBswModuleEntry(self.getShortName(child_element))
3816
+ self.readBswModuleEntry(child_element, entry)
3403
3817
  elif tag_name == "SWC-BSW-MAPPING":
3404
- self.readSwcBswMappings(child_element, parent)
3818
+ mapping = parent.createSwcBswMapping(self.getShortName(child_element))
3819
+ self.readSwcBswMapping(child_element, mapping)
3405
3820
  elif tag_name == "BSW-IMPLEMENTATION":
3406
- self.readBswImplementation(child_element, parent)
3821
+ impl = parent.createBswImplementation(self.getShortName(child_element))
3822
+ self.readBswImplementation(child_element, impl)
3407
3823
  elif tag_name == "IMPLEMENTATION-DATA-TYPE":
3408
- self.readImplementationDataType(child_element, parent)
3824
+ data_type = parent.createImplementationDataType(self.getShortName(child_element))
3825
+ self.readImplementationDataType(child_element, data_type)
3409
3826
  elif tag_name == "CLIENT-SERVER-INTERFACE":
3410
- self.readClientServerInterface(child_element, parent)
3827
+ cs_interface = parent.createClientServerInterface(self.getShortName(child_element))
3828
+ self.readClientServerInterface(child_element, cs_interface)
3411
3829
  elif tag_name == "APPLICATION-SW-COMPONENT-TYPE":
3412
- self.readApplicationSwComponentTypes(child_element, parent)
3830
+ sw_component = parent.createApplicationSwComponentType(self.getShortName(child_element))
3831
+ self.readApplicationSwComponentType(child_element, sw_component)
3413
3832
  elif tag_name == "ECU-ABSTRACTION-SW-COMPONENT-TYPE":
3414
- self.readEcuAbstractionSwComponent(child_element, parent)
3833
+ sw_component = parent.createEcuAbstractionSwComponentType(self.getShortName(child_element))
3834
+ self.readEcuAbstractionSwComponentType(child_element, sw_component)
3415
3835
  elif tag_name == "APPLICATION-ARRAY-DATA-TYPE":
3416
- self.readApplicationArrayDataType(child_element, parent)
3836
+ data_type = parent.createApplicationArrayDataType(self.getShortName(child_element))
3837
+ self.readApplicationArrayDataType(child_element, data_type)
3417
3838
  elif tag_name == "SW-RECORD-LAYOUT":
3418
- self.readSwRecordLayout(child_element, parent)
3839
+ layout = parent.createSwRecordLayout(self.getShortName(child_element))
3840
+ self.readSwRecordLayout(child_element, layout)
3419
3841
  elif tag_name == "SW-ADDR-METHOD":
3420
- self.readSwAddrMethod(child_element, parent)
3842
+ method = parent.createSwAddrMethod(self.getShortName(child_element))
3843
+ self.readSwAddrMethod(child_element, method)
3421
3844
  elif tag_name == "TRIGGER-INTERFACE":
3422
- self.readTriggerInterface(child_element, parent)
3845
+ trigger_if = parent.createTriggerInterface(self.getShortName(child_element))
3846
+ self.readTriggerInterface(child_element, trigger_if)
3423
3847
  elif tag_name == "SERVICE-SW-COMPONENT-TYPE":
3424
- self.readServiceSwComponentType(child_element, parent)
3848
+ sw_component = parent.createServiceSwComponentType(self.getShortName(child_element))
3849
+ self.readServiceSwComponentType(child_element, sw_component)
3425
3850
  elif tag_name == "SENSOR-ACTUATOR-SW-COMPONENT-TYPE":
3426
- self.readSensorActuatorSwComponentType(child_element, parent)
3851
+ sw_component = parent.createSensorActuatorSwComponentType(self.getShortName(child_element))
3852
+ self.readSensorActuatorSwComponentType(child_element, sw_component)
3427
3853
  elif tag_name == "DATA-TYPE-MAPPING-SET":
3428
- self.readDataTypeMappingSet(child_element, parent)
3854
+ mapping_set = parent.createDataTypeMappingSet(self.getShortName(child_element))
3855
+ self.readDataTypeMappingSet(child_element, mapping_set)
3429
3856
  elif tag_name == "MODE-DECLARATION-GROUP":
3430
- self.readModeDeclarationGroup(child_element, parent)
3857
+ group = parent.createModeDeclarationGroup(self.getShortName(child_element))
3858
+ self.readModeDeclarationGroup(child_element, group)
3431
3859
  elif tag_name == "MODE-SWITCH-INTERFACE":
3432
- self.readModeSwitchInterface(child_element, parent)
3860
+ mode_interface = parent.createModeSwitchInterface(self.getShortName(child_element))
3861
+ self.readModeSwitchInterface(child_element, mode_interface)
3433
3862
  elif tag_name == "SWC-TIMING":
3434
- self.readSwcTiming(child_element, parent)
3863
+ timing = parent.createSwcTiming(self.getShortName(child_element))
3864
+ self.readSwcTiming(child_element, timing)
3435
3865
  elif tag_name == "LIN-CLUSTER":
3436
- self.readLinCluster(child_element, parent)
3866
+ cluster = parent.createLinCluster(self.getShortName(child_element))
3867
+ self.readLinCluster(child_element, cluster)
3437
3868
  elif tag_name == "LIN-UNCONDITIONAL-FRAME":
3438
- self.readLinUnconditionalFrame(child_element, parent)
3869
+ frame = parent.createLinUnconditionalFrame(self.getShortName(child_element))
3870
+ self.readLinUnconditionalFrame(child_element, frame)
3439
3871
  elif tag_name == "NM-PDU":
3440
- self.readNmPdu(child_element, parent)
3872
+ pdu = parent.createNmPdu(self.getShortName(child_element))
3873
+ self.readNmPdu(child_element, pdu)
3441
3874
  elif tag_name == "N-PDU":
3442
- self.readNPdu(child_element, parent)
3875
+ pdu = parent.createNPdu(self.getShortName(child_element))
3876
+ self.readNPdu(child_element, pdu)
3443
3877
  elif tag_name == "DCM-I-PDU":
3444
- self.readDcmIPdu(child_element, parent)
3878
+ i_pdu = parent.createDcmIPdu(self.getShortName(child_element))
3879
+ self.readDcmIPdu(child_element, i_pdu)
3445
3880
  elif tag_name == "SECURED-I-PDU":
3446
- self.readSecuredIPdu(child_element, parent)
3881
+ i_pdu = parent.createSecuredIPdu(self.getShortName(child_element))
3882
+ self.readSecuredIPdu(child_element, i_pdu)
3447
3883
  elif tag_name == "NM-CONFIG":
3448
- self.readNmConfig(child_element, parent)
3884
+ config = parent.createNmConfig(self.getShortName(child_element))
3885
+ self.readNmConfig(child_element, config)
3449
3886
  elif tag_name == "CAN-TP-CONFIG":
3450
- self.readCanTpConfig(child_element, parent)
3887
+ config = parent.createCanTpConfig(self.getShortName(child_element))
3888
+ self.readCanTpConfig(child_element, config)
3451
3889
  elif tag_name == "LIN-TP-CONFIG":
3452
- pass
3890
+ config = parent.createLinTpConfig(self.getShortName(child_element))
3891
+ self.readLinTpConfig(child_element, config)
3453
3892
  elif tag_name == "SYSTEM":
3454
- self.readSystem(child_element, parent)
3893
+ system = parent.createSystem(self.getShortName(child_element))
3894
+ self.readSystem(child_element, system)
3455
3895
  elif tag_name == "ECU-INSTANCE":
3456
- self.readEcuInstance(child_element, parent)
3896
+ instance = parent.createEcuInstance(self.getShortName(child_element))
3897
+ self.readEcuInstance(child_element, instance)
3457
3898
  elif tag_name == "GATEWAY":
3458
- self.readGateway(child_element, parent)
3899
+ gateway = parent.createGateway(self.getShortName(child_element))
3900
+ self.readGateway(child_element, gateway)
3459
3901
  elif tag_name == "I-SIGNAL-I-PDU-GROUP":
3460
- self.readISignalIPduGroup(child_element, parent)
3902
+ group = parent.createISignalIPduGroup(self.getShortName(child_element))
3903
+ self.readISignalIPduGroup(child_element, group)
3461
3904
  elif tag_name == "CAN-CLUSTER":
3462
- self.readCanCluster(child_element, parent)
3905
+ cluster = parent.createCanCluster(self.getShortName(child_element))
3906
+ self.readCanCluster(child_element, cluster)
3463
3907
  elif tag_name == "CAN-FRAME":
3464
- self.readCanFrame(child_element, parent)
3908
+ frame = parent.createCanFrame(self.getShortName(child_element))
3909
+ self.readCanFrame(child_element, frame)
3465
3910
  elif tag_name == "I-SIGNAL":
3466
- self.readISignal(child_element, parent)
3911
+ signal = parent.createISignal(self.getShortName(child_element))
3912
+ self.readISignal(child_element, signal)
3467
3913
  elif tag_name == "I-SIGNAL-GROUP":
3468
- self.readISignalGroup(child_element, parent)
3914
+ group = parent.createISignalGroup(self.getShortName(child_element))
3915
+ self.readISignalGroup(child_element, group)
3469
3916
  elif tag_name == "I-SIGNAL-I-PDU":
3470
- self.readISignalIPdu(child_element, parent)
3917
+ i_pdu = parent.createISignalIPdu(self.getShortName(child_element))
3918
+ self.readISignalIPdu(child_element, i_pdu)
3471
3919
  elif tag_name == "SYSTEM-SIGNAL":
3472
- self.readSystemSignal(child_element, parent)
3920
+ signal = parent.createSystemSignal(self.getShortName(child_element))
3921
+ self.readSystemSignal(child_element, signal)
3473
3922
  elif tag_name == "SYSTEM-SIGNAL-GROUP":
3474
- self.readSystemSignalGroup(child_element, parent)
3923
+ group = parent.createSystemSignalGroup(self.getShortName(child_element))
3924
+ self.readSystemSignalGroup(child_element, group)
3475
3925
  elif tag_name == "ECUC-VALUE-COLLECTION":
3476
- self.readEcucValueCollection(child_element, parent)
3926
+ collection = parent.createEcucValueCollection(self.getShortName(child_element))
3927
+ self.readEcucValueCollection(child_element, collection)
3477
3928
  elif tag_name == "ECUC-MODULE-CONFIGURATION-VALUES":
3478
- self.readEcucModuleConfigurationValues(child_element, parent)
3929
+ values = parent.createEcucModuleConfigurationValues(self.getShortName(child_element))
3930
+ self.readEcucModuleConfigurationValues(child_element, values)
3479
3931
  elif tag_name == "PHYSICAL-DIMENSION":
3480
- self.readPhysicalDimensions(child_element, parent)
3932
+ dimension = parent.createPhysicalDimension(self.getShortName(child_element))
3933
+ self.readPhysicalDimension(child_element, dimension)
3481
3934
  elif tag_name == "PARAMETER-INTERFACE":
3482
- self.readParameterInterface(child_element, parent)
3935
+ param_interface = parent.createParameterInterface(self.getShortName(child_element))
3936
+ self.readParameterInterface(child_element, param_interface)
3483
3937
  elif tag_name == "ETHERNET-FRAME":
3484
- self.readGenericEthernetFrame(child_element, parent)
3938
+ frame = parent.createGenericEthernetFrame(self.getShortName(child_element))
3939
+ self.readGenericEthernetFrame(child_element, frame)
3485
3940
  elif tag_name == "LIFE-CYCLE-INFO-SET":
3486
- self.readLifeCycleInfoSet(child_element, parent)
3941
+ info_set = parent.createLifeCycleInfoSet(self.getShortName(child_element))
3942
+ self.readLifeCycleInfoSet(child_element, info_set)
3487
3943
  elif tag_name == "FLAT-MAP":
3488
- self.readFlatMap(child_element, parent)
3944
+ map = parent.createFlatMap(self.getShortName(child_element))
3945
+ self.readFlatMap(child_element, map)
3489
3946
  elif tag_name == "PORT-INTERFACE-MAPPING-SET":
3490
- self.readPortInterfaceMappingSet(child_element, parent)
3947
+ mapping_set = parent.createPortInterfaceMappingSet(self.getShortName(child_element))
3948
+ self.readPortInterfaceMappingSet(child_element, mapping_set)
3491
3949
  elif tag_name == "ETHERNET-CLUSTER":
3492
- self.readEthernetCluster(child_element, parent)
3950
+ cluster = parent.createEthernetCluster(self.getShortName(child_element))
3951
+ self.readEthernetCluster(child_element, cluster)
3952
+ elif tag_name == "DIAGNOSTIC-CONNECTION":
3953
+ connection = parent.createDiagnosticConnection(self.getShortName(child_element))
3954
+ self.readDiagnosticConnection(child_element, connection)
3955
+ elif tag_name == "DIAGNOSTIC-SERVICE-TABLE":
3956
+ table = parent.createDiagnosticServiceTable(self.getShortName(child_element))
3957
+ self.readDiagnosticServiceTable(child_element, table)
3958
+ elif tag_name == "MULTIPLEXED-I-PDU":
3959
+ i_pdu = parent.createMultiplexedIPdu(self.getShortName(child_element))
3960
+ self.readMultiplexedIPdu(child_element, i_pdu)
3961
+ elif tag_name == "USER-DEFINED-I-PDU":
3962
+ i_pdu = parent.createUserDefinedIPdu(self.getShortName(child_element))
3963
+ self.readUserDefinedIPdu(child_element, i_pdu)
3964
+ elif tag_name == "USER-DEFINED-PDU":
3965
+ pdu = parent.createUserDefinedPdu(self.getShortName(child_element))
3966
+ self.readUserDefinedPdu(child_element, pdu)
3967
+ elif tag_name == "GENERAL-PURPOSE-PDU":
3968
+ pdu = parent.createGeneralPurposePdu(self.getShortName(child_element))
3969
+ self.readGeneralPurposePdu(child_element, pdu)
3970
+ elif tag_name == "GENERAL-PURPOSE-I-PDU":
3971
+ i_pdu = parent.createGeneralPurposeIPdu(self.getShortName(child_element))
3972
+ self.readGeneralPurposeIPdu(child_element, i_pdu)
3973
+ elif tag_name == "SECURE-COMMUNICATION-PROPS-SET":
3974
+ prop_set = parent.createSecureCommunicationPropsSet(self.getShortName(child_element))
3975
+ self.readSecureCommunicationPropsSet(child_element, prop_set)
3976
+ elif tag_name == "SO-AD-ROUTING-GROUP":
3977
+ group = parent.createSoAdRoutingGroup(self.getShortName(child_element))
3978
+ self.readSoAdRoutingGroup(child_element, group)
3979
+ elif tag_name == "DO-IP-TP-CONFIG":
3980
+ config = parent.createDoIpTpConfig(self.getShortName(child_element))
3981
+ self.readDoIpTpConfig(child_element, config)
3493
3982
  else:
3494
3983
  self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
3495
3984
 
@@ -3522,7 +4011,7 @@ class ARXMLParser(AbstractARXMLParser):
3522
4011
  tree = ET.parse(filename)
3523
4012
  root = tree.getroot()
3524
4013
  if (self.getPureTagName(root.tag) != "AUTOSAR"):
3525
- self._raiseError("Invalid ARXML file <%s>" % filename)
4014
+ self.raiseError("Invalid ARXML file <%s>" % filename)
3526
4015
 
3527
4016
  self.getAUTOSARInfo(root, document)
3528
4017
  document.setAdminData(self.getAdminData(root, "ADMIN-DATA"))