armodel 1.7.5__py3-none-any.whl → 1.7.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +2 -2
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +4 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +7 -1
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +13 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +165 -4
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +400 -17
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +356 -8
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinTopology.py +2 -4
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +76 -10
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +45 -23
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +1 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +55 -2
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +2 -1
- armodel/parser/abstract_arxml_parser.py +5 -5
- armodel/parser/arxml_parser.py +632 -466
- armodel/writer/arxml_writer.py +347 -52
- {armodel-1.7.5.dist-info → armodel-1.7.6.dist-info}/METADATA +22 -1
- {armodel-1.7.5.dist-info → armodel-1.7.6.dist-info}/RECORD +22 -22
- {armodel-1.7.5.dist-info → armodel-1.7.6.dist-info}/LICENSE +0 -0
- {armodel-1.7.5.dist-info → armodel-1.7.6.dist-info}/WHEEL +0 -0
- {armodel-1.7.5.dist-info → armodel-1.7.6.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.5.dist-info → armodel-1.7.6.dist-info}/top_level.txt +0 -0
armodel/writer/arxml_writer.py
CHANGED
|
@@ -30,7 +30,7 @@ from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecifi
|
|
|
30
30
|
from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
|
|
31
31
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
|
|
32
32
|
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
|
|
33
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Code, Implementation
|
|
33
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Code, Implementation, ImplementationProps
|
|
34
34
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
|
|
35
35
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef, ExecutionOrderConstraint
|
|
36
36
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds, DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds, EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
|
|
@@ -55,7 +55,7 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import
|
|
|
55
55
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
|
|
56
56
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
|
|
57
57
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
|
|
58
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PRPortPrototype, PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype
|
|
58
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PRPortPrototype, PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype, SymbolProps
|
|
59
59
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
60
60
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import AsynchronousServerCallPoint, RunnableEntity, RunnableEntityArgument, SwcInternalBehavior, SynchronousServerCallPoint
|
|
61
61
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
|
|
@@ -83,18 +83,18 @@ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance imp
|
|
|
83
83
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
84
84
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
|
|
85
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
|
|
86
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import CouplingPort, CouplingPortDetails, CouplingPortFifo, CouplingPortScheduler, CouplingPortStructuralElement, EthernetCluster, EthernetCommunicationConnector, EthernetCommunicationController, EthernetPriorityRegeneration, InitialSdDelayConfig, MacMulticastGroup, RequestResponseDelay, SdClientConfig, VlanMembership
|
|
87
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
|
|
89
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, ISignalMapping
|
|
88
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import ApplicationEndpoint, ConsumedEventGroup, ConsumedServiceInstance, EventHandler, GenericTp, ProvidedServiceInstance, SdServerConfig, SoAdConfig, SocketAddress, TcpTp, TpPort, TransportProtocolConfiguration, UdpTp
|
|
89
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, IPduMapping, ISignalMapping, TargetIPduRef
|
|
90
90
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
|
|
91
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
|
|
91
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import AbstractCanCommunicationController, AbstractCanCommunicationControllerAttributes, CanCommunicationConnector, CanCommunicationController, CanControllerConfigurationRequirements, CanControllerFdConfiguration, CanControllerFdConfigurationRequirements
|
|
92
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
|
|
93
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanClusterBusOffRecovery, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, CommunicationController, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
|
|
94
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinCommunicationController, LinMaster
|
|
95
95
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
|
|
96
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
|
|
97
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig, DoIpTpConfig, LinTpConfig
|
|
98
98
|
|
|
99
99
|
from .abstract_arxml_writer import AbstractARXMLWriter
|
|
100
100
|
class ARXMLWriter(AbstractARXMLWriter):
|
|
@@ -144,7 +144,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
144
144
|
limit_tag.attrib['INTERVAL-TYPE'] = limit.intervalType
|
|
145
145
|
limit_tag.text = limit.value
|
|
146
146
|
|
|
147
|
-
def
|
|
147
|
+
def writeReferrable(self, element: ET.Element, referrable: Referrable):
|
|
148
148
|
self.setARObjectAttributes(element, referrable)
|
|
149
149
|
self.setShortName(element, referrable.getShortName())
|
|
150
150
|
|
|
@@ -175,8 +175,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
175
175
|
for l2 in paragraph.getL2s():
|
|
176
176
|
self.setLOverviewParagraph(child_element, l2)
|
|
177
177
|
|
|
178
|
-
def
|
|
179
|
-
self.
|
|
178
|
+
def writeMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
|
|
179
|
+
self.writeReferrable(element, referrable)
|
|
180
180
|
if referrable.longName is not None:
|
|
181
181
|
self.setMultiLongName(element, "LONG-NAME", referrable.longName)
|
|
182
182
|
|
|
@@ -198,14 +198,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
198
198
|
self.writeSdgs(child_element, admin_data)
|
|
199
199
|
|
|
200
200
|
def writeIdentifiable(self, element: ET.Element, identifiable: Identifiable):
|
|
201
|
-
self.
|
|
201
|
+
self.writeMultilanguageReferrable(element, identifiable)
|
|
202
202
|
self.setAnnotations(element, identifiable.getAnnotations())
|
|
203
203
|
self.setMultiLanguageOverviewParagraph(element, "DESC", identifiable.getDesc())
|
|
204
204
|
self.setChildElementOptionalLiteral(element, "CATEGORY", identifiable.getCategory())
|
|
205
205
|
self.setDocumentationBlock(element, "INTRODUCTION", identifiable.getIntroduction())
|
|
206
206
|
self.setAdminData(element, identifiable.getAdminData())
|
|
207
207
|
|
|
208
|
-
def
|
|
208
|
+
def writeARElement(self, parent: ET.Element, ar_element: ARElement):
|
|
209
209
|
self.writeIdentifiable(parent, ar_element)
|
|
210
210
|
|
|
211
211
|
def setTransmissionAcknowledgementRequest(self, element: ET.Element, acknowledge: TransmissionAcknowledgementRequest):
|
|
@@ -728,7 +728,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
728
728
|
self.setApplicationDataType(element, data_type)
|
|
729
729
|
|
|
730
730
|
def setAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
731
|
-
self.
|
|
731
|
+
self.writeARElement(element, data_type)
|
|
732
732
|
self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", data_type.getSwDataDefProps())
|
|
733
733
|
|
|
734
734
|
def writeApplicationPrimitiveDataType(self, element: ET.Element, data_type: ApplicationPrimitiveDataType):
|
|
@@ -1989,12 +1989,25 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1989
1989
|
self.writeImplementationDataTypeElements(child_element, type_element)
|
|
1990
1990
|
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", type_element.getSwDataDefProps())
|
|
1991
1991
|
|
|
1992
|
+
def writeImplementationProps(self, element: ET.Element, props: ImplementationProps):
|
|
1993
|
+
self.writeReferrable(element, props)
|
|
1994
|
+
self.setChildElementOptionalLiteral(element, "SYMBOL", props.getSymbol())
|
|
1995
|
+
|
|
1996
|
+
def writeSymbolProps(self, element: ET.Element, props: SymbolProps):
|
|
1997
|
+
if props is not None:
|
|
1998
|
+
child_element = ET.SubElement(element, "SYMBOL-PROPS")
|
|
1999
|
+
self.writeImplementationProps(child_element, props)
|
|
2000
|
+
|
|
2001
|
+
def writeImplementationDataTypeSymbolProps(self, element: ET.Element, data_type: ImplementationDataType):
|
|
2002
|
+
self.writeSymbolProps(element, data_type.getSymbolProps())
|
|
2003
|
+
|
|
1992
2004
|
def writeImplementationDataType(self, element: ET.Element, data_type: ImplementationDataType):
|
|
1993
2005
|
self.logger.debug("writeImplementationDataType %s" % data_type.getShortName())
|
|
1994
2006
|
child_element = ET.SubElement(element, "IMPLEMENTATION-DATA-TYPE")
|
|
1995
2007
|
self.setAutosarDataType(child_element, data_type)
|
|
1996
2008
|
self.setChildElementOptionalLiteral(child_element, "DYNAMIC-ARRAY-SIZE-PROFILE", data_type.getDynamicArraySizeProfile())
|
|
1997
2009
|
self.writeImplementationDataTypeElements(child_element, data_type)
|
|
2010
|
+
self.writeImplementationDataTypeSymbolProps(child_element, data_type)
|
|
1998
2011
|
self.setChildElementOptionalLiteral(child_element, "TYPE-EMITTER", data_type.getTypeEmitter())
|
|
1999
2012
|
|
|
2000
2013
|
def writeArgumentDataPrototypes(self, element: ET.Element, parent: ClientServerOperation):
|
|
@@ -2387,20 +2400,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2387
2400
|
self.notImplemented("Unsupported Nm Cluster <%s>" % type(cluster))
|
|
2388
2401
|
|
|
2389
2402
|
def writeNmConfig(self, element: ET.Element, config: NmConfig):
|
|
2390
|
-
self.logger.debug("
|
|
2403
|
+
self.logger.debug("Write NmConfig <%s>" % config.getShortName())
|
|
2391
2404
|
child_element = ET.SubElement(element, "NM-CONFIG")
|
|
2392
2405
|
self.writeIdentifiable(child_element, config)
|
|
2393
2406
|
self.writeNmConfigNmClusters(child_element, config)
|
|
2394
2407
|
self.writeNmConfigNmClusterCouplings(child_element, config)
|
|
2395
2408
|
|
|
2396
2409
|
def writeNmPdu(self, element: ET.Element, pdu: NmPdu):
|
|
2397
|
-
self.logger.debug("NmPdu
|
|
2410
|
+
self.logger.debug("Write NmPdu <%s>" % pdu.getShortName())
|
|
2398
2411
|
child_element = ET.SubElement(element, "NM-PDU")
|
|
2399
2412
|
self.writeIdentifiable(child_element, pdu)
|
|
2400
2413
|
self.writeIPdu(child_element, pdu)
|
|
2401
2414
|
|
|
2402
2415
|
def writeNPdu(self, element: ET.Element, pdu: NPdu):
|
|
2403
|
-
self.logger.debug("NPdu
|
|
2416
|
+
self.logger.debug("Write NPdu <%s>" % pdu.getShortName())
|
|
2404
2417
|
child_element = ET.SubElement(element, "N-PDU")
|
|
2405
2418
|
self.writeIdentifiable(child_element, pdu)
|
|
2406
2419
|
self.writeIPdu(child_element, pdu)
|
|
@@ -2409,23 +2422,28 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2409
2422
|
self.setChildElementOptionalLiteral(element, "LENGTH", pdu.getLength())
|
|
2410
2423
|
|
|
2411
2424
|
def writeDcmIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
2412
|
-
self.logger.debug("DcmIPdu
|
|
2425
|
+
self.logger.debug("Write DcmIPdu <%s>" % pdu.getShortName())
|
|
2413
2426
|
child_element = ET.SubElement(element, "DCM-I-PDU")
|
|
2414
2427
|
self.writeIdentifiable(child_element, pdu)
|
|
2415
2428
|
self.writeIPdu(child_element, pdu)
|
|
2416
2429
|
self.setChildElementOptionalLiteral(child_element, "DIAG-PDU-TYPE", pdu.getDiagPduType())
|
|
2417
2430
|
|
|
2418
2431
|
def writeSecuredIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
2419
|
-
self.logger.debug("SecuredIPdu
|
|
2432
|
+
self.logger.debug("Write SecuredIPdu <%s>" % pdu.getShortName())
|
|
2420
2433
|
child_element = ET.SubElement(element, "SECURED-I-PDU")
|
|
2421
2434
|
self.writeIdentifiable(child_element, pdu)
|
|
2422
2435
|
self.writeIPdu(child_element, pdu)
|
|
2423
2436
|
|
|
2424
2437
|
def writeCanTpConfig(self, element: ET.Element, config: CanTpConfig):
|
|
2425
|
-
self.logger.debug("CanTpConfig
|
|
2438
|
+
self.logger.debug("Write CanTpConfig <%s>" % config.getShortName())
|
|
2426
2439
|
child_element = ET.SubElement(element, "CAN-TP-CONFIG")
|
|
2427
2440
|
self.writeIdentifiable(child_element, config)
|
|
2428
2441
|
|
|
2442
|
+
def writeLinTpConfig(self, element: ET.Element, config: LinTpConfig):
|
|
2443
|
+
self.logger.debug("Write LinTpConfig <%s>" % config.getShortName())
|
|
2444
|
+
child_element = ET.SubElement(element, "LIN-TP-CONFIG")
|
|
2445
|
+
self.writeIdentifiable(child_element, config)
|
|
2446
|
+
|
|
2429
2447
|
def writeFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
|
|
2430
2448
|
ref_list = triggering.getFramePortRefs()
|
|
2431
2449
|
if len(ref_list) > 0:
|
|
@@ -2666,7 +2684,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2666
2684
|
def writeSocketConnectionBundle(self, element: ET.Element, bundle: SocketConnectionBundle):
|
|
2667
2685
|
if bundle is not None:
|
|
2668
2686
|
child_element = ET.SubElement(element, "SOCKET-CONNECTION-BUNDLE")
|
|
2669
|
-
self.
|
|
2687
|
+
self.writeReferrable(child_element, bundle)
|
|
2670
2688
|
self.writeSocketConnectionBundleConnections(child_element, bundle)
|
|
2671
2689
|
self.setChildElementOptionalRefType(child_element, "SERVER-PORT-REF", bundle.getServerPortRef())
|
|
2672
2690
|
|
|
@@ -2750,12 +2768,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2750
2768
|
self.setChildElementOptionalPositiveInteger(child_element, "TTL", config.getTtl())
|
|
2751
2769
|
|
|
2752
2770
|
def writeConsumedEventGroup(self, element: ET.Element, group: ConsumedEventGroup):
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2771
|
+
if group is not None:
|
|
2772
|
+
child_element = ET.SubElement(element, "CONSUMED-EVENT-GROUP")
|
|
2773
|
+
self.writeIdentifiable(child_element, group)
|
|
2774
|
+
self.setChildElementOptionalRefType(child_element, "APPLICATION-ENDPOINT-REF", group.getApplicationEndpointRef())
|
|
2775
|
+
self.setChildElementOptionalPositiveInteger(child_element, "EVENT-GROUP-IDENTIFIER", group.getEventGroupIdentifier())
|
|
2776
|
+
self.writeConsumedEventGroupRoutingGroupRefs(child_element, group)
|
|
2777
|
+
self.setSdClientConfig(child_element, "SD-CLIENT-CONFIG", group.getSdClientConfig())
|
|
2759
2778
|
|
|
2760
2779
|
def writeConsumedServiceInstanceConsumedEventGroups(self, element: ET.Element, instance: ConsumedServiceInstance):
|
|
2761
2780
|
groups = instance.getConsumedEventGroups()
|
|
@@ -2768,11 +2787,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2768
2787
|
self.notImplemented("Unsupported ConsumedEventGroups <%s>" % type(group))
|
|
2769
2788
|
|
|
2770
2789
|
def writeConsumedServiceInstance(self, element: ET.Element, instance: ConsumedServiceInstance):
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2790
|
+
if instance is not None:
|
|
2791
|
+
child_element = ET.SubElement(element, "CONSUMED-SERVICE-INSTANCE")
|
|
2792
|
+
self.writeIdentifiable(child_element, instance)
|
|
2793
|
+
self.writeConsumedServiceInstanceConsumedEventGroups(child_element, instance)
|
|
2794
|
+
self.setChildElementOptionalRefType(child_element, "PROVIDED-SERVICE-INSTANCE-REF", instance.getProvidedServiceInstanceRef())
|
|
2795
|
+
self.setSdClientConfig(child_element, "SD-CLIENT-CONFIG", instance.getSdClientConfig())
|
|
2776
2796
|
|
|
2777
2797
|
def writeSocketAddressApplicationEndpointConsumedServiceInstances(self, element: ET.Element, end_point: ApplicationEndpoint):
|
|
2778
2798
|
instances = end_point.getConsumedServiceInstances()
|
|
@@ -2784,6 +2804,74 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2784
2804
|
else:
|
|
2785
2805
|
self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % type(instance))
|
|
2786
2806
|
|
|
2807
|
+
def setInitialSdDelayConfig(self, element: ET.Element, key: str, config: InitialSdDelayConfig):
|
|
2808
|
+
if config is not None:
|
|
2809
|
+
child_element = ET.SubElement(element, key)
|
|
2810
|
+
self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MAX-VALUE", config.getInitialDelayMaxValue())
|
|
2811
|
+
self.setChildElementOptionalTimeValue(child_element, "INITIAL-DELAY-MIN-VALUE", config.getInitialDelayMinValue())
|
|
2812
|
+
self.setChildElementOptionalTimeValue(child_element, "INITIAL-REPETITIONS-BASE-DELAY", config.getInitialRepetitionsBaseDelay())
|
|
2813
|
+
self.setChildElementOptionalPositiveInteger(child_element, "INITIAL-REPETITIONS-MAX", config.getInitialRepetitionsMax())
|
|
2814
|
+
|
|
2815
|
+
def setSdServerConfig(self, element: ET.Element, key: str, config: SdServerConfig):
|
|
2816
|
+
if config is not None:
|
|
2817
|
+
child_element = ET.SubElement(element, key)
|
|
2818
|
+
self.setInitialSdDelayConfig(child_element, "INITIAL-OFFER-BEHAVIOR", config.getInitialOfferBehavior())
|
|
2819
|
+
self.setChildElementOptionalTimeValue(child_element, "OFFER-CYCLIC-DELAY", config.getOfferCyclicDelay())
|
|
2820
|
+
self.setRequestResponseDelay(child_element, "REQUEST-RESPONSE-DELAY", config.getRequestResponseDelay())
|
|
2821
|
+
self.setChildElementOptionalPositiveInteger(child_element, "SERVER-SERVICE-MAJOR-VERSION", config.getServerServiceMajorVersion())
|
|
2822
|
+
self.setChildElementOptionalPositiveInteger(child_element, "SERVER-SERVICE-MINOR-VERSION", config.getServerServiceMinorVersion())
|
|
2823
|
+
self.setChildElementOptionalPositiveInteger(child_element, "TTL", config.getTtl())
|
|
2824
|
+
|
|
2825
|
+
def writeEventHandler(self, element: ET.Element, handler: EventHandler):
|
|
2826
|
+
if handler is not None:
|
|
2827
|
+
child_element = ET.SubElement(element, "EVENT-HANDLER")
|
|
2828
|
+
self.writeIdentifiable(child_element, handler)
|
|
2829
|
+
self.setChildElementOptionalRefType(child_element, "APPLICATION-ENDPOINT-REF", handler.getApplicationEndpointRef())
|
|
2830
|
+
|
|
2831
|
+
refs = handler.getConsumedEventGroupRefs()
|
|
2832
|
+
if len(refs) > 0:
|
|
2833
|
+
refs_tag = ET.SubElement(child_element, "CONSUMED-EVENT-GROUP-REFS")
|
|
2834
|
+
for ref in refs:
|
|
2835
|
+
self.setChildElementOptionalRefType(refs_tag, "CONSUMED-EVENT-GROUP-REF", ref)
|
|
2836
|
+
|
|
2837
|
+
self.setChildElementOptionalPositiveInteger(child_element, "MULTICAST-THRESHOLD", handler.getMulticastThreshold())
|
|
2838
|
+
|
|
2839
|
+
refs = handler.getRoutingGroupRefs()
|
|
2840
|
+
if len(refs) > 0:
|
|
2841
|
+
refs_tag = ET.SubElement(child_element, "ROUTING-GROUP-REFS")
|
|
2842
|
+
for ref in refs:
|
|
2843
|
+
self.setChildElementOptionalRefType(refs_tag, "ROUTING-GROUP-REF", ref)
|
|
2844
|
+
self.setSdServerConfig(child_element, "SD-SERVER-CONFIG", handler.getSdServerConfig())
|
|
2845
|
+
|
|
2846
|
+
def writeProvidedServiceInstanceEventHandlers(self, element: ET.Element, instance: ProvidedServiceInstance):
|
|
2847
|
+
handlers = instance.getEventHandlers()
|
|
2848
|
+
if len(handlers) > 0:
|
|
2849
|
+
child_element = ET.SubElement(element, "EVENT-HANDLERS")
|
|
2850
|
+
for handler in handlers:
|
|
2851
|
+
if isinstance(handler, EventHandler):
|
|
2852
|
+
self.writeEventHandler(child_element, handler)
|
|
2853
|
+
else:
|
|
2854
|
+
self.notImplemented("Unsupported Event Handler <%s>" % type(handler))
|
|
2855
|
+
|
|
2856
|
+
def writeProvidedServiceInstance(self, element: ET.Element, instance: ProvidedServiceInstance):
|
|
2857
|
+
if instance is not None:
|
|
2858
|
+
child_element = ET.SubElement(element, "PROVIDED-SERVICE-INSTANCE")
|
|
2859
|
+
self.writeIdentifiable(child_element, instance)
|
|
2860
|
+
self.writeProvidedServiceInstanceEventHandlers(child_element, instance)
|
|
2861
|
+
self.setChildElementOptionalPositiveInteger(child_element, "INSTANCE-IDENTIFIER", instance.getInstanceIdentifier())
|
|
2862
|
+
self.setSdServerConfig(child_element, "SD-SERVER-CONFIG", instance.getSdServerConfig())
|
|
2863
|
+
self.setChildElementOptionalPositiveInteger(child_element, "SERVICE-IDENTIFIER", instance.getServiceIdentifier())
|
|
2864
|
+
|
|
2865
|
+
def writeSocketAddressApplicationEndpointProvidedServiceInstance(self, element: ET.Element, end_point: ApplicationEndpoint):
|
|
2866
|
+
instances = end_point.getProvidedServiceInstances()
|
|
2867
|
+
if len(instances) > 0:
|
|
2868
|
+
child_element = ET.SubElement(element, "PROVIDED-SERVICE-INSTANCES")
|
|
2869
|
+
for instance in instances:
|
|
2870
|
+
if isinstance(instance, ProvidedServiceInstance):
|
|
2871
|
+
self.writeProvidedServiceInstance(child_element, instance)
|
|
2872
|
+
else:
|
|
2873
|
+
self.notImplemented("Unsupported ConsumedServiceInstances <%s>" % type(instance))
|
|
2874
|
+
|
|
2787
2875
|
def writeSocketAddressApplicationEndpoint(self, element: ET.Element, address: SocketAddress):
|
|
2788
2876
|
end_point = address.getApplicationEndpoint()
|
|
2789
2877
|
if end_point is not None:
|
|
@@ -2792,6 +2880,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2792
2880
|
self.writeSocketAddressApplicationEndpointConsumedServiceInstances(child_element, end_point)
|
|
2793
2881
|
self.setChildElementOptionalRefType(child_element, "NETWORK-ENDPOINT-REF", end_point.getNetworkEndpointRef())
|
|
2794
2882
|
self.setChildElementOptionalPositiveInteger(child_element, "PRIORITY", end_point.getPriority())
|
|
2883
|
+
self.writeSocketAddressApplicationEndpointProvidedServiceInstance(child_element, end_point)
|
|
2795
2884
|
self.writeTransportProtocolConfiguration(child_element, end_point.getTpConfiguration())
|
|
2796
2885
|
|
|
2797
2886
|
def writeSocketAddressMulticastConnectorRefs(self, element: ET.Element, address: SocketAddress):
|
|
@@ -2891,14 +2980,31 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2891
2980
|
self.writeCommunicationCluster(child_element, cluster)
|
|
2892
2981
|
self.writeAbstractCanCluster(child_element, cluster)
|
|
2893
2982
|
|
|
2983
|
+
def writeMacMulticastGroup(self, element: ET.Element, group: MacMulticastGroup):
|
|
2984
|
+
if group is not None:
|
|
2985
|
+
child_element = ET.SubElement(element, "MAC-MULTICAST-GROUP")
|
|
2986
|
+
self.writeIdentifiable(child_element, group)
|
|
2987
|
+
self.setChildElementOptionalLiteral(child_element, "MAC-MULTICAST-ADDRESS", group.getMacMulticastAddress())
|
|
2988
|
+
|
|
2989
|
+
def writeEthernetClusterMacMulticastGroups(self, element: ET.Element, cluster: EthernetCluster):
|
|
2990
|
+
groups = cluster.getMacMulticastGroups()
|
|
2991
|
+
if len(groups) > 0:
|
|
2992
|
+
child_element = ET.SubElement(element, "MAC-MULTICAST-GROUPS")
|
|
2993
|
+
for group in groups:
|
|
2994
|
+
if isinstance(group, MacMulticastGroup):
|
|
2995
|
+
self.writeMacMulticastGroup(child_element, group)
|
|
2996
|
+
else:
|
|
2997
|
+
self.notImplemented("Unsupported assigned data type <%s>" % type(group))
|
|
2998
|
+
|
|
2894
2999
|
def writeEthernetCluster(self, element: ET.Element, cluster: EthernetCluster):
|
|
2895
3000
|
self.logger.debug("Set EthernetCluster %s" % cluster.getShortName())
|
|
2896
3001
|
child_element = ET.SubElement(element, "ETHERNET-CLUSTER")
|
|
2897
|
-
self.
|
|
3002
|
+
self.writeARElement(child_element, cluster)
|
|
2898
3003
|
|
|
2899
3004
|
child_element = ET.SubElement(child_element, "ETHERNET-CLUSTER-VARIANTS")
|
|
2900
3005
|
child_element = ET.SubElement(child_element, "ETHERNET-CLUSTER-CONDITIONAL")
|
|
2901
3006
|
self.writeCommunicationCluster(child_element, cluster)
|
|
3007
|
+
self.writeEthernetClusterMacMulticastGroups(child_element, cluster)
|
|
2902
3008
|
|
|
2903
3009
|
def writeCanFrame(self, element: ET.Element, frame: CanFrame):
|
|
2904
3010
|
self.logger.debug("Write CanFrame %s" % frame.getShortName())
|
|
@@ -2916,10 +3022,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2916
3022
|
def writeIPduPort(self, element: ET.Element, port: IPduPort):
|
|
2917
3023
|
child_element = ET.SubElement(element, "I-PDU-PORT")
|
|
2918
3024
|
self.writeCommConnectorPort(child_element, port)
|
|
3025
|
+
self.setChildElementOptionalPositiveInteger(child_element, "KEY-ID", port.getKeyId())
|
|
3026
|
+
self.setChildElementOptionalBooleanValue(child_element, "RX-SECURITY-VERIFICATION", port.getRxSecurityVerification())
|
|
3027
|
+
self.setChildElementOptionalBooleanValue(child_element, "USE-AUTH-DATA-FRESHNESS", port.getUseAuthDataFreshness())
|
|
2919
3028
|
|
|
2920
3029
|
def writeISignalPort(self, element: ET.Element, port: ISignalPort):
|
|
2921
3030
|
child_element = ET.SubElement(element, "I-SIGNAL-PORT")
|
|
2922
3031
|
self.writeCommConnectorPort(child_element, port)
|
|
3032
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT", port.getTimeout())
|
|
2923
3033
|
|
|
2924
3034
|
def writeCommunicationConnectorEcuCommPortInstances(self, element: ET.Element, connector: CommunicationConnector):
|
|
2925
3035
|
self.logger.debug("write EcuCommPortInstances of CommunicationConnector %s" % connector.getShortName())
|
|
@@ -2934,17 +3044,156 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2934
3044
|
elif isinstance(port, ISignalPort):
|
|
2935
3045
|
self.writeISignalPort(instances_tag, port)
|
|
2936
3046
|
else:
|
|
2937
|
-
self._raiseError("Unsupported CommConnectorPort <%s>" % type(port))
|
|
3047
|
+
self._raiseError("Unsupported CommConnectorPort <%s>" % type(port))
|
|
3048
|
+
|
|
3049
|
+
def writeCommunicationController(self, element: ET.Element, controller: CommunicationController):
|
|
3050
|
+
self.setChildElementOptionalBooleanValue(element, "WAKE-UP-BY-CONTROLLER-SUPPORTED", controller.getWakeUpByControllerSupported())
|
|
3051
|
+
|
|
3052
|
+
def setCanControllerFdConfiguration(self, element: ET.Element, key: str, configuration: CanControllerFdConfiguration):
|
|
3053
|
+
if configuration is not None:
|
|
3054
|
+
child_element = ET.SubElement(element, key)
|
|
3055
|
+
#TODO: need to implemented
|
|
3056
|
+
|
|
3057
|
+
def setCanControllerFdConfigurationRequirements(self, element: ET.Element, key: str, requirements: CanControllerFdConfigurationRequirements):
|
|
3058
|
+
if requirements is not None:
|
|
3059
|
+
child_element = ET.SubElement(element, key)
|
|
3060
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMaxNumberOfTimeQuantaPerBit())
|
|
3061
|
+
self.setChildElementOptionalFloatValue(child_element, "MAX-SAMPLE-POINT", requirements.getMaxSamplePoint())
|
|
3062
|
+
self.setChildElementOptionalFloatValue(child_element, "MAX-SYNC-JUMP-WIDTH", requirements.getMaxSyncJumpWidth())
|
|
3063
|
+
self.setChildElementOptionalTimeValue(child_element, "MAX-TRCV-DELAY-COMPENSATION-OFFSET", requirements.getMaxTrcvDelayCompensationOffset())
|
|
3064
|
+
self.setChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMinNumberOfTimeQuantaPerBit())
|
|
3065
|
+
self.setChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT", requirements.getMinSamplePoint())
|
|
3066
|
+
self.setChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH", requirements.getMinSyncJumpWidth())
|
|
3067
|
+
self.setChildElementOptionalTimeValue(child_element, "MIN-TRCV-DELAY-COMPENSATION-OFFSET", requirements.getMinTrcvDelayCompensationOffset())
|
|
3068
|
+
self.setChildElementOptionalBooleanValue(child_element, "TX-BIT-RATE-SWITCH", requirements.getTxBitRateSwitch())
|
|
3069
|
+
|
|
3070
|
+
def writeAbstractCanCommunicationControllerAttributes(self, element: ET.Element, attributes: AbstractCanCommunicationControllerAttributes):
|
|
3071
|
+
self.setCanControllerFdConfiguration(element, "CAN-CONTROLLER-FD-CONFIGURATION", attributes.getCanControllerFdAttributes())
|
|
3072
|
+
self.setCanControllerFdConfigurationRequirements(element, "CAN-CONTROLLER-FD-REQUIREMENTS", attributes.getCanControllerFdRequirements())
|
|
3073
|
+
|
|
3074
|
+
def writeCanControllerConfigurationRequirements(self, element: ET.Element, requirements: CanControllerConfigurationRequirements):
|
|
3075
|
+
if requirements is not None:
|
|
3076
|
+
child_element = ET.SubElement(element, "CAN-CONTROLLER-CONFIGURATION-REQUIREMENTS")
|
|
3077
|
+
self.writeAbstractCanCommunicationControllerAttributes(child_element, requirements)
|
|
3078
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAX-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMaxNumberOfTimeQuantaPerBit())
|
|
3079
|
+
self.setChildElementOptionalFloatValue(child_element, "MAX-SAMPLE-POINT", requirements.getMaxSamplePoint())
|
|
3080
|
+
self.setChildElementOptionalFloatValue(child_element, "MAX-SYNC-JUMP-WIDTH", requirements.getMaxSyncJumpWidth())
|
|
3081
|
+
self.setChildElementOptionalIntegerValue(child_element, "MIN-NUMBER-OF-TIME-QUANTA-PER-BIT", requirements.getMinNumberOfTimeQuantaPerBit())
|
|
3082
|
+
self.setChildElementOptionalFloatValue(child_element, "MIN-SAMPLE-POINT", requirements.getMinSamplePoint())
|
|
3083
|
+
self.setChildElementOptionalFloatValue(child_element, "MIN-SYNC-JUMP-WIDTH", requirements.getMinSyncJumpWidth())
|
|
3084
|
+
|
|
3085
|
+
def writeAbstractCanCommunicationControllerCanControllerAttributes(self, element: ET.SubElement, controller: AbstractCanCommunicationController):
|
|
3086
|
+
attributes = controller.getCanControllerAttributes()
|
|
3087
|
+
if attributes is not None:
|
|
3088
|
+
child_element = ET.SubElement(element, "CAN-CONTROLLER-ATTRIBUTES")
|
|
3089
|
+
if isinstance(attributes, CanControllerConfigurationRequirements):
|
|
3090
|
+
self.writeCanControllerConfigurationRequirements(child_element, attributes)
|
|
3091
|
+
else:
|
|
3092
|
+
self.notImplemented("Unsupported CanControllerAttributes <%s>" % type(attributes))
|
|
3093
|
+
|
|
3094
|
+
def writeAbstractCanCommunicationController(self, element: ET.Element, controller: AbstractCanCommunicationController):
|
|
3095
|
+
self.writeCommunicationController(element, controller)
|
|
3096
|
+
self.writeAbstractCanCommunicationControllerCanControllerAttributes(element, controller)
|
|
2938
3097
|
|
|
2939
3098
|
def writeCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
|
|
2940
3099
|
child_element = ET.SubElement(element, "CAN-COMMUNICATION-CONTROLLER")
|
|
2941
3100
|
self.logger.debug("Write CanCommunicationController %s" % controller.getShortName())
|
|
2942
3101
|
self.writeIdentifiable(child_element, controller)
|
|
3102
|
+
variants_tag = ET.SubElement(child_element, "CAN-COMMUNICATION-CONTROLLER-VARIANTS")
|
|
3103
|
+
cond_tag = ET.SubElement(variants_tag, "CAN-COMMUNICATION-CONTROLLER-CONDITIONAL")
|
|
3104
|
+
self.writeAbstractCanCommunicationController(cond_tag, controller)
|
|
3105
|
+
|
|
3106
|
+
def writeCouplingPortSchedulerCouplingPortStructuralElement(self, element: ET.Element, item: CouplingPortStructuralElement):
|
|
3107
|
+
self.writeIdentifiable(element, item)
|
|
3108
|
+
|
|
3109
|
+
def writeCouplingPortFifo(self, element: ET.Element, fifo: CouplingPortFifo):
|
|
3110
|
+
if fifo is not None:
|
|
3111
|
+
child_element = ET.SubElement(element, "COUPLING-PORT-FIFO")
|
|
3112
|
+
self.writeCouplingPortSchedulerCouplingPortStructuralElement(child_element, fifo)
|
|
3113
|
+
|
|
3114
|
+
def writeCouplingPortScheduler(self, element: ET.Element, scheduler: CouplingPortScheduler):
|
|
3115
|
+
if scheduler is not None:
|
|
3116
|
+
child_element = ET.SubElement(element, "COUPLING-PORT-SCHEDULER")
|
|
3117
|
+
self.writeCouplingPortSchedulerCouplingPortStructuralElement(child_element, scheduler)
|
|
3118
|
+
self.setChildElementOptionalLiteral(child_element, "PORT-SCHEDULER", scheduler.getPortScheduler())
|
|
3119
|
+
|
|
3120
|
+
def writeCouplingPortDetailsCouplingPortStructuralElements(self, element: ET.Element, details: CouplingPortDetails):
|
|
3121
|
+
items = details.getCouplingPortStructuralElements()
|
|
3122
|
+
if len(items) > 0:
|
|
3123
|
+
child_element = ET.SubElement(element, "COUPLING-PORT-STRUCTURAL-ELEMENTS")
|
|
3124
|
+
for item in items:
|
|
3125
|
+
if isinstance(item, CouplingPortFifo):
|
|
3126
|
+
self.writeCouplingPortFifo(child_element, item)
|
|
3127
|
+
elif isinstance(item, CouplingPortScheduler):
|
|
3128
|
+
self.writeCouplingPortScheduler(child_element, item)
|
|
3129
|
+
else:
|
|
3130
|
+
self.notImplemented("Unsupported CouplingPortStructuralElement <%s>" % type(item))
|
|
3131
|
+
|
|
3132
|
+
def writeEthernetPriorityRegeneration(self, element: ET.Element, regeneration: EthernetPriorityRegeneration):
|
|
3133
|
+
if regeneration is not None:
|
|
3134
|
+
child_element = ET.SubElement(element, "ETHERNET-PRIORITY-REGENERATION")
|
|
3135
|
+
self.writeReferrable(child_element, regeneration)
|
|
3136
|
+
self.setChildElementOptionalPositiveInteger(child_element, "INGRESS-PRIORITY", regeneration.getIngressPriority())
|
|
3137
|
+
self.setChildElementOptionalPositiveInteger(child_element, "REGENERATED-PRIORITY", regeneration.getRegeneratedPriority())
|
|
3138
|
+
|
|
3139
|
+
def writeCouplingPortDetailsEthernetPriorityRegenerations(self, element: ET.Element, details: CouplingPortDetails):
|
|
3140
|
+
regenerations = details.getEthernetPriorityRegenerations()
|
|
3141
|
+
if len(regenerations) > 0:
|
|
3142
|
+
child_element = ET.SubElement(element, "ETHERNET-PRIORITY-REGENERATIONS")
|
|
3143
|
+
for regeneration in regenerations:
|
|
3144
|
+
if isinstance(regeneration, EthernetPriorityRegeneration):
|
|
3145
|
+
self.writeEthernetPriorityRegeneration(child_element, regeneration)
|
|
3146
|
+
else:
|
|
3147
|
+
self.notImplemented("Unsupported EthernetPriorityRegeneration <%s>" % type(regeneration))
|
|
3148
|
+
|
|
3149
|
+
def setCouplingPortDetails(self, element: ET.Element, key: str, details: CouplingPortDetails):
|
|
3150
|
+
if details is not None:
|
|
3151
|
+
child_element = ET.SubElement(element, key)
|
|
3152
|
+
self.writeCouplingPortDetailsCouplingPortStructuralElements(child_element, details)
|
|
3153
|
+
self.writeCouplingPortDetailsEthernetPriorityRegenerations(child_element, details)
|
|
3154
|
+
self.setChildElementOptionalRefType(child_element, "LAST-EGRESS-SCHEDULER-REF", details.getLastEgressSchedulerRef())
|
|
3155
|
+
|
|
3156
|
+
def writeVlanMembership(self, element: ET.Element, membership: VlanMembership):
|
|
3157
|
+
if membership is not None:
|
|
3158
|
+
child_element = ET.SubElement(element, "VLAN-MEMBERSHIP")
|
|
3159
|
+
self.setChildElementOptionalLiteral(child_element, "SEND-ACTIVITY", membership.getSendActivity())
|
|
3160
|
+
self.setChildElementOptionalRefType(child_element, "VLAN-REF", membership.getVlanRef())
|
|
3161
|
+
|
|
3162
|
+
def writeCouplingPortVlanMemberships(self, element: ET.Element, port: CouplingPort):
|
|
3163
|
+
memberships = port.getVlanMemberships()
|
|
3164
|
+
if len(memberships) > 0:
|
|
3165
|
+
child_element = ET.SubElement(element, "VLAN-MEMBERSHIPS")
|
|
3166
|
+
for membership in memberships:
|
|
3167
|
+
if isinstance(membership, VlanMembership):
|
|
3168
|
+
self.writeVlanMembership(child_element, membership)
|
|
3169
|
+
else:
|
|
3170
|
+
self.notImplemented("Unsupported VlanMembership <%s>" % type(membership))
|
|
3171
|
+
|
|
3172
|
+
def writeCouplingPort(self, element: ET.Element, port: CouplingPort):
|
|
3173
|
+
child_element = ET.SubElement(element, "COUPLING-PORT")
|
|
3174
|
+
self.writeIdentifiable(child_element, port)
|
|
3175
|
+
self.setCouplingPortDetails(child_element, "COUPLING-PORT-DETAILS", port.getCouplingPortDetails())
|
|
3176
|
+
self.setChildElementOptionalLiteral(child_element, "MAC-LAYER-TYPE", port.getMacAddressVlanAssignments())
|
|
3177
|
+
self.writeCouplingPortVlanMemberships(child_element, port)
|
|
3178
|
+
|
|
3179
|
+
def writeEthernetCommunicationControllerCouplingPorts(self, element: ET.Element, controller: EthernetCommunicationController):
|
|
3180
|
+
ports = controller.getCouplingPorts()
|
|
3181
|
+
if len(ports) > 0:
|
|
3182
|
+
child_element = ET.SubElement(element, "COUPLING-PORTS")
|
|
3183
|
+
for port in ports:
|
|
3184
|
+
if isinstance(port, CouplingPort):
|
|
3185
|
+
self.writeCouplingPort(child_element, port)
|
|
3186
|
+
else:
|
|
3187
|
+
self.notImplemented("Unsupported Coupling Port <%s>" % type(port))
|
|
2943
3188
|
|
|
2944
3189
|
def writeEthernetCommunicationController(self, element: ET.Element, controller: EthernetCommunicationController):
|
|
2945
3190
|
child_element = ET.SubElement(element, "ETHERNET-COMMUNICATION-CONTROLLER")
|
|
2946
3191
|
self.logger.debug("Write EthernetCommunicationController %s" % controller.getShortName())
|
|
2947
3192
|
self.writeIdentifiable(child_element, controller)
|
|
3193
|
+
variants_tag = ET.SubElement(child_element, "ETHERNET-COMMUNICATION-CONTROLLER-VARIANTS")
|
|
3194
|
+
cond_tag = ET.SubElement(variants_tag, "ETHERNET-COMMUNICATION-CONTROLLER-CONDITIONAL")
|
|
3195
|
+
self.writeCommunicationController(cond_tag, controller)
|
|
3196
|
+
self.writeEthernetCommunicationControllerCouplingPorts(cond_tag, controller)
|
|
2948
3197
|
|
|
2949
3198
|
def writeEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
|
|
2950
3199
|
controllers = instance.getCommControllers()
|
|
@@ -2964,6 +3213,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2964
3213
|
self.writeIdentifiable(element, connector)
|
|
2965
3214
|
self.setChildElementOptionalRefType(element, "COMM-CONTROLLER-REF", connector.getCommControllerRef())
|
|
2966
3215
|
self.writeCommunicationConnectorEcuCommPortInstances(element, connector)
|
|
3216
|
+
self.setChildElementOptionalLiteral(element, "PNC-GATEWAY-TYPE", connector.getPncGatewayType())
|
|
2967
3217
|
|
|
2968
3218
|
def writeCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
|
|
2969
3219
|
self.logger.debug("Write CanCommunicationConnector %s" % connector.getShortName())
|
|
@@ -2972,6 +3222,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2972
3222
|
def writeEthernetCommunicationConnector(self, element: ET.Element, connector: EthernetCommunicationConnector):
|
|
2973
3223
|
self.logger.debug("Write EthernetCommunicationConnector %s" % connector.getShortName())
|
|
2974
3224
|
self.writeCommunicationConnector(element, connector)
|
|
3225
|
+
self.setChildElementOptionalPositiveInteger(element, "MAXIMUM-TRANSMISSION-UNIT", connector.getMaximumTransmissionUnit())
|
|
2975
3226
|
|
|
2976
3227
|
def writeLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
|
|
2977
3228
|
self.logger.debug("Write LinCommunicationConnector %s" % connector.getShortName())
|
|
@@ -2994,10 +3245,18 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2994
3245
|
else:
|
|
2995
3246
|
self._raiseError("Unsupported Communication connector <%s>" % type(connector))
|
|
2996
3247
|
|
|
3248
|
+
def writeEcuInstanceAssociatedComIPduGroupRefs(self, element: ET.Element, instance: EcuInstance):
|
|
3249
|
+
refs = instance.getAssociatedComIPduGroupRefs()
|
|
3250
|
+
if len(refs) > 0:
|
|
3251
|
+
child_element = ET.SubElement(element, "ASSOCIATED-COM-I-PDU-GROUP-REFS")
|
|
3252
|
+
for ref in refs:
|
|
3253
|
+
self.setChildElementOptionalRefType(child_element, "ASSOCIATED-COM-I-PDU-GROUP-REF", ref)
|
|
3254
|
+
|
|
2997
3255
|
def writeEcuInstance(self, element: ET.Element, instance: EcuInstance):
|
|
2998
3256
|
self.logger.debug("EcuInstance %s" % instance.getShortName())
|
|
2999
3257
|
child_element = ET.SubElement(element, "ECU-INSTANCE")
|
|
3000
3258
|
self.writeIdentifiable(child_element, instance)
|
|
3259
|
+
self.writeEcuInstanceAssociatedComIPduGroupRefs(child_element, instance)
|
|
3001
3260
|
self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-GW-TIME-BASE", instance.getComConfigurationGwTimeBase())
|
|
3002
3261
|
self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-RX-TIME-BASE", instance.getComConfigurationRxTimeBase())
|
|
3003
3262
|
self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-TX-TIME-BASE", instance.getComConfigurationTxTimeBase())
|
|
@@ -3086,20 +3345,21 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3086
3345
|
self.writeIdentifiable(child_element, prototype)
|
|
3087
3346
|
self.setChildElementOptionalRefType(child_element, "FLAT-MAP-REF", prototype.getFlatMapRef())
|
|
3088
3347
|
self.setChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF", prototype.getSoftwareCompositionTRef())
|
|
3348
|
+
|
|
3349
|
+
def writeSystemFibexElementRefs(self, element: ET.Element, system: System):
|
|
3350
|
+
refs = system.getFibexElementRefs()
|
|
3351
|
+
if len(refs) > 0:
|
|
3352
|
+
fibex_elements_tag = ET.SubElement(element, "FIBEX-ELEMENTS")
|
|
3353
|
+
for ref in refs:
|
|
3354
|
+
child_element = ET.SubElement(fibex_elements_tag, "FIBEX-ELEMENT-REF-CONDITIONAL")
|
|
3355
|
+
self.setChildElementOptionalRefType(child_element, "FIBEX-ELEMENT-REF", ref)
|
|
3089
3356
|
|
|
3090
3357
|
def writeSystem(self, element: ET.Element, system: System):
|
|
3091
3358
|
self.logger.debug("Write System %s" % system.getShortName())
|
|
3092
3359
|
child_element = ET.SubElement(element, "SYSTEM")
|
|
3093
|
-
self.
|
|
3094
|
-
|
|
3360
|
+
self.writeARElement(child_element, system)
|
|
3095
3361
|
self.setChildElementOptionalLiteral(child_element, "ECU-EXTRACT-VERSION", system.getEcuExtractVersion())
|
|
3096
|
-
|
|
3097
|
-
if len(refs) > 0:
|
|
3098
|
-
fibex_elements_tag = ET.SubElement(child_element, "FIBEX-ELEMENTS")
|
|
3099
|
-
for ref in refs:
|
|
3100
|
-
fibex_element_ref_conditional_tag = ET.SubElement(fibex_elements_tag, "FIBEX-ELEMENT-REF-CONDITIONAL")
|
|
3101
|
-
self.setChildElementOptionalRefType(fibex_element_ref_conditional_tag, "FIBEX-ELEMENT-REF", ref)
|
|
3102
|
-
|
|
3362
|
+
self.writeSystemFibexElementRefs(child_element, system)
|
|
3103
3363
|
self.writeSystemMappings(child_element, system)
|
|
3104
3364
|
self.writeRootSwCompositionPrototype(child_element, system)
|
|
3105
3365
|
self.setChildElementOptionalRevisionLabelString(child_element, "SYSTEM-VERSION", system.getSystemVersion())
|
|
@@ -3107,7 +3367,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3107
3367
|
def writePhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
|
|
3108
3368
|
self.logger.debug("Set PhysicalDimension %s" % dimension.getShortName())
|
|
3109
3369
|
child_element = ET.SubElement(element, "PHYSICAL-DIMENSION")
|
|
3110
|
-
self.
|
|
3370
|
+
self.writeARElement(child_element, dimension)
|
|
3111
3371
|
self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
|
|
3112
3372
|
self.setChildElementOptionalNumericalValue(child_element, "LENGTH-EXP", dimension.getLengthExp())
|
|
3113
3373
|
self.setChildElementOptionalNumericalValue(child_element, "TIME-EXP", dimension.getTimeExp())
|
|
@@ -3132,7 +3392,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3132
3392
|
def writeFlatMap(self, element: ET.Element, map: FlatMap):
|
|
3133
3393
|
self.logger.debug("Set FlatMap %s" % map.getShortName())
|
|
3134
3394
|
child_element = ET.SubElement(element, "FLAT-MAP")
|
|
3135
|
-
self.
|
|
3395
|
+
self.writeARElement(child_element, map)
|
|
3136
3396
|
self.writeFlatMapInstances(child_element, map)
|
|
3137
3397
|
|
|
3138
3398
|
def setDataPrototypeMapping(self, element: ET.Element, mapping: DataPrototypeMapping):
|
|
@@ -3165,7 +3425,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3165
3425
|
def writePortInterfaceMappingSet(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
|
|
3166
3426
|
self.logger.debug("Set PortInterfaceMappingSet %s" % mapping_set.getShortName())
|
|
3167
3427
|
child_element = ET.SubElement(element, "PORT-INTERFACE-MAPPING-SET")
|
|
3168
|
-
self.
|
|
3428
|
+
self.writeARElement(child_element, mapping_set)
|
|
3169
3429
|
self.writePortInterfaceMappings(child_element, mapping_set)
|
|
3170
3430
|
|
|
3171
3431
|
def setISignalMappings(self, element: ET.Element, mappings: List[ISignalMapping]):
|
|
@@ -3173,14 +3433,28 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3173
3433
|
mappings_tag = ET.SubElement(element, "SIGNAL-MAPPINGS")
|
|
3174
3434
|
for mapping in mappings:
|
|
3175
3435
|
child_element = ET.SubElement(mappings_tag, "I-SIGNAL-MAPPING")
|
|
3176
|
-
self.setChildElementOptionalRefType(child_element, "SOURCE-SIGNAL-REF", mapping.
|
|
3177
|
-
self.setChildElementOptionalRefType(child_element, "TARGET-SIGNAL-REF", mapping.
|
|
3436
|
+
self.setChildElementOptionalRefType(child_element, "SOURCE-SIGNAL-REF", mapping.getSourceSignalRef())
|
|
3437
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-SIGNAL-REF", mapping.getTargetSignalRef())
|
|
3438
|
+
|
|
3439
|
+
def setTargetIPduRef(self, element: ET.Element, key: str, i_pdu_ref: TargetIPduRef):
|
|
3440
|
+
if i_pdu_ref is not None:
|
|
3441
|
+
child_element = ET.SubElement(element, key)
|
|
3442
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-I-PDU-REF", i_pdu_ref.getTargetIPdu())
|
|
3443
|
+
|
|
3444
|
+
def setIPduMappings(self, element: ET.Element, mappings: List[IPduMapping]):
|
|
3445
|
+
if len(mappings) > 0:
|
|
3446
|
+
mappings_tag = ET.SubElement(element, "I-PDU-MAPPINGS")
|
|
3447
|
+
for mapping in mappings:
|
|
3448
|
+
child_element = ET.SubElement(mappings_tag, "I-PDU-MAPPING")
|
|
3449
|
+
self.setChildElementOptionalRefType(child_element, "SOURCE-I-PDU-REF", mapping.getSourceIpduRef())
|
|
3450
|
+
self.setTargetIPduRef(child_element, "TARGET-I-PDU", mapping.getTargetIPdu())
|
|
3178
3451
|
|
|
3179
3452
|
def writeGateway(self, element: ET.Element, gateway: Gateway):
|
|
3180
3453
|
self.logger.debug("Gateway %s" % gateway.getShortName())
|
|
3181
3454
|
child_element = ET.SubElement(element, "GATEWAY")
|
|
3182
3455
|
self.writeIdentifiable(child_element, gateway)
|
|
3183
3456
|
self.setChildElementOptionalRefType(child_element, "ECU-REF", gateway.ecuRef)
|
|
3457
|
+
self.setIPduMappings(child_element, gateway.getIPduMappings())
|
|
3184
3458
|
self.setISignalMappings(child_element, gateway.getSignalMappings())
|
|
3185
3459
|
|
|
3186
3460
|
def writeISignal(self, element: ET.Element, signal: ISignal):
|
|
@@ -3371,10 +3645,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3371
3645
|
self.setChildElementOptionalRefType(child_element, "PHYSICAL-REQUEST-REF", connection.getPhysicalRequestRef())
|
|
3372
3646
|
self.setChildElementOptionalRefType(child_element, "RESPONSE-REF", connection.getResponseOnEventRef())
|
|
3373
3647
|
|
|
3648
|
+
def writeDiagnosticServiceTableDiagnosticConnectionRefs(self, element: ET.Element, table: DiagnosticServiceTable):
|
|
3649
|
+
refs = table.getDiagnosticConnectionRefs()
|
|
3650
|
+
if len(refs) > 0:
|
|
3651
|
+
refs_tag = ET.SubElement(element, "DIAGNOSTIC-CONNECTIONS")
|
|
3652
|
+
for ref in refs:
|
|
3653
|
+
child_element = ET.SubElement(refs_tag, "DIAGNOSTIC-CONNECTION-REF-CONDITIONAL")
|
|
3654
|
+
self.setChildElementOptionalRefType(child_element, "DIAGNOSTIC-CONNECTION-REF", ref)
|
|
3655
|
+
|
|
3374
3656
|
def writeDiagnosticServiceTable(self, element: ET.Element, table: DiagnosticServiceTable):
|
|
3375
3657
|
self.logger.debug("Write DiagnosticServiceTable %s" % table.getShortName())
|
|
3376
3658
|
child_element = ET.SubElement(element, "DIAGNOSTIC-SERVICE-TABLE")
|
|
3377
3659
|
self.writeIdentifiable(child_element, table)
|
|
3660
|
+
self.writeDiagnosticServiceTableDiagnosticConnectionRefs(child_element, table)
|
|
3661
|
+
self.setChildElementOptionalRefType(child_element, "ECU-INSTANCE-REF", table.getEcuInstanceRef())
|
|
3378
3662
|
|
|
3379
3663
|
def writeMultiplexedIPdu(self, element: ET.Element, i_pdu: MultiplexedIPdu):
|
|
3380
3664
|
self.logger.debug("Write MultiplexedIPdu %s" % i_pdu.getShortName())
|
|
@@ -3416,10 +3700,19 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3416
3700
|
child_element = ET.SubElement(element, "DO-IP-TP-CONFIG")
|
|
3417
3701
|
self.writeIdentifiable(child_element, config)
|
|
3418
3702
|
|
|
3419
|
-
def
|
|
3420
|
-
self.
|
|
3703
|
+
def writeLinCommunicationController(self, element: ET.Element, controller: LinCommunicationController):
|
|
3704
|
+
self.writeCommunicationController(element, controller)
|
|
3705
|
+
self.setChildElementOptionalLiteral(element, "PROTOCOL-VERSION", controller.getProtocolVersion())
|
|
3706
|
+
|
|
3707
|
+
def writeLinMaster(self, element: ET.Element, controller: LinMaster):
|
|
3708
|
+
self.logger.debug("Write LinMaster %s" % controller.getShortName())
|
|
3421
3709
|
child_element = ET.SubElement(element, "LIN-MASTER")
|
|
3422
|
-
self.writeIdentifiable(child_element,
|
|
3710
|
+
self.writeIdentifiable(child_element, controller)
|
|
3711
|
+
variants_tag = ET.SubElement(child_element, "LIN-MASTER-VARIANTS")
|
|
3712
|
+
cond_tag = ET.SubElement(variants_tag, "LIN-MASTER-CONDITIONAL")
|
|
3713
|
+
self.writeLinCommunicationController(cond_tag, controller)
|
|
3714
|
+
self.setChildElementOptionalTimeValue(cond_tag, "TIME-BASE", controller.getTimeBase())
|
|
3715
|
+
self.setChildElementOptionalTimeValue(cond_tag, "TIME-BASE-JITTER", controller.getTimeBaseJitter())
|
|
3423
3716
|
|
|
3424
3717
|
def writeISignalToPduMappings(self, element: ET.Element, parent: ISignalIPdu):
|
|
3425
3718
|
mappings = parent.getISignalToPduMappings()
|
|
@@ -3572,6 +3865,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3572
3865
|
self.writeSecuredIPdu(element, ar_element)
|
|
3573
3866
|
elif isinstance(ar_element, CanTpConfig):
|
|
3574
3867
|
self.writeCanTpConfig(element, ar_element)
|
|
3868
|
+
elif isinstance(ar_element, LinTpConfig):
|
|
3869
|
+
self.writeLinTpConfig(element, ar_element)
|
|
3575
3870
|
elif isinstance(ar_element, LinCluster):
|
|
3576
3871
|
self.writeLinCluster(element, ar_element)
|
|
3577
3872
|
elif isinstance(ar_element, CanCluster):
|