armodel 1.7.4__py3-none-any.whl → 1.7.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/cli/file_list_cli.py +70 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +2 -2
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +4 -0
- armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/DiagnosticContribution.py +47 -0
- armodel/models/M2/AUTOSARTemplates/DiagnosticExtract/__init__.py +0 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +73 -3
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +22 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DiagnosticConnection.py +58 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +165 -4
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetCommunication.py +16 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +514 -17
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/NetworkEndpoint.py +104 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +783 -13
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinCommunication.py +114 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinTopology.py +92 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +76 -10
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +151 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +143 -36
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +13 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +135 -13
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +79 -2
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +4 -2
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +1 -1
- armodel/models/__init__.py +3 -0
- armodel/parser/abstract_arxml_parser.py +7 -5
- armodel/parser/arxml_parser.py +927 -438
- armodel/writer/arxml_writer.py +799 -178
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/METADATA +52 -1
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/RECORD +33 -28
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/entry_points.txt +1 -0
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/LICENSE +0 -0
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/WHEEL +0 -0
- {armodel-1.7.4.dist-info → armodel-1.7.6.dist-info}/top_level.txt +0 -0
armodel/writer/arxml_writer.py
CHANGED
|
@@ -30,7 +30,7 @@ from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecifi
|
|
|
30
30
|
from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
|
|
31
31
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
|
|
32
32
|
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
|
|
33
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Code, Implementation
|
|
33
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Code, Implementation, ImplementationProps
|
|
34
34
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
|
|
35
35
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef, ExecutionOrderConstraint
|
|
36
36
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds, DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds, EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
|
|
@@ -40,6 +40,7 @@ from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import Intern
|
|
|
40
40
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclaration, ModeDeclarationGroup, ModeDeclarationGroupPrototype
|
|
41
41
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
|
|
42
42
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
|
|
43
|
+
from ..models.M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import DiagnosticServiceTable
|
|
43
44
|
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
|
|
44
45
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
|
|
45
46
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, MultilanguageReferrable, Referrable
|
|
@@ -54,7 +55,7 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import
|
|
|
54
55
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
|
|
55
56
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
|
|
56
57
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
|
|
57
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PRPortPrototype, PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype
|
|
58
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PRPortPrototype, PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype, SymbolProps
|
|
58
59
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
59
60
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import AsynchronousServerCallPoint, RunnableEntity, RunnableEntityArgument, SwcInternalBehavior, SynchronousServerCallPoint
|
|
60
61
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
|
|
@@ -76,22 +77,24 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import S
|
|
|
76
77
|
|
|
77
78
|
from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
|
|
78
79
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
79
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.
|
|
80
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import DiagnosticConnection
|
|
81
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FrameTriggering, GeneralPurposeIPdu, GeneralPurposePdu, IPdu, IPduTiming, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalTriggering, MultiplexedIPdu, PduTriggering, SecureCommunicationPropsSet, SecuredIPdu, SystemSignal, DcmIPdu, Frame, ISignal, NPdu, NmPdu, SystemSignalGroup, UserDefinedIPdu, UserDefinedPdu
|
|
80
82
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
81
83
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
82
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
|
|
84
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
|
|
83
85
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
|
|
84
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCluster, EthernetCommunicationConnector, EthernetCommunicationController
|
|
85
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import Ipv6Configuration, NetworkEndpoint, NetworkEndpointAddress
|
|
86
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import SoAdConfig
|
|
87
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, ISignalMapping
|
|
86
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPort, CouplingPortDetails, CouplingPortFifo, CouplingPortScheduler, CouplingPortStructuralElement, EthernetCluster, EthernetCommunicationConnector, EthernetCommunicationController, EthernetPriorityRegeneration, InitialSdDelayConfig, MacMulticastGroup, RequestResponseDelay, SdClientConfig, VlanMembership
|
|
87
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import DoIpEntity, InfrastructureServices, Ipv6Configuration, NetworkEndpoint, NetworkEndpointAddress
|
|
88
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup, ConsumedServiceInstance, EventHandler, GenericTp, ProvidedServiceInstance, SdServerConfig, SoAdConfig, SocketAddress, TcpTp, TpPort, TransportProtocolConfiguration, UdpTp
|
|
89
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, IPduMapping, ISignalMapping, TargetIPduRef
|
|
88
90
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
|
|
89
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
|
|
90
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering, LinUnconditionalFrame
|
|
91
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
|
|
91
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController, AbstractCanCommunicationControllerAttributes, CanCommunicationConnector, CanCommunicationController, CanControllerConfigurationRequirements, CanControllerFdConfiguration, CanControllerFdConfigurationRequirements
|
|
92
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import ApplicationEntry, LinFrameTriggering, LinScheduleTable, LinUnconditionalFrame, ScheduleTableEntry
|
|
93
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanClusterBusOffRecovery, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, CommunicationController, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
|
|
94
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinCommunicationController, LinMaster
|
|
92
95
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
|
|
93
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
|
|
94
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig
|
|
96
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmNode
|
|
97
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig, DoIpTpConfig, LinTpConfig
|
|
95
98
|
|
|
96
99
|
from .abstract_arxml_writer import AbstractARXMLWriter
|
|
97
100
|
class ARXMLWriter(AbstractARXMLWriter):
|
|
@@ -141,7 +144,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
141
144
|
limit_tag.attrib['INTERVAL-TYPE'] = limit.intervalType
|
|
142
145
|
limit_tag.text = limit.value
|
|
143
146
|
|
|
144
|
-
def
|
|
147
|
+
def writeReferrable(self, element: ET.Element, referrable: Referrable):
|
|
145
148
|
self.setARObjectAttributes(element, referrable)
|
|
146
149
|
self.setShortName(element, referrable.getShortName())
|
|
147
150
|
|
|
@@ -172,8 +175,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
172
175
|
for l2 in paragraph.getL2s():
|
|
173
176
|
self.setLOverviewParagraph(child_element, l2)
|
|
174
177
|
|
|
175
|
-
def
|
|
176
|
-
self.
|
|
178
|
+
def writeMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
|
|
179
|
+
self.writeReferrable(element, referrable)
|
|
177
180
|
if referrable.longName is not None:
|
|
178
181
|
self.setMultiLongName(element, "LONG-NAME", referrable.longName)
|
|
179
182
|
|
|
@@ -194,16 +197,16 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
194
197
|
self.setMultiLanguagePlainText(child_element, "USED-LANGUAGES", admin_data.getUsedLanguages())
|
|
195
198
|
self.writeSdgs(child_element, admin_data)
|
|
196
199
|
|
|
197
|
-
def
|
|
198
|
-
self.
|
|
200
|
+
def writeIdentifiable(self, element: ET.Element, identifiable: Identifiable):
|
|
201
|
+
self.writeMultilanguageReferrable(element, identifiable)
|
|
199
202
|
self.setAnnotations(element, identifiable.getAnnotations())
|
|
200
203
|
self.setMultiLanguageOverviewParagraph(element, "DESC", identifiable.getDesc())
|
|
201
204
|
self.setChildElementOptionalLiteral(element, "CATEGORY", identifiable.getCategory())
|
|
202
205
|
self.setDocumentationBlock(element, "INTRODUCTION", identifiable.getIntroduction())
|
|
203
206
|
self.setAdminData(element, identifiable.getAdminData())
|
|
204
207
|
|
|
205
|
-
def
|
|
206
|
-
self.
|
|
208
|
+
def writeARElement(self, parent: ET.Element, ar_element: ARElement):
|
|
209
|
+
self.writeIdentifiable(parent, ar_element)
|
|
207
210
|
|
|
208
211
|
def setTransmissionAcknowledgementRequest(self, element: ET.Element, acknowledge: TransmissionAcknowledgementRequest):
|
|
209
212
|
if (acknowledge != None):
|
|
@@ -436,7 +439,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
436
439
|
def writePPortPrototype(self, ports_tag: ET.Element, prototype: PPortPrototype):
|
|
437
440
|
prototype_tag = ET.SubElement(ports_tag, "P-PORT-PROTOTYPE")
|
|
438
441
|
|
|
439
|
-
self.
|
|
442
|
+
self.writeIdentifiable(prototype_tag, prototype)
|
|
440
443
|
self.logger.debug("write PPortPrototype %s" % prototype.getShortName())
|
|
441
444
|
self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
|
|
442
445
|
self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-INTERFACE-TREF", prototype.getProvidedInterfaceTRef())
|
|
@@ -451,14 +454,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
451
454
|
def writeRPortPrototype(self, ports_tag: ET.Element, prototype: RPortPrototype):
|
|
452
455
|
self.logger.debug("write RPortPrototype %s" % prototype.getShortName())
|
|
453
456
|
prototype_tag = ET.SubElement(ports_tag, "R-PORT-PROTOTYPE")
|
|
454
|
-
self.
|
|
457
|
+
self.writeIdentifiable(prototype_tag, prototype)
|
|
455
458
|
self.setAbstractRequiredPortPrototype(prototype_tag, prototype)
|
|
456
459
|
self.setChildElementOptionalRefType(prototype_tag, "REQUIRED-INTERFACE-TREF", prototype.getRequiredInterfaceTRef())
|
|
457
460
|
|
|
458
461
|
def writePRPortPrototype(self, ports_tag: ET.Element, prototype: PRPortPrototype):
|
|
459
462
|
self.logger.debug("write PRPortPrototype %s" % prototype.getShortName())
|
|
460
463
|
prototype_tag = ET.SubElement(ports_tag, "PR-PORT-PROTOTYPE")
|
|
461
|
-
self.
|
|
464
|
+
self.writeIdentifiable(prototype_tag, prototype)
|
|
462
465
|
self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
|
|
463
466
|
self.setAbstractRequiredPortPrototype(prototype_tag, prototype)
|
|
464
467
|
self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-REQUIRED-INTERFACE-TREF", prototype.getProvidedRequiredInterface())
|
|
@@ -497,7 +500,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
497
500
|
def writePortGroup(self, element: ET.Element, port_group: PortGroup):
|
|
498
501
|
self.logger.debug("writePortGroup %s" % port_group.getShortName())
|
|
499
502
|
child_element = ET.SubElement(element, "PORT-GROUP")
|
|
500
|
-
self.
|
|
503
|
+
self.writeIdentifiable(child_element, port_group)
|
|
501
504
|
self.writePortGroupInnerGroupIRefs(child_element, port_group)
|
|
502
505
|
self.writePortGroupOuterPortRefs(child_element, port_group)
|
|
503
506
|
|
|
@@ -509,7 +512,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
509
512
|
self.writePortGroup(child_element, port_group)
|
|
510
513
|
|
|
511
514
|
def writeSwComponentType(self, element: ET.Element, sw_component: SwComponentType):
|
|
512
|
-
self.
|
|
515
|
+
self.writeIdentifiable(element, sw_component)
|
|
513
516
|
port_prototypes = sw_component.getPortPrototypes()
|
|
514
517
|
if len(port_prototypes) > 0:
|
|
515
518
|
ports_tag = ET.SubElement(element, "PORTS")
|
|
@@ -518,7 +521,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
518
521
|
|
|
519
522
|
def writeSwComponentPrototype(self, element: ET.Element, prototype: SwComponentPrototype):
|
|
520
523
|
prototype_tag = ET.SubElement(element, "SW-COMPONENT-PROTOTYPE")
|
|
521
|
-
self.
|
|
524
|
+
self.writeIdentifiable(prototype_tag, prototype)
|
|
522
525
|
self.setChildElementOptionalRefType(prototype_tag, "TYPE-TREF", prototype.getTypeTRef())
|
|
523
526
|
|
|
524
527
|
def writeSwComponentPrototypes(self, element: ET.Element, sw_component: CompositionSwComponentType):
|
|
@@ -530,7 +533,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
530
533
|
|
|
531
534
|
def writeAssemblySwConnector(self, element: ET.Element, sw_connector: AssemblySwConnector):
|
|
532
535
|
child_element = ET.SubElement(element, "ASSEMBLY-SW-CONNECTOR")
|
|
533
|
-
self.
|
|
536
|
+
self.writeIdentifiable(child_element, sw_connector)
|
|
534
537
|
self.setChildElementOptionalRefType(child_element, "MAPPING-REF", sw_connector.getMappingRef())
|
|
535
538
|
|
|
536
539
|
if sw_connector.getProviderIRef() is not None:
|
|
@@ -549,7 +552,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
549
552
|
|
|
550
553
|
def writeDelegationSwConnector(self, element: ET.Element, sw_connector: DelegationSwConnector):
|
|
551
554
|
connector_tag = ET.SubElement(element, "DELEGATION-SW-CONNECTOR")
|
|
552
|
-
self.
|
|
555
|
+
self.writeIdentifiable(connector_tag, sw_connector)
|
|
553
556
|
|
|
554
557
|
if sw_connector.getInnerPortIRref() is not None:
|
|
555
558
|
inner_port_iref_tag = ET.SubElement(connector_tag, "INNER-PORT-IREF")
|
|
@@ -725,7 +728,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
725
728
|
self.setApplicationDataType(element, data_type)
|
|
726
729
|
|
|
727
730
|
def setAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
728
|
-
self.
|
|
731
|
+
self.writeARElement(element, data_type)
|
|
729
732
|
self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", data_type.getSwDataDefProps())
|
|
730
733
|
|
|
731
734
|
def writeApplicationPrimitiveDataType(self, element: ET.Element, data_type: ApplicationPrimitiveDataType):
|
|
@@ -737,7 +740,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
737
740
|
self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", prototype.getSwDataDefProps())
|
|
738
741
|
|
|
739
742
|
def setApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
|
|
740
|
-
self.
|
|
743
|
+
self.writeIdentifiable(element, prototype)
|
|
741
744
|
self.setDataPrototype(element, prototype)
|
|
742
745
|
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
|
|
743
746
|
|
|
@@ -775,7 +778,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
775
778
|
|
|
776
779
|
def writeSwBaseType(self, element: ET.Element, base_type: SwBaseType):
|
|
777
780
|
data_type_tag = ET.SubElement(element, "SW-BASE-TYPE")
|
|
778
|
-
self.
|
|
781
|
+
self.writeIdentifiable(data_type_tag, base_type)
|
|
779
782
|
self.setBaseTypeDirectDefinition(data_type_tag, base_type.getBaseTypeDefinition())
|
|
780
783
|
|
|
781
784
|
def writeCompuScaleConstantContents(self, element: ET.Element, contents: CompuScaleConstantContents):
|
|
@@ -844,7 +847,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
844
847
|
def writeCompuMethod(self, element: ET.Element, compu_method: CompuMethod):
|
|
845
848
|
child_element = ET.SubElement(element, "COMPU-METHOD")
|
|
846
849
|
self.logger.debug("write CompuMethods %s" % compu_method.getShortName())
|
|
847
|
-
self.
|
|
850
|
+
self.writeIdentifiable(child_element, compu_method)
|
|
848
851
|
self.setChildElementOptionalRefType(child_element, "UNIT-REF", compu_method.getUnitRef())
|
|
849
852
|
self.setCompu(child_element, "COMPU-INTERNAL-TO-PHYS", compu_method.getCompuInternalToPhys())
|
|
850
853
|
self.setCompu(child_element, "COMPU-PHYS-TO-INTERNAL", compu_method.getCompuPhysToInternal())
|
|
@@ -878,7 +881,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
878
881
|
|
|
879
882
|
def writeConstantSpecification(self, element: ET.Element, spec: ConstantSpecification):
|
|
880
883
|
spec_tag = ET.SubElement(element, "CONSTANT-SPECIFICATION")
|
|
881
|
-
self.
|
|
884
|
+
self.writeIdentifiable(spec_tag, spec)
|
|
882
885
|
|
|
883
886
|
if spec.getValueSpec() is not None:
|
|
884
887
|
self.setValueSpecification(spec_tag, "VALUE-SPEC", spec.getValueSpec())
|
|
@@ -915,13 +918,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
915
918
|
|
|
916
919
|
def writeDataConstr(self, element: ET.Element, constr: DataConstr):
|
|
917
920
|
child_element = ET.SubElement(element, "DATA-CONSTR")
|
|
918
|
-
self.
|
|
921
|
+
self.writeIdentifiable(child_element, constr)
|
|
919
922
|
self.writeDataConstrRules(child_element, constr)
|
|
920
923
|
|
|
921
924
|
def writeUnit(self, element: ET.Element, unit: Unit):
|
|
922
925
|
self.logger.debug("writeUnit %s" % unit.getShortName())
|
|
923
926
|
child_element = ET.SubElement(element, "UNIT")
|
|
924
|
-
self.
|
|
927
|
+
self.writeIdentifiable(child_element, unit)
|
|
925
928
|
self.setChildElementOptionalLiteral(child_element, "DISPLAY-NAME", unit.getDisplayName())
|
|
926
929
|
self.setChildElementOptionalFloatValue(child_element, "FACTOR-SI-TO-UNIT", unit.getFactorSiToUnit())
|
|
927
930
|
self.setChildElementOptionalFloatValue(child_element, "OFFSET-SI-TO-UNIT", unit.getOffsetSiToUnit())
|
|
@@ -943,7 +946,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
943
946
|
self.setChildElementOptionalRefType(child_element, "TARGET-PROVIDED-OPERATION-REF", iref.getTargetProvidedOperationRef())
|
|
944
947
|
|
|
945
948
|
def setRTEEvent(self, element: ET.Element, event: RTEEvent):
|
|
946
|
-
self.
|
|
949
|
+
self.writeIdentifiable(element, event)
|
|
947
950
|
irefs = event.getDisabledModeIRefs()
|
|
948
951
|
if len(irefs) > 0:
|
|
949
952
|
child_element = ET.SubElement(element, "DISABLED-MODE-IREFS")
|
|
@@ -1030,7 +1033,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1030
1033
|
areas_tag = ET.SubElement(element, "EXCLUSIVE-AREAS")
|
|
1031
1034
|
for area in areas:
|
|
1032
1035
|
child_element = ET.SubElement(areas_tag, "EXCLUSIVE-AREA")
|
|
1033
|
-
self.
|
|
1036
|
+
self.writeIdentifiable(child_element, area)
|
|
1034
1037
|
|
|
1035
1038
|
def writeDataTypeMappingRefs(self, element: ET.Element, behavior: InternalBehavior):
|
|
1036
1039
|
refs = behavior.getDataTypeMappingRefs()
|
|
@@ -1040,7 +1043,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1040
1043
|
self.setChildElementOptionalRefType(refs_tag, "DATA-TYPE-MAPPING-REF", ref)
|
|
1041
1044
|
|
|
1042
1045
|
def writeInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
|
|
1043
|
-
self.
|
|
1046
|
+
self.writeIdentifiable(element, behavior)
|
|
1044
1047
|
self.setParameterDataPrototypes(element, "CONSTANT-MEMORYS", behavior.getConstantMemories())
|
|
1045
1048
|
self.writeDataTypeMappingRefs(element, behavior)
|
|
1046
1049
|
self.writeExclusiveAreas(element, behavior)
|
|
@@ -1066,7 +1069,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1066
1069
|
|
|
1067
1070
|
def setVariableAccess(self, element: ET.Element, access: VariableAccess):
|
|
1068
1071
|
child_element = ET.SubElement(element, "VARIABLE-ACCESS")
|
|
1069
|
-
self.
|
|
1072
|
+
self.writeIdentifiable(child_element, access)
|
|
1070
1073
|
self.setAutosarVariableRef(child_element, "ACCESSED-VARIABLE", access.getAccessedVariableRef())
|
|
1071
1074
|
|
|
1072
1075
|
def setAutosarParameterRef(self, element: ET.Element, key: str, parameter_ref: AutosarParameterRef):
|
|
@@ -1076,7 +1079,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1076
1079
|
|
|
1077
1080
|
def writeParameterAccess(self, element: ET.Element, parameter_access: ParameterAccess):
|
|
1078
1081
|
child_element = ET.SubElement(element, "PARAMETER-ACCESS")
|
|
1079
|
-
self.
|
|
1082
|
+
self.writeIdentifiable(child_element, parameter_access)
|
|
1080
1083
|
self.setAutosarParameterRef(child_element, "ACCESSED-PARAMETER", parameter_access.getAccessedParameter())
|
|
1081
1084
|
|
|
1082
1085
|
def writeParameterAccesses(self, element: ET.Element, entity: RunnableEntity):
|
|
@@ -1134,12 +1137,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1134
1137
|
|
|
1135
1138
|
def setSynchronousServerCallPoint(self, element: ET.Element, call_point: SynchronousServerCallPoint):
|
|
1136
1139
|
child_element = ET.SubElement(element, "SYNCHRONOUS-SERVER-CALL-POINT")
|
|
1137
|
-
self.
|
|
1140
|
+
self.writeIdentifiable(child_element, call_point)
|
|
1138
1141
|
self.setServerCallPoint(child_element, call_point)
|
|
1139
1142
|
|
|
1140
1143
|
def setAsynchronousServerCallPoint(self, element: ET.Element, call_point: SynchronousServerCallPoint):
|
|
1141
1144
|
child_element = ET.SubElement(element, "ASYNCHRONOUS-SERVER-CALL-POINT")
|
|
1142
|
-
self.
|
|
1145
|
+
self.writeIdentifiable(child_element, call_point)
|
|
1143
1146
|
self.setServerCallPoint(child_element, call_point)
|
|
1144
1147
|
|
|
1145
1148
|
def writeServerCallPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
@@ -1188,7 +1191,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1188
1191
|
mode_access_points_tag = ET.SubElement(element, "MODE-SWITCH-POINTS")
|
|
1189
1192
|
for point in points:
|
|
1190
1193
|
child_element = ET.SubElement(mode_access_points_tag, "MODE-SWITCH-POINT")
|
|
1191
|
-
self.
|
|
1194
|
+
self.writeIdentifiable(child_element, point)
|
|
1192
1195
|
self.setPModeGroupInAtomicSWCInstanceRef(child_element, "MODE-GROUP-IREF", point.getModeGroupIRef())
|
|
1193
1196
|
|
|
1194
1197
|
def setRunnableEntityArgument(self, element: ET.Element, argument: RunnableEntityArgument):
|
|
@@ -1211,7 +1214,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1211
1214
|
points_tag = ET.SubElement(element, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINTS")
|
|
1212
1215
|
for point in points:
|
|
1213
1216
|
child_element = ET.SubElement(points_tag, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINT")
|
|
1214
|
-
self.
|
|
1217
|
+
self.writeIdentifiable(child_element, point)
|
|
1215
1218
|
self.setChildElementOptionalRefType(child_element, "ASYNCHRONOUS-SERVER-CALL-POINT-REF", point.getAsynchronousServerCallPointRef())
|
|
1216
1219
|
|
|
1217
1220
|
def writeRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
|
|
@@ -1269,7 +1272,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1269
1272
|
memories_tag = ET.SubElement(element, "PER-INSTANCE-MEMORYS")
|
|
1270
1273
|
for memory in memories:
|
|
1271
1274
|
child_element = ET.SubElement(memories_tag, "PER-INSTANCE-MEMORY")
|
|
1272
|
-
self.
|
|
1275
|
+
self.writeIdentifiable(child_element, memory)
|
|
1273
1276
|
self.setChildElementOptionalLiteral(child_element, "INIT-VALUE", memory.getInitValue())
|
|
1274
1277
|
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", memory.getSwDataDefProps())
|
|
1275
1278
|
self.setChildElementOptionalLiteral(child_element, "TYPE", memory.getType())
|
|
@@ -1277,7 +1280,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1277
1280
|
|
|
1278
1281
|
def setParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
|
|
1279
1282
|
child_element = ET.SubElement(element, "PARAMETER-DATA-PROTOTYPE")
|
|
1280
|
-
self.
|
|
1283
|
+
self.writeIdentifiable(child_element, prototype)
|
|
1281
1284
|
self.setAutosarDataPrototype(child_element, prototype)
|
|
1282
1285
|
self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
|
|
1283
1286
|
|
|
@@ -1324,7 +1327,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1324
1327
|
self._raiseError("Unsupported Assigned Data <%s>" % type(data))
|
|
1325
1328
|
|
|
1326
1329
|
def writeServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
|
|
1327
|
-
self.
|
|
1330
|
+
self.writeIdentifiable(element, dependency)
|
|
1328
1331
|
self.writeServiceDependencyAssignedDataType(element, dependency)
|
|
1329
1332
|
|
|
1330
1333
|
def writeRoleBasedDataAssignment(self, element: ET.Element, assignment: RoleBasedDataAssignment):
|
|
@@ -1362,7 +1365,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1362
1365
|
def setNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
|
|
1363
1366
|
child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
|
|
1364
1367
|
self.logger.debug("write NvBlockNeeds %s" % needs.getShortName())
|
|
1365
|
-
self.
|
|
1368
|
+
self.writeIdentifiable(child_element, needs)
|
|
1366
1369
|
self.setChildElementOptionalBooleanValue(child_element, "CALC-RAM-BLOCK-CRC", needs.getCalcRamBlockCrc())
|
|
1367
1370
|
self.setChildElementOptionalBooleanValue(child_element, "CHECK-STATIC-BLOCK-ID", needs.getCheckStaticBlockId())
|
|
1368
1371
|
self.setChildElementOptionalNumericalValue(child_element, "N-DATA-SETS", needs.getNDataSets())
|
|
@@ -1386,20 +1389,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1386
1389
|
def setDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
|
|
1387
1390
|
child_element = ET.SubElement(element, "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS")
|
|
1388
1391
|
self.logger.debug("write DiagnosticCommunicationManagerNeeds %s" % needs.getShortName())
|
|
1389
|
-
self.
|
|
1392
|
+
self.writeIdentifiable(child_element, needs)
|
|
1390
1393
|
self.setChildElementOptionalLiteral(child_element, "SERVICE-REQUEST-CALLBACK-TYPE", needs.getServiceRequestCallbackType())
|
|
1391
1394
|
|
|
1392
1395
|
def setDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
|
|
1393
1396
|
child_element = ET.SubElement(element, "DIAGNOSTIC-ROUTINE-NEEDS")
|
|
1394
1397
|
self.logger.debug("write DiagnosticRoutineNeeds %s" % needs.getShortName())
|
|
1395
|
-
self.
|
|
1398
|
+
self.writeIdentifiable(child_element, needs)
|
|
1396
1399
|
self.setChildElementOptionalLiteral(child_element, "DIAG-ROUTINE-TYPE", needs.getDiagRoutineType())
|
|
1397
1400
|
self.setChildElementOptionalIntegerValue(child_element, "RID-NUMBER", needs.getRidNumber())
|
|
1398
1401
|
|
|
1399
1402
|
def setDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
|
|
1400
1403
|
child_element = ET.SubElement(element, "DIAGNOSTIC-VALUE-NEEDS")
|
|
1401
1404
|
self.logger.debug("write DiagnosticValueNeeds %s" % needs.getShortName())
|
|
1402
|
-
self.
|
|
1405
|
+
self.writeIdentifiable(child_element, needs)
|
|
1403
1406
|
self.setChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH", needs.getDataLength())
|
|
1404
1407
|
self.setChildElementOptionalLiteral(child_element, "DIAGNOSTIC-VALUE-ACCESS", needs.getDiagnosticValueAccess())
|
|
1405
1408
|
self.setChildElementOptionalIntegerValue(child_element, "DID-NUMBER", needs.getDidNumber())
|
|
@@ -1408,7 +1411,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1408
1411
|
|
|
1409
1412
|
def setDiagEventDebounceMonitorInternal(self, element: ET.Element, algorithm: DiagEventDebounceMonitorInternal):
|
|
1410
1413
|
child_element = ET.SubElement(element, "DIAG-EVENT-DEBOUNCE-MONITOR-INTERNAL")
|
|
1411
|
-
self.
|
|
1414
|
+
self.writeIdentifiable(child_element, algorithm)
|
|
1412
1415
|
|
|
1413
1416
|
def writeDiagEventDebounceAlgorithm(self, element: ET.Element, needs: DiagnosticEventNeeds):
|
|
1414
1417
|
algorithm = needs.getDiagEventDebounceAlgorithm()
|
|
@@ -1422,7 +1425,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1422
1425
|
def setDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
|
|
1423
1426
|
child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-NEEDS")
|
|
1424
1427
|
self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
|
|
1425
|
-
self.
|
|
1428
|
+
self.writeIdentifiable(child_element, needs)
|
|
1426
1429
|
self.writeDiagEventDebounceAlgorithm(child_element, needs)
|
|
1427
1430
|
self.setChildElementOptionalLiteral(child_element, "DTC-KIND", needs.getDtcKind())
|
|
1428
1431
|
self.setChildElementOptionalIntegerValue(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
|
|
@@ -1430,19 +1433,19 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1430
1433
|
def setDiagnosticEventInfoNeeds(self, element: ET.Element, needs: DiagnosticEventInfoNeeds):
|
|
1431
1434
|
child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-INFO-NEEDS")
|
|
1432
1435
|
self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
|
|
1433
|
-
self.
|
|
1436
|
+
self.writeIdentifiable(child_element, needs)
|
|
1434
1437
|
self.setChildElementOptionalPositiveInteger(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
|
|
1435
1438
|
|
|
1436
1439
|
def setCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
|
|
1437
1440
|
child_element = ET.SubElement(element, "CRYPTO-SERVICE-NEEDS")
|
|
1438
1441
|
self.logger.debug("write CryptoServiceNeeds %s" % needs.getShortName())
|
|
1439
|
-
self.
|
|
1442
|
+
self.writeIdentifiable(child_element, needs)
|
|
1440
1443
|
self.setChildElementOptionalPositiveInteger(child_element, "MAXIMUM-KEY-LENGTH", needs.getMaximumKeyLength())
|
|
1441
1444
|
|
|
1442
1445
|
def setEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
|
|
1443
1446
|
child_element = ET.SubElement(element, "ECU-STATE-MGR-USER-NEEDS")
|
|
1444
1447
|
self.logger.debug("write EcuStateMgrUserNeeds %s" % needs.getShortName())
|
|
1445
|
-
self.
|
|
1448
|
+
self.writeIdentifiable(child_element, needs)
|
|
1446
1449
|
|
|
1447
1450
|
def writeSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
1448
1451
|
needs = parent.getServiceNeeds()
|
|
@@ -1547,7 +1550,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1547
1550
|
def setCode(self, element: ET.SubElement, code_desc: Code):
|
|
1548
1551
|
self.logger.debug("setCode %s" % code_desc.getShortName())
|
|
1549
1552
|
child_element = ET.SubElement(element, "CODE")
|
|
1550
|
-
self.
|
|
1553
|
+
self.writeIdentifiable(child_element, code_desc)
|
|
1551
1554
|
self.writeArtifactDescriptor(child_element, code_desc)
|
|
1552
1555
|
|
|
1553
1556
|
def writeCodeDescriptors(self, element: ET.Element, impl: Implementation):
|
|
@@ -1572,7 +1575,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1572
1575
|
sections_tag = ET.SubElement(element, "MEMORY-SECTIONS")
|
|
1573
1576
|
for memory_section in memory_sections:
|
|
1574
1577
|
child_element = ET.SubElement(sections_tag, "MEMORY-SECTION")
|
|
1575
|
-
self.
|
|
1578
|
+
self.writeIdentifiable(child_element, memory_section)
|
|
1576
1579
|
self.setChildElementOptionalLiteral(child_element, "ALIGNMENT", memory_section.getAlignment())
|
|
1577
1580
|
self.setChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL", memory_section.getMemClassSymbol())
|
|
1578
1581
|
self.setMemorySectionOptions(child_element, memory_section.getOptions())
|
|
@@ -1583,7 +1586,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1583
1586
|
|
|
1584
1587
|
def setStackUsage(self, element: ET.Element, usage: StackUsage):
|
|
1585
1588
|
self.logger.debug("Write StackUsage %s" % usage.getShortName())
|
|
1586
|
-
self.
|
|
1589
|
+
self.writeIdentifiable(element, usage)
|
|
1587
1590
|
|
|
1588
1591
|
def setRoughEstimateStackUsage(self, element: ET.Element, usage: RoughEstimateStackUsage):
|
|
1589
1592
|
if usage is not None:
|
|
@@ -1603,12 +1606,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1603
1606
|
def setResourceConsumption(self, element: ET.Element, consumption: ResourceConsumption):
|
|
1604
1607
|
if consumption is not None:
|
|
1605
1608
|
child_element = ET.SubElement(element, "RESOURCE-CONSUMPTION")
|
|
1606
|
-
self.
|
|
1609
|
+
self.writeIdentifiable(child_element, consumption)
|
|
1607
1610
|
self.writeMemorySections(child_element, consumption)
|
|
1608
1611
|
self.writeStackUsages(child_element, consumption.getStackUsages())
|
|
1609
1612
|
|
|
1610
1613
|
def writeImplementation(self, element: ET.Element, impl: Implementation):
|
|
1611
|
-
self.
|
|
1614
|
+
self.writeIdentifiable(element, impl)
|
|
1612
1615
|
self.writeCodeDescriptors(element, impl)
|
|
1613
1616
|
self.setChildElementOptionalLiteral(element, "PROGRAMMING-LANGUAGE", impl.getProgrammingLanguage())
|
|
1614
1617
|
self.setResourceConsumption(element, impl.getResourceConsumption())
|
|
@@ -1671,7 +1674,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1671
1674
|
def setEndToEndProtection(self, element: ET.Element, protection: EndToEndProtection):
|
|
1672
1675
|
if protection is not None:
|
|
1673
1676
|
child_element = ET.SubElement(element, "END-TO-END-PROTECTION")
|
|
1674
|
-
self.
|
|
1677
|
+
self.writeIdentifiable(child_element, protection)
|
|
1675
1678
|
self.setEndToEndDescription(child_element, "END-TO-END-PROFILE", protection.endToEndProfile)
|
|
1676
1679
|
self.writeEndToEndProtectionVariablePrototypes(child_element, protection)
|
|
1677
1680
|
|
|
@@ -1686,7 +1689,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1686
1689
|
def writeEndToEndProtectionSet(self, element: ET.Element, protection_set: EndToEndProtectionSet):
|
|
1687
1690
|
self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.getShortName())
|
|
1688
1691
|
child_element = ET.SubElement(element, "END-TO-END-PROTECTION-SET")
|
|
1689
|
-
self.
|
|
1692
|
+
self.writeIdentifiable(child_element, protection_set)
|
|
1690
1693
|
self.writeEndToEndProtections(child_element, protection_set)
|
|
1691
1694
|
|
|
1692
1695
|
def setAutosarDataPrototype(self, element: ET.Element, prototype: AutosarDataPrototype):
|
|
@@ -1696,7 +1699,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1696
1699
|
def writeVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
|
|
1697
1700
|
self.logger.debug("writeVariableDataPrototype %s" % prototype.getShortName())
|
|
1698
1701
|
child_element = ET.SubElement(element, "VARIABLE-DATA-PROTOTYPE")
|
|
1699
|
-
self.
|
|
1702
|
+
self.writeIdentifiable(child_element, prototype)
|
|
1700
1703
|
self.setAutosarDataPrototype(child_element, prototype)
|
|
1701
1704
|
self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
|
|
1702
1705
|
|
|
@@ -1722,7 +1725,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1722
1725
|
def writeSenderReceiverInterface(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1723
1726
|
self.logger.debug("writeSenderReceiverInterface %s" % sr_interface.getShortName())
|
|
1724
1727
|
child_element = ET.SubElement(element, "SENDER-RECEIVER-INTERFACE")
|
|
1725
|
-
self.
|
|
1728
|
+
self.writeIdentifiable(child_element, sr_interface)
|
|
1726
1729
|
self.setChildElementOptionalBooleanValue(child_element, "IS-SERVICE", sr_interface.getIsService())
|
|
1727
1730
|
self.writeSenderReceiverInterfaceDataElements(child_element, sr_interface)
|
|
1728
1731
|
self.writeSenderReceiverInterfaceInvalidationPolicies(child_element, sr_interface)
|
|
@@ -1736,7 +1739,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1736
1739
|
self.setChildElementOptionalRefType(entry_tag, "BSW-MODULE-ENTRY-REF", entry)
|
|
1737
1740
|
|
|
1738
1741
|
def setModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
|
|
1739
|
-
self.
|
|
1742
|
+
self.writeIdentifiable(element, prototype)
|
|
1740
1743
|
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.type_tref)
|
|
1741
1744
|
|
|
1742
1745
|
def writeProvidedModeGroup(self, element: ET.Element, parent: BswModuleDescription):
|
|
@@ -1755,7 +1758,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1755
1758
|
self.setChildElementOptionalRefType(child_element, "CAN-ENTER-EXCLUSIVE-AREA-REF", ref)
|
|
1756
1759
|
|
|
1757
1760
|
def setExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
|
|
1758
|
-
self.
|
|
1761
|
+
self.writeIdentifiable(element, entity)
|
|
1759
1762
|
self.writeCanEnterExclusiveAreaRefs(element, entity)
|
|
1760
1763
|
self.setChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL", entity.getMinimumStartInterval())
|
|
1761
1764
|
self.setChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF", entity.getSwAddrMethodRef())
|
|
@@ -1805,7 +1808,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1805
1808
|
self.notImplemented("Unsupported BswModuleEntity <%s>" % type(entity))
|
|
1806
1809
|
|
|
1807
1810
|
def setBswEvent(self, element: ET.Element, event: BswEvent):
|
|
1808
|
-
self.
|
|
1811
|
+
self.writeIdentifiable(element, event)
|
|
1809
1812
|
self.setChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF", event.startsOnEventRef)
|
|
1810
1813
|
|
|
1811
1814
|
def setBswScheduleEvent(self, element: ET.Element, event: BswScheduleEvent):
|
|
@@ -1872,7 +1875,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1872
1875
|
def writeBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
|
|
1873
1876
|
self.logger.debug("writeBswModuleDescription %s" % desc.getShortName())
|
|
1874
1877
|
child_element = ET.SubElement(element, "BSW-MODULE-DESCRIPTION")
|
|
1875
|
-
self.
|
|
1878
|
+
self.writeIdentifiable(child_element, desc)
|
|
1876
1879
|
self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.getModuleId())
|
|
1877
1880
|
self.writerBswModuleDescriptionImplementedEntry(child_element, desc)
|
|
1878
1881
|
self.writeProvidedModeGroup(child_element, desc)
|
|
@@ -1891,7 +1894,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1891
1894
|
self.logger.debug("Set SwServiceArg <%s>" % arg.getShortName())
|
|
1892
1895
|
if arg is not None:
|
|
1893
1896
|
child_element = ET.SubElement(element, "SW-SERVICE-ARG")
|
|
1894
|
-
self.
|
|
1897
|
+
self.writeIdentifiable(child_element, arg)
|
|
1895
1898
|
self.setChildElementOptionalLiteral(child_element, "DIRECTION", arg.getDirection())
|
|
1896
1899
|
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", arg.getSwDataDefProps())
|
|
1897
1900
|
|
|
@@ -1905,7 +1908,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1905
1908
|
def writeBswModuleEntry(self, element: ET.Element, entry: BswModuleEntry):
|
|
1906
1909
|
self.logger.debug("writeBswModuleDescription %s" % entry.getShortName())
|
|
1907
1910
|
child_element = ET.SubElement(element, "BSW-MODULE-ENTRY")
|
|
1908
|
-
self.
|
|
1911
|
+
self.writeIdentifiable(child_element, entry)
|
|
1909
1912
|
self.setChildElementOptionalNumericalValue(child_element, "SERVICE-ID", entry.getServiceId())
|
|
1910
1913
|
self.setChildElementOptionalBooleanValue(child_element, "IS-REENTRANT", entry.getIsReentrant())
|
|
1911
1914
|
self.setChildElementOptionalBooleanValue(child_element, "IS-SYNCHRONOUS", entry.getIsSynchronous())
|
|
@@ -1932,7 +1935,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1932
1935
|
def writeSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
|
|
1933
1936
|
self.logger.debug("writeBswModuleDescription %s" % mapping.getShortName())
|
|
1934
1937
|
child_element = ET.SubElement(element, "SWC-BSW-MAPPING")
|
|
1935
|
-
self.
|
|
1938
|
+
self.writeIdentifiable(child_element, mapping)
|
|
1936
1939
|
self.setChildElementOptionalRefType(child_element, "BSW-BEHAVIOR-REF", mapping.getBswBehaviorRef())
|
|
1937
1940
|
self.writeSwcBswRunnableMappings(child_element, mapping)
|
|
1938
1941
|
self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.getSwcBehaviorRef())
|
|
@@ -1979,19 +1982,32 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1979
1982
|
sub_elements_tag = ET.SubElement(element, "SUB-ELEMENTS")
|
|
1980
1983
|
for type_element in sub_elements:
|
|
1981
1984
|
child_element = ET.SubElement(sub_elements_tag, "IMPLEMENTATION-DATA-TYPE-ELEMENT")
|
|
1982
|
-
self.
|
|
1985
|
+
self.writeIdentifiable(child_element, type_element)
|
|
1983
1986
|
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE", type_element.getArraySize())
|
|
1984
1987
|
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING", type_element.getArraySizeHandling())
|
|
1985
1988
|
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS", type_element.getArraySizeSemantics())
|
|
1986
1989
|
self.writeImplementationDataTypeElements(child_element, type_element)
|
|
1987
1990
|
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", type_element.getSwDataDefProps())
|
|
1988
1991
|
|
|
1992
|
+
def writeImplementationProps(self, element: ET.Element, props: ImplementationProps):
|
|
1993
|
+
self.writeReferrable(element, props)
|
|
1994
|
+
self.setChildElementOptionalLiteral(element, "SYMBOL", props.getSymbol())
|
|
1995
|
+
|
|
1996
|
+
def writeSymbolProps(self, element: ET.Element, props: SymbolProps):
|
|
1997
|
+
if props is not None:
|
|
1998
|
+
child_element = ET.SubElement(element, "SYMBOL-PROPS")
|
|
1999
|
+
self.writeImplementationProps(child_element, props)
|
|
2000
|
+
|
|
2001
|
+
def writeImplementationDataTypeSymbolProps(self, element: ET.Element, data_type: ImplementationDataType):
|
|
2002
|
+
self.writeSymbolProps(element, data_type.getSymbolProps())
|
|
2003
|
+
|
|
1989
2004
|
def writeImplementationDataType(self, element: ET.Element, data_type: ImplementationDataType):
|
|
1990
2005
|
self.logger.debug("writeImplementationDataType %s" % data_type.getShortName())
|
|
1991
2006
|
child_element = ET.SubElement(element, "IMPLEMENTATION-DATA-TYPE")
|
|
1992
2007
|
self.setAutosarDataType(child_element, data_type)
|
|
1993
2008
|
self.setChildElementOptionalLiteral(child_element, "DYNAMIC-ARRAY-SIZE-PROFILE", data_type.getDynamicArraySizeProfile())
|
|
1994
2009
|
self.writeImplementationDataTypeElements(child_element, data_type)
|
|
2010
|
+
self.writeImplementationDataTypeSymbolProps(child_element, data_type)
|
|
1995
2011
|
self.setChildElementOptionalLiteral(child_element, "TYPE-EMITTER", data_type.getTypeEmitter())
|
|
1996
2012
|
|
|
1997
2013
|
def writeArgumentDataPrototypes(self, element: ET.Element, parent: ClientServerOperation):
|
|
@@ -2000,7 +2016,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2000
2016
|
arguments_tag = ET.SubElement(element, "ARGUMENTS")
|
|
2001
2017
|
for prototype in arguments:
|
|
2002
2018
|
child_element = ET.SubElement(arguments_tag, "ARGUMENT-DATA-PROTOTYPE")
|
|
2003
|
-
self.
|
|
2019
|
+
self.writeIdentifiable(child_element, prototype)
|
|
2004
2020
|
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
|
|
2005
2021
|
self.setChildElementOptionalRefType(child_element, "TYPE-TREF", prototype.typeTRef)
|
|
2006
2022
|
self.setChildElementOptionalLiteral(child_element, "DIRECTION", prototype.direction)
|
|
@@ -2016,7 +2032,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2016
2032
|
def writeClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
|
|
2017
2033
|
self.logger.debug("writeClientServerOperation %s" % operation.getShortName())
|
|
2018
2034
|
child_element = ET.SubElement(element, "CLIENT-SERVER-OPERATION")
|
|
2019
|
-
self.
|
|
2035
|
+
self.writeIdentifiable(child_element, operation)
|
|
2020
2036
|
self.writeArgumentDataPrototypes(child_element, operation)
|
|
2021
2037
|
self.writePossibleErrorRefs(child_element, operation)
|
|
2022
2038
|
|
|
@@ -2033,7 +2049,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2033
2049
|
def writeApplicationError(self, element: ET.Element, error: ApplicationError):
|
|
2034
2050
|
self.logger.debug("writeApplicationError %s" % error.getShortName())
|
|
2035
2051
|
child_element = ET.SubElement(element, "APPLICATION-ERROR")
|
|
2036
|
-
self.
|
|
2052
|
+
self.writeIdentifiable(child_element, error)
|
|
2037
2053
|
self.setChildElementOptionalNumericalValue(child_element, "ERROR-CODE", error.error_code)
|
|
2038
2054
|
|
|
2039
2055
|
def writePossibleErrors(self, element: ET.Element, parent: ClientServerInterface):
|
|
@@ -2047,7 +2063,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2047
2063
|
self._raiseError("Unsupported PossibleError %s" % type(error))
|
|
2048
2064
|
|
|
2049
2065
|
def setPortInterface(self, element: ET.Element, port_interface: PortInterface):
|
|
2050
|
-
self.
|
|
2066
|
+
self.writeIdentifiable(element, port_interface)
|
|
2051
2067
|
self.setChildElementOptionalBooleanValue(element, "IS-SERVICE", port_interface.isService)
|
|
2052
2068
|
self.setChildElementOptionalLiteral(element, "SERVICE-KIND", port_interface.serviceKind)
|
|
2053
2069
|
|
|
@@ -2092,7 +2108,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2092
2108
|
child_element = ET.SubElement(element, key)
|
|
2093
2109
|
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", layout_v.getShortLabel())
|
|
2094
2110
|
self.setChildElementOptionalRefType(child_element, "BASE-TYPE-REF", layout_v.getBaseTypeRef())
|
|
2095
|
-
self.
|
|
2111
|
+
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-AXIS", layout_v.getSwRecordLayoutVAxis())
|
|
2096
2112
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP", layout_v.getSwRecordLayoutVProp())
|
|
2097
2113
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX", layout_v.getSwRecordLayoutVIndex())
|
|
2098
2114
|
|
|
@@ -2101,7 +2117,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2101
2117
|
child_element = ET.SubElement(element, key)
|
|
2102
2118
|
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", group.getShortLabel())
|
|
2103
2119
|
self.setChildElementOptionalLiteral(child_element, "CATEGORY", group.getCategory())
|
|
2104
|
-
self.
|
|
2120
|
+
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS", group.getSwRecordLayoutGroupAxis())
|
|
2105
2121
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX", group.getSwRecordLayoutGroupIndex())
|
|
2106
2122
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM", group.getSwRecordLayoutGroupFrom())
|
|
2107
2123
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO", group.getSwRecordLayoutGroupTo())
|
|
@@ -2113,13 +2129,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2113
2129
|
def writeSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
|
|
2114
2130
|
self.logger.debug("writeSwRecordLayout %s" % layout.getShortName())
|
|
2115
2131
|
child_element = ET.SubElement(element, "SW-RECORD-LAYOUT")
|
|
2116
|
-
self.
|
|
2132
|
+
self.writeIdentifiable(child_element, layout)
|
|
2117
2133
|
self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", layout.getSwRecordLayoutGroup())
|
|
2118
2134
|
|
|
2119
2135
|
def writeSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
|
|
2120
2136
|
self.logger.debug("writeSwAddrMethod %s" % method.getShortName())
|
|
2121
2137
|
child_element = ET.SubElement(element, "SW-ADDR-METHOD")
|
|
2122
|
-
self.
|
|
2138
|
+
self.writeIdentifiable(child_element, method)
|
|
2123
2139
|
self.setChildElementOptionalLiteral(child_element, "MEMORY-ALLOCATION-KEYWORD-POLICY", method.getMemoryAllocationKeywordPolicy())
|
|
2124
2140
|
options = method.getOptions()
|
|
2125
2141
|
if len(options) > 0:
|
|
@@ -2161,13 +2177,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2161
2177
|
def writeDataTypeMappingSet(self, element: ET.Element, mapping_set: DataTypeMappingSet):
|
|
2162
2178
|
self.logger.debug("writeDataTypeMappingSet %s" % mapping_set.getShortName())
|
|
2163
2179
|
child_element = ET.SubElement(element, "DATA-TYPE-MAPPING-SET")
|
|
2164
|
-
self.
|
|
2180
|
+
self.writeIdentifiable(child_element, mapping_set)
|
|
2165
2181
|
self.writeDataTypeMaps(child_element, mapping_set)
|
|
2166
2182
|
self.writeModeRequestTypeMaps(child_element, mapping_set)
|
|
2167
2183
|
|
|
2168
2184
|
def setModeDeclaration(self, element: ET.Element, mode_declaration: ModeDeclaration):
|
|
2169
2185
|
child_element = ET.SubElement(element, "MODE-DECLARATION")
|
|
2170
|
-
self.
|
|
2186
|
+
self.writeIdentifiable(child_element, mode_declaration)
|
|
2171
2187
|
self.setChildElementOptionalNumericalValue(child_element, "VALUE", mode_declaration.getValue())
|
|
2172
2188
|
|
|
2173
2189
|
def writeModeDeclarationGroupModeDeclaration(self, element: ET.Element, parent: ModeDeclarationGroup):
|
|
@@ -2180,7 +2196,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2180
2196
|
def writeModeDeclarationGroup(self, element: ET.Element, group: ModeDeclarationGroup):
|
|
2181
2197
|
self.logger.debug("writeModeDeclarationGroup %s" % group.getShortName())
|
|
2182
2198
|
child_element = ET.SubElement(element, "MODE-DECLARATION-GROUP")
|
|
2183
|
-
self.
|
|
2199
|
+
self.writeIdentifiable(child_element, group)
|
|
2184
2200
|
self.setChildElementOptionalRefType(child_element, "INITIAL-MODE-REF", group.initialModeRef)
|
|
2185
2201
|
self.writeModeDeclarationGroupModeDeclaration(child_element, group)
|
|
2186
2202
|
self.setChildElementOptionalNumericalValue(child_element, "ON-TRANSITION-VALUE", group.getOnTransitionValue())
|
|
@@ -2190,7 +2206,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2190
2206
|
if len(mode_groups) > 0:
|
|
2191
2207
|
mode_group = mode_groups[0]
|
|
2192
2208
|
child_element = ET.SubElement(element, "MODE-GROUP")
|
|
2193
|
-
self.
|
|
2209
|
+
self.writeIdentifiable(child_element, mode_group)
|
|
2194
2210
|
self.setChildElementOptionalRefType(child_element, "TYPE-TREF", mode_group.type_tref)
|
|
2195
2211
|
|
|
2196
2212
|
def writeModeSwitchInterface(self, element: ET.Element, mode_interface: ModeSwitchInterface):
|
|
@@ -2207,7 +2223,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2207
2223
|
|
|
2208
2224
|
def writeEOCExecutableEntityRef(self, element: ET.Element, entity_ref: EOCExecutableEntityRef):
|
|
2209
2225
|
child_element = ET.SubElement(element, "EOC-EXECUTABLE-ENTITY-REF")
|
|
2210
|
-
self.
|
|
2226
|
+
self.writeIdentifiable(child_element, entity_ref)
|
|
2211
2227
|
self.setEOCExecutableEntityRefSuccessorRefs(child_element, entity_ref.getSuccessorRefs())
|
|
2212
2228
|
|
|
2213
2229
|
def writeExecutionOrderConstraintOrderedElement(self, element: ET.Element, constraint: ExecutionOrderConstraint):
|
|
@@ -2223,7 +2239,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2223
2239
|
def writeExecutionOrderConstraint(self, element: ET.Element, constraint: ExecutionOrderConstraint):
|
|
2224
2240
|
self.logger.debug("writeExecutionOrderConstraint %s" % constraint.getShortName())
|
|
2225
2241
|
child_element = ET.SubElement(element, "EXECUTION-ORDER-CONSTRAINT")
|
|
2226
|
-
self.
|
|
2242
|
+
self.writeIdentifiable(child_element, constraint)
|
|
2227
2243
|
self.writeExecutionOrderConstraintOrderedElement(child_element, constraint)
|
|
2228
2244
|
|
|
2229
2245
|
def writeTimingRequirements(self, element: ET.Element, extension: TimingExtension):
|
|
@@ -2242,7 +2258,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2242
2258
|
def writeSwcTiming(self, element: ET.Element, timing: SwcTiming):
|
|
2243
2259
|
self.logger.debug("writeSWcTiming %s" % timing.getShortName())
|
|
2244
2260
|
child_element = ET.SubElement(element, "SWC-TIMING")
|
|
2245
|
-
self.
|
|
2261
|
+
self.writeIdentifiable(child_element, timing)
|
|
2246
2262
|
self.writeTimingExtension(child_element, timing)
|
|
2247
2263
|
|
|
2248
2264
|
def writePduToFrameMappings(self, element: ET.Element, parent: Frame):
|
|
@@ -2251,13 +2267,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2251
2267
|
mappings_tags = ET.SubElement(element, "PDU-TO-FRAME-MAPPINGS")
|
|
2252
2268
|
for mapping in mappings:
|
|
2253
2269
|
child_element = ET.SubElement(mappings_tags, "PDU-TO-FRAME-MAPPING")
|
|
2254
|
-
self.
|
|
2270
|
+
self.writeIdentifiable(child_element, mapping)
|
|
2255
2271
|
self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.packingByteOrder)
|
|
2256
2272
|
self.setChildElementOptionalRefType(child_element, "PDU-REF", mapping.pduRef)
|
|
2257
2273
|
self.setChildElementOptionalNumericalValue(child_element, "START-POSITION", mapping.startPosition)
|
|
2258
2274
|
|
|
2259
2275
|
def writeFrame(self, element: ET.Element, frame: Frame):
|
|
2260
|
-
self.
|
|
2276
|
+
self.writeIdentifiable(element, frame)
|
|
2261
2277
|
self.setChildElementOptionalNumericalValue(element, "FRAME-LENGTH", frame.frameLength)
|
|
2262
2278
|
self.writePduToFrameMappings(element, frame)
|
|
2263
2279
|
|
|
@@ -2284,15 +2300,21 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2284
2300
|
self.setChildElementOptionalRefType(refs_tag, "TX-NM-PDU-REF", ref)
|
|
2285
2301
|
|
|
2286
2302
|
def writeCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
|
|
2287
|
-
self.logger.debug("
|
|
2303
|
+
self.logger.debug("write CanNmNode %s" % nm_node.getShortName())
|
|
2288
2304
|
child_element = ET.SubElement(element, "CAN-NM-NODE")
|
|
2289
|
-
self.
|
|
2305
|
+
self.writeIdentifiable(child_element, nm_node)
|
|
2290
2306
|
self.writeNmNode(child_element, nm_node)
|
|
2291
2307
|
|
|
2292
2308
|
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-CYCLE-OFFSET", nm_node.getNmMsgCycleOffset())
|
|
2293
2309
|
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-REDUCED-TIME", nm_node.getNmMsgReducedTime())
|
|
2294
2310
|
self.setChildElementRxIdentifierRange(child_element, "NM-RANGE-CONFIG", nm_node.getNmRangeConfig())
|
|
2295
2311
|
|
|
2312
|
+
def writeUdpNmNode(self, element: ET.Element, nm_node: UdpNmNode):
|
|
2313
|
+
self.logger.debug("write UdpNmNode %s" % nm_node.getShortName())
|
|
2314
|
+
child_element = ET.SubElement(element, "UDP-NM-NODE")
|
|
2315
|
+
self.writeIdentifiable(child_element, nm_node)
|
|
2316
|
+
self.writeNmNode(child_element, nm_node)
|
|
2317
|
+
|
|
2296
2318
|
def writeNmClusterNmNodes(self, element: ET.Element, parent: NmCluster):
|
|
2297
2319
|
nodes = parent.getNmNodes()
|
|
2298
2320
|
if len(nodes) > 0:
|
|
@@ -2300,10 +2322,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2300
2322
|
for node in nodes:
|
|
2301
2323
|
if isinstance(node, CanNmNode):
|
|
2302
2324
|
self.writeCanNmNode(child_element, node)
|
|
2325
|
+
elif isinstance(node, UdpNmNode):
|
|
2326
|
+
self.writeUdpNmNode(child_element, node)
|
|
2303
2327
|
else:
|
|
2304
|
-
self.
|
|
2328
|
+
self.notImplemented("Unsupported Nm Node <%s>" % type(node))
|
|
2305
2329
|
|
|
2306
|
-
def
|
|
2330
|
+
def writeCanNmClusterCoupling(self, element: ET.Element, coupling: CanNmClusterCoupling):
|
|
2307
2331
|
child_element = ET.SubElement(element, "CAN-NM-CLUSTER-COUPLING")
|
|
2308
2332
|
refs = coupling.getCoupledClusterRefs()
|
|
2309
2333
|
if len(refs) > 0:
|
|
@@ -2314,6 +2338,9 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2314
2338
|
self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ENABLED", coupling.getNmBusloadReductionEnabled())
|
|
2315
2339
|
self.setChildElementOptionalBooleanValue(child_element, "NM-IMMEDIATE-RESTART-ENABLED", coupling.getNmImmediateRestartEnabled())
|
|
2316
2340
|
|
|
2341
|
+
def writeUdpNmClusterCoupling(self, element: ET.Element, coupling: UdpNmClusterCoupling):
|
|
2342
|
+
child_element = ET.SubElement(element, "UDP-NM-CLUSTER-COUPLING")
|
|
2343
|
+
|
|
2317
2344
|
def writeNmConfigNmClusterCouplings(self, element: ET.Element, config: NmConfig):
|
|
2318
2345
|
self.logger.debug("writeNmConfigNmClusterCouplings %s" % config.getShortName())
|
|
2319
2346
|
couplings = config.getNmClusterCouplings()
|
|
@@ -2321,11 +2348,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2321
2348
|
child_element= ET.SubElement(element, "NM-CLUSTER-COUPLINGS")
|
|
2322
2349
|
for coupling in couplings:
|
|
2323
2350
|
if isinstance(coupling, CanNmClusterCoupling):
|
|
2324
|
-
self.
|
|
2351
|
+
self.writeCanNmClusterCoupling(child_element, coupling)
|
|
2352
|
+
elif isinstance(coupling, UdpNmClusterCoupling):
|
|
2353
|
+
self.writeUdpNmClusterCoupling(child_element, coupling)
|
|
2325
2354
|
else:
|
|
2326
|
-
self.
|
|
2355
|
+
self.notImplemented("Unsupported Nm Cluster Coupling <%s>" % type(coupling))
|
|
2327
2356
|
|
|
2328
2357
|
def writeNmCluster(self, element: ET.Element, cluster: NmCluster):
|
|
2358
|
+
self.writeIdentifiable(element, cluster)
|
|
2329
2359
|
self.setChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF", cluster.communicationClusterRef)
|
|
2330
2360
|
self.setChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID", cluster.nmChannelId)
|
|
2331
2361
|
self.setChildElementOptionalBooleanValue(element, "NM-CHANNEL-SLEEP-MASTER", cluster.nmChannelSleepMaster)
|
|
@@ -2335,7 +2365,6 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2335
2365
|
def writeCanNmCluster(self, element: ET.Element, cluster: CanNmCluster):
|
|
2336
2366
|
self.logger.debug("WriteCanNmCluster %s" % cluster.getShortName())
|
|
2337
2367
|
child_element = ET.SubElement(element, "CAN-NM-CLUSTER")
|
|
2338
|
-
self.setIdentifiable(child_element, cluster)
|
|
2339
2368
|
self.writeNmCluster(child_element, cluster)
|
|
2340
2369
|
|
|
2341
2370
|
self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ACTIVE", cluster.getNmBusloadReductionActive())
|
|
@@ -2353,6 +2382,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2353
2382
|
self.setChildElementOptionalNumericalValue(child_element, "NM-USER-DATA-LENGTH", cluster.getNmUserDataLength())
|
|
2354
2383
|
self.setChildElementOptionalFloatValue(child_element, "NM-WAIT-BUS-SLEEP-TIME", cluster.getNmWaitBusSleepTime())
|
|
2355
2384
|
|
|
2385
|
+
def writeUdpNmCluster(self, element: ET.Element, cluster: CanNmCluster):
|
|
2386
|
+
self.logger.debug("Write UdpNmCluster %s" % cluster.getShortName())
|
|
2387
|
+
child_element = ET.SubElement(element, "UDP-NM-CLUSTER")
|
|
2388
|
+
self.writeNmCluster(child_element, cluster)
|
|
2389
|
+
|
|
2356
2390
|
def writeNmConfigNmClusters(self, element: ET.Element, parent: NmConfig):
|
|
2357
2391
|
clusters = parent.getNmClusters()
|
|
2358
2392
|
if len(clusters) > 0:
|
|
@@ -2360,48 +2394,55 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2360
2394
|
for cluster in clusters:
|
|
2361
2395
|
if isinstance(cluster, CanNmCluster):
|
|
2362
2396
|
self.writeCanNmCluster(child_element, cluster)
|
|
2397
|
+
elif isinstance(cluster, UdpNmCluster):
|
|
2398
|
+
self.writeUdpNmCluster(child_element, cluster)
|
|
2363
2399
|
else:
|
|
2364
|
-
self.
|
|
2400
|
+
self.notImplemented("Unsupported Nm Cluster <%s>" % type(cluster))
|
|
2365
2401
|
|
|
2366
2402
|
def writeNmConfig(self, element: ET.Element, config: NmConfig):
|
|
2367
|
-
self.logger.debug("
|
|
2403
|
+
self.logger.debug("Write NmConfig <%s>" % config.getShortName())
|
|
2368
2404
|
child_element = ET.SubElement(element, "NM-CONFIG")
|
|
2369
|
-
self.
|
|
2405
|
+
self.writeIdentifiable(child_element, config)
|
|
2370
2406
|
self.writeNmConfigNmClusters(child_element, config)
|
|
2371
2407
|
self.writeNmConfigNmClusterCouplings(child_element, config)
|
|
2372
2408
|
|
|
2373
2409
|
def writeNmPdu(self, element: ET.Element, pdu: NmPdu):
|
|
2374
|
-
self.logger.debug("NmPdu
|
|
2410
|
+
self.logger.debug("Write NmPdu <%s>" % pdu.getShortName())
|
|
2375
2411
|
child_element = ET.SubElement(element, "NM-PDU")
|
|
2376
|
-
self.
|
|
2412
|
+
self.writeIdentifiable(child_element, pdu)
|
|
2377
2413
|
self.writeIPdu(child_element, pdu)
|
|
2378
2414
|
|
|
2379
2415
|
def writeNPdu(self, element: ET.Element, pdu: NPdu):
|
|
2380
|
-
self.logger.debug("NPdu
|
|
2416
|
+
self.logger.debug("Write NPdu <%s>" % pdu.getShortName())
|
|
2381
2417
|
child_element = ET.SubElement(element, "N-PDU")
|
|
2382
|
-
self.
|
|
2418
|
+
self.writeIdentifiable(child_element, pdu)
|
|
2383
2419
|
self.writeIPdu(child_element, pdu)
|
|
2384
2420
|
|
|
2385
2421
|
def writeIPdu(self, element: ET.Element, pdu: IPdu):
|
|
2386
2422
|
self.setChildElementOptionalLiteral(element, "LENGTH", pdu.getLength())
|
|
2387
2423
|
|
|
2388
2424
|
def writeDcmIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
2389
|
-
self.logger.debug("DcmIPdu
|
|
2425
|
+
self.logger.debug("Write DcmIPdu <%s>" % pdu.getShortName())
|
|
2390
2426
|
child_element = ET.SubElement(element, "DCM-I-PDU")
|
|
2391
|
-
self.
|
|
2427
|
+
self.writeIdentifiable(child_element, pdu)
|
|
2392
2428
|
self.writeIPdu(child_element, pdu)
|
|
2393
2429
|
self.setChildElementOptionalLiteral(child_element, "DIAG-PDU-TYPE", pdu.getDiagPduType())
|
|
2394
2430
|
|
|
2395
2431
|
def writeSecuredIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
2396
|
-
self.logger.debug("SecuredIPdu
|
|
2432
|
+
self.logger.debug("Write SecuredIPdu <%s>" % pdu.getShortName())
|
|
2397
2433
|
child_element = ET.SubElement(element, "SECURED-I-PDU")
|
|
2398
|
-
self.
|
|
2434
|
+
self.writeIdentifiable(child_element, pdu)
|
|
2399
2435
|
self.writeIPdu(child_element, pdu)
|
|
2400
2436
|
|
|
2401
2437
|
def writeCanTpConfig(self, element: ET.Element, config: CanTpConfig):
|
|
2402
|
-
self.logger.debug("CanTpConfig
|
|
2438
|
+
self.logger.debug("Write CanTpConfig <%s>" % config.getShortName())
|
|
2403
2439
|
child_element = ET.SubElement(element, "CAN-TP-CONFIG")
|
|
2404
|
-
self.
|
|
2440
|
+
self.writeIdentifiable(child_element, config)
|
|
2441
|
+
|
|
2442
|
+
def writeLinTpConfig(self, element: ET.Element, config: LinTpConfig):
|
|
2443
|
+
self.logger.debug("Write LinTpConfig <%s>" % config.getShortName())
|
|
2444
|
+
child_element = ET.SubElement(element, "LIN-TP-CONFIG")
|
|
2445
|
+
self.writeIdentifiable(child_element, config)
|
|
2405
2446
|
|
|
2406
2447
|
def writeFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
|
|
2407
2448
|
ref_list = triggering.getFramePortRefs()
|
|
@@ -2421,7 +2462,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2421
2462
|
def writeCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
|
|
2422
2463
|
self.logger.debug("WRite CanFrameTriggering %s" % triggering.getShortName())
|
|
2423
2464
|
child_element = ET.SubElement(element, "CAN-FRAME-TRIGGERING")
|
|
2424
|
-
self.
|
|
2465
|
+
self.writeIdentifiable(child_element, triggering)
|
|
2425
2466
|
self.writeFrameTriggering(child_element, triggering)
|
|
2426
2467
|
self.setChildElementOptionalLiteral(child_element, "CAN-ADDRESSING-MODE", triggering.getCanAddressingMode())
|
|
2427
2468
|
self.setChildElementOptionalBooleanValue(child_element, "CAN-FD-FRAME-SUPPORT", triggering.getCanFdFrameSupport())
|
|
@@ -2433,7 +2474,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2433
2474
|
def writeLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
|
|
2434
2475
|
self.logger.debug("Write LinFrameTriggering %s" % triggering.getShortName())
|
|
2435
2476
|
child_element = ET.SubElement(element, "LIN-FRAME-TRIGGERING")
|
|
2436
|
-
self.
|
|
2477
|
+
self.writeIdentifiable(child_element, triggering)
|
|
2437
2478
|
self.writeFrameTriggering(child_element, triggering)
|
|
2438
2479
|
self.setChildElementOptionalNumericalValue(child_element, "IDENTIFIER", triggering.getIdentifier())
|
|
2439
2480
|
self.setChildElementOptionalLiteral(child_element, "LIN-CHECKSUM", triggering.getLinChecksum())
|
|
@@ -2441,7 +2482,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2441
2482
|
def writeISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
|
|
2442
2483
|
self.logger.debug("Write ISignalTriggering %s" % triggering.getShortName())
|
|
2443
2484
|
child_element = ET.SubElement(element, "I-SIGNAL-TRIGGERING")
|
|
2444
|
-
self.
|
|
2485
|
+
self.writeIdentifiable(child_element, triggering)
|
|
2445
2486
|
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", triggering.getISignalGroupRef())
|
|
2446
2487
|
ref_list = triggering.getISignalPortRefs()
|
|
2447
2488
|
if len(ref_list) > 0:
|
|
@@ -2453,7 +2494,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2453
2494
|
def writePduTriggering(self, element: ET.Element, triggering: PduTriggering):
|
|
2454
2495
|
self.logger.debug("Write PduTriggering %s" % triggering.getShortName())
|
|
2455
2496
|
child_element = ET.SubElement(element, "PDU-TRIGGERING")
|
|
2456
|
-
self.
|
|
2497
|
+
self.writeIdentifiable(child_element, triggering)
|
|
2457
2498
|
ref_list = triggering.getIPduPortRefs()
|
|
2458
2499
|
if len(ref_list) > 0:
|
|
2459
2500
|
i_signal_port_refs_tag = ET.SubElement(child_element, "I-PDU-PORT-REFS")
|
|
@@ -2505,17 +2546,55 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2505
2546
|
else:
|
|
2506
2547
|
self.notImplemented("Unsupported PduTriggering <%s>" % type(triggering))
|
|
2507
2548
|
|
|
2508
|
-
def
|
|
2549
|
+
def writeCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
|
|
2509
2550
|
self.logger.debug("Set CanPhysicalChannel %s" % channel.getShortName())
|
|
2510
2551
|
child_element = ET.SubElement(element, "CAN-PHYSICAL-CHANNEL")
|
|
2511
|
-
self.
|
|
2552
|
+
self.writeIdentifiable(child_element, channel)
|
|
2512
2553
|
self.writePhysicalChannel(child_element, channel)
|
|
2513
2554
|
|
|
2555
|
+
def writeScheduleTableEntry(self, element: ET.Element, entry: ScheduleTableEntry):
|
|
2556
|
+
self.setChildElementOptionalTimeValue(element, "DELAY", entry.getDelay())
|
|
2557
|
+
self.setChildElementOptionalIntegerValue(element, "POSITION-IN-TABLE", entry.getPositionInTable())
|
|
2558
|
+
|
|
2559
|
+
def setApplicationEntry(self, element: ET.Element, key: str, entry: ApplicationEntry):
|
|
2560
|
+
if entry is not None:
|
|
2561
|
+
child_element = ET.SubElement(element, key)
|
|
2562
|
+
self.writeScheduleTableEntry(child_element, entry)
|
|
2563
|
+
self.setChildElementOptionalRefType(child_element, "FRAME-TRIGGERING-REF", entry.getFrameTriggeringRef())
|
|
2564
|
+
|
|
2565
|
+
def writeLinScheduleTableTableEntries(self, element: ET.Element, table: LinScheduleTable):
|
|
2566
|
+
entries = table.getTableEntries()
|
|
2567
|
+
if len(entries) > 0:
|
|
2568
|
+
child_element = ET.SubElement(element, "TABLE-ENTRYS")
|
|
2569
|
+
for entry in entries:
|
|
2570
|
+
if isinstance(entry, ApplicationEntry):
|
|
2571
|
+
self.setApplicationEntry(child_element, "APPLICATION-ENTRY", entry)
|
|
2572
|
+
else:
|
|
2573
|
+
self.notImplemented("Unsupported Schedule Table <%s>" % type(entry))
|
|
2574
|
+
|
|
2575
|
+
def writeLinScheduleTable(self, element: ET.Element, table: LinScheduleTable):
|
|
2576
|
+
child_element = ET.SubElement(element, "LIN-SCHEDULE-TABLE")
|
|
2577
|
+
self.writeIdentifiable(child_element, table)
|
|
2578
|
+
self.setChildElementOptionalLiteral(child_element, "RESUME-POSITION", table.getResumePosition())
|
|
2579
|
+
self.setChildElementOptionalLiteral(child_element, "RUN-MODE", table.getRunMode())
|
|
2580
|
+
self.writeLinScheduleTableTableEntries(child_element, table)
|
|
2581
|
+
|
|
2582
|
+
def writeLinPhysicalChannelScheduleTables(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2583
|
+
tables = channel.getScheduleTables()
|
|
2584
|
+
if len(tables) > 0:
|
|
2585
|
+
child_element = ET.SubElement(element, "SCHEDULE-TABLES")
|
|
2586
|
+
for table in tables:
|
|
2587
|
+
if isinstance(table, LinScheduleTable):
|
|
2588
|
+
self.writeLinScheduleTable(child_element, table)
|
|
2589
|
+
else:
|
|
2590
|
+
self.notImplemented("Unsupported Schedule Table <%s>" % type(table))
|
|
2591
|
+
|
|
2514
2592
|
def writeLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2515
2593
|
self.logger.debug("Set LinPhysicalChannel %s" % channel.getShortName())
|
|
2516
2594
|
child_element = ET.SubElement(element, "LIN-PHYSICAL-CHANNEL")
|
|
2517
|
-
self.
|
|
2595
|
+
self.writeIdentifiable(child_element, channel)
|
|
2518
2596
|
self.writePhysicalChannel(child_element, channel)
|
|
2597
|
+
self.writeLinPhysicalChannelScheduleTables(child_element, channel)
|
|
2519
2598
|
|
|
2520
2599
|
def setIpv6Configuration(self, element: ET.Element, configuration: Ipv6Configuration):
|
|
2521
2600
|
if configuration is not None:
|
|
@@ -2537,10 +2616,21 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2537
2616
|
else:
|
|
2538
2617
|
self.notImplemented("Unsupported Network EndPoint Address <%s>" % type(address))
|
|
2539
2618
|
|
|
2619
|
+
def setDoIpEntity(self, element: ET.Element, key: str, entity: DoIpEntity):
|
|
2620
|
+
if entity is not None:
|
|
2621
|
+
child_element = ET.SubElement(element, key)
|
|
2622
|
+
self.setChildElementOptionalLiteral(child_element, "DO-IP-ENTITY-ROLE", entity.getDoIpEntityRole())
|
|
2623
|
+
|
|
2624
|
+
def setInfrastructureServices(self, element: ET.Element, key: str, services: InfrastructureServices):
|
|
2625
|
+
if services is not None:
|
|
2626
|
+
child_element = ET.SubElement(element, key)
|
|
2627
|
+
self.setDoIpEntity(child_element, "DO-IP-ENTITY", services.getDoIpEntity())
|
|
2628
|
+
|
|
2540
2629
|
def writeNetworkEndPoint(self, element: ET.Element, end_point: NetworkEndpoint):
|
|
2541
2630
|
self.logger.debug("Set NetworkEndpoint %s" % end_point.getShortName())
|
|
2542
2631
|
child_element = ET.SubElement(element, "NETWORK-ENDPOINT")
|
|
2543
|
-
self.
|
|
2632
|
+
self.writeIdentifiable(child_element, end_point)
|
|
2633
|
+
self.setInfrastructureServices(child_element, "INFRASTRUCTURE-SERVICES", end_point.getInfrastructureServices())
|
|
2544
2634
|
self.writeNetworkEndPointNetworkEndPointAddresses(child_element, end_point.getNetworkEndpointAddresses())
|
|
2545
2635
|
self.setChildElementOptionalPositiveInteger(child_element, "PRIORITY", end_point.getPriority())
|
|
2546
2636
|
|
|
@@ -2571,10 +2661,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2571
2661
|
def setSocketConnection(self, element: ET.Element, connection: SocketConnection):
|
|
2572
2662
|
if connection is not None:
|
|
2573
2663
|
child_element = ET.SubElement(element, "SOCKET-CONNECTION")
|
|
2664
|
+
self.setChildElementOptionalBooleanValue(child_element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST", connection.getClientIpAddrFromConnectionRequest())
|
|
2665
|
+
self.setChildElementOptionalBooleanValue(child_element, "CLIENT-PORT-FROM-CONNECTION-REQUEST", connection.getClientPortFromConnectionRequest())
|
|
2574
2666
|
self.setChildElementOptionalRefType(child_element, "CLIENT-PORT-REF", connection.getClientPortRef())
|
|
2575
2667
|
self.setSocketConnectionPdus(child_element, "PDUS", connection.getPdus())
|
|
2576
2668
|
self.setChildElementOptionalPositiveInteger(child_element, "PDU-COLLECTION-MAX-BUFFER-SIZE", connection.getPduCollectionMaxBufferSize())
|
|
2577
2669
|
self.setChildElementOptionalTimeValue(child_element, "PDU-COLLECTION-TIMEOUT", connection.getPduCollectionTimeout())
|
|
2670
|
+
self.setChildElementOptionalLiteral(child_element, "RUNTIME-IP-ADDRESS-CONFIGURATION", connection.getRuntimeIpAddressConfiguration())
|
|
2671
|
+
self.setChildElementOptionalLiteral(child_element, "RUNTIME-PORT-CONFIGURATION", connection.getRuntimePortConfiguration())
|
|
2578
2672
|
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", connection.getShortLabel())
|
|
2579
2673
|
|
|
2580
2674
|
def writeSocketConnectionBundleConnections(self, element: ET.Element, bundle: SocketConnectionBundle):
|
|
@@ -2590,7 +2684,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2590
2684
|
def writeSocketConnectionBundle(self, element: ET.Element, bundle: SocketConnectionBundle):
|
|
2591
2685
|
if bundle is not None:
|
|
2592
2686
|
child_element = ET.SubElement(element, "SOCKET-CONNECTION-BUNDLE")
|
|
2593
|
-
self.
|
|
2687
|
+
self.writeReferrable(child_element, bundle)
|
|
2594
2688
|
self.writeSocketConnectionBundleConnections(child_element, bundle)
|
|
2595
2689
|
self.setChildElementOptionalRefType(child_element, "SERVER-PORT-REF", bundle.getServerPortRef())
|
|
2596
2690
|
|
|
@@ -2604,18 +2698,237 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2604
2698
|
else:
|
|
2605
2699
|
self.notImplemented("Unsupported Connection Bundle <%s>" % type(bundle))
|
|
2606
2700
|
|
|
2607
|
-
def
|
|
2701
|
+
def setTpPort(self, element: ET.SubElement, key: str, port: TpPort):
|
|
2702
|
+
if port is not None:
|
|
2703
|
+
child_element = ET.SubElement(element, key)
|
|
2704
|
+
self.setChildElementOptionalBooleanValue(child_element, "DYNAMICALLY-ASSIGNED", port.getDynamicallyAssigned())
|
|
2705
|
+
self.setChildElementOptionalPositiveInteger(child_element, "PORT-NUMBER", port.getPortNumber())
|
|
2706
|
+
|
|
2707
|
+
def writeUdpTp(self, element: ET.Element, tp: UdpTp):
|
|
2708
|
+
child_element = ET.SubElement(element, "UDP-TP")
|
|
2709
|
+
self.setTpPort(child_element, "UDP-TP-PORT", tp.getUdpTpPort())
|
|
2710
|
+
|
|
2711
|
+
def writeTcpTp(self, element: ET.Element, tp: TcpTp):
|
|
2712
|
+
child_element = ET.SubElement(element, "TCP-TP")
|
|
2713
|
+
self.setChildElementOptionalTimeValue(child_element, "KEEP-ALIVE-INTERVAL", tp.getKeepAliveInterval())
|
|
2714
|
+
self.setChildElementOptionalPositiveInteger(child_element, "KEEP-ALIVE-PROBES-MAX", tp.getKeepAliveProbesMax())
|
|
2715
|
+
self.setChildElementOptionalTimeValue(child_element, "KEEP-ALIVE-TIME", tp.getKeepAliveTime())
|
|
2716
|
+
self.setChildElementOptionalBooleanValue(child_element, "KEEP-ALIVES", tp.getKeepAlives())
|
|
2717
|
+
self.setChildElementOptionalLiteral(child_element, "NAGLES-ALGORITHM", tp.getNaglesAlgorithm())
|
|
2718
|
+
self.setTpPort(child_element, "TCP-TP-PORT", tp.getTcpTpPort())
|
|
2719
|
+
|
|
2720
|
+
def writeGenericTp(self, element: ET.Element, tp: GenericTp):
|
|
2721
|
+
child_element = ET.SubElement(element, "GENERIC-TP")
|
|
2722
|
+
self.setChildElementOptionalLiteral(child_element, "TP-ADDRESS", tp.getTpAddress())
|
|
2723
|
+
self.setChildElementOptionalLiteral(child_element, "TP-TECHNOLOGY", tp.getTpTechnology())
|
|
2724
|
+
|
|
2725
|
+
def writeTransportProtocolConfiguration(self, element: ET.Element, configuration: TransportProtocolConfiguration):
|
|
2726
|
+
if configuration is not None:
|
|
2727
|
+
child_element = ET.SubElement(element, "TP-CONFIGURATION")
|
|
2728
|
+
if isinstance(configuration, UdpTp):
|
|
2729
|
+
self.writeUdpTp(child_element, configuration)
|
|
2730
|
+
elif isinstance(configuration, TcpTp):
|
|
2731
|
+
self.writeTcpTp(child_element, configuration)
|
|
2732
|
+
elif isinstance(configuration, GenericTp):
|
|
2733
|
+
self.writeGenericTp(child_element, configuration)
|
|
2734
|
+
else:
|
|
2735
|
+
self.notImplemented("Unsupported TransportProtocolConfiguration <%s>" % type(configuration))
|
|
2736
|
+
|
|
2737
|
+
return configuration
|
|
2738
|
+
|
|
2739
|
+
def writeConsumedEventGroupRoutingGroupRefs(self, element: ET.Element, group: ConsumedEventGroup):
|
|
2740
|
+
refs = group.getRoutingGroupRefs()
|
|
2741
|
+
if len(refs) > 0:
|
|
2742
|
+
child_element = ET.SubElement(element, "ROUTING-GROUP-REFS")
|
|
2743
|
+
for ref in refs:
|
|
2744
|
+
self.setChildElementOptionalRefType(child_element, "ROUTING-GROUP-REF", ref)
|
|
2745
|
+
|
|
2746
|
+
def setRequestResponseDelay(self, element: ET.Element, key: str, delay: RequestResponseDelay):
|
|
2747
|
+
if delay is not None:
|
|
2748
|
+
child_element = ET.SubElement(element, key)
|
|
2749
|
+
self.setChildElementOptionalTimeValue(child_element, "MAX-VALUE", delay.getMaxValue())
|
|
2750
|
+
self.setChildElementOptionalTimeValue(child_element, "MIN-VALUE", delay.getMinValue())
|
|
2751
|
+
|
|
2752
|
+
def setInitialSdDelayConfig(self, element: ET.Element, key: str, config: InitialSdDelayConfig):
|
|
2753
|
+
if config is not None:
|
|
2754
|
+
child_element = ET.SubElement(element, key)
|
|
2755
|
+
self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE", config.getInitialDelayMaxValue())
|
|
2756
|
+
self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE", config.getInitialDelayMinValue())
|
|
2757
|
+
self.setChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY", config.getInitialRepetitionsBaseDelay())
|
|
2758
|
+
self.setChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX", config.getInitialRepetitionsMax())
|
|
2759
|
+
|
|
2760
|
+
def setSdClientConfig(self, element: ET.Element, key: str, config: SdClientConfig):
|
|
2761
|
+
if config is not None:
|
|
2762
|
+
child_element = ET.SubElement(element, key)
|
|
2763
|
+
|
|
2764
|
+
self.setChildElementOptionalPositiveInteger(child_element, "CLIENT-SERVICE-MAJOR-VERSION", config.getClientServiceMajorVersion())
|
|
2765
|
+
self.setChildElementOptionalPositiveInteger(child_element, "CLIENT-SERVICE-MINOR-VERSION", config.getClientServiceMinorVersion())
|
|
2766
|
+
self.setInitialSdDelayConfig(child_element, "INITIAL-FIND-BEHAVIOR", config.getInitialFindBehavior())
|
|
2767
|
+
self.setRequestResponseDelay(child_element, "REQUEST-RESPONSE-DELAY", config.getRequestResponseDelay())
|
|
2768
|
+
self.setChildElementOptionalPositiveInteger(child_element, "TTL", config.getTtl())
|
|
2769
|
+
|
|
2770
|
+
def writeConsumedEventGroup(self, element: ET.Element, group: ConsumedEventGroup):
|
|
2771
|
+
if group is not None:
|
|
2772
|
+
child_element = ET.SubElement(element, "CONSUMED-EVENT-GROUP")
|
|
2773
|
+
self.writeIdentifiable(child_element, group)
|
|
2774
|
+
self.setChildElementOptionalRefType(child_element, "APPLICATION-ENDPOINT-REF", group.getApplicationEndpointRef())
|
|
2775
|
+
self.setChildElementOptionalPositiveInteger(child_element, "EVENT-GROUP-IDENTIFIER", group.getEventGroupIdentifier())
|
|
2776
|
+
self.writeConsumedEventGroupRoutingGroupRefs(child_element, group)
|
|
2777
|
+
self.setSdClientConfig(child_element, "SD-CLIENT-CONFIG", group.getSdClientConfig())
|
|
2778
|
+
|
|
2779
|
+
def writeConsumedServiceInstanceConsumedEventGroups(self, element: ET.Element, instance: ConsumedServiceInstance):
|
|
2780
|
+
groups = instance.getConsumedEventGroups()
|
|
2781
|
+
if len(groups) > 0:
|
|
2782
|
+
child_element = ET.SubElement(element, "CONSUMED-EVENT-GROUPS")
|
|
2783
|
+
for group in groups:
|
|
2784
|
+
if isinstance(group, ConsumedEventGroup):
|
|
2785
|
+
self.writeConsumedEventGroup(child_element, group)
|
|
2786
|
+
else:
|
|
2787
|
+
self.notImplemented("Unsupported ConsumedEventGroups <%s>" % type(group))
|
|
2788
|
+
|
|
2789
|
+
def writeConsumedServiceInstance(self, element: ET.Element, instance: ConsumedServiceInstance):
|
|
2790
|
+
if instance is not None:
|
|
2791
|
+
child_element = ET.SubElement(element, "CONSUMED-SERVICE-INSTANCE")
|
|
2792
|
+
self.writeIdentifiable(child_element, instance)
|
|
2793
|
+
self.writeConsumedServiceInstanceConsumedEventGroups(child_element, instance)
|
|
2794
|
+
self.setChildElementOptionalRefType(child_element, "PROVIDED-SERVICE-INSTANCE-REF", instance.getProvidedServiceInstanceRef())
|
|
2795
|
+
self.setSdClientConfig(child_element, "SD-CLIENT-CONFIG", instance.getSdClientConfig())
|
|
2796
|
+
|
|
2797
|
+
def writeSocketAddressApplicationEndpointConsumedServiceInstances(self, element: ET.Element, end_point: ApplicationEndpoint):
|
|
2798
|
+
instances = end_point.getConsumedServiceInstances()
|
|
2799
|
+
if len(instances) > 0:
|
|
2800
|
+
child_element = ET.SubElement(element, "CONSUMED-SERVICE-INSTANCES")
|
|
2801
|
+
for instance in instances:
|
|
2802
|
+
if isinstance(instance, ConsumedServiceInstance):
|
|
2803
|
+
self.writeConsumedServiceInstance(child_element, instance)
|
|
2804
|
+
else:
|
|
2805
|
+
self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % type(instance))
|
|
2806
|
+
|
|
2807
|
+
def setInitialSdDelayConfig(self, element: ET.Element, key: str, config: InitialSdDelayConfig):
|
|
2808
|
+
if config is not None:
|
|
2809
|
+
child_element = ET.SubElement(element, key)
|
|
2810
|
+
self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE", config.getInitialDelayMaxValue())
|
|
2811
|
+
self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE", config.getInitialDelayMinValue())
|
|
2812
|
+
self.setChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY", config.getInitialRepetitionsBaseDelay())
|
|
2813
|
+
self.setChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX", config.getInitialRepetitionsMax())
|
|
2814
|
+
|
|
2815
|
+
def setSdServerConfig(self, element: ET.Element, key: str, config: SdServerConfig):
|
|
2816
|
+
if config is not None:
|
|
2817
|
+
child_element = ET.SubElement(element, key)
|
|
2818
|
+
self.setInitialSdDelayConfig(child_element, "INITIAL-OFFER-BEHAVIOR", config.getInitialOfferBehavior())
|
|
2819
|
+
self.setChildElementOptionalTimeValue(child_element, "OFFER-CYCLIC-DELAY", config.getOfferCyclicDelay())
|
|
2820
|
+
self.setRequestResponseDelay(child_element, "REQUEST-RESPONSE-DELAY", config.getRequestResponseDelay())
|
|
2821
|
+
self.setChildElementOptionalPositiveInteger(child_element, "SERVER-SERVICE-MAJOR-VERSION", config.getServerServiceMajorVersion())
|
|
2822
|
+
self.setChildElementOptionalPositiveInteger(child_element, "SERVER-SERVICE-MINOR-VERSION", config.getServerServiceMinorVersion())
|
|
2823
|
+
self.setChildElementOptionalPositiveInteger(child_element, "TTL", config.getTtl())
|
|
2824
|
+
|
|
2825
|
+
def writeEventHandler(self, element: ET.Element, handler: EventHandler):
|
|
2826
|
+
if handler is not None:
|
|
2827
|
+
child_element = ET.SubElement(element, "EVENT-HANDLER")
|
|
2828
|
+
self.writeIdentifiable(child_element, handler)
|
|
2829
|
+
self.setChildElementOptionalRefType(child_element, "APPLICATION-ENDPOINT-REF", handler.getApplicationEndpointRef())
|
|
2830
|
+
|
|
2831
|
+
refs = handler.getConsumedEventGroupRefs()
|
|
2832
|
+
if len(refs) > 0:
|
|
2833
|
+
refs_tag = ET.SubElement(child_element, "CONSUMED-EVENT-GROUP-REFS")
|
|
2834
|
+
for ref in refs:
|
|
2835
|
+
self.setChildElementOptionalRefType(refs_tag, "CONSUMED-EVENT-GROUP-REF", ref)
|
|
2836
|
+
|
|
2837
|
+
self.setChildElementOptionalPositiveInteger(child_element, "MULTICAST-THRESHOLD", handler.getMulticastThreshold())
|
|
2838
|
+
|
|
2839
|
+
refs = handler.getRoutingGroupRefs()
|
|
2840
|
+
if len(refs) > 0:
|
|
2841
|
+
refs_tag = ET.SubElement(child_element, "ROUTING-GROUP-REFS")
|
|
2842
|
+
for ref in refs:
|
|
2843
|
+
self.setChildElementOptionalRefType(refs_tag, "ROUTING-GROUP-REF", ref)
|
|
2844
|
+
self.setSdServerConfig(child_element, "SD-SERVER-CONFIG", handler.getSdServerConfig())
|
|
2845
|
+
|
|
2846
|
+
def writeProvidedServiceInstanceEventHandlers(self, element: ET.Element, instance: ProvidedServiceInstance):
|
|
2847
|
+
handlers = instance.getEventHandlers()
|
|
2848
|
+
if len(handlers) > 0:
|
|
2849
|
+
child_element = ET.SubElement(element, "EVENT-HANDLERS")
|
|
2850
|
+
for handler in handlers:
|
|
2851
|
+
if isinstance(handler, EventHandler):
|
|
2852
|
+
self.writeEventHandler(child_element, handler)
|
|
2853
|
+
else:
|
|
2854
|
+
self.notImplemented("Unsupported Event Handler <%s>" % type(handler))
|
|
2855
|
+
|
|
2856
|
+
def writeProvidedServiceInstance(self, element: ET.Element, instance: ProvidedServiceInstance):
|
|
2857
|
+
if instance is not None:
|
|
2858
|
+
child_element = ET.SubElement(element, "PROVIDED-SERVICE-INSTANCE")
|
|
2859
|
+
self.writeIdentifiable(child_element, instance)
|
|
2860
|
+
self.writeProvidedServiceInstanceEventHandlers(child_element, instance)
|
|
2861
|
+
self.setChildElementOptionalPositiveInteger(child_element, "INSTANCE-IDENTIFIER", instance.getInstanceIdentifier())
|
|
2862
|
+
self.setSdServerConfig(child_element, "SD-SERVER-CONFIG", instance.getSdServerConfig())
|
|
2863
|
+
self.setChildElementOptionalPositiveInteger(child_element, "SERVICE-IDENTIFIER", instance.getServiceIdentifier())
|
|
2864
|
+
|
|
2865
|
+
def writeSocketAddressApplicationEndpointProvidedServiceInstance(self, element: ET.Element, end_point: ApplicationEndpoint):
|
|
2866
|
+
instances = end_point.getProvidedServiceInstances()
|
|
2867
|
+
if len(instances) > 0:
|
|
2868
|
+
child_element = ET.SubElement(element, "PROVIDED-SERVICE-INSTANCES")
|
|
2869
|
+
for instance in instances:
|
|
2870
|
+
if isinstance(instance, ProvidedServiceInstance):
|
|
2871
|
+
self.writeProvidedServiceInstance(child_element, instance)
|
|
2872
|
+
else:
|
|
2873
|
+
self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % type(instance))
|
|
2874
|
+
|
|
2875
|
+
def writeSocketAddressApplicationEndpoint(self, element: ET.Element, address: SocketAddress):
|
|
2876
|
+
end_point = address.getApplicationEndpoint()
|
|
2877
|
+
if end_point is not None:
|
|
2878
|
+
child_element = ET.SubElement(element, "APPLICATION-ENDPOINT")
|
|
2879
|
+
self.writeIdentifiable(child_element, end_point)
|
|
2880
|
+
self.writeSocketAddressApplicationEndpointConsumedServiceInstances(child_element, end_point)
|
|
2881
|
+
self.setChildElementOptionalRefType(child_element, "NETWORK-ENDPOINT-REF", end_point.getNetworkEndpointRef())
|
|
2882
|
+
self.setChildElementOptionalPositiveInteger(child_element, "PRIORITY", end_point.getPriority())
|
|
2883
|
+
self.writeSocketAddressApplicationEndpointProvidedServiceInstance(child_element, end_point)
|
|
2884
|
+
self.writeTransportProtocolConfiguration(child_element, end_point.getTpConfiguration())
|
|
2885
|
+
|
|
2886
|
+
def writeSocketAddressMulticastConnectorRefs(self, element: ET.Element, address: SocketAddress):
|
|
2887
|
+
refs = address.getMulticastConnectorRefs()
|
|
2888
|
+
if len(refs) > 0:
|
|
2889
|
+
child_element = ET.SubElement(element, "MULTICAST-CONNECTOR-REFS")
|
|
2890
|
+
for ref in refs:
|
|
2891
|
+
self.setChildElementOptionalRefType(child_element, "MULTICAST-CONNECTOR-REF", ref)
|
|
2892
|
+
|
|
2893
|
+
def writeSocketAddress(self, element: ET.Element, address: SocketAddress):
|
|
2894
|
+
child_element = ET.SubElement(element, "SOCKET-ADDRESS")
|
|
2895
|
+
self.writeIdentifiable(child_element, address)
|
|
2896
|
+
self.writeSocketAddressApplicationEndpoint(child_element, address)
|
|
2897
|
+
self.writeSocketAddressMulticastConnectorRefs(child_element, address)
|
|
2898
|
+
self.setChildElementOptionalRefType(child_element, "CONNECTOR-REF", address.getConnectorRef())
|
|
2899
|
+
self.setChildElementOptionalPositiveInteger(child_element, "PORT-ADDRESS", address.getPortAddress())
|
|
2900
|
+
|
|
2901
|
+
def writeSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
|
|
2902
|
+
addresses = config.getSocketAddresses()
|
|
2903
|
+
if len(addresses) > 0:
|
|
2904
|
+
child_element = ET.SubElement(element, "SOCKET-ADDRESSS")
|
|
2905
|
+
for address in addresses:
|
|
2906
|
+
if isinstance(address, SocketAddress):
|
|
2907
|
+
self.writeSocketAddress(child_element, address)
|
|
2908
|
+
else:
|
|
2909
|
+
self.notImplemented("Unsupported Socket Address <%s>" % type(address))
|
|
2910
|
+
|
|
2911
|
+
def writeSoAdConfig(self, element: ET.Element, key: str, config: SoAdConfig):
|
|
2608
2912
|
if config is not None:
|
|
2609
2913
|
child_element = ET.SubElement(element, key)
|
|
2610
2914
|
self.writeSoAdConfigConnectionBundles(child_element, config)
|
|
2915
|
+
self.writeSoAdConfigSocketAddresses(child_element, config)
|
|
2916
|
+
|
|
2917
|
+
def writeEthernetPhysicalChannelVlan(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2918
|
+
vlan = channel.getVlan()
|
|
2919
|
+
if vlan is not None:
|
|
2920
|
+
child_element = ET.SubElement(element, "VLAN")
|
|
2921
|
+
self.writeIdentifiable(child_element, vlan)
|
|
2922
|
+
self.setChildElementOptionalPositiveInteger(child_element, "VLAN-IDENTIFIER", vlan.getVlanIdentifier())
|
|
2611
2923
|
|
|
2612
|
-
def
|
|
2924
|
+
def writeEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2613
2925
|
self.logger.debug("Set EthernetPhysicalChannel %s" % channel.getShortName())
|
|
2614
2926
|
child_element = ET.SubElement(element, "ETHERNET-PHYSICAL-CHANNEL")
|
|
2615
|
-
self.
|
|
2927
|
+
self.writeIdentifiable(child_element, channel)
|
|
2616
2928
|
self.writePhysicalChannel(child_element, channel)
|
|
2617
2929
|
self.writeEthernetPhysicalChannelNetworkEndPoints(child_element, channel.getNetworkEndpoints())
|
|
2618
|
-
self.
|
|
2930
|
+
self.writeSoAdConfig(child_element, "SO-AD-CONFIG", channel.getSoAdConfig())
|
|
2931
|
+
self.writeEthernetPhysicalChannelVlan(child_element, channel)
|
|
2619
2932
|
|
|
2620
2933
|
def writeCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2621
2934
|
channels = cluster.getPhysicalChannels()
|
|
@@ -2623,11 +2936,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2623
2936
|
child_element = ET.SubElement(element, "PHYSICAL-CHANNELS")
|
|
2624
2937
|
for channel in channels:
|
|
2625
2938
|
if isinstance(channel, CanPhysicalChannel):
|
|
2626
|
-
self.
|
|
2939
|
+
self.writeCanPhysicalChannel(child_element, channel)
|
|
2627
2940
|
elif isinstance(channel, LinPhysicalChannel):
|
|
2628
2941
|
self.writeLinPhysicalChannel(child_element, channel)
|
|
2629
2942
|
elif isinstance(channel, EthernetPhysicalChannel):
|
|
2630
|
-
self.
|
|
2943
|
+
self.writeEthernetPhysicalChannel(child_element, channel)
|
|
2631
2944
|
else:
|
|
2632
2945
|
self.notImplemented("Unsupported Physical Channel <%s>" % type(channel))
|
|
2633
2946
|
|
|
@@ -2637,14 +2950,22 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2637
2950
|
self.setChildElementOptionalLiteral(element, "PROTOCOL-NAME", cluster.getProtocolName())
|
|
2638
2951
|
self.setChildElementOptionalLiteral(element, "PROTOCOL-VERSION", cluster.getProtocolVersion())
|
|
2639
2952
|
|
|
2640
|
-
def
|
|
2953
|
+
def setCanClusterBusOffRecovery(self, element: ET.Element, key: str, recovery: CanClusterBusOffRecovery):
|
|
2954
|
+
if recovery is not None:
|
|
2955
|
+
child_element = ET.SubElement(element, key)
|
|
2956
|
+
self.setChildElementOptionalPositiveInteger(child_element, "BOR-COUNTER-L-1-TO-L-2", recovery.getBorCounterL1ToL2())
|
|
2957
|
+
self.setChildElementOptionalTimeValue(child_element, "BOR-TIME-L-1", recovery.getBorTimeL1())
|
|
2958
|
+
self.setChildElementOptionalTimeValue(child_element, "BOR-TIME-L-2", recovery.getBorTimeL2())
|
|
2959
|
+
|
|
2960
|
+
def writeAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
|
|
2961
|
+
self.setCanClusterBusOffRecovery(element, "BUS-OFF-RECOVERY", cluster.getBusOffRecovery())
|
|
2641
2962
|
self.setChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE", cluster.getCanFdBaudrate())
|
|
2642
2963
|
self.setChildElementOptionalNumericalValue(element, "SPEED", cluster.getSpeed())
|
|
2643
2964
|
|
|
2644
2965
|
def writeLinCluster(self, element: ET.Element, cluster: LinCluster):
|
|
2645
2966
|
self.logger.debug("LinCluster %s" % cluster.getShortName())
|
|
2646
2967
|
child_element = ET.SubElement(element, "LIN-CLUSTER")
|
|
2647
|
-
self.
|
|
2968
|
+
self.writeIdentifiable(child_element, cluster)
|
|
2648
2969
|
child_element = ET.SubElement(child_element, "LIN-CLUSTER-VARIANTS")
|
|
2649
2970
|
child_element = ET.SubElement(child_element, "LIN-CLUSTER-CONDITIONAL")
|
|
2650
2971
|
self.writeCommunicationCluster(child_element, cluster)
|
|
@@ -2652,21 +2973,38 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2652
2973
|
def writeCanCluster(self, element: ET.Element, cluster: CanCluster):
|
|
2653
2974
|
self.logger.debug("CanCluster %s" % cluster.getShortName())
|
|
2654
2975
|
child_element = ET.SubElement(element, "CAN-CLUSTER")
|
|
2655
|
-
self.
|
|
2976
|
+
self.writeIdentifiable(child_element, cluster)
|
|
2656
2977
|
|
|
2657
2978
|
child_element = ET.SubElement(child_element, "CAN-CLUSTER-VARIANTS")
|
|
2658
2979
|
child_element = ET.SubElement(child_element, "CAN-CLUSTER-CONDITIONAL")
|
|
2659
2980
|
self.writeCommunicationCluster(child_element, cluster)
|
|
2660
|
-
self.
|
|
2981
|
+
self.writeAbstractCanCluster(child_element, cluster)
|
|
2982
|
+
|
|
2983
|
+
def writeMacMulticastGroup(self, element: ET.Element, group: MacMulticastGroup):
|
|
2984
|
+
if group is not None:
|
|
2985
|
+
child_element = ET.SubElement(element, "MAC-MULTICAST-GROUP")
|
|
2986
|
+
self.writeIdentifiable(child_element, group)
|
|
2987
|
+
self.setChildElementOptionalLiteral(child_element, "MAC-MULTICAST-ADDRESS", group.getMacMulticastAddress())
|
|
2988
|
+
|
|
2989
|
+
def writeEthernetClusterMacMulticastGroups(self, element: ET.Element, cluster: EthernetCluster):
|
|
2990
|
+
groups = cluster.getMacMulticastGroups()
|
|
2991
|
+
if len(groups) > 0:
|
|
2992
|
+
child_element = ET.SubElement(element, "MAC-MULTICAST-GROUPS")
|
|
2993
|
+
for group in groups:
|
|
2994
|
+
if isinstance(group, MacMulticastGroup):
|
|
2995
|
+
self.writeMacMulticastGroup(child_element, group)
|
|
2996
|
+
else:
|
|
2997
|
+
self.notImplemented("Unsupported assigned data type <%s>" % type(group))
|
|
2661
2998
|
|
|
2662
2999
|
def writeEthernetCluster(self, element: ET.Element, cluster: EthernetCluster):
|
|
2663
3000
|
self.logger.debug("Set EthernetCluster %s" % cluster.getShortName())
|
|
2664
3001
|
child_element = ET.SubElement(element, "ETHERNET-CLUSTER")
|
|
2665
|
-
self.
|
|
3002
|
+
self.writeARElement(child_element, cluster)
|
|
2666
3003
|
|
|
2667
3004
|
child_element = ET.SubElement(child_element, "ETHERNET-CLUSTER-VARIANTS")
|
|
2668
3005
|
child_element = ET.SubElement(child_element, "ETHERNET-CLUSTER-CONDITIONAL")
|
|
2669
3006
|
self.writeCommunicationCluster(child_element, cluster)
|
|
3007
|
+
self.writeEthernetClusterMacMulticastGroups(child_element, cluster)
|
|
2670
3008
|
|
|
2671
3009
|
def writeCanFrame(self, element: ET.Element, frame: CanFrame):
|
|
2672
3010
|
self.logger.debug("Write CanFrame %s" % frame.getShortName())
|
|
@@ -2674,7 +3012,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2674
3012
|
self.writeFrame(child_element, frame)
|
|
2675
3013
|
|
|
2676
3014
|
def writeCommConnectorPort(self, element: ET.Element, port: CommConnectorPort):
|
|
2677
|
-
self.
|
|
3015
|
+
self.writeIdentifiable(element, port)
|
|
2678
3016
|
self.setChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION", port.getCommunicationDirection())
|
|
2679
3017
|
|
|
2680
3018
|
def writeFramePort(self, element: ET.Element, port: FramePort):
|
|
@@ -2684,10 +3022,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2684
3022
|
def writeIPduPort(self, element: ET.Element, port: IPduPort):
|
|
2685
3023
|
child_element = ET.SubElement(element, "I-PDU-PORT")
|
|
2686
3024
|
self.writeCommConnectorPort(child_element, port)
|
|
3025
|
+
self.setChildElementOptionalPositiveInteger(child_element, "KEY-ID", port.getKeyId())
|
|
3026
|
+
self.setChildElementOptionalBooleanValue(child_element, "RX-SECURITY-VERIFICATION", port.getRxSecurityVerification())
|
|
3027
|
+
self.setChildElementOptionalBooleanValue(child_element, "USE-AUTH-DATA-FRESHNESS", port.getUseAuthDataFreshness())
|
|
2687
3028
|
|
|
2688
3029
|
def writeISignalPort(self, element: ET.Element, port: ISignalPort):
|
|
2689
3030
|
child_element = ET.SubElement(element, "I-SIGNAL-PORT")
|
|
2690
3031
|
self.writeCommConnectorPort(child_element, port)
|
|
3032
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT", port.getTimeout())
|
|
2691
3033
|
|
|
2692
3034
|
def writeCommunicationConnectorEcuCommPortInstances(self, element: ET.Element, connector: CommunicationConnector):
|
|
2693
3035
|
self.logger.debug("write EcuCommPortInstances of CommunicationConnector %s" % connector.getShortName())
|
|
@@ -2702,34 +3044,176 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2702
3044
|
elif isinstance(port, ISignalPort):
|
|
2703
3045
|
self.writeISignalPort(instances_tag, port)
|
|
2704
3046
|
else:
|
|
2705
|
-
self._raiseError("Unsupported CommConnectorPort <%s>" % type(port))
|
|
3047
|
+
self._raiseError("Unsupported CommConnectorPort <%s>" % type(port))
|
|
2706
3048
|
|
|
2707
|
-
def
|
|
3049
|
+
def writeCommunicationController(self, element: ET.Element, controller: CommunicationController):
|
|
3050
|
+
self.setChildElementOptionalBooleanValue(element, "WAKE-UP-BY-CONTROLLER-SUPPORTED", controller.getWakeUpByControllerSupported())
|
|
3051
|
+
|
|
3052
|
+
def setCanControllerFdConfiguration(self, element: ET.Element, key: str, configuration: CanControllerFdConfiguration):
|
|
3053
|
+
if configuration is not None:
|
|
3054
|
+
child_element = ET.SubElement(element, key)
|
|
3055
|
+
#TODO: need to implemented
|
|
3056
|
+
|
|
3057
|
+
def setCanControllerFdConfigurationRequirements(self, element: ET.Element, key: str, requirements: CanControllerFdConfigurationRequirements):
|
|
3058
|
+
if requirements is not None:
|
|
3059
|
+
child_element = ET.SubElement(element, key)
|
|
3060
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMaxNumberOfTimeQuantaPerBit())
|
|
3061
|
+
self.setChildElementOptionalFloatValue(child_element, "MAX-SAMPLE-POINT", requirements.getMaxSamplePoint())
|
|
3062
|
+
self.setChildElementOptionalFloatValue(child_element, "MAX-SYNC-JUMP-WIDTH", requirements.getMaxSyncJumpWidth())
|
|
3063
|
+
self.setChildElementOptionalTimeValue(child_element, "MAX-TRCV-DELAY-COMPENSATION-OFFSET", requirements.getMaxTrcvDelayCompensationOffset())
|
|
3064
|
+
self.setChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMinNumberOfTimeQuantaPerBit())
|
|
3065
|
+
self.setChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT", requirements.getMinSamplePoint())
|
|
3066
|
+
self.setChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH", requirements.getMinSyncJumpWidth())
|
|
3067
|
+
self.setChildElementOptionalTimeValue(child_element, "MIN-TRCV-DELAY-COMPENSATION-OFFSET", requirements.getMinTrcvDelayCompensationOffset())
|
|
3068
|
+
self.setChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH", requirements.getTxBitRateSwitch())
|
|
3069
|
+
|
|
3070
|
+
def writeAbstractCanCommunicationControllerAttributes(self, element: ET.Element, attributes: AbstractCanCommunicationControllerAttributes):
|
|
3071
|
+
self.setCanControllerFdConfiguration(element, "CAN-CONTROLLER-FD-CONFIGURATION", attributes.getCanControllerFdAttributes())
|
|
3072
|
+
self.setCanControllerFdConfigurationRequirements(element, "CAN-CONTROLLER-FD-REQUIREMENTS", attributes.getCanControllerFdRequirements())
|
|
3073
|
+
|
|
3074
|
+
def writeCanControllerConfigurationRequirements(self, element: ET.Element, requirements: CanControllerConfigurationRequirements):
|
|
3075
|
+
if requirements is not None:
|
|
3076
|
+
child_element = ET.SubElement(element, "CAN-CONTROLLER-CONFIGURATION-REQUIREMENTS")
|
|
3077
|
+
self.writeAbstractCanCommunicationControllerAttributes(child_element, requirements)
|
|
3078
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMaxNumberOfTimeQuantaPerBit())
|
|
3079
|
+
self.setChildElementOptionalFloatValue(child_element, "MAX-SAMPLE-POINT", requirements.getMaxSamplePoint())
|
|
3080
|
+
self.setChildElementOptionalFloatValue(child_element, "MAX-SYNC-JUMP-WIDTH", requirements.getMaxSyncJumpWidth())
|
|
3081
|
+
self.setChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMinNumberOfTimeQuantaPerBit())
|
|
3082
|
+
self.setChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT", requirements.getMinSamplePoint())
|
|
3083
|
+
self.setChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH", requirements.getMinSyncJumpWidth())
|
|
3084
|
+
|
|
3085
|
+
def writeAbstractCanCommunicationControllerCanControllerAttributes(self, element: ET.SubElement, controller: AbstractCanCommunicationController):
|
|
3086
|
+
attributes = controller.getCanControllerAttributes()
|
|
3087
|
+
if attributes is not None:
|
|
3088
|
+
child_element = ET.SubElement(element, "CAN-CONTROLLER-ATTRIBUTES")
|
|
3089
|
+
if isinstance(attributes, CanControllerConfigurationRequirements):
|
|
3090
|
+
self.writeCanControllerConfigurationRequirements(child_element, attributes)
|
|
3091
|
+
else:
|
|
3092
|
+
self.notImplemented("Unsupported CanControllerAttributes <%s>" % type(attributes))
|
|
3093
|
+
|
|
3094
|
+
def writeAbstractCanCommunicationController(self, element: ET.Element, controller: AbstractCanCommunicationController):
|
|
3095
|
+
self.writeCommunicationController(element, controller)
|
|
3096
|
+
self.writeAbstractCanCommunicationControllerCanControllerAttributes(element, controller)
|
|
3097
|
+
|
|
3098
|
+
def writeCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
|
|
3099
|
+
child_element = ET.SubElement(element, "CAN-COMMUNICATION-CONTROLLER")
|
|
2708
3100
|
self.logger.debug("Write CanCommunicationController %s" % controller.getShortName())
|
|
2709
|
-
self.
|
|
3101
|
+
self.writeIdentifiable(child_element, controller)
|
|
3102
|
+
variants_tag = ET.SubElement(child_element, "CAN-COMMUNICATION-CONTROLLER-VARIANTS")
|
|
3103
|
+
cond_tag = ET.SubElement(variants_tag, "CAN-COMMUNICATION-CONTROLLER-CONDITIONAL")
|
|
3104
|
+
self.writeAbstractCanCommunicationController(cond_tag, controller)
|
|
3105
|
+
|
|
3106
|
+
def writeCouplingPortSchedulerCouplingPortStructuralElement(self, element: ET.Element, item: CouplingPortStructuralElement):
|
|
3107
|
+
self.writeIdentifiable(element, item)
|
|
3108
|
+
|
|
3109
|
+
def writeCouplingPortFifo(self, element: ET.Element, fifo: CouplingPortFifo):
|
|
3110
|
+
if fifo is not None:
|
|
3111
|
+
child_element = ET.SubElement(element, "COUPLING-PORT-FIFO")
|
|
3112
|
+
self.writeCouplingPortSchedulerCouplingPortStructuralElement(child_element, fifo)
|
|
3113
|
+
|
|
3114
|
+
def writeCouplingPortScheduler(self, element: ET.Element, scheduler: CouplingPortScheduler):
|
|
3115
|
+
if scheduler is not None:
|
|
3116
|
+
child_element = ET.SubElement(element, "COUPLING-PORT-SCHEDULER")
|
|
3117
|
+
self.writeCouplingPortSchedulerCouplingPortStructuralElement(child_element, scheduler)
|
|
3118
|
+
self.setChildElementOptionalLiteral(child_element, "PORT-SCHEDULER", scheduler.getPortScheduler())
|
|
3119
|
+
|
|
3120
|
+
def writeCouplingPortDetailsCouplingPortStructuralElements(self, element: ET.Element, details: CouplingPortDetails):
|
|
3121
|
+
items = details.getCouplingPortStructuralElements()
|
|
3122
|
+
if len(items) > 0:
|
|
3123
|
+
child_element = ET.SubElement(element, "COUPLING-PORT-STRUCTURAL-ELEMENTS")
|
|
3124
|
+
for item in items:
|
|
3125
|
+
if isinstance(item, CouplingPortFifo):
|
|
3126
|
+
self.writeCouplingPortFifo(child_element, item)
|
|
3127
|
+
elif isinstance(item, CouplingPortScheduler):
|
|
3128
|
+
self.writeCouplingPortScheduler(child_element, item)
|
|
3129
|
+
else:
|
|
3130
|
+
self.notImplemented("Unsupported CouplingPortStructuralElement <%s>" % type(item))
|
|
3131
|
+
|
|
3132
|
+
def writeEthernetPriorityRegeneration(self, element: ET.Element, regeneration: EthernetPriorityRegeneration):
|
|
3133
|
+
if regeneration is not None:
|
|
3134
|
+
child_element = ET.SubElement(element, "ETHERNET-PRIORITY-REGENERATION")
|
|
3135
|
+
self.writeReferrable(child_element, regeneration)
|
|
3136
|
+
self.setChildElementOptionalPositiveInteger(child_element, "INGRESS-PRIORITY", regeneration.getIngressPriority())
|
|
3137
|
+
self.setChildElementOptionalPositiveInteger(child_element, "REGENERATED-PRIORITY", regeneration.getRegeneratedPriority())
|
|
3138
|
+
|
|
3139
|
+
def writeCouplingPortDetailsEthernetPriorityRegenerations(self, element: ET.Element, details: CouplingPortDetails):
|
|
3140
|
+
regenerations = details.getEthernetPriorityRegenerations()
|
|
3141
|
+
if len(regenerations) > 0:
|
|
3142
|
+
child_element = ET.SubElement(element, "ETHERNET-PRIORITY-REGENERATIONS")
|
|
3143
|
+
for regeneration in regenerations:
|
|
3144
|
+
if isinstance(regeneration, EthernetPriorityRegeneration):
|
|
3145
|
+
self.writeEthernetPriorityRegeneration(child_element, regeneration)
|
|
3146
|
+
else:
|
|
3147
|
+
self.notImplemented("Unsupported EthernetPriorityRegeneration <%s>" % type(regeneration))
|
|
3148
|
+
|
|
3149
|
+
def setCouplingPortDetails(self, element: ET.Element, key: str, details: CouplingPortDetails):
|
|
3150
|
+
if details is not None:
|
|
3151
|
+
child_element = ET.SubElement(element, key)
|
|
3152
|
+
self.writeCouplingPortDetailsCouplingPortStructuralElements(child_element, details)
|
|
3153
|
+
self.writeCouplingPortDetailsEthernetPriorityRegenerations(child_element, details)
|
|
3154
|
+
self.setChildElementOptionalRefType(child_element, "LAST-EGRESS-SCHEDULER-REF", details.getLastEgressSchedulerRef())
|
|
3155
|
+
|
|
3156
|
+
def writeVlanMembership(self, element: ET.Element, membership: VlanMembership):
|
|
3157
|
+
if membership is not None:
|
|
3158
|
+
child_element = ET.SubElement(element, "VLAN-MEMBERSHIP")
|
|
3159
|
+
self.setChildElementOptionalLiteral(child_element, "SEND-ACTIVITY", membership.getSendActivity())
|
|
3160
|
+
self.setChildElementOptionalRefType(child_element, "VLAN-REF", membership.getVlanRef())
|
|
3161
|
+
|
|
3162
|
+
def writeCouplingPortVlanMemberships(self, element: ET.Element, port: CouplingPort):
|
|
3163
|
+
memberships = port.getVlanMemberships()
|
|
3164
|
+
if len(memberships) > 0:
|
|
3165
|
+
child_element = ET.SubElement(element, "VLAN-MEMBERSHIPS")
|
|
3166
|
+
for membership in memberships:
|
|
3167
|
+
if isinstance(membership, VlanMembership):
|
|
3168
|
+
self.writeVlanMembership(child_element, membership)
|
|
3169
|
+
else:
|
|
3170
|
+
self.notImplemented("Unsupported VlanMembership <%s>" % type(membership))
|
|
3171
|
+
|
|
3172
|
+
def writeCouplingPort(self, element: ET.Element, port: CouplingPort):
|
|
3173
|
+
child_element = ET.SubElement(element, "COUPLING-PORT")
|
|
3174
|
+
self.writeIdentifiable(child_element, port)
|
|
3175
|
+
self.setCouplingPortDetails(child_element, "COUPLING-PORT-DETAILS", port.getCouplingPortDetails())
|
|
3176
|
+
self.setChildElementOptionalLiteral(child_element, "MAC-LAYER-TYPE", port.getMacAddressVlanAssignments())
|
|
3177
|
+
self.writeCouplingPortVlanMemberships(child_element, port)
|
|
2710
3178
|
|
|
2711
|
-
def
|
|
3179
|
+
def writeEthernetCommunicationControllerCouplingPorts(self, element: ET.Element, controller: EthernetCommunicationController):
|
|
3180
|
+
ports = controller.getCouplingPorts()
|
|
3181
|
+
if len(ports) > 0:
|
|
3182
|
+
child_element = ET.SubElement(element, "COUPLING-PORTS")
|
|
3183
|
+
for port in ports:
|
|
3184
|
+
if isinstance(port, CouplingPort):
|
|
3185
|
+
self.writeCouplingPort(child_element, port)
|
|
3186
|
+
else:
|
|
3187
|
+
self.notImplemented("Unsupported Coupling Port <%s>" % type(port))
|
|
3188
|
+
|
|
3189
|
+
def writeEthernetCommunicationController(self, element: ET.Element, controller: EthernetCommunicationController):
|
|
3190
|
+
child_element = ET.SubElement(element, "ETHERNET-COMMUNICATION-CONTROLLER")
|
|
2712
3191
|
self.logger.debug("Write EthernetCommunicationController %s" % controller.getShortName())
|
|
2713
|
-
self.
|
|
3192
|
+
self.writeIdentifiable(child_element, controller)
|
|
3193
|
+
variants_tag = ET.SubElement(child_element, "ETHERNET-COMMUNICATION-CONTROLLER-VARIANTS")
|
|
3194
|
+
cond_tag = ET.SubElement(variants_tag, "ETHERNET-COMMUNICATION-CONTROLLER-CONDITIONAL")
|
|
3195
|
+
self.writeCommunicationController(cond_tag, controller)
|
|
3196
|
+
self.writeEthernetCommunicationControllerCouplingPorts(cond_tag, controller)
|
|
2714
3197
|
|
|
2715
3198
|
def writeEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
|
|
2716
3199
|
controllers = instance.getCommControllers()
|
|
2717
3200
|
if len(controllers) > 0:
|
|
2718
|
-
|
|
3201
|
+
child_element = ET.SubElement(element, "COMM-CONTROLLERS")
|
|
2719
3202
|
for controller in controllers:
|
|
2720
3203
|
if isinstance(controller, CanCommunicationController):
|
|
2721
|
-
|
|
2722
|
-
self.setCanCommunicationController(child_element, controller)
|
|
3204
|
+
self.writeCanCommunicationController(child_element, controller)
|
|
2723
3205
|
elif isinstance(controller, EthernetCommunicationController):
|
|
2724
|
-
|
|
2725
|
-
|
|
3206
|
+
self.writeEthernetCommunicationController(child_element, controller)
|
|
3207
|
+
elif isinstance(controller, LinMaster):
|
|
3208
|
+
self.writeLinMaster(child_element, controller)
|
|
2726
3209
|
else:
|
|
2727
3210
|
self.notImplemented("Unsupported Communication Controller <%s>" % type(controller))
|
|
2728
3211
|
|
|
2729
3212
|
def writeCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
|
|
2730
|
-
self.
|
|
3213
|
+
self.writeIdentifiable(element, connector)
|
|
2731
3214
|
self.setChildElementOptionalRefType(element, "COMM-CONTROLLER-REF", connector.getCommControllerRef())
|
|
2732
3215
|
self.writeCommunicationConnectorEcuCommPortInstances(element, connector)
|
|
3216
|
+
self.setChildElementOptionalLiteral(element, "PNC-GATEWAY-TYPE", connector.getPncGatewayType())
|
|
2733
3217
|
|
|
2734
3218
|
def writeCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
|
|
2735
3219
|
self.logger.debug("Write CanCommunicationConnector %s" % connector.getShortName())
|
|
@@ -2738,6 +3222,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2738
3222
|
def writeEthernetCommunicationConnector(self, element: ET.Element, connector: EthernetCommunicationConnector):
|
|
2739
3223
|
self.logger.debug("Write EthernetCommunicationConnector %s" % connector.getShortName())
|
|
2740
3224
|
self.writeCommunicationConnector(element, connector)
|
|
3225
|
+
self.setChildElementOptionalPositiveInteger(element, "MAXIMUM-TRANSMISSION-UNIT", connector.getMaximumTransmissionUnit())
|
|
3226
|
+
|
|
3227
|
+
def writeLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
|
|
3228
|
+
self.logger.debug("Write LinCommunicationConnector %s" % connector.getShortName())
|
|
3229
|
+
self.writeCommunicationConnector(element, connector)
|
|
2741
3230
|
|
|
2742
3231
|
def writeEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
|
|
2743
3232
|
connectors = instance.getConnectors()
|
|
@@ -2750,13 +3239,24 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2750
3239
|
elif isinstance(connector, EthernetCommunicationConnector):
|
|
2751
3240
|
child_element = ET.SubElement(connectors_tag, "ETHERNET-COMMUNICATION-CONNECTOR")
|
|
2752
3241
|
self.writeEthernetCommunicationConnector(child_element, connector)
|
|
3242
|
+
elif isinstance(connector, LinCommunicationConnector):
|
|
3243
|
+
child_element = ET.SubElement(connectors_tag, "LIN-COMMUNICATION-CONNECTOR")
|
|
3244
|
+
self.writeLinCommunicationConnector(child_element, connector)
|
|
2753
3245
|
else:
|
|
2754
3246
|
self._raiseError("Unsupported Communication connector <%s>" % type(connector))
|
|
2755
3247
|
|
|
3248
|
+
def writeEcuInstanceAssociatedComIPduGroupRefs(self, element: ET.Element, instance: EcuInstance):
|
|
3249
|
+
refs = instance.getAssociatedComIPduGroupRefs()
|
|
3250
|
+
if len(refs) > 0:
|
|
3251
|
+
child_element = ET.SubElement(element, "ASSOCIATED-COM-I-PDU-GROUP-REFS")
|
|
3252
|
+
for ref in refs:
|
|
3253
|
+
self.setChildElementOptionalRefType(child_element, "ASSOCIATED-COM-I-PDU-GROUP-REF", ref)
|
|
3254
|
+
|
|
2756
3255
|
def writeEcuInstance(self, element: ET.Element, instance: EcuInstance):
|
|
2757
3256
|
self.logger.debug("EcuInstance %s" % instance.getShortName())
|
|
2758
3257
|
child_element = ET.SubElement(element, "ECU-INSTANCE")
|
|
2759
|
-
self.
|
|
3258
|
+
self.writeIdentifiable(child_element, instance)
|
|
3259
|
+
self.writeEcuInstanceAssociatedComIPduGroupRefs(child_element, instance)
|
|
2760
3260
|
self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-GW-TIME-BASE", instance.getComConfigurationGwTimeBase())
|
|
2761
3261
|
self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-RX-TIME-BASE", instance.getComConfigurationRxTimeBase())
|
|
2762
3262
|
self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-TX-TIME-BASE", instance.getComConfigurationTxTimeBase())
|
|
@@ -2769,7 +3269,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2769
3269
|
def writeSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
|
|
2770
3270
|
self.logger.debug("Write SystemSignalGroup %s" % group.getShortName())
|
|
2771
3271
|
child_element = ET.SubElement(element, "SYSTEM-SIGNAL-GROUP")
|
|
2772
|
-
self.
|
|
3272
|
+
self.writeIdentifiable(child_element, group)
|
|
2773
3273
|
signal_refs = group.getSystemSignalRefs()
|
|
2774
3274
|
if len(signal_refs) > 0:
|
|
2775
3275
|
signal_refs_tag = ET.SubElement(child_element, "SYSTEM-SIGNAL-REFS")
|
|
@@ -2801,7 +3301,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2801
3301
|
|
|
2802
3302
|
def setSwcToEcuMapping(self, element: ET.Element, mapping: SwcToEcuMapping):
|
|
2803
3303
|
child_element = ET.SubElement(element, "SWC-TO-ECU-MAPPING")
|
|
2804
|
-
self.
|
|
3304
|
+
self.writeIdentifiable(child_element, mapping)
|
|
2805
3305
|
irefs = mapping.getComponentIRefs()
|
|
2806
3306
|
if len(irefs) > 0:
|
|
2807
3307
|
irefs_tag = ET.SubElement(child_element, "COMPONENT-IREFS")
|
|
@@ -2822,7 +3322,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2822
3322
|
def writeSystemMapping(self, element: ET.Element, mapping: SystemMapping):
|
|
2823
3323
|
self.logger.debug("Write SystemMapping %s" % mapping.getShortName())
|
|
2824
3324
|
child_element = ET.SubElement(element, "SYSTEM-MAPPING")
|
|
2825
|
-
self.
|
|
3325
|
+
self.writeIdentifiable(child_element, mapping)
|
|
2826
3326
|
self.writeSystemMappingDataMappings(child_element, mapping)
|
|
2827
3327
|
self.writeSystemMappingSwMappings(child_element, mapping)
|
|
2828
3328
|
|
|
@@ -2842,23 +3342,24 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2842
3342
|
self.logger.debug("Write RootSwCompositionPrototype <%s>" % prototype.getShortName())
|
|
2843
3343
|
child_element = ET.SubElement(element, "ROOT-SOFTWARE-COMPOSITIONS")
|
|
2844
3344
|
child_element = ET.SubElement(child_element, "ROOT-SW-COMPOSITION-PROTOTYPE")
|
|
2845
|
-
self.
|
|
3345
|
+
self.writeIdentifiable(child_element, prototype)
|
|
2846
3346
|
self.setChildElementOptionalRefType(child_element, "FLAT-MAP-REF", prototype.getFlatMapRef())
|
|
2847
3347
|
self.setChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF", prototype.getSoftwareCompositionTRef())
|
|
3348
|
+
|
|
3349
|
+
def writeSystemFibexElementRefs(self, element: ET.Element, system: System):
|
|
3350
|
+
refs = system.getFibexElementRefs()
|
|
3351
|
+
if len(refs) > 0:
|
|
3352
|
+
fibex_elements_tag = ET.SubElement(element, "FIBEX-ELEMENTS")
|
|
3353
|
+
for ref in refs:
|
|
3354
|
+
child_element = ET.SubElement(fibex_elements_tag, "FIBEX-ELEMENT-REF-CONDITIONAL")
|
|
3355
|
+
self.setChildElementOptionalRefType(child_element, "FIBEX-ELEMENT-REF", ref)
|
|
2848
3356
|
|
|
2849
3357
|
def writeSystem(self, element: ET.Element, system: System):
|
|
2850
3358
|
self.logger.debug("Write System %s" % system.getShortName())
|
|
2851
3359
|
child_element = ET.SubElement(element, "SYSTEM")
|
|
2852
|
-
self.
|
|
2853
|
-
|
|
3360
|
+
self.writeARElement(child_element, system)
|
|
2854
3361
|
self.setChildElementOptionalLiteral(child_element, "ECU-EXTRACT-VERSION", system.getEcuExtractVersion())
|
|
2855
|
-
|
|
2856
|
-
if len(refs) > 0:
|
|
2857
|
-
fibex_elements_tag = ET.SubElement(child_element, "FIBEX-ELEMENTS")
|
|
2858
|
-
for ref in refs:
|
|
2859
|
-
fibex_element_ref_conditional_tag = ET.SubElement(fibex_elements_tag, "FIBEX-ELEMENT-REF-CONDITIONAL")
|
|
2860
|
-
self.setChildElementOptionalRefType(fibex_element_ref_conditional_tag, "FIBEX-ELEMENT-REF", ref)
|
|
2861
|
-
|
|
3362
|
+
self.writeSystemFibexElementRefs(child_element, system)
|
|
2862
3363
|
self.writeSystemMappings(child_element, system)
|
|
2863
3364
|
self.writeRootSwCompositionPrototype(child_element, system)
|
|
2864
3365
|
self.setChildElementOptionalRevisionLabelString(child_element, "SYSTEM-VERSION", system.getSystemVersion())
|
|
@@ -2866,7 +3367,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2866
3367
|
def writePhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
|
|
2867
3368
|
self.logger.debug("Set PhysicalDimension %s" % dimension.getShortName())
|
|
2868
3369
|
child_element = ET.SubElement(element, "PHYSICAL-DIMENSION")
|
|
2869
|
-
self.
|
|
3370
|
+
self.writeARElement(child_element, dimension)
|
|
2870
3371
|
self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
|
|
2871
3372
|
self.setChildElementOptionalNumericalValue(child_element, "LENGTH-EXP", dimension.getLengthExp())
|
|
2872
3373
|
self.setChildElementOptionalNumericalValue(child_element, "TIME-EXP", dimension.getTimeExp())
|
|
@@ -2874,7 +3375,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2874
3375
|
def setFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
|
|
2875
3376
|
self.logger.debug("Set FlatInstanceDescriptor %s" % desc.getShortName())
|
|
2876
3377
|
child_element = ET.SubElement(element, "FLAT-INSTANCE-DESCRIPTOR")
|
|
2877
|
-
self.
|
|
3378
|
+
self.writeIdentifiable(child_element, desc)
|
|
2878
3379
|
self.setAnyInstanceRef(child_element, "UPSTREAM-REFERENCE-IREF", desc.getUpstreamReferenceIRef())
|
|
2879
3380
|
self.setAnyInstanceRef(child_element, "ECU-EXTRACT-REFERENCE-IREF", desc.getEcuExtractReferenceIRef())
|
|
2880
3381
|
|
|
@@ -2891,7 +3392,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2891
3392
|
def writeFlatMap(self, element: ET.Element, map: FlatMap):
|
|
2892
3393
|
self.logger.debug("Set FlatMap %s" % map.getShortName())
|
|
2893
3394
|
child_element = ET.SubElement(element, "FLAT-MAP")
|
|
2894
|
-
self.
|
|
3395
|
+
self.writeARElement(child_element, map)
|
|
2895
3396
|
self.writeFlatMapInstances(child_element, map)
|
|
2896
3397
|
|
|
2897
3398
|
def setDataPrototypeMapping(self, element: ET.Element, mapping: DataPrototypeMapping):
|
|
@@ -2908,7 +3409,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2908
3409
|
def setVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
|
|
2909
3410
|
self.logger.debug("set VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
|
|
2910
3411
|
child_element = ET.SubElement(element, "VARIABLE-AND-PARAMETER-INTERFACE-MAPPING")
|
|
2911
|
-
self.
|
|
3412
|
+
self.writeIdentifiable(child_element, mapping)
|
|
2912
3413
|
self.setDataPrototypeMappings(child_element, "DATA-MAPPINGS", mapping.getDataMappings())
|
|
2913
3414
|
|
|
2914
3415
|
def writePortInterfaceMappings(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
|
|
@@ -2924,7 +3425,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2924
3425
|
def writePortInterfaceMappingSet(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
|
|
2925
3426
|
self.logger.debug("Set PortInterfaceMappingSet %s" % mapping_set.getShortName())
|
|
2926
3427
|
child_element = ET.SubElement(element, "PORT-INTERFACE-MAPPING-SET")
|
|
2927
|
-
self.
|
|
3428
|
+
self.writeARElement(child_element, mapping_set)
|
|
2928
3429
|
self.writePortInterfaceMappings(child_element, mapping_set)
|
|
2929
3430
|
|
|
2930
3431
|
def setISignalMappings(self, element: ET.Element, mappings: List[ISignalMapping]):
|
|
@@ -2932,20 +3433,34 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2932
3433
|
mappings_tag = ET.SubElement(element, "SIGNAL-MAPPINGS")
|
|
2933
3434
|
for mapping in mappings:
|
|
2934
3435
|
child_element = ET.SubElement(mappings_tag, "I-SIGNAL-MAPPING")
|
|
2935
|
-
self.setChildElementOptionalRefType(child_element, "SOURCE-SIGNAL-REF", mapping.
|
|
2936
|
-
self.setChildElementOptionalRefType(child_element, "TARGET-SIGNAL-REF", mapping.
|
|
3436
|
+
self.setChildElementOptionalRefType(child_element, "SOURCE-SIGNAL-REF", mapping.getSourceSignalRef())
|
|
3437
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-SIGNAL-REF", mapping.getTargetSignalRef())
|
|
3438
|
+
|
|
3439
|
+
def setTargetIPduRef(self, element: ET.Element, key: str, i_pdu_ref: TargetIPduRef):
|
|
3440
|
+
if i_pdu_ref is not None:
|
|
3441
|
+
child_element = ET.SubElement(element, key)
|
|
3442
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-I-PDU-REF", i_pdu_ref.getTargetIPdu())
|
|
3443
|
+
|
|
3444
|
+
def setIPduMappings(self, element: ET.Element, mappings: List[IPduMapping]):
|
|
3445
|
+
if len(mappings) > 0:
|
|
3446
|
+
mappings_tag = ET.SubElement(element, "I-PDU-MAPPINGS")
|
|
3447
|
+
for mapping in mappings:
|
|
3448
|
+
child_element = ET.SubElement(mappings_tag, "I-PDU-MAPPING")
|
|
3449
|
+
self.setChildElementOptionalRefType(child_element, "SOURCE-I-PDU-REF", mapping.getSourceIpduRef())
|
|
3450
|
+
self.setTargetIPduRef(child_element, "TARGET-I-PDU", mapping.getTargetIPdu())
|
|
2937
3451
|
|
|
2938
3452
|
def writeGateway(self, element: ET.Element, gateway: Gateway):
|
|
2939
3453
|
self.logger.debug("Gateway %s" % gateway.getShortName())
|
|
2940
3454
|
child_element = ET.SubElement(element, "GATEWAY")
|
|
2941
|
-
self.
|
|
3455
|
+
self.writeIdentifiable(child_element, gateway)
|
|
2942
3456
|
self.setChildElementOptionalRefType(child_element, "ECU-REF", gateway.ecuRef)
|
|
3457
|
+
self.setIPduMappings(child_element, gateway.getIPduMappings())
|
|
2943
3458
|
self.setISignalMappings(child_element, gateway.getSignalMappings())
|
|
2944
3459
|
|
|
2945
3460
|
def writeISignal(self, element: ET.Element, signal: ISignal):
|
|
2946
3461
|
self.logger.debug("ISignal %s" % signal.getShortName())
|
|
2947
3462
|
child_element = ET.SubElement(element, "I-SIGNAL")
|
|
2948
|
-
self.
|
|
3463
|
+
self.writeIdentifiable(child_element, signal)
|
|
2949
3464
|
self.setChildElementOptionalLiteral(child_element, "DATA-TYPE-POLICY", signal.getDataTypePolicy())
|
|
2950
3465
|
self.setChildElementOptionalLiteral(child_element, "I-SIGNAL-TYPE", signal.getISignalType())
|
|
2951
3466
|
self.setValueSpecification(child_element, "INIT-VALUE", signal.getInitValue())
|
|
@@ -2964,7 +3479,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2964
3479
|
def writeEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
|
|
2965
3480
|
self.logger.debug("EcucValueCollection %s" % collection.getShortName())
|
|
2966
3481
|
child_element = ET.SubElement(element, "ECUC-VALUE-COLLECTION")
|
|
2967
|
-
self.
|
|
3482
|
+
self.writeIdentifiable(child_element, collection)
|
|
2968
3483
|
self.setChildElementOptionalRefType(child_element, "ECU-EXTRACT-REF", collection.getEcuExtractRef())
|
|
2969
3484
|
self.writeEcucValueCollectionEcucValues(child_element, collection)
|
|
2970
3485
|
|
|
@@ -3044,7 +3559,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3044
3559
|
def writeEcucContainValue(self, element: ET.Element, container_value: EcucContainerValue):
|
|
3045
3560
|
self.logger.debug("EcucContainerValue %s" % container_value.getShortName())
|
|
3046
3561
|
child_element = ET.SubElement(element, "ECUC-CONTAINER-VALUE")
|
|
3047
|
-
self.
|
|
3562
|
+
self.writeIdentifiable(child_element, container_value)
|
|
3048
3563
|
self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", container_value.getDefinitionRef())
|
|
3049
3564
|
self.writeEcucContainerValueParameterValues(child_element, container_value)
|
|
3050
3565
|
self.writeEcucContainerValueReferenceValues(child_element, container_value)
|
|
@@ -3063,7 +3578,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3063
3578
|
def writeEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
|
|
3064
3579
|
self.logger.debug("EcucModuleConfigurationValues %s" % values.getShortName())
|
|
3065
3580
|
child_element = ET.SubElement(element, "ECUC-MODULE-CONFIGURATION-VALUES")
|
|
3066
|
-
self.
|
|
3581
|
+
self.writeIdentifiable(child_element, values)
|
|
3067
3582
|
self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", values.getDefinitionRef())
|
|
3068
3583
|
self.setChildElementOptionalLiteral(child_element, "IMPLEMENTATION-CONFIG-VARIANT", values.getImplementationConfigVariant())
|
|
3069
3584
|
self.setChildElementOptionalRefType(child_element, "MODULE-DESCRIPTION-REF", values.getModuleDescriptionRef())
|
|
@@ -3072,7 +3587,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3072
3587
|
def writeISignalGroup(self, element: ET.Element, group: ISignalGroup):
|
|
3073
3588
|
self.logger.debug("ISignalGroup %s" % group.getShortName())
|
|
3074
3589
|
child_element = ET.SubElement(element, "I-SIGNAL-GROUP")
|
|
3075
|
-
self.
|
|
3590
|
+
self.writeIdentifiable(child_element, group)
|
|
3076
3591
|
signal_refs = group.getISignalRefs()
|
|
3077
3592
|
if len(signal_refs) > 0:
|
|
3078
3593
|
signal_refs_tag = ET.SubElement(child_element, "I-SIGNAL-REFS")
|
|
@@ -3083,7 +3598,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3083
3598
|
def writeISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
|
|
3084
3599
|
self.logger.debug("Set ISignalIPduGroup %s" % group.getShortName())
|
|
3085
3600
|
child_element = ET.SubElement(element, "I-SIGNAL-I-PDU-GROUP")
|
|
3086
|
-
self.
|
|
3601
|
+
self.writeIdentifiable(child_element, group)
|
|
3087
3602
|
self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", group.getCommunicationDirection())
|
|
3088
3603
|
self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-MODE", group.getCommunicationMode())
|
|
3089
3604
|
group_refs = group.getContainedISignalIPduGroupRefs()
|
|
@@ -3101,19 +3616,103 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3101
3616
|
def writeSystemSignal(self, element: ET.Element, signal: SystemSignal):
|
|
3102
3617
|
self.logger.debug("SystemSignal %s" % signal.getShortName())
|
|
3103
3618
|
child_element = ET.SubElement(element, "SYSTEM-SIGNAL")
|
|
3104
|
-
self.
|
|
3619
|
+
self.writeIdentifiable(child_element, signal)
|
|
3105
3620
|
self.setChildElementOptionalBooleanValue(child_element, "DYNAMIC-LENGTH", signal.getDynamicLength())
|
|
3106
3621
|
self.setSwDataDefProps(child_element, "PHYSICAL-PROPS", signal.getPhysicalProps())
|
|
3107
3622
|
|
|
3108
|
-
def writeGenericEthernetFrame(self, element: ET.Element,
|
|
3109
|
-
self.logger.debug("Write GenericEthernetFrame %s" %
|
|
3623
|
+
def writeGenericEthernetFrame(self, element: ET.Element, frame: GenericEthernetFrame):
|
|
3624
|
+
self.logger.debug("Write GenericEthernetFrame %s" % frame.getShortName())
|
|
3110
3625
|
child_element = ET.SubElement(element, "ETHERNET-FRAME")
|
|
3111
|
-
self.writeFrame(child_element,
|
|
3626
|
+
self.writeFrame(child_element, frame)
|
|
3112
3627
|
|
|
3113
3628
|
def writeLifeCycleInfoSet(self, element: ET.Element, set: LifeCycleInfoSet):
|
|
3114
3629
|
self.logger.debug("Write LifeCycleInfoSet %s" % set.getShortName())
|
|
3115
3630
|
child_element = ET.SubElement(element, "LIFE-CYCLE-INFO-SET")
|
|
3116
|
-
self.
|
|
3631
|
+
self.writeIdentifiable(child_element, set)
|
|
3632
|
+
|
|
3633
|
+
def writeDiagnosticConnectionFunctionalRequestRefs(self, element: ET.Element, connection: DiagnosticConnection):
|
|
3634
|
+
refs = connection.getFunctionalRequestRefs()
|
|
3635
|
+
if len(refs) > 0:
|
|
3636
|
+
refs_tag = ET.SubElement(element, "FUNCTIONAL-REQUEST-REFS")
|
|
3637
|
+
for ref in refs:
|
|
3638
|
+
self.setChildElementOptionalRefType(refs_tag, "FUNCTIONAL-REQUEST-REF", ref)
|
|
3639
|
+
|
|
3640
|
+
def writeDiagnosticConnection(self, element: ET.Element, connection: DiagnosticConnection):
|
|
3641
|
+
self.logger.debug("Write DiagnosticConnection %s" % connection.getShortName())
|
|
3642
|
+
child_element = ET.SubElement(element, "DIAGNOSTIC-CONNECTION")
|
|
3643
|
+
self.writeIdentifiable(child_element, connection)
|
|
3644
|
+
self.writeDiagnosticConnectionFunctionalRequestRefs(child_element, connection)
|
|
3645
|
+
self.setChildElementOptionalRefType(child_element, "PHYSICAL-REQUEST-REF", connection.getPhysicalRequestRef())
|
|
3646
|
+
self.setChildElementOptionalRefType(child_element, "RESPONSE-REF", connection.getResponseOnEventRef())
|
|
3647
|
+
|
|
3648
|
+
def writeDiagnosticServiceTableDiagnosticConnectionRefs(self, element: ET.Element, table: DiagnosticServiceTable):
|
|
3649
|
+
refs = table.getDiagnosticConnectionRefs()
|
|
3650
|
+
if len(refs) > 0:
|
|
3651
|
+
refs_tag = ET.SubElement(element, "DIAGNOSTIC-CONNECTIONS")
|
|
3652
|
+
for ref in refs:
|
|
3653
|
+
child_element = ET.SubElement(refs_tag, "DIAGNOSTIC-CONNECTION-REF-CONDITIONAL")
|
|
3654
|
+
self.setChildElementOptionalRefType(child_element, "DIAGNOSTIC-CONNECTION-REF", ref)
|
|
3655
|
+
|
|
3656
|
+
def writeDiagnosticServiceTable(self, element: ET.Element, table: DiagnosticServiceTable):
|
|
3657
|
+
self.logger.debug("Write DiagnosticServiceTable %s" % table.getShortName())
|
|
3658
|
+
child_element = ET.SubElement(element, "DIAGNOSTIC-SERVICE-TABLE")
|
|
3659
|
+
self.writeIdentifiable(child_element, table)
|
|
3660
|
+
self.writeDiagnosticServiceTableDiagnosticConnectionRefs(child_element, table)
|
|
3661
|
+
self.setChildElementOptionalRefType(child_element, "ECU-INSTANCE-REF", table.getEcuInstanceRef())
|
|
3662
|
+
|
|
3663
|
+
def writeMultiplexedIPdu(self, element: ET.Element, i_pdu: MultiplexedIPdu):
|
|
3664
|
+
self.logger.debug("Write MultiplexedIPdu %s" % i_pdu.getShortName())
|
|
3665
|
+
child_element = ET.SubElement(element, "MULTIPLEXED-I-PDU")
|
|
3666
|
+
self.writeIdentifiable(child_element, i_pdu)
|
|
3667
|
+
|
|
3668
|
+
def writeUserDefinedIPdu(self, element: ET.Element, i_pdu: UserDefinedIPdu):
|
|
3669
|
+
self.logger.debug("Write UserDefinedIPdu %s" % i_pdu.getShortName())
|
|
3670
|
+
child_element = ET.SubElement(element, "USER-DEFINED-I-PDU")
|
|
3671
|
+
self.writeIdentifiable(child_element, i_pdu)
|
|
3672
|
+
|
|
3673
|
+
def writeUserDefinedPdu(self, element: ET.Element, pdu: UserDefinedPdu):
|
|
3674
|
+
self.logger.debug("Write UserDefinedPdu %s" % pdu.getShortName())
|
|
3675
|
+
child_element = ET.SubElement(element, "USER-DEFINED-PDU")
|
|
3676
|
+
self.writeIdentifiable(child_element, pdu)
|
|
3677
|
+
|
|
3678
|
+
def writeGeneralPurposePdu(self, element: ET.Element, pdu: GeneralPurposePdu):
|
|
3679
|
+
self.logger.debug("Write GeneralPurposePdu %s" % pdu.getShortName())
|
|
3680
|
+
child_element = ET.SubElement(element, "GENERAL-PURPOSE-PDU")
|
|
3681
|
+
self.writeIdentifiable(child_element, pdu)
|
|
3682
|
+
|
|
3683
|
+
def writeGeneralPurposeIPdu(self, element: ET.Element, i_pdu: GeneralPurposeIPdu):
|
|
3684
|
+
self.logger.debug("Write GeneralPurposeIPdu %s" % i_pdu.getShortName())
|
|
3685
|
+
child_element = ET.SubElement(element, "GENERAL-PURPOSE-I-PDU")
|
|
3686
|
+
self.writeIdentifiable(child_element, i_pdu)
|
|
3687
|
+
|
|
3688
|
+
def writeSecureCommunicationPropsSet(self, element: ET.Element, set: SecureCommunicationPropsSet):
|
|
3689
|
+
self.logger.debug("Write SecureCommunicationPropsSet %s" % set.getShortName())
|
|
3690
|
+
child_element = ET.SubElement(element, "SECURE-COMMUNICATION-PROPS-SET")
|
|
3691
|
+
self.writeIdentifiable(child_element, set)
|
|
3692
|
+
|
|
3693
|
+
def writeSoAdRoutingGroup(self, element: ET.Element, group: SoAdRoutingGroup):
|
|
3694
|
+
self.logger.debug("Write SoAdRoutingGroup %s" % group.getShortName())
|
|
3695
|
+
child_element = ET.SubElement(element, "SO-AD-ROUTING-GROUP")
|
|
3696
|
+
self.writeIdentifiable(child_element, group)
|
|
3697
|
+
|
|
3698
|
+
def writeDoIpTpConfig(self, element: ET.Element, config: DoIpTpConfig):
|
|
3699
|
+
self.logger.debug("Write DoIpTpConfig %s" % config.getShortName())
|
|
3700
|
+
child_element = ET.SubElement(element, "DO-IP-TP-CONFIG")
|
|
3701
|
+
self.writeIdentifiable(child_element, config)
|
|
3702
|
+
|
|
3703
|
+
def writeLinCommunicationController(self, element: ET.Element, controller: LinCommunicationController):
|
|
3704
|
+
self.writeCommunicationController(element, controller)
|
|
3705
|
+
self.setChildElementOptionalLiteral(element, "PROTOCOL-VERSION", controller.getProtocolVersion())
|
|
3706
|
+
|
|
3707
|
+
def writeLinMaster(self, element: ET.Element, controller: LinMaster):
|
|
3708
|
+
self.logger.debug("Write LinMaster %s" % controller.getShortName())
|
|
3709
|
+
child_element = ET.SubElement(element, "LIN-MASTER")
|
|
3710
|
+
self.writeIdentifiable(child_element, controller)
|
|
3711
|
+
variants_tag = ET.SubElement(child_element, "LIN-MASTER-VARIANTS")
|
|
3712
|
+
cond_tag = ET.SubElement(variants_tag, "LIN-MASTER-CONDITIONAL")
|
|
3713
|
+
self.writeLinCommunicationController(cond_tag, controller)
|
|
3714
|
+
self.setChildElementOptionalTimeValue(cond_tag, "TIME-BASE", controller.getTimeBase())
|
|
3715
|
+
self.setChildElementOptionalTimeValue(cond_tag, "TIME-BASE-JITTER", controller.getTimeBaseJitter())
|
|
3117
3716
|
|
|
3118
3717
|
def writeISignalToPduMappings(self, element: ET.Element, parent: ISignalIPdu):
|
|
3119
3718
|
mappings = parent.getISignalToPduMappings()
|
|
@@ -3121,7 +3720,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3121
3720
|
mappings_tag = ET.SubElement(element, "I-SIGNAL-TO-PDU-MAPPINGS")
|
|
3122
3721
|
for mapping in mappings:
|
|
3123
3722
|
child_element = ET.SubElement(mappings_tag, "I-SIGNAL-TO-I-PDU-MAPPING")
|
|
3124
|
-
self.
|
|
3723
|
+
self.writeIdentifiable(child_element, mapping)
|
|
3125
3724
|
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-REF", mapping.getISignalRef())
|
|
3126
3725
|
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", mapping.getISignalGroupRef())
|
|
3127
3726
|
self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.getPackingByteOrder())
|
|
@@ -3187,7 +3786,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3187
3786
|
def writeISignalIPdu(self, element: ET.Element, i_pdu: ISignalIPdu):
|
|
3188
3787
|
self.logger.debug("ISignalIPdu %s" % i_pdu.getShortName())
|
|
3189
3788
|
child_element = ET.SubElement(element, "I-SIGNAL-I-PDU")
|
|
3190
|
-
self.
|
|
3789
|
+
self.writeIdentifiable(child_element, i_pdu)
|
|
3191
3790
|
self.setChildElementOptionalNumericalValue(child_element, "LENGTH", i_pdu.getLength())
|
|
3192
3791
|
self.setISignalIPduIPduTimingSpecification(child_element, i_pdu.getIPduTimingSpecification())
|
|
3193
3792
|
self.writeISignalToPduMappings(child_element, i_pdu)
|
|
@@ -3266,6 +3865,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3266
3865
|
self.writeSecuredIPdu(element, ar_element)
|
|
3267
3866
|
elif isinstance(ar_element, CanTpConfig):
|
|
3268
3867
|
self.writeCanTpConfig(element, ar_element)
|
|
3868
|
+
elif isinstance(ar_element, LinTpConfig):
|
|
3869
|
+
self.writeLinTpConfig(element, ar_element)
|
|
3269
3870
|
elif isinstance(ar_element, LinCluster):
|
|
3270
3871
|
self.writeLinCluster(element, ar_element)
|
|
3271
3872
|
elif isinstance(ar_element, CanCluster):
|
|
@@ -3300,6 +3901,26 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3300
3901
|
self.writeEthernetCluster(element, ar_element)
|
|
3301
3902
|
elif isinstance(ar_element, ISignalIPduGroup):
|
|
3302
3903
|
self.writeISignalIPduGroup(element, ar_element)
|
|
3904
|
+
elif isinstance(ar_element, DiagnosticConnection):
|
|
3905
|
+
self.writeDiagnosticConnection(element, ar_element)
|
|
3906
|
+
elif isinstance(ar_element, DiagnosticServiceTable):
|
|
3907
|
+
self.writeDiagnosticServiceTable(element, ar_element)
|
|
3908
|
+
elif isinstance(ar_element, MultiplexedIPdu):
|
|
3909
|
+
self.writeMultiplexedIPdu(element, ar_element)
|
|
3910
|
+
elif isinstance(ar_element, UserDefinedIPdu):
|
|
3911
|
+
self.writeUserDefinedIPdu(element, ar_element)
|
|
3912
|
+
elif isinstance(ar_element, UserDefinedPdu):
|
|
3913
|
+
self.writeUserDefinedPdu(element, ar_element)
|
|
3914
|
+
elif isinstance(ar_element, GeneralPurposePdu):
|
|
3915
|
+
self.writeGeneralPurposePdu(element, ar_element)
|
|
3916
|
+
elif isinstance(ar_element, GeneralPurposeIPdu):
|
|
3917
|
+
self.writeGeneralPurposeIPdu(element, ar_element)
|
|
3918
|
+
elif isinstance(ar_element, SecureCommunicationPropsSet):
|
|
3919
|
+
self.writeSecureCommunicationPropsSet(element, ar_element)
|
|
3920
|
+
elif isinstance(ar_element, SoAdRoutingGroup):
|
|
3921
|
+
self.writeSoAdRoutingGroup(element, ar_element)
|
|
3922
|
+
elif isinstance(ar_element, DoIpTpConfig):
|
|
3923
|
+
self.writeDoIpTpConfig(element, ar_element)
|
|
3303
3924
|
else:
|
|
3304
3925
|
self.notImplemented("Unsupported Elements of ARPackage <%s>" % type(ar_element))
|
|
3305
3926
|
|
|
@@ -3322,7 +3943,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3322
3943
|
for pkg in pkgs:
|
|
3323
3944
|
pkg_tag = ET.SubElement(pkgs_tag, "AR-PACKAGE")
|
|
3324
3945
|
|
|
3325
|
-
self.
|
|
3946
|
+
self.writeIdentifiable(pkg_tag, pkg)
|
|
3326
3947
|
self.logger.debug("writeARPackage %s" % pkg.full_name)
|
|
3327
3948
|
|
|
3328
3949
|
self.writeReferenceBases(pkg_tag, pkg.getReferenceBases())
|