armodel 1.7.3__py3-none-any.whl → 1.7.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/cli/file_list_cli.py +70 -0
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +2 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +1 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +6 -7
- armodel/models/M2/AUTOSARTemplates/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 +37 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +17 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AutosarVariableRef.py +31 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/DataElements.py +4 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/InstanceRefsUsage.py +17 -32
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +4 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +7 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +47 -15
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DiagnosticConnection.py +58 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetCommunication.py +244 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +281 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/NetworkEndpoint.py +328 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +522 -11
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinCommunication.py +114 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinTopology.py +94 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +151 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +140 -12
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +31 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +7 -12
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +135 -13
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +25 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +4 -3
- armodel/models/M2/MSR/AsamHdo/BaseTypes.py +0 -1
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +1 -1
- armodel/models/__init__.py +6 -0
- armodel/parser/abstract_arxml_parser.py +2 -0
- armodel/parser/arxml_parser.py +561 -62
- armodel/tests/test_armodel/models/test_ar_ref.py +2 -2
- armodel/writer/abstract_arxml_writer.py +1 -3
- armodel/writer/arxml_writer.py +702 -223
- {armodel-1.7.3.dist-info → armodel-1.7.5.dist-info}/METADATA +47 -2
- {armodel-1.7.3.dist-info → armodel-1.7.5.dist-info}/RECORD +43 -34
- {armodel-1.7.3.dist-info → armodel-1.7.5.dist-info}/entry_points.txt +1 -0
- {armodel-1.7.3.dist-info → armodel-1.7.5.dist-info}/LICENSE +0 -0
- {armodel-1.7.3.dist-info → armodel-1.7.5.dist-info}/WHEEL +0 -0
- {armodel-1.7.3.dist-info → armodel-1.7.5.dist-info}/top_level.txt +0 -0
armodel/writer/arxml_writer.py
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import xml.etree.cElementTree as ET
|
|
2
|
-
|
|
3
2
|
from typing import List
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
4
|
from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
|
|
8
5
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
9
6
|
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
|
|
@@ -36,13 +33,14 @@ from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMap
|
|
|
36
33
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Code, Implementation
|
|
37
34
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
|
|
38
35
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef, ExecutionOrderConstraint
|
|
39
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DiagnosticCommunicationManagerNeeds, DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds, EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
|
|
36
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds, DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds, EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
|
|
40
37
|
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
|
|
41
38
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
42
39
|
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
|
|
43
40
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclaration, ModeDeclarationGroup, ModeDeclarationGroupPrototype
|
|
44
41
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
|
|
45
42
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
|
|
43
|
+
from ..models.M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import DiagnosticServiceTable
|
|
46
44
|
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
|
|
47
45
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
|
|
48
46
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, MultilanguageReferrable, Referrable
|
|
@@ -60,12 +58,13 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import Compo
|
|
|
60
58
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PRPortPrototype, PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype
|
|
61
59
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
62
60
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import AsynchronousServerCallPoint, RunnableEntity, RunnableEntityArgument, SwcInternalBehavior, SynchronousServerCallPoint
|
|
61
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
|
|
63
62
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
64
63
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.DataElements import ParameterAccess, VariableAccess
|
|
65
64
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector, SwComponentPrototype, SwConnector
|
|
66
65
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
67
66
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
68
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef,
|
|
67
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, VariableInAtomicSWCTypeInstanceRef
|
|
69
68
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, RPortComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
70
69
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef
|
|
71
70
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
@@ -78,18 +77,24 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import S
|
|
|
78
77
|
|
|
79
78
|
from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
|
|
80
79
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
81
|
-
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
|
|
82
82
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
83
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
83
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
84
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
|
|
84
85
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
|
|
86
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCluster, EthernetCommunicationConnector, EthernetCommunicationController, InitialSdDelayConfig, RequestResponseDelay, SdClientConfig
|
|
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, GenericTp, SoAdConfig, SocketAddress, TcpTp, TpPort, TransportProtocolConfiguration, UdpTp
|
|
85
89
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, ISignalMapping
|
|
86
90
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
|
|
87
91
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
|
|
88
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering, LinUnconditionalFrame
|
|
89
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
|
|
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, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
|
|
94
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinMaster
|
|
90
95
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
|
|
91
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
|
|
92
|
-
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
|
|
93
98
|
|
|
94
99
|
from .abstract_arxml_writer import AbstractARXMLWriter
|
|
95
100
|
class ARXMLWriter(AbstractARXMLWriter):
|
|
@@ -192,7 +197,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
192
197
|
self.setMultiLanguagePlainText(child_element, "USED-LANGUAGES", admin_data.getUsedLanguages())
|
|
193
198
|
self.writeSdgs(child_element, admin_data)
|
|
194
199
|
|
|
195
|
-
def
|
|
200
|
+
def writeIdentifiable(self, element: ET.Element, identifiable: Identifiable):
|
|
196
201
|
self.setMultilanguageReferrable(element, identifiable)
|
|
197
202
|
self.setAnnotations(element, identifiable.getAnnotations())
|
|
198
203
|
self.setMultiLanguageOverviewParagraph(element, "DESC", identifiable.getDesc())
|
|
@@ -201,7 +206,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
201
206
|
self.setAdminData(element, identifiable.getAdminData())
|
|
202
207
|
|
|
203
208
|
def setARElement(self, parent: ET.Element, ar_element: ARElement):
|
|
204
|
-
self.
|
|
209
|
+
self.writeIdentifiable(parent, ar_element)
|
|
205
210
|
|
|
206
211
|
def setTransmissionAcknowledgementRequest(self, element: ET.Element, acknowledge: TransmissionAcknowledgementRequest):
|
|
207
212
|
if (acknowledge != None):
|
|
@@ -402,11 +407,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
402
407
|
self.setChildElementOptionalRefType(child_element, "PARAMETER-REF", com_spec.getParameterRef())
|
|
403
408
|
self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
|
|
404
409
|
|
|
405
|
-
def
|
|
410
|
+
def setModeSwitchReceiverComSpec(self, element: ET.Element, com_spec: ModeSwitchReceiverComSpec):
|
|
406
411
|
self.logger.debug("writeModeSwitchReceiverComSpec")
|
|
407
412
|
child_element = ET.SubElement(element, "MODE-SWITCH-RECEIVER-COM-SPEC")
|
|
408
413
|
self.setARObjectAttributes(child_element, com_spec)
|
|
409
|
-
self.
|
|
414
|
+
self.setChildElementOptionalBooleanValue(child_element, "ENHANCED-MODE-API", com_spec.getEnhancedModeApi())
|
|
415
|
+
self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", com_spec.getModeGroupRef())
|
|
416
|
+
self.setChildElementOptionalBooleanValue(child_element, "SUPPORTS-ASYNCHRONOUS-MODE-SWITCH", com_spec.getSupportsAsynchronousModeSwitch())
|
|
410
417
|
|
|
411
418
|
def writeRPortComSpec(self, element: ET.Element, com_spec: RPortComSpec):
|
|
412
419
|
if isinstance(com_spec, NonqueuedReceiverComSpec):
|
|
@@ -416,7 +423,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
416
423
|
elif isinstance(com_spec, ClientComSpec):
|
|
417
424
|
self.writeClientComSpec(element, com_spec)
|
|
418
425
|
elif isinstance(com_spec, ModeSwitchReceiverComSpec):
|
|
419
|
-
self.
|
|
426
|
+
self.setModeSwitchReceiverComSpec(element, com_spec)
|
|
420
427
|
elif isinstance(com_spec, ParameterRequireComSpec):
|
|
421
428
|
self.writeParameterRequireComSpec(element, com_spec)
|
|
422
429
|
else:
|
|
@@ -432,7 +439,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
432
439
|
def writePPortPrototype(self, ports_tag: ET.Element, prototype: PPortPrototype):
|
|
433
440
|
prototype_tag = ET.SubElement(ports_tag, "P-PORT-PROTOTYPE")
|
|
434
441
|
|
|
435
|
-
self.
|
|
442
|
+
self.writeIdentifiable(prototype_tag, prototype)
|
|
436
443
|
self.logger.debug("write PPortPrototype %s" % prototype.getShortName())
|
|
437
444
|
self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
|
|
438
445
|
self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-INTERFACE-TREF", prototype.getProvidedInterfaceTRef())
|
|
@@ -447,14 +454,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
447
454
|
def writeRPortPrototype(self, ports_tag: ET.Element, prototype: RPortPrototype):
|
|
448
455
|
self.logger.debug("write RPortPrototype %s" % prototype.getShortName())
|
|
449
456
|
prototype_tag = ET.SubElement(ports_tag, "R-PORT-PROTOTYPE")
|
|
450
|
-
self.
|
|
457
|
+
self.writeIdentifiable(prototype_tag, prototype)
|
|
451
458
|
self.setAbstractRequiredPortPrototype(prototype_tag, prototype)
|
|
452
459
|
self.setChildElementOptionalRefType(prototype_tag, "REQUIRED-INTERFACE-TREF", prototype.getRequiredInterfaceTRef())
|
|
453
460
|
|
|
454
461
|
def writePRPortPrototype(self, ports_tag: ET.Element, prototype: PRPortPrototype):
|
|
455
462
|
self.logger.debug("write PRPortPrototype %s" % prototype.getShortName())
|
|
456
463
|
prototype_tag = ET.SubElement(ports_tag, "PR-PORT-PROTOTYPE")
|
|
457
|
-
self.
|
|
464
|
+
self.writeIdentifiable(prototype_tag, prototype)
|
|
458
465
|
self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
|
|
459
466
|
self.setAbstractRequiredPortPrototype(prototype_tag, prototype)
|
|
460
467
|
self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-REQUIRED-INTERFACE-TREF", prototype.getProvidedRequiredInterface())
|
|
@@ -493,7 +500,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
493
500
|
def writePortGroup(self, element: ET.Element, port_group: PortGroup):
|
|
494
501
|
self.logger.debug("writePortGroup %s" % port_group.getShortName())
|
|
495
502
|
child_element = ET.SubElement(element, "PORT-GROUP")
|
|
496
|
-
self.
|
|
503
|
+
self.writeIdentifiable(child_element, port_group)
|
|
497
504
|
self.writePortGroupInnerGroupIRefs(child_element, port_group)
|
|
498
505
|
self.writePortGroupOuterPortRefs(child_element, port_group)
|
|
499
506
|
|
|
@@ -505,7 +512,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
505
512
|
self.writePortGroup(child_element, port_group)
|
|
506
513
|
|
|
507
514
|
def writeSwComponentType(self, element: ET.Element, sw_component: SwComponentType):
|
|
508
|
-
self.
|
|
515
|
+
self.writeIdentifiable(element, sw_component)
|
|
509
516
|
port_prototypes = sw_component.getPortPrototypes()
|
|
510
517
|
if len(port_prototypes) > 0:
|
|
511
518
|
ports_tag = ET.SubElement(element, "PORTS")
|
|
@@ -514,7 +521,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
514
521
|
|
|
515
522
|
def writeSwComponentPrototype(self, element: ET.Element, prototype: SwComponentPrototype):
|
|
516
523
|
prototype_tag = ET.SubElement(element, "SW-COMPONENT-PROTOTYPE")
|
|
517
|
-
self.
|
|
524
|
+
self.writeIdentifiable(prototype_tag, prototype)
|
|
518
525
|
self.setChildElementOptionalRefType(prototype_tag, "TYPE-TREF", prototype.getTypeTRef())
|
|
519
526
|
|
|
520
527
|
def writeSwComponentPrototypes(self, element: ET.Element, sw_component: CompositionSwComponentType):
|
|
@@ -526,7 +533,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
526
533
|
|
|
527
534
|
def writeAssemblySwConnector(self, element: ET.Element, sw_connector: AssemblySwConnector):
|
|
528
535
|
child_element = ET.SubElement(element, "ASSEMBLY-SW-CONNECTOR")
|
|
529
|
-
self.
|
|
536
|
+
self.writeIdentifiable(child_element, sw_connector)
|
|
530
537
|
self.setChildElementOptionalRefType(child_element, "MAPPING-REF", sw_connector.getMappingRef())
|
|
531
538
|
|
|
532
539
|
if sw_connector.getProviderIRef() is not None:
|
|
@@ -545,7 +552,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
545
552
|
|
|
546
553
|
def writeDelegationSwConnector(self, element: ET.Element, sw_connector: DelegationSwConnector):
|
|
547
554
|
connector_tag = ET.SubElement(element, "DELEGATION-SW-CONNECTOR")
|
|
548
|
-
self.
|
|
555
|
+
self.writeIdentifiable(connector_tag, sw_connector)
|
|
549
556
|
|
|
550
557
|
if sw_connector.getInnerPortIRref() is not None:
|
|
551
558
|
inner_port_iref_tag = ET.SubElement(connector_tag, "INNER-PORT-IREF")
|
|
@@ -652,11 +659,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
652
659
|
def setSwAxisIndividual(self, element: ET.Element, props: SwAxisIndividual):
|
|
653
660
|
child_element = ET.SubElement(element, "SW-AXIS-INDIVIDUAL")
|
|
654
661
|
self.setARObjectAttributes(child_element, props)
|
|
655
|
-
self.setChildElementOptionalRefType(child_element, "INPUT-VARIABLE-TYPE-REF", props.
|
|
656
|
-
self.setChildElementOptionalRefType(child_element, "COMPU-METHOD-REF", props.
|
|
657
|
-
self.setChildElementOptionalNumericalValue(child_element, "SW-MAX-AXIS-POINTS", props.
|
|
658
|
-
self.setChildElementOptionalNumericalValue(child_element, "SW-MIN-AXIS-POINTS", props.
|
|
659
|
-
self.setChildElementOptionalRefType(child_element, "DATA-CONSTR-REF", props.
|
|
662
|
+
self.setChildElementOptionalRefType(child_element, "INPUT-VARIABLE-TYPE-REF", props.getInputVariableTypeRef())
|
|
663
|
+
self.setChildElementOptionalRefType(child_element, "COMPU-METHOD-REF", props.getCompuMethodRef())
|
|
664
|
+
self.setChildElementOptionalNumericalValue(child_element, "SW-MAX-AXIS-POINTS", props.getSwMaxAxisPoints())
|
|
665
|
+
self.setChildElementOptionalNumericalValue(child_element, "SW-MIN-AXIS-POINTS", props.getSwMinAxisPoints())
|
|
666
|
+
self.setChildElementOptionalRefType(child_element, "DATA-CONSTR-REF", props.getDataConstrRef())
|
|
660
667
|
|
|
661
668
|
def setSwAxisGrouped(self, element: ET.Element, props: SwAxisGrouped):
|
|
662
669
|
child_element = ET.SubElement(element, "SW-AXIS-GROUPED")
|
|
@@ -699,12 +706,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
699
706
|
self.setAnnotations(conditional_tag, props.getAnnotations())
|
|
700
707
|
self.setChildElementOptionalRefType(conditional_tag, "BASE-TYPE-REF", props.getBaseTypeRef())
|
|
701
708
|
self.setChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF", props.getCompuMethodRef())
|
|
702
|
-
|
|
709
|
+
|
|
703
710
|
self.setValueSpecification(conditional_tag, "INVALID-VALUE", props.getInvalidValue())
|
|
704
711
|
self.setChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", props.getImplementationDataTypeRef())
|
|
705
712
|
self.setChildElementOptionalFloatValue(conditional_tag, "STEP-SIZE", props.getStepSize())
|
|
706
713
|
self.setChildElementOptionalRefType(conditional_tag, "SW-ADDR-METHOD-REF", props.getSwAddrMethodRef())
|
|
707
714
|
self.setChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS", props.getSwCalibrationAccess())
|
|
715
|
+
self.setChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF", props.getDataConstrRef())
|
|
708
716
|
self.setSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET", props.getSwCalprmAxisSet())
|
|
709
717
|
self.setChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY", props.getSwImplPolicy())
|
|
710
718
|
self.setChildElementOptionalNumericalValue(conditional_tag, "SW-INTENDED-RESOLUTION", props.getSwIntendedResolution())
|
|
@@ -723,7 +731,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
723
731
|
self.setARElement(element, data_type)
|
|
724
732
|
self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", data_type.getSwDataDefProps())
|
|
725
733
|
|
|
726
|
-
def
|
|
734
|
+
def writeApplicationPrimitiveDataType(self, element: ET.Element, data_type: ApplicationPrimitiveDataType):
|
|
727
735
|
self.logger.debug("writeApplicationPrimitiveDataType %s" % data_type.getShortName())
|
|
728
736
|
data_type_tag = ET.SubElement(element, "APPLICATION-PRIMITIVE-DATA-TYPE")
|
|
729
737
|
self.setApplicationDataType(data_type_tag, data_type)
|
|
@@ -732,6 +740,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
732
740
|
self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", prototype.getSwDataDefProps())
|
|
733
741
|
|
|
734
742
|
def setApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
|
|
743
|
+
self.writeIdentifiable(element, prototype)
|
|
735
744
|
self.setDataPrototype(element, prototype)
|
|
736
745
|
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
|
|
737
746
|
|
|
@@ -746,7 +755,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
746
755
|
child_element = ET.SubElement(elements_tag, "APPLICATION-RECORD-ELEMENT")
|
|
747
756
|
self.setApplicationRecordElement(child_element, record)
|
|
748
757
|
|
|
749
|
-
def
|
|
758
|
+
def writeApplicationRecordDataType(self, element: ET.Element, data_type: ApplicationRecordDataType):
|
|
750
759
|
data_type_tag = ET.SubElement(element, "APPLICATION-RECORD-DATA-TYPE")
|
|
751
760
|
self.setApplicationDataType(data_type_tag, data_type)
|
|
752
761
|
self.writeApplicationRecordElements(data_type_tag, data_type)
|
|
@@ -754,22 +763,23 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
754
763
|
def writeApplicationDataTypes(self, parent: ET.Element, ar_package: ARPackage):
|
|
755
764
|
for data_type in ar_package.getApplicationDataType():
|
|
756
765
|
if isinstance(data_type, ApplicationPrimitiveDataType):
|
|
757
|
-
self.
|
|
766
|
+
self.writeApplicationPrimitiveDataType(parent, data_type)
|
|
758
767
|
elif isinstance(data_type, ApplicationRecordDataType):
|
|
759
|
-
self.
|
|
768
|
+
self.writeApplicationRecordDataType(parent, data_type)
|
|
760
769
|
else:
|
|
761
770
|
self.notImplemented("Unsupported ApplicationDataType <%s>" % type(data_type))
|
|
762
771
|
|
|
763
|
-
def
|
|
764
|
-
self.setChildElementOptionalNumericalValue(element, "BASE-TYPE-SIZE", base_type_definition.
|
|
765
|
-
self.setChildElementOptionalLiteral(element, "BASE-TYPE-ENCODING", base_type_definition.
|
|
766
|
-
self.
|
|
767
|
-
self.
|
|
772
|
+
def setBaseTypeDirectDefinition(self, element: ET.Element, base_type_definition: BaseTypeDirectDefinition):
|
|
773
|
+
self.setChildElementOptionalNumericalValue(element, "BASE-TYPE-SIZE", base_type_definition.getBaseTypeSize())
|
|
774
|
+
self.setChildElementOptionalLiteral(element, "BASE-TYPE-ENCODING", base_type_definition.getBaseTypeEncoding())
|
|
775
|
+
self.setChildElementOptionalLiteral(element, "BYTE-ORDER", base_type_definition.getByteOrder())
|
|
776
|
+
self.setChildElementOptionalNumericalValue(element, "MEM-ALIGNMENT", base_type_definition.getMemAlignment())
|
|
777
|
+
self.setChildElementOptionalLiteral(element, "NATIVE-DECLARATION", base_type_definition.getNativeDeclaration())
|
|
768
778
|
|
|
769
|
-
def
|
|
779
|
+
def writeSwBaseType(self, element: ET.Element, base_type: SwBaseType):
|
|
770
780
|
data_type_tag = ET.SubElement(element, "SW-BASE-TYPE")
|
|
771
|
-
self.
|
|
772
|
-
self.
|
|
781
|
+
self.writeIdentifiable(data_type_tag, base_type)
|
|
782
|
+
self.setBaseTypeDirectDefinition(data_type_tag, base_type.getBaseTypeDefinition())
|
|
773
783
|
|
|
774
784
|
def writeCompuScaleConstantContents(self, element: ET.Element, contents: CompuScaleConstantContents):
|
|
775
785
|
compu_const_tag = ET.SubElement(element, "COMPU-CONST")
|
|
@@ -834,10 +844,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
834
844
|
self.setCompuScales(child_element, compu.getCompuContent())
|
|
835
845
|
self.setCompuConst(child_element, "COMPU-DEFAULT-VALUE", compu.getCompuDefaultValue())
|
|
836
846
|
|
|
837
|
-
def
|
|
847
|
+
def writeCompuMethod(self, element: ET.Element, compu_method: CompuMethod):
|
|
838
848
|
child_element = ET.SubElement(element, "COMPU-METHOD")
|
|
839
849
|
self.logger.debug("write CompuMethods %s" % compu_method.getShortName())
|
|
840
|
-
self.
|
|
850
|
+
self.writeIdentifiable(child_element, compu_method)
|
|
841
851
|
self.setChildElementOptionalRefType(child_element, "UNIT-REF", compu_method.getUnitRef())
|
|
842
852
|
self.setCompu(child_element, "COMPU-INTERNAL-TO-PHYS", compu_method.getCompuInternalToPhys())
|
|
843
853
|
self.setCompu(child_element, "COMPU-PHYS-TO-INTERNAL", compu_method.getCompuPhysToInternal())
|
|
@@ -871,7 +881,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
871
881
|
|
|
872
882
|
def writeConstantSpecification(self, element: ET.Element, spec: ConstantSpecification):
|
|
873
883
|
spec_tag = ET.SubElement(element, "CONSTANT-SPECIFICATION")
|
|
874
|
-
self.
|
|
884
|
+
self.writeIdentifiable(spec_tag, spec)
|
|
875
885
|
|
|
876
886
|
if spec.getValueSpec() is not None:
|
|
877
887
|
self.setValueSpecification(spec_tag, "VALUE-SPEC", spec.getValueSpec())
|
|
@@ -908,13 +918,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
908
918
|
|
|
909
919
|
def writeDataConstr(self, element: ET.Element, constr: DataConstr):
|
|
910
920
|
child_element = ET.SubElement(element, "DATA-CONSTR")
|
|
911
|
-
self.
|
|
921
|
+
self.writeIdentifiable(child_element, constr)
|
|
912
922
|
self.writeDataConstrRules(child_element, constr)
|
|
913
923
|
|
|
914
924
|
def writeUnit(self, element: ET.Element, unit: Unit):
|
|
915
925
|
self.logger.debug("writeUnit %s" % unit.getShortName())
|
|
916
926
|
child_element = ET.SubElement(element, "UNIT")
|
|
917
|
-
self.
|
|
927
|
+
self.writeIdentifiable(child_element, unit)
|
|
918
928
|
self.setChildElementOptionalLiteral(child_element, "DISPLAY-NAME", unit.getDisplayName())
|
|
919
929
|
self.setChildElementOptionalFloatValue(child_element, "FACTOR-SI-TO-UNIT", unit.getFactorSiToUnit())
|
|
920
930
|
self.setChildElementOptionalFloatValue(child_element, "OFFSET-SI-TO-UNIT", unit.getOffsetSiToUnit())
|
|
@@ -936,7 +946,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
936
946
|
self.setChildElementOptionalRefType(child_element, "TARGET-PROVIDED-OPERATION-REF", iref.getTargetProvidedOperationRef())
|
|
937
947
|
|
|
938
948
|
def setRTEEvent(self, element: ET.Element, event: RTEEvent):
|
|
939
|
-
self.
|
|
949
|
+
self.writeIdentifiable(element, event)
|
|
940
950
|
irefs = event.getDisabledModeIRefs()
|
|
941
951
|
if len(irefs) > 0:
|
|
942
952
|
child_element = ET.SubElement(element, "DISABLED-MODE-IREFS")
|
|
@@ -1023,7 +1033,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1023
1033
|
areas_tag = ET.SubElement(element, "EXCLUSIVE-AREAS")
|
|
1024
1034
|
for area in areas:
|
|
1025
1035
|
child_element = ET.SubElement(areas_tag, "EXCLUSIVE-AREA")
|
|
1026
|
-
self.
|
|
1036
|
+
self.writeIdentifiable(child_element, area)
|
|
1027
1037
|
|
|
1028
1038
|
def writeDataTypeMappingRefs(self, element: ET.Element, behavior: InternalBehavior):
|
|
1029
1039
|
refs = behavior.getDataTypeMappingRefs()
|
|
@@ -1032,22 +1042,15 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1032
1042
|
for ref in refs:
|
|
1033
1043
|
self.setChildElementOptionalRefType(refs_tag, "DATA-TYPE-MAPPING-REF", ref)
|
|
1034
1044
|
|
|
1035
|
-
def writeInternalBehaviorConstantMemories(self, element: ET.Element, behavior: InternalBehavior):
|
|
1036
|
-
memories = behavior.getConstantMemorys()
|
|
1037
|
-
if len(memories) > 0:
|
|
1038
|
-
child_element = ET.SubElement(element, "CONSTANT-MEMORYS")
|
|
1039
|
-
for memory in memories:
|
|
1040
|
-
self.writeParameterDataPrototype(child_element, memory)
|
|
1041
|
-
|
|
1042
1045
|
def writeInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
|
|
1043
|
-
self.
|
|
1044
|
-
self.
|
|
1046
|
+
self.writeIdentifiable(element, behavior)
|
|
1047
|
+
self.setParameterDataPrototypes(element, "CONSTANT-MEMORYS", behavior.getConstantMemories())
|
|
1045
1048
|
self.writeDataTypeMappingRefs(element, behavior)
|
|
1046
1049
|
self.writeExclusiveAreas(element, behavior)
|
|
1047
1050
|
|
|
1048
|
-
def setAutosarVariableRef(self, element: ET.Element, ref: AutosarVariableRef):
|
|
1051
|
+
def setAutosarVariableRef(self, element: ET.Element, key: str, ref: AutosarVariableRef):
|
|
1049
1052
|
if ref is not None:
|
|
1050
|
-
child_element = ET.SubElement(element,
|
|
1053
|
+
child_element = ET.SubElement(element, key)
|
|
1051
1054
|
self.setARObjectAttributes(child_element, ref)
|
|
1052
1055
|
if ref.getAutosarVariableIRef() is not None:
|
|
1053
1056
|
child_element = ET.SubElement(child_element, "AUTOSAR-VARIABLE-IREF")
|
|
@@ -1066,20 +1069,18 @@ 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.
|
|
1070
|
-
self.setAutosarVariableRef(child_element, access.getAccessedVariableRef())
|
|
1071
|
-
|
|
1072
|
-
|
|
1072
|
+
self.writeIdentifiable(child_element, access)
|
|
1073
|
+
self.setAutosarVariableRef(child_element, "ACCESSED-VARIABLE", access.getAccessedVariableRef())
|
|
1073
1074
|
|
|
1074
1075
|
def setAutosarParameterRef(self, element: ET.Element, key: str, parameter_ref: AutosarParameterRef):
|
|
1075
1076
|
if parameter_ref is not None:
|
|
1076
1077
|
child_element = ET.SubElement(element, key)
|
|
1077
|
-
self.setChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF", parameter_ref.
|
|
1078
|
+
self.setChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF", parameter_ref.getLocalParameterRef())
|
|
1078
1079
|
|
|
1079
1080
|
def writeParameterAccess(self, element: ET.Element, parameter_access: ParameterAccess):
|
|
1080
1081
|
child_element = ET.SubElement(element, "PARAMETER-ACCESS")
|
|
1081
|
-
self.
|
|
1082
|
-
self.setAutosarParameterRef(child_element, "ACCESSED-PARAMETER", parameter_access.
|
|
1082
|
+
self.writeIdentifiable(child_element, parameter_access)
|
|
1083
|
+
self.setAutosarParameterRef(child_element, "ACCESSED-PARAMETER", parameter_access.getAccessedParameter())
|
|
1083
1084
|
|
|
1084
1085
|
def writeParameterAccesses(self, element: ET.Element, entity: RunnableEntity):
|
|
1085
1086
|
parameter_accesses = entity.getParameterAccesses()
|
|
@@ -1136,12 +1137,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1136
1137
|
|
|
1137
1138
|
def setSynchronousServerCallPoint(self, element: ET.Element, call_point: SynchronousServerCallPoint):
|
|
1138
1139
|
child_element = ET.SubElement(element, "SYNCHRONOUS-SERVER-CALL-POINT")
|
|
1139
|
-
self.
|
|
1140
|
+
self.writeIdentifiable(child_element, call_point)
|
|
1140
1141
|
self.setServerCallPoint(child_element, call_point)
|
|
1141
1142
|
|
|
1142
1143
|
def setAsynchronousServerCallPoint(self, element: ET.Element, call_point: SynchronousServerCallPoint):
|
|
1143
1144
|
child_element = ET.SubElement(element, "ASYNCHRONOUS-SERVER-CALL-POINT")
|
|
1144
|
-
self.
|
|
1145
|
+
self.writeIdentifiable(child_element, call_point)
|
|
1145
1146
|
self.setServerCallPoint(child_element, call_point)
|
|
1146
1147
|
|
|
1147
1148
|
def writeServerCallPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
@@ -1190,7 +1191,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1190
1191
|
mode_access_points_tag = ET.SubElement(element, "MODE-SWITCH-POINTS")
|
|
1191
1192
|
for point in points:
|
|
1192
1193
|
child_element = ET.SubElement(mode_access_points_tag, "MODE-SWITCH-POINT")
|
|
1193
|
-
self.
|
|
1194
|
+
self.writeIdentifiable(child_element, point)
|
|
1194
1195
|
self.setPModeGroupInAtomicSWCInstanceRef(child_element, "MODE-GROUP-IREF", point.getModeGroupIRef())
|
|
1195
1196
|
|
|
1196
1197
|
def setRunnableEntityArgument(self, element: ET.Element, argument: RunnableEntityArgument):
|
|
@@ -1213,7 +1214,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1213
1214
|
points_tag = ET.SubElement(element, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINTS")
|
|
1214
1215
|
for point in points:
|
|
1215
1216
|
child_element = ET.SubElement(points_tag, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINT")
|
|
1216
|
-
self.
|
|
1217
|
+
self.writeIdentifiable(child_element, point)
|
|
1217
1218
|
self.setChildElementOptionalRefType(child_element, "ASYNCHRONOUS-SERVER-CALL-POINT-REF", point.getAsynchronousServerCallPointRef())
|
|
1218
1219
|
|
|
1219
1220
|
def writeRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
|
|
@@ -1223,13 +1224,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1223
1224
|
self.writeRunnableEntityArguments(child_element, entity)
|
|
1224
1225
|
self.writeAsynchronousServerCallResultPoint(child_element, entity)
|
|
1225
1226
|
self.setChildElementOptionalBooleanValue(child_element, "CAN-BE-INVOKED-CONCURRENTLY", entity.getCanBeInvokedConcurrently())
|
|
1226
|
-
self.writeParameterAccesses(child_element, entity)
|
|
1227
1227
|
self.writeDataReadAccesses(child_element, entity)
|
|
1228
1228
|
self.writeDataReceivePointByArguments(child_element, entity)
|
|
1229
1229
|
self.writeDataSendPoints(child_element, entity)
|
|
1230
1230
|
self.writeDataWriteAccesses(child_element, entity)
|
|
1231
1231
|
self.writeModeAccessPoints(child_element, entity)
|
|
1232
1232
|
self.writeModeSwitchPoints(child_element, entity)
|
|
1233
|
+
self.writeParameterAccesses(child_element, entity)
|
|
1233
1234
|
self.writeReadLocalVariables(child_element, entity)
|
|
1234
1235
|
self.writeServerCallPoints(child_element, entity)
|
|
1235
1236
|
self.setChildElementOptionalLiteral(child_element, "SYMBOL", entity.symbol)
|
|
@@ -1244,6 +1245,16 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1244
1245
|
self.writeRunnableEntity(runnables_tag, entity)
|
|
1245
1246
|
else:
|
|
1246
1247
|
self.notImplemented("Unsupported RunnableEntity <%s>" % type(entity))
|
|
1248
|
+
|
|
1249
|
+
def writeSwcInternalBehaviorArTypedPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1250
|
+
prototypes = behavior.getArTypedPerInstanceMemories()
|
|
1251
|
+
if len(prototypes) > 0:
|
|
1252
|
+
child_element = ET.SubElement(element, "AR-TYPED-PER-INSTANCE-MEMORYS")
|
|
1253
|
+
for prototype in prototypes:
|
|
1254
|
+
if isinstance(prototype, VariableDataPrototype):
|
|
1255
|
+
self.writeVariableDataPrototype(child_element, prototype)
|
|
1256
|
+
else:
|
|
1257
|
+
self._raiseError("Unsupported ArTypedPerInstanceMemories <%s>" % type(prototype))
|
|
1247
1258
|
|
|
1248
1259
|
def writeExplicitInterRunnableVariables(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1249
1260
|
prototypes = behavior.getExplicitInterRunnableVariables()
|
|
@@ -1261,24 +1272,23 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1261
1272
|
memories_tag = ET.SubElement(element, "PER-INSTANCE-MEMORYS")
|
|
1262
1273
|
for memory in memories:
|
|
1263
1274
|
child_element = ET.SubElement(memories_tag, "PER-INSTANCE-MEMORY")
|
|
1264
|
-
self.
|
|
1275
|
+
self.writeIdentifiable(child_element, memory)
|
|
1265
1276
|
self.setChildElementOptionalLiteral(child_element, "INIT-VALUE", memory.getInitValue())
|
|
1266
1277
|
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", memory.getSwDataDefProps())
|
|
1267
1278
|
self.setChildElementOptionalLiteral(child_element, "TYPE", memory.getType())
|
|
1268
1279
|
self.setChildElementOptionalLiteral (child_element, "TYPE-DEFINITION", memory.getTypeDefinition())
|
|
1269
1280
|
|
|
1270
|
-
def
|
|
1281
|
+
def setParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
|
|
1271
1282
|
child_element = ET.SubElement(element, "PARAMETER-DATA-PROTOTYPE")
|
|
1272
|
-
self.
|
|
1283
|
+
self.writeIdentifiable(child_element, prototype)
|
|
1273
1284
|
self.setAutosarDataPrototype(child_element, prototype)
|
|
1274
1285
|
self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
|
|
1275
1286
|
|
|
1276
|
-
def
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
self.writeParameterDataPrototype(child_element, prototype)
|
|
1287
|
+
def setParameterDataPrototypes(self, element: ET.Element, key: str, parameters: List[ParameterDataPrototype]):
|
|
1288
|
+
if len(parameters) > 0:
|
|
1289
|
+
child_element = ET.SubElement(element, key)
|
|
1290
|
+
for parameter in parameters:
|
|
1291
|
+
self.setParameterDataPrototype(child_element, parameter)
|
|
1282
1292
|
|
|
1283
1293
|
def writePortDefinedArgumentValues(self, element: ET.Element, argument_values: List[PortDefinedArgumentValue]) :
|
|
1284
1294
|
if len(argument_values) > 0:
|
|
@@ -1317,12 +1327,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1317
1327
|
self._raiseError("Unsupported Assigned Data <%s>" % type(data))
|
|
1318
1328
|
|
|
1319
1329
|
def writeServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
|
|
1320
|
-
self.
|
|
1330
|
+
self.writeIdentifiable(element, dependency)
|
|
1321
1331
|
self.writeServiceDependencyAssignedDataType(element, dependency)
|
|
1322
1332
|
|
|
1323
1333
|
def writeRoleBasedDataAssignment(self, element: ET.Element, assignment: RoleBasedDataAssignment):
|
|
1324
1334
|
child_element = ET.SubElement(element, "ROLE-BASED-DATA-ASSIGNMENT")
|
|
1325
1335
|
self.setChildElementOptionalLiteral(child_element, "ROLE", assignment.role)
|
|
1336
|
+
self.setAutosarVariableRef(child_element, "USED-DATA-ELEMENT", assignment.getUsedDataElement())
|
|
1326
1337
|
self.setAutosarParameterRef(child_element, "USED-PARAMETER-ELEMENT", assignment.getUsedParameterElement())
|
|
1327
1338
|
self.setChildElementOptionalRefType(child_element, "USED-PIM-REF", assignment.getUsedPimRef())
|
|
1328
1339
|
|
|
@@ -1351,10 +1362,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1351
1362
|
else:
|
|
1352
1363
|
self._raiseError("Unsupported Assigned Data <%s>" % type(data))
|
|
1353
1364
|
|
|
1354
|
-
def
|
|
1365
|
+
def setNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
|
|
1355
1366
|
child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
|
|
1356
1367
|
self.logger.debug("write NvBlockNeeds %s" % needs.getShortName())
|
|
1357
|
-
self.
|
|
1368
|
+
self.writeIdentifiable(child_element, needs)
|
|
1358
1369
|
self.setChildElementOptionalBooleanValue(child_element, "CALC-RAM-BLOCK-CRC", needs.getCalcRamBlockCrc())
|
|
1359
1370
|
self.setChildElementOptionalBooleanValue(child_element, "CHECK-STATIC-BLOCK-ID", needs.getCheckStaticBlockId())
|
|
1360
1371
|
self.setChildElementOptionalNumericalValue(child_element, "N-DATA-SETS", needs.getNDataSets())
|
|
@@ -1372,25 +1383,26 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1372
1383
|
self.setChildElementOptionalBooleanValue(child_element, "USE-CRC-COMP-MECHANISM", needs.getUseCRCCompMechanism())
|
|
1373
1384
|
self.setChildElementOptionalBooleanValue(child_element, "WRITE-ONLY-ONCE", needs.getWriteOnlyOnce())
|
|
1374
1385
|
self.setChildElementOptionalBooleanValue(child_element, "WRITE-VERIFICATION", needs.getWriteVerification())
|
|
1386
|
+
self.setChildElementOptionalPositiveInteger(child_element, "WRITING-FREQUENCY", needs.getWritingFrequency())
|
|
1375
1387
|
self.setChildElementOptionalLiteral(child_element, "WRITING-PRIORITY", needs.getWritingPriority())
|
|
1376
1388
|
|
|
1377
|
-
def
|
|
1389
|
+
def setDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
|
|
1378
1390
|
child_element = ET.SubElement(element, "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS")
|
|
1379
1391
|
self.logger.debug("write DiagnosticCommunicationManagerNeeds %s" % needs.getShortName())
|
|
1380
|
-
self.
|
|
1392
|
+
self.writeIdentifiable(child_element, needs)
|
|
1381
1393
|
self.setChildElementOptionalLiteral(child_element, "SERVICE-REQUEST-CALLBACK-TYPE", needs.getServiceRequestCallbackType())
|
|
1382
1394
|
|
|
1383
|
-
def
|
|
1395
|
+
def setDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
|
|
1384
1396
|
child_element = ET.SubElement(element, "DIAGNOSTIC-ROUTINE-NEEDS")
|
|
1385
1397
|
self.logger.debug("write DiagnosticRoutineNeeds %s" % needs.getShortName())
|
|
1386
|
-
self.
|
|
1398
|
+
self.writeIdentifiable(child_element, needs)
|
|
1387
1399
|
self.setChildElementOptionalLiteral(child_element, "DIAG-ROUTINE-TYPE", needs.getDiagRoutineType())
|
|
1388
1400
|
self.setChildElementOptionalIntegerValue(child_element, "RID-NUMBER", needs.getRidNumber())
|
|
1389
1401
|
|
|
1390
|
-
def
|
|
1402
|
+
def setDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
|
|
1391
1403
|
child_element = ET.SubElement(element, "DIAGNOSTIC-VALUE-NEEDS")
|
|
1392
1404
|
self.logger.debug("write DiagnosticValueNeeds %s" % needs.getShortName())
|
|
1393
|
-
self.
|
|
1405
|
+
self.writeIdentifiable(child_element, needs)
|
|
1394
1406
|
self.setChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH", needs.getDataLength())
|
|
1395
1407
|
self.setChildElementOptionalLiteral(child_element, "DIAGNOSTIC-VALUE-ACCESS", needs.getDiagnosticValueAccess())
|
|
1396
1408
|
self.setChildElementOptionalIntegerValue(child_element, "DID-NUMBER", needs.getDidNumber())
|
|
@@ -1399,7 +1411,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1399
1411
|
|
|
1400
1412
|
def setDiagEventDebounceMonitorInternal(self, element: ET.Element, algorithm: DiagEventDebounceMonitorInternal):
|
|
1401
1413
|
child_element = ET.SubElement(element, "DIAG-EVENT-DEBOUNCE-MONITOR-INTERNAL")
|
|
1402
|
-
self.
|
|
1414
|
+
self.writeIdentifiable(child_element, algorithm)
|
|
1403
1415
|
|
|
1404
1416
|
def writeDiagEventDebounceAlgorithm(self, element: ET.Element, needs: DiagnosticEventNeeds):
|
|
1405
1417
|
algorithm = needs.getDiagEventDebounceAlgorithm()
|
|
@@ -1410,24 +1422,30 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1410
1422
|
else:
|
|
1411
1423
|
self.notImplemented("Unsupported DiagEventDebounceAlgorithm <%s>" % type(algorithm))
|
|
1412
1424
|
|
|
1413
|
-
def
|
|
1425
|
+
def setDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
|
|
1414
1426
|
child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-NEEDS")
|
|
1415
1427
|
self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
|
|
1416
|
-
self.
|
|
1428
|
+
self.writeIdentifiable(child_element, needs)
|
|
1417
1429
|
self.writeDiagEventDebounceAlgorithm(child_element, needs)
|
|
1418
1430
|
self.setChildElementOptionalLiteral(child_element, "DTC-KIND", needs.getDtcKind())
|
|
1419
1431
|
self.setChildElementOptionalIntegerValue(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
|
|
1432
|
+
|
|
1433
|
+
def setDiagnosticEventInfoNeeds(self, element: ET.Element, needs: DiagnosticEventInfoNeeds):
|
|
1434
|
+
child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-INFO-NEEDS")
|
|
1435
|
+
self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
|
|
1436
|
+
self.writeIdentifiable(child_element, needs)
|
|
1437
|
+
self.setChildElementOptionalPositiveInteger(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
|
|
1420
1438
|
|
|
1421
|
-
def
|
|
1439
|
+
def setCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
|
|
1422
1440
|
child_element = ET.SubElement(element, "CRYPTO-SERVICE-NEEDS")
|
|
1423
1441
|
self.logger.debug("write CryptoServiceNeeds %s" % needs.getShortName())
|
|
1424
|
-
self.
|
|
1442
|
+
self.writeIdentifiable(child_element, needs)
|
|
1425
1443
|
self.setChildElementOptionalPositiveInteger(child_element, "MAXIMUM-KEY-LENGTH", needs.getMaximumKeyLength())
|
|
1426
1444
|
|
|
1427
|
-
def
|
|
1445
|
+
def setEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
|
|
1428
1446
|
child_element = ET.SubElement(element, "ECU-STATE-MGR-USER-NEEDS")
|
|
1429
1447
|
self.logger.debug("write EcuStateMgrUserNeeds %s" % needs.getShortName())
|
|
1430
|
-
self.
|
|
1448
|
+
self.writeIdentifiable(child_element, needs)
|
|
1431
1449
|
|
|
1432
1450
|
def writeSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
1433
1451
|
needs = parent.getServiceNeeds()
|
|
@@ -1435,21 +1453,23 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1435
1453
|
child_element = ET.SubElement(element, "SERVICE-NEEDS")
|
|
1436
1454
|
for need in needs:
|
|
1437
1455
|
if isinstance(need, NvBlockNeeds):
|
|
1438
|
-
self.
|
|
1456
|
+
self.setNvBlockNeeds(child_element, need)
|
|
1439
1457
|
elif isinstance(need, DiagnosticCommunicationManagerNeeds):
|
|
1440
|
-
self.
|
|
1458
|
+
self.setDiagnosticCommunicationManagerNeeds(child_element, need)
|
|
1441
1459
|
elif isinstance(need, DiagnosticRoutineNeeds):
|
|
1442
|
-
self.
|
|
1460
|
+
self.setDiagnosticRoutineNeeds(child_element, need)
|
|
1443
1461
|
elif isinstance(need, DiagnosticValueNeeds):
|
|
1444
|
-
self.
|
|
1462
|
+
self.setDiagnosticValueNeeds(child_element, need)
|
|
1445
1463
|
elif isinstance(need, DiagnosticEventNeeds):
|
|
1446
|
-
self.
|
|
1464
|
+
self.setDiagnosticEventNeeds(child_element, need)
|
|
1465
|
+
elif isinstance(need, DiagnosticEventInfoNeeds):
|
|
1466
|
+
self.setDiagnosticEventInfoNeeds(child_element, need)
|
|
1447
1467
|
elif isinstance(need, CryptoServiceNeeds):
|
|
1448
|
-
self.
|
|
1468
|
+
self.setCryptoServiceNeeds(child_element, need)
|
|
1449
1469
|
elif isinstance(need, EcuStateMgrUserNeeds):
|
|
1450
|
-
self.
|
|
1470
|
+
self.setEcuStateMgrUserNeeds(child_element, need)
|
|
1451
1471
|
else:
|
|
1452
|
-
self.
|
|
1472
|
+
self.notImplemented("Unsupported service needs <%s>" % type(need))
|
|
1453
1473
|
|
|
1454
1474
|
def writeSwcServiceDependency(self, element: ET.Element, dependency: SwcServiceDependency):
|
|
1455
1475
|
child_element = ET.SubElement(element, "SWC-SERVICE-DEPENDENCY")
|
|
@@ -1480,21 +1500,24 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1480
1500
|
for type_ref in type_refs:
|
|
1481
1501
|
self.setChildElementOptionalRefType(data_type_refs_tag, "DATA-TYPE-REF", type_ref)
|
|
1482
1502
|
|
|
1503
|
+
|
|
1483
1504
|
def writeSwcInternalBehavior(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1484
1505
|
self.logger.debug("writeSwInternalBehavior %s" % behavior.getShortName())
|
|
1485
1506
|
|
|
1486
1507
|
child_element = ET.SubElement(element, "SWC-INTERNAL-BEHAVIOR")
|
|
1487
1508
|
self.writeInternalBehavior(child_element, behavior)
|
|
1509
|
+
self.writeSwcInternalBehaviorArTypedPerInstanceMemories(child_element, behavior)
|
|
1488
1510
|
self.writeRTEEvents(child_element, behavior)
|
|
1489
1511
|
self.writeExplicitInterRunnableVariables(child_element, behavior)
|
|
1490
|
-
self.setChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART", behavior.
|
|
1512
|
+
self.setChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART", behavior.getHandleTerminationAndRestart())
|
|
1491
1513
|
self.setIncludedDataTypeSets(child_element, behavior.getIncludedDataTypeSets())
|
|
1492
1514
|
self.writePerInstanceMemories(child_element, behavior)
|
|
1493
|
-
self.
|
|
1515
|
+
self.setParameterDataPrototypes(child_element, "PER-INSTANCE-PARAMETERS", behavior.getPerInstanceParameters())
|
|
1494
1516
|
self.writePortAPIOptions(child_element, behavior)
|
|
1495
1517
|
self.writeSwcInternalBehaviorRunnableEntities(child_element, behavior)
|
|
1496
1518
|
self.writeSwcInternalBehaviorServiceDependencies(child_element, behavior)
|
|
1497
|
-
self.
|
|
1519
|
+
self.setParameterDataPrototypes(child_element, "SHARED-PARAMETERS", behavior.getSharedParameters())
|
|
1520
|
+
self.setChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION", behavior.getSupportsMultipleInstantiation())
|
|
1498
1521
|
|
|
1499
1522
|
def writeAtomicSwComponentTypeInternalBehaviors(self, element: ET.Element, behavior: InternalBehavior):
|
|
1500
1523
|
if behavior is not None:
|
|
@@ -1527,7 +1550,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1527
1550
|
def setCode(self, element: ET.SubElement, code_desc: Code):
|
|
1528
1551
|
self.logger.debug("setCode %s" % code_desc.getShortName())
|
|
1529
1552
|
child_element = ET.SubElement(element, "CODE")
|
|
1530
|
-
self.
|
|
1553
|
+
self.writeIdentifiable(child_element, code_desc)
|
|
1531
1554
|
self.writeArtifactDescriptor(child_element, code_desc)
|
|
1532
1555
|
|
|
1533
1556
|
def writeCodeDescriptors(self, element: ET.Element, impl: Implementation):
|
|
@@ -1552,7 +1575,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1552
1575
|
sections_tag = ET.SubElement(element, "MEMORY-SECTIONS")
|
|
1553
1576
|
for memory_section in memory_sections:
|
|
1554
1577
|
child_element = ET.SubElement(sections_tag, "MEMORY-SECTION")
|
|
1555
|
-
self.
|
|
1578
|
+
self.writeIdentifiable(child_element, memory_section)
|
|
1556
1579
|
self.setChildElementOptionalLiteral(child_element, "ALIGNMENT", memory_section.getAlignment())
|
|
1557
1580
|
self.setChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL", memory_section.getMemClassSymbol())
|
|
1558
1581
|
self.setMemorySectionOptions(child_element, memory_section.getOptions())
|
|
@@ -1563,7 +1586,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1563
1586
|
|
|
1564
1587
|
def setStackUsage(self, element: ET.Element, usage: StackUsage):
|
|
1565
1588
|
self.logger.debug("Write StackUsage %s" % usage.getShortName())
|
|
1566
|
-
self.
|
|
1589
|
+
self.writeIdentifiable(element, usage)
|
|
1567
1590
|
|
|
1568
1591
|
def setRoughEstimateStackUsage(self, element: ET.Element, usage: RoughEstimateStackUsage):
|
|
1569
1592
|
if usage is not None:
|
|
@@ -1583,12 +1606,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1583
1606
|
def setResourceConsumption(self, element: ET.Element, consumption: ResourceConsumption):
|
|
1584
1607
|
if consumption is not None:
|
|
1585
1608
|
child_element = ET.SubElement(element, "RESOURCE-CONSUMPTION")
|
|
1586
|
-
self.
|
|
1609
|
+
self.writeIdentifiable(child_element, consumption)
|
|
1587
1610
|
self.writeMemorySections(child_element, consumption)
|
|
1588
1611
|
self.writeStackUsages(child_element, consumption.getStackUsages())
|
|
1589
1612
|
|
|
1590
1613
|
def writeImplementation(self, element: ET.Element, impl: Implementation):
|
|
1591
|
-
self.
|
|
1614
|
+
self.writeIdentifiable(element, impl)
|
|
1592
1615
|
self.writeCodeDescriptors(element, impl)
|
|
1593
1616
|
self.setChildElementOptionalLiteral(element, "PROGRAMMING-LANGUAGE", impl.getProgrammingLanguage())
|
|
1594
1617
|
self.setResourceConsumption(element, impl.getResourceConsumption())
|
|
@@ -1651,7 +1674,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1651
1674
|
def setEndToEndProtection(self, element: ET.Element, protection: EndToEndProtection):
|
|
1652
1675
|
if protection is not None:
|
|
1653
1676
|
child_element = ET.SubElement(element, "END-TO-END-PROTECTION")
|
|
1654
|
-
self.
|
|
1677
|
+
self.writeIdentifiable(child_element, protection)
|
|
1655
1678
|
self.setEndToEndDescription(child_element, "END-TO-END-PROFILE", protection.endToEndProfile)
|
|
1656
1679
|
self.writeEndToEndProtectionVariablePrototypes(child_element, protection)
|
|
1657
1680
|
|
|
@@ -1666,7 +1689,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1666
1689
|
def writeEndToEndProtectionSet(self, element: ET.Element, protection_set: EndToEndProtectionSet):
|
|
1667
1690
|
self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.getShortName())
|
|
1668
1691
|
child_element = ET.SubElement(element, "END-TO-END-PROTECTION-SET")
|
|
1669
|
-
self.
|
|
1692
|
+
self.writeIdentifiable(child_element, protection_set)
|
|
1670
1693
|
self.writeEndToEndProtections(child_element, protection_set)
|
|
1671
1694
|
|
|
1672
1695
|
def setAutosarDataPrototype(self, element: ET.Element, prototype: AutosarDataPrototype):
|
|
@@ -1676,7 +1699,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1676
1699
|
def writeVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
|
|
1677
1700
|
self.logger.debug("writeVariableDataPrototype %s" % prototype.getShortName())
|
|
1678
1701
|
child_element = ET.SubElement(element, "VARIABLE-DATA-PROTOTYPE")
|
|
1679
|
-
self.
|
|
1702
|
+
self.writeIdentifiable(child_element, prototype)
|
|
1680
1703
|
self.setAutosarDataPrototype(child_element, prototype)
|
|
1681
1704
|
self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
|
|
1682
1705
|
|
|
@@ -1702,7 +1725,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1702
1725
|
def writeSenderReceiverInterface(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1703
1726
|
self.logger.debug("writeSenderReceiverInterface %s" % sr_interface.getShortName())
|
|
1704
1727
|
child_element = ET.SubElement(element, "SENDER-RECEIVER-INTERFACE")
|
|
1705
|
-
self.
|
|
1728
|
+
self.writeIdentifiable(child_element, sr_interface)
|
|
1706
1729
|
self.setChildElementOptionalBooleanValue(child_element, "IS-SERVICE", sr_interface.getIsService())
|
|
1707
1730
|
self.writeSenderReceiverInterfaceDataElements(child_element, sr_interface)
|
|
1708
1731
|
self.writeSenderReceiverInterfaceInvalidationPolicies(child_element, sr_interface)
|
|
@@ -1716,7 +1739,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1716
1739
|
self.setChildElementOptionalRefType(entry_tag, "BSW-MODULE-ENTRY-REF", entry)
|
|
1717
1740
|
|
|
1718
1741
|
def setModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
|
|
1719
|
-
self.
|
|
1742
|
+
self.writeIdentifiable(element, prototype)
|
|
1720
1743
|
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.type_tref)
|
|
1721
1744
|
|
|
1722
1745
|
def writeProvidedModeGroup(self, element: ET.Element, parent: BswModuleDescription):
|
|
@@ -1735,7 +1758,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1735
1758
|
self.setChildElementOptionalRefType(child_element, "CAN-ENTER-EXCLUSIVE-AREA-REF", ref)
|
|
1736
1759
|
|
|
1737
1760
|
def setExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
|
|
1738
|
-
self.
|
|
1761
|
+
self.writeIdentifiable(element, entity)
|
|
1739
1762
|
self.writeCanEnterExclusiveAreaRefs(element, entity)
|
|
1740
1763
|
self.setChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL", entity.getMinimumStartInterval())
|
|
1741
1764
|
self.setChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF", entity.getSwAddrMethodRef())
|
|
@@ -1785,7 +1808,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1785
1808
|
self.notImplemented("Unsupported BswModuleEntity <%s>" % type(entity))
|
|
1786
1809
|
|
|
1787
1810
|
def setBswEvent(self, element: ET.Element, event: BswEvent):
|
|
1788
|
-
self.
|
|
1811
|
+
self.writeIdentifiable(element, event)
|
|
1789
1812
|
self.setChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF", event.startsOnEventRef)
|
|
1790
1813
|
|
|
1791
1814
|
def setBswScheduleEvent(self, element: ET.Element, event: BswScheduleEvent):
|
|
@@ -1852,7 +1875,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1852
1875
|
def writeBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
|
|
1853
1876
|
self.logger.debug("writeBswModuleDescription %s" % desc.getShortName())
|
|
1854
1877
|
child_element = ET.SubElement(element, "BSW-MODULE-DESCRIPTION")
|
|
1855
|
-
self.
|
|
1878
|
+
self.writeIdentifiable(child_element, desc)
|
|
1856
1879
|
self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.getModuleId())
|
|
1857
1880
|
self.writerBswModuleDescriptionImplementedEntry(child_element, desc)
|
|
1858
1881
|
self.writeProvidedModeGroup(child_element, desc)
|
|
@@ -1871,7 +1894,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1871
1894
|
self.logger.debug("Set SwServiceArg <%s>" % arg.getShortName())
|
|
1872
1895
|
if arg is not None:
|
|
1873
1896
|
child_element = ET.SubElement(element, "SW-SERVICE-ARG")
|
|
1874
|
-
self.
|
|
1897
|
+
self.writeIdentifiable(child_element, arg)
|
|
1875
1898
|
self.setChildElementOptionalLiteral(child_element, "DIRECTION", arg.getDirection())
|
|
1876
1899
|
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", arg.getSwDataDefProps())
|
|
1877
1900
|
|
|
@@ -1885,7 +1908,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1885
1908
|
def writeBswModuleEntry(self, element: ET.Element, entry: BswModuleEntry):
|
|
1886
1909
|
self.logger.debug("writeBswModuleDescription %s" % entry.getShortName())
|
|
1887
1910
|
child_element = ET.SubElement(element, "BSW-MODULE-ENTRY")
|
|
1888
|
-
self.
|
|
1911
|
+
self.writeIdentifiable(child_element, entry)
|
|
1889
1912
|
self.setChildElementOptionalNumericalValue(child_element, "SERVICE-ID", entry.getServiceId())
|
|
1890
1913
|
self.setChildElementOptionalBooleanValue(child_element, "IS-REENTRANT", entry.getIsReentrant())
|
|
1891
1914
|
self.setChildElementOptionalBooleanValue(child_element, "IS-SYNCHRONOUS", entry.getIsSynchronous())
|
|
@@ -1909,10 +1932,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1909
1932
|
else:
|
|
1910
1933
|
self._raiseError("Unsupported Runnable Mapping <%s>" % type(mapping))
|
|
1911
1934
|
|
|
1912
|
-
def
|
|
1935
|
+
def writeSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
|
|
1913
1936
|
self.logger.debug("writeBswModuleDescription %s" % mapping.getShortName())
|
|
1914
1937
|
child_element = ET.SubElement(element, "SWC-BSW-MAPPING")
|
|
1915
|
-
self.
|
|
1938
|
+
self.writeIdentifiable(child_element, mapping)
|
|
1916
1939
|
self.setChildElementOptionalRefType(child_element, "BSW-BEHAVIOR-REF", mapping.getBswBehaviorRef())
|
|
1917
1940
|
self.writeSwcBswRunnableMappings(child_element, mapping)
|
|
1918
1941
|
self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.getSwcBehaviorRef())
|
|
@@ -1959,7 +1982,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1959
1982
|
sub_elements_tag = ET.SubElement(element, "SUB-ELEMENTS")
|
|
1960
1983
|
for type_element in sub_elements:
|
|
1961
1984
|
child_element = ET.SubElement(sub_elements_tag, "IMPLEMENTATION-DATA-TYPE-ELEMENT")
|
|
1962
|
-
self.
|
|
1985
|
+
self.writeIdentifiable(child_element, type_element)
|
|
1963
1986
|
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE", type_element.getArraySize())
|
|
1964
1987
|
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING", type_element.getArraySizeHandling())
|
|
1965
1988
|
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS", type_element.getArraySizeSemantics())
|
|
@@ -1980,7 +2003,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1980
2003
|
arguments_tag = ET.SubElement(element, "ARGUMENTS")
|
|
1981
2004
|
for prototype in arguments:
|
|
1982
2005
|
child_element = ET.SubElement(arguments_tag, "ARGUMENT-DATA-PROTOTYPE")
|
|
1983
|
-
self.
|
|
2006
|
+
self.writeIdentifiable(child_element, prototype)
|
|
1984
2007
|
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
|
|
1985
2008
|
self.setChildElementOptionalRefType(child_element, "TYPE-TREF", prototype.typeTRef)
|
|
1986
2009
|
self.setChildElementOptionalLiteral(child_element, "DIRECTION", prototype.direction)
|
|
@@ -1996,7 +2019,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1996
2019
|
def writeClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
|
|
1997
2020
|
self.logger.debug("writeClientServerOperation %s" % operation.getShortName())
|
|
1998
2021
|
child_element = ET.SubElement(element, "CLIENT-SERVER-OPERATION")
|
|
1999
|
-
self.
|
|
2022
|
+
self.writeIdentifiable(child_element, operation)
|
|
2000
2023
|
self.writeArgumentDataPrototypes(child_element, operation)
|
|
2001
2024
|
self.writePossibleErrorRefs(child_element, operation)
|
|
2002
2025
|
|
|
@@ -2013,7 +2036,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2013
2036
|
def writeApplicationError(self, element: ET.Element, error: ApplicationError):
|
|
2014
2037
|
self.logger.debug("writeApplicationError %s" % error.getShortName())
|
|
2015
2038
|
child_element = ET.SubElement(element, "APPLICATION-ERROR")
|
|
2016
|
-
self.
|
|
2039
|
+
self.writeIdentifiable(child_element, error)
|
|
2017
2040
|
self.setChildElementOptionalNumericalValue(child_element, "ERROR-CODE", error.error_code)
|
|
2018
2041
|
|
|
2019
2042
|
def writePossibleErrors(self, element: ET.Element, parent: ClientServerInterface):
|
|
@@ -2027,22 +2050,15 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2027
2050
|
self._raiseError("Unsupported PossibleError %s" % type(error))
|
|
2028
2051
|
|
|
2029
2052
|
def setPortInterface(self, element: ET.Element, port_interface: PortInterface):
|
|
2030
|
-
self.
|
|
2053
|
+
self.writeIdentifiable(element, port_interface)
|
|
2031
2054
|
self.setChildElementOptionalBooleanValue(element, "IS-SERVICE", port_interface.isService)
|
|
2032
2055
|
self.setChildElementOptionalLiteral(element, "SERVICE-KIND", port_interface.serviceKind)
|
|
2033
2056
|
|
|
2034
|
-
def writeParameterInterfaceParameters(self, element: ET.Element, param_interface: ParameterInterface):
|
|
2035
|
-
parameters = param_interface.getParameters()
|
|
2036
|
-
if len(parameters) > 0:
|
|
2037
|
-
child_element = ET.SubElement(element, "PARAMETERS")
|
|
2038
|
-
for prototype in parameters:
|
|
2039
|
-
self.writeParameterDataPrototype(child_element, prototype)
|
|
2040
|
-
|
|
2041
2057
|
def writeParameterInterface(self, element: ET.Element, param_interface: ParameterInterface):
|
|
2042
2058
|
self.logger.debug("Write ParameterInterface %s" % param_interface.getShortName())
|
|
2043
2059
|
child_element = ET.SubElement(element, "PARAMETER-INTERFACE")
|
|
2044
2060
|
self.setPortInterface(child_element, param_interface)
|
|
2045
|
-
self.
|
|
2061
|
+
self.setParameterDataPrototypes(child_element, "PARAMETERS", param_interface.getParameters())
|
|
2046
2062
|
|
|
2047
2063
|
def writeClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
|
|
2048
2064
|
self.logger.debug("writeClientServerInterface %s" % cs_interface.getShortName())
|
|
@@ -2079,7 +2095,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2079
2095
|
child_element = ET.SubElement(element, key)
|
|
2080
2096
|
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", layout_v.getShortLabel())
|
|
2081
2097
|
self.setChildElementOptionalRefType(child_element, "BASE-TYPE-REF", layout_v.getBaseTypeRef())
|
|
2082
|
-
self.
|
|
2098
|
+
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-AXIS", layout_v.getSwRecordLayoutVAxis())
|
|
2083
2099
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP", layout_v.getSwRecordLayoutVProp())
|
|
2084
2100
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX", layout_v.getSwRecordLayoutVIndex())
|
|
2085
2101
|
|
|
@@ -2088,7 +2104,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2088
2104
|
child_element = ET.SubElement(element, key)
|
|
2089
2105
|
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", group.getShortLabel())
|
|
2090
2106
|
self.setChildElementOptionalLiteral(child_element, "CATEGORY", group.getCategory())
|
|
2091
|
-
self.
|
|
2107
|
+
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS", group.getSwRecordLayoutGroupAxis())
|
|
2092
2108
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX", group.getSwRecordLayoutGroupIndex())
|
|
2093
2109
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM", group.getSwRecordLayoutGroupFrom())
|
|
2094
2110
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO", group.getSwRecordLayoutGroupTo())
|
|
@@ -2100,13 +2116,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2100
2116
|
def writeSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
|
|
2101
2117
|
self.logger.debug("writeSwRecordLayout %s" % layout.getShortName())
|
|
2102
2118
|
child_element = ET.SubElement(element, "SW-RECORD-LAYOUT")
|
|
2103
|
-
self.
|
|
2119
|
+
self.writeIdentifiable(child_element, layout)
|
|
2104
2120
|
self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", layout.getSwRecordLayoutGroup())
|
|
2105
2121
|
|
|
2106
2122
|
def writeSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
|
|
2107
2123
|
self.logger.debug("writeSwAddrMethod %s" % method.getShortName())
|
|
2108
2124
|
child_element = ET.SubElement(element, "SW-ADDR-METHOD")
|
|
2109
|
-
self.
|
|
2125
|
+
self.writeIdentifiable(child_element, method)
|
|
2110
2126
|
self.setChildElementOptionalLiteral(child_element, "MEMORY-ALLOCATION-KEYWORD-POLICY", method.getMemoryAllocationKeywordPolicy())
|
|
2111
2127
|
options = method.getOptions()
|
|
2112
2128
|
if len(options) > 0:
|
|
@@ -2148,13 +2164,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2148
2164
|
def writeDataTypeMappingSet(self, element: ET.Element, mapping_set: DataTypeMappingSet):
|
|
2149
2165
|
self.logger.debug("writeDataTypeMappingSet %s" % mapping_set.getShortName())
|
|
2150
2166
|
child_element = ET.SubElement(element, "DATA-TYPE-MAPPING-SET")
|
|
2151
|
-
self.
|
|
2167
|
+
self.writeIdentifiable(child_element, mapping_set)
|
|
2152
2168
|
self.writeDataTypeMaps(child_element, mapping_set)
|
|
2153
2169
|
self.writeModeRequestTypeMaps(child_element, mapping_set)
|
|
2154
2170
|
|
|
2155
2171
|
def setModeDeclaration(self, element: ET.Element, mode_declaration: ModeDeclaration):
|
|
2156
2172
|
child_element = ET.SubElement(element, "MODE-DECLARATION")
|
|
2157
|
-
self.
|
|
2173
|
+
self.writeIdentifiable(child_element, mode_declaration)
|
|
2158
2174
|
self.setChildElementOptionalNumericalValue(child_element, "VALUE", mode_declaration.getValue())
|
|
2159
2175
|
|
|
2160
2176
|
def writeModeDeclarationGroupModeDeclaration(self, element: ET.Element, parent: ModeDeclarationGroup):
|
|
@@ -2167,7 +2183,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2167
2183
|
def writeModeDeclarationGroup(self, element: ET.Element, group: ModeDeclarationGroup):
|
|
2168
2184
|
self.logger.debug("writeModeDeclarationGroup %s" % group.getShortName())
|
|
2169
2185
|
child_element = ET.SubElement(element, "MODE-DECLARATION-GROUP")
|
|
2170
|
-
self.
|
|
2186
|
+
self.writeIdentifiable(child_element, group)
|
|
2171
2187
|
self.setChildElementOptionalRefType(child_element, "INITIAL-MODE-REF", group.initialModeRef)
|
|
2172
2188
|
self.writeModeDeclarationGroupModeDeclaration(child_element, group)
|
|
2173
2189
|
self.setChildElementOptionalNumericalValue(child_element, "ON-TRANSITION-VALUE", group.getOnTransitionValue())
|
|
@@ -2177,7 +2193,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2177
2193
|
if len(mode_groups) > 0:
|
|
2178
2194
|
mode_group = mode_groups[0]
|
|
2179
2195
|
child_element = ET.SubElement(element, "MODE-GROUP")
|
|
2180
|
-
self.
|
|
2196
|
+
self.writeIdentifiable(child_element, mode_group)
|
|
2181
2197
|
self.setChildElementOptionalRefType(child_element, "TYPE-TREF", mode_group.type_tref)
|
|
2182
2198
|
|
|
2183
2199
|
def writeModeSwitchInterface(self, element: ET.Element, mode_interface: ModeSwitchInterface):
|
|
@@ -2194,7 +2210,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2194
2210
|
|
|
2195
2211
|
def writeEOCExecutableEntityRef(self, element: ET.Element, entity_ref: EOCExecutableEntityRef):
|
|
2196
2212
|
child_element = ET.SubElement(element, "EOC-EXECUTABLE-ENTITY-REF")
|
|
2197
|
-
self.
|
|
2213
|
+
self.writeIdentifiable(child_element, entity_ref)
|
|
2198
2214
|
self.setEOCExecutableEntityRefSuccessorRefs(child_element, entity_ref.getSuccessorRefs())
|
|
2199
2215
|
|
|
2200
2216
|
def writeExecutionOrderConstraintOrderedElement(self, element: ET.Element, constraint: ExecutionOrderConstraint):
|
|
@@ -2210,7 +2226,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2210
2226
|
def writeExecutionOrderConstraint(self, element: ET.Element, constraint: ExecutionOrderConstraint):
|
|
2211
2227
|
self.logger.debug("writeExecutionOrderConstraint %s" % constraint.getShortName())
|
|
2212
2228
|
child_element = ET.SubElement(element, "EXECUTION-ORDER-CONSTRAINT")
|
|
2213
|
-
self.
|
|
2229
|
+
self.writeIdentifiable(child_element, constraint)
|
|
2214
2230
|
self.writeExecutionOrderConstraintOrderedElement(child_element, constraint)
|
|
2215
2231
|
|
|
2216
2232
|
def writeTimingRequirements(self, element: ET.Element, extension: TimingExtension):
|
|
@@ -2229,7 +2245,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2229
2245
|
def writeSwcTiming(self, element: ET.Element, timing: SwcTiming):
|
|
2230
2246
|
self.logger.debug("writeSWcTiming %s" % timing.getShortName())
|
|
2231
2247
|
child_element = ET.SubElement(element, "SWC-TIMING")
|
|
2232
|
-
self.
|
|
2248
|
+
self.writeIdentifiable(child_element, timing)
|
|
2233
2249
|
self.writeTimingExtension(child_element, timing)
|
|
2234
2250
|
|
|
2235
2251
|
def writePduToFrameMappings(self, element: ET.Element, parent: Frame):
|
|
@@ -2238,13 +2254,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2238
2254
|
mappings_tags = ET.SubElement(element, "PDU-TO-FRAME-MAPPINGS")
|
|
2239
2255
|
for mapping in mappings:
|
|
2240
2256
|
child_element = ET.SubElement(mappings_tags, "PDU-TO-FRAME-MAPPING")
|
|
2241
|
-
self.
|
|
2257
|
+
self.writeIdentifiable(child_element, mapping)
|
|
2242
2258
|
self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.packingByteOrder)
|
|
2243
2259
|
self.setChildElementOptionalRefType(child_element, "PDU-REF", mapping.pduRef)
|
|
2244
2260
|
self.setChildElementOptionalNumericalValue(child_element, "START-POSITION", mapping.startPosition)
|
|
2245
2261
|
|
|
2246
2262
|
def writeFrame(self, element: ET.Element, frame: Frame):
|
|
2247
|
-
self.
|
|
2263
|
+
self.writeIdentifiable(element, frame)
|
|
2248
2264
|
self.setChildElementOptionalNumericalValue(element, "FRAME-LENGTH", frame.frameLength)
|
|
2249
2265
|
self.writePduToFrameMappings(element, frame)
|
|
2250
2266
|
|
|
@@ -2271,15 +2287,21 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2271
2287
|
self.setChildElementOptionalRefType(refs_tag, "TX-NM-PDU-REF", ref)
|
|
2272
2288
|
|
|
2273
2289
|
def writeCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
|
|
2274
|
-
self.logger.debug("
|
|
2290
|
+
self.logger.debug("write CanNmNode %s" % nm_node.getShortName())
|
|
2275
2291
|
child_element = ET.SubElement(element, "CAN-NM-NODE")
|
|
2276
|
-
self.
|
|
2292
|
+
self.writeIdentifiable(child_element, nm_node)
|
|
2277
2293
|
self.writeNmNode(child_element, nm_node)
|
|
2278
2294
|
|
|
2279
2295
|
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-CYCLE-OFFSET", nm_node.getNmMsgCycleOffset())
|
|
2280
2296
|
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-REDUCED-TIME", nm_node.getNmMsgReducedTime())
|
|
2281
2297
|
self.setChildElementRxIdentifierRange(child_element, "NM-RANGE-CONFIG", nm_node.getNmRangeConfig())
|
|
2282
2298
|
|
|
2299
|
+
def writeUdpNmNode(self, element: ET.Element, nm_node: UdpNmNode):
|
|
2300
|
+
self.logger.debug("write UdpNmNode %s" % nm_node.getShortName())
|
|
2301
|
+
child_element = ET.SubElement(element, "UDP-NM-NODE")
|
|
2302
|
+
self.writeIdentifiable(child_element, nm_node)
|
|
2303
|
+
self.writeNmNode(child_element, nm_node)
|
|
2304
|
+
|
|
2283
2305
|
def writeNmClusterNmNodes(self, element: ET.Element, parent: NmCluster):
|
|
2284
2306
|
nodes = parent.getNmNodes()
|
|
2285
2307
|
if len(nodes) > 0:
|
|
@@ -2287,10 +2309,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2287
2309
|
for node in nodes:
|
|
2288
2310
|
if isinstance(node, CanNmNode):
|
|
2289
2311
|
self.writeCanNmNode(child_element, node)
|
|
2312
|
+
elif isinstance(node, UdpNmNode):
|
|
2313
|
+
self.writeUdpNmNode(child_element, node)
|
|
2290
2314
|
else:
|
|
2291
|
-
self.
|
|
2315
|
+
self.notImplemented("Unsupported Nm Node <%s>" % type(node))
|
|
2292
2316
|
|
|
2293
|
-
def
|
|
2317
|
+
def writeCanNmClusterCoupling(self, element: ET.Element, coupling: CanNmClusterCoupling):
|
|
2294
2318
|
child_element = ET.SubElement(element, "CAN-NM-CLUSTER-COUPLING")
|
|
2295
2319
|
refs = coupling.getCoupledClusterRefs()
|
|
2296
2320
|
if len(refs) > 0:
|
|
@@ -2301,6 +2325,9 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2301
2325
|
self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ENABLED", coupling.getNmBusloadReductionEnabled())
|
|
2302
2326
|
self.setChildElementOptionalBooleanValue(child_element, "NM-IMMEDIATE-RESTART-ENABLED", coupling.getNmImmediateRestartEnabled())
|
|
2303
2327
|
|
|
2328
|
+
def writeUdpNmClusterCoupling(self, element: ET.Element, coupling: UdpNmClusterCoupling):
|
|
2329
|
+
child_element = ET.SubElement(element, "UDP-NM-CLUSTER-COUPLING")
|
|
2330
|
+
|
|
2304
2331
|
def writeNmConfigNmClusterCouplings(self, element: ET.Element, config: NmConfig):
|
|
2305
2332
|
self.logger.debug("writeNmConfigNmClusterCouplings %s" % config.getShortName())
|
|
2306
2333
|
couplings = config.getNmClusterCouplings()
|
|
@@ -2308,11 +2335,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2308
2335
|
child_element= ET.SubElement(element, "NM-CLUSTER-COUPLINGS")
|
|
2309
2336
|
for coupling in couplings:
|
|
2310
2337
|
if isinstance(coupling, CanNmClusterCoupling):
|
|
2311
|
-
self.
|
|
2338
|
+
self.writeCanNmClusterCoupling(child_element, coupling)
|
|
2339
|
+
elif isinstance(coupling, UdpNmClusterCoupling):
|
|
2340
|
+
self.writeUdpNmClusterCoupling(child_element, coupling)
|
|
2312
2341
|
else:
|
|
2313
|
-
self.
|
|
2342
|
+
self.notImplemented("Unsupported Nm Cluster Coupling <%s>" % type(coupling))
|
|
2314
2343
|
|
|
2315
2344
|
def writeNmCluster(self, element: ET.Element, cluster: NmCluster):
|
|
2345
|
+
self.writeIdentifiable(element, cluster)
|
|
2316
2346
|
self.setChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF", cluster.communicationClusterRef)
|
|
2317
2347
|
self.setChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID", cluster.nmChannelId)
|
|
2318
2348
|
self.setChildElementOptionalBooleanValue(element, "NM-CHANNEL-SLEEP-MASTER", cluster.nmChannelSleepMaster)
|
|
@@ -2322,7 +2352,6 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2322
2352
|
def writeCanNmCluster(self, element: ET.Element, cluster: CanNmCluster):
|
|
2323
2353
|
self.logger.debug("WriteCanNmCluster %s" % cluster.getShortName())
|
|
2324
2354
|
child_element = ET.SubElement(element, "CAN-NM-CLUSTER")
|
|
2325
|
-
self.setIdentifiable(child_element, cluster)
|
|
2326
2355
|
self.writeNmCluster(child_element, cluster)
|
|
2327
2356
|
|
|
2328
2357
|
self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ACTIVE", cluster.getNmBusloadReductionActive())
|
|
@@ -2340,6 +2369,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2340
2369
|
self.setChildElementOptionalNumericalValue(child_element, "NM-USER-DATA-LENGTH", cluster.getNmUserDataLength())
|
|
2341
2370
|
self.setChildElementOptionalFloatValue(child_element, "NM-WAIT-BUS-SLEEP-TIME", cluster.getNmWaitBusSleepTime())
|
|
2342
2371
|
|
|
2372
|
+
def writeUdpNmCluster(self, element: ET.Element, cluster: CanNmCluster):
|
|
2373
|
+
self.logger.debug("Write UdpNmCluster %s" % cluster.getShortName())
|
|
2374
|
+
child_element = ET.SubElement(element, "UDP-NM-CLUSTER")
|
|
2375
|
+
self.writeNmCluster(child_element, cluster)
|
|
2376
|
+
|
|
2343
2377
|
def writeNmConfigNmClusters(self, element: ET.Element, parent: NmConfig):
|
|
2344
2378
|
clusters = parent.getNmClusters()
|
|
2345
2379
|
if len(clusters) > 0:
|
|
@@ -2347,26 +2381,28 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2347
2381
|
for cluster in clusters:
|
|
2348
2382
|
if isinstance(cluster, CanNmCluster):
|
|
2349
2383
|
self.writeCanNmCluster(child_element, cluster)
|
|
2384
|
+
elif isinstance(cluster, UdpNmCluster):
|
|
2385
|
+
self.writeUdpNmCluster(child_element, cluster)
|
|
2350
2386
|
else:
|
|
2351
|
-
self.
|
|
2387
|
+
self.notImplemented("Unsupported Nm Cluster <%s>" % type(cluster))
|
|
2352
2388
|
|
|
2353
2389
|
def writeNmConfig(self, element: ET.Element, config: NmConfig):
|
|
2354
2390
|
self.logger.debug("WriteNmConfig %s" % config.getShortName())
|
|
2355
2391
|
child_element = ET.SubElement(element, "NM-CONFIG")
|
|
2356
|
-
self.
|
|
2392
|
+
self.writeIdentifiable(child_element, config)
|
|
2357
2393
|
self.writeNmConfigNmClusters(child_element, config)
|
|
2358
2394
|
self.writeNmConfigNmClusterCouplings(child_element, config)
|
|
2359
2395
|
|
|
2360
2396
|
def writeNmPdu(self, element: ET.Element, pdu: NmPdu):
|
|
2361
2397
|
self.logger.debug("NmPdu %s" % pdu.getShortName())
|
|
2362
2398
|
child_element = ET.SubElement(element, "NM-PDU")
|
|
2363
|
-
self.
|
|
2399
|
+
self.writeIdentifiable(child_element, pdu)
|
|
2364
2400
|
self.writeIPdu(child_element, pdu)
|
|
2365
2401
|
|
|
2366
2402
|
def writeNPdu(self, element: ET.Element, pdu: NPdu):
|
|
2367
2403
|
self.logger.debug("NPdu %s" % pdu.getShortName())
|
|
2368
2404
|
child_element = ET.SubElement(element, "N-PDU")
|
|
2369
|
-
self.
|
|
2405
|
+
self.writeIdentifiable(child_element, pdu)
|
|
2370
2406
|
self.writeIPdu(child_element, pdu)
|
|
2371
2407
|
|
|
2372
2408
|
def writeIPdu(self, element: ET.Element, pdu: IPdu):
|
|
@@ -2375,20 +2411,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2375
2411
|
def writeDcmIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
2376
2412
|
self.logger.debug("DcmIPdu %s" % pdu.getShortName())
|
|
2377
2413
|
child_element = ET.SubElement(element, "DCM-I-PDU")
|
|
2378
|
-
self.
|
|
2414
|
+
self.writeIdentifiable(child_element, pdu)
|
|
2379
2415
|
self.writeIPdu(child_element, pdu)
|
|
2380
2416
|
self.setChildElementOptionalLiteral(child_element, "DIAG-PDU-TYPE", pdu.getDiagPduType())
|
|
2381
2417
|
|
|
2382
2418
|
def writeSecuredIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
2383
2419
|
self.logger.debug("SecuredIPdu %s" % pdu.getShortName())
|
|
2384
2420
|
child_element = ET.SubElement(element, "SECURED-I-PDU")
|
|
2385
|
-
self.
|
|
2421
|
+
self.writeIdentifiable(child_element, pdu)
|
|
2386
2422
|
self.writeIPdu(child_element, pdu)
|
|
2387
2423
|
|
|
2388
2424
|
def writeCanTpConfig(self, element: ET.Element, config: CanTpConfig):
|
|
2389
2425
|
self.logger.debug("CanTpConfig %s" % config.getShortName())
|
|
2390
2426
|
child_element = ET.SubElement(element, "CAN-TP-CONFIG")
|
|
2391
|
-
self.
|
|
2427
|
+
self.writeIdentifiable(child_element, config)
|
|
2392
2428
|
|
|
2393
2429
|
def writeFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
|
|
2394
2430
|
ref_list = triggering.getFramePortRefs()
|
|
@@ -2408,7 +2444,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2408
2444
|
def writeCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
|
|
2409
2445
|
self.logger.debug("WRite CanFrameTriggering %s" % triggering.getShortName())
|
|
2410
2446
|
child_element = ET.SubElement(element, "CAN-FRAME-TRIGGERING")
|
|
2411
|
-
self.
|
|
2447
|
+
self.writeIdentifiable(child_element, triggering)
|
|
2412
2448
|
self.writeFrameTriggering(child_element, triggering)
|
|
2413
2449
|
self.setChildElementOptionalLiteral(child_element, "CAN-ADDRESSING-MODE", triggering.getCanAddressingMode())
|
|
2414
2450
|
self.setChildElementOptionalBooleanValue(child_element, "CAN-FD-FRAME-SUPPORT", triggering.getCanFdFrameSupport())
|
|
@@ -2420,7 +2456,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2420
2456
|
def writeLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
|
|
2421
2457
|
self.logger.debug("Write LinFrameTriggering %s" % triggering.getShortName())
|
|
2422
2458
|
child_element = ET.SubElement(element, "LIN-FRAME-TRIGGERING")
|
|
2423
|
-
self.
|
|
2459
|
+
self.writeIdentifiable(child_element, triggering)
|
|
2424
2460
|
self.writeFrameTriggering(child_element, triggering)
|
|
2425
2461
|
self.setChildElementOptionalNumericalValue(child_element, "IDENTIFIER", triggering.getIdentifier())
|
|
2426
2462
|
self.setChildElementOptionalLiteral(child_element, "LIN-CHECKSUM", triggering.getLinChecksum())
|
|
@@ -2428,7 +2464,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2428
2464
|
def writeISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
|
|
2429
2465
|
self.logger.debug("Write ISignalTriggering %s" % triggering.getShortName())
|
|
2430
2466
|
child_element = ET.SubElement(element, "I-SIGNAL-TRIGGERING")
|
|
2431
|
-
self.
|
|
2467
|
+
self.writeIdentifiable(child_element, triggering)
|
|
2432
2468
|
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", triggering.getISignalGroupRef())
|
|
2433
2469
|
ref_list = triggering.getISignalPortRefs()
|
|
2434
2470
|
if len(ref_list) > 0:
|
|
@@ -2440,7 +2476,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2440
2476
|
def writePduTriggering(self, element: ET.Element, triggering: PduTriggering):
|
|
2441
2477
|
self.logger.debug("Write PduTriggering %s" % triggering.getShortName())
|
|
2442
2478
|
child_element = ET.SubElement(element, "PDU-TRIGGERING")
|
|
2443
|
-
self.
|
|
2479
|
+
self.writeIdentifiable(child_element, triggering)
|
|
2444
2480
|
ref_list = triggering.getIPduPortRefs()
|
|
2445
2481
|
if len(ref_list) > 0:
|
|
2446
2482
|
i_signal_port_refs_tag = ET.SubElement(child_element, "I-PDU-PORT-REFS")
|
|
@@ -2493,16 +2529,317 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2493
2529
|
self.notImplemented("Unsupported PduTriggering <%s>" % type(triggering))
|
|
2494
2530
|
|
|
2495
2531
|
def writeCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
|
|
2496
|
-
self.logger.debug("CanPhysicalChannel %s" % channel.getShortName())
|
|
2532
|
+
self.logger.debug("Set CanPhysicalChannel %s" % channel.getShortName())
|
|
2497
2533
|
child_element = ET.SubElement(element, "CAN-PHYSICAL-CHANNEL")
|
|
2498
|
-
self.
|
|
2534
|
+
self.writeIdentifiable(child_element, channel)
|
|
2499
2535
|
self.writePhysicalChannel(child_element, channel)
|
|
2500
2536
|
|
|
2537
|
+
def writeScheduleTableEntry(self, element: ET.Element, entry: ScheduleTableEntry):
|
|
2538
|
+
self.setChildElementOptionalTimeValue(element, "DELAY", entry.getDelay())
|
|
2539
|
+
self.setChildElementOptionalIntegerValue(element, "POSITION-IN-TABLE", entry.getPositionInTable())
|
|
2540
|
+
|
|
2541
|
+
def setApplicationEntry(self, element: ET.Element, key: str, entry: ApplicationEntry):
|
|
2542
|
+
if entry is not None:
|
|
2543
|
+
child_element = ET.SubElement(element, key)
|
|
2544
|
+
self.writeScheduleTableEntry(child_element, entry)
|
|
2545
|
+
self.setChildElementOptionalRefType(child_element, "FRAME-TRIGGERING-REF", entry.getFrameTriggeringRef())
|
|
2546
|
+
|
|
2547
|
+
def writeLinScheduleTableTableEntries(self, element: ET.Element, table: LinScheduleTable):
|
|
2548
|
+
entries = table.getTableEntries()
|
|
2549
|
+
if len(entries) > 0:
|
|
2550
|
+
child_element = ET.SubElement(element, "TABLE-ENTRYS")
|
|
2551
|
+
for entry in entries:
|
|
2552
|
+
if isinstance(entry, ApplicationEntry):
|
|
2553
|
+
self.setApplicationEntry(child_element, "APPLICATION-ENTRY", entry)
|
|
2554
|
+
else:
|
|
2555
|
+
self.notImplemented("Unsupported Schedule Table <%s>" % type(entry))
|
|
2556
|
+
|
|
2557
|
+
def writeLinScheduleTable(self, element: ET.Element, table: LinScheduleTable):
|
|
2558
|
+
child_element = ET.SubElement(element, "LIN-SCHEDULE-TABLE")
|
|
2559
|
+
self.writeIdentifiable(child_element, table)
|
|
2560
|
+
self.setChildElementOptionalLiteral(child_element, "RESUME-POSITION", table.getResumePosition())
|
|
2561
|
+
self.setChildElementOptionalLiteral(child_element, "RUN-MODE", table.getRunMode())
|
|
2562
|
+
self.writeLinScheduleTableTableEntries(child_element, table)
|
|
2563
|
+
|
|
2564
|
+
def writeLinPhysicalChannelScheduleTables(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2565
|
+
tables = channel.getScheduleTables()
|
|
2566
|
+
if len(tables) > 0:
|
|
2567
|
+
child_element = ET.SubElement(element, "SCHEDULE-TABLES")
|
|
2568
|
+
for table in tables:
|
|
2569
|
+
if isinstance(table, LinScheduleTable):
|
|
2570
|
+
self.writeLinScheduleTable(child_element, table)
|
|
2571
|
+
else:
|
|
2572
|
+
self.notImplemented("Unsupported Schedule Table <%s>" % type(table))
|
|
2573
|
+
|
|
2501
2574
|
def writeLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2502
|
-
self.logger.debug("LinPhysicalChannel %s" % channel.getShortName())
|
|
2575
|
+
self.logger.debug("Set LinPhysicalChannel %s" % channel.getShortName())
|
|
2503
2576
|
child_element = ET.SubElement(element, "LIN-PHYSICAL-CHANNEL")
|
|
2504
|
-
self.
|
|
2577
|
+
self.writeIdentifiable(child_element, channel)
|
|
2505
2578
|
self.writePhysicalChannel(child_element, channel)
|
|
2579
|
+
self.writeLinPhysicalChannelScheduleTables(child_element, channel)
|
|
2580
|
+
|
|
2581
|
+
def setIpv6Configuration(self, element: ET.Element, configuration: Ipv6Configuration):
|
|
2582
|
+
if configuration is not None:
|
|
2583
|
+
child_element = ET.SubElement(element, "IPV-6-CONFIGURATION")
|
|
2584
|
+
self.setChildElementOptionalPositiveInteger(child_element, "ASSIGNMENT-PRIORITY", configuration.getAssignmentPriority())
|
|
2585
|
+
self.setChildElementOptionalLiteral(child_element, "DEFAULT-ROUTER", configuration.getDefaultRouter())
|
|
2586
|
+
self.setChildElementOptionalBooleanValue(child_element, "ENABLE-ANYCAST", configuration.getEnableAnycast())
|
|
2587
|
+
self.setChildElementOptionalPositiveInteger(child_element, "HOP-COUNT", configuration.getHopCount())
|
|
2588
|
+
self.setChildElementOptionalPositiveInteger(child_element, "IP-ADDRESS-PREFIX-LENGTH", configuration.getIpAddressPrefixLength())
|
|
2589
|
+
self.setChildElementOptionalLiteral(child_element, "IPV-6-ADDRESS", configuration.getIpv6Address())
|
|
2590
|
+
self.setChildElementOptionalLiteral(child_element, "IPV-6-ADDRESS-SOURCE", configuration.getIpv6AddressSource())
|
|
2591
|
+
|
|
2592
|
+
def writeNetworkEndPointNetworkEndPointAddresses(self, element: ET.Element, addresses: List[NetworkEndpointAddress]):
|
|
2593
|
+
if len(addresses) > 0:
|
|
2594
|
+
child_element = ET.SubElement(element, "NETWORK-ENDPOINT-ADDRESSES")
|
|
2595
|
+
for address in addresses:
|
|
2596
|
+
if isinstance(address, Ipv6Configuration):
|
|
2597
|
+
self.setIpv6Configuration(child_element, address)
|
|
2598
|
+
else:
|
|
2599
|
+
self.notImplemented("Unsupported Network EndPoint Address <%s>" % type(address))
|
|
2600
|
+
|
|
2601
|
+
def setDoIpEntity(self, element: ET.Element, key: str, entity: DoIpEntity):
|
|
2602
|
+
if entity is not None:
|
|
2603
|
+
child_element = ET.SubElement(element, key)
|
|
2604
|
+
self.setChildElementOptionalLiteral(child_element, "DO-IP-ENTITY-ROLE", entity.getDoIpEntityRole())
|
|
2605
|
+
|
|
2606
|
+
def setInfrastructureServices(self, element: ET.Element, key: str, services: InfrastructureServices):
|
|
2607
|
+
if services is not None:
|
|
2608
|
+
child_element = ET.SubElement(element, key)
|
|
2609
|
+
self.setDoIpEntity(child_element, "DO-IP-ENTITY", services.getDoIpEntity())
|
|
2610
|
+
|
|
2611
|
+
def writeNetworkEndPoint(self, element: ET.Element, end_point: NetworkEndpoint):
|
|
2612
|
+
self.logger.debug("Set NetworkEndpoint %s" % end_point.getShortName())
|
|
2613
|
+
child_element = ET.SubElement(element, "NETWORK-ENDPOINT")
|
|
2614
|
+
self.writeIdentifiable(child_element, end_point)
|
|
2615
|
+
self.setInfrastructureServices(child_element, "INFRASTRUCTURE-SERVICES", end_point.getInfrastructureServices())
|
|
2616
|
+
self.writeNetworkEndPointNetworkEndPointAddresses(child_element, end_point.getNetworkEndpointAddresses())
|
|
2617
|
+
self.setChildElementOptionalPositiveInteger(child_element, "PRIORITY", end_point.getPriority())
|
|
2618
|
+
|
|
2619
|
+
def writeEthernetPhysicalChannelNetworkEndPoints(self, element: ET.Element, end_points: List[NetworkEndpoint]):
|
|
2620
|
+
if len(end_points) > 0:
|
|
2621
|
+
child_element = ET.SubElement(element, "NETWORK-ENDPOINTS")
|
|
2622
|
+
for end_point in end_points:
|
|
2623
|
+
self.writeNetworkEndPoint(child_element, end_point)
|
|
2624
|
+
|
|
2625
|
+
def setSocketConnectionIpduIdentifier(self, element: ET.Element,identifier: SocketConnectionIpduIdentifier):
|
|
2626
|
+
if identifier is not None:
|
|
2627
|
+
child_element = ET.SubElement(element, "SOCKET-CONNECTION-IPDU-IDENTIFIER")
|
|
2628
|
+
self.setChildElementOptionalPositiveInteger(child_element, "HEADER-ID", identifier.getHeaderId())
|
|
2629
|
+
self.setChildElementOptionalLiteral(child_element, "PDU-COLLECTION-SEMANTICS", identifier.getPduCollectionSemantics())
|
|
2630
|
+
self.setChildElementOptionalLiteral(child_element, "PDU-COLLECTION-TRIGGER", identifier.getPduCollectionTrigger())
|
|
2631
|
+
self.setChildElementOptionalRefType(child_element, "PDU-REF", identifier.getPduRef())
|
|
2632
|
+
self.setChildElementOptionalRefType(child_element, "PDU-TRIGGERING-REF", identifier.getPduTriggeringRef())
|
|
2633
|
+
|
|
2634
|
+
def setSocketConnectionPdus(self, element: ET.Element, key: str, pdus: List[SocketConnectionIpduIdentifier]):
|
|
2635
|
+
if len(pdus) > 0:
|
|
2636
|
+
child_element = ET.SubElement(element, key)
|
|
2637
|
+
for pdu in pdus:
|
|
2638
|
+
if isinstance(pdu, SocketConnectionIpduIdentifier):
|
|
2639
|
+
self.setSocketConnectionIpduIdentifier(child_element, pdu)
|
|
2640
|
+
else:
|
|
2641
|
+
self.notImplemented("Unsupported Pdu <%s>" % type(pdu))
|
|
2642
|
+
|
|
2643
|
+
def setSocketConnection(self, element: ET.Element, connection: SocketConnection):
|
|
2644
|
+
if connection is not None:
|
|
2645
|
+
child_element = ET.SubElement(element, "SOCKET-CONNECTION")
|
|
2646
|
+
self.setChildElementOptionalBooleanValue(child_element, "CLIENT-IP-ADDR-FROM-CONNECTION-REQUEST", connection.getClientIpAddrFromConnectionRequest())
|
|
2647
|
+
self.setChildElementOptionalBooleanValue(child_element, "CLIENT-PORT-FROM-CONNECTION-REQUEST", connection.getClientPortFromConnectionRequest())
|
|
2648
|
+
self.setChildElementOptionalRefType(child_element, "CLIENT-PORT-REF", connection.getClientPortRef())
|
|
2649
|
+
self.setSocketConnectionPdus(child_element, "PDUS", connection.getPdus())
|
|
2650
|
+
self.setChildElementOptionalPositiveInteger(child_element, "PDU-COLLECTION-MAX-BUFFER-SIZE", connection.getPduCollectionMaxBufferSize())
|
|
2651
|
+
self.setChildElementOptionalTimeValue(child_element, "PDU-COLLECTION-TIMEOUT", connection.getPduCollectionTimeout())
|
|
2652
|
+
self.setChildElementOptionalLiteral(child_element, "RUNTIME-IP-ADDRESS-CONFIGURATION", connection.getRuntimeIpAddressConfiguration())
|
|
2653
|
+
self.setChildElementOptionalLiteral(child_element, "RUNTIME-PORT-CONFIGURATION", connection.getRuntimePortConfiguration())
|
|
2654
|
+
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", connection.getShortLabel())
|
|
2655
|
+
|
|
2656
|
+
def writeSocketConnectionBundleConnections(self, element: ET.Element, bundle: SocketConnectionBundle):
|
|
2657
|
+
connections = bundle.getBundledConnections()
|
|
2658
|
+
if len(connections) > 0:
|
|
2659
|
+
child_element = ET.SubElement(element, "BUNDLED-CONNECTIONS")
|
|
2660
|
+
for connection in connections:
|
|
2661
|
+
if isinstance(connection, SocketConnection):
|
|
2662
|
+
self.setSocketConnection(child_element, connection)
|
|
2663
|
+
else:
|
|
2664
|
+
self.notImplemented("Unsupported Bundled Connection <%s>" % type(connection))
|
|
2665
|
+
|
|
2666
|
+
def writeSocketConnectionBundle(self, element: ET.Element, bundle: SocketConnectionBundle):
|
|
2667
|
+
if bundle is not None:
|
|
2668
|
+
child_element = ET.SubElement(element, "SOCKET-CONNECTION-BUNDLE")
|
|
2669
|
+
self.setReferable(child_element, bundle)
|
|
2670
|
+
self.writeSocketConnectionBundleConnections(child_element, bundle)
|
|
2671
|
+
self.setChildElementOptionalRefType(child_element, "SERVER-PORT-REF", bundle.getServerPortRef())
|
|
2672
|
+
|
|
2673
|
+
def writeSoAdConfigConnectionBundles(self, element: ET.Element, config: SoAdConfig):
|
|
2674
|
+
bundles = config.getConnectionBundles()
|
|
2675
|
+
if len(bundles) > 0:
|
|
2676
|
+
child_element = ET.SubElement(element, "CONNECTION-BUNDLES")
|
|
2677
|
+
for bundle in bundles:
|
|
2678
|
+
if isinstance(bundle, SocketConnectionBundle):
|
|
2679
|
+
self.writeSocketConnectionBundle(child_element, bundle)
|
|
2680
|
+
else:
|
|
2681
|
+
self.notImplemented("Unsupported Connection Bundle <%s>" % type(bundle))
|
|
2682
|
+
|
|
2683
|
+
def setTpPort(self, element: ET.SubElement, key: str, port: TpPort):
|
|
2684
|
+
if port is not None:
|
|
2685
|
+
child_element = ET.SubElement(element, key)
|
|
2686
|
+
self.setChildElementOptionalBooleanValue(child_element, "DYNAMICALLY-ASSIGNED", port.getDynamicallyAssigned())
|
|
2687
|
+
self.setChildElementOptionalPositiveInteger(child_element, "PORT-NUMBER", port.getPortNumber())
|
|
2688
|
+
|
|
2689
|
+
def writeUdpTp(self, element: ET.Element, tp: UdpTp):
|
|
2690
|
+
child_element = ET.SubElement(element, "UDP-TP")
|
|
2691
|
+
self.setTpPort(child_element, "UDP-TP-PORT", tp.getUdpTpPort())
|
|
2692
|
+
|
|
2693
|
+
def writeTcpTp(self, element: ET.Element, tp: TcpTp):
|
|
2694
|
+
child_element = ET.SubElement(element, "TCP-TP")
|
|
2695
|
+
self.setChildElementOptionalTimeValue(child_element, "KEEP-ALIVE-INTERVAL", tp.getKeepAliveInterval())
|
|
2696
|
+
self.setChildElementOptionalPositiveInteger(child_element, "KEEP-ALIVE-PROBES-MAX", tp.getKeepAliveProbesMax())
|
|
2697
|
+
self.setChildElementOptionalTimeValue(child_element, "KEEP-ALIVE-TIME", tp.getKeepAliveTime())
|
|
2698
|
+
self.setChildElementOptionalBooleanValue(child_element, "KEEP-ALIVES", tp.getKeepAlives())
|
|
2699
|
+
self.setChildElementOptionalLiteral(child_element, "NAGLES-ALGORITHM", tp.getNaglesAlgorithm())
|
|
2700
|
+
self.setTpPort(child_element, "TCP-TP-PORT", tp.getTcpTpPort())
|
|
2701
|
+
|
|
2702
|
+
def writeGenericTp(self, element: ET.Element, tp: GenericTp):
|
|
2703
|
+
child_element = ET.SubElement(element, "GENERIC-TP")
|
|
2704
|
+
self.setChildElementOptionalLiteral(child_element, "TP-ADDRESS", tp.getTpAddress())
|
|
2705
|
+
self.setChildElementOptionalLiteral(child_element, "TP-TECHNOLOGY", tp.getTpTechnology())
|
|
2706
|
+
|
|
2707
|
+
def writeTransportProtocolConfiguration(self, element: ET.Element, configuration: TransportProtocolConfiguration):
|
|
2708
|
+
if configuration is not None:
|
|
2709
|
+
child_element = ET.SubElement(element, "TP-CONFIGURATION")
|
|
2710
|
+
if isinstance(configuration, UdpTp):
|
|
2711
|
+
self.writeUdpTp(child_element, configuration)
|
|
2712
|
+
elif isinstance(configuration, TcpTp):
|
|
2713
|
+
self.writeTcpTp(child_element, configuration)
|
|
2714
|
+
elif isinstance(configuration, GenericTp):
|
|
2715
|
+
self.writeGenericTp(child_element, configuration)
|
|
2716
|
+
else:
|
|
2717
|
+
self.notImplemented("Unsupported TransportProtocolConfiguration <%s>" % type(configuration))
|
|
2718
|
+
|
|
2719
|
+
return configuration
|
|
2720
|
+
|
|
2721
|
+
def writeConsumedEventGroupRoutingGroupRefs(self, element: ET.Element, group: ConsumedEventGroup):
|
|
2722
|
+
refs = group.getRoutingGroupRefs()
|
|
2723
|
+
if len(refs) > 0:
|
|
2724
|
+
child_element = ET.SubElement(element, "ROUTING-GROUP-REFS")
|
|
2725
|
+
for ref in refs:
|
|
2726
|
+
self.setChildElementOptionalRefType(child_element, "ROUTING-GROUP-REF", ref)
|
|
2727
|
+
|
|
2728
|
+
def setRequestResponseDelay(self, element: ET.Element, key: str, delay: RequestResponseDelay):
|
|
2729
|
+
if delay is not None:
|
|
2730
|
+
child_element = ET.SubElement(element, key)
|
|
2731
|
+
self.setChildElementOptionalTimeValue(child_element, "MAX-VALUE", delay.getMaxValue())
|
|
2732
|
+
self.setChildElementOptionalTimeValue(child_element, "MIN-VALUE", delay.getMinValue())
|
|
2733
|
+
|
|
2734
|
+
def setInitialSdDelayConfig(self, element: ET.Element, key: str, config: InitialSdDelayConfig):
|
|
2735
|
+
if config is not None:
|
|
2736
|
+
child_element = ET.SubElement(element, key)
|
|
2737
|
+
self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE", config.getInitialDelayMaxValue())
|
|
2738
|
+
self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE", config.getInitialDelayMinValue())
|
|
2739
|
+
self.setChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY", config.getInitialRepetitionsBaseDelay())
|
|
2740
|
+
self.setChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX", config.getInitialRepetitionsMax())
|
|
2741
|
+
|
|
2742
|
+
def setSdClientConfig(self, element: ET.Element, key: str, config: SdClientConfig):
|
|
2743
|
+
if config is not None:
|
|
2744
|
+
child_element = ET.SubElement(element, key)
|
|
2745
|
+
|
|
2746
|
+
self.setChildElementOptionalPositiveInteger(child_element, "CLIENT-SERVICE-MAJOR-VERSION", config.getClientServiceMajorVersion())
|
|
2747
|
+
self.setChildElementOptionalPositiveInteger(child_element, "CLIENT-SERVICE-MINOR-VERSION", config.getClientServiceMinorVersion())
|
|
2748
|
+
self.setInitialSdDelayConfig(child_element, "INITIAL-FIND-BEHAVIOR", config.getInitialFindBehavior())
|
|
2749
|
+
self.setRequestResponseDelay(child_element, "REQUEST-RESPONSE-DELAY", config.getRequestResponseDelay())
|
|
2750
|
+
self.setChildElementOptionalPositiveInteger(child_element, "TTL", config.getTtl())
|
|
2751
|
+
|
|
2752
|
+
def writeConsumedEventGroup(self, element: ET.Element, group: ConsumedEventGroup):
|
|
2753
|
+
child_element = ET.SubElement(element, "CONSUMED-EVENT-GROUP")
|
|
2754
|
+
self.writeIdentifiable(child_element, group)
|
|
2755
|
+
self.setChildElementOptionalRefType(child_element, "APPLICATION-ENDPOINT-REF", group.getApplicationEndpointRef())
|
|
2756
|
+
self.setChildElementOptionalPositiveInteger(child_element, "EVENT-GROUP-IDENTIFIER", group.getEventGroupIdentifier())
|
|
2757
|
+
self.writeConsumedEventGroupRoutingGroupRefs(child_element, group)
|
|
2758
|
+
self.setSdClientConfig(child_element, "SD-CLIENT-CONFIG", group.getSdClientConfig())
|
|
2759
|
+
|
|
2760
|
+
def writeConsumedServiceInstanceConsumedEventGroups(self, element: ET.Element, instance: ConsumedServiceInstance):
|
|
2761
|
+
groups = instance.getConsumedEventGroups()
|
|
2762
|
+
if len(groups) > 0:
|
|
2763
|
+
child_element = ET.SubElement(element, "CONSUMED-EVENT-GROUPS")
|
|
2764
|
+
for group in groups:
|
|
2765
|
+
if isinstance(group, ConsumedEventGroup):
|
|
2766
|
+
self.writeConsumedEventGroup(child_element, group)
|
|
2767
|
+
else:
|
|
2768
|
+
self.notImplemented("Unsupported ConsumedEventGroups <%s>" % type(group))
|
|
2769
|
+
|
|
2770
|
+
def writeConsumedServiceInstance(self, element: ET.Element, instance: ConsumedServiceInstance):
|
|
2771
|
+
child_element = ET.SubElement(element, "CONSUMED-SERVICE-INSTANCE")
|
|
2772
|
+
self.writeIdentifiable(child_element, instance)
|
|
2773
|
+
self.writeConsumedServiceInstanceConsumedEventGroups(child_element, instance)
|
|
2774
|
+
self.setChildElementOptionalRefType(child_element, "PROVIDED-SERVICE-INSTANCE-REF", instance.getProvidedServiceInstanceRef())
|
|
2775
|
+
self.setSdClientConfig(child_element, "SD-CLIENT-CONFIG", instance.getSdClientConfig())
|
|
2776
|
+
|
|
2777
|
+
def writeSocketAddressApplicationEndpointConsumedServiceInstances(self, element: ET.Element, end_point: ApplicationEndpoint):
|
|
2778
|
+
instances = end_point.getConsumedServiceInstances()
|
|
2779
|
+
if len(instances) > 0:
|
|
2780
|
+
child_element = ET.SubElement(element, "CONSUMED-SERVICE-INSTANCES")
|
|
2781
|
+
for instance in instances:
|
|
2782
|
+
if isinstance(instance, ConsumedServiceInstance):
|
|
2783
|
+
self.writeConsumedServiceInstance(child_element, instance)
|
|
2784
|
+
else:
|
|
2785
|
+
self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % type(instance))
|
|
2786
|
+
|
|
2787
|
+
def writeSocketAddressApplicationEndpoint(self, element: ET.Element, address: SocketAddress):
|
|
2788
|
+
end_point = address.getApplicationEndpoint()
|
|
2789
|
+
if end_point is not None:
|
|
2790
|
+
child_element = ET.SubElement(element, "APPLICATION-ENDPOINT")
|
|
2791
|
+
self.writeIdentifiable(child_element, end_point)
|
|
2792
|
+
self.writeSocketAddressApplicationEndpointConsumedServiceInstances(child_element, end_point)
|
|
2793
|
+
self.setChildElementOptionalRefType(child_element, "NETWORK-ENDPOINT-REF", end_point.getNetworkEndpointRef())
|
|
2794
|
+
self.setChildElementOptionalPositiveInteger(child_element, "PRIORITY", end_point.getPriority())
|
|
2795
|
+
self.writeTransportProtocolConfiguration(child_element, end_point.getTpConfiguration())
|
|
2796
|
+
|
|
2797
|
+
def writeSocketAddressMulticastConnectorRefs(self, element: ET.Element, address: SocketAddress):
|
|
2798
|
+
refs = address.getMulticastConnectorRefs()
|
|
2799
|
+
if len(refs) > 0:
|
|
2800
|
+
child_element = ET.SubElement(element, "MULTICAST-CONNECTOR-REFS")
|
|
2801
|
+
for ref in refs:
|
|
2802
|
+
self.setChildElementOptionalRefType(child_element, "MULTICAST-CONNECTOR-REF", ref)
|
|
2803
|
+
|
|
2804
|
+
def writeSocketAddress(self, element: ET.Element, address: SocketAddress):
|
|
2805
|
+
child_element = ET.SubElement(element, "SOCKET-ADDRESS")
|
|
2806
|
+
self.writeIdentifiable(child_element, address)
|
|
2807
|
+
self.writeSocketAddressApplicationEndpoint(child_element, address)
|
|
2808
|
+
self.writeSocketAddressMulticastConnectorRefs(child_element, address)
|
|
2809
|
+
self.setChildElementOptionalRefType(child_element, "CONNECTOR-REF", address.getConnectorRef())
|
|
2810
|
+
self.setChildElementOptionalPositiveInteger(child_element, "PORT-ADDRESS", address.getPortAddress())
|
|
2811
|
+
|
|
2812
|
+
def writeSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
|
|
2813
|
+
addresses = config.getSocketAddresses()
|
|
2814
|
+
if len(addresses) > 0:
|
|
2815
|
+
child_element = ET.SubElement(element, "SOCKET-ADDRESSS")
|
|
2816
|
+
for address in addresses:
|
|
2817
|
+
if isinstance(address, SocketAddress):
|
|
2818
|
+
self.writeSocketAddress(child_element, address)
|
|
2819
|
+
else:
|
|
2820
|
+
self.notImplemented("Unsupported Socket Address <%s>" % type(address))
|
|
2821
|
+
|
|
2822
|
+
def writeSoAdConfig(self, element: ET.Element, key: str, config: SoAdConfig):
|
|
2823
|
+
if config is not None:
|
|
2824
|
+
child_element = ET.SubElement(element, key)
|
|
2825
|
+
self.writeSoAdConfigConnectionBundles(child_element, config)
|
|
2826
|
+
self.writeSoAdConfigSocketAddresses(child_element, config)
|
|
2827
|
+
|
|
2828
|
+
def writeEthernetPhysicalChannelVlan(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2829
|
+
vlan = channel.getVlan()
|
|
2830
|
+
if vlan is not None:
|
|
2831
|
+
child_element = ET.SubElement(element, "VLAN")
|
|
2832
|
+
self.writeIdentifiable(child_element, vlan)
|
|
2833
|
+
self.setChildElementOptionalPositiveInteger(child_element, "VLAN-IDENTIFIER", vlan.getVlanIdentifier())
|
|
2834
|
+
|
|
2835
|
+
def writeEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2836
|
+
self.logger.debug("Set EthernetPhysicalChannel %s" % channel.getShortName())
|
|
2837
|
+
child_element = ET.SubElement(element, "ETHERNET-PHYSICAL-CHANNEL")
|
|
2838
|
+
self.writeIdentifiable(child_element, channel)
|
|
2839
|
+
self.writePhysicalChannel(child_element, channel)
|
|
2840
|
+
self.writeEthernetPhysicalChannelNetworkEndPoints(child_element, channel.getNetworkEndpoints())
|
|
2841
|
+
self.writeSoAdConfig(child_element, "SO-AD-CONFIG", channel.getSoAdConfig())
|
|
2842
|
+
self.writeEthernetPhysicalChannelVlan(child_element, channel)
|
|
2506
2843
|
|
|
2507
2844
|
def writeCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2508
2845
|
channels = cluster.getPhysicalChannels()
|
|
@@ -2513,6 +2850,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2513
2850
|
self.writeCanPhysicalChannel(child_element, channel)
|
|
2514
2851
|
elif isinstance(channel, LinPhysicalChannel):
|
|
2515
2852
|
self.writeLinPhysicalChannel(child_element, channel)
|
|
2853
|
+
elif isinstance(channel, EthernetPhysicalChannel):
|
|
2854
|
+
self.writeEthernetPhysicalChannel(child_element, channel)
|
|
2516
2855
|
else:
|
|
2517
2856
|
self.notImplemented("Unsupported Physical Channel <%s>" % type(channel))
|
|
2518
2857
|
|
|
@@ -2522,14 +2861,22 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2522
2861
|
self.setChildElementOptionalLiteral(element, "PROTOCOL-NAME", cluster.getProtocolName())
|
|
2523
2862
|
self.setChildElementOptionalLiteral(element, "PROTOCOL-VERSION", cluster.getProtocolVersion())
|
|
2524
2863
|
|
|
2525
|
-
def
|
|
2864
|
+
def setCanClusterBusOffRecovery(self, element: ET.Element, key: str, recovery: CanClusterBusOffRecovery):
|
|
2865
|
+
if recovery is not None:
|
|
2866
|
+
child_element = ET.SubElement(element, key)
|
|
2867
|
+
self.setChildElementOptionalPositiveInteger(child_element, "BOR-COUNTER-L-1-TO-L-2", recovery.getBorCounterL1ToL2())
|
|
2868
|
+
self.setChildElementOptionalTimeValue(child_element, "BOR-TIME-L-1", recovery.getBorTimeL1())
|
|
2869
|
+
self.setChildElementOptionalTimeValue(child_element, "BOR-TIME-L-2", recovery.getBorTimeL2())
|
|
2870
|
+
|
|
2871
|
+
def writeAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
|
|
2872
|
+
self.setCanClusterBusOffRecovery(element, "BUS-OFF-RECOVERY", cluster.getBusOffRecovery())
|
|
2526
2873
|
self.setChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE", cluster.getCanFdBaudrate())
|
|
2527
2874
|
self.setChildElementOptionalNumericalValue(element, "SPEED", cluster.getSpeed())
|
|
2528
2875
|
|
|
2529
2876
|
def writeLinCluster(self, element: ET.Element, cluster: LinCluster):
|
|
2530
2877
|
self.logger.debug("LinCluster %s" % cluster.getShortName())
|
|
2531
2878
|
child_element = ET.SubElement(element, "LIN-CLUSTER")
|
|
2532
|
-
self.
|
|
2879
|
+
self.writeIdentifiable(child_element, cluster)
|
|
2533
2880
|
child_element = ET.SubElement(child_element, "LIN-CLUSTER-VARIANTS")
|
|
2534
2881
|
child_element = ET.SubElement(child_element, "LIN-CLUSTER-CONDITIONAL")
|
|
2535
2882
|
self.writeCommunicationCluster(child_element, cluster)
|
|
@@ -2537,12 +2884,21 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2537
2884
|
def writeCanCluster(self, element: ET.Element, cluster: CanCluster):
|
|
2538
2885
|
self.logger.debug("CanCluster %s" % cluster.getShortName())
|
|
2539
2886
|
child_element = ET.SubElement(element, "CAN-CLUSTER")
|
|
2540
|
-
self.
|
|
2887
|
+
self.writeIdentifiable(child_element, cluster)
|
|
2541
2888
|
|
|
2542
2889
|
child_element = ET.SubElement(child_element, "CAN-CLUSTER-VARIANTS")
|
|
2543
2890
|
child_element = ET.SubElement(child_element, "CAN-CLUSTER-CONDITIONAL")
|
|
2544
2891
|
self.writeCommunicationCluster(child_element, cluster)
|
|
2545
|
-
self.
|
|
2892
|
+
self.writeAbstractCanCluster(child_element, cluster)
|
|
2893
|
+
|
|
2894
|
+
def writeEthernetCluster(self, element: ET.Element, cluster: EthernetCluster):
|
|
2895
|
+
self.logger.debug("Set EthernetCluster %s" % cluster.getShortName())
|
|
2896
|
+
child_element = ET.SubElement(element, "ETHERNET-CLUSTER")
|
|
2897
|
+
self.setARElement(child_element, cluster)
|
|
2898
|
+
|
|
2899
|
+
child_element = ET.SubElement(child_element, "ETHERNET-CLUSTER-VARIANTS")
|
|
2900
|
+
child_element = ET.SubElement(child_element, "ETHERNET-CLUSTER-CONDITIONAL")
|
|
2901
|
+
self.writeCommunicationCluster(child_element, cluster)
|
|
2546
2902
|
|
|
2547
2903
|
def writeCanFrame(self, element: ET.Element, frame: CanFrame):
|
|
2548
2904
|
self.logger.debug("Write CanFrame %s" % frame.getShortName())
|
|
@@ -2550,7 +2906,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2550
2906
|
self.writeFrame(child_element, frame)
|
|
2551
2907
|
|
|
2552
2908
|
def writeCommConnectorPort(self, element: ET.Element, port: CommConnectorPort):
|
|
2553
|
-
self.
|
|
2909
|
+
self.writeIdentifiable(element, port)
|
|
2554
2910
|
self.setChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION", port.getCommunicationDirection())
|
|
2555
2911
|
|
|
2556
2912
|
def writeFramePort(self, element: ET.Element, port: FramePort):
|
|
@@ -2581,29 +2937,45 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2581
2937
|
self._raiseError("Unsupported CommConnectorPort <%s>" % type(port))
|
|
2582
2938
|
|
|
2583
2939
|
def writeCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
|
|
2940
|
+
child_element = ET.SubElement(element, "CAN-COMMUNICATION-CONTROLLER")
|
|
2584
2941
|
self.logger.debug("Write CanCommunicationController %s" % controller.getShortName())
|
|
2585
|
-
self.
|
|
2942
|
+
self.writeIdentifiable(child_element, controller)
|
|
2943
|
+
|
|
2944
|
+
def writeEthernetCommunicationController(self, element: ET.Element, controller: EthernetCommunicationController):
|
|
2945
|
+
child_element = ET.SubElement(element, "ETHERNET-COMMUNICATION-CONTROLLER")
|
|
2946
|
+
self.logger.debug("Write EthernetCommunicationController %s" % controller.getShortName())
|
|
2947
|
+
self.writeIdentifiable(child_element, controller)
|
|
2586
2948
|
|
|
2587
2949
|
def writeEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
|
|
2588
2950
|
controllers = instance.getCommControllers()
|
|
2589
2951
|
if len(controllers) > 0:
|
|
2590
|
-
|
|
2952
|
+
child_element = ET.SubElement(element, "COMM-CONTROLLERS")
|
|
2591
2953
|
for controller in controllers:
|
|
2592
2954
|
if isinstance(controller, CanCommunicationController):
|
|
2593
|
-
child_element = ET.SubElement(controllers_tag, "CAN-COMMUNICATION-CONTROLLER")
|
|
2594
2955
|
self.writeCanCommunicationController(child_element, controller)
|
|
2956
|
+
elif isinstance(controller, EthernetCommunicationController):
|
|
2957
|
+
self.writeEthernetCommunicationController(child_element, controller)
|
|
2958
|
+
elif isinstance(controller, LinMaster):
|
|
2959
|
+
self.writeLinMaster(child_element, controller)
|
|
2595
2960
|
else:
|
|
2596
|
-
self.
|
|
2961
|
+
self.notImplemented("Unsupported Communication Controller <%s>" % type(controller))
|
|
2597
2962
|
|
|
2598
2963
|
def writeCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
|
|
2599
|
-
self.
|
|
2964
|
+
self.writeIdentifiable(element, connector)
|
|
2600
2965
|
self.setChildElementOptionalRefType(element, "COMM-CONTROLLER-REF", connector.getCommControllerRef())
|
|
2601
2966
|
self.writeCommunicationConnectorEcuCommPortInstances(element, connector)
|
|
2602
2967
|
|
|
2603
|
-
|
|
2604
2968
|
def writeCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
|
|
2605
2969
|
self.logger.debug("Write CanCommunicationConnector %s" % connector.getShortName())
|
|
2606
|
-
self.writeCommunicationConnector(element, connector)
|
|
2970
|
+
self.writeCommunicationConnector(element, connector)
|
|
2971
|
+
|
|
2972
|
+
def writeEthernetCommunicationConnector(self, element: ET.Element, connector: EthernetCommunicationConnector):
|
|
2973
|
+
self.logger.debug("Write EthernetCommunicationConnector %s" % connector.getShortName())
|
|
2974
|
+
self.writeCommunicationConnector(element, connector)
|
|
2975
|
+
|
|
2976
|
+
def writeLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
|
|
2977
|
+
self.logger.debug("Write LinCommunicationConnector %s" % connector.getShortName())
|
|
2978
|
+
self.writeCommunicationConnector(element, connector)
|
|
2607
2979
|
|
|
2608
2980
|
def writeEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
|
|
2609
2981
|
connectors = instance.getConnectors()
|
|
@@ -2613,13 +2985,19 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2613
2985
|
if isinstance(connector, CanCommunicationConnector):
|
|
2614
2986
|
child_element = ET.SubElement(connectors_tag, "CAN-COMMUNICATION-CONNECTOR")
|
|
2615
2987
|
self.writeCanCommunicationConnector(child_element, connector)
|
|
2988
|
+
elif isinstance(connector, EthernetCommunicationConnector):
|
|
2989
|
+
child_element = ET.SubElement(connectors_tag, "ETHERNET-COMMUNICATION-CONNECTOR")
|
|
2990
|
+
self.writeEthernetCommunicationConnector(child_element, connector)
|
|
2991
|
+
elif isinstance(connector, LinCommunicationConnector):
|
|
2992
|
+
child_element = ET.SubElement(connectors_tag, "LIN-COMMUNICATION-CONNECTOR")
|
|
2993
|
+
self.writeLinCommunicationConnector(child_element, connector)
|
|
2616
2994
|
else:
|
|
2617
2995
|
self._raiseError("Unsupported Communication connector <%s>" % type(connector))
|
|
2618
2996
|
|
|
2619
2997
|
def writeEcuInstance(self, element: ET.Element, instance: EcuInstance):
|
|
2620
2998
|
self.logger.debug("EcuInstance %s" % instance.getShortName())
|
|
2621
2999
|
child_element = ET.SubElement(element, "ECU-INSTANCE")
|
|
2622
|
-
self.
|
|
3000
|
+
self.writeIdentifiable(child_element, instance)
|
|
2623
3001
|
self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-GW-TIME-BASE", instance.getComConfigurationGwTimeBase())
|
|
2624
3002
|
self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-RX-TIME-BASE", instance.getComConfigurationRxTimeBase())
|
|
2625
3003
|
self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-TX-TIME-BASE", instance.getComConfigurationTxTimeBase())
|
|
@@ -2632,7 +3010,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2632
3010
|
def writeSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
|
|
2633
3011
|
self.logger.debug("Write SystemSignalGroup %s" % group.getShortName())
|
|
2634
3012
|
child_element = ET.SubElement(element, "SYSTEM-SIGNAL-GROUP")
|
|
2635
|
-
self.
|
|
3013
|
+
self.writeIdentifiable(child_element, group)
|
|
2636
3014
|
signal_refs = group.getSystemSignalRefs()
|
|
2637
3015
|
if len(signal_refs) > 0:
|
|
2638
3016
|
signal_refs_tag = ET.SubElement(child_element, "SYSTEM-SIGNAL-REFS")
|
|
@@ -2664,7 +3042,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2664
3042
|
|
|
2665
3043
|
def setSwcToEcuMapping(self, element: ET.Element, mapping: SwcToEcuMapping):
|
|
2666
3044
|
child_element = ET.SubElement(element, "SWC-TO-ECU-MAPPING")
|
|
2667
|
-
self.
|
|
3045
|
+
self.writeIdentifiable(child_element, mapping)
|
|
2668
3046
|
irefs = mapping.getComponentIRefs()
|
|
2669
3047
|
if len(irefs) > 0:
|
|
2670
3048
|
irefs_tag = ET.SubElement(child_element, "COMPONENT-IREFS")
|
|
@@ -2685,7 +3063,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2685
3063
|
def writeSystemMapping(self, element: ET.Element, mapping: SystemMapping):
|
|
2686
3064
|
self.logger.debug("Write SystemMapping %s" % mapping.getShortName())
|
|
2687
3065
|
child_element = ET.SubElement(element, "SYSTEM-MAPPING")
|
|
2688
|
-
self.
|
|
3066
|
+
self.writeIdentifiable(child_element, mapping)
|
|
2689
3067
|
self.writeSystemMappingDataMappings(child_element, mapping)
|
|
2690
3068
|
self.writeSystemMappingSwMappings(child_element, mapping)
|
|
2691
3069
|
|
|
@@ -2705,7 +3083,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2705
3083
|
self.logger.debug("Write RootSwCompositionPrototype <%s>" % prototype.getShortName())
|
|
2706
3084
|
child_element = ET.SubElement(element, "ROOT-SOFTWARE-COMPOSITIONS")
|
|
2707
3085
|
child_element = ET.SubElement(child_element, "ROOT-SW-COMPOSITION-PROTOTYPE")
|
|
2708
|
-
self.
|
|
3086
|
+
self.writeIdentifiable(child_element, prototype)
|
|
2709
3087
|
self.setChildElementOptionalRefType(child_element, "FLAT-MAP-REF", prototype.getFlatMapRef())
|
|
2710
3088
|
self.setChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF", prototype.getSoftwareCompositionTRef())
|
|
2711
3089
|
|
|
@@ -2726,7 +3104,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2726
3104
|
self.writeRootSwCompositionPrototype(child_element, system)
|
|
2727
3105
|
self.setChildElementOptionalRevisionLabelString(child_element, "SYSTEM-VERSION", system.getSystemVersion())
|
|
2728
3106
|
|
|
2729
|
-
def
|
|
3107
|
+
def writePhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
|
|
2730
3108
|
self.logger.debug("Set PhysicalDimension %s" % dimension.getShortName())
|
|
2731
3109
|
child_element = ET.SubElement(element, "PHYSICAL-DIMENSION")
|
|
2732
3110
|
self.setARElement(child_element, dimension)
|
|
@@ -2737,7 +3115,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2737
3115
|
def setFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
|
|
2738
3116
|
self.logger.debug("Set FlatInstanceDescriptor %s" % desc.getShortName())
|
|
2739
3117
|
child_element = ET.SubElement(element, "FLAT-INSTANCE-DESCRIPTOR")
|
|
2740
|
-
self.
|
|
3118
|
+
self.writeIdentifiable(child_element, desc)
|
|
2741
3119
|
self.setAnyInstanceRef(child_element, "UPSTREAM-REFERENCE-IREF", desc.getUpstreamReferenceIRef())
|
|
2742
3120
|
self.setAnyInstanceRef(child_element, "ECU-EXTRACT-REFERENCE-IREF", desc.getEcuExtractReferenceIRef())
|
|
2743
3121
|
|
|
@@ -2751,7 +3129,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2751
3129
|
else:
|
|
2752
3130
|
self.notImplemented("Unsupported Flat Map Instances <%s>" % type(instance))
|
|
2753
3131
|
|
|
2754
|
-
def
|
|
3132
|
+
def writeFlatMap(self, element: ET.Element, map: FlatMap):
|
|
2755
3133
|
self.logger.debug("Set FlatMap %s" % map.getShortName())
|
|
2756
3134
|
child_element = ET.SubElement(element, "FLAT-MAP")
|
|
2757
3135
|
self.setARElement(child_element, map)
|
|
@@ -2771,7 +3149,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2771
3149
|
def setVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
|
|
2772
3150
|
self.logger.debug("set VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
|
|
2773
3151
|
child_element = ET.SubElement(element, "VARIABLE-AND-PARAMETER-INTERFACE-MAPPING")
|
|
2774
|
-
self.
|
|
3152
|
+
self.writeIdentifiable(child_element, mapping)
|
|
2775
3153
|
self.setDataPrototypeMappings(child_element, "DATA-MAPPINGS", mapping.getDataMappings())
|
|
2776
3154
|
|
|
2777
3155
|
def writePortInterfaceMappings(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
|
|
@@ -2784,7 +3162,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2784
3162
|
else:
|
|
2785
3163
|
self.notImplemented("Unsupported PortInterfaceMapping <%s>" % type(mapping))
|
|
2786
3164
|
|
|
2787
|
-
def
|
|
3165
|
+
def writePortInterfaceMappingSet(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
|
|
2788
3166
|
self.logger.debug("Set PortInterfaceMappingSet %s" % mapping_set.getShortName())
|
|
2789
3167
|
child_element = ET.SubElement(element, "PORT-INTERFACE-MAPPING-SET")
|
|
2790
3168
|
self.setARElement(child_element, mapping_set)
|
|
@@ -2801,16 +3179,17 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2801
3179
|
def writeGateway(self, element: ET.Element, gateway: Gateway):
|
|
2802
3180
|
self.logger.debug("Gateway %s" % gateway.getShortName())
|
|
2803
3181
|
child_element = ET.SubElement(element, "GATEWAY")
|
|
2804
|
-
self.
|
|
3182
|
+
self.writeIdentifiable(child_element, gateway)
|
|
2805
3183
|
self.setChildElementOptionalRefType(child_element, "ECU-REF", gateway.ecuRef)
|
|
2806
3184
|
self.setISignalMappings(child_element, gateway.getSignalMappings())
|
|
2807
3185
|
|
|
2808
3186
|
def writeISignal(self, element: ET.Element, signal: ISignal):
|
|
2809
3187
|
self.logger.debug("ISignal %s" % signal.getShortName())
|
|
2810
3188
|
child_element = ET.SubElement(element, "I-SIGNAL")
|
|
2811
|
-
self.
|
|
3189
|
+
self.writeIdentifiable(child_element, signal)
|
|
2812
3190
|
self.setChildElementOptionalLiteral(child_element, "DATA-TYPE-POLICY", signal.getDataTypePolicy())
|
|
2813
|
-
self.
|
|
3191
|
+
self.setChildElementOptionalLiteral(child_element, "I-SIGNAL-TYPE", signal.getISignalType())
|
|
3192
|
+
self.setValueSpecification(child_element, "INIT-VALUE", signal.getInitValue())
|
|
2814
3193
|
self.setChildElementOptionalNumericalValue(child_element, "LENGTH", signal.getLength())
|
|
2815
3194
|
self.setSwDataDefProps(child_element, "NETWORK-REPRESENTATION-PROPS", signal.getNetworkRepresentationProps())
|
|
2816
3195
|
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", signal.getSystemSignalRef())
|
|
@@ -2826,7 +3205,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2826
3205
|
def writeEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
|
|
2827
3206
|
self.logger.debug("EcucValueCollection %s" % collection.getShortName())
|
|
2828
3207
|
child_element = ET.SubElement(element, "ECUC-VALUE-COLLECTION")
|
|
2829
|
-
self.
|
|
3208
|
+
self.writeIdentifiable(child_element, collection)
|
|
2830
3209
|
self.setChildElementOptionalRefType(child_element, "ECU-EXTRACT-REF", collection.getEcuExtractRef())
|
|
2831
3210
|
self.writeEcucValueCollectionEcucValues(child_element, collection)
|
|
2832
3211
|
|
|
@@ -2906,7 +3285,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2906
3285
|
def writeEcucContainValue(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2907
3286
|
self.logger.debug("EcucContainerValue %s" % container_value.getShortName())
|
|
2908
3287
|
child_element = ET.SubElement(element, "ECUC-CONTAINER-VALUE")
|
|
2909
|
-
self.
|
|
3288
|
+
self.writeIdentifiable(child_element, container_value)
|
|
2910
3289
|
self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", container_value.getDefinitionRef())
|
|
2911
3290
|
self.writeEcucContainerValueParameterValues(child_element, container_value)
|
|
2912
3291
|
self.writeEcucContainerValueReferenceValues(child_element, container_value)
|
|
@@ -2925,7 +3304,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2925
3304
|
def writeEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
|
|
2926
3305
|
self.logger.debug("EcucModuleConfigurationValues %s" % values.getShortName())
|
|
2927
3306
|
child_element = ET.SubElement(element, "ECUC-MODULE-CONFIGURATION-VALUES")
|
|
2928
|
-
self.
|
|
3307
|
+
self.writeIdentifiable(child_element, values)
|
|
2929
3308
|
self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", values.getDefinitionRef())
|
|
2930
3309
|
self.setChildElementOptionalLiteral(child_element, "IMPLEMENTATION-CONFIG-VARIANT", values.getImplementationConfigVariant())
|
|
2931
3310
|
self.setChildElementOptionalRefType(child_element, "MODULE-DESCRIPTION-REF", values.getModuleDescriptionRef())
|
|
@@ -2934,7 +3313,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2934
3313
|
def writeISignalGroup(self, element: ET.Element, group: ISignalGroup):
|
|
2935
3314
|
self.logger.debug("ISignalGroup %s" % group.getShortName())
|
|
2936
3315
|
child_element = ET.SubElement(element, "I-SIGNAL-GROUP")
|
|
2937
|
-
self.
|
|
3316
|
+
self.writeIdentifiable(child_element, group)
|
|
2938
3317
|
signal_refs = group.getISignalRefs()
|
|
2939
3318
|
if len(signal_refs) > 0:
|
|
2940
3319
|
signal_refs_tag = ET.SubElement(child_element, "I-SIGNAL-REFS")
|
|
@@ -2943,9 +3322,9 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2943
3322
|
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-GROUP-REF", group.getSystemSignalGroupRef())
|
|
2944
3323
|
|
|
2945
3324
|
def writeISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
|
|
2946
|
-
self.logger.debug("ISignalIPduGroup %s" % group.getShortName())
|
|
3325
|
+
self.logger.debug("Set ISignalIPduGroup %s" % group.getShortName())
|
|
2947
3326
|
child_element = ET.SubElement(element, "I-SIGNAL-I-PDU-GROUP")
|
|
2948
|
-
self.
|
|
3327
|
+
self.writeIdentifiable(child_element, group)
|
|
2949
3328
|
self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", group.getCommunicationDirection())
|
|
2950
3329
|
self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-MODE", group.getCommunicationMode())
|
|
2951
3330
|
group_refs = group.getContainedISignalIPduGroupRefs()
|
|
@@ -2963,20 +3342,84 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2963
3342
|
def writeSystemSignal(self, element: ET.Element, signal: SystemSignal):
|
|
2964
3343
|
self.logger.debug("SystemSignal %s" % signal.getShortName())
|
|
2965
3344
|
child_element = ET.SubElement(element, "SYSTEM-SIGNAL")
|
|
2966
|
-
self.
|
|
3345
|
+
self.writeIdentifiable(child_element, signal)
|
|
2967
3346
|
self.setChildElementOptionalBooleanValue(child_element, "DYNAMIC-LENGTH", signal.getDynamicLength())
|
|
3347
|
+
self.setSwDataDefProps(child_element, "PHYSICAL-PROPS", signal.getPhysicalProps())
|
|
2968
3348
|
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
def writeGenericEthernetFrame(self, element: ET.Element, signal: GenericEthernetFrame):
|
|
2972
|
-
self.logger.debug("Write GenericEthernetFrame %s" % signal.getShortName())
|
|
3349
|
+
def writeGenericEthernetFrame(self, element: ET.Element, frame: GenericEthernetFrame):
|
|
3350
|
+
self.logger.debug("Write GenericEthernetFrame %s" % frame.getShortName())
|
|
2973
3351
|
child_element = ET.SubElement(element, "ETHERNET-FRAME")
|
|
2974
|
-
self.writeFrame(child_element,
|
|
3352
|
+
self.writeFrame(child_element, frame)
|
|
2975
3353
|
|
|
2976
3354
|
def writeLifeCycleInfoSet(self, element: ET.Element, set: LifeCycleInfoSet):
|
|
2977
3355
|
self.logger.debug("Write LifeCycleInfoSet %s" % set.getShortName())
|
|
2978
3356
|
child_element = ET.SubElement(element, "LIFE-CYCLE-INFO-SET")
|
|
2979
|
-
self.
|
|
3357
|
+
self.writeIdentifiable(child_element, set)
|
|
3358
|
+
|
|
3359
|
+
def writeDiagnosticConnectionFunctionalRequestRefs(self, element: ET.Element, connection: DiagnosticConnection):
|
|
3360
|
+
refs = connection.getFunctionalRequestRefs()
|
|
3361
|
+
if len(refs) > 0:
|
|
3362
|
+
refs_tag = ET.SubElement(element, "FUNCTIONAL-REQUEST-REFS")
|
|
3363
|
+
for ref in refs:
|
|
3364
|
+
self.setChildElementOptionalRefType(refs_tag, "FUNCTIONAL-REQUEST-REF", ref)
|
|
3365
|
+
|
|
3366
|
+
def writeDiagnosticConnection(self, element: ET.Element, connection: DiagnosticConnection):
|
|
3367
|
+
self.logger.debug("Write DiagnosticConnection %s" % connection.getShortName())
|
|
3368
|
+
child_element = ET.SubElement(element, "DIAGNOSTIC-CONNECTION")
|
|
3369
|
+
self.writeIdentifiable(child_element, connection)
|
|
3370
|
+
self.writeDiagnosticConnectionFunctionalRequestRefs(child_element, connection)
|
|
3371
|
+
self.setChildElementOptionalRefType(child_element, "PHYSICAL-REQUEST-REF", connection.getPhysicalRequestRef())
|
|
3372
|
+
self.setChildElementOptionalRefType(child_element, "RESPONSE-REF", connection.getResponseOnEventRef())
|
|
3373
|
+
|
|
3374
|
+
def writeDiagnosticServiceTable(self, element: ET.Element, table: DiagnosticServiceTable):
|
|
3375
|
+
self.logger.debug("Write DiagnosticServiceTable %s" % table.getShortName())
|
|
3376
|
+
child_element = ET.SubElement(element, "DIAGNOSTIC-SERVICE-TABLE")
|
|
3377
|
+
self.writeIdentifiable(child_element, table)
|
|
3378
|
+
|
|
3379
|
+
def writeMultiplexedIPdu(self, element: ET.Element, i_pdu: MultiplexedIPdu):
|
|
3380
|
+
self.logger.debug("Write MultiplexedIPdu %s" % i_pdu.getShortName())
|
|
3381
|
+
child_element = ET.SubElement(element, "MULTIPLEXED-I-PDU")
|
|
3382
|
+
self.writeIdentifiable(child_element, i_pdu)
|
|
3383
|
+
|
|
3384
|
+
def writeUserDefinedIPdu(self, element: ET.Element, i_pdu: UserDefinedIPdu):
|
|
3385
|
+
self.logger.debug("Write UserDefinedIPdu %s" % i_pdu.getShortName())
|
|
3386
|
+
child_element = ET.SubElement(element, "USER-DEFINED-I-PDU")
|
|
3387
|
+
self.writeIdentifiable(child_element, i_pdu)
|
|
3388
|
+
|
|
3389
|
+
def writeUserDefinedPdu(self, element: ET.Element, pdu: UserDefinedPdu):
|
|
3390
|
+
self.logger.debug("Write UserDefinedPdu %s" % pdu.getShortName())
|
|
3391
|
+
child_element = ET.SubElement(element, "USER-DEFINED-PDU")
|
|
3392
|
+
self.writeIdentifiable(child_element, pdu)
|
|
3393
|
+
|
|
3394
|
+
def writeGeneralPurposePdu(self, element: ET.Element, pdu: GeneralPurposePdu):
|
|
3395
|
+
self.logger.debug("Write GeneralPurposePdu %s" % pdu.getShortName())
|
|
3396
|
+
child_element = ET.SubElement(element, "GENERAL-PURPOSE-PDU")
|
|
3397
|
+
self.writeIdentifiable(child_element, pdu)
|
|
3398
|
+
|
|
3399
|
+
def writeGeneralPurposeIPdu(self, element: ET.Element, i_pdu: GeneralPurposeIPdu):
|
|
3400
|
+
self.logger.debug("Write GeneralPurposeIPdu %s" % i_pdu.getShortName())
|
|
3401
|
+
child_element = ET.SubElement(element, "GENERAL-PURPOSE-I-PDU")
|
|
3402
|
+
self.writeIdentifiable(child_element, i_pdu)
|
|
3403
|
+
|
|
3404
|
+
def writeSecureCommunicationPropsSet(self, element: ET.Element, set: SecureCommunicationPropsSet):
|
|
3405
|
+
self.logger.debug("Write SecureCommunicationPropsSet %s" % set.getShortName())
|
|
3406
|
+
child_element = ET.SubElement(element, "SECURE-COMMUNICATION-PROPS-SET")
|
|
3407
|
+
self.writeIdentifiable(child_element, set)
|
|
3408
|
+
|
|
3409
|
+
def writeSoAdRoutingGroup(self, element: ET.Element, group: SoAdRoutingGroup):
|
|
3410
|
+
self.logger.debug("Write SoAdRoutingGroup %s" % group.getShortName())
|
|
3411
|
+
child_element = ET.SubElement(element, "SO-AD-ROUTING-GROUP")
|
|
3412
|
+
self.writeIdentifiable(child_element, group)
|
|
3413
|
+
|
|
3414
|
+
def writeDoIpTpConfig(self, element: ET.Element, config: DoIpTpConfig):
|
|
3415
|
+
self.logger.debug("Write DoIpTpConfig %s" % config.getShortName())
|
|
3416
|
+
child_element = ET.SubElement(element, "DO-IP-TP-CONFIG")
|
|
3417
|
+
self.writeIdentifiable(child_element, config)
|
|
3418
|
+
|
|
3419
|
+
def writeLinMaster(self, element: ET.Element, master: LinMaster):
|
|
3420
|
+
self.logger.debug("Write LinMaster %s" % master.getShortName())
|
|
3421
|
+
child_element = ET.SubElement(element, "LIN-MASTER")
|
|
3422
|
+
self.writeIdentifiable(child_element, master)
|
|
2980
3423
|
|
|
2981
3424
|
def writeISignalToPduMappings(self, element: ET.Element, parent: ISignalIPdu):
|
|
2982
3425
|
mappings = parent.getISignalToPduMappings()
|
|
@@ -2984,7 +3427,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2984
3427
|
mappings_tag = ET.SubElement(element, "I-SIGNAL-TO-PDU-MAPPINGS")
|
|
2985
3428
|
for mapping in mappings:
|
|
2986
3429
|
child_element = ET.SubElement(mappings_tag, "I-SIGNAL-TO-I-PDU-MAPPING")
|
|
2987
|
-
self.
|
|
3430
|
+
self.writeIdentifiable(child_element, mapping)
|
|
2988
3431
|
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-REF", mapping.getISignalRef())
|
|
2989
3432
|
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", mapping.getISignalGroupRef())
|
|
2990
3433
|
self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.getPackingByteOrder())
|
|
@@ -3016,11 +3459,22 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3016
3459
|
self.setChildElementOptionalIntegerValue(child_element, "NUMBER-OF-REPETITIONS", timing.getNumberOfRepetitions())
|
|
3017
3460
|
self.setTimeRangeType(child_element, "REPETITION-PERIOD", timing.getRepetitionPeriod())
|
|
3018
3461
|
|
|
3462
|
+
def setTimeRangeType(self, element: ET.Element, key: str, time_range: TimeRangeType):
|
|
3463
|
+
if time_range is not None:
|
|
3464
|
+
child_element = ET.SubElement(element, key)
|
|
3465
|
+
self.setChildElementOptionalTimeValue(child_element, "VALUE", time_range.getValue())
|
|
3466
|
+
|
|
3467
|
+
def setCyclicTiming(self, element: ET.Element, key: str, timing: CyclicTiming):
|
|
3468
|
+
if timing is not None:
|
|
3469
|
+
child_element = ET.SubElement(element, key)
|
|
3470
|
+
self.setTimeRangeType(child_element, "TIME-OFFSET", timing.getTimeOffset())
|
|
3471
|
+
self.setTimeRangeType(child_element, "TIME-PERIOD", timing.getTimePeriod())
|
|
3472
|
+
|
|
3019
3473
|
def setTransmissionModeTiming(self, element: ET.Element, key: str, timing: TransmissionModeTiming):
|
|
3020
3474
|
if timing is not None:
|
|
3021
3475
|
self.logger.debug("Set TransmissionModeTiming of <%s>" % key)
|
|
3022
3476
|
child_element = ET.SubElement(element, key)
|
|
3023
|
-
|
|
3477
|
+
self.setCyclicTiming(child_element, "CYCLIC-TIMING", timing.getCyclicTiming())
|
|
3024
3478
|
self.setEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING", timing.getEventControlledTiming())
|
|
3025
3479
|
|
|
3026
3480
|
def setTransmissionModeDeclaration(self, element: ET.Element, key: str, decl : TransmissionModeDeclaration):
|
|
@@ -3033,12 +3487,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3033
3487
|
if timing is not None:
|
|
3034
3488
|
spec_tag = ET.SubElement(element, "I-PDU-TIMING-SPECIFICATIONS")
|
|
3035
3489
|
child_element = ET.SubElement(spec_tag, "I-PDU-TIMING")
|
|
3490
|
+
self.setChildElementOptionalTimeValue(child_element, "MINIMUM-DELAY", timing.getMinimumDelay())
|
|
3036
3491
|
self.setTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION", timing.getTransmissionModeDeclaration())
|
|
3037
3492
|
|
|
3038
3493
|
def writeISignalIPdu(self, element: ET.Element, i_pdu: ISignalIPdu):
|
|
3039
3494
|
self.logger.debug("ISignalIPdu %s" % i_pdu.getShortName())
|
|
3040
3495
|
child_element = ET.SubElement(element, "I-SIGNAL-I-PDU")
|
|
3041
|
-
self.
|
|
3496
|
+
self.writeIdentifiable(child_element, i_pdu)
|
|
3042
3497
|
self.setChildElementOptionalNumericalValue(child_element, "LENGTH", i_pdu.getLength())
|
|
3043
3498
|
self.setISignalIPduIPduTimingSpecification(child_element, i_pdu.getIPduTimingSpecification())
|
|
3044
3499
|
self.writeISignalToPduMappings(child_element, i_pdu)
|
|
@@ -3052,13 +3507,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3052
3507
|
elif isinstance(ar_element, CompositionSwComponentType):
|
|
3053
3508
|
self.writeCompositionSwComponentType(element, ar_element)
|
|
3054
3509
|
elif isinstance(ar_element, ApplicationPrimitiveDataType):
|
|
3055
|
-
self.
|
|
3510
|
+
self.writeApplicationPrimitiveDataType(element, ar_element)
|
|
3056
3511
|
elif isinstance(ar_element, ApplicationRecordDataType):
|
|
3057
|
-
self.
|
|
3512
|
+
self.writeApplicationRecordDataType(element, ar_element)
|
|
3058
3513
|
elif isinstance(ar_element, SwBaseType):
|
|
3059
|
-
self.
|
|
3514
|
+
self.writeSwBaseType(element, ar_element)
|
|
3060
3515
|
elif isinstance(ar_element, CompuMethod):
|
|
3061
|
-
self.
|
|
3516
|
+
self.writeCompuMethod(element, ar_element)
|
|
3062
3517
|
elif isinstance(ar_element, ConstantSpecification):
|
|
3063
3518
|
self.writeConstantSpecification(element, ar_element)
|
|
3064
3519
|
elif isinstance(ar_element, DataConstr):
|
|
@@ -3074,7 +3529,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3074
3529
|
elif isinstance(ar_element, BswModuleEntry):
|
|
3075
3530
|
self.writeBswModuleEntry(element, ar_element)
|
|
3076
3531
|
elif isinstance(ar_element, SwcBswMapping):
|
|
3077
|
-
self.
|
|
3532
|
+
self.writeSwcBswMapping(element, ar_element)
|
|
3078
3533
|
elif isinstance(ar_element, BswImplementation):
|
|
3079
3534
|
self.writeBswImplementation(element, ar_element)
|
|
3080
3535
|
elif isinstance(ar_element, ImplementationDataType):
|
|
@@ -3142,11 +3597,35 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3142
3597
|
elif isinstance(ar_element, LifeCycleInfoSet):
|
|
3143
3598
|
self.writeLifeCycleInfoSet(element, ar_element)
|
|
3144
3599
|
elif isinstance(ar_element, PhysicalDimension):
|
|
3145
|
-
self.
|
|
3600
|
+
self.writePhysicalDimension(element, ar_element)
|
|
3146
3601
|
elif isinstance(ar_element, FlatMap):
|
|
3147
|
-
self.
|
|
3602
|
+
self.writeFlatMap(element, ar_element)
|
|
3148
3603
|
elif isinstance(ar_element, PortInterfaceMappingSet):
|
|
3149
|
-
self.
|
|
3604
|
+
self.writePortInterfaceMappingSet(element, ar_element)
|
|
3605
|
+
elif isinstance(ar_element, EthernetCluster):
|
|
3606
|
+
self.writeEthernetCluster(element, ar_element)
|
|
3607
|
+
elif isinstance(ar_element, ISignalIPduGroup):
|
|
3608
|
+
self.writeISignalIPduGroup(element, ar_element)
|
|
3609
|
+
elif isinstance(ar_element, DiagnosticConnection):
|
|
3610
|
+
self.writeDiagnosticConnection(element, ar_element)
|
|
3611
|
+
elif isinstance(ar_element, DiagnosticServiceTable):
|
|
3612
|
+
self.writeDiagnosticServiceTable(element, ar_element)
|
|
3613
|
+
elif isinstance(ar_element, MultiplexedIPdu):
|
|
3614
|
+
self.writeMultiplexedIPdu(element, ar_element)
|
|
3615
|
+
elif isinstance(ar_element, UserDefinedIPdu):
|
|
3616
|
+
self.writeUserDefinedIPdu(element, ar_element)
|
|
3617
|
+
elif isinstance(ar_element, UserDefinedPdu):
|
|
3618
|
+
self.writeUserDefinedPdu(element, ar_element)
|
|
3619
|
+
elif isinstance(ar_element, GeneralPurposePdu):
|
|
3620
|
+
self.writeGeneralPurposePdu(element, ar_element)
|
|
3621
|
+
elif isinstance(ar_element, GeneralPurposeIPdu):
|
|
3622
|
+
self.writeGeneralPurposeIPdu(element, ar_element)
|
|
3623
|
+
elif isinstance(ar_element, SecureCommunicationPropsSet):
|
|
3624
|
+
self.writeSecureCommunicationPropsSet(element, ar_element)
|
|
3625
|
+
elif isinstance(ar_element, SoAdRoutingGroup):
|
|
3626
|
+
self.writeSoAdRoutingGroup(element, ar_element)
|
|
3627
|
+
elif isinstance(ar_element, DoIpTpConfig):
|
|
3628
|
+
self.writeDoIpTpConfig(element, ar_element)
|
|
3150
3629
|
else:
|
|
3151
3630
|
self.notImplemented("Unsupported Elements of ARPackage <%s>" % type(ar_element))
|
|
3152
3631
|
|
|
@@ -3169,7 +3648,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3169
3648
|
for pkg in pkgs:
|
|
3170
3649
|
pkg_tag = ET.SubElement(pkgs_tag, "AR-PACKAGE")
|
|
3171
3650
|
|
|
3172
|
-
self.
|
|
3651
|
+
self.writeIdentifiable(pkg_tag, pkg)
|
|
3173
3652
|
self.logger.debug("writeARPackage %s" % pkg.full_name)
|
|
3174
3653
|
|
|
3175
3654
|
self.writeReferenceBases(pkg_tag, pkg.getReferenceBases())
|