armodel 1.7.3__py3-none-any.whl → 1.7.4__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/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +2 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +1 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +6 -7
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +7 -1
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +28 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +17 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AutosarVariableRef.py +31 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/DataElements.py +4 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/InstanceRefsUsage.py +17 -32
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +4 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +7 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +47 -15
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetCommunication.py +229 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +167 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/NetworkEndpoint.py +225 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +96 -7
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +47 -4
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +18 -5
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +7 -12
- armodel/models/M2/MSR/AsamHdo/BaseTypes.py +0 -1
- armodel/models/__init__.py +3 -0
- armodel/parser/arxml_parser.py +222 -46
- armodel/tests/test_armodel/models/test_ar_ref.py +2 -2
- armodel/writer/abstract_arxml_writer.py +1 -3
- armodel/writer/arxml_writer.py +256 -103
- {armodel-1.7.3.dist-info → armodel-1.7.4.dist-info}/METADATA +17 -2
- {armodel-1.7.3.dist-info → armodel-1.7.4.dist-info}/RECORD +31 -27
- {armodel-1.7.3.dist-info → armodel-1.7.4.dist-info}/LICENSE +0 -0
- {armodel-1.7.3.dist-info → armodel-1.7.4.dist-info}/WHEEL +0 -0
- {armodel-1.7.3.dist-info → armodel-1.7.4.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.3.dist-info → armodel-1.7.4.dist-info}/top_level.txt +0 -0
armodel/models/__init__.py
CHANGED
|
@@ -60,6 +60,9 @@ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import
|
|
|
60
60
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import *
|
|
61
61
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import *
|
|
62
62
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import *
|
|
63
|
+
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import *
|
|
64
|
+
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import *
|
|
65
|
+
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import *
|
|
63
66
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import *
|
|
64
67
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import *
|
|
65
68
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import *
|
armodel/parser/arxml_parser.py
CHANGED
|
@@ -2,10 +2,6 @@ from typing import List
|
|
|
2
2
|
import xml.etree.ElementTree as ET
|
|
3
3
|
import os
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
5
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
10
6
|
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition
|
|
11
7
|
from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
|
|
@@ -51,20 +47,21 @@ from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyI
|
|
|
51
47
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable
|
|
52
48
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
|
|
53
49
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
|
|
54
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral
|
|
50
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Ip6AddressString, RefType, ARLiteral
|
|
55
51
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
|
|
56
52
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent
|
|
57
53
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationRecordDataType, ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
|
|
58
54
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet, EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
|
|
59
55
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
60
56
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
61
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef,
|
|
57
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, VariableInAtomicSWCTypeInstanceRef
|
|
62
58
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
|
|
63
59
|
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
61
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
65
62
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
|
|
63
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
|
|
66
64
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
67
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, CompositionSwComponentType, PortGroup, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
|
|
68
65
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector
|
|
69
66
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
|
|
70
67
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
@@ -78,12 +75,16 @@ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiv
|
|
|
78
75
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
|
|
79
76
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
|
|
80
77
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering
|
|
81
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, FramePort, IPduPort, ISignalPort, LinPhysicalChannel, PhysicalChannel
|
|
78
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinPhysicalChannel, PhysicalChannel
|
|
82
79
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import Frame, FrameTriggering, IPdu, IPduTiming, ISignalIPdu, ISignalTriggering, PduTriggering
|
|
83
80
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
84
81
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
85
82
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering, RxIdentifierRange
|
|
86
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
|
|
87
88
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import ISignalMapping
|
|
88
89
|
|
|
89
90
|
from .abstract_arxml_parser import AbstractARXMLParser
|
|
@@ -205,17 +206,18 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
205
206
|
iref.setTargetComponentRef(self.getChildElementOptionalRefType(element, "TARGET-COMPONENT-REF"))
|
|
206
207
|
return iref
|
|
207
208
|
|
|
208
|
-
def
|
|
209
|
-
child_element = self.find(element,
|
|
209
|
+
def getAutosarVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
|
|
210
|
+
child_element = self.find(element, key)
|
|
210
211
|
ref = None
|
|
211
212
|
if (child_element is not None):
|
|
212
213
|
ref = AutosarVariableRef()
|
|
213
214
|
#self.readARObjectAttributes(child_element, ref)
|
|
214
|
-
ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF")))
|
|
215
|
+
ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF"))) \
|
|
216
|
+
.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
|
|
215
217
|
return ref
|
|
216
218
|
|
|
217
|
-
def getLocalVariableRef(self, element: ET.Element) -> AutosarVariableRef:
|
|
218
|
-
child_element = self.find(element,
|
|
219
|
+
def getLocalVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
|
|
220
|
+
child_element = self.find(element, key)
|
|
219
221
|
ref = None
|
|
220
222
|
if (child_element is not None):
|
|
221
223
|
ref = AutosarVariableRef()
|
|
@@ -230,25 +232,25 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
230
232
|
|
|
231
233
|
if (key == "DATA-RECEIVE-POINT-BY-ARGUMENTS"):
|
|
232
234
|
variable_access = parent.createDataReceivePointByArgument(short_name)
|
|
233
|
-
variable_access.setAccessedVariableRef(self.
|
|
235
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
234
236
|
elif (key == "DATA-RECEIVE-POINT-BY-VALUES"):
|
|
235
237
|
variable_access = parent.createDataReceivePointByValue(short_name)
|
|
236
|
-
variable_access.setAccessedVariableRef(self.
|
|
238
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
237
239
|
elif (key == "DATA-READ-ACCESSS"):
|
|
238
240
|
variable_access = parent.createDataReadAccess(short_name)
|
|
239
|
-
variable_access.setAccessedVariableRef(self.
|
|
241
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
240
242
|
elif (key == "DATA-WRITE-ACCESSS"):
|
|
241
243
|
variable_access = parent.createDataWriteAccess(short_name)
|
|
242
|
-
variable_access.setAccessedVariableRef(self.
|
|
244
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
243
245
|
elif (key == "DATA-SEND-POINTS"):
|
|
244
246
|
variable_access = parent.createDataSendPoint(short_name)
|
|
245
|
-
variable_access.setAccessedVariableRef(self.
|
|
247
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
246
248
|
elif (key == "WRITTEN-LOCAL-VARIABLES"):
|
|
247
249
|
variable_access = parent.createWrittenLocalVariable(short_name)
|
|
248
|
-
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element))
|
|
250
|
+
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
249
251
|
elif (key == "READ-LOCAL-VARIABLES"):
|
|
250
252
|
variable_access = parent.createReadLocalVariable(short_name)
|
|
251
|
-
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element))
|
|
253
|
+
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
252
254
|
else:
|
|
253
255
|
self.notImplemented("Unsupported Variable Accesss <%s>" % key)
|
|
254
256
|
|
|
@@ -369,6 +371,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
369
371
|
def getRoleBasedDataAssignment(self, element: ET.Element) -> RoleBasedDataAssignment:
|
|
370
372
|
assignment = RoleBasedDataAssignment()
|
|
371
373
|
assignment.setRole(self.getChildElementOptionalLiteral(element, "ROLE")) \
|
|
374
|
+
.setUsedDataElement(self.getAutosarVariableRef(element, "USED-DATA-ELEMENT")) \
|
|
372
375
|
.setUsedParameterElement(self.getAutosarParameterRef(element, "USED-PARAMETER-ELEMENT")) \
|
|
373
376
|
.setUsedPimRef(self.getChildElementOptionalRefType(element, "USED-PIM-REF"))
|
|
374
377
|
return assignment
|
|
@@ -432,6 +435,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
432
435
|
.setUseCRCCompMechanism(self.getChildElementOptionalBooleanValue(element, "USE-CRC-COMP-MECHANISM")) \
|
|
433
436
|
.setWriteOnlyOnce(self.getChildElementOptionalBooleanValue(element, "WRITE-ONLY-ONCE")) \
|
|
434
437
|
.setWriteVerification(self.getChildElementOptionalBooleanValue(element, "WRITE-VERIFICATION")) \
|
|
438
|
+
.setWritingFrequency(self.getChildElementOptionalPositiveInteger(element, "WRITING-FREQUENCY")) \
|
|
435
439
|
.setWritingPriority(self.getChildElementOptionalLiteral(element, "WRITING-PRIORITY"))
|
|
436
440
|
|
|
437
441
|
def reaDiagnosticCommunicationManagerNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
@@ -475,16 +479,23 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
475
479
|
def readDiagnosticEventNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
476
480
|
short_name = self.getShortName(element)
|
|
477
481
|
needs = parent.createDiagnosticEventNeeds(short_name)
|
|
478
|
-
self.logger.debug("
|
|
482
|
+
self.logger.debug("Read DiagnosticEventNeeds %s" % short_name)
|
|
479
483
|
self.readIdentifiable(element, needs)
|
|
480
484
|
self.readDiagEventDebounceAlgorithm(element, needs)
|
|
481
485
|
needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND")) \
|
|
482
|
-
.setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
|
|
486
|
+
.setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
|
|
487
|
+
|
|
488
|
+
def readDiagnosticEventInfoNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
489
|
+
short_name = self.getShortName(element)
|
|
490
|
+
needs = parent.createDiagnosticEventInfoNeeds(short_name)
|
|
491
|
+
self.logger.debug("Read DiagnosticEventInfoNeeds %s" % short_name)
|
|
492
|
+
self.readIdentifiable(element, needs)
|
|
493
|
+
needs.setUdsDtcNumber(self.getChildElementOptionalPositiveInteger(element, "UDS-DTC-NUMBER"))
|
|
483
494
|
|
|
484
495
|
def readCryptoServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
485
496
|
short_name = self.getShortName(element)
|
|
486
497
|
needs = parent.createCryptoServiceNeeds(short_name)
|
|
487
|
-
self.logger.debug("
|
|
498
|
+
self.logger.debug("Read DiagnosticValueNeeds %s" % short_name)
|
|
488
499
|
self.readIdentifiable(element, needs)
|
|
489
500
|
needs.setMaximumKeyLength(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-KEY-LENGTH"))
|
|
490
501
|
|
|
@@ -507,6 +518,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
507
518
|
self.readDiagnosticValueNeeds(child_element, parent)
|
|
508
519
|
elif tag_name == "DIAGNOSTIC-EVENT-NEEDS":
|
|
509
520
|
self.readDiagnosticEventNeeds(child_element, parent)
|
|
521
|
+
elif tag_name == "DIAGNOSTIC-EVENT-INFO-NEEDS":
|
|
522
|
+
self.readDiagnosticEventInfoNeeds(child_element, parent)
|
|
510
523
|
elif tag_name == "CRYPTO-SERVICE-NEEDS":
|
|
511
524
|
self.readCryptoServiceNeeds(child_element, parent)
|
|
512
525
|
elif tag_name == "ECU-STATE-MGR-USER-NEEDS":
|
|
@@ -540,6 +553,18 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
540
553
|
include_data_type_set.addDataTypeRef(ref_type)
|
|
541
554
|
include_data_type_sets.append(include_data_type_set)
|
|
542
555
|
return include_data_type_sets
|
|
556
|
+
|
|
557
|
+
def readSwcInternalBehaviorArTypedPerInstanceMemories(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
558
|
+
for child_element in self.findall(element, "AR-TYPED-PER-INSTANCE-MEMORYS/VARIABLE-DATA-PROTOTYPE"):
|
|
559
|
+
short_name = self.getShortName(child_element)
|
|
560
|
+
prototype = parent.createArTypedPerInstanceMemory(short_name)
|
|
561
|
+
self.readVariableDataPrototype(child_element, prototype)
|
|
562
|
+
|
|
563
|
+
def readSwcInternalBehaviorSharedParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
564
|
+
for child_element in self.findall(element, "SHARED-PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
565
|
+
short_name = self.getShortName(child_element)
|
|
566
|
+
prototype = behavior.createSharedParameter(short_name)
|
|
567
|
+
self.readParameterDataPrototype(child_element, prototype)
|
|
543
568
|
|
|
544
569
|
def readSwcInternalBehavior(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
545
570
|
for child_element in self.findall(element, "INTERNAL-BEHAVIORS/SWC-INTERNAL-BEHAVIOR"):
|
|
@@ -551,16 +576,17 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
551
576
|
self.readInternalBehavior(child_element, behavior)
|
|
552
577
|
|
|
553
578
|
# read the extra SwcInternalBehavior
|
|
579
|
+
self.readSwcInternalBehaviorArTypedPerInstanceMemories(child_element, behavior)
|
|
554
580
|
self.readSwcInternalBehaviorRunnables(child_element, behavior)
|
|
555
581
|
self.readSwcInternalBehaviorEvents(child_element, behavior)
|
|
556
582
|
self.readSwcInternalBehaviorServiceDependencies(child_element, behavior)
|
|
557
583
|
self.readExplicitInterRunnableVariables(child_element, behavior)
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
behavior.handleTerminationAndRestart = self.getChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART")
|
|
584
|
+
|
|
585
|
+
behavior.setHandleTerminationAndRestart(self.getChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART"))
|
|
561
586
|
self.readPerInstanceMemories(child_element, behavior)
|
|
562
587
|
self.readPerInstanceParameters(child_element, behavior)
|
|
563
588
|
self.readPortAPIOptions(child_element, behavior)
|
|
589
|
+
self.readSwcInternalBehaviorSharedParameters(child_element, behavior)
|
|
564
590
|
behavior.setSupportsMultipleInstantiation(self.getChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION"))
|
|
565
591
|
|
|
566
592
|
def getIncludedModeDeclarationGroupSets(self, element: ET.Element) -> List[IncludedModeDeclarationGroupSet]:
|
|
@@ -799,21 +825,21 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
799
825
|
argument = RunnableEntityArgument()
|
|
800
826
|
argument.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
801
827
|
return argument
|
|
802
|
-
|
|
828
|
+
|
|
803
829
|
def getAutosarParameterRef(self, element: ET.Element, key: str) -> AutosarParameterRef:
|
|
804
|
-
|
|
830
|
+
parameter = None
|
|
805
831
|
child_element = self.find(element, key)
|
|
806
832
|
if child_element is not None:
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
return
|
|
833
|
+
parameter = AutosarParameterRef()
|
|
834
|
+
parameter.setLocalParameterRef(self.getChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF"))
|
|
835
|
+
return parameter
|
|
810
836
|
|
|
811
837
|
def readParameterAccesses(self, element: ET.Element, parent: RunnableEntity):
|
|
812
838
|
for child_element in self.findall(element, "PARAMETER-ACCESSS/PARAMETER-ACCESS"):
|
|
813
839
|
short_name = self.getShortName(child_element)
|
|
814
840
|
self.logger.debug("readParameterAccesses %s" % short_name)
|
|
815
841
|
parameter_access = parent.createParameterAccess(short_name)
|
|
816
|
-
parameter_access.
|
|
842
|
+
parameter_access.setAccessedParameter(self.getAutosarParameterRef(child_element, "ACCESSED-PARAMETER"))
|
|
817
843
|
|
|
818
844
|
def readWrittenLocalVariables(self, element: ET.Element, parent: RunnableEntity):
|
|
819
845
|
self._readVariableAccesses(element, parent, "WRITTEN-LOCAL-VARIABLES")
|
|
@@ -991,7 +1017,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
991
1017
|
def readVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
|
|
992
1018
|
self.readAutosarDataPrototype(element, prototype)
|
|
993
1019
|
prototype.setInitValue(self.getInitValue(element))
|
|
994
|
-
|
|
1020
|
+
|
|
995
1021
|
def readExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
996
1022
|
for child_element in self.findall(element, "EXPLICIT-INTER-RUNNABLE-VARIABLES/VARIABLE-DATA-PROTOTYPE"):
|
|
997
1023
|
short_name = self.getShortName(child_element)
|
|
@@ -1016,7 +1042,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1016
1042
|
self.readIdentifiable(element, prototype)
|
|
1017
1043
|
self.readAutosarDataPrototype(element, prototype)
|
|
1018
1044
|
prototype.setInitValue(self.getInitValue(element))
|
|
1019
|
-
|
|
1045
|
+
|
|
1020
1046
|
def readPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1021
1047
|
for child_element in self.findall(element, "PER-INSTANCE-PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
1022
1048
|
short_name = self.getShortName(child_element)
|
|
@@ -1356,16 +1382,17 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1356
1382
|
'''
|
|
1357
1383
|
|
|
1358
1384
|
def readBaseTypeDirectDefinition(self, element: ET.Element, definition: BaseTypeDirectDefinition):
|
|
1359
|
-
definition.
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1385
|
+
definition.setBaseTypeSize(self.getChildElementOptionalNumericalValue(element, "BASE-TYPE-SIZE")) \
|
|
1386
|
+
.setBaseTypeEncoding(self.getChildElementOptionalLiteral(element, "BASE-TYPE-ENCODING")) \
|
|
1387
|
+
.setByteOrder(self.getChildElementOptionalLiteral(element, "BYTE-ORDER")) \
|
|
1388
|
+
.setMemAlignment(self.getChildElementOptionalNumericalValue(element, "MEM-ALIGNMENT")) \
|
|
1389
|
+
.setNativeDeclaration(self.getChildElementOptionalLiteral(element, "NATIVE-DECLARATION"))
|
|
1363
1390
|
|
|
1364
1391
|
def readSwBaseType(self, element: ET.Element, parent: ARPackage):
|
|
1365
1392
|
short_name = self.getShortName(element)
|
|
1366
1393
|
data_type = parent.createSwBaseType(short_name)
|
|
1367
1394
|
self.readIdentifiable(element, data_type)
|
|
1368
|
-
self.readBaseTypeDirectDefinition(element, data_type.
|
|
1395
|
+
self.readBaseTypeDirectDefinition(element, data_type.getBaseTypeDefinition())
|
|
1369
1396
|
|
|
1370
1397
|
def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key:str) -> ApplicationCompositeElementInPortInterfaceInstanceRef:
|
|
1371
1398
|
child_element = self.find(element, key)
|
|
@@ -1464,7 +1491,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1464
1491
|
def getModeSwitchReceiverComSpec(self, element: ET.Element) -> ModeSwitchReceiverComSpec:
|
|
1465
1492
|
com_spec = ModeSwitchReceiverComSpec()
|
|
1466
1493
|
self.readARObjectAttributes(element, com_spec)
|
|
1467
|
-
com_spec.
|
|
1494
|
+
com_spec.setEnhancedModeApi(self.getChildElementOptionalBooleanValue(element, "ENHANCED-MODE-API")) \
|
|
1495
|
+
.setModeGroupRef(self.getChildElementOptionalRefType(element, "MODE-GROUP-REF")) \
|
|
1496
|
+
.setSupportsAsynchronousModeSwitch(self.getChildElementOptionalBooleanValue(element, "SUPPORTS-ASYNCHRONOUS-MODE-SWITCH"))
|
|
1468
1497
|
return com_spec
|
|
1469
1498
|
|
|
1470
1499
|
def getNonqueuedReceiverComSpec(self, element: ET.Element) -> NonqueuedReceiverComSpec:
|
|
@@ -2446,6 +2475,119 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2446
2475
|
self.readIdentifiable(element, channel)
|
|
2447
2476
|
self.readPhysicalChannel(element, channel)
|
|
2448
2477
|
|
|
2478
|
+
def getIpv6Configuration(self, element: ET.Element) -> Ipv6Configuration:
|
|
2479
|
+
configuration = None
|
|
2480
|
+
if element is not None:
|
|
2481
|
+
configuration = Ipv6Configuration()
|
|
2482
|
+
configuration.setAssignmentPriority(self.getChildElementOptionalPositiveInteger(element, "ASSIGNMENT-PRIORITY")) \
|
|
2483
|
+
.setDefaultRouter(self.getChildElementOptionalLiteral(element, "DEFAULT-ROUTER")) \
|
|
2484
|
+
.setEnableAnycast(self.getChildElementOptionalBooleanValue(element, "ENABLE-ANYCAST")) \
|
|
2485
|
+
.setHopCount(self.getChildElementOptionalPositiveInteger(element, "HOP-COUNT")) \
|
|
2486
|
+
.setIpAddressPrefixLength(self.getChildElementOptionalPositiveInteger(element, "IP-ADDRESS-PREFIX-LENGTH")) \
|
|
2487
|
+
.setIpv6Address(self.getChildElementOptionalLiteral(element, "IPV-6-ADDRESS")) \
|
|
2488
|
+
.setIpv6AddressSource(self.getChildElementOptionalLiteral(element, "IPV-6-ADDRESS-SOURCE"))
|
|
2489
|
+
return configuration
|
|
2490
|
+
|
|
2491
|
+
def readNetworkEndPointNetworkEndPointAddress(self, element: ET.Element, end_point: NetworkEndpoint):
|
|
2492
|
+
for child_element in self.findall(element, "NETWORK-ENDPOINT-ADDRESSES/*"):
|
|
2493
|
+
tag_name = self.getTagName(child_element)
|
|
2494
|
+
if tag_name == "IPV-6-CONFIGURATION":
|
|
2495
|
+
end_point.addNetworkEndpointAddress(self.getIpv6Configuration(child_element))
|
|
2496
|
+
else:
|
|
2497
|
+
self.notImplemented("Unsupported Network EndPoint Address <%s>" % tag_name)
|
|
2498
|
+
|
|
2499
|
+
def readNetworkEndPoint(self, element: ET.Element, end_point: NetworkEndpoint):
|
|
2500
|
+
self.readIdentifiable(element, end_point)
|
|
2501
|
+
self.readNetworkEndPointNetworkEndPointAddress(element, end_point)
|
|
2502
|
+
end_point.setPriority(self.getChildElementOptionalPositiveInteger(element, "PRIORITY"))
|
|
2503
|
+
|
|
2504
|
+
def readEthernetPhysicalChannelNetworkEndPoints(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2505
|
+
for child_element in self.findall(element, "NETWORK-ENDPOINTS/NETWORK-ENDPOINT"):
|
|
2506
|
+
end_point = channel.createNetworkEndPoint(self.getShortName(child_element))
|
|
2507
|
+
self.readNetworkEndPoint(child_element, end_point)
|
|
2508
|
+
|
|
2509
|
+
def getSocketConnectionIpduIdentifier(self, element: ET.Element) -> SocketConnectionIpduIdentifier:
|
|
2510
|
+
identifier = None
|
|
2511
|
+
if element is not None:
|
|
2512
|
+
identifier = SocketConnectionIpduIdentifier()
|
|
2513
|
+
identifier.setHeaderId(self.getChildElementOptionalPositiveInteger(element, "HEADER-ID")) \
|
|
2514
|
+
.setPduCollectionSemantics(self.getChildElementOptionalLiteral(element, "PDU-COLLECTION-SEMANTICS")) \
|
|
2515
|
+
.setPduCollectionTrigger(self.getChildElementOptionalLiteral(element, "PDU-COLLECTION-TRIGGER")) \
|
|
2516
|
+
.setPduRef(self.getChildElementOptionalRefType(element, "PDU-REF")) \
|
|
2517
|
+
.setPduTriggeringRef(self.getChildElementOptionalRefType(element, "PDU-TRIGGERING-REF"))
|
|
2518
|
+
return identifier
|
|
2519
|
+
|
|
2520
|
+
def getSocketConnectionPdus(self, element: ET.Element) -> List[SocketConnectionIpduIdentifier]:
|
|
2521
|
+
pdus = []
|
|
2522
|
+
for child_element in self.findall(element, "PDUS/*"):
|
|
2523
|
+
tag_name = self.getTagName(child_element)
|
|
2524
|
+
if tag_name == "SOCKET-CONNECTION-IPDU-IDENTIFIER":
|
|
2525
|
+
pdus.append(self.getSocketConnectionIpduIdentifier(child_element))
|
|
2526
|
+
else:
|
|
2527
|
+
self.notImplemented("Unsupported Pdu <%s>" % tag_name)
|
|
2528
|
+
return pdus
|
|
2529
|
+
|
|
2530
|
+
def getSocketConnection(self, element: ET.Element) -> SocketConnection:
|
|
2531
|
+
connection = None
|
|
2532
|
+
if element is not None:
|
|
2533
|
+
connection = SocketConnection()
|
|
2534
|
+
connection.setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF"))
|
|
2535
|
+
for pdu in self.getSocketConnectionPdus(element):
|
|
2536
|
+
connection.addPdu(pdu)
|
|
2537
|
+
connection.setPduCollectionMaxBufferSize(self.getChildElementOptionalPositiveInteger(element, "PDU-COLLECTION-MAX-BUFFER-SIZE")) \
|
|
2538
|
+
.setPduCollectionTimeout(self.getChildElementOptionalTimeValue(element, "PDU-COLLECTION-TIMEOUT")) \
|
|
2539
|
+
.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
|
|
2540
|
+
return connection
|
|
2541
|
+
|
|
2542
|
+
def readSocketConnectionBundleConnections(self, element: ET.Element, bundle: SocketConnectionBundle):
|
|
2543
|
+
for child_element in self.findall(element, "BUNDLED-CONNECTIONS/*"):
|
|
2544
|
+
tag_name = self.getTagName(child_element)
|
|
2545
|
+
if tag_name == "SOCKET-CONNECTION":
|
|
2546
|
+
bundle.addBundledConnection(self.getSocketConnection(child_element))
|
|
2547
|
+
else:
|
|
2548
|
+
self.notImplemented("Unsupported Bundled Connection <%s>" % tag_name)
|
|
2549
|
+
|
|
2550
|
+
def readSocketConnectionBundle(self, element: ET.Element, bundle: SocketConnectionBundle):
|
|
2551
|
+
self.readSocketConnectionBundleConnections(element, bundle)
|
|
2552
|
+
bundle.setServerPortRef(self.getChildElementOptionalRefType(element, "SERVER-PORT-REF"))
|
|
2553
|
+
|
|
2554
|
+
def readSoAdConfigConnectionBundles(self, element: ET.Element, config: SoAdConfig):
|
|
2555
|
+
for child_element in self.findall(element, "CONNECTION-BUNDLES/*"):
|
|
2556
|
+
tag_name = self.getTagName(child_element)
|
|
2557
|
+
if tag_name == "SOCKET-CONNECTION-BUNDLE":
|
|
2558
|
+
bundle = config.createSocketConnectionBundle(self.getShortName(child_element))
|
|
2559
|
+
self.readSocketConnectionBundle(child_element, bundle)
|
|
2560
|
+
else:
|
|
2561
|
+
self.notImplemented("Unsupported Connection Bundle <%s>" % tag_name)
|
|
2562
|
+
|
|
2563
|
+
def readSocketAddress(self, element: ET.Element, address: SocketAddress):
|
|
2564
|
+
self.readSocketConnectionBundleConnections(element, address)
|
|
2565
|
+
address.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF"))
|
|
2566
|
+
|
|
2567
|
+
def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
|
|
2568
|
+
for child_element in self.findall(element, "SOCKET-ADDRESSS/*"):
|
|
2569
|
+
tag_name = self.getTagName(child_element)
|
|
2570
|
+
if tag_name == "SOCKET-ADDRESS":
|
|
2571
|
+
bundle = config.createSocketAddress(self.getShortName(child_element))
|
|
2572
|
+
self.readSocketAddress(child_element, bundle)
|
|
2573
|
+
else:
|
|
2574
|
+
self.notImplemented("Unsupported Connection Bundle <%s>" % tag_name)
|
|
2575
|
+
|
|
2576
|
+
def getSoAdConfig(self, element: ET.Element, key: str) -> SoAdConfig:
|
|
2577
|
+
child_element = self.find(element, key)
|
|
2578
|
+
config = None
|
|
2579
|
+
if child_element is not None:
|
|
2580
|
+
config = SoAdConfig()
|
|
2581
|
+
self.readSoAdConfigConnectionBundles(child_element, config)
|
|
2582
|
+
self.readSoAdConfigSocketAddresses(child_element, config)
|
|
2583
|
+
return config
|
|
2584
|
+
|
|
2585
|
+
def readEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2586
|
+
self.readIdentifiable(element, channel)
|
|
2587
|
+
self.readPhysicalChannel(element, channel)
|
|
2588
|
+
self.readEthernetPhysicalChannelNetworkEndPoints(element, channel)
|
|
2589
|
+
channel.setSoAdConfig(self.getSoAdConfig(element, "SO-AD-CONFIG"))
|
|
2590
|
+
|
|
2449
2591
|
def readCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2450
2592
|
for child_element in self.findall(element, "PHYSICAL-CHANNELS/*"):
|
|
2451
2593
|
tag_name = self.getTagName(child_element)
|
|
@@ -2455,6 +2597,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2455
2597
|
elif tag_name == "LIN-PHYSICAL-CHANNEL":
|
|
2456
2598
|
channel = cluster.createLinPhysicalChannel(self.getShortName(child_element))
|
|
2457
2599
|
self.readLinPhysicalChannel(child_element, channel)
|
|
2600
|
+
elif tag_name == "ETHERNET-PHYSICAL-CHANNEL":
|
|
2601
|
+
channel = cluster.createEthernetPhysicalChannel(self.getShortName(child_element))
|
|
2602
|
+
self.readEthernetPhysicalChannel(child_element, channel)
|
|
2458
2603
|
else:
|
|
2459
2604
|
self.notImplemented("Unsupported Physical Channel <%s>" % tag_name)
|
|
2460
2605
|
|
|
@@ -2488,6 +2633,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2488
2633
|
self.readCommunicationCluster(child_element, cluster)
|
|
2489
2634
|
self.readAbstractCanCluster(child_element, cluster)
|
|
2490
2635
|
|
|
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)
|
|
2640
|
+
self.readIdentifiable(element, cluster)
|
|
2641
|
+
child_element = self.find(element, "ETHERNET-CLUSTER-VARIANTS/ETHERNET-CLUSTER-CONDITIONAL")
|
|
2642
|
+
if child_element is not None:
|
|
2643
|
+
self.readCommunicationCluster(child_element, cluster)
|
|
2644
|
+
|
|
2491
2645
|
def readPduToFrameMappings(self, element: ET.Element, parent: Frame):
|
|
2492
2646
|
for child_element in self.findall(element, "PDU-TO-FRAME-MAPPINGS/PDU-TO-FRAME-MAPPING"):
|
|
2493
2647
|
short_name = self.getShortName(child_element)
|
|
@@ -2648,7 +2802,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2648
2802
|
self.readFrame(element, frame)
|
|
2649
2803
|
|
|
2650
2804
|
def readCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
|
|
2651
|
-
self.logger.debug("
|
|
2805
|
+
self.logger.debug("Read CanCommunicationController %s" % controller.getShortName())
|
|
2806
|
+
self.readIdentifiable(element, controller)
|
|
2807
|
+
|
|
2808
|
+
def readEthernetCommunicationController(self, element: ET.Element, controller: EthernetCommunicationController):
|
|
2809
|
+
self.logger.debug("Read CanCommunicationController %s" % controller.getShortName())
|
|
2652
2810
|
self.readIdentifiable(element, controller)
|
|
2653
2811
|
|
|
2654
2812
|
def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
|
|
@@ -2658,6 +2816,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2658
2816
|
if tag_name == "CAN-COMMUNICATION-CONTROLLER":
|
|
2659
2817
|
controller = instance.createCanCommunicationController(self.getShortName(child_element))
|
|
2660
2818
|
self.readCanCommunicationController(child_element, controller)
|
|
2819
|
+
elif tag_name == "ETHERNET-COMMUNICATION-CONTROLLER":
|
|
2820
|
+
controller = instance.createEthernetCommunicationController(self.getShortName(child_element))
|
|
2821
|
+
self.readEthernetCommunicationController(child_element, controller)
|
|
2661
2822
|
else:
|
|
2662
2823
|
self._raiseError("Unsupported Communication Controller <%s>" % tag_name)
|
|
2663
2824
|
|
|
@@ -2698,6 +2859,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2698
2859
|
def readCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
|
|
2699
2860
|
self.readCommunicationConnector(element, connector)
|
|
2700
2861
|
|
|
2862
|
+
def readEthernetCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
|
|
2863
|
+
self.readCommunicationConnector(element, connector)
|
|
2864
|
+
|
|
2701
2865
|
def readEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
|
|
2702
2866
|
self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
|
|
2703
2867
|
for child_element in self.findall(element, "CONNECTORS/*"):
|
|
@@ -2705,8 +2869,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2705
2869
|
if tag_name == "CAN-COMMUNICATION-CONNECTOR":
|
|
2706
2870
|
connector = instance.createCanCommunicationConnector(self.getShortName(child_element))
|
|
2707
2871
|
self.readCanCommunicationConnector(child_element, connector)
|
|
2872
|
+
elif tag_name == "ETHERNET-COMMUNICATION-CONNECTOR":
|
|
2873
|
+
connector = instance.createEthernetCommunicationConnector(self.getShortName(child_element))
|
|
2874
|
+
self.readEthernetCommunicationConnector(child_element, connector)
|
|
2708
2875
|
else:
|
|
2709
|
-
self._raiseError("Unsupported Communication
|
|
2876
|
+
self._raiseError("Unsupported Communication Connector <%s>" % tag_name)
|
|
2710
2877
|
|
|
2711
2878
|
def readEcuInstance(self, element: ET.Element, parent: ARPackage):
|
|
2712
2879
|
short_name = self.getShortName(element)
|
|
@@ -2768,6 +2935,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2768
2935
|
signal = parent.createISignal(short_name)
|
|
2769
2936
|
self.readIdentifiable(element, signal)
|
|
2770
2937
|
signal.setDataTypePolicy(self.getChildElementOptionalLiteral(element, "DATA-TYPE-POLICY")) \
|
|
2938
|
+
.setISignalType(self.getChildElementOptionalLiteral(element, "I-SIGNAL-TYPE")) \
|
|
2771
2939
|
.setInitValue(self.getInitValue(element)) \
|
|
2772
2940
|
.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH")) \
|
|
2773
2941
|
.setNetworkRepresentationProps(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION-PROPS")) \
|
|
@@ -2932,7 +3100,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2932
3100
|
self.logger.debug("SystemSignal %s" % short_name)
|
|
2933
3101
|
signal = parent.createSystemSignal(short_name)
|
|
2934
3102
|
self.readIdentifiable(element, signal)
|
|
2935
|
-
signal.setDynamicLength(self.getChildElementOptionalBooleanValue(element, "DYNAMIC-LENGTH"))
|
|
3103
|
+
signal.setDynamicLength(self.getChildElementOptionalBooleanValue(element, "DYNAMIC-LENGTH")) \
|
|
3104
|
+
.setPhysicalProps(self.getSwDataDefProps(element, "PHYSICAL-PROPS"))
|
|
2936
3105
|
|
|
2937
3106
|
def readSystemSignalGroup(self, element: ET.Element, parent: ARPackage):
|
|
2938
3107
|
short_name = self.getShortName(element)
|
|
@@ -2985,6 +3154,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2985
3154
|
child_element = self.find(element, key)
|
|
2986
3155
|
if child_element is not None:
|
|
2987
3156
|
timing = CyclicTiming()
|
|
3157
|
+
timing.setTimeOffset(self.getTimeRangeType(child_element, "TIME-OFFSET")) \
|
|
3158
|
+
.setTimePeriod(self.getTimeRangeType(child_element, "TIME-PERIOD"))
|
|
2988
3159
|
return timing
|
|
2989
3160
|
|
|
2990
3161
|
def getEventControlledTiming(self, element: ET.Element, key: str) -> EventControlledTiming:
|
|
@@ -3002,8 +3173,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3002
3173
|
if child_element is not None:
|
|
3003
3174
|
self.logger.debug("Get TransmissionModeTiming of <%s>" % key)
|
|
3004
3175
|
timing = TransmissionModeTiming()
|
|
3005
|
-
|
|
3006
|
-
|
|
3176
|
+
timing.setCyclicTiming(self.getCyclicTiming(child_element, "CYCLIC-TIMING")) \
|
|
3177
|
+
.setEventControlledTiming(self.getEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING"))
|
|
3007
3178
|
return timing
|
|
3008
3179
|
|
|
3009
3180
|
def getTransmissionModeDeclaration(self, element: ET.Element, key: str) -> TransmissionModeDeclaration:
|
|
@@ -3021,7 +3192,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3021
3192
|
child_element = self.find(element, "I-PDU-TIMING-SPECIFICATIONS/I-PDU-TIMING")
|
|
3022
3193
|
if child_element is not None:
|
|
3023
3194
|
timing = IPduTiming()
|
|
3024
|
-
timing.
|
|
3195
|
+
timing.setMinimumDelay(self.getChildElementOptionalTimeValue(child_element, "MINIMUM-DELAY")) \
|
|
3196
|
+
.setTransmissionModeDeclaration(self.getTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION"))
|
|
3025
3197
|
return timing
|
|
3026
3198
|
|
|
3027
3199
|
def readISignalIPdu(self, element: ET.Element, parent: ARPackage):
|
|
@@ -3195,6 +3367,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3195
3367
|
self.readIdentifiable(element, mapping_set)
|
|
3196
3368
|
self.readPortInterfaceMappings(element, mapping_set)
|
|
3197
3369
|
|
|
3370
|
+
|
|
3371
|
+
|
|
3198
3372
|
def readARPackageElements(self, element: ET.Element, parent: ARPackage):
|
|
3199
3373
|
for child_element in self.findall(element, "ELEMENTS/*"):
|
|
3200
3374
|
tag_name = self.getTagName(child_element.tag)
|
|
@@ -3314,6 +3488,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3314
3488
|
self.readFlatMap(child_element, parent)
|
|
3315
3489
|
elif tag_name == "PORT-INTERFACE-MAPPING-SET":
|
|
3316
3490
|
self.readPortInterfaceMappingSet(child_element, parent)
|
|
3491
|
+
elif tag_name == "ETHERNET-CLUSTER":
|
|
3492
|
+
self.readEthernetCluster(child_element, parent)
|
|
3317
3493
|
else:
|
|
3318
3494
|
self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
|
|
3319
3495
|
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
4
|
|
|
5
|
+
from ....models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
|
|
5
6
|
from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
|
|
6
|
-
|
|
7
7
|
from ....models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AtpInstanceRef
|
|
8
8
|
from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import OperationInAtomicSwcInstanceRef, POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
9
|
-
from ....models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import ArVariableInImplementationDataInstanceRef
|
|
9
|
+
from ....models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import ArVariableInImplementationDataInstanceRef
|
|
10
10
|
from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import TRefType
|
|
11
11
|
from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
12
12
|
|
|
@@ -127,10 +127,8 @@ class AbstractARXMLWriter:
|
|
|
127
127
|
return element
|
|
128
128
|
|
|
129
129
|
def patch_xml(self, xml: str) -> str:
|
|
130
|
-
#xml = xml.replace("<SW-DATA-DEF-PROPS-CONDITIONAL/>","<SW-DATA-DEF-PROPS-CONDITIONAL></SW-DATA-DEF-PROPS-CONDITIONAL>")
|
|
131
130
|
xml = re.sub(r"\<([\w-]+)\/\>",r"<\1></\1>", xml)
|
|
132
|
-
xml = re.sub(r"<((\w+)\s+\w+=\"\w+\")\/>", r"<\1></\2>", xml)
|
|
133
|
-
#xml = xml.replace("<USES-END-TO-END-PROTECTION>false</USES-END-TO-END-PROTECTION>", "<USES-END-TO-END-PROTECTION>0</USES-END-TO-END-PROTECTION>")
|
|
131
|
+
xml = re.sub(r"<(([\w-]+)\s+\w+=\"[\w-]+\")\/>", r"<\1></\2>", xml)
|
|
134
132
|
return xml
|
|
135
133
|
|
|
136
134
|
def saveToFile(self, filename, root: ET.Element):
|