armodel 1.7.4__py3-none-any.whl → 1.7.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/cli/file_list_cli.py +70 -0
- armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/DiagnosticContribution.py +47 -0
- armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/__init__.py +0 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +67 -3
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +9 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DiagnosticConnection.py +58 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetCommunication.py +16 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +114 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/NetworkEndpoint.py +104 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +429 -7
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinCommunication.py +114 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinTopology.py +94 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +151 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +98 -13
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +13 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +135 -13
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +25 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +4 -3
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +1 -1
- armodel/models/__init__.py +3 -0
- armodel/parser/abstract_arxml_parser.py +2 -0
- armodel/parser/arxml_parser.py +353 -30
- armodel/writer/arxml_writer.py +471 -145
- {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/METADATA +31 -1
- {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/RECORD +29 -24
- {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/entry_points.txt +1 -0
- {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/LICENSE +0 -0
- {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/WHEEL +0 -0
- {armodel-1.7.4.dist-info → armodel-1.7.5.dist-info}/top_level.txt +0 -0
armodel/parser/arxml_parser.py
CHANGED
|
@@ -72,19 +72,21 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes im
|
|
|
72
72
|
|
|
73
73
|
from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping , System, SystemMapping
|
|
74
74
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
75
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.
|
|
75
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import DiagnosticConnection
|
|
76
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmNode
|
|
76
77
|
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.
|
|
78
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import ApplicationEntry, LinFrameTriggering, LinScheduleTable, ScheduleTableEntry
|
|
79
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinMaster
|
|
80
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanClusterBusOffRecovery, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinPhysicalChannel, PhysicalChannel
|
|
79
81
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import Frame, FrameTriggering, IPdu, IPduTiming, ISignalIPdu, ISignalTriggering, PduTriggering
|
|
80
82
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
81
83
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
82
84
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering, RxIdentifierRange
|
|
83
85
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
|
|
84
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCommunicationController
|
|
86
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCommunicationConnector, EthernetCommunicationController, InitialSdDelayConfig, RequestResponseDelay, SdClientConfig
|
|
85
87
|
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.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration, NetworkEndpoint
|
|
89
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup, ConsumedServiceInstance, GenericTp, SoAdConfig, SocketAddress, TcpTp, TpPort, TransportProtocolConfiguration, UdpTp
|
|
88
90
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import ISignalMapping
|
|
89
91
|
|
|
90
92
|
from .abstract_arxml_parser import AbstractARXMLParser
|
|
@@ -299,8 +301,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
299
301
|
if ref_type is not None:
|
|
300
302
|
entity.addManagedModeGroupRef(ref_type)
|
|
301
303
|
|
|
302
|
-
|
|
303
|
-
|
|
304
304
|
def readBswEvent(self, element: ET.Element, event: BswScheduleEvent):
|
|
305
305
|
event.startsOnEventRef = self.getChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF")
|
|
306
306
|
|
|
@@ -2272,7 +2272,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2272
2272
|
layout_v = SwRecordLayoutV()
|
|
2273
2273
|
layout_v.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
2274
2274
|
.setBaseTypeRef(self.getChildElementOptionalRefType(child_element, "BASE-TYPE-REF")) \
|
|
2275
|
-
.setSwRecordLayoutVAxis(self.
|
|
2275
|
+
.setSwRecordLayoutVAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-AXIS")) \
|
|
2276
2276
|
.setSwRecordLayoutVProp(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP")) \
|
|
2277
2277
|
.setSwRecordLayoutVIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX"))
|
|
2278
2278
|
return layout_v
|
|
@@ -2284,7 +2284,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2284
2284
|
group = SwRecordLayoutGroup()
|
|
2285
2285
|
group.setShortLabel(self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")) \
|
|
2286
2286
|
.setCategory(self.getChildElementOptionalLiteral(child_element, "CATEGORY")) \
|
|
2287
|
-
.setSwRecordLayoutGroupAxis(self.
|
|
2287
|
+
.setSwRecordLayoutGroupAxis(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS")) \
|
|
2288
2288
|
.setSwRecordLayoutGroupIndex(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX")) \
|
|
2289
2289
|
.setSwRecordLayoutGroupFrom(self.getChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM")) \
|
|
2290
2290
|
.setSwRecordLayoutGroupStep(self.getChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP")) \
|
|
@@ -2471,9 +2471,45 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2471
2471
|
self.readIdentifiable(element, channel)
|
|
2472
2472
|
self.readPhysicalChannel(element, channel)
|
|
2473
2473
|
|
|
2474
|
+
def readScheduleTableEntry(self, element: ET.Element, entry: ScheduleTableEntry):
|
|
2475
|
+
entry.setDelay(self.getChildElementOptionalTimeValue(element, "DELAY")) \
|
|
2476
|
+
.setPositionInTable(self.getChildElementOptionalIntegerValue(element, "POSITION-IN-TABLE"))
|
|
2477
|
+
|
|
2478
|
+
def getApplicationEntry(self, element: ET.Element, key: str) -> ApplicationEntry:
|
|
2479
|
+
entry = None
|
|
2480
|
+
if element is not None:
|
|
2481
|
+
entry = ApplicationEntry()
|
|
2482
|
+
self.readScheduleTableEntry(element, entry)
|
|
2483
|
+
entry.setFrameTriggeringRef(self.getChildElementOptionalRefType(element, "FRAME-TRIGGERING-REF"))
|
|
2484
|
+
return entry
|
|
2485
|
+
|
|
2486
|
+
def readLinScheduleTableTableEntries(self, element: ET.Element, table: LinScheduleTable):
|
|
2487
|
+
for child_element in self.findall(element, "TABLE-ENTRYS/*"):
|
|
2488
|
+
tag_name = self.getTagName(child_element)
|
|
2489
|
+
if tag_name == "APPLICATION-ENTRY":
|
|
2490
|
+
table = table.addTableEntry(self.getApplicationEntry(child_element, "APPLICATION-ENTRY"))
|
|
2491
|
+
else:
|
|
2492
|
+
self.notImplemented("Unsupported Schedule Table <%s>" % tag_name)
|
|
2493
|
+
|
|
2494
|
+
def readLinScheduleTable(self, element: ET.Element, table: LinScheduleTable):
|
|
2495
|
+
self.readIdentifiable(element, table)
|
|
2496
|
+
table.setResumePosition(self.getChildElementOptionalLiteral(element, "RESUME-POSITION")) \
|
|
2497
|
+
.setRunMode(self.getChildElementOptionalLiteral(element, "RUN-MODE"))
|
|
2498
|
+
self.readLinScheduleTableTableEntries(element, table)
|
|
2499
|
+
|
|
2500
|
+
def readLinPhysicalChannelScheduleTables(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2501
|
+
for child_element in self.findall(element, "SCHEDULE-TABLES/*"):
|
|
2502
|
+
tag_name = self.getTagName(child_element)
|
|
2503
|
+
if tag_name == "LIN-SCHEDULE-TABLE":
|
|
2504
|
+
table = channel.createLinScheduleTable(self.getShortName(child_element))
|
|
2505
|
+
self.readLinScheduleTable(child_element, table)
|
|
2506
|
+
else:
|
|
2507
|
+
self.notImplemented("Unsupported Schedule Table <%s>" % tag_name)
|
|
2508
|
+
|
|
2474
2509
|
def readLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2475
2510
|
self.readIdentifiable(element, channel)
|
|
2476
2511
|
self.readPhysicalChannel(element, channel)
|
|
2512
|
+
self.readLinPhysicalChannelScheduleTables(element, channel)
|
|
2477
2513
|
|
|
2478
2514
|
def getIpv6Configuration(self, element: ET.Element) -> Ipv6Configuration:
|
|
2479
2515
|
configuration = None
|
|
@@ -2496,8 +2532,25 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2496
2532
|
else:
|
|
2497
2533
|
self.notImplemented("Unsupported Network EndPoint Address <%s>" % tag_name)
|
|
2498
2534
|
|
|
2535
|
+
def getDoIpEntity(self, element: ET.Element, key:str) -> DoIpEntity:
|
|
2536
|
+
entity = None
|
|
2537
|
+
child_element = self.find(element, key)
|
|
2538
|
+
if child_element is not None:
|
|
2539
|
+
entity = DoIpEntity()
|
|
2540
|
+
entity.setDoIpEntityRole(self.getChildElementOptionalLiteral(child_element, "DO-IP-ENTITY-ROLE"))
|
|
2541
|
+
return entity
|
|
2542
|
+
|
|
2543
|
+
def getInfrastructureServices(self, element: ET.Element, key:str) -> InfrastructureServices:
|
|
2544
|
+
services = None
|
|
2545
|
+
child_element = self.find(element, key)
|
|
2546
|
+
if child_element is not None:
|
|
2547
|
+
services = InfrastructureServices()
|
|
2548
|
+
services.setDoIpEntity(self.getDoIpEntity(child_element, "DO-IP-ENTITY"))
|
|
2549
|
+
return services
|
|
2550
|
+
|
|
2499
2551
|
def readNetworkEndPoint(self, element: ET.Element, end_point: NetworkEndpoint):
|
|
2500
2552
|
self.readIdentifiable(element, end_point)
|
|
2553
|
+
end_point.setInfrastructureServices(self.getInfrastructureServices(element, "INFRASTRUCTURE-SERVICES"))
|
|
2501
2554
|
self.readNetworkEndPointNetworkEndPointAddress(element, end_point)
|
|
2502
2555
|
end_point.setPriority(self.getChildElementOptionalPositiveInteger(element, "PRIORITY"))
|
|
2503
2556
|
|
|
@@ -2531,11 +2584,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2531
2584
|
connection = None
|
|
2532
2585
|
if element is not None:
|
|
2533
2586
|
connection = SocketConnection()
|
|
2534
|
-
connection.
|
|
2587
|
+
connection.setClientIpAddrFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST")) \
|
|
2588
|
+
.setClientPortFromConnectionRequest(self.getChildElementOptionalBooleanValue(element, "CLIENT-PORT-FROM-CONNECTION-REQUEST")) \
|
|
2589
|
+
.setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF"))
|
|
2535
2590
|
for pdu in self.getSocketConnectionPdus(element):
|
|
2536
2591
|
connection.addPdu(pdu)
|
|
2537
2592
|
connection.setPduCollectionMaxBufferSize(self.getChildElementOptionalPositiveInteger(element, "PDU-COLLECTION-MAX-BUFFER-SIZE")) \
|
|
2538
2593
|
.setPduCollectionTimeout(self.getChildElementOptionalTimeValue(element, "PDU-COLLECTION-TIMEOUT")) \
|
|
2594
|
+
.setRuntimeIpAddressConfiguration(self.getChildElementOptionalLiteral(element, "RUNTIME-IP-ADDRESS-CONFIGURATION")) \
|
|
2595
|
+
.setRuntimePortConfiguration(self.getChildElementOptionalLiteral(element, "RUNTIME-PORT-CONFIGURATION")) \
|
|
2539
2596
|
.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
|
|
2540
2597
|
return connection
|
|
2541
2598
|
|
|
@@ -2560,18 +2617,145 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2560
2617
|
else:
|
|
2561
2618
|
self.notImplemented("Unsupported Connection Bundle <%s>" % tag_name)
|
|
2562
2619
|
|
|
2620
|
+
def getTpPort(self, element: ET.SubElement, key: str) -> TpPort:
|
|
2621
|
+
port = None
|
|
2622
|
+
child_element = self.find(element, key)
|
|
2623
|
+
if child_element is not None:
|
|
2624
|
+
port = TpPort()
|
|
2625
|
+
port.setDynamicallyAssigned(self.getChildElementOptionalBooleanValue(child_element, "DYNAMICALLY-ASSIGNED")) \
|
|
2626
|
+
.setPortNumber(self.getChildElementOptionalPositiveInteger(child_element, "PORT-NUMBER"))
|
|
2627
|
+
return port
|
|
2628
|
+
|
|
2629
|
+
def readUdpTp(self, element: ET.Element, tp: UdpTp):
|
|
2630
|
+
tp.setUdpTpPort(self.getTpPort(element, "UDP-TP-PORT"))
|
|
2631
|
+
|
|
2632
|
+
def readTcpTp(self, element: ET.Element, tp: TcpTp):
|
|
2633
|
+
tp.setKeepAliveInterval(self.getChildElementOptionalTimeValue(element, "KEEP-ALIVE-INTERVAL")) \
|
|
2634
|
+
.setKeepAliveProbesMax(self.getChildElementOptionalPositiveInteger(element, "KEEP-ALIVE-PROBES-MAX")) \
|
|
2635
|
+
.setKeepAliveTime(self.getChildElementOptionalTimeValue(element, "KEEP-ALIVE-TIME")) \
|
|
2636
|
+
.setKeepAlives(self.getChildElementOptionalBooleanValue(element, "KEEP-ALIVES")) \
|
|
2637
|
+
.setNaglesAlgorithm(self.getChildElementOptionalLiteral(element, "NAGLES-ALGORITHM")) \
|
|
2638
|
+
.setTcpTpPort(self.getTpPort(element, "TCP-TP-PORT"))
|
|
2639
|
+
|
|
2640
|
+
|
|
2641
|
+
def readGenericTp(self, element: ET.Element, tp: GenericTp):
|
|
2642
|
+
tp.setTpAddress(self.getChildElementOptionalLiteral(element, "TP-ADDRESS")) \
|
|
2643
|
+
.setTpTechnology(self.getChildElementOptionalLiteral(element, "TP-TECHNOLOGY"))
|
|
2644
|
+
|
|
2645
|
+
def getTransportProtocolConfiguration(self, element: ET.Element, key: str) -> TransportProtocolConfiguration:
|
|
2646
|
+
configuration = None
|
|
2647
|
+
child_element = self.find(element, "%s/*" % key)
|
|
2648
|
+
if child_element is not None:
|
|
2649
|
+
tag_name = self.getTagName(child_element)
|
|
2650
|
+
if tag_name == "UDP-TP":
|
|
2651
|
+
configuration = UdpTp()
|
|
2652
|
+
self.readUdpTp(child_element, configuration)
|
|
2653
|
+
elif tag_name == "TCP-TP":
|
|
2654
|
+
configuration = TcpTp()
|
|
2655
|
+
self.readTcpTp(child_element, configuration)
|
|
2656
|
+
elif tag_name == "GENERIC-TP":
|
|
2657
|
+
configuration = GenericTp()
|
|
2658
|
+
self.readGenericTp(child_element, configuration)
|
|
2659
|
+
else:
|
|
2660
|
+
self.notImplemented("Unsupported TransportProtocolConfiguration <%s>" % tag_name)
|
|
2661
|
+
return configuration
|
|
2662
|
+
|
|
2663
|
+
def readConsumedEventGroupRoutingGroupRefs(self, element: ET.Element, group: ConsumedEventGroup):
|
|
2664
|
+
for ref in self.getChildElementRefTypeList(element, "ROUTING-GROUP-REFS/ROUTING-GROUP-REF"):
|
|
2665
|
+
group.addRoutingGroupRef(ref)
|
|
2666
|
+
|
|
2667
|
+
def getRequestResponseDelay(self, element: ET.Element, key: str) -> RequestResponseDelay:
|
|
2668
|
+
delay = None
|
|
2669
|
+
child_element = self.find(element, key)
|
|
2670
|
+
if child_element is not None:
|
|
2671
|
+
delay = RequestResponseDelay()
|
|
2672
|
+
delay.setMaxValue(self.getChildElementOptionalTimeValue(child_element, "MAX-VALUE")) \
|
|
2673
|
+
.setMinValue(self.getChildElementOptionalTimeValue(child_element, "MIN-VALUE"))
|
|
2674
|
+
return delay
|
|
2675
|
+
|
|
2676
|
+
def getInitialSdDelayConfig(self, element: ET.Element, key: str) -> InitialSdDelayConfig:
|
|
2677
|
+
config = None
|
|
2678
|
+
child_element = self.find(element, key)
|
|
2679
|
+
if child_element is not None:
|
|
2680
|
+
config = InitialSdDelayConfig()
|
|
2681
|
+
config.setInitialDelayMaxValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE")) \
|
|
2682
|
+
.setInitialDelayMinValue(self.getChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE")) \
|
|
2683
|
+
.setInitialRepetitionsBaseDelay(self.getChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY")) \
|
|
2684
|
+
.setInitialRepetitionsMax(self.getChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX"))
|
|
2685
|
+
return config
|
|
2686
|
+
|
|
2687
|
+
def getSdClientConfig(self, element: ET.Element, key: str) -> SdClientConfig:
|
|
2688
|
+
config = None
|
|
2689
|
+
child_element = self.find(element, key)
|
|
2690
|
+
if child_element is not None:
|
|
2691
|
+
config = SdClientConfig()
|
|
2692
|
+
config.setClientServiceMajorVersion(self.getChildElementOptionalPositiveInteger(child_element, "CLIENT-SERVICE-MAJOR-VERSION")) \
|
|
2693
|
+
.setClientServiceMinorVersion(self.getChildElementOptionalPositiveInteger(child_element, "CLIENT-SERVICE-MINOR-VERSION")) \
|
|
2694
|
+
.setInitialFindBehavior(self.getInitialSdDelayConfig(child_element, "INITIAL-FIND-BEHAVIOR")) \
|
|
2695
|
+
.setRequestResponseDelay(self.getRequestResponseDelay(child_element, "REQUEST-RESPONSE-DELAY")) \
|
|
2696
|
+
.setTtl(self.getChildElementOptionalPositiveInteger(child_element, "TTL"))
|
|
2697
|
+
return config
|
|
2698
|
+
|
|
2699
|
+
def readConsumedEventGroup(self, element: ET.Element, group: ConsumedEventGroup):
|
|
2700
|
+
self.readIdentifiable(element, group)
|
|
2701
|
+
group.setApplicationEndpointRef(self.getChildElementOptionalRefType(element, "APPLICATION-ENDPOINT-REF")) \
|
|
2702
|
+
.setEventGroupIdentifier(self.getChildElementOptionalPositiveInteger(element, "EVENT-GROUP-IDENTIFIER"))
|
|
2703
|
+
self.readConsumedEventGroupRoutingGroupRefs(element, group)
|
|
2704
|
+
group.setSdClientConfig(self.getSdClientConfig(element, "SD-CLIENT-CONFIG"))
|
|
2705
|
+
|
|
2706
|
+
def readConsumedServiceInstanceConsumedEventGroups(self, element: ET.Element, instance: ConsumedServiceInstance):
|
|
2707
|
+
for child_element in self.findall(element, "CONSUMED-EVENT-GROUPS/*"):
|
|
2708
|
+
tag_name = self.getTagName(child_element)
|
|
2709
|
+
if tag_name == "CONSUMED-EVENT-GROUP":
|
|
2710
|
+
group = instance.createConsumedEventGroup(self.getShortName(child_element))
|
|
2711
|
+
self.readConsumedEventGroup(child_element, group)
|
|
2712
|
+
else:
|
|
2713
|
+
self.notImplemented("Unsupported ConsumedEventGroups <%s>" % tag_name)
|
|
2714
|
+
|
|
2715
|
+
def readConsumedServiceInstance(self, element: ET.Element, instance: ConsumedServiceInstance):
|
|
2716
|
+
self.readIdentifiable(element, instance)
|
|
2717
|
+
self.readConsumedServiceInstanceConsumedEventGroups(element, instance)
|
|
2718
|
+
instance.setProvidedServiceInstanceRef(self.getChildElementOptionalRefType(element, "PROVIDED-SERVICE-INSTANCE-REF"))
|
|
2719
|
+
instance.setSdClientConfig(self.getSdClientConfig(element, "SD-CLIENT-CONFIG"))
|
|
2720
|
+
|
|
2721
|
+
def readSocketAddressApplicationEndpointConsumedServiceInstances(self, element: ET.Element, end_point: ApplicationEndpoint):
|
|
2722
|
+
for child_element in self.findall(element, "CONSUMED-SERVICE-INSTANCES/*"):
|
|
2723
|
+
tag_name = self.getTagName(child_element)
|
|
2724
|
+
if tag_name == "CONSUMED-SERVICE-INSTANCE":
|
|
2725
|
+
instance = end_point.createConsumedServiceInstance(self.getShortName(child_element))
|
|
2726
|
+
self.readConsumedServiceInstance(child_element, instance)
|
|
2727
|
+
else:
|
|
2728
|
+
self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % tag_name)
|
|
2729
|
+
|
|
2730
|
+
def readSocketAddressApplicationEndpoint(self, element: ET.Element, address: SocketAddress):
|
|
2731
|
+
child_element = self.find(element, "APPLICATION-ENDPOINT")
|
|
2732
|
+
if child_element is not None:
|
|
2733
|
+
end_point = address.createApplicationEndpoint(self.getShortName(child_element))
|
|
2734
|
+
self.readSocketAddressApplicationEndpointConsumedServiceInstances(child_element, end_point)
|
|
2735
|
+
end_point.setNetworkEndpointRef(self.getChildElementOptionalRefType(child_element, "NETWORK-ENDPOINT-REF")) \
|
|
2736
|
+
.setPriority(self.getChildElementOptionalPositiveInteger(child_element, "PRIORITY")) \
|
|
2737
|
+
.setTpConfiguration(self.getTransportProtocolConfiguration(child_element, "TP-CONFIGURATION"))
|
|
2738
|
+
|
|
2739
|
+
def readSocketAddressMulticastConnectorRefs(self, element: ET.Element, address: SocketAddress):
|
|
2740
|
+
for ref in self.getChildElementRefTypeList(element, "MULTICAST-CONNECTOR-REFS/MULTICAST-CONNECTOR-REF"):
|
|
2741
|
+
address.addMulticastConnectorRef(ref)
|
|
2742
|
+
|
|
2563
2743
|
def readSocketAddress(self, element: ET.Element, address: SocketAddress):
|
|
2564
|
-
self.
|
|
2565
|
-
|
|
2744
|
+
self.readIdentifiable(element, address)
|
|
2745
|
+
self.readSocketAddressApplicationEndpoint(element, address)
|
|
2746
|
+
self.readSocketAddressMulticastConnectorRefs(element, address)
|
|
2747
|
+
address.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF")) \
|
|
2748
|
+
.setPortAddress(self.getChildElementOptionalPositiveInteger(element, "PORT-ADDRESS"))
|
|
2749
|
+
|
|
2566
2750
|
|
|
2567
2751
|
def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
|
|
2568
2752
|
for child_element in self.findall(element, "SOCKET-ADDRESSS/*"):
|
|
2569
2753
|
tag_name = self.getTagName(child_element)
|
|
2570
2754
|
if tag_name == "SOCKET-ADDRESS":
|
|
2571
|
-
|
|
2572
|
-
self.readSocketAddress(child_element,
|
|
2755
|
+
address = config.createSocketAddress(self.getShortName(child_element))
|
|
2756
|
+
self.readSocketAddress(child_element, address)
|
|
2573
2757
|
else:
|
|
2574
|
-
self.notImplemented("Unsupported
|
|
2758
|
+
self.notImplemented("Unsupported Socket Address <%s>" % tag_name)
|
|
2575
2759
|
|
|
2576
2760
|
def getSoAdConfig(self, element: ET.Element, key: str) -> SoAdConfig:
|
|
2577
2761
|
child_element = self.find(element, key)
|
|
@@ -2581,12 +2765,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2581
2765
|
self.readSoAdConfigConnectionBundles(child_element, config)
|
|
2582
2766
|
self.readSoAdConfigSocketAddresses(child_element, config)
|
|
2583
2767
|
return config
|
|
2768
|
+
|
|
2769
|
+
def readEthernetPhysicalChannelVlan(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2770
|
+
child_element = self.find(element, "VLAN")
|
|
2771
|
+
if child_element is not None:
|
|
2772
|
+
vlan = channel.createVlanConfig(self.getShortName(child_element))
|
|
2773
|
+
vlan.setVlanIdentifier(self.getChildElementOptionalPositiveInteger(child_element, "VLAN-IDENTIFIER"))
|
|
2584
2774
|
|
|
2585
2775
|
def readEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2586
2776
|
self.readIdentifiable(element, channel)
|
|
2587
2777
|
self.readPhysicalChannel(element, channel)
|
|
2588
2778
|
self.readEthernetPhysicalChannelNetworkEndPoints(element, channel)
|
|
2589
2779
|
channel.setSoAdConfig(self.getSoAdConfig(element, "SO-AD-CONFIG"))
|
|
2780
|
+
self.readEthernetPhysicalChannelVlan(element, channel)
|
|
2590
2781
|
|
|
2591
2782
|
def readCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2592
2783
|
for child_element in self.findall(element, "PHYSICAL-CHANNELS/*"):
|
|
@@ -2609,9 +2800,20 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2609
2800
|
self.readCommunicationClusterPhysicalChannels(element, cluster)
|
|
2610
2801
|
cluster.setProtocolName(self.getChildElementOptionalLiteral(element, "PROTOCOL-NAME")) \
|
|
2611
2802
|
.setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
|
|
2612
|
-
|
|
2803
|
+
|
|
2804
|
+
def getCanClusterBusOffRecovery(self, element: ET.Element, key: str) -> CanClusterBusOffRecovery:
|
|
2805
|
+
recovery = None
|
|
2806
|
+
child_element = self.find(element, key)
|
|
2807
|
+
if child_element is not None:
|
|
2808
|
+
recovery = CanClusterBusOffRecovery()
|
|
2809
|
+
recovery.setBorCounterL1ToL2(self.getChildElementOptionalPositiveInteger(child_element, "BOR-COUNTER-L-1-TO-L-2")) \
|
|
2810
|
+
.setBorTimeL1(self.getChildElementOptionalTimeValue(child_element, "BOR-TIME-L-1")) \
|
|
2811
|
+
.setBorTimeL2(self.getChildElementOptionalTimeValue(child_element, "BOR-TIME-L-2"))
|
|
2812
|
+
return recovery
|
|
2813
|
+
|
|
2613
2814
|
def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
|
|
2614
|
-
cluster.
|
|
2815
|
+
cluster.setBusOffRecovery(self.getCanClusterBusOffRecovery(element, "BUS-OFF-RECOVERY")) \
|
|
2816
|
+
.setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE")) \
|
|
2615
2817
|
.setSpeed(self.getChildElementOptionalNumericalValue(element, "SPEED"))
|
|
2616
2818
|
|
|
2617
2819
|
def readLinCluster(self, element: ET.Element, parent: ARPackage):
|
|
@@ -2642,6 +2844,71 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2642
2844
|
if child_element is not None:
|
|
2643
2845
|
self.readCommunicationCluster(child_element, cluster)
|
|
2644
2846
|
|
|
2847
|
+
def readDiagnosticConnectionFunctionalRequestRefs(self, element: ET.Element, connection: DiagnosticConnection):
|
|
2848
|
+
for ref in self.getChildElementRefTypeList(element, "FUNCTIONAL-REQUEST-REFS/FUNCTIONAL-REQUEST-REF"):
|
|
2849
|
+
connection.addFunctionalRequestRef(ref)
|
|
2850
|
+
|
|
2851
|
+
def readDiagnosticConnection(self, element: ET.Element, connection: DiagnosticConnection):
|
|
2852
|
+
self.logger.debug("Read DiagnosticConnection %s" % connection.getShortName())
|
|
2853
|
+
self.readIdentifiable(element, connection)
|
|
2854
|
+
self.readDiagnosticConnectionFunctionalRequestRefs(element, connection)
|
|
2855
|
+
connection.setPhysicalRequestRef(self.getChildElementOptionalRefType(element, "PHYSICAL-REQUEST-REF")) \
|
|
2856
|
+
.setResponseOnEventRef(self.getChildElementOptionalRefType(element, "RESPONSE-REF"))
|
|
2857
|
+
|
|
2858
|
+
def readDiagnosticServiceTable(self, element: ET.Element, parent: ARPackage):
|
|
2859
|
+
short_name = self.getShortName(element)
|
|
2860
|
+
self.logger.debug("Read DiagnosticServiceTable %s" % short_name)
|
|
2861
|
+
table = parent.createDiagnosticServiceTable(short_name)
|
|
2862
|
+
self.readIdentifiable(element, table)
|
|
2863
|
+
|
|
2864
|
+
def readMultiplexedIPdu(self, element: ET.Element, parent: ARPackage):
|
|
2865
|
+
short_name = self.getShortName(element)
|
|
2866
|
+
self.logger.debug("Read MultiplexedIPdu %s" % short_name)
|
|
2867
|
+
i_pdu = parent.createMultiplexedIPdu(short_name)
|
|
2868
|
+
self.readIdentifiable(element, i_pdu)
|
|
2869
|
+
|
|
2870
|
+
def readUserDefinedIPdu(self, element: ET.Element, parent: ARPackage):
|
|
2871
|
+
short_name = self.getShortName(element)
|
|
2872
|
+
self.logger.debug("Read UserDefinedIPdu %s" % short_name)
|
|
2873
|
+
i_pdu = parent.createUserDefinedIPdu(short_name)
|
|
2874
|
+
self.readIdentifiable(element, i_pdu)
|
|
2875
|
+
|
|
2876
|
+
def readUserDefinedPdu(self, element: ET.Element, parent: ARPackage):
|
|
2877
|
+
short_name = self.getShortName(element)
|
|
2878
|
+
self.logger.debug("Read UserDefinedPdu %s" % short_name)
|
|
2879
|
+
pdu = parent.createUserDefinedPdu(short_name)
|
|
2880
|
+
self.readIdentifiable(element, pdu)
|
|
2881
|
+
|
|
2882
|
+
def readGeneralPurposePdu(self, element: ET.Element, parent: ARPackage):
|
|
2883
|
+
short_name = self.getShortName(element)
|
|
2884
|
+
self.logger.debug("Read GeneralPurposePdu %s" % short_name)
|
|
2885
|
+
pdu = parent.createGeneralPurposePdu(short_name)
|
|
2886
|
+
self.readIdentifiable(element, pdu)
|
|
2887
|
+
|
|
2888
|
+
def readGeneralPurposeIPdu(self, element: ET.Element, parent: ARPackage):
|
|
2889
|
+
short_name = self.getShortName(element)
|
|
2890
|
+
self.logger.debug("Read GeneralPurposeIPdu %s" % short_name)
|
|
2891
|
+
i_pdu = parent.createGeneralPurposeIPdu(short_name)
|
|
2892
|
+
self.readIdentifiable(element, i_pdu)
|
|
2893
|
+
|
|
2894
|
+
def readSecureCommunicationPropsSet(self, element: ET.Element, parent: ARPackage):
|
|
2895
|
+
short_name = self.getShortName(element)
|
|
2896
|
+
self.logger.debug("Read SecureCommunicationPropsSet %s" % short_name)
|
|
2897
|
+
prop_set = parent.createSecureCommunicationPropsSet(short_name)
|
|
2898
|
+
self.readIdentifiable(element, prop_set)
|
|
2899
|
+
|
|
2900
|
+
def readSoAdRoutingGroup(self, element: ET.Element, parent: ARPackage):
|
|
2901
|
+
short_name = self.getShortName(element)
|
|
2902
|
+
self.logger.debug("Read SoAdRoutingGroup %s" % short_name)
|
|
2903
|
+
group = parent.createSoAdRoutingGroup(short_name)
|
|
2904
|
+
self.readIdentifiable(element, group)
|
|
2905
|
+
|
|
2906
|
+
def readDoIpTpConfig(self, element: ET.Element, parent: ARPackage):
|
|
2907
|
+
short_name = self.getShortName(element)
|
|
2908
|
+
self.logger.debug("Read DoIpTpConfig %s" % short_name)
|
|
2909
|
+
group = parent.createDoIpTpConfig(short_name)
|
|
2910
|
+
self.readIdentifiable(element, group)
|
|
2911
|
+
|
|
2645
2912
|
def readPduToFrameMappings(self, element: ET.Element, parent: Frame):
|
|
2646
2913
|
for child_element in self.findall(element, "PDU-TO-FRAME-MAPPINGS/PDU-TO-FRAME-MAPPING"):
|
|
2647
2914
|
short_name = self.getShortName(child_element)
|
|
@@ -2696,6 +2963,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2696
2963
|
self.readIPdu(element, pdu)
|
|
2697
2964
|
|
|
2698
2965
|
def readNmNode(self, element: ET.Element, nm_node: NmNode):
|
|
2966
|
+
self.readIdentifiable(element, nm_node)
|
|
2967
|
+
|
|
2699
2968
|
nm_node.setControllerRef(self.getChildElementOptionalRefType(element, "CONTROLLER-REF")) \
|
|
2700
2969
|
.setNmIfEcuRef(self.getChildElementOptionalRefType(element, "NM-IF-ECU-REF")) \
|
|
2701
2970
|
.setNmNodeId(self.getChildElementOptionalNumericalValue(element, "NM-NODE-ID"))
|
|
@@ -2704,23 +2973,30 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2704
2973
|
for ref in self.getChildElementRefTypeList(element, "TX-NM-PDU-REFS/TX-NM-PDU-REF"):
|
|
2705
2974
|
nm_node.addTxNmPduRefs(ref)
|
|
2706
2975
|
|
|
2707
|
-
def readCanNmNode(self, element: ET.Element,
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
nm_node = parent.createCanNmNode(short_name) # type: CanNmNode
|
|
2711
|
-
self.readIdentifiable(element, nm_node)
|
|
2976
|
+
def readCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
|
|
2977
|
+
self.logger.debug("Read CanNmNode %s" % nm_node.getShortName())
|
|
2978
|
+
|
|
2712
2979
|
self.readNmNode(element, nm_node)
|
|
2713
2980
|
|
|
2714
2981
|
nm_node.setNmMsgCycleOffset(self.getChildElementOptionalFloatValue(element, "NM-MSG-CYCLE-OFFSET")) \
|
|
2715
2982
|
.setNmMsgReducedTime(self.getChildElementOptionalFloatValue(element, "NM-MSG-REDUCED-TIME")) \
|
|
2716
2983
|
.setNmRangeConfig(self.getChildElementRxIdentifierRange(element, "NM-RANGE-CONFIG"))
|
|
2984
|
+
|
|
2985
|
+
def readUdpNmNode(self, element: ET.Element, nm_node: UdpNmNode):
|
|
2986
|
+
self.logger.debug("Read UdpNmNode %s" % nm_node.getShortName())
|
|
2987
|
+
|
|
2988
|
+
self.readNmNode(element, nm_node)
|
|
2717
2989
|
|
|
2718
2990
|
def readNmClusterNmNodes(self, element: ET.Element, parent: NmCluster):
|
|
2719
2991
|
self.logger.debug("readNmConfigNmNodes %s" % parent.getShortName())
|
|
2720
2992
|
for child_element in self.findall(element, "NM-NODES/*"):
|
|
2721
2993
|
tag_name = self.getTagName(child_element)
|
|
2722
2994
|
if tag_name == "CAN-NM-NODE":
|
|
2723
|
-
self.
|
|
2995
|
+
nm_node = parent.createCanNmNode(self.getShortName(child_element))
|
|
2996
|
+
self.readCanNmNode(child_element, nm_node)
|
|
2997
|
+
elif tag_name == "UDP-NM-NODE":
|
|
2998
|
+
nm_node = parent.readUdpNmNode(self.getShortName(child_element))
|
|
2999
|
+
self.readUdpNmNode(child_element, nm_node)
|
|
2724
3000
|
else:
|
|
2725
3001
|
self._raiseError("Unsupported Nm Node <%s>" % tag_name)
|
|
2726
3002
|
|
|
@@ -2734,6 +3010,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2734
3010
|
.setNmImmediateRestartEnabled(self.getChildElementOptionalBooleanValue(element, "NM-IMMEDIATE-RESTART-ENABLED"))
|
|
2735
3011
|
|
|
2736
3012
|
return coupling
|
|
3013
|
+
|
|
3014
|
+
def getUdpNmClusterCoupling(self, element: ET.Element) -> UdpNmClusterCoupling:
|
|
3015
|
+
coupling = UdpNmClusterCoupling()
|
|
3016
|
+
return coupling
|
|
2737
3017
|
|
|
2738
3018
|
def readNmConfigNmClusterCouplings(self, element: ET.Element, nm_config: NmConfig):
|
|
2739
3019
|
self.logger.debug("readNmClusterNmClusterCouplings %s" % nm_config.getShortName())
|
|
@@ -2741,10 +3021,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2741
3021
|
tag_name = self.getTagName(child_element)
|
|
2742
3022
|
if tag_name == "CAN-NM-CLUSTER-COUPLING":
|
|
2743
3023
|
nm_config.addNmClusterCouplings(self.getCanNmClusterCoupling(child_element))
|
|
3024
|
+
elif tag_name == "UDP-NM-CLUSTER-COUPLING":
|
|
3025
|
+
nm_config.addNmClusterCouplings(self.getUdpNmClusterCoupling(child_element))
|
|
2744
3026
|
else:
|
|
2745
|
-
self.
|
|
3027
|
+
self.notImplemented("Unsupported Nm Node <%s>" % tag_name)
|
|
2746
3028
|
|
|
2747
3029
|
def readNmCluster(self, element: ET.Element, cluster: NmCluster):
|
|
3030
|
+
self.readIdentifiable(element, cluster)
|
|
2748
3031
|
cluster.setCommunicationClusterRef(self.getChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF")) \
|
|
2749
3032
|
.setNmChannelId(self.getChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID")) \
|
|
2750
3033
|
.setNmChannelSleepMaster(self.getChildElementOptionalBooleanValue(element, "NM-CHANNEL-SLEEP-MASTER"))
|
|
@@ -2755,7 +3038,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2755
3038
|
short_name = self.getShortName(element)
|
|
2756
3039
|
self.logger.debug("readCanNmCluster %s" % short_name)
|
|
2757
3040
|
cluster = parent.createCanNmCluster(short_name) # type: CanNmCluster
|
|
2758
|
-
self.readIdentifiable(element, cluster)
|
|
2759
3041
|
self.readNmCluster(element, cluster)
|
|
2760
3042
|
|
|
2761
3043
|
cluster.setNmBusloadReductionActive(self.getChildElementOptionalBooleanValue(element, "NM-BUSLOAD-REDUCTION-ACTIVE")) \
|
|
@@ -2773,11 +3055,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2773
3055
|
.setNmUserDataLength(self. getChildElementOptionalNumericalValue(element, "NM-USER-DATA-LENGTH")) \
|
|
2774
3056
|
.setNmWaitBusSleepTime(self.getChildElementOptionalFloatValue(element, "NM-WAIT-BUS-SLEEP-TIME"))
|
|
2775
3057
|
|
|
3058
|
+
def readUdpNmCluster(self, element: ET.Element, parent: NmConfig):
|
|
3059
|
+
short_name = self.getShortName(element)
|
|
3060
|
+
self.logger.debug("readCanNmCluster %s" % short_name)
|
|
3061
|
+
cluster = parent.createUdpNmCluster(short_name) # type: CanNmCluster
|
|
3062
|
+
self.readNmCluster(element, cluster)
|
|
3063
|
+
|
|
2776
3064
|
def readNmConfigNmClusters(self, element: ET.Element, parent: NmConfig):
|
|
2777
3065
|
for child_element in self.findall(element, "NM-CLUSTERS/*"):
|
|
2778
3066
|
tag_name = self.getTagName(child_element)
|
|
2779
3067
|
if tag_name == "CAN-NM-CLUSTER":
|
|
2780
3068
|
self.readCanNmCluster(child_element, parent)
|
|
3069
|
+
elif tag_name == "UDP-NM-CLUSTER":
|
|
3070
|
+
self.readUdpNmCluster(child_element, parent)
|
|
2781
3071
|
else:
|
|
2782
3072
|
self._raiseError("Unsupported Nm Cluster <%s>" % tag_name)
|
|
2783
3073
|
|
|
@@ -2806,7 +3096,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2806
3096
|
self.readIdentifiable(element, controller)
|
|
2807
3097
|
|
|
2808
3098
|
def readEthernetCommunicationController(self, element: ET.Element, controller: EthernetCommunicationController):
|
|
2809
|
-
self.logger.debug("Read
|
|
3099
|
+
self.logger.debug("Read EthernetCommunicationController %s" % controller.getShortName())
|
|
3100
|
+
self.readIdentifiable(element, controller)
|
|
3101
|
+
|
|
3102
|
+
def readLinMaster(self, element: ET.Element, controller: LinMaster):
|
|
3103
|
+
self.logger.debug("Read LinMaster %s" % controller.getShortName())
|
|
2810
3104
|
self.readIdentifiable(element, controller)
|
|
2811
3105
|
|
|
2812
3106
|
def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
|
|
@@ -2819,6 +3113,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2819
3113
|
elif tag_name == "ETHERNET-COMMUNICATION-CONTROLLER":
|
|
2820
3114
|
controller = instance.createEthernetCommunicationController(self.getShortName(child_element))
|
|
2821
3115
|
self.readEthernetCommunicationController(child_element, controller)
|
|
3116
|
+
elif tag_name == "LIN-MASTER":
|
|
3117
|
+
controller = instance.createLinMaster(self.getShortName(child_element))
|
|
3118
|
+
self.readLinMaster(child_element, controller)
|
|
2822
3119
|
else:
|
|
2823
3120
|
self._raiseError("Unsupported Communication Controller <%s>" % tag_name)
|
|
2824
3121
|
|
|
@@ -2859,7 +3156,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2859
3156
|
def readCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
|
|
2860
3157
|
self.readCommunicationConnector(element, connector)
|
|
2861
3158
|
|
|
2862
|
-
def readEthernetCommunicationConnector(self, element: ET.Element, connector:
|
|
3159
|
+
def readEthernetCommunicationConnector(self, element: ET.Element, connector: EthernetCommunicationConnector):
|
|
3160
|
+
self.readCommunicationConnector(element, connector)
|
|
3161
|
+
|
|
3162
|
+
def readLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
|
|
2863
3163
|
self.readCommunicationConnector(element, connector)
|
|
2864
3164
|
|
|
2865
3165
|
def readEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
|
|
@@ -2872,6 +3172,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2872
3172
|
elif tag_name == "ETHERNET-COMMUNICATION-CONNECTOR":
|
|
2873
3173
|
connector = instance.createEthernetCommunicationConnector(self.getShortName(child_element))
|
|
2874
3174
|
self.readEthernetCommunicationConnector(child_element, connector)
|
|
3175
|
+
elif tag_name == "LIN-COMMUNICATION-CONNECTOR":
|
|
3176
|
+
connector = instance.createLinCommunicationConnector(self.getShortName(child_element))
|
|
3177
|
+
self.readLinCommunicationConnector(child_element, connector)
|
|
2875
3178
|
else:
|
|
2876
3179
|
self._raiseError("Unsupported Communication Connector <%s>" % tag_name)
|
|
2877
3180
|
|
|
@@ -3367,8 +3670,6 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3367
3670
|
self.readIdentifiable(element, mapping_set)
|
|
3368
3671
|
self.readPortInterfaceMappings(element, mapping_set)
|
|
3369
3672
|
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
3673
|
def readARPackageElements(self, element: ET.Element, parent: ARPackage):
|
|
3373
3674
|
for child_element in self.findall(element, "ELEMENTS/*"):
|
|
3374
3675
|
tag_name = self.getTagName(child_element.tag)
|
|
@@ -3415,6 +3716,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3415
3716
|
elif tag_name == "APPLICATION-ARRAY-DATA-TYPE":
|
|
3416
3717
|
self.readApplicationArrayDataType(child_element, parent)
|
|
3417
3718
|
elif tag_name == "SW-RECORD-LAYOUT":
|
|
3719
|
+
|
|
3418
3720
|
self.readSwRecordLayout(child_element, parent)
|
|
3419
3721
|
elif tag_name == "SW-ADDR-METHOD":
|
|
3420
3722
|
self.readSwAddrMethod(child_element, parent)
|
|
@@ -3490,6 +3792,27 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3490
3792
|
self.readPortInterfaceMappingSet(child_element, parent)
|
|
3491
3793
|
elif tag_name == "ETHERNET-CLUSTER":
|
|
3492
3794
|
self.readEthernetCluster(child_element, parent)
|
|
3795
|
+
elif tag_name == "DIAGNOSTIC-CONNECTION":
|
|
3796
|
+
connection = parent.createDiagnosticConnection(self.getShortName(child_element))
|
|
3797
|
+
self.readDiagnosticConnection(child_element, connection)
|
|
3798
|
+
elif tag_name == "DIAGNOSTIC-SERVICE-TABLE":
|
|
3799
|
+
self.readDiagnosticServiceTable(child_element, parent)
|
|
3800
|
+
elif tag_name == "MULTIPLEXED-I-PDU":
|
|
3801
|
+
self.readMultiplexedIPdu(child_element, parent)
|
|
3802
|
+
elif tag_name == "USER-DEFINED-I-PDU":
|
|
3803
|
+
self.readUserDefinedIPdu(child_element, parent)
|
|
3804
|
+
elif tag_name == "USER-DEFINED-PDU":
|
|
3805
|
+
self.readUserDefinedPdu(child_element, parent)
|
|
3806
|
+
elif tag_name == "GENERAL-PURPOSE-PDU":
|
|
3807
|
+
self.readGeneralPurposePdu(child_element, parent)
|
|
3808
|
+
elif tag_name == "GENERAL-PURPOSE-I-PDU":
|
|
3809
|
+
self.readGeneralPurposeIPdu(child_element, parent)
|
|
3810
|
+
elif tag_name == "SECURE-COMMUNICATION-PROPS-SET":
|
|
3811
|
+
self.readSecureCommunicationPropsSet(child_element, parent)
|
|
3812
|
+
elif tag_name == "SO-AD-ROUTING-GROUP":
|
|
3813
|
+
self.readSoAdRoutingGroup(child_element, parent)
|
|
3814
|
+
elif tag_name == "DO-IP-TP-CONFIG":
|
|
3815
|
+
self.readDoIpTpConfig(child_element, parent)
|
|
3493
3816
|
else:
|
|
3494
3817
|
self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
|
|
3495
3818
|
|