armodel 1.7.6__py3-none-any.whl → 1.7.7__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/AutosarTopLevelStructure.py +41 -2
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +47 -6
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +17 -7
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +1 -1
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +9 -3
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +17 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +19 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +2 -2
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py +41 -16
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +10 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +26 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +19 -5
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DoIp.py +29 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/ECUResourceMapping.py +44 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +9 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +483 -54
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +9 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +245 -130
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +27 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +592 -17
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +20 -10
- armodel/models/M2/MSR/AsamHdo/AdminData.py +1 -2
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +3 -1
- armodel/models/M2/MSR/AsamHdo/SpecialData.py +35 -8
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +0 -3
- armodel/models/__init__.py +4 -0
- armodel/parser/abstract_arxml_parser.py +3 -0
- armodel/parser/arxml_parser.py +614 -123
- armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -3
- armodel/tests/test_armodel/models/test_datatype.py +1 -1
- armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +218 -0
- armodel/tests/test_armodel/parser/test_sw_components.py +22 -1
- armodel/writer/abstract_arxml_writer.py +7 -6
- armodel/writer/arxml_writer.py +694 -139
- {armodel-1.7.6.dist-info → armodel-1.7.7.dist-info}/METADATA +41 -3
- {armodel-1.7.6.dist-info → armodel-1.7.7.dist-info}/RECORD +41 -37
- {armodel-1.7.6.dist-info → armodel-1.7.7.dist-info}/LICENSE +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.7.dist-info}/WHEEL +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.7.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.7.dist-info}/top_level.txt +0 -0
armodel/writer/arxml_writer.py
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import xml.etree.cElementTree as ET
|
|
2
2
|
from typing import List
|
|
3
3
|
|
|
4
|
+
from armodel.models.M2.AUTOSARTemplates.SystemTemplate.ECUResourceMapping import ECUMapping
|
|
5
|
+
from armodel.models.M2.AUTOSARTemplates.SystemTemplate.SWmapping import SwcToImplMapping
|
|
6
|
+
|
|
4
7
|
from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
|
|
5
8
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
6
9
|
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
|
|
@@ -25,7 +28,7 @@ from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
|
25
28
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
|
|
26
29
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
|
|
27
30
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
|
|
28
|
-
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswEvent, BswInternalBehavior, BswInterruptEntity, BswModeSenderPolicy, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
|
|
31
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswBackgroundEvent, BswCalledEntity, BswDataReceivedEvent, BswEvent, BswExternalTriggerOccurredEvent, BswInternalBehavior, BswInterruptEntity, BswModeSenderPolicy, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
|
|
29
32
|
from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
|
|
30
33
|
from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
|
|
31
34
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
|
|
@@ -49,12 +52,12 @@ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPack
|
|
|
49
52
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral, Limit
|
|
50
53
|
|
|
51
54
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
|
|
52
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
|
|
55
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, BackgroundEvent, DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, ModeSwitchedAckEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
|
|
53
56
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
|
|
54
57
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType
|
|
55
58
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
|
|
56
59
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
|
|
57
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
|
|
60
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest, TransmissionAcknowledgementRequest
|
|
58
61
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PRPortPrototype, PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype, SymbolProps
|
|
59
62
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
60
63
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import AsynchronousServerCallPoint, RunnableEntity, RunnableEntityArgument, SwcInternalBehavior, SynchronousServerCallPoint
|
|
@@ -78,7 +81,7 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import S
|
|
|
78
81
|
from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
|
|
79
82
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
80
83
|
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
|
|
84
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import DynamicPart, DynamicPartAlternative, FrameTriggering, GeneralPurposeIPdu, GeneralPurposePdu, IPdu, IPduTiming, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalToIPduMapping, ISignalTriggering, MultiplexedIPdu, MultiplexedPart, Pdu, PduTriggering, SecureCommunicationAuthenticationProps, SecureCommunicationFreshnessProps, SecureCommunicationProps, SecureCommunicationPropsSet, SecuredIPdu, SegmentPosition, StaticPart, SystemSignal, DcmIPdu, Frame, ISignal, NPdu, NmPdu, SystemSignalGroup, UserDefinedIPdu, UserDefinedPdu
|
|
82
85
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
83
86
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
84
87
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SoAdRoutingGroup, SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
|
|
@@ -93,8 +96,8 @@ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunicatio
|
|
|
93
96
|
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
97
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinTopology import LinCommunicationConnector, LinCommunicationController, LinMaster
|
|
95
98
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
|
|
96
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmNode
|
|
97
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig, DoIpTpConfig, LinTpConfig
|
|
99
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmEcu, NmNode, UdpNmCluster, UdpNmClusterCoupling, UdpNmEcu, UdpNmNode
|
|
100
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpAddress, CanTpChannel, CanTpConfig, CanTpConnection, CanTpEcu, CanTpNode, DoIpLogicAddress, DoIpTpConfig, DoIpTpConnection, LinTpConfig, LinTpConnection, LinTpNode, TpAddress, TpConfig, TpConnection
|
|
98
101
|
|
|
99
102
|
from .abstract_arxml_writer import AbstractARXMLWriter
|
|
100
103
|
class ARXMLWriter(AbstractARXMLWriter):
|
|
@@ -120,14 +123,26 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
120
123
|
sd_tag.attrib['GID'] = sd.gid
|
|
121
124
|
sd_tag.text = sd.value
|
|
122
125
|
|
|
123
|
-
def
|
|
126
|
+
def writeSdgCaption(self, element: ET.Element, sdg: Sdg):
|
|
127
|
+
caption = sdg.getSdgCaption()
|
|
128
|
+
if caption is not None:
|
|
129
|
+
child_element = ET.SubElement(element, "SDG-CAPTION")
|
|
130
|
+
self.writeMultilanguageReferrable(child_element, caption)
|
|
131
|
+
|
|
132
|
+
def writeSdgSdxRefs(self, element: ET.Element, sdg: Sdg):
|
|
133
|
+
for ref in sdg.getSdxRefs():
|
|
134
|
+
self.setChildElementOptionalRefType(element, "SDX-REF", ref)
|
|
135
|
+
|
|
136
|
+
def setSdg(self, element: ET.Element, sdg: Sdg):
|
|
124
137
|
if sdg is not None:
|
|
125
|
-
|
|
138
|
+
child_element = ET.SubElement(element, "SDG")
|
|
126
139
|
if sdg.gid is not None and sdg.gid != "":
|
|
127
|
-
|
|
128
|
-
self.
|
|
140
|
+
child_element.attrib['GID'] = sdg.gid
|
|
141
|
+
self.writeSdgCaption(child_element, sdg)
|
|
142
|
+
self.writeSds(child_element, sdg)
|
|
129
143
|
for sdg_item in sdg.getSdgContentsTypes():
|
|
130
|
-
self.setSdg(
|
|
144
|
+
self.setSdg(child_element, sdg_item)
|
|
145
|
+
self.writeSdgSdxRefs(child_element, sdg)
|
|
131
146
|
|
|
132
147
|
def writeSdgs(self, parent: ET.Element, admin_data: AdminData):
|
|
133
148
|
sdgs = admin_data.getSdgs()
|
|
@@ -139,18 +154,18 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
139
154
|
def setChildLimitElement(self, element: ET.Element, key: str, limit: Limit):
|
|
140
155
|
if limit is not None:
|
|
141
156
|
limit_tag = ET.SubElement(element, key)
|
|
142
|
-
self.
|
|
157
|
+
self.writeARObjectAttributes(limit_tag, limit)
|
|
143
158
|
if limit.intervalType is not None:
|
|
144
159
|
limit_tag.attrib['INTERVAL-TYPE'] = limit.intervalType
|
|
145
160
|
limit_tag.text = limit.value
|
|
146
161
|
|
|
147
162
|
def writeReferrable(self, element: ET.Element, referrable: Referrable):
|
|
148
|
-
self.
|
|
163
|
+
self.writeARObjectAttributes(element, referrable)
|
|
149
164
|
self.setShortName(element, referrable.getShortName())
|
|
150
165
|
|
|
151
166
|
def setLanguageSpecific(self, element: ET.Element, key: str, specific: LanguageSpecific):
|
|
152
167
|
child_element = ET.SubElement(element, key)
|
|
153
|
-
self.
|
|
168
|
+
self.writeARObjectAttributes(child_element, specific)
|
|
154
169
|
if specific.l is not None:
|
|
155
170
|
child_element.attrib['L'] = specific.l
|
|
156
171
|
child_element.text = specific.value
|
|
@@ -161,7 +176,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
161
176
|
def setMultiLongName(self, element: ET.Element, key: str, long_name: MultilanguageLongName):
|
|
162
177
|
if long_name is not None:
|
|
163
178
|
child_element = ET.SubElement(element, key)
|
|
164
|
-
self.
|
|
179
|
+
self.writeARObjectAttributes(child_element, long_name)
|
|
165
180
|
for l4 in long_name.getL4s():
|
|
166
181
|
self.setLLongName(child_element, l4)
|
|
167
182
|
|
|
@@ -171,7 +186,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
171
186
|
def setMultiLanguageOverviewParagraph(self, element: ET.Element, key: str, paragraph: MultiLanguageOverviewParagraph):
|
|
172
187
|
if paragraph is not None:
|
|
173
188
|
child_element = ET.SubElement(element, key)
|
|
174
|
-
self.
|
|
189
|
+
self.writeARObjectAttributes(child_element, paragraph)
|
|
175
190
|
for l2 in paragraph.getL2s():
|
|
176
191
|
self.setLOverviewParagraph(child_element, l2)
|
|
177
192
|
|
|
@@ -186,7 +201,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
186
201
|
def setMultiLanguagePlainText(self, element: ET.Element, key: str, paragraph: MultiLanguagePlainText):
|
|
187
202
|
if paragraph is not None:
|
|
188
203
|
child_element = ET.SubElement(element, key)
|
|
189
|
-
self.
|
|
204
|
+
self.writeARObjectAttributes(child_element, paragraph)
|
|
190
205
|
for l10 in paragraph.getL10s():
|
|
191
206
|
self.setLPlainText(child_element, l10)
|
|
192
207
|
|
|
@@ -211,7 +226,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
211
226
|
def setTransmissionAcknowledgementRequest(self, element: ET.Element, acknowledge: TransmissionAcknowledgementRequest):
|
|
212
227
|
if (acknowledge != None):
|
|
213
228
|
child_element = ET.SubElement(element, "TRANSMISSION-ACKNOWLEDGE")
|
|
214
|
-
self.
|
|
229
|
+
self.writeARObjectAttributes(child_element, acknowledge)
|
|
215
230
|
if acknowledge.timeout != None:
|
|
216
231
|
self.setChildElementOptionalFloatValue(child_element, "TIMEOUT", acknowledge.timeout)
|
|
217
232
|
|
|
@@ -229,25 +244,32 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
229
244
|
|
|
230
245
|
def setNonqueuedSenderComSpec(self, element: ET.Element, com_spec: NonqueuedSenderComSpec):
|
|
231
246
|
child_element = ET.SubElement(element, "NONQUEUED-SENDER-COM-SPEC")
|
|
232
|
-
self.
|
|
247
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
233
248
|
self.setSenderComSpec(child_element, com_spec)
|
|
234
249
|
self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
|
|
235
250
|
|
|
236
251
|
def setServerComSpec(self, element: ET.Element, com_spec: ServerComSpec):
|
|
237
252
|
child_element = ET.SubElement(element, "SERVER-COM-SPEC")
|
|
238
|
-
self.
|
|
253
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
239
254
|
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.getOperationRef())
|
|
240
255
|
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.getQueueLength())
|
|
241
256
|
|
|
242
257
|
def setQueuedSenderComSpec(self, element: ET.Element, com_spec: QueuedSenderComSpec):
|
|
243
258
|
child_element = ET.SubElement(element, "QUEUED-SENDER-COM-SPEC")
|
|
244
|
-
self.
|
|
259
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
245
260
|
self.setSenderComSpec(child_element, com_spec)
|
|
246
261
|
|
|
262
|
+
def setModeSwitchedAckRequest(self, element: ET.Element, key: str, request: ModeSwitchedAckRequest):
|
|
263
|
+
if request is not None:
|
|
264
|
+
child_element = ET.SubElement(element, key)
|
|
265
|
+
self.writeARObjectAttributes(child_element, request)
|
|
266
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT", request.getTimeout())
|
|
267
|
+
|
|
247
268
|
def setModeSwitchSenderComSpec(self, element: ET.Element, com_spec: ModeSwitchSenderComSpec):
|
|
248
269
|
child_element = ET.SubElement(element, "MODE-SWITCH-SENDER-COM-SPEC")
|
|
249
|
-
self.
|
|
270
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
250
271
|
self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", com_spec.getModeGroupRef())
|
|
272
|
+
self.setModeSwitchedAckRequest(child_element, "MODE-SWITCHED-ACK", com_spec.getModeSwitchedAck())
|
|
251
273
|
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.getQueueLength())
|
|
252
274
|
|
|
253
275
|
def writePPortComSpec(self, com_specs_tag: ET.Element, com_spec: PPortComSpec):
|
|
@@ -291,7 +313,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
291
313
|
def setSwValues(self, element: ET.Element, key: str, sw_values: SwValues):
|
|
292
314
|
if sw_values is not None:
|
|
293
315
|
child_element = ET.SubElement(element, key)
|
|
294
|
-
self.
|
|
316
|
+
self.writeARObjectAttributes(child_element, sw_values)
|
|
295
317
|
for v in sw_values.getVs():
|
|
296
318
|
self.setChildElementOptionalFloatValue(child_element, "V", v)
|
|
297
319
|
self.setChildElementOptionalLiteral(child_element, "VT", sw_values.vt)
|
|
@@ -299,20 +321,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
299
321
|
def setValueList(self, element: ET.Element, key: str, value_list: ValueList):
|
|
300
322
|
if value_list is not None:
|
|
301
323
|
child_element = ET.SubElement(element, key)
|
|
302
|
-
self.
|
|
324
|
+
self.writeARObjectAttributes(child_element, value_list)
|
|
303
325
|
self.setChildElementOptionalFloatValue(child_element, "V", value_list.v)
|
|
304
326
|
|
|
305
327
|
def writeSwValueCont(self, element: ET.Element, cont: SwValueCont):
|
|
306
328
|
if cont is not None:
|
|
307
329
|
child_element = ET.SubElement(element, "SW-VALUE-CONT")
|
|
308
|
-
self.
|
|
330
|
+
self.writeARObjectAttributes(child_element, cont)
|
|
309
331
|
self.setChildElementOptionalRefType(child_element, "UNIT-REF", cont.unitRef)
|
|
310
332
|
self.setValueList(child_element, "SW-ARRAYSIZE", cont.swArraysize)
|
|
311
333
|
self.setSwValues(child_element, "SW-VALUES-PHYS", cont.swValuesPhys)
|
|
312
334
|
|
|
313
335
|
def writeValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
|
|
314
336
|
if value_spec is not None:
|
|
315
|
-
self.
|
|
337
|
+
self.writeARObjectAttributes(element, value_spec)
|
|
316
338
|
self.setChildElementOptionalLiteral(element, "SHORT-LABEL", value_spec.getShortLabel())
|
|
317
339
|
|
|
318
340
|
def setApplicationValueSpecification(self, element: ET.Element, value_spec: ApplicationValueSpecification):
|
|
@@ -379,7 +401,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
379
401
|
|
|
380
402
|
def writeNonqueuedReceiverComSpec(self, element: ET.Element, com_spec: NonqueuedReceiverComSpec):
|
|
381
403
|
child_element = ET.SubElement(element, "NONQUEUED-RECEIVER-COM-SPEC")
|
|
382
|
-
self.
|
|
404
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
383
405
|
self.writeReceiverComSpec(child_element, com_spec)
|
|
384
406
|
self.setChildElementOptionalFloatValue(child_element, "ALIVE-TIMEOUT", com_spec.getAliveTimeout())
|
|
385
407
|
self.setChildElementOptionalBooleanValue(child_element, "ENABLE-UPDATE", com_spec.getEnableUpdated())
|
|
@@ -390,27 +412,27 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
390
412
|
|
|
391
413
|
def writeQueuedReceiverComSpec(self, element: ET.Element, com_spec: QueuedReceiverComSpec):
|
|
392
414
|
child_element = ET.SubElement(element, "QUEUED-RECEIVER-COM-SPEC")
|
|
393
|
-
self.
|
|
415
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
394
416
|
self.writeReceiverComSpec(child_element, com_spec)
|
|
395
417
|
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.queueLength)
|
|
396
418
|
|
|
397
419
|
def writeClientComSpec(self, element: ET.Element, com_spec: ClientComSpec):
|
|
398
420
|
self.logger.debug("writeClientComSpec")
|
|
399
421
|
child_element = ET.SubElement(element, "CLIENT-COM-SPEC")
|
|
400
|
-
self.
|
|
422
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
401
423
|
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.getOperationRef())
|
|
402
424
|
|
|
403
425
|
def writeParameterRequireComSpec(self, element: ET.Element, com_spec: ParameterRequireComSpec):
|
|
404
426
|
self.logger.debug("writeParameterRequireComSpec")
|
|
405
427
|
child_element = ET.SubElement(element, "PARAMETER-REQUIRE-COM-SPEC")
|
|
406
|
-
self.
|
|
428
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
407
429
|
self.setChildElementOptionalRefType(child_element, "PARAMETER-REF", com_spec.getParameterRef())
|
|
408
430
|
self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
|
|
409
431
|
|
|
410
432
|
def setModeSwitchReceiverComSpec(self, element: ET.Element, com_spec: ModeSwitchReceiverComSpec):
|
|
411
433
|
self.logger.debug("writeModeSwitchReceiverComSpec")
|
|
412
434
|
child_element = ET.SubElement(element, "MODE-SWITCH-RECEIVER-COM-SPEC")
|
|
413
|
-
self.
|
|
435
|
+
self.writeARObjectAttributes(child_element, com_spec)
|
|
414
436
|
self.setChildElementOptionalBooleanValue(child_element, "ENHANCED-MODE-API", com_spec.getEnhancedModeApi())
|
|
415
437
|
self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", com_spec.getModeGroupRef())
|
|
416
438
|
self.setChildElementOptionalBooleanValue(child_element, "SUPPORTS-ASYNCHRONOUS-MODE-SWITCH", com_spec.getSupportsAsynchronousModeSwitch())
|
|
@@ -539,14 +561,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
539
561
|
if sw_connector.getProviderIRef() is not None:
|
|
540
562
|
provider_iref_tag = ET.SubElement(child_element, "PROVIDER-IREF")
|
|
541
563
|
provider_iref = sw_connector.getProviderIRef()
|
|
542
|
-
self.
|
|
564
|
+
self.writeARObjectAttributes(provider_iref_tag, provider_iref)
|
|
543
565
|
self.setChildElementOptionalRefType(provider_iref_tag, "CONTEXT-COMPONENT-REF", provider_iref.getContextComponentRef())
|
|
544
566
|
self.setChildElementOptionalRefType(provider_iref_tag, "TARGET-P-PORT-REF", provider_iref.getTargetPPortRef())
|
|
545
567
|
|
|
546
568
|
if sw_connector.getRequesterIRef() is not None:
|
|
547
569
|
requester_iref_tag = ET.SubElement(child_element, "REQUESTER-IREF")
|
|
548
570
|
requester_iref = sw_connector.getRequesterIRef()
|
|
549
|
-
self.
|
|
571
|
+
self.writeARObjectAttributes(requester_iref_tag, requester_iref)
|
|
550
572
|
self.setChildElementOptionalRefType(requester_iref_tag, "CONTEXT-COMPONENT-REF", requester_iref.getContextComponentRef())
|
|
551
573
|
self.setChildElementOptionalRefType(requester_iref_tag, "TARGET-R-PORT-REF", requester_iref.getTargetRPortRef())
|
|
552
574
|
|
|
@@ -615,7 +637,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
615
637
|
def writeLParagraphs(self, element: ET.Element, paragraph: MultiLanguageParagraph):
|
|
616
638
|
for l1 in paragraph.getL1s():
|
|
617
639
|
l1_tag = ET.SubElement(element, "L-1")
|
|
618
|
-
self.
|
|
640
|
+
self.writeARObjectAttributes(l1_tag, l1)
|
|
619
641
|
if l1.l is not None:
|
|
620
642
|
l1_tag.attrib['L'] = l1.l
|
|
621
643
|
l1_tag.text = l1.value
|
|
@@ -623,7 +645,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
623
645
|
def setMultiLanguageParagraphs(self, element: ET.Element, key: str, paragraphs: List[MultiLanguageParagraph]):
|
|
624
646
|
for paragraph in paragraphs:
|
|
625
647
|
child_element = ET.SubElement(element, key)
|
|
626
|
-
self.
|
|
648
|
+
self.writeARObjectAttributes(child_element, paragraph)
|
|
627
649
|
self.writeLParagraphs(child_element, paragraph)
|
|
628
650
|
return paragraphs
|
|
629
651
|
|
|
@@ -639,7 +661,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
639
661
|
def setDocumentationBlock(self, element: ET.Element, key: str, block: DocumentationBlock):
|
|
640
662
|
if block is not None:
|
|
641
663
|
child_element = ET.SubElement(element, key)
|
|
642
|
-
self.
|
|
664
|
+
self.writeARObjectAttributes(child_element, block)
|
|
643
665
|
self.setMultiLanguageParagraphs(child_element, "P", block.getPs())
|
|
644
666
|
for list in block.getLists():
|
|
645
667
|
self.setListElement(child_element, "LIST", list)
|
|
@@ -658,7 +680,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
658
680
|
|
|
659
681
|
def setSwAxisIndividual(self, element: ET.Element, props: SwAxisIndividual):
|
|
660
682
|
child_element = ET.SubElement(element, "SW-AXIS-INDIVIDUAL")
|
|
661
|
-
self.
|
|
683
|
+
self.writeARObjectAttributes(child_element, props)
|
|
662
684
|
self.setChildElementOptionalRefType(child_element, "INPUT-VARIABLE-TYPE-REF", props.getInputVariableTypeRef())
|
|
663
685
|
self.setChildElementOptionalRefType(child_element, "COMPU-METHOD-REF", props.getCompuMethodRef())
|
|
664
686
|
self.setChildElementOptionalNumericalValue(child_element, "SW-MAX-AXIS-POINTS", props.getSwMaxAxisPoints())
|
|
@@ -667,7 +689,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
667
689
|
|
|
668
690
|
def setSwAxisGrouped(self, element: ET.Element, props: SwAxisGrouped):
|
|
669
691
|
child_element = ET.SubElement(element, "SW-AXIS-GROUPED")
|
|
670
|
-
self.
|
|
692
|
+
self.writeARObjectAttributes(child_element, props)
|
|
671
693
|
self.setChildElementOptionalRefType(child_element, "SHARED-AXIS-TYPE-REF", props.sharedAxisTypeRef)
|
|
672
694
|
|
|
673
695
|
def setSwCalprmAxis(self, element: ET.Element, axis: SwCalprmAxis):
|
|
@@ -699,20 +721,19 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
699
721
|
def setSwDataDefProps(self, element: ET.Element, key: str, props: SwDataDefProps):
|
|
700
722
|
if props is not None:
|
|
701
723
|
child_element = ET.SubElement(element, key)
|
|
702
|
-
self.
|
|
724
|
+
self.writeARObjectAttributes(child_element, props)
|
|
703
725
|
sw_data_def_props_variants_tag = ET.SubElement(child_element, "SW-DATA-DEF-PROPS-VARIANTS")
|
|
704
726
|
conditional_tag = ET.SubElement(sw_data_def_props_variants_tag, "SW-DATA-DEF-PROPS-CONDITIONAL")
|
|
705
|
-
self.
|
|
727
|
+
self.writeARObjectAttributes(conditional_tag, props.conditional)
|
|
706
728
|
self.setAnnotations(conditional_tag, props.getAnnotations())
|
|
707
729
|
self.setChildElementOptionalRefType(conditional_tag, "BASE-TYPE-REF", props.getBaseTypeRef())
|
|
708
730
|
self.setChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF", props.getCompuMethodRef())
|
|
709
|
-
|
|
710
731
|
self.setValueSpecification(conditional_tag, "INVALID-VALUE", props.getInvalidValue())
|
|
711
|
-
self.setChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", props.getImplementationDataTypeRef())
|
|
712
732
|
self.setChildElementOptionalFloatValue(conditional_tag, "STEP-SIZE", props.getStepSize())
|
|
713
733
|
self.setChildElementOptionalRefType(conditional_tag, "SW-ADDR-METHOD-REF", props.getSwAddrMethodRef())
|
|
714
734
|
self.setChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS", props.getSwCalibrationAccess())
|
|
715
735
|
self.setChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF", props.getDataConstrRef())
|
|
736
|
+
self.setChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", props.getImplementationDataTypeRef())
|
|
716
737
|
self.setSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET", props.getSwCalprmAxisSet())
|
|
717
738
|
self.setChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY", props.getSwImplPolicy())
|
|
718
739
|
self.setChildElementOptionalNumericalValue(conditional_tag, "SW-INTENDED-RESOLUTION", props.getSwIntendedResolution())
|
|
@@ -824,9 +845,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
824
845
|
compu_scales_tag = ET.SubElement(element, "COMPU-SCALES")
|
|
825
846
|
for compu_scale in compu_scales.getCompuScales():
|
|
826
847
|
child_element = ET.SubElement(compu_scales_tag, "COMPU-SCALE")
|
|
827
|
-
self.
|
|
848
|
+
self.writeARObjectAttributes(child_element, compu_scale)
|
|
828
849
|
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", compu_scale.getShortLabel())
|
|
829
850
|
self.setChildElementOptionalLiteral(child_element, "SYMBOL", compu_scale.getSymbol())
|
|
851
|
+
self.setMultiLanguageOverviewParagraph(child_element, "DESC", compu_scale.getDesc())
|
|
830
852
|
self.setChildLimitElement(child_element, "LOWER-LIMIT", compu_scale.getLowerLimit())
|
|
831
853
|
self.setChildLimitElement(child_element, "UPPER-LIMIT", compu_scale.getUpperLimit())
|
|
832
854
|
self.writeCompuScaleContents(child_element, compu_scale)
|
|
@@ -834,13 +856,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
834
856
|
def setCompuConst(self, element: ET.Element, key: str, compu_const: CompuConst):
|
|
835
857
|
if compu_const is not None:
|
|
836
858
|
child_element = ET.SubElement(element, key)
|
|
837
|
-
self.
|
|
859
|
+
self.writeARObjectAttributes(child_element, compu_const)
|
|
838
860
|
self.setCompuConstContent(child_element, compu_const.getCompuConstContentType())
|
|
839
861
|
|
|
840
862
|
def setCompu(self, element: ET.Element, key: str, compu: Compu):
|
|
841
863
|
if compu is not None:
|
|
842
864
|
child_element = ET.SubElement(element, key)
|
|
843
|
-
self.
|
|
865
|
+
self.writeARObjectAttributes(child_element, compu)
|
|
844
866
|
self.setCompuScales(child_element, compu.getCompuContent())
|
|
845
867
|
self.setCompuConst(child_element, "COMPU-DEFAULT-VALUE", compu.getCompuDefaultValue())
|
|
846
868
|
|
|
@@ -860,7 +882,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
860
882
|
|
|
861
883
|
def setRecordValueSpecification(self, element: ET.Element, spec: RecordValueSpecification):
|
|
862
884
|
child_element = ET.SubElement(element, "RECORD-VALUE-SPECIFICATION")
|
|
863
|
-
self.
|
|
885
|
+
self.writeARObjectAttributes(child_element, spec)
|
|
864
886
|
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", spec.getShortLabel())
|
|
865
887
|
fields = spec.getFields()
|
|
866
888
|
if len(fields) > 0:
|
|
@@ -889,7 +911,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
889
911
|
def setInternalConstrs(self, element: ET.Element, constrs: InternalConstrs):
|
|
890
912
|
if constrs is not None:
|
|
891
913
|
constrs_tag = ET.SubElement(element, "INTERNAL-CONSTRS")
|
|
892
|
-
self.
|
|
914
|
+
self.writeARObjectAttributes(constrs_tag, constrs)
|
|
893
915
|
if constrs.lower_limit is not None:
|
|
894
916
|
self.setChildLimitElement(constrs_tag, "LOWER-LIMIT", constrs.lower_limit)
|
|
895
917
|
if constrs.upper_limit is not None:
|
|
@@ -898,7 +920,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
898
920
|
def setPhysConstrs(self, element: ET.Element, constrs: PhysConstrs):
|
|
899
921
|
if constrs is not None:
|
|
900
922
|
child_element = ET.SubElement(element, "PHYS-CONSTRS")
|
|
901
|
-
self.
|
|
923
|
+
self.writeARObjectAttributes(child_element, constrs)
|
|
902
924
|
if constrs.lower_limit is not None:
|
|
903
925
|
self.setChildLimitElement(child_element, "LOWER-LIMIT", constrs.lower_limit)
|
|
904
926
|
if constrs.upper_limit is not None:
|
|
@@ -911,7 +933,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
911
933
|
rules_tag = ET.SubElement(element, "DATA-CONSTR-RULES")
|
|
912
934
|
for rule in rules:
|
|
913
935
|
child_element = ET.SubElement(rules_tag, "DATA-CONSTR-RULE")
|
|
914
|
-
self.
|
|
936
|
+
self.writeARObjectAttributes(child_element, rule)
|
|
915
937
|
self.setChildElementOptionalNumericalValue(child_element, "CONSTR-LEVEL", rule.constrLevel)
|
|
916
938
|
self.setPhysConstrs(child_element, rule.physConstrs)
|
|
917
939
|
self.setInternalConstrs(child_element, rule.internalConstrs)
|
|
@@ -932,7 +954,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
932
954
|
|
|
933
955
|
def setRModeInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: RModeInAtomicSwcInstanceRef):
|
|
934
956
|
child_element = ET.SubElement(element, key)
|
|
935
|
-
self.
|
|
957
|
+
self.writeARObjectAttributes(child_element, iref)
|
|
936
958
|
self.setChildElementOptionalRefType(child_element, "BASE", iref.getBaseRef())
|
|
937
959
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", iref.getContextPortRef())
|
|
938
960
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF", iref.getContextModeDeclarationGroupPrototypeRef())
|
|
@@ -941,7 +963,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
941
963
|
def setPOperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: POperationInAtomicSwcInstanceRef):
|
|
942
964
|
if iref is not None:
|
|
943
965
|
child_element = ET.SubElement(element, key)
|
|
944
|
-
self.
|
|
966
|
+
self.writeARObjectAttributes(child_element, iref)
|
|
945
967
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF", iref.getContextPPortRef())
|
|
946
968
|
self.setChildElementOptionalRefType(child_element, "TARGET-PROVIDED-OPERATION-REF", iref.getTargetProvidedOperationRef())
|
|
947
969
|
|
|
@@ -954,20 +976,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
954
976
|
self.setRModeInAtomicSwcInstanceRef(child_element, "DISABLED-MODE-IREF", iref)
|
|
955
977
|
self.setChildElementOptionalRefType(element, "START-ON-EVENT-REF", event.startOnEventRef)
|
|
956
978
|
|
|
957
|
-
def
|
|
979
|
+
def writeTimingEvent(self, element: ET.Element, event: TimingEvent):
|
|
958
980
|
if event is not None:
|
|
959
981
|
child_element = ET.SubElement(element, "TIMING-EVENT")
|
|
960
982
|
self.setRTEEvent(child_element, event)
|
|
961
983
|
self.setChildElementOptionalTimeValue(child_element, "OFFSET", event.getOffset())
|
|
962
984
|
self.setChildElementOptionalTimeValue(child_element, "PERIOD", event.getPeriod())
|
|
963
985
|
|
|
964
|
-
def
|
|
986
|
+
def writeOperationInvokedEvent(self, element: ET.Element, event: OperationInvokedEvent):
|
|
965
987
|
if event is not None:
|
|
966
988
|
child_element = ET.SubElement(element, "OPERATION-INVOKED-EVENT")
|
|
967
989
|
self.setRTEEvent(child_element, event)
|
|
968
990
|
self.setPOperationInAtomicSwcInstanceRef(child_element, "OPERATION-IREF", event.operationIRef)
|
|
969
991
|
|
|
970
|
-
def
|
|
992
|
+
def writeSwcModeSwitchEvent(self, element: ET.Element, event: SwcModeSwitchEvent):
|
|
971
993
|
if event is not None:
|
|
972
994
|
child_element = ET.SubElement(element, "SWC-MODE-SWITCH-EVENT")
|
|
973
995
|
self.setRTEEvent(child_element, event)
|
|
@@ -984,26 +1006,37 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
984
1006
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.getContextRPortRef())
|
|
985
1007
|
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-ELEMENT-REF", iref.getTargetDataElementRef())
|
|
986
1008
|
|
|
987
|
-
def
|
|
1009
|
+
def writeDataReceivedEvent(self, element: ET.Element, event: DataReceivedEvent):
|
|
988
1010
|
if event is not None:
|
|
989
1011
|
child_element = ET.SubElement(element, "DATA-RECEIVED-EVENT")
|
|
990
1012
|
self.setRTEEvent(child_element, event)
|
|
991
1013
|
self.setRVariableInAtomicSwcInstanceRef(child_element, event.dataIRef)
|
|
992
1014
|
|
|
993
|
-
def
|
|
1015
|
+
def writeInternalTriggerOccurredEvent(self, element: ET.Element, event: DataReceivedEvent):
|
|
994
1016
|
pass
|
|
995
1017
|
|
|
996
|
-
def
|
|
1018
|
+
def writeInitEvent(self, element: ET.Element, event: InitEvent):
|
|
997
1019
|
if event is not None:
|
|
998
1020
|
child_element = ET.SubElement(element, "INIT-EVENT")
|
|
999
1021
|
self.setRTEEvent(child_element, event)
|
|
1000
1022
|
|
|
1001
|
-
def
|
|
1023
|
+
def writeAsynchronousServerCallReturnsEvent(self, element: ET.Element, event: InitEvent):
|
|
1002
1024
|
if event is not None:
|
|
1003
1025
|
child_element = ET.SubElement(element, "ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT")
|
|
1004
1026
|
self.setRTEEvent(child_element, event)
|
|
1005
1027
|
self.setChildElementOptionalRefType(child_element, "EVENT-SOURCE-REF", event.getActivationReasonRepresentationRef())
|
|
1006
1028
|
|
|
1029
|
+
def writeModeSwitchedAckEvent(self, element: ET.Element, event: ModeSwitchedAckEvent):
|
|
1030
|
+
if event is not None:
|
|
1031
|
+
child_element = ET.SubElement(element, "MODE-SWITCHED-ACK-EVENT")
|
|
1032
|
+
self.setRTEEvent(child_element, event)
|
|
1033
|
+
self.setChildElementOptionalRefType(child_element, "EVENT-SOURCE-REF", event.getEventSourceRef())
|
|
1034
|
+
|
|
1035
|
+
def writeBackgroundEvent(self, element: ET.Element, event: BackgroundEvent):
|
|
1036
|
+
if event is not None:
|
|
1037
|
+
child_element = ET.SubElement(element, "BACKGROUND-EVENT")
|
|
1038
|
+
self.setRTEEvent(child_element, event)
|
|
1039
|
+
|
|
1007
1040
|
def writeRTEEvents(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
1008
1041
|
events = parent.getRteEvents()
|
|
1009
1042
|
if len(events) > 0:
|
|
@@ -1011,19 +1044,23 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1011
1044
|
|
|
1012
1045
|
for event in events:
|
|
1013
1046
|
if isinstance(event, TimingEvent):
|
|
1014
|
-
self.
|
|
1047
|
+
self.writeTimingEvent(child_element, event)
|
|
1015
1048
|
elif isinstance(event, OperationInvokedEvent):
|
|
1016
|
-
self.
|
|
1049
|
+
self.writeOperationInvokedEvent(child_element, event)
|
|
1017
1050
|
elif isinstance(event, SwcModeSwitchEvent):
|
|
1018
|
-
self.
|
|
1051
|
+
self.writeSwcModeSwitchEvent(child_element, event)
|
|
1019
1052
|
elif isinstance(event, DataReceivedEvent):
|
|
1020
|
-
self.
|
|
1053
|
+
self.writeDataReceivedEvent(child_element, event)
|
|
1021
1054
|
elif isinstance(event, InternalTriggerOccurredEvent):
|
|
1022
|
-
self.
|
|
1055
|
+
self.writeInternalTriggerOccurredEvent(child_element, event)
|
|
1023
1056
|
elif isinstance(event, InitEvent):
|
|
1024
|
-
self.
|
|
1057
|
+
self.writeInitEvent(child_element, event)
|
|
1025
1058
|
elif isinstance(event, AsynchronousServerCallReturnsEvent):
|
|
1026
|
-
self.
|
|
1059
|
+
self.writeAsynchronousServerCallReturnsEvent(child_element, event)
|
|
1060
|
+
elif isinstance(event, ModeSwitchedAckEvent):
|
|
1061
|
+
self.writeModeSwitchedAckEvent(child_element, event)
|
|
1062
|
+
elif isinstance(event, BackgroundEvent):
|
|
1063
|
+
self.writeBackgroundEvent(child_element, event)
|
|
1027
1064
|
else:
|
|
1028
1065
|
self.notImplemented("Unsupported Event <%s>" % type(event))
|
|
1029
1066
|
|
|
@@ -1051,7 +1088,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1051
1088
|
def setAutosarVariableRef(self, element: ET.Element, key: str, ref: AutosarVariableRef):
|
|
1052
1089
|
if ref is not None:
|
|
1053
1090
|
child_element = ET.SubElement(element, key)
|
|
1054
|
-
self.
|
|
1091
|
+
self.writeARObjectAttributes(child_element, ref)
|
|
1055
1092
|
if ref.getAutosarVariableIRef() is not None:
|
|
1056
1093
|
child_element = ET.SubElement(child_element, "AUTOSAR-VARIABLE-IREF")
|
|
1057
1094
|
#self.setARObjectAttributes(child_element, ref)
|
|
@@ -1062,7 +1099,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1062
1099
|
def setComponentInSystemInstanceRef(self, element: ET.Element, tag_name: str, ref: ComponentInSystemInstanceRef):
|
|
1063
1100
|
if ref is not None:
|
|
1064
1101
|
child_element = ET.SubElement(element, tag_name)
|
|
1065
|
-
self.
|
|
1102
|
+
self.writeARObjectAttributes(child_element, ref)
|
|
1066
1103
|
self.setChildElementOptionalRefType(child_element, "BASE-REF", ref.getBaseRef())
|
|
1067
1104
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPOSITION-REF", ref.getContextCompositionRef())
|
|
1068
1105
|
self.setChildElementOptionalRefType(child_element, "TARGET-COMPONENT-REF", ref.getTargetComponentRef())
|
|
@@ -1127,7 +1164,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1127
1164
|
def setROperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: ROperationInAtomicSwcInstanceRef):
|
|
1128
1165
|
if iref is not None:
|
|
1129
1166
|
child_element = ET.SubElement(element, key)
|
|
1130
|
-
self.
|
|
1167
|
+
self.writeARObjectAttributes(child_element, iref)
|
|
1131
1168
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.getContextRPortRef())
|
|
1132
1169
|
self.setChildElementOptionalRefType(child_element, "TARGET-REQUIRED-OPERATION-REF", iref.getTargetRequiredOperationRef())
|
|
1133
1170
|
|
|
@@ -1493,7 +1530,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1493
1530
|
include_data_type_sets_tag = ET.SubElement(element, "INCLUDED-DATA-TYPE-SETS")
|
|
1494
1531
|
for set in sets:
|
|
1495
1532
|
child_element = ET.SubElement(include_data_type_sets_tag, "INCLUDED-DATA-TYPE-SET")
|
|
1496
|
-
self.
|
|
1533
|
+
self.writeARObjectAttributes(child_element, set)
|
|
1497
1534
|
type_refs = set.getDataTypeRefs()
|
|
1498
1535
|
if len(type_refs) > 0:
|
|
1499
1536
|
data_type_refs_tag = ET.SubElement(child_element, "DATA-TYPE-REFS")
|
|
@@ -1529,7 +1566,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1529
1566
|
|
|
1530
1567
|
def writeAtomicSwComponentType(self, element: ET.Element, sw_component: AtomicSwComponentType):
|
|
1531
1568
|
self.writeSwComponentType(element, sw_component)
|
|
1532
|
-
self.writeAtomicSwComponentTypeInternalBehaviors(element, sw_component.
|
|
1569
|
+
self.writeAtomicSwComponentTypeInternalBehaviors(element, sw_component.getInternalBehavior())
|
|
1533
1570
|
|
|
1534
1571
|
def writeComplexDeviceDriverSwComponentType(self, element: ET.Element, sw_component: ComplexDeviceDriverSwComponentType):
|
|
1535
1572
|
self.logger.debug("writeComplexDeviceDriverSwComponentType %s" % sw_component.getShortName())
|
|
@@ -1543,7 +1580,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1543
1580
|
for artifact_desc in artifact_descriptors:
|
|
1544
1581
|
artifact_desc_tag = ET.SubElement(artifact_descs_tag, "AUTOSAR-ENGINEERING-OBJECT")
|
|
1545
1582
|
self.logger.debug("writeArtifactDescriptor %s", artifact_desc.short_label)
|
|
1546
|
-
self.
|
|
1583
|
+
self.writeARObjectAttributes(artifact_desc_tag, artifact_desc)
|
|
1547
1584
|
self.setChildElementOptionalLiteral(artifact_desc_tag, "SHORT-LABEL", artifact_desc.short_label)
|
|
1548
1585
|
self.setChildElementOptionalLiteral(artifact_desc_tag, "CATEGORY", artifact_desc.category)
|
|
1549
1586
|
|
|
@@ -1811,22 +1848,46 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1811
1848
|
self.writeIdentifiable(element, event)
|
|
1812
1849
|
self.setChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF", event.startsOnEventRef)
|
|
1813
1850
|
|
|
1814
|
-
def
|
|
1851
|
+
def writeBswScheduleEvent(self, element: ET.Element, event: BswScheduleEvent):
|
|
1815
1852
|
self.setBswEvent(element, event)
|
|
1816
1853
|
|
|
1817
|
-
def
|
|
1818
|
-
self.logger.debug("
|
|
1854
|
+
def writeBswTimingEvent(self, element: ET.Element, event: BswTimingEvent):
|
|
1855
|
+
self.logger.debug("Write BswTimingEvent <%s>" % event.getShortName())
|
|
1819
1856
|
child_element = ET.SubElement(element, "BSW-TIMING-EVENT")
|
|
1820
|
-
self.
|
|
1857
|
+
self.writeBswScheduleEvent(child_element, event)
|
|
1821
1858
|
self.setChildElementOptionalTimeValue(child_element, "PERIOD", event.getPeriod())
|
|
1822
1859
|
|
|
1860
|
+
def writeBswBackgroundEvent(self, element: ET.Element, event: BswBackgroundEvent):
|
|
1861
|
+
self.logger.debug("Write BswTimingEvent <%s>" % event.getShortName())
|
|
1862
|
+
child_element = ET.SubElement(element, "BSW-BACKGROUND-EVENT")
|
|
1863
|
+
self.writeBswScheduleEvent(child_element, event)
|
|
1864
|
+
|
|
1865
|
+
def writeBswExternalTriggerOccurredEvent(self, element: ET.Element, event: BswExternalTriggerOccurredEvent):
|
|
1866
|
+
self.logger.debug("Write BswExternalTriggerOccurredEvent %s" % event.getShortName())
|
|
1867
|
+
child_element = ET.SubElement(element, "BSW-EXTERNAL-TRIGGER-OCCURRED-EVENT")
|
|
1868
|
+
self.writeBswScheduleEvent(child_element, event)
|
|
1869
|
+
self.setChildElementOptionalRefType(child_element, "TRIGGER-REF", event.getTriggerRef())
|
|
1870
|
+
|
|
1871
|
+
def writeBswDataReceivedEvent(self, element: ET.Element, event: BswDataReceivedEvent):
|
|
1872
|
+
self.logger.debug("Write BswDataReceivedEvent %s" % event.getShortName())
|
|
1873
|
+
# Read the Inherit BswScheduleEvent
|
|
1874
|
+
child_element = ET.SubElement(element, "BSW-DATA-RECEIVED-EVENT")
|
|
1875
|
+
self.writeBswScheduleEvent(child_element, event)
|
|
1876
|
+
self.setChildElementOptionalRefType(child_element, "DATA-REF", event.getDataRef())
|
|
1877
|
+
|
|
1823
1878
|
def writeBswInternalBehaviorBswEvents(self, element: ET.Element, parent: BswInternalBehavior):
|
|
1824
1879
|
events = parent.getBswEvents()
|
|
1825
1880
|
if len(events) > 0:
|
|
1826
1881
|
child_element = ET.SubElement(element, "EVENTS")
|
|
1827
1882
|
for event in events:
|
|
1828
1883
|
if isinstance(event, BswTimingEvent):
|
|
1829
|
-
self.
|
|
1884
|
+
self.writeBswTimingEvent(child_element, event)
|
|
1885
|
+
elif isinstance(event, BswBackgroundEvent):
|
|
1886
|
+
self.writeBswBackgroundEvent(child_element, event)
|
|
1887
|
+
elif isinstance(event, BswExternalTriggerOccurredEvent):
|
|
1888
|
+
self.writeBswExternalTriggerOccurredEvent(child_element, event)
|
|
1889
|
+
elif isinstance(event, BswDataReceivedEvent):
|
|
1890
|
+
self.writeBswDataReceivedEvent(child_element, event)
|
|
1830
1891
|
else:
|
|
1831
1892
|
self._raiseError("Unsupported BswModuleEntity <%s>" % type(event))
|
|
1832
1893
|
|
|
@@ -1941,7 +2002,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1941
2002
|
self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.getSwcBehaviorRef())
|
|
1942
2003
|
|
|
1943
2004
|
def writeEngineeringObject(self, element: ET.Element, engineering_obj: EngineeringObject):
|
|
1944
|
-
self.
|
|
2005
|
+
self.writeARObjectAttributes(element, engineering_obj)
|
|
1945
2006
|
self.setChildElementOptionalLiteral(element, "SHORT-LABEL", engineering_obj.short_label)
|
|
1946
2007
|
self.setChildElementOptionalLiteral(element, "CATEGORY", engineering_obj.category)
|
|
1947
2008
|
|
|
@@ -2090,17 +2151,19 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2090
2151
|
child_element = ET.SubElement(element, "ECU-ABSTRACTION-SW-COMPONENT-TYPE")
|
|
2091
2152
|
self.writeAtomicSwComponentType(child_element, sw_component)
|
|
2092
2153
|
|
|
2093
|
-
def setApplicationArrayElement(self, element: ET.Element,
|
|
2094
|
-
if
|
|
2154
|
+
def setApplicationArrayElement(self, element: ET.Element, array_element: ApplicationArrayElement):
|
|
2155
|
+
if array_element is not None:
|
|
2095
2156
|
child_element = ET.SubElement(element, "ELEMENT")
|
|
2096
|
-
self.setApplicationCompositeElementDataPrototype(child_element,
|
|
2097
|
-
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-
|
|
2098
|
-
self.
|
|
2157
|
+
self.setApplicationCompositeElementDataPrototype(child_element, array_element)
|
|
2158
|
+
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING", array_element.getArraySizeHandling())
|
|
2159
|
+
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS", array_element.getArraySizeSemantics())
|
|
2160
|
+
self.setChildElementOptionalNumericalValue(child_element, "MAX-NUMBER-OF-ELEMENTS", array_element.getMaxNumberOfElements())
|
|
2099
2161
|
|
|
2100
2162
|
def writeApplicationArrayDataType(self, element: ET.Element, data_type: ApplicationArrayDataType):
|
|
2101
2163
|
self.logger.debug("writeApplicationArrayDataType %s" % data_type.getShortName())
|
|
2102
2164
|
child_element = ET.SubElement(element, "APPLICATION-ARRAY-DATA-TYPE")
|
|
2103
2165
|
self.setApplicationCompositeDataType(child_element, data_type)
|
|
2166
|
+
self.setChildElementOptionalLiteral(child_element, "DYNAMIC-ARRAY-SIZE-PROFILE", data_type.getDynamicArraySizeProfile())
|
|
2104
2167
|
self.setApplicationArrayElement(child_element, data_type.element)
|
|
2105
2168
|
|
|
2106
2169
|
def setSwRecordLayoutV(self, element: ET.Element, key: str, layout_v: SwRecordLayoutV):
|
|
@@ -2112,19 +2175,22 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2112
2175
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP", layout_v.getSwRecordLayoutVProp())
|
|
2113
2176
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX", layout_v.getSwRecordLayoutVIndex())
|
|
2114
2177
|
|
|
2178
|
+
def writeSwRecordLayoutGroupSwRecordLayoutGroupContentType(self, element: ET.Element, group: SwRecordLayoutGroup):
|
|
2179
|
+
content = group.getSwRecordLayoutGroupContentType()
|
|
2180
|
+
self.setSwRecordLayoutGroup(element, "SW-RECORD-LAYOUT-GROUP", content.getSwRecordLayoutGroup())
|
|
2181
|
+
self.setSwRecordLayoutV(element, "SW-RECORD-LAYOUT-V", content.getSwRecordLayoutV())
|
|
2182
|
+
|
|
2115
2183
|
def setSwRecordLayoutGroup(self, element: ET.Element, key: str, group: SwRecordLayoutGroup):
|
|
2116
2184
|
if group is not None:
|
|
2117
2185
|
child_element = ET.SubElement(element, key)
|
|
2118
2186
|
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", group.getShortLabel())
|
|
2119
2187
|
self.setChildElementOptionalLiteral(child_element, "CATEGORY", group.getCategory())
|
|
2188
|
+
#self.writeSwRecordLayoutGroupSwRecordLayoutGroupContentType(child_element, group)
|
|
2120
2189
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS", group.getSwRecordLayoutGroupAxis())
|
|
2121
2190
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX", group.getSwRecordLayoutGroupIndex())
|
|
2122
2191
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM", group.getSwRecordLayoutGroupFrom())
|
|
2123
2192
|
self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO", group.getSwRecordLayoutGroupTo())
|
|
2124
2193
|
self.setChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP", group.getSwRecordLayoutGroupStep())
|
|
2125
|
-
#self.setSwRecordLayoutV(child_element, "SW-RECORD-LAYOUT-V", group.swRecordLayoutGroupContentType.swRecordLayoutV)
|
|
2126
|
-
#self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", group.swRecordLayoutGroupContentType.swRecordLayoutGroup)
|
|
2127
|
-
return group
|
|
2128
2194
|
|
|
2129
2195
|
def writeSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
|
|
2130
2196
|
self.logger.debug("writeSwRecordLayout %s" % layout.getShortName())
|
|
@@ -2160,7 +2226,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2160
2226
|
maps_tag = ET.SubElement(element, "DATA-TYPE-MAPS")
|
|
2161
2227
|
for map in maps:
|
|
2162
2228
|
child_element = ET.SubElement(maps_tag, "DATA-TYPE-MAP")
|
|
2163
|
-
self.
|
|
2229
|
+
self.writeARObjectAttributes(child_element, map)
|
|
2164
2230
|
self.setChildElementOptionalRefType(child_element, "APPLICATION-DATA-TYPE-REF", map.getApplicationDataTypeRef())
|
|
2165
2231
|
self.setChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF", map.getImplementationDataTypeRef())
|
|
2166
2232
|
|
|
@@ -2170,7 +2236,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2170
2236
|
maps_tag = ET.SubElement(element, "MODE-REQUEST-TYPE-MAPS")
|
|
2171
2237
|
for map in maps:
|
|
2172
2238
|
child_element = ET.SubElement(maps_tag, "MODE-REQUEST-TYPE-MAP")
|
|
2173
|
-
self.
|
|
2239
|
+
self.writeARObjectAttributes(child_element, map)
|
|
2174
2240
|
self.setChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF", map.getImplementationDataTypeRef())
|
|
2175
2241
|
self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", map.getModeGroupRef())
|
|
2176
2242
|
|
|
@@ -2283,8 +2349,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2283
2349
|
self.writeFrame(child_element, frame)
|
|
2284
2350
|
|
|
2285
2351
|
def writeNmNode(self, element: ET.Element, nm_node: NmNode):
|
|
2352
|
+
self.writeIdentifiable(element, nm_node)
|
|
2286
2353
|
self.setChildElementOptionalRefType(element, "CONTROLLER-REF", nm_node.getControllerRef())
|
|
2287
2354
|
self.setChildElementOptionalRefType(element, "NM-IF-ECU-REF", nm_node.getNmIfEcuRef())
|
|
2355
|
+
self.setChildElementOptionalBooleanValue(element, "NM-PASSIVE-MODE-ENABLED", nm_node.getNmPassiveModeEnabled())
|
|
2288
2356
|
self.setChildElementOptionalNumericalValue(element, "NM-NODE-ID", nm_node.getNmNodeId())
|
|
2289
2357
|
|
|
2290
2358
|
refs = nm_node.getRxNmPduRefs()
|
|
@@ -2302,9 +2370,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2302
2370
|
def writeCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
|
|
2303
2371
|
self.logger.debug("write CanNmNode %s" % nm_node.getShortName())
|
|
2304
2372
|
child_element = ET.SubElement(element, "CAN-NM-NODE")
|
|
2305
|
-
self.writeIdentifiable(child_element, nm_node)
|
|
2306
2373
|
self.writeNmNode(child_element, nm_node)
|
|
2307
|
-
|
|
2374
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-CAR-WAKE-UP-RX-ENABLED", nm_node.getNmCarWakeUpRxEnabled())
|
|
2308
2375
|
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-CYCLE-OFFSET", nm_node.getNmMsgCycleOffset())
|
|
2309
2376
|
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-REDUCED-TIME", nm_node.getNmMsgReducedTime())
|
|
2310
2377
|
self.setChildElementRxIdentifierRange(child_element, "NM-RANGE-CONFIG", nm_node.getNmRangeConfig())
|
|
@@ -2312,8 +2379,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2312
2379
|
def writeUdpNmNode(self, element: ET.Element, nm_node: UdpNmNode):
|
|
2313
2380
|
self.logger.debug("write UdpNmNode %s" % nm_node.getShortName())
|
|
2314
2381
|
child_element = ET.SubElement(element, "UDP-NM-NODE")
|
|
2315
|
-
self.writeIdentifiable(child_element, nm_node)
|
|
2316
2382
|
self.writeNmNode(child_element, nm_node)
|
|
2383
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-MSG-CYCLE-OFFSET", nm_node.getNmMsgCycleOffset())
|
|
2317
2384
|
|
|
2318
2385
|
def writeNmClusterNmNodes(self, element: ET.Element, parent: NmCluster):
|
|
2319
2386
|
nodes = parent.getNmNodes()
|
|
@@ -2334,15 +2401,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2334
2401
|
refs_tag = ET.SubElement(child_element, "COUPLED-CLUSTER-REFS")
|
|
2335
2402
|
for ref in refs:
|
|
2336
2403
|
self.setChildElementOptionalRefType(refs_tag, "COUPLED-CLUSTER-REF", ref)
|
|
2337
|
-
|
|
2338
2404
|
self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ENABLED", coupling.getNmBusloadReductionEnabled())
|
|
2339
2405
|
self.setChildElementOptionalBooleanValue(child_element, "NM-IMMEDIATE-RESTART-ENABLED", coupling.getNmImmediateRestartEnabled())
|
|
2340
2406
|
|
|
2341
2407
|
def writeUdpNmClusterCoupling(self, element: ET.Element, coupling: UdpNmClusterCoupling):
|
|
2342
2408
|
child_element = ET.SubElement(element, "UDP-NM-CLUSTER-COUPLING")
|
|
2409
|
+
refs = coupling.getCoupledClusterRefs()
|
|
2410
|
+
if len(refs) > 0:
|
|
2411
|
+
refs_tag = ET.SubElement(child_element, "COUPLED-CLUSTER-REFS")
|
|
2412
|
+
for ref in refs:
|
|
2413
|
+
self.setChildElementOptionalRefType(refs_tag, "COUPLED-CLUSTER-REF", ref)
|
|
2414
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-IMMEDIATE-RESTART-ENABLED", coupling.getNmImmediateRestartEnabled())
|
|
2343
2415
|
|
|
2344
2416
|
def writeNmConfigNmClusterCouplings(self, element: ET.Element, config: NmConfig):
|
|
2345
|
-
self.logger.debug("
|
|
2417
|
+
self.logger.debug("Write NmConfigNmClusterCouplings <%s>" % config.getShortName())
|
|
2346
2418
|
couplings = config.getNmClusterCouplings()
|
|
2347
2419
|
if len(couplings) > 0:
|
|
2348
2420
|
child_element= ET.SubElement(element, "NM-CLUSTER-COUPLINGS")
|
|
@@ -2355,6 +2427,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2355
2427
|
self.notImplemented("Unsupported Nm Cluster Coupling <%s>" % type(coupling))
|
|
2356
2428
|
|
|
2357
2429
|
def writeNmCluster(self, element: ET.Element, cluster: NmCluster):
|
|
2430
|
+
self.logger.debug("Write NmCluster <%s>" % cluster.getShortName())
|
|
2358
2431
|
self.writeIdentifiable(element, cluster)
|
|
2359
2432
|
self.setChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF", cluster.communicationClusterRef)
|
|
2360
2433
|
self.setChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID", cluster.nmChannelId)
|
|
@@ -2363,7 +2436,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2363
2436
|
self.setChildElementOptionalBooleanValue(element, "NM-SYNCHRONIZING-NETWORK", cluster.getNmSynchronizingNetwork())
|
|
2364
2437
|
|
|
2365
2438
|
def writeCanNmCluster(self, element: ET.Element, cluster: CanNmCluster):
|
|
2366
|
-
self.logger.debug("
|
|
2439
|
+
self.logger.debug("Write CanNmCluster <%s>" % cluster.getShortName())
|
|
2367
2440
|
child_element = ET.SubElement(element, "CAN-NM-CLUSTER")
|
|
2368
2441
|
self.writeNmCluster(child_element, cluster)
|
|
2369
2442
|
|
|
@@ -2382,10 +2455,22 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2382
2455
|
self.setChildElementOptionalNumericalValue(child_element, "NM-USER-DATA-LENGTH", cluster.getNmUserDataLength())
|
|
2383
2456
|
self.setChildElementOptionalFloatValue(child_element, "NM-WAIT-BUS-SLEEP-TIME", cluster.getNmWaitBusSleepTime())
|
|
2384
2457
|
|
|
2385
|
-
def writeUdpNmCluster(self, element: ET.Element, cluster:
|
|
2386
|
-
self.logger.debug("Write UdpNmCluster
|
|
2458
|
+
def writeUdpNmCluster(self, element: ET.Element, cluster: UdpNmCluster):
|
|
2459
|
+
self.logger.debug("Write UdpNmCluster <%s>" % cluster.getShortName())
|
|
2387
2460
|
child_element = ET.SubElement(element, "UDP-NM-CLUSTER")
|
|
2388
2461
|
self.writeNmCluster(child_element, cluster)
|
|
2462
|
+
self.setChildElementOptionalIntegerValue(child_element, "NM-CBV-POSITION", cluster.getNmCbvPosition())
|
|
2463
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-CHANNEL-ACTIVE", cluster.getNmChannelActive())
|
|
2464
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-IMMEDIATE-NM-CYCLE-TIME", cluster.getNmImmediateNmCycleTime())
|
|
2465
|
+
self.setChildElementOptionalPositiveInteger(child_element, "NM-IMMEDIATE-NM-TRANSMISSIONS", cluster.getNmImmediateNmTransmissions())
|
|
2466
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-MESSAGE-TIMEOUT-TIME", cluster.getNmMessageTimeoutTime())
|
|
2467
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-MSG-CYCLE-TIME", cluster.getNmMsgCycleTime())
|
|
2468
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-NETWORK-TIMEOUT", cluster.getNmNetworkTimeout())
|
|
2469
|
+
self.setChildElementOptionalIntegerValue(child_element, "NM-NID-POSITION", cluster.getNmNidPosition())
|
|
2470
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-REMOTE-SLEEP-INDICATION-TIME", cluster.getNmRemoteSleepIndicationTime())
|
|
2471
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-REPEAT-MESSAGE-TIME", cluster.getNmRepeatMessageTime())
|
|
2472
|
+
self.setChildElementOptionalTimeValue(child_element, "NM-WAIT-BUS-SLEEP-TIME", cluster.getNmWaitBusSleepTime())
|
|
2473
|
+
self.setChildElementOptionalRefType(child_element, "VLAN-REF", cluster.getVlanRef())
|
|
2389
2474
|
|
|
2390
2475
|
def writeNmConfigNmClusters(self, element: ET.Element, parent: NmConfig):
|
|
2391
2476
|
clusters = parent.getNmClusters()
|
|
@@ -2399,50 +2484,311 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2399
2484
|
else:
|
|
2400
2485
|
self.notImplemented("Unsupported Nm Cluster <%s>" % type(cluster))
|
|
2401
2486
|
|
|
2487
|
+
def writeUdpNmEcu(self, element: ET.Element, ecu: UdpNmEcu):
|
|
2488
|
+
if ecu is not None:
|
|
2489
|
+
child_element = ET.SubElement(element, "UDP-NM-ECU")
|
|
2490
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-SYNCHRONIZATION-POINT-ENABLED", ecu.getNmSynchronizationPointEnabled())
|
|
2491
|
+
|
|
2492
|
+
def writeBusDependentNmEcus(self, element: ET.Element, nm_ecu: NmEcu):
|
|
2493
|
+
dependent_nm_ecus = nm_ecu.getBusDependentNmEcus()
|
|
2494
|
+
if len(dependent_nm_ecus) > 0:
|
|
2495
|
+
child_element = ET.SubElement(element, "BUS-DEPENDENT-NM-ECUS")
|
|
2496
|
+
for dependent_nm_ecu in dependent_nm_ecus:
|
|
2497
|
+
if isinstance(dependent_nm_ecu, UdpNmEcu):
|
|
2498
|
+
self.writeUdpNmEcu(child_element, dependent_nm_ecu)
|
|
2499
|
+
else:
|
|
2500
|
+
self.notImplemented("Unsupported BusDependentNmEcu <%s>" % type(dependent_nm_ecu))
|
|
2501
|
+
|
|
2502
|
+
def writeNmEcu(self, element: ET.Element, nm_ecu: NmEcu):
|
|
2503
|
+
child_element = ET.SubElement(element, "NM-ECU")
|
|
2504
|
+
self.writeIdentifiable(child_element, nm_ecu)
|
|
2505
|
+
self.writeBusDependentNmEcus(child_element, nm_ecu)
|
|
2506
|
+
self.setChildElementOptionalRefType(child_element, "ECU-INSTANCE-REF", nm_ecu.getEcuInstanceRef())
|
|
2507
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-BUS-SYNCHRONIZATION-ENABLED", nm_ecu.getNmBusSynchronizationEnabled())
|
|
2508
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-COM-CONTROL-ENABLED", nm_ecu.getNmComControlEnabled())
|
|
2509
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-NODE-DETECTION-ENABLED", nm_ecu.getNmNodeDetectionEnabled())
|
|
2510
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-NODE-ID-ENABLED", nm_ecu.getNmNodeIdEnabled())
|
|
2511
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-PDU-RX-INDICATION-ENABLED", nm_ecu.getNmPduRxIndicationEnabled())
|
|
2512
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-REMOTE-SLEEP-IND-ENABLED", nm_ecu.getNmRemoteSleepIndEnabled())
|
|
2513
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-REPEAT-MSG-IND-ENABLED", nm_ecu.getNmRepeatMsgIndEnabled())
|
|
2514
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-STATE-CHANGE-IND-ENABLED", nm_ecu.getNmStateChangeIndEnabled())
|
|
2515
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-USER-DATA-ENABLED", nm_ecu.getNmUserDataEnabled())
|
|
2516
|
+
|
|
2517
|
+
def writeNmConfigNmIfEcus(self, element: ET.Element, nm_config: NmConfig):
|
|
2518
|
+
ecus = nm_config.getNmIfEcus()
|
|
2519
|
+
if len(ecus) > 0:
|
|
2520
|
+
child_element = ET.SubElement(element, "NM-IF-ECUS")
|
|
2521
|
+
for ecu in ecus:
|
|
2522
|
+
if isinstance(ecu, NmEcu):
|
|
2523
|
+
self.writeNmEcu(child_element, ecu)
|
|
2524
|
+
else:
|
|
2525
|
+
self.notImplemented("Unsupported NmIfEcus <%s>" % type(ecu))
|
|
2526
|
+
|
|
2402
2527
|
def writeNmConfig(self, element: ET.Element, config: NmConfig):
|
|
2403
2528
|
self.logger.debug("Write NmConfig <%s>" % config.getShortName())
|
|
2404
2529
|
child_element = ET.SubElement(element, "NM-CONFIG")
|
|
2405
2530
|
self.writeIdentifiable(child_element, config)
|
|
2406
2531
|
self.writeNmConfigNmClusters(child_element, config)
|
|
2407
2532
|
self.writeNmConfigNmClusterCouplings(child_element, config)
|
|
2533
|
+
self.writeNmConfigNmIfEcus(child_element, config)
|
|
2534
|
+
|
|
2535
|
+
def writeISignalToIPduMapping(self, element: ET.Element, mapping: ISignalToIPduMapping):
|
|
2536
|
+
if mapping is not None:
|
|
2537
|
+
child_element = ET.SubElement(element, "I-SIGNAL-TO-I-PDU-MAPPING")
|
|
2538
|
+
self.writeIdentifiable(child_element, mapping)
|
|
2539
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-REF", mapping.getISignalRef())
|
|
2540
|
+
self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.getPackingByteOrder())
|
|
2541
|
+
self.setChildElementOptionalIntegerValue(child_element, "START-POSITION", mapping.getStartPosition())
|
|
2542
|
+
self.setChildElementOptionalLiteral(child_element, "TRANSFER-PROPERTY", mapping.getTransferProperty())
|
|
2543
|
+
|
|
2544
|
+
def writeNmPduISignalToIPduMappings(self, element: ET.Element, pdu: NmPdu):
|
|
2545
|
+
mappings = pdu.getISignalToIPduMappings()
|
|
2546
|
+
if len(mappings) > 0:
|
|
2547
|
+
child_element = ET.SubElement(element, "I-SIGNAL-TO-I-PDU-MAPPINGS")
|
|
2548
|
+
for mapping in mappings:
|
|
2549
|
+
if isinstance(mapping, ISignalToIPduMapping):
|
|
2550
|
+
self.writeISignalToIPduMapping(child_element, mapping)
|
|
2551
|
+
else:
|
|
2552
|
+
self.notImplemented("Unsupported ISignalToIPduMapping <%s>" % type(mapping))
|
|
2408
2553
|
|
|
2409
2554
|
def writeNmPdu(self, element: ET.Element, pdu: NmPdu):
|
|
2410
2555
|
self.logger.debug("Write NmPdu <%s>" % pdu.getShortName())
|
|
2411
2556
|
child_element = ET.SubElement(element, "NM-PDU")
|
|
2412
|
-
self.
|
|
2413
|
-
self.
|
|
2557
|
+
self.writePdu(child_element, pdu)
|
|
2558
|
+
self.writeNmPduISignalToIPduMappings(child_element, pdu)
|
|
2559
|
+
self.setChildElementOptionalIntegerValue(child_element, "UNUSED-BIT-PATTERN", pdu.getUnusedBitPattern())
|
|
2414
2560
|
|
|
2415
2561
|
def writeNPdu(self, element: ET.Element, pdu: NPdu):
|
|
2416
2562
|
self.logger.debug("Write NPdu <%s>" % pdu.getShortName())
|
|
2417
2563
|
child_element = ET.SubElement(element, "N-PDU")
|
|
2418
|
-
self.
|
|
2419
|
-
self.writeIPdu(child_element, pdu)
|
|
2420
|
-
|
|
2421
|
-
def writeIPdu(self, element: ET.Element, pdu: IPdu):
|
|
2422
|
-
self.setChildElementOptionalLiteral(element, "LENGTH", pdu.getLength())
|
|
2564
|
+
self.writePdu(child_element, pdu)
|
|
2423
2565
|
|
|
2424
2566
|
def writeDcmIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
2425
2567
|
self.logger.debug("Write DcmIPdu <%s>" % pdu.getShortName())
|
|
2426
2568
|
child_element = ET.SubElement(element, "DCM-I-PDU")
|
|
2427
|
-
self.writeIdentifiable(child_element, pdu)
|
|
2428
2569
|
self.writeIPdu(child_element, pdu)
|
|
2429
2570
|
self.setChildElementOptionalLiteral(child_element, "DIAG-PDU-TYPE", pdu.getDiagPduType())
|
|
2430
2571
|
|
|
2431
|
-
def
|
|
2432
|
-
|
|
2572
|
+
def setSecureCommunicationProps(self, element: ET.Element, key: str, props: SecureCommunicationProps):
|
|
2573
|
+
if props is not None:
|
|
2574
|
+
child_element = ET.SubElement(element, key)
|
|
2575
|
+
self.setChildElementOptionalPositiveInteger(child_element, "AUTH-DATA-FRESHNESS-LENGTH", props.getAuthDataFreshnessLength())
|
|
2576
|
+
self.setChildElementOptionalPositiveInteger(child_element, "AUTH-DATA-FRESHNESS-START-POSITION", props.getAuthDataFreshnessStartPosition())
|
|
2577
|
+
self.setChildElementOptionalPositiveInteger(child_element, "AUTH-INFO-TX-LENGTH", props.getAuthInfoTxLength())
|
|
2578
|
+
self.setChildElementOptionalPositiveInteger(child_element, "AUTHENTICATION-BUILD-ATTEMPTS", props.getAuthenticationBuildAttempts())
|
|
2579
|
+
self.setChildElementOptionalPositiveInteger(child_element, "AUTHENTICATION-RETRIES", props.getAuthenticationRetries())
|
|
2580
|
+
self.setChildElementOptionalPositiveInteger(child_element, "DATA-ID", props.getDataId())
|
|
2581
|
+
self.setChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-ID", props.getFreshnessValueId())
|
|
2582
|
+
self.setChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-LENGTH", props.getFreshnessValueLength())
|
|
2583
|
+
self.setChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-TX-LENGTH", props.getFreshnessValueTxLength())
|
|
2584
|
+
|
|
2585
|
+
def writeSecuredIPdu(self, element: ET.Element, i_pdu: SecuredIPdu):
|
|
2586
|
+
self.logger.debug("Write SecuredIPdu <%s>" % i_pdu.getShortName())
|
|
2433
2587
|
child_element = ET.SubElement(element, "SECURED-I-PDU")
|
|
2434
|
-
self.
|
|
2435
|
-
self.
|
|
2588
|
+
self.writeIPdu(child_element, i_pdu)
|
|
2589
|
+
self.setChildElementOptionalRefType(child_element, "AUTHENTICATION-PROPS-REF", i_pdu.getAuthenticationPropsRef())
|
|
2590
|
+
self.setChildElementOptionalRefType(child_element, "FRESHNESS-PROPS-REF", i_pdu.getFreshnessPropsRef())
|
|
2591
|
+
self.setChildElementOptionalRefType(child_element, "PAYLOAD-REF", i_pdu.getPayloadRef())
|
|
2592
|
+
self.setSecureCommunicationProps(child_element, "SECURE-COMMUNICATION-PROPS", i_pdu.getSecureCommunicationProps())
|
|
2593
|
+
self.setChildElementOptionalBooleanValue(child_element, "USE-AS-CRYPTOGRAPHIC-I-PDU", i_pdu.getUseAsCryptographicIPdu())
|
|
2594
|
+
|
|
2595
|
+
def writeTpConfig(self, element: ET.Element, config: TpConfig):
|
|
2596
|
+
self.writeIdentifiable(element, config)
|
|
2597
|
+
self.setChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF", config.getCommunicationClusterRef())
|
|
2598
|
+
|
|
2599
|
+
def writeCanTpAddress(self, element: ET.Element, address: CanTpAddress):
|
|
2600
|
+
if address is not None:
|
|
2601
|
+
child_element = ET.SubElement(element, "CAN-TP-ADDRESS")
|
|
2602
|
+
self.writeIdentifiable(child_element, address)
|
|
2603
|
+
self.setChildElementOptionalIntegerValue(child_element, "TP-ADDRESS", address.getTpAddress())
|
|
2604
|
+
self.setChildElementOptionalIntegerValue(child_element, "TP-ADDRESS-EXTENSION-VALUE", address.getTpAddressExtensionValue())
|
|
2605
|
+
|
|
2606
|
+
def writeCanTpConfigTpAddresses(self, element: ET.Element, config: CanTpConfig):
|
|
2607
|
+
addresses = config.getTpAddresses()
|
|
2608
|
+
if len(addresses) > 0:
|
|
2609
|
+
child_element = ET.SubElement(element, "TP-ADDRESSS")
|
|
2610
|
+
for address in addresses:
|
|
2611
|
+
if isinstance(address, CanTpAddress):
|
|
2612
|
+
self.writeCanTpAddress(child_element, address)
|
|
2613
|
+
else:
|
|
2614
|
+
self.notImplemented("Unsupported TpAddress <%s>" % type(address))
|
|
2615
|
+
|
|
2616
|
+
def writeCanTpChannel(self, element: ET.Element, channel: CanTpChannel):
|
|
2617
|
+
if channel is not None:
|
|
2618
|
+
child_element = ET.SubElement(element, "CAN-TP-CHANNEL")
|
|
2619
|
+
self.writeIdentifiable(child_element, channel)
|
|
2620
|
+
self.setChildElementOptionalPositiveInteger(child_element, "CHANNEL-ID", channel.getChannelId())
|
|
2621
|
+
self.setChildElementOptionalLiteral(child_element, "CHANNEL-MODE", channel.getChannelMode())
|
|
2622
|
+
|
|
2623
|
+
def writeCanTpConfigTpChannels(self, element: ET.Element, config: CanTpConfig):
|
|
2624
|
+
channels = config.getTpChannels()
|
|
2625
|
+
if len(channels) > 0:
|
|
2626
|
+
child_element = ET.SubElement(element, "TP-CHANNELS")
|
|
2627
|
+
for channel in channels:
|
|
2628
|
+
if isinstance(channel, CanTpChannel):
|
|
2629
|
+
self.writeCanTpChannel(child_element, channel)
|
|
2630
|
+
else:
|
|
2631
|
+
self.notImplemented("Unsupported TpChannel <%s>" % type(channel))
|
|
2632
|
+
|
|
2633
|
+
def writeTpConnection(self, element: ET.Element, connection: TpConnection):
|
|
2634
|
+
self.writeARObjectAttributes(element, connection)
|
|
2635
|
+
ident = connection.getIdent()
|
|
2636
|
+
if ident is not None:
|
|
2637
|
+
child_element = ET.SubElement(element, "IDENT")
|
|
2638
|
+
self.writeReferrable(child_element, ident)
|
|
2639
|
+
|
|
2640
|
+
def writeTpConnectionReceiverRefs(self, element: ET.Element, connection: CanTpConnection):
|
|
2641
|
+
refs = connection.getReceiverRefs()
|
|
2642
|
+
if len(refs) > 0:
|
|
2643
|
+
child_element = ET.SubElement(element, "RECEIVER-REFS")
|
|
2644
|
+
for ref in refs:
|
|
2645
|
+
self.setChildElementOptionalRefType(child_element, "RECEIVER-REF", ref)
|
|
2646
|
+
|
|
2647
|
+
def writeCanTpConnection(self, element: ET.Element, connection: CanTpConnection):
|
|
2648
|
+
if connection is not None:
|
|
2649
|
+
child_element = ET.SubElement(element, "CAN-TP-CONNECTION")
|
|
2650
|
+
self.writeTpConnection(child_element, connection)
|
|
2651
|
+
self.setChildElementOptionalLiteral(child_element, "ADDRESSING-FORMAT", connection.getAddressingFormat())
|
|
2652
|
+
self.setChildElementOptionalRefType(child_element, "CAN-TP-CHANNEL-REF", connection.getCanTpChannelRef())
|
|
2653
|
+
self.setChildElementOptionalBooleanValue(child_element, "CANCELLATION", connection.getCancellation())
|
|
2654
|
+
self.setChildElementOptionalRefType(child_element, "DATA-PDU-REF", connection.getDataPduRef())
|
|
2655
|
+
self.setChildElementOptionalRefType(child_element, "FLOW-CONTROL-PDU-REF", connection.getFlowControlPduRef())
|
|
2656
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAX-BLOCK-SIZE", connection.getMaxBlockSize())
|
|
2657
|
+
self.setChildElementOptionalRefType(child_element, "MULTICAST-REF", connection.getMulticastRef())
|
|
2658
|
+
self.setChildElementOptionalBooleanValue(child_element, "PADDING-ACTIVATION", connection.getPaddingActivation())
|
|
2659
|
+
self.writeTpConnectionReceiverRefs(child_element, connection)
|
|
2660
|
+
self.setChildElementOptionalLiteral(child_element, "TA-TYPE", connection.getTaType())
|
|
2661
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-BR", connection.getTimeoutBr())
|
|
2662
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-BS", connection.getTimeoutBs())
|
|
2663
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-CR", connection.getTimeoutCr())
|
|
2664
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-CS", connection.getTimeoutCs())
|
|
2665
|
+
self.setChildElementOptionalRefType(child_element, "TP-SDU-REF", connection.getTpSduRef())
|
|
2666
|
+
self.setChildElementOptionalRefType(child_element, "TRANSMITTER-REF", connection.getTransmitterRef())
|
|
2667
|
+
|
|
2668
|
+
def writeCanTpConfigTpConnections(self, element: ET.Element, config: CanTpConfig):
|
|
2669
|
+
connections = config.getTpConnections()
|
|
2670
|
+
if len(connections) > 0:
|
|
2671
|
+
child_element = ET.SubElement(element, "TP-CONNECTIONS")
|
|
2672
|
+
for connection in connections:
|
|
2673
|
+
if isinstance(connection, CanTpConnection):
|
|
2674
|
+
self.writeCanTpConnection(child_element, connection)
|
|
2675
|
+
else:
|
|
2676
|
+
self.notImplemented("Unsupported TpConnection <%s>" % type(connection))
|
|
2677
|
+
|
|
2678
|
+
def writeCanTpEcu(self, element: ET.Element, tp_ecu: CanTpEcu):
|
|
2679
|
+
if tp_ecu is not None:
|
|
2680
|
+
child_element = ET.SubElement(element, "CAN-TP-ECU")
|
|
2681
|
+
self.setChildElementOptionalTimeValue(child_element, "CYCLE-TIME-MAIN-FUNCTION", tp_ecu.getCycleTimeMainFunction())
|
|
2682
|
+
self.setChildElementOptionalRefType(child_element, "ECU-INSTANCE-REF", tp_ecu.getEcuInstanceRef())
|
|
2683
|
+
|
|
2684
|
+
def writeCanTpConfigTpEcus(self, element: ET.Element, config: CanTpConfig):
|
|
2685
|
+
tp_ecus = config.getTpEcus()
|
|
2686
|
+
if len(tp_ecus) > 0:
|
|
2687
|
+
child_element = ET.SubElement(element, "TP-ECUS")
|
|
2688
|
+
for tp_ecu in tp_ecus:
|
|
2689
|
+
if isinstance(tp_ecu, CanTpEcu):
|
|
2690
|
+
self.writeCanTpEcu(child_element, tp_ecu)
|
|
2691
|
+
else:
|
|
2692
|
+
self.notImplemented("Unsupported TpEcu <%s>" % type(tp_ecu))
|
|
2693
|
+
|
|
2694
|
+
def writeCanTpNode(self, element: ET.Element, tp_node: CanTpNode):
|
|
2695
|
+
if tp_node is not None:
|
|
2696
|
+
child_element = ET.SubElement(element, "CAN-TP-NODE")
|
|
2697
|
+
self.writeIdentifiable(child_element, tp_node)
|
|
2698
|
+
self.setChildElementOptionalRefType(child_element, "CONNECTOR-REF", tp_node.getConnectorRef())
|
|
2699
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAX-FC-WAIT", tp_node.getMaxFcWait())
|
|
2700
|
+
self.setChildElementOptionalTimeValue(child_element, "ST-MIN", tp_node.getStMin())
|
|
2701
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-AR", tp_node.getTimeoutAr())
|
|
2702
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-AS", tp_node.getTimeoutAs())
|
|
2703
|
+
self.setChildElementOptionalRefType(child_element, "TP-ADDRESS-REF", tp_node.getTpAddressRef())
|
|
2704
|
+
|
|
2705
|
+
def writeCanTpConfigTpNodes(self, element: ET.Element, config: CanTpConfig):
|
|
2706
|
+
tp_nodes = config.getTpNodes()
|
|
2707
|
+
if len(tp_nodes) > 0:
|
|
2708
|
+
child_element = ET.SubElement(element, "TP-NODES")
|
|
2709
|
+
for tp_node in tp_nodes:
|
|
2710
|
+
if isinstance(tp_node, CanTpNode):
|
|
2711
|
+
self.writeCanTpNode(child_element, tp_node)
|
|
2712
|
+
else:
|
|
2713
|
+
self.notImplemented("Unsupported TpNode <%s>" % type(tp_node))
|
|
2714
|
+
|
|
2436
2715
|
|
|
2437
2716
|
def writeCanTpConfig(self, element: ET.Element, config: CanTpConfig):
|
|
2438
2717
|
self.logger.debug("Write CanTpConfig <%s>" % config.getShortName())
|
|
2439
2718
|
child_element = ET.SubElement(element, "CAN-TP-CONFIG")
|
|
2440
|
-
self.
|
|
2719
|
+
self.writeTpConfig(child_element, config)
|
|
2720
|
+
self.writeCanTpConfigTpAddresses(child_element, config)
|
|
2721
|
+
self.writeCanTpConfigTpChannels(child_element, config)
|
|
2722
|
+
self.writeCanTpConfigTpConnections(child_element, config)
|
|
2723
|
+
self.writeCanTpConfigTpEcus(child_element, config)
|
|
2724
|
+
self.writeCanTpConfigTpNodes(child_element, config)
|
|
2725
|
+
|
|
2726
|
+
def writeTpAddress(self, element: ET.Element, address: TpAddress):
|
|
2727
|
+
if address is not None:
|
|
2728
|
+
child_element = ET.SubElement(element, "TP-ADDRESS")
|
|
2729
|
+
self.writeIdentifiable(child_element, address)
|
|
2730
|
+
self.setChildElementOptionalIntegerValue(child_element, "TP-ADDRESS", address.getTpAddress())
|
|
2731
|
+
|
|
2732
|
+
def writeLinTpConfigTpAddresses(self, element: ET.Element, config: CanTpConfig):
|
|
2733
|
+
addresses = config.getTpAddresses()
|
|
2734
|
+
if len(addresses) > 0:
|
|
2735
|
+
child_element = ET.SubElement(element, "TP-ADDRESSS")
|
|
2736
|
+
for address in addresses:
|
|
2737
|
+
if isinstance(address, TpAddress):
|
|
2738
|
+
self.writeTpAddress(child_element, address)
|
|
2739
|
+
else:
|
|
2740
|
+
self.notImplemented("Unsupported TpAddress <%s>" % type(address))
|
|
2741
|
+
|
|
2742
|
+
def writeLinTpConnection(self, element: ET.Element, connection: LinTpConnection):
|
|
2743
|
+
if connection is not None:
|
|
2744
|
+
child_element = ET.SubElement(element, "LIN-TP-CONNECTION")
|
|
2745
|
+
self.writeTpConnection(child_element, connection)
|
|
2746
|
+
self.setChildElementOptionalRefType(child_element, "DATA-PDU-REF", connection.getDataPduRef())
|
|
2747
|
+
self.setChildElementOptionalRefType(child_element, "FLOW-CONTROL-REF", connection.getFlowControlRef())
|
|
2748
|
+
self.setChildElementOptionalRefType(child_element, "LIN-TP-N-SDU-REF", connection.getLinTpNSduRef())
|
|
2749
|
+
self.writeTpConnectionReceiverRefs(child_element, connection)
|
|
2750
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-AS", connection.getTimeoutAs())
|
|
2751
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-CR", connection.getTimeoutCr())
|
|
2752
|
+
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT-CS", connection.getTimeoutCs())
|
|
2753
|
+
self.setChildElementOptionalRefType(child_element, "TRANSMITTER-REF", connection.getTransmitterRef())
|
|
2754
|
+
|
|
2755
|
+
def writeLinTpConfigTpConnections(self, element: ET.Element, config: LinTpConfig):
|
|
2756
|
+
connections = config.getTpConnections()
|
|
2757
|
+
if len(connections) > 0:
|
|
2758
|
+
child_element = ET.SubElement(element, "TP-CONNECTIONS")
|
|
2759
|
+
for connection in connections:
|
|
2760
|
+
if isinstance(connection, LinTpConnection):
|
|
2761
|
+
self.writeLinTpConnection(child_element, connection)
|
|
2762
|
+
else:
|
|
2763
|
+
self.notImplemented("Unsupported TpConnection <%s>" % type(connection))
|
|
2764
|
+
|
|
2765
|
+
def writeLinTpNode(self, element: ET.Element, tp_node: LinTpNode):
|
|
2766
|
+
if tp_node is not None:
|
|
2767
|
+
child_element = ET.SubElement(element, "LIN-TP-NODE")
|
|
2768
|
+
self.writeIdentifiable(child_element, tp_node)
|
|
2769
|
+
self.setChildElementOptionalRefType(child_element, "CONNECTOR-REF", tp_node.getConnectorRef())
|
|
2770
|
+
self.setChildElementOptionalBooleanValue(element, "DROP-NOT-REQUESTED-NAD", tp_node.getDropNotRequestedNad())
|
|
2771
|
+
self.setChildElementOptionalTimeValue(child_element, "P-2-MAX", tp_node.getP2Max())
|
|
2772
|
+
self.setChildElementOptionalTimeValue(child_element, "P-2-TIMING", tp_node.getP2Timing())
|
|
2773
|
+
self.setChildElementOptionalRefType(child_element, "TP-ADDRESS-REF", tp_node.getTpAddressRef())
|
|
2774
|
+
|
|
2775
|
+
def writeLinTpConfigTpNodes(self, element: ET.Element, config: LinTpConfig):
|
|
2776
|
+
tp_nodes = config.getTpNodes()
|
|
2777
|
+
if len(tp_nodes) > 0:
|
|
2778
|
+
child_element = ET.SubElement(element, "TP-NODES")
|
|
2779
|
+
for tp_node in tp_nodes:
|
|
2780
|
+
if isinstance(tp_node, LinTpNode):
|
|
2781
|
+
self.writeLinTpNode(child_element, tp_node)
|
|
2782
|
+
else:
|
|
2783
|
+
self.notImplemented("Unsupported TpNode <%s>" % type(tp_node))
|
|
2441
2784
|
|
|
2442
2785
|
def writeLinTpConfig(self, element: ET.Element, config: LinTpConfig):
|
|
2443
2786
|
self.logger.debug("Write LinTpConfig <%s>" % config.getShortName())
|
|
2444
2787
|
child_element = ET.SubElement(element, "LIN-TP-CONFIG")
|
|
2445
|
-
self.
|
|
2788
|
+
self.writeTpConfig(child_element, config)
|
|
2789
|
+
self.writeLinTpConfigTpAddresses(child_element, config)
|
|
2790
|
+
self.writeLinTpConfigTpConnections(child_element, config)
|
|
2791
|
+
self.writeLinTpConfigTpNodes(child_element, config)
|
|
2446
2792
|
|
|
2447
2793
|
def writeFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
|
|
2448
2794
|
ref_list = triggering.getFramePortRefs()
|
|
@@ -3219,10 +3565,18 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3219
3565
|
self.logger.debug("Write CanCommunicationConnector %s" % connector.getShortName())
|
|
3220
3566
|
self.writeCommunicationConnector(element, connector)
|
|
3221
3567
|
|
|
3568
|
+
def writeEthernetCommunicationConnectorNetworkEndpointRefs(self, element: ET.Element, connector: EthernetCommunicationConnector):
|
|
3569
|
+
refs = connector.getNetworkEndpointRefs()
|
|
3570
|
+
if len(refs) > 0:
|
|
3571
|
+
child_element = ET.SubElement(element, "NETWORK-ENDPOINT-REFS")
|
|
3572
|
+
for ref in refs:
|
|
3573
|
+
self.setChildElementOptionalRefType(child_element, "NETWORK-ENDPOINT-REF", ref)
|
|
3574
|
+
|
|
3222
3575
|
def writeEthernetCommunicationConnector(self, element: ET.Element, connector: EthernetCommunicationConnector):
|
|
3223
3576
|
self.logger.debug("Write EthernetCommunicationConnector %s" % connector.getShortName())
|
|
3224
3577
|
self.writeCommunicationConnector(element, connector)
|
|
3225
3578
|
self.setChildElementOptionalPositiveInteger(element, "MAXIMUM-TRANSMISSION-UNIT", connector.getMaximumTransmissionUnit())
|
|
3579
|
+
self.writeEthernetCommunicationConnectorNetworkEndpointRefs(element, connector)
|
|
3226
3580
|
|
|
3227
3581
|
def writeLinCommunicationConnector(self, element: ET.Element, connector: LinCommunicationConnector):
|
|
3228
3582
|
self.logger.debug("Write LinCommunicationConnector %s" % connector.getShortName())
|
|
@@ -3263,6 +3617,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3263
3617
|
self.setChildElementOptionalBooleanValue(child_element, "COM-ENABLE-MDT-FOR-CYCLIC-TRANSMISSION", instance.getComEnableMDTForCyclicTransmission())
|
|
3264
3618
|
self.writeEcuInstanceCommControllers(child_element, instance)
|
|
3265
3619
|
self.writeEcuInstanceConnectors(child_element, instance)
|
|
3620
|
+
self.setChildElementOptionalIntegerValue(child_element, "DIAGNOSTIC-ADDRESS", instance.getDiagnosticAddress())
|
|
3266
3621
|
self.setChildElementOptionalBooleanValue(child_element, "SLEEP-MODE-SUPPORTED", instance.getSleepModeSupported())
|
|
3267
3622
|
self.setChildElementOptionalBooleanValue(child_element, "WAKE-UP-OVER-BUS-SUPPORTED", instance.getWakeUpOverBusSupported())
|
|
3268
3623
|
|
|
@@ -3319,11 +3674,52 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3319
3674
|
else:
|
|
3320
3675
|
self.notImplemented("Unsupported Sw Mapping %s" % type(sw_mapping))
|
|
3321
3676
|
|
|
3677
|
+
def writeEcuMapping(self, element: ET.Element, mapping: ECUMapping):
|
|
3678
|
+
self.logger.debug("Write ECUMapping <%s>" % mapping.getShortName())
|
|
3679
|
+
if mapping is not None:
|
|
3680
|
+
child_element = ET.SubElement(element, "ECU-MAPPING")
|
|
3681
|
+
self.writeIdentifiable(child_element, mapping)
|
|
3682
|
+
self.setChildElementOptionalRefType(child_element, "ECU-INSTANCE-REF", mapping.getEcuInstanceRef())
|
|
3683
|
+
self.setChildElementOptionalRefType(child_element, "ECU-REF", mapping.getEcuRef())
|
|
3684
|
+
|
|
3685
|
+
def writeSystemMappingEcuResourceMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
3686
|
+
ecu_resource_mappings = mapping.getEcuResourceMappings()
|
|
3687
|
+
if len(ecu_resource_mappings) > 0:
|
|
3688
|
+
child_element = ET.SubElement(element, "ECU-RESOURCE-MAPPINGS")
|
|
3689
|
+
for ecu_resource_mapping in ecu_resource_mappings:
|
|
3690
|
+
if isinstance(ecu_resource_mapping, ECUMapping):
|
|
3691
|
+
self.writeEcuMapping(child_element, ecu_resource_mapping)
|
|
3692
|
+
else:
|
|
3693
|
+
self.notImplemented("Unsupported Sw Mapping %s" % type(ecu_resource_mapping))
|
|
3694
|
+
|
|
3695
|
+
def writeSwcToImplMapping(self, element: ET.Element, mapping: SwcToImplMapping):
|
|
3696
|
+
if mapping is not None:
|
|
3697
|
+
child_element = ET.SubElement(element, "SWC-TO-IMPL-MAPPING")
|
|
3698
|
+
self.writeIdentifiable(child_element, mapping)
|
|
3699
|
+
self.setChildElementOptionalRefType(child_element, "COMPONENT-IMPLEMENTATION-REF", mapping.getComponentImplementationRef())
|
|
3700
|
+
irefs = mapping.getComponentIRefs()
|
|
3701
|
+
if len(irefs) > 0:
|
|
3702
|
+
irefs_tag = ET.SubElement(child_element, "COMPONENT-IREFS")
|
|
3703
|
+
for iref in irefs:
|
|
3704
|
+
self.setComponentInSystemInstanceRef(irefs_tag, "COMPONENT-IREF", iref)
|
|
3705
|
+
|
|
3706
|
+
def writeSystemMappingSwImplMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
3707
|
+
sw_impl_mappings = mapping.getSwImplMappings()
|
|
3708
|
+
if len(sw_impl_mappings) > 0:
|
|
3709
|
+
child_element = ET.SubElement(element, "SW-IMPL-MAPPINGS")
|
|
3710
|
+
for sw_impl_mapping in sw_impl_mappings:
|
|
3711
|
+
if isinstance(sw_impl_mapping, SwcToImplMapping):
|
|
3712
|
+
self.writeSwcToImplMapping(child_element, sw_impl_mapping)
|
|
3713
|
+
else:
|
|
3714
|
+
self.notImplemented("Unsupported SwImplMapping <%s>" % type(sw_impl_mapping))
|
|
3715
|
+
|
|
3322
3716
|
def writeSystemMapping(self, element: ET.Element, mapping: SystemMapping):
|
|
3323
|
-
self.logger.debug("Write SystemMapping
|
|
3717
|
+
self.logger.debug("Write SystemMapping <%s>" % mapping.getShortName())
|
|
3324
3718
|
child_element = ET.SubElement(element, "SYSTEM-MAPPING")
|
|
3325
3719
|
self.writeIdentifiable(child_element, mapping)
|
|
3326
3720
|
self.writeSystemMappingDataMappings(child_element, mapping)
|
|
3721
|
+
self.writeSystemMappingEcuResourceMappings(child_element, mapping)
|
|
3722
|
+
self.writeSystemMappingSwImplMappings(child_element, mapping)
|
|
3327
3723
|
self.writeSystemMappingSwMappings(child_element, mapping)
|
|
3328
3724
|
|
|
3329
3725
|
def writeSystemMappings(self, element: ET.Element, system: System):
|
|
@@ -3368,9 +3764,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3368
3764
|
self.logger.debug("Set PhysicalDimension %s" % dimension.getShortName())
|
|
3369
3765
|
child_element = ET.SubElement(element, "PHYSICAL-DIMENSION")
|
|
3370
3766
|
self.writeARElement(child_element, dimension)
|
|
3371
|
-
self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
|
|
3372
3767
|
self.setChildElementOptionalNumericalValue(child_element, "LENGTH-EXP", dimension.getLengthExp())
|
|
3768
|
+
self.setChildElementOptionalNumericalValue(child_element, "LUMINOUS-INTENSITY-EXP", dimension.getLuminousIntensityExp())
|
|
3769
|
+
self.setChildElementOptionalNumericalValue(child_element, "MASS-EXP", dimension.getMassExp())
|
|
3770
|
+
self.setChildElementOptionalNumericalValue(child_element, "TEMPERATURE-EXP", dimension.getTemperatureExp())
|
|
3373
3771
|
self.setChildElementOptionalNumericalValue(child_element, "TIME-EXP", dimension.getTimeExp())
|
|
3772
|
+
self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
|
|
3374
3773
|
|
|
3375
3774
|
def setFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
|
|
3376
3775
|
self.logger.debug("Set FlatInstanceDescriptor %s" % desc.getShortName())
|
|
@@ -3660,52 +4059,205 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3660
4059
|
self.writeDiagnosticServiceTableDiagnosticConnectionRefs(child_element, table)
|
|
3661
4060
|
self.setChildElementOptionalRefType(child_element, "ECU-INSTANCE-REF", table.getEcuInstanceRef())
|
|
3662
4061
|
|
|
3663
|
-
def
|
|
3664
|
-
self.
|
|
3665
|
-
|
|
3666
|
-
self.
|
|
4062
|
+
def writePdu(self, element: ET.Element, pdu: Pdu):
|
|
4063
|
+
self.writeIdentifiable(element, pdu)
|
|
4064
|
+
self.setChildElementOptionalBooleanValue(element, "HAS-DYNAMIC-LENGTH", pdu.getHasDynamicLength())
|
|
4065
|
+
self.setChildElementOptionalNumericalValue(element, "LENGTH", pdu.getLength())
|
|
4066
|
+
|
|
4067
|
+
def writeIPdu(self, element: ET.Element, pdu: IPdu):
|
|
4068
|
+
self.writePdu(element, pdu)
|
|
4069
|
+
|
|
4070
|
+
def writeSegmentPosition(self, element: ET.Element, position: SegmentPosition):
|
|
4071
|
+
if position is not None:
|
|
4072
|
+
child_element = ET.SubElement(element, "SEGMENT-POSITION")
|
|
4073
|
+
self.setChildElementOptionalLiteral(child_element, "SEGMENT-BYTE-ORDER", position.getSegmentByteOrder())
|
|
4074
|
+
self.setChildElementOptionalIntegerValue(child_element, "SEGMENT-LENGTH", position.getSegmentLength())
|
|
4075
|
+
self.setChildElementOptionalIntegerValue(child_element, "SEGMENT-POSITION", position.getSegmentPosition())
|
|
4076
|
+
|
|
4077
|
+
def writeMultiplexedPartSegmentPositions(self, element: ET.Element, part: MultiplexedPart):
|
|
4078
|
+
positions = part.getSegmentPositions()
|
|
4079
|
+
if len(positions) > 0:
|
|
4080
|
+
child_element = ET.SubElement(element, "SEGMENT-POSITIONS")
|
|
4081
|
+
for position in positions:
|
|
4082
|
+
if isinstance(position, SegmentPosition):
|
|
4083
|
+
self.writeSegmentPosition(child_element, position)
|
|
4084
|
+
else:
|
|
4085
|
+
self.notImplemented("Unsupported DynamicPart <%s>" % type(position))
|
|
4086
|
+
|
|
4087
|
+
def writeMultiplexedPart(self, element: ET.Element, part: MultiplexedPart):
|
|
4088
|
+
self.writeMultiplexedPartSegmentPositions(element, part)
|
|
4089
|
+
|
|
4090
|
+
def writeDynamicPartAlternative(self, element: ET.Element, alternative: DynamicPartAlternative):
|
|
4091
|
+
if alternative is not None:
|
|
4092
|
+
child_element = ET.SubElement(element, "DYNAMIC-PART-ALTERNATIVE")
|
|
4093
|
+
self.setChildElementOptionalRefType(child_element, "I-PDU-REF", alternative.getIPduRef())
|
|
4094
|
+
self.setChildElementOptionalBooleanValue(child_element, "INITIAL-DYNAMIC-PART", alternative.getInitialDynamicPart())
|
|
4095
|
+
self.setChildElementOptionalIntegerValue(child_element, "SELECTOR-FIELD-CODE", alternative.getSelectorFieldCode())
|
|
4096
|
+
|
|
4097
|
+
def writeDynamicPartDynamicPartAlternatives(self, element: ET.Element, part: DynamicPart):
|
|
4098
|
+
alternatives = part.getDynamicPartAlternatives()
|
|
4099
|
+
if len(alternatives) > 0:
|
|
4100
|
+
child_element = ET.SubElement(element, "DYNAMIC-PART-ALTERNATIVES")
|
|
4101
|
+
for alternative in alternatives:
|
|
4102
|
+
if isinstance(alternative, DynamicPartAlternative):
|
|
4103
|
+
self.writeDynamicPartAlternative(child_element, alternative)
|
|
4104
|
+
else:
|
|
4105
|
+
self.notImplemented("Unsupported DynamicPartAlternative <%s>" % type(alternative))
|
|
4106
|
+
|
|
4107
|
+
def writeDynamicPart(self, element: ET.Element, part: DynamicPart):
|
|
4108
|
+
child_element = ET.SubElement(element, "DYNAMIC-PART")
|
|
4109
|
+
self.writeMultiplexedPart(child_element, part)
|
|
4110
|
+
self.writeDynamicPartDynamicPartAlternatives(child_element, part)
|
|
4111
|
+
|
|
4112
|
+
def writeMultiplexedIPduDynamicParts(self, element: ET.Element, ipdu: MultiplexedIPdu):
|
|
4113
|
+
part = ipdu.getDynamicPart()
|
|
4114
|
+
if part is not None:
|
|
4115
|
+
child_element = ET.SubElement(element, "DYNAMIC-PARTS")
|
|
4116
|
+
if isinstance(part, DynamicPart):
|
|
4117
|
+
self.writeDynamicPart(child_element, part)
|
|
4118
|
+
else:
|
|
4119
|
+
self.notImplemented("Unsupported DynamicPart <%s>" % type(part))
|
|
4120
|
+
|
|
4121
|
+
def writeStaticPart(self, element: ET.Element, part: StaticPart):
|
|
4122
|
+
child_element = ET.SubElement(element, "STATIC-PART")
|
|
4123
|
+
self.writeMultiplexedPart(child_element, part)
|
|
4124
|
+
self.setChildElementOptionalRefType(child_element, "I-PDU-REF", part.getIPduRef())
|
|
4125
|
+
|
|
4126
|
+
def writeMultiplexedIPduStaticParts(self, element: ET.Element, ipdu: MultiplexedIPdu):
|
|
4127
|
+
part = ipdu.getStaticPart()
|
|
4128
|
+
if part is not None:
|
|
4129
|
+
child_element = ET.SubElement(element, "STATIC-PARTS")
|
|
4130
|
+
if isinstance(part, StaticPart):
|
|
4131
|
+
self.writeStaticPart(child_element, part)
|
|
4132
|
+
else:
|
|
4133
|
+
self.notImplemented("Unsupported StaticPart <%s>" % type(part))
|
|
3667
4134
|
|
|
3668
|
-
def
|
|
3669
|
-
self.logger.debug("Write
|
|
4135
|
+
def writeMultiplexedIPdu(self, element: ET.Element, ipdu: MultiplexedIPdu):
|
|
4136
|
+
self.logger.debug("Write MultiplexedIPdu <%s>" % ipdu.getShortName())
|
|
4137
|
+
child_element = ET.SubElement(element, "MULTIPLEXED-I-PDU")
|
|
4138
|
+
self.writeIPdu(child_element, ipdu)
|
|
4139
|
+
self.writeMultiplexedIPduDynamicParts(child_element, ipdu)
|
|
4140
|
+
self.setChildElementOptionalLiteral(child_element, "SELECTOR-FIELD-BYTE-ORDER", ipdu.getSelectorFieldByteOrder())
|
|
4141
|
+
self.setChildElementOptionalIntegerValue(child_element, "SELECTOR-FIELD-LENGTH", ipdu.getSelectorFieldLength())
|
|
4142
|
+
self.setChildElementOptionalIntegerValue(child_element, "SELECTOR-FIELD-START-POSITION", ipdu.getSelectorFieldStartPosition())
|
|
4143
|
+
self.writeMultiplexedIPduStaticParts(child_element, ipdu)
|
|
4144
|
+
self.setChildElementOptionalLiteral(child_element, "TRIGGER-MODE", ipdu.getTriggerMode())
|
|
4145
|
+
self.setChildElementOptionalIntegerValue(child_element, "UNUSED-BIT-PATTERN", ipdu.getUnusedBitPattern())
|
|
4146
|
+
|
|
4147
|
+
def writeUserDefinedIPdu(self, element: ET.Element, ipdu: UserDefinedIPdu):
|
|
4148
|
+
self.logger.debug("Write UserDefinedIPdu <%s>" % ipdu.getShortName())
|
|
3670
4149
|
child_element = ET.SubElement(element, "USER-DEFINED-I-PDU")
|
|
3671
|
-
self.
|
|
4150
|
+
self.writeIPdu(child_element, ipdu)
|
|
4151
|
+
self.setChildElementOptionalLiteral(child_element, "CDD-TYPE", ipdu.getCddType())
|
|
3672
4152
|
|
|
3673
4153
|
def writeUserDefinedPdu(self, element: ET.Element, pdu: UserDefinedPdu):
|
|
3674
|
-
self.logger.debug("Write UserDefinedPdu
|
|
4154
|
+
self.logger.debug("Write UserDefinedPdu <%s>" % pdu.getShortName())
|
|
3675
4155
|
child_element = ET.SubElement(element, "USER-DEFINED-PDU")
|
|
3676
|
-
self.
|
|
4156
|
+
self.writePdu(child_element, pdu)
|
|
4157
|
+
self.setChildElementOptionalLiteral(child_element, "CDD-TYPE", pdu.getCddType())
|
|
3677
4158
|
|
|
3678
4159
|
def writeGeneralPurposePdu(self, element: ET.Element, pdu: GeneralPurposePdu):
|
|
3679
|
-
self.logger.debug("Write GeneralPurposePdu
|
|
4160
|
+
self.logger.debug("Write GeneralPurposePdu <%s>" % pdu.getShortName())
|
|
3680
4161
|
child_element = ET.SubElement(element, "GENERAL-PURPOSE-PDU")
|
|
3681
|
-
self.
|
|
4162
|
+
self.writePdu(child_element, pdu)
|
|
3682
4163
|
|
|
3683
4164
|
def writeGeneralPurposeIPdu(self, element: ET.Element, i_pdu: GeneralPurposeIPdu):
|
|
3684
|
-
self.logger.debug("Write GeneralPurposeIPdu
|
|
4165
|
+
self.logger.debug("Write GeneralPurposeIPdu <%s>" % i_pdu.getShortName())
|
|
3685
4166
|
child_element = ET.SubElement(element, "GENERAL-PURPOSE-I-PDU")
|
|
3686
|
-
self.
|
|
4167
|
+
self.writeIPdu(child_element, i_pdu)
|
|
4168
|
+
|
|
4169
|
+
def writeSecureCommunicationAuthenticationProps(self, element: ET.Element, props: SecureCommunicationAuthenticationProps):
|
|
4170
|
+
chile_element = ET.SubElement(element, "SECURE-COMMUNICATION-AUTHENTICATION-PROPS")
|
|
4171
|
+
self.writeIdentifiable(chile_element, props)
|
|
4172
|
+
self.setChildElementOptionalLiteral(chile_element, "AUTH-ALGORITHM", props.getAuthAlgorithm())
|
|
4173
|
+
self.setChildElementOptionalPositiveInteger(chile_element, "AUTH-INFO-TX-LENGTH", props.getAuthInfoTxLength())
|
|
4174
|
+
|
|
4175
|
+
def writeSecureCommunicationPropsSetAuthenticationProps(self, element: ET.Element, props_set: SecureCommunicationPropsSet):
|
|
4176
|
+
propses = props_set.getAuthenticationProps()
|
|
4177
|
+
if len(propses) > 0:
|
|
4178
|
+
child_element = ET.SubElement(element, "AUTHENTICATION-PROPSS")
|
|
4179
|
+
for props in propses:
|
|
4180
|
+
if isinstance(props, SecureCommunicationAuthenticationProps):
|
|
4181
|
+
self.writeSecureCommunicationAuthenticationProps(child_element, props)
|
|
4182
|
+
else:
|
|
4183
|
+
self.notImplemented("Unsupported AuthenticationProps <%s>" % type(props))
|
|
4184
|
+
|
|
4185
|
+
def writeSecureCommunicationFreshnessProps(self, element: ET.Element, props: SecureCommunicationFreshnessProps):
|
|
4186
|
+
child_element = ET.SubElement(element, "SECURE-COMMUNICATION-FRESHNESS-PROPS")
|
|
4187
|
+
self.writeIdentifiable(child_element, props)
|
|
4188
|
+
self.setChildElementOptionalLiteral(child_element, "FRESHNESS-VALUE-LENGTH", props.getFreshnessValueLength())
|
|
4189
|
+
self.setChildElementOptionalPositiveInteger(child_element, "FRESHNESS-VALUE-TX-LENGTH", props.getFreshnessValueTxLength())
|
|
4190
|
+
|
|
4191
|
+
def writeSecureCommunicationPropsSetFreshnessProps(self, element: ET.Element, props_set: SecureCommunicationPropsSet):
|
|
4192
|
+
propses = props_set.getFreshnessProps()
|
|
4193
|
+
if len(propses) > 0:
|
|
4194
|
+
child_element = ET.SubElement(element, "FRESHNESS-PROPSS")
|
|
4195
|
+
for props in propses:
|
|
4196
|
+
if isinstance(props, SecureCommunicationFreshnessProps):
|
|
4197
|
+
self.writeSecureCommunicationFreshnessProps(child_element, props)
|
|
4198
|
+
else:
|
|
4199
|
+
self.notImplemented("Unsupported FreshnessProps <%s>" % type(props))
|
|
3687
4200
|
|
|
3688
4201
|
def writeSecureCommunicationPropsSet(self, element: ET.Element, set: SecureCommunicationPropsSet):
|
|
3689
4202
|
self.logger.debug("Write SecureCommunicationPropsSet %s" % set.getShortName())
|
|
3690
4203
|
child_element = ET.SubElement(element, "SECURE-COMMUNICATION-PROPS-SET")
|
|
3691
4204
|
self.writeIdentifiable(child_element, set)
|
|
4205
|
+
self.writeSecureCommunicationPropsSetAuthenticationProps(child_element, set)
|
|
4206
|
+
self.writeSecureCommunicationPropsSetFreshnessProps(child_element, set)
|
|
3692
4207
|
|
|
3693
4208
|
def writeSoAdRoutingGroup(self, element: ET.Element, group: SoAdRoutingGroup):
|
|
3694
|
-
self.logger.debug("Write SoAdRoutingGroup
|
|
4209
|
+
self.logger.debug("Write SoAdRoutingGroup <%s>" % group.getShortName())
|
|
3695
4210
|
child_element = ET.SubElement(element, "SO-AD-ROUTING-GROUP")
|
|
3696
4211
|
self.writeIdentifiable(child_element, group)
|
|
4212
|
+
self.setChildElementOptionalLiteral(child_element, "EVENT-GROUP-CONTROL-TYPE", group.getEventGroupControlType())
|
|
4213
|
+
|
|
4214
|
+
def writeDoIpLogicAddress(self, element: ET.Element, address: DoIpLogicAddress):
|
|
4215
|
+
if address is not None:
|
|
4216
|
+
child_element = ET.SubElement(element, "DO-IP-LOGIC-ADDRESS")
|
|
4217
|
+
self.writeIdentifiable(child_element, address)
|
|
4218
|
+
self.setChildElementOptionalIntegerValue(child_element, "ADDRESS", address.getAddress())
|
|
4219
|
+
|
|
4220
|
+
def writeDoIpTpConfigDoIpLogicAddresses(self, element: ET.Element, config: DoIpTpConfig):
|
|
4221
|
+
addresses = config.getDoIpLogicAddresses()
|
|
4222
|
+
if len(addresses) > 0:
|
|
4223
|
+
child_element = ET.SubElement(element, "DO-IP-LOGIC-ADDRESSS")
|
|
4224
|
+
for address in addresses:
|
|
4225
|
+
if isinstance(address, DoIpLogicAddress):
|
|
4226
|
+
self.writeDoIpLogicAddress(child_element, address)
|
|
4227
|
+
else:
|
|
4228
|
+
self.notImplemented("Unsupported DoIpLogicAddress <%s>" % type(address))
|
|
4229
|
+
|
|
4230
|
+
def writeDoIpTpConnection(self, element: ET.Element, connection: DoIpTpConnection):
|
|
4231
|
+
if connection is not None:
|
|
4232
|
+
child_element = ET.SubElement(element, "DO-IP-TP-CONNECTION")
|
|
4233
|
+
self.writeTpConnection(child_element, connection)
|
|
4234
|
+
self.setChildElementOptionalRefType(child_element, "DO-IP-SOURCE-ADDRESS-REF", connection.getDoIpSourceAddressRef())
|
|
4235
|
+
self.setChildElementOptionalRefType(child_element, "DO-IP-TARGET-ADDRESS-REF", connection.getDoIpTargetAddressRef())
|
|
4236
|
+
self.setChildElementOptionalRefType(child_element, "TP-SDU-REF", connection.getTpSduRef())
|
|
4237
|
+
|
|
4238
|
+
def writeDoIpTpConfigTpConnections(self, element: ET.Element, config: DoIpTpConfig):
|
|
4239
|
+
connections = config.getTpConnections()
|
|
4240
|
+
if len(connections) > 0:
|
|
4241
|
+
child_element = ET.SubElement(element, "TP-CONNECTIONS")
|
|
4242
|
+
for address in connections:
|
|
4243
|
+
if isinstance(address, DoIpTpConnection):
|
|
4244
|
+
self.writeDoIpTpConnection(child_element, address)
|
|
4245
|
+
else:
|
|
4246
|
+
self.notImplemented("Unsupported TpConnection <%s>" % type(address))
|
|
3697
4247
|
|
|
3698
4248
|
def writeDoIpTpConfig(self, element: ET.Element, config: DoIpTpConfig):
|
|
3699
|
-
self.logger.debug("Write DoIpTpConfig
|
|
4249
|
+
self.logger.debug("Write DoIpTpConfig <%s>" % config.getShortName())
|
|
3700
4250
|
child_element = ET.SubElement(element, "DO-IP-TP-CONFIG")
|
|
3701
|
-
self.
|
|
4251
|
+
self.writeTpConfig(child_element, config)
|
|
4252
|
+
self.writeDoIpTpConfigDoIpLogicAddresses(child_element, config)
|
|
4253
|
+
self.writeDoIpTpConfigTpConnections(child_element, config)
|
|
3702
4254
|
|
|
3703
4255
|
def writeLinCommunicationController(self, element: ET.Element, controller: LinCommunicationController):
|
|
3704
4256
|
self.writeCommunicationController(element, controller)
|
|
3705
4257
|
self.setChildElementOptionalLiteral(element, "PROTOCOL-VERSION", controller.getProtocolVersion())
|
|
3706
4258
|
|
|
3707
4259
|
def writeLinMaster(self, element: ET.Element, controller: LinMaster):
|
|
3708
|
-
self.logger.debug("Write LinMaster
|
|
4260
|
+
self.logger.debug("Write LinMaster <%s>" % controller.getShortName())
|
|
3709
4261
|
child_element = ET.SubElement(element, "LIN-MASTER")
|
|
3710
4262
|
self.writeIdentifiable(child_element, controller)
|
|
3711
4263
|
variants_tag = ET.SubElement(child_element, "LIN-MASTER-VARIANTS")
|
|
@@ -3732,10 +4284,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3732
4284
|
if filter is not None:
|
|
3733
4285
|
child_element = ET.SubElement(element, key)
|
|
3734
4286
|
self.setChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE", filter.getDataFilterType())
|
|
4287
|
+
self.setChildElementOptionalIntegerValue(child_element, "MASK", filter.getMask())
|
|
4288
|
+
self.setChildElementOptionalIntegerValue(child_element, "X", filter.getX())
|
|
3735
4289
|
|
|
3736
|
-
def setTransmissionModeConditions(self, element: ET.Element, conditions: List[TransmissionModeCondition]):
|
|
4290
|
+
def setTransmissionModeConditions(self, element: ET.Element, key: str, conditions: List[TransmissionModeCondition]):
|
|
3737
4291
|
if len(conditions) > 0:
|
|
3738
|
-
conditions_tag = ET.SubElement(element,
|
|
4292
|
+
conditions_tag = ET.SubElement(element, key)
|
|
3739
4293
|
for condition in conditions:
|
|
3740
4294
|
child_element = ET.SubElement(conditions_tag, "TRANSMISSION-MODE-CONDITION")
|
|
3741
4295
|
self.setDataFilter(child_element, "DATA-FILTER", condition.getDataFilter())
|
|
@@ -3773,7 +4327,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3773
4327
|
def setTransmissionModeDeclaration(self, element: ET.Element, key: str, decl : TransmissionModeDeclaration):
|
|
3774
4328
|
if decl is not None:
|
|
3775
4329
|
child_element = ET.SubElement(element, key)
|
|
3776
|
-
self.setTransmissionModeConditions(child_element, decl.getTransmissionModeConditions())
|
|
4330
|
+
self.setTransmissionModeConditions(child_element, "TRANSMISSION-MODE-CONDITIONS", decl.getTransmissionModeConditions())
|
|
4331
|
+
self.setTransmissionModeTiming(child_element, "TRANSMISSION-MODE-FALSE-TIMING", decl.getTransmissionModeFalseTiming())
|
|
3777
4332
|
self.setTransmissionModeTiming(child_element, "TRANSMISSION-MODE-TRUE-TIMING", decl.getTransmissionModeTrueTiming())
|
|
3778
4333
|
|
|
3779
4334
|
def setISignalIPduIPduTimingSpecification(self, element: ET.Element, timing: IPduTiming):
|
|
@@ -3783,14 +4338,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3783
4338
|
self.setChildElementOptionalTimeValue(child_element, "MINIMUM-DELAY", timing.getMinimumDelay())
|
|
3784
4339
|
self.setTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION", timing.getTransmissionModeDeclaration())
|
|
3785
4340
|
|
|
3786
|
-
def writeISignalIPdu(self, element: ET.Element,
|
|
3787
|
-
self.logger.debug("ISignalIPdu %s" %
|
|
4341
|
+
def writeISignalIPdu(self, element: ET.Element, ipdu: ISignalIPdu):
|
|
4342
|
+
self.logger.debug("ISignalIPdu %s" % ipdu.getShortName())
|
|
3788
4343
|
child_element = ET.SubElement(element, "I-SIGNAL-I-PDU")
|
|
3789
|
-
self.writeIdentifiable(child_element,
|
|
3790
|
-
self.setChildElementOptionalNumericalValue(child_element, "LENGTH",
|
|
3791
|
-
self.setISignalIPduIPduTimingSpecification(child_element,
|
|
3792
|
-
self.writeISignalToPduMappings(child_element,
|
|
3793
|
-
self.
|
|
4344
|
+
self.writeIdentifiable(child_element, ipdu)
|
|
4345
|
+
self.setChildElementOptionalNumericalValue(child_element, "LENGTH", ipdu.getLength())
|
|
4346
|
+
self.setISignalIPduIPduTimingSpecification(child_element, ipdu.getIPduTimingSpecification())
|
|
4347
|
+
self.writeISignalToPduMappings(child_element, ipdu)
|
|
4348
|
+
self.setChildElementOptionalIntegerValue(child_element, "UNUSED-BIT-PATTERN", ipdu.getUnusedBitPattern())
|
|
3794
4349
|
|
|
3795
4350
|
def writeARPackageElement(self, element: ET.Element, ar_element: ARElement):
|
|
3796
4351
|
if isinstance(ar_element, ComplexDeviceDriverSwComponentType):
|
|
@@ -3959,7 +4514,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3959
4514
|
|
|
3960
4515
|
|
|
3961
4516
|
def save(self, filename, document: AUTOSAR):
|
|
3962
|
-
self.logger.info("
|
|
4517
|
+
self.logger.info("Saving %s ..." % filename)
|
|
3963
4518
|
|
|
3964
4519
|
root = ET.Element("AUTOSAR", self.nsmap)
|
|
3965
4520
|
root.attrib["xmlns:xsi"] = "http://www.w3.org/2001/XMLSchema-instance"
|