armodel 1.7.9__py3-none-any.whl → 1.8.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/cli/arxml_format_cli.py +1 -0
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +50 -12
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +14 -14
- armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +2 -3
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +1 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +36 -34
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +1 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +4 -4
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +3 -3
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +5 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/ExecutionOrderConstraint.py +3 -3
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/TimingExtensions.py +3 -3
- armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +86 -9
- armodel/models/M2/AUTOSARTemplates/ECUCParameterDefTemplate.py +1249 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +13 -10
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +238 -225
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ArObject.py +5 -4
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +46 -25
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +38 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +18 -20
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -19
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +4 -4
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +71 -27
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +27 -17
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +172 -128
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +11 -10
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +11 -11
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +16 -10
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +2 -2
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +6 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/RteEventToOsTaskMapping.py +35 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +25 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/SecureCommunication.py +83 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +90 -38
- armodel/models/M2/MSR/AsamHdo/AdminData.py +101 -8
- armodel/models/__init__.py +2 -0
- armodel/models/utils/__init__.py +0 -0
- armodel/models/utils/uuid_mgr.py +23 -0
- armodel/parser/abstract_arxml_parser.py +13 -5
- armodel/parser/arxml_parser.py +412 -85
- armodel/tests/test_armodel/models/test_ECUCParameterDefTemplate.py +116 -0
- armodel/tests/test_armodel/models/test_Identifiable.py +85 -0
- armodel/tests/test_armodel/models/test_ar_object.py +85 -86
- armodel/tests/test_armodel/models/test_ar_package.py +70 -70
- armodel/tests/test_armodel/models/test_ar_ref.py +36 -36
- armodel/tests/test_armodel/models/test_common_structure.py +37 -35
- armodel/tests/test_armodel/models/test_datatype.py +140 -142
- armodel/tests/test_armodel/models/test_general_structure.py +19 -18
- armodel/tests/test_armodel/models/test_port_interface.py +2 -6
- armodel/tests/test_armodel/parser/test_arxml_parser.py +8 -8
- armodel/writer/abstract_arxml_writer.py +6 -2
- armodel/writer/arxml_writer.py +414 -57
- {armodel-1.7.9.dist-info → armodel-1.8.1.dist-info}/METADATA +31 -1
- {armodel-1.7.9.dist-info → armodel-1.8.1.dist-info}/RECORD +58 -51
- {armodel-1.7.9.dist-info → armodel-1.8.1.dist-info}/LICENSE +0 -0
- {armodel-1.7.9.dist-info → armodel-1.8.1.dist-info}/WHEEL +0 -0
- {armodel-1.7.9.dist-info → armodel-1.8.1.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.9.dist-info → armodel-1.8.1.dist-info}/top_level.txt +0 -0
armodel/writer/arxml_writer.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import xml.etree.cElementTree as ET
|
|
2
2
|
from typing import List
|
|
3
3
|
|
|
4
|
-
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
4
|
+
from ..models.M2.MSR.AsamHdo.AdminData import AdminData, DocRevision, Modification
|
|
5
5
|
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
|
|
6
6
|
from ..models.M2.MSR.AsamHdo.ComputationMethod import Compu, CompuConst, CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent
|
|
7
7
|
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstTextContent, CompuMethod, CompuNominatorDenominator, CompuScale
|
|
@@ -49,7 +49,7 @@ from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDec
|
|
|
49
49
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
|
|
50
50
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
|
|
51
51
|
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
|
|
52
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal
|
|
52
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DltUserNeeds, ServiceNeeds
|
|
53
53
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCapabilityElement, DtcStatusChangeNotificationNeeds
|
|
54
54
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds
|
|
55
55
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds
|
|
@@ -62,9 +62,20 @@ from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.Execut
|
|
|
62
62
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
|
|
63
63
|
from ..models.M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import Trigger
|
|
64
64
|
from ..models.M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import DiagnosticServiceTable
|
|
65
|
-
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue,
|
|
65
|
+
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucDefinitionElement
|
|
66
|
+
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucInstanceReferenceValue
|
|
66
67
|
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue
|
|
67
|
-
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
|
|
68
|
+
from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucReferenceValue, EcucTextualParamValue, EcucValueCollection, EcucModuleDef
|
|
69
|
+
from ..models.M2.AUTOSARTemplates.ECUCParameterDefTemplate import EcucAbstractConfigurationClass, EcucAbstractExternalReferenceDef
|
|
70
|
+
from ..models.M2.AUTOSARTemplates.ECUCParameterDefTemplate import EcucFunctionNameDef, EcucReferenceDef
|
|
71
|
+
from ..models.M2.AUTOSARTemplates.ECUCParameterDefTemplate import EcucAbstractInternalReferenceDef, EcucAbstractReferenceDef
|
|
72
|
+
from ..models.M2.AUTOSARTemplates.ECUCParameterDefTemplate import EcucAbstractStringParamDef, EcucBooleanParamDef, EcucSymbolicNameReferenceDef
|
|
73
|
+
from ..models.M2.AUTOSARTemplates.ECUCParameterDefTemplate import EcucEnumerationLiteralDef, EcucValueConfigurationClass
|
|
74
|
+
from ..models.M2.AUTOSARTemplates.ECUCParameterDefTemplate import EcucCommonAttributes, EcucParameterDef
|
|
75
|
+
from ..models.M2.AUTOSARTemplates.ECUCParameterDefTemplate import EcucChoiceContainerDef, EcucEnumerationParamDef, EcucFloatParamDef
|
|
76
|
+
from ..models.M2.AUTOSARTemplates.ECUCParameterDefTemplate import EcucIntegerParamDef, EcucStringParamDef
|
|
77
|
+
from ..models.M2.AUTOSARTemplates.ECUCParameterDefTemplate import EcucContainerDef
|
|
78
|
+
from ..models.M2.AUTOSARTemplates.ECUCParameterDefTemplate import EcucMultiplicityConfigurationClass, EcucParamConfContainerDef
|
|
68
79
|
from ..models.M2.AUTOSARTemplates.EcuResourceTemplate import HwDescriptionEntity, HwElement, HwPinGroup
|
|
69
80
|
from ..models.M2.AUTOSARTemplates.EcuResourceTemplate.HwElementCategory import HwAttributeDef, HwCategory, HwType
|
|
70
81
|
from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
|
|
@@ -107,8 +118,9 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import
|
|
|
107
118
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionVariablePrototype
|
|
108
119
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
|
|
109
120
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ArgumentDataPrototype, ClientServerInterface
|
|
121
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ModeDeclarationMapping, ModeDeclarationMappingSet
|
|
110
122
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ClientServerInterfaceMapping, ClientServerOperationMapping
|
|
111
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ClientServerOperation, DataInterface
|
|
123
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ClientServerOperation, DataInterface, ModeInterfaceMapping
|
|
112
124
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import DataPrototypeMapping, ModeSwitchInterface, ParameterInterface
|
|
113
125
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import PortInterface, PortInterfaceMappingSet, SenderReceiverInterface
|
|
114
126
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import TriggerInterface, VariableAndParameterInterfaceMapping
|
|
@@ -248,7 +260,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
248
260
|
self.setSdg(child_element, sdg_item)
|
|
249
261
|
self.writeSdgSdxRefs(child_element, sdg)
|
|
250
262
|
|
|
251
|
-
def
|
|
263
|
+
def writeAdminDataSdgs(self, parent: ET.Element, admin_data: AdminData):
|
|
252
264
|
sdgs = admin_data.getSdgs()
|
|
253
265
|
if len(sdgs) > 0:
|
|
254
266
|
sdgs_tag = ET.SubElement(parent, "SDGS")
|
|
@@ -309,12 +321,51 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
309
321
|
for l10 in paragraph.getL10s():
|
|
310
322
|
self.setLPlainText(child_element, l10)
|
|
311
323
|
|
|
324
|
+
def writeModification(self, element: ET.Element, modification: Modification):
|
|
325
|
+
if modification is not None:
|
|
326
|
+
child_element = ET.SubElement(element, "MODIFICATION")
|
|
327
|
+
self.setMultiLanguageOverviewParagraph(child_element, "CHANGE", modification.getChange())
|
|
328
|
+
self.setMultiLanguageOverviewParagraph(child_element, "REASON", modification.getReason())
|
|
329
|
+
|
|
330
|
+
def writeDocRevisionModifications(self, element: ET.Element, revision: DocRevision):
|
|
331
|
+
modifications = revision.getModifications()
|
|
332
|
+
if len(modifications) > 0:
|
|
333
|
+
child_element = ET.SubElement(element, "MODIFICATIONS")
|
|
334
|
+
for modification in modifications:
|
|
335
|
+
if isinstance(modification, Modification):
|
|
336
|
+
self.writeModification(child_element, modification)
|
|
337
|
+
else:
|
|
338
|
+
self.notImplemented("Unsupported Modification <%s>" % type(modification))
|
|
339
|
+
|
|
340
|
+
def writeDocRevision(self, element: ET.Element, revision: DocRevision):
|
|
341
|
+
if revision is not None:
|
|
342
|
+
child_element = ET.SubElement(element, "DOC-REVISION")
|
|
343
|
+
# self.setChildElementOptionalDataTime(child_element, "DATE", revision.getDate())
|
|
344
|
+
# self.setChildElementOptionalLiteral(child_element, "ISSUED-BY", revision.getIssuedBy())
|
|
345
|
+
self.setChildElementOptionalRevisionLabelString(child_element, "REVISION-LABEL", revision.getRevisionLabel())
|
|
346
|
+
self.setChildElementOptionalLiteral(child_element, "STATE", revision.getState())
|
|
347
|
+
self.setChildElementOptionalLiteral(child_element, "ISSUED-BY", revision.getIssuedBy())
|
|
348
|
+
self.setChildElementOptionalDataTime(child_element, "DATE", revision.getDate())
|
|
349
|
+
self.writeDocRevisionModifications(child_element, revision)
|
|
350
|
+
|
|
351
|
+
def writeAdminDataDocRevisions(self, element: ET.Element, admin_data: AdminData):
|
|
352
|
+
revisions = admin_data.getDocRevisions()
|
|
353
|
+
if len(revisions) > 0:
|
|
354
|
+
child_element = ET.SubElement(element, "DOC-REVISIONS")
|
|
355
|
+
for revision in revisions:
|
|
356
|
+
if isinstance(revision, DocRevision):
|
|
357
|
+
self.writeDocRevision(child_element, revision)
|
|
358
|
+
else:
|
|
359
|
+
self.notImplemented("Unsupported DocRevision <%s>" % type(revision))
|
|
360
|
+
|
|
312
361
|
def setAdminData(self, element: ET.Element, admin_data: AdminData):
|
|
313
362
|
if admin_data is not None:
|
|
363
|
+
self.logger.debug("Write AdminData")
|
|
314
364
|
child_element = ET.SubElement(element, "ADMIN-DATA")
|
|
315
365
|
self.setChildElementOptionalLiteral(child_element, "LANGUAGE", admin_data.getLanguage())
|
|
316
366
|
self.setMultiLanguagePlainText(child_element, "USED-LANGUAGES", admin_data.getUsedLanguages())
|
|
317
|
-
self.
|
|
367
|
+
self.writeAdminDataSdgs(child_element, admin_data)
|
|
368
|
+
self.writeAdminDataDocRevisions(child_element, admin_data)
|
|
318
369
|
|
|
319
370
|
def writeIdentifiable(self, element: ET.Element, identifiable: Identifiable):
|
|
320
371
|
self.writeMultilanguageReferrable(element, identifiable)
|
|
@@ -327,41 +378,41 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
327
378
|
def writeARElement(self, parent: ET.Element, ar_element: ARElement):
|
|
328
379
|
self.writeIdentifiable(parent, ar_element)
|
|
329
380
|
|
|
330
|
-
def
|
|
381
|
+
def writeTransmissionAcknowledgementRequest(self, element: ET.Element, acknowledge: TransmissionAcknowledgementRequest):
|
|
331
382
|
if (acknowledge is not None):
|
|
332
383
|
child_element = ET.SubElement(element, "TRANSMISSION-ACKNOWLEDGE")
|
|
333
384
|
self.writeARObjectAttributes(child_element, acknowledge)
|
|
334
385
|
if acknowledge.timeout is not None:
|
|
335
386
|
self.setChildElementOptionalFloatValue(child_element, "TIMEOUT", acknowledge.timeout)
|
|
336
387
|
|
|
337
|
-
def
|
|
388
|
+
def writeSenderComSpec(self, element: ET.Element, com_spec: SenderComSpec):
|
|
338
389
|
representations = com_spec.getCompositeNetworkRepresentations()
|
|
339
390
|
if len(representations) > 0:
|
|
340
391
|
child_element = ET.SubElement(element, "COMPOSITE-NETWORK-REPRESENTATIONS")
|
|
341
392
|
for representation in representations:
|
|
342
|
-
self.
|
|
393
|
+
self.writeCompositeNetworkRepresentation(child_element, representation)
|
|
343
394
|
self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.getDataElementRef())
|
|
344
395
|
self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.getNetworkRepresentation())
|
|
345
396
|
self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.getHandleOutOfRange())
|
|
346
|
-
self.
|
|
397
|
+
self.writeTransmissionAcknowledgementRequest(element, com_spec.getTransmissionAcknowledge())
|
|
347
398
|
self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.getUsesEndToEndProtection())
|
|
348
399
|
|
|
349
|
-
def
|
|
400
|
+
def writeNonqueuedSenderComSpec(self, element: ET.Element, com_spec: NonqueuedSenderComSpec):
|
|
350
401
|
child_element = ET.SubElement(element, "NONQUEUED-SENDER-COM-SPEC")
|
|
351
402
|
self.writeARObjectAttributes(child_element, com_spec)
|
|
352
|
-
self.
|
|
403
|
+
self.writeSenderComSpec(child_element, com_spec)
|
|
353
404
|
self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
|
|
354
405
|
|
|
355
|
-
def
|
|
406
|
+
def writeServerComSpec(self, element: ET.Element, com_spec: ServerComSpec):
|
|
356
407
|
child_element = ET.SubElement(element, "SERVER-COM-SPEC")
|
|
357
408
|
self.writeARObjectAttributes(child_element, com_spec)
|
|
358
409
|
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.getOperationRef())
|
|
359
410
|
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.getQueueLength())
|
|
360
411
|
|
|
361
|
-
def
|
|
412
|
+
def writeQueuedSenderComSpec(self, element: ET.Element, com_spec: QueuedSenderComSpec):
|
|
362
413
|
child_element = ET.SubElement(element, "QUEUED-SENDER-COM-SPEC")
|
|
363
414
|
self.writeARObjectAttributes(child_element, com_spec)
|
|
364
|
-
self.
|
|
415
|
+
self.writeSenderComSpec(child_element, com_spec)
|
|
365
416
|
|
|
366
417
|
def setModeSwitchedAckRequest(self, element: ET.Element, key: str, request: ModeSwitchedAckRequest):
|
|
367
418
|
if request is not None:
|
|
@@ -369,7 +420,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
369
420
|
self.writeARObjectAttributes(child_element, request)
|
|
370
421
|
self.setChildElementOptionalTimeValue(child_element, "TIMEOUT", request.getTimeout())
|
|
371
422
|
|
|
372
|
-
def
|
|
423
|
+
def writeModeSwitchSenderComSpec(self, element: ET.Element, com_spec: ModeSwitchSenderComSpec):
|
|
373
424
|
child_element = ET.SubElement(element, "MODE-SWITCH-SENDER-COM-SPEC")
|
|
374
425
|
self.writeARObjectAttributes(child_element, com_spec)
|
|
375
426
|
self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", com_spec.getModeGroupRef())
|
|
@@ -378,13 +429,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
378
429
|
|
|
379
430
|
def writePPortComSpec(self, com_specs_tag: ET.Element, com_spec: PPortComSpec):
|
|
380
431
|
if isinstance(com_spec, NonqueuedSenderComSpec):
|
|
381
|
-
self.
|
|
432
|
+
self.writeNonqueuedSenderComSpec(com_specs_tag, com_spec)
|
|
382
433
|
elif isinstance(com_spec, ServerComSpec):
|
|
383
|
-
self.
|
|
434
|
+
self.writeServerComSpec(com_specs_tag, com_spec)
|
|
384
435
|
elif isinstance(com_spec, QueuedSenderComSpec):
|
|
385
|
-
self.
|
|
436
|
+
self.writeQueuedSenderComSpec(com_specs_tag, com_spec)
|
|
386
437
|
elif isinstance(com_spec, ModeSwitchSenderComSpec):
|
|
387
|
-
self.
|
|
438
|
+
self.writeModeSwitchSenderComSpec(com_specs_tag, com_spec)
|
|
388
439
|
else:
|
|
389
440
|
self.notImplemented("Unsupported PPortComSpec %s" % type(com_spec))
|
|
390
441
|
|
|
@@ -395,7 +446,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
395
446
|
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", iref.target_data_prototype_ref)
|
|
396
447
|
return iref
|
|
397
448
|
|
|
398
|
-
def
|
|
449
|
+
def writeCompositeNetworkRepresentation(self, element: ET.Element, representation: CompositeNetworkRepresentation):
|
|
399
450
|
if representation is not None:
|
|
400
451
|
self.logger.debug("setCompositeNetworkRepresentation")
|
|
401
452
|
child_element = ET.SubElement(element, "COMPOSITE-NETWORK-REPRESENTATION")
|
|
@@ -407,7 +458,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
407
458
|
if len(representations) > 0:
|
|
408
459
|
child_element = ET.SubElement(element, "COMPOSITE-NETWORK-REPRESENTATIONS")
|
|
409
460
|
for representation in representations:
|
|
410
|
-
self.
|
|
461
|
+
self.writeCompositeNetworkRepresentation(child_element, representation)
|
|
411
462
|
self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.getDataElementRef())
|
|
412
463
|
self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.getNetworkRepresentation())
|
|
413
464
|
self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.getHandleOutOfRange())
|
|
@@ -1246,7 +1297,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1246
1297
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPOSITION-REF", ref.getContextCompositionRef())
|
|
1247
1298
|
self.setChildElementOptionalRefType(child_element, "TARGET-COMPONENT-REF", ref.getTargetComponentRef())
|
|
1248
1299
|
|
|
1249
|
-
def
|
|
1300
|
+
def writeVariableAccess(self, element: ET.Element, access: VariableAccess):
|
|
1250
1301
|
child_element = ET.SubElement(element, "VARIABLE-ACCESS")
|
|
1251
1302
|
self.writeIdentifiable(child_element, access)
|
|
1252
1303
|
self.setAutosarVariableRef(child_element, "ACCESSED-VARIABLE", access.getAccessedVariableRef())
|
|
@@ -1273,35 +1324,35 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1273
1324
|
if len(accesses) > 0:
|
|
1274
1325
|
child_element = ET.SubElement(element, "DATA-RECEIVE-POINT-BY-ARGUMENTS")
|
|
1275
1326
|
for access in accesses:
|
|
1276
|
-
self.
|
|
1327
|
+
self.writeVariableAccess(child_element, access)
|
|
1277
1328
|
|
|
1278
1329
|
def writeRunnableEntityDataSendPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
1279
1330
|
points = entity.getDataSendPoints()
|
|
1280
1331
|
if len(points) > 0:
|
|
1281
1332
|
child_element = ET.SubElement(element, "DATA-SEND-POINTS")
|
|
1282
1333
|
for point in points:
|
|
1283
|
-
self.
|
|
1334
|
+
self.writeVariableAccess(child_element, point)
|
|
1284
1335
|
|
|
1285
1336
|
def writeRunnableEntityDataReadAccesses(self, element: ET.Element, entity: RunnableEntity):
|
|
1286
1337
|
accesses = entity.getDataReadAccesses()
|
|
1287
1338
|
if len(accesses) > 0:
|
|
1288
1339
|
child_element = ET.SubElement(element, "DATA-READ-ACCESSS")
|
|
1289
1340
|
for access in accesses:
|
|
1290
|
-
self.
|
|
1341
|
+
self.writeVariableAccess(child_element, access)
|
|
1291
1342
|
|
|
1292
1343
|
def writeRunnableEntityDataWriteAccesses(self, element: ET.Element, entity: RunnableEntity):
|
|
1293
1344
|
accesses = entity.getDataWriteAccesses()
|
|
1294
1345
|
if len(accesses) > 0:
|
|
1295
1346
|
child_element = ET.SubElement(element, "DATA-WRITE-ACCESSS")
|
|
1296
1347
|
for access in accesses:
|
|
1297
|
-
self.
|
|
1348
|
+
self.writeVariableAccess(child_element, access)
|
|
1298
1349
|
|
|
1299
1350
|
def writeRunnableEntityReadLocalVariables(self, element: ET.Element, entity: RunnableEntity):
|
|
1300
1351
|
variables = entity.getReadLocalVariables()
|
|
1301
1352
|
if len(variables) > 0:
|
|
1302
1353
|
child_element = ET.SubElement(element, "READ-LOCAL-VARIABLES")
|
|
1303
1354
|
for access in variables:
|
|
1304
|
-
self.
|
|
1355
|
+
self.writeVariableAccess(child_element, access)
|
|
1305
1356
|
|
|
1306
1357
|
def setROperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: ROperationInAtomicSwcInstanceRef):
|
|
1307
1358
|
if iref is not None:
|
|
@@ -1341,7 +1392,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1341
1392
|
if len(variables) > 0:
|
|
1342
1393
|
child_element = ET.SubElement(element, "WRITTEN-LOCAL-VARIABLES")
|
|
1343
1394
|
for access in variables:
|
|
1344
|
-
self.
|
|
1395
|
+
self.writeVariableAccess(child_element, access)
|
|
1345
1396
|
|
|
1346
1397
|
def writeModeGroupInAtomicSwcInstanceRef(self, element: ET.Element, instance_ref: ModeGroupInAtomicSwcInstanceRef):
|
|
1347
1398
|
self.setChildElementOptionalRefType(element, "BASE-REF", instance_ref.getBaseRef())
|
|
@@ -1577,10 +1628,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1577
1628
|
else:
|
|
1578
1629
|
self.notImplemented("Unsupported Assigned Data <%s>" % type(data))
|
|
1579
1630
|
|
|
1631
|
+
def writeServiceNeeds(self, element: ET.Element, needs: ServiceNeeds):
|
|
1632
|
+
self.writeIdentifiable(element, needs)
|
|
1633
|
+
|
|
1580
1634
|
def writeNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
|
|
1581
1635
|
child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
|
|
1582
1636
|
self.logger.debug("write NvBlockNeeds %s" % needs.getShortName())
|
|
1583
|
-
self.
|
|
1637
|
+
self.writeServiceNeeds(child_element, needs)
|
|
1584
1638
|
self.setChildElementOptionalBooleanValue(child_element, "CALC-RAM-BLOCK-CRC", needs.getCalcRamBlockCrc())
|
|
1585
1639
|
self.setChildElementOptionalBooleanValue(child_element, "CHECK-STATIC-BLOCK-ID", needs.getCheckStaticBlockId())
|
|
1586
1640
|
self.setChildElementOptionalNumericalValue(child_element, "N-DATA-SETS", needs.getNDataSets())
|
|
@@ -1602,7 +1656,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1602
1656
|
self.setChildElementOptionalLiteral(child_element, "WRITING-PRIORITY", needs.getWritingPriority())
|
|
1603
1657
|
|
|
1604
1658
|
def writeDiagnosticCapabilityElement(self, element: ET.Element, needs: DiagnosticCapabilityElement):
|
|
1605
|
-
self.
|
|
1659
|
+
self.writeServiceNeeds(element, needs)
|
|
1606
1660
|
|
|
1607
1661
|
def writeDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
|
|
1608
1662
|
child_element = ET.SubElement(element, "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS")
|
|
@@ -1658,13 +1712,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1658
1712
|
def writeCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
|
|
1659
1713
|
# self.logger.debug("Write CryptoServiceNeeds %s" % needs.getShortName())
|
|
1660
1714
|
child_element = ET.SubElement(element, "CRYPTO-SERVICE-NEEDS")
|
|
1661
|
-
self.
|
|
1715
|
+
self.writeServiceNeeds(child_element, needs)
|
|
1662
1716
|
self.setChildElementOptionalPositiveInteger(child_element, "MAXIMUM-KEY-LENGTH", needs.getMaximumKeyLength())
|
|
1663
1717
|
|
|
1664
1718
|
def writeEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
|
|
1665
1719
|
# self.logger.debug("write EcuStateMgrUserNeeds %s" % needs.getShortName())
|
|
1666
1720
|
child_element = ET.SubElement(element, "ECU-STATE-MGR-USER-NEEDS")
|
|
1667
|
-
self.
|
|
1721
|
+
self.writeServiceNeeds(child_element, needs)
|
|
1668
1722
|
|
|
1669
1723
|
def writeDtcStatusChangeNotificationNeeds(self, element: ET.Element, needs: DtcStatusChangeNotificationNeeds):
|
|
1670
1724
|
# self.logger.debug("Write DtcStatusChangeNotificationNeeds %s" % needs.getShortName())
|
|
@@ -1672,31 +1726,38 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1672
1726
|
self.writeDiagnosticCapabilityElement(child_element, needs)
|
|
1673
1727
|
self.setChildElementOptionalLiteral(child_element, "DTC-FORMAT-TYPE", needs.getDtcFormatType())
|
|
1674
1728
|
|
|
1729
|
+
def writeDltUserNeeds(self, element: ET.Element, needs: DtcStatusChangeNotificationNeeds):
|
|
1730
|
+
# self.logger.debug("Write DtcStatusChangeNotificationNeeds %s" % needs.getShortName())
|
|
1731
|
+
child_element = ET.SubElement(element, "DLT-USER-NEEDS")
|
|
1732
|
+
self.writeServiceNeeds(child_element, needs)
|
|
1733
|
+
|
|
1675
1734
|
def writeSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
1676
|
-
|
|
1677
|
-
if len(
|
|
1735
|
+
needs_list = parent.getServiceNeeds()
|
|
1736
|
+
if len(needs_list) > 0:
|
|
1678
1737
|
child_element = ET.SubElement(element, "SERVICE-NEEDS")
|
|
1679
|
-
for
|
|
1680
|
-
if isinstance(
|
|
1681
|
-
self.writeNvBlockNeeds(child_element,
|
|
1682
|
-
elif isinstance(
|
|
1683
|
-
self.writeDiagnosticCommunicationManagerNeeds(child_element,
|
|
1684
|
-
elif isinstance(
|
|
1685
|
-
self.writeDiagnosticRoutineNeeds(child_element,
|
|
1686
|
-
elif isinstance(
|
|
1687
|
-
self.writeDiagnosticValueNeeds(child_element,
|
|
1688
|
-
elif isinstance(
|
|
1689
|
-
self.writeDiagnosticEventNeeds(child_element,
|
|
1690
|
-
elif isinstance(
|
|
1691
|
-
self.writeDiagnosticEventInfoNeeds(child_element,
|
|
1692
|
-
elif isinstance(
|
|
1693
|
-
self.writeCryptoServiceNeeds(child_element,
|
|
1694
|
-
elif isinstance(
|
|
1695
|
-
self.writeEcuStateMgrUserNeeds(child_element,
|
|
1696
|
-
elif isinstance(
|
|
1697
|
-
self.writeDtcStatusChangeNotificationNeeds(child_element,
|
|
1738
|
+
for needs in needs_list:
|
|
1739
|
+
if isinstance(needs, NvBlockNeeds):
|
|
1740
|
+
self.writeNvBlockNeeds(child_element, needs)
|
|
1741
|
+
elif isinstance(needs, DiagnosticCommunicationManagerNeeds):
|
|
1742
|
+
self.writeDiagnosticCommunicationManagerNeeds(child_element, needs)
|
|
1743
|
+
elif isinstance(needs, DiagnosticRoutineNeeds):
|
|
1744
|
+
self.writeDiagnosticRoutineNeeds(child_element, needs)
|
|
1745
|
+
elif isinstance(needs, DiagnosticValueNeeds):
|
|
1746
|
+
self.writeDiagnosticValueNeeds(child_element, needs)
|
|
1747
|
+
elif isinstance(needs, DiagnosticEventNeeds):
|
|
1748
|
+
self.writeDiagnosticEventNeeds(child_element, needs)
|
|
1749
|
+
elif isinstance(needs, DiagnosticEventInfoNeeds):
|
|
1750
|
+
self.writeDiagnosticEventInfoNeeds(child_element, needs)
|
|
1751
|
+
elif isinstance(needs, CryptoServiceNeeds):
|
|
1752
|
+
self.writeCryptoServiceNeeds(child_element, needs)
|
|
1753
|
+
elif isinstance(needs, EcuStateMgrUserNeeds):
|
|
1754
|
+
self.writeEcuStateMgrUserNeeds(child_element, needs)
|
|
1755
|
+
elif isinstance(needs, DtcStatusChangeNotificationNeeds):
|
|
1756
|
+
self.writeDtcStatusChangeNotificationNeeds(child_element, needs)
|
|
1757
|
+
elif isinstance(needs, DltUserNeeds):
|
|
1758
|
+
self.writeDltUserNeeds(child_element, needs)
|
|
1698
1759
|
else:
|
|
1699
|
-
self.notImplemented("Unsupported service needs <%s>" % type(
|
|
1760
|
+
self.notImplemented("Unsupported service needs <%s>" % type(needs))
|
|
1700
1761
|
|
|
1701
1762
|
def writeSwcServiceDependency(self, element: ET.Element, dependency: SwcServiceDependency):
|
|
1702
1763
|
child_element = ET.SubElement(element, "SWC-SERVICE-DEPENDENCY")
|
|
@@ -2471,7 +2532,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
2471
2532
|
self.writeBswImplementationVendorSpecificModuleDefRefs(child_element, impl)
|
|
2472
2533
|
|
|
2473
2534
|
def writeImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
|
|
2474
|
-
sub_elements = parent.
|
|
2535
|
+
sub_elements = parent.getSubElements()
|
|
2475
2536
|
if len(sub_elements) > 0:
|
|
2476
2537
|
sub_elements_tag = ET.SubElement(element, "SUB-ELEMENTS")
|
|
2477
2538
|
for type_element in sub_elements:
|
|
@@ -3928,6 +3989,279 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3928
3989
|
self.writeARElement(child_element, blueprint)
|
|
3929
3990
|
self.setChildElementOptionalRefType(child_element, "INTERFACE-REF", blueprint.getInterfaceRef())
|
|
3930
3991
|
|
|
3992
|
+
def writeModeDeclarationMappingFirstModeRefs(self, element: ET.Element, mapping: ModeDeclarationMapping):
|
|
3993
|
+
ref_links = mapping.getFirstModeRefs()
|
|
3994
|
+
if len(ref_links) > 0:
|
|
3995
|
+
child_element = ET.SubElement(element, "FIRST-MODE-REFS")
|
|
3996
|
+
for ref_link in ref_links:
|
|
3997
|
+
self.setChildElementOptionalRefType(child_element, "FIRST-MODE-REF", ref_link)
|
|
3998
|
+
|
|
3999
|
+
def writeModeDeclarationMapping(self, element: ET.Element, mapping: ModeDeclarationMapping):
|
|
4000
|
+
# self.logger.debug("Read ModeDeclarationMapping <%s>" % mapping.getShortName())
|
|
4001
|
+
if mapping is not None:
|
|
4002
|
+
child_element = ET.SubElement(element, "MODE-DECLARATION-MAPPING")
|
|
4003
|
+
self.writeIdentifiable(child_element, mapping)
|
|
4004
|
+
self.writeModeDeclarationMappingFirstModeRefs(child_element, mapping)
|
|
4005
|
+
self.setChildElementOptionalRefType(child_element, "SECOND-MODE-REF", mapping.getSecondModeRef())
|
|
4006
|
+
|
|
4007
|
+
def writeModeDeclarationMappingSetModeDeclarationMappings(self, element: ET.Element, mapping_set: ModeDeclarationMappingSet):
|
|
4008
|
+
mappings = mapping_set.getModeDeclarationMappings()
|
|
4009
|
+
if len(mappings) > 0:
|
|
4010
|
+
child_element = ET.SubElement(element, "MODE-DECLARATION-MAPPINGS")
|
|
4011
|
+
for mapping in mappings:
|
|
4012
|
+
if isinstance(mapping, ModeDeclarationMapping):
|
|
4013
|
+
self.writeModeDeclarationMapping(child_element, mapping)
|
|
4014
|
+
else:
|
|
4015
|
+
self.notImplemented("Unsupported ModeDeclarationMapping <%s>" % type(mapping))
|
|
4016
|
+
|
|
4017
|
+
def writeModeDeclarationMappingSet(self, element: ET.Element, mapping_set: ModeDeclarationMappingSet):
|
|
4018
|
+
if mapping_set is not None:
|
|
4019
|
+
self.logger.debug("Write ModeDeclarationMappingSet <%s>" % mapping_set.getShortName())
|
|
4020
|
+
child_element = ET.SubElement(element, "MODE-DECLARATION-MAPPING-SET")
|
|
4021
|
+
self.writeARElement(child_element, mapping_set)
|
|
4022
|
+
self.writeModeDeclarationMappingSetModeDeclarationMappings(element, mapping_set)
|
|
4023
|
+
|
|
4024
|
+
def writeEcucDefinitionElement(self, element: ET.Element, def_element: EcucDefinitionElement):
|
|
4025
|
+
self.writeARElement(element, def_element)
|
|
4026
|
+
self.setChildElementOptionalPositiveInteger(element, "LOWER-MULTIPLICITY", def_element.getLowerMultiplicity())
|
|
4027
|
+
self.setChildElementOptionalPositiveInteger(element, "UPPER-MULTIPLICITY", def_element.getUpperMultiplicity())
|
|
4028
|
+
self.setChildElementOptionalLiteral(element, "SCOPE", def_element.getScope())
|
|
4029
|
+
|
|
4030
|
+
def writeEcucModuleDefSupportedConfigVariants(self, element: ET.Element, module_def: EcucModuleDef):
|
|
4031
|
+
variants = module_def.getSupportedConfigVariants()
|
|
4032
|
+
if len(variants) > 0:
|
|
4033
|
+
child_element = ET.SubElement(element, "SUPPORTED-CONFIG-VARIANTS")
|
|
4034
|
+
for variant in variants:
|
|
4035
|
+
self.setChildElementOptionalLiteral(child_element, "SUPPORTED-CONFIG-VARIANT", variant)
|
|
4036
|
+
|
|
4037
|
+
def writeEcucAbstractConfigurationClass(self, element: ET.Element, cfg_class: EcucAbstractConfigurationClass):
|
|
4038
|
+
self.writeARObjectAttributes(element, cfg_class)
|
|
4039
|
+
self.setChildElementOptionalLiteral(element, "CONFIG-CLASS", cfg_class.getConfigClass())
|
|
4040
|
+
self.setChildElementOptionalLiteral(element, "CONFIG-VARIANT", cfg_class.getConfigVariant())
|
|
4041
|
+
|
|
4042
|
+
def writeEcucMultiplicityConfigurationClass(self, element: ET.Element, cfg_class: EcucMultiplicityConfigurationClass):
|
|
4043
|
+
if cfg_class is not None:
|
|
4044
|
+
child_element = ET.SubElement(element, "ECUC-MULTIPLICITY-CONFIGURATION-CLASS")
|
|
4045
|
+
self.writeEcucAbstractConfigurationClass(child_element, cfg_class)
|
|
4046
|
+
|
|
4047
|
+
def setEcucMultiplicityConfigClasses(self, element: ET.Element, cfg_classes: List[EcucMultiplicityConfigurationClass]):
|
|
4048
|
+
if len(cfg_classes) > 0:
|
|
4049
|
+
child_element = ET.SubElement(element, "MULTIPLICITY-CONFIG-CLASSES")
|
|
4050
|
+
for cfg_class in cfg_classes:
|
|
4051
|
+
if isinstance(cfg_class, EcucMultiplicityConfigurationClass):
|
|
4052
|
+
self.writeEcucMultiplicityConfigurationClass(child_element, cfg_class)
|
|
4053
|
+
else:
|
|
4054
|
+
self.notImplemented("Unsupported MultiplicityConfigClass <%s>" % type(cfg_class))
|
|
4055
|
+
|
|
4056
|
+
def writeEcucValueConfigurationClass(self, element: ET.Element, cfg_class: EcucValueConfigurationClass):
|
|
4057
|
+
if cfg_class is not None:
|
|
4058
|
+
child_element = ET.SubElement(element, "ECUC-VALUE-CONFIGURATION-CLASS")
|
|
4059
|
+
self.writeEcucAbstractConfigurationClass(child_element, cfg_class)
|
|
4060
|
+
|
|
4061
|
+
def setEcuValueConfigurationClasses(self, element: ET.Element, cfg_classes: List[EcucValueConfigurationClass]):
|
|
4062
|
+
if len(cfg_classes) > 0:
|
|
4063
|
+
child_element = ET.SubElement(element, "VALUE-CONFIG-CLASSES")
|
|
4064
|
+
for cfg_class in cfg_classes:
|
|
4065
|
+
if isinstance(cfg_class, EcucValueConfigurationClass):
|
|
4066
|
+
self.writeEcucValueConfigurationClass(child_element, cfg_class)
|
|
4067
|
+
else:
|
|
4068
|
+
self.notImplemented("Unsupported ValueConfigClass <%s>" % type(cfg_class))
|
|
4069
|
+
|
|
4070
|
+
def writeEcucCommonAttributes(self, element: ET.Element, common_attrs: EcucCommonAttributes):
|
|
4071
|
+
self.writeEcucDefinitionElement(element, common_attrs)
|
|
4072
|
+
self.setEcucMultiplicityConfigClasses(element, common_attrs.getMultiplicityConfigClasses())
|
|
4073
|
+
self.setChildElementOptionalLiteral(element, "ORIGIN", common_attrs.getOrigin())
|
|
4074
|
+
self.setChildElementOptionalBooleanValue(element, "POST-BUILD-VARIANT-MULTIPLICITY", common_attrs.getPostBuildVariantMultiplicity())
|
|
4075
|
+
self.setChildElementOptionalBooleanValue(element, "POST-BUILD-VARIANT-VALUE", common_attrs.getPostBuildVariantValue())
|
|
4076
|
+
self.setChildElementOptionalBooleanValue(element, "REQUIRES-INDEX", common_attrs.getRequiresIndex())
|
|
4077
|
+
self.setEcuValueConfigurationClasses(element, common_attrs.getValueConfigClasses())
|
|
4078
|
+
|
|
4079
|
+
def writeEcucParameterDef(self, element: ET.Element, param_def: EcucParameterDef):
|
|
4080
|
+
self.writeEcucCommonAttributes(element, param_def)
|
|
4081
|
+
self.setChildElementOptionalLiteral(element, "DERIVATION", param_def.getDerivation())
|
|
4082
|
+
self.setChildElementOptionalBooleanValue(element, "SYMBOLIC-NAME-VALUE", param_def.getSymbolicNameValue())
|
|
4083
|
+
self.setChildElementOptionalBooleanValue(element, "WITH-AUTO", param_def.getWithAuto())
|
|
4084
|
+
|
|
4085
|
+
def writeEcucBooleanParamDef(self, element: ET.Element, param_def: EcucBooleanParamDef):
|
|
4086
|
+
if param_def is not None:
|
|
4087
|
+
child_element = ET.SubElement(element, "ECUC-BOOLEAN-PARAM-DEF")
|
|
4088
|
+
self.writeEcucParameterDef(child_element, param_def)
|
|
4089
|
+
self.setChildElementOptionalBooleanValue(child_element, "DEFAULT-VALUE", param_def.getDefaultValue())
|
|
4090
|
+
|
|
4091
|
+
def writeEcucAbstractStringParamDef(self, element: ET.Element, param_def: EcucAbstractStringParamDef):
|
|
4092
|
+
self.writeEcucParameterDef(element, param_def)
|
|
4093
|
+
# self.setChildElementOptionalLiteral(element, "DEFAULT-VALUE", param_def.getDefaultValue())
|
|
4094
|
+
|
|
4095
|
+
def writeEcucStringParamDef(self, element: ET.Element, param_def: EcucStringParamDef):
|
|
4096
|
+
if param_def is not None:
|
|
4097
|
+
child_element = ET.SubElement(element, "ECUC-STRING-PARAM-DEF")
|
|
4098
|
+
self.writeEcucAbstractStringParamDef(child_element, param_def)
|
|
4099
|
+
|
|
4100
|
+
def writeEcucIntegerParamDef(self, element: ET.Element, param_def: EcucIntegerParamDef):
|
|
4101
|
+
if param_def is not None:
|
|
4102
|
+
child_element = ET.SubElement(element, "ECUC-INTEGER-PARAM-DEF")
|
|
4103
|
+
self.writeEcucParameterDef(child_element, param_def)
|
|
4104
|
+
self.setChildElementOptionalIntegerValue(child_element, "DEFAULT-VALUE", param_def.getDefaultValue())
|
|
4105
|
+
self.setChildElementOptionalIntegerValue(child_element, "MAX", param_def.getMax())
|
|
4106
|
+
self.setChildElementOptionalIntegerValue(child_element, "MIN", param_def.getMin())
|
|
4107
|
+
|
|
4108
|
+
def writeEcucFloatParamDef(self, element: ET.Element, param_def: EcucFloatParamDef):
|
|
4109
|
+
if param_def is not None:
|
|
4110
|
+
child_element = ET.SubElement(element, "ECUC-FLOAT-PARAM-DEF")
|
|
4111
|
+
self.writeEcucParameterDef(child_element, param_def)
|
|
4112
|
+
self.setChildElementOptionalFloatValue(child_element, "DEFAULT-VALUE", param_def.getDefaultValue())
|
|
4113
|
+
self.setChildLimitElement(child_element, "MAX", param_def.getMax())
|
|
4114
|
+
self.setChildLimitElement(child_element, "MIN", param_def.getMin())
|
|
4115
|
+
|
|
4116
|
+
def writeEcucEnumerationLiteralDef(self, element: ET.Element, literal: EcucEnumerationLiteralDef):
|
|
4117
|
+
if literal is not None:
|
|
4118
|
+
child_element = ET.SubElement(element, "ECUC-ENUMERATION-LITERAL-DEF")
|
|
4119
|
+
self.writeIdentifiable(child_element, literal)
|
|
4120
|
+
self.setChildElementOptionalLiteral(child_element, "ORIGIN", literal.getOrigin())
|
|
4121
|
+
|
|
4122
|
+
def writeEcucEnumerationParamDefLiterals(self, element: ET.Element, param_def: EcucEnumerationParamDef):
|
|
4123
|
+
literals = param_def.getLiterals()
|
|
4124
|
+
if len(literals) > 0:
|
|
4125
|
+
child_element = ET.SubElement(element, "LITERALS")
|
|
4126
|
+
for literal in literals:
|
|
4127
|
+
if isinstance(literal, EcucEnumerationLiteralDef):
|
|
4128
|
+
self.writeEcucEnumerationLiteralDef(child_element, literal)
|
|
4129
|
+
else:
|
|
4130
|
+
self.notImplemented("Unsupported EnumerationLiteral <%s>" % type(literal))
|
|
4131
|
+
|
|
4132
|
+
def writeEcucEnumerationParamDef(self, element: ET.Element, param_def: EcucEnumerationParamDef):
|
|
4133
|
+
if param_def is not None:
|
|
4134
|
+
child_element = ET.SubElement(element, "ECUC-ENUMERATION-PARAM-DEF")
|
|
4135
|
+
self.writeEcucParameterDef(child_element, param_def)
|
|
4136
|
+
self.setChildElementOptionalLiteral(child_element, "DEFAULT-VALUE", param_def.getDefaultValue())
|
|
4137
|
+
self.writeEcucEnumerationParamDefLiterals(child_element, param_def)
|
|
4138
|
+
|
|
4139
|
+
def writeEcucFunctionNameDef(self, element: ET.Element, param_def: EcucFunctionNameDef):
|
|
4140
|
+
if param_def is not None:
|
|
4141
|
+
child_element = ET.SubElement(element, "ECUC-FUNCTION-NAME-DEF")
|
|
4142
|
+
self.writeEcucAbstractStringParamDef(child_element, param_def)
|
|
4143
|
+
|
|
4144
|
+
variants_tag = ET.SubElement(child_element, "ECUC-FUNCTION-NAME-DEF-VARIANTS")
|
|
4145
|
+
cond_tag = ET.SubElement(variants_tag, "ECUC-FUNCTION-NAME-DEF-CONDITIONAL")
|
|
4146
|
+
self.setChildElementOptionalLiteral(cond_tag, "DEFAULT-VALUE", param_def.getDefaultValue())
|
|
4147
|
+
self.setChildElementOptionalIntegerValue(cond_tag, "MIN-LENGTH", param_def.getMinLength())
|
|
4148
|
+
self.setChildElementOptionalIntegerValue(cond_tag, "MAX-LENGTH", param_def.getMaxLength())
|
|
4149
|
+
|
|
4150
|
+
def writeEcucContainerDefParameters(self, element: ET.Element, container_def: EcucParamConfContainerDef):
|
|
4151
|
+
parameters = container_def.getParameters()
|
|
4152
|
+
if len(parameters) > 0:
|
|
4153
|
+
child_element = ET.SubElement(element, "PARAMETERS")
|
|
4154
|
+
for parameter in parameters:
|
|
4155
|
+
if isinstance(parameter, EcucBooleanParamDef):
|
|
4156
|
+
self.writeEcucBooleanParamDef(child_element, parameter)
|
|
4157
|
+
elif isinstance(parameter, EcucStringParamDef):
|
|
4158
|
+
self.writeEcucStringParamDef(child_element, parameter)
|
|
4159
|
+
elif isinstance(parameter, EcucIntegerParamDef):
|
|
4160
|
+
self.writeEcucIntegerParamDef(child_element, parameter)
|
|
4161
|
+
elif isinstance(parameter, EcucFloatParamDef):
|
|
4162
|
+
self.writeEcucFloatParamDef(child_element, parameter)
|
|
4163
|
+
elif isinstance(parameter, EcucEnumerationParamDef):
|
|
4164
|
+
self.writeEcucEnumerationParamDef(child_element, parameter)
|
|
4165
|
+
elif isinstance(parameter, EcucFunctionNameDef):
|
|
4166
|
+
self.writeEcucFunctionNameDef(child_element, parameter)
|
|
4167
|
+
else:
|
|
4168
|
+
self.notImplemented("Unsupported Parameter <%s>" % type(parameter))
|
|
4169
|
+
|
|
4170
|
+
def writeEcucContainerDef(self, element: ET.Element, container_def: EcucContainerDef):
|
|
4171
|
+
self.writeEcucDefinitionElement(element, container_def)
|
|
4172
|
+
self.setEcucMultiplicityConfigClasses(element, container_def.getMultiplicityConfigClasses())
|
|
4173
|
+
self.setChildElementOptionalBooleanValue(element, "POST-BUILD-VARIANT-MULTIPLICITY", container_def.getPostBuildVariantMultiplicity())
|
|
4174
|
+
self.setChildElementOptionalBooleanValue(element, "REQUIRES-INDEX", container_def.getRequiresIndex())
|
|
4175
|
+
self.setChildElementOptionalBooleanValue(element, "MULTIPLE-CONFIGURATION-CONTAINER", container_def.getMultipleConfigurationContainer())
|
|
4176
|
+
|
|
4177
|
+
def writeEcucAbstractReferenceDef(self, element: ET.Element, reference: EcucAbstractReferenceDef):
|
|
4178
|
+
self.writeEcucCommonAttributes(element, reference)
|
|
4179
|
+
self.setChildElementOptionalBooleanValue(element, "WITH-AUTO", reference.getWithAuto())
|
|
4180
|
+
|
|
4181
|
+
def writeEcucAbstractInternalReferenceDef(self, element: ET.Element, reference: EcucAbstractInternalReferenceDef):
|
|
4182
|
+
self.writeEcucAbstractReferenceDef(element, reference)
|
|
4183
|
+
|
|
4184
|
+
def writeEcucSymbolicNameReferenceDef(self, element: ET.Element, reference: EcucSymbolicNameReferenceDef):
|
|
4185
|
+
if reference is not None:
|
|
4186
|
+
child_element = ET.SubElement(element, "ECUC-SYMBOLIC-NAME-REFERENCE-DEF")
|
|
4187
|
+
self.writeEcucAbstractInternalReferenceDef(child_element, reference)
|
|
4188
|
+
self.setChildElementOptionalRefType(child_element, "DESTINATION-REF", reference.getDestinationRef())
|
|
4189
|
+
|
|
4190
|
+
def writeEcucReferenceDef(self, element: ET.Element, reference: EcucReferenceDef):
|
|
4191
|
+
if reference is not None:
|
|
4192
|
+
child_element = ET.SubElement(element, "ECUC-REFERENCE-DEF")
|
|
4193
|
+
self.writeEcucAbstractInternalReferenceDef(child_element, reference)
|
|
4194
|
+
self.setChildElementOptionalRefType(child_element, "DESTINATION-REF", reference.getDestinationRef())
|
|
4195
|
+
|
|
4196
|
+
def writeEcucContainerDefReferences(self, element: ET.Element, container_def: EcucContainerDef):
|
|
4197
|
+
references = container_def.getReferences()
|
|
4198
|
+
if len(references) > 0:
|
|
4199
|
+
child_element = ET.SubElement(element, "REFERENCES")
|
|
4200
|
+
for reference in references:
|
|
4201
|
+
if isinstance(reference, EcucSymbolicNameReferenceDef):
|
|
4202
|
+
self.writeEcucSymbolicNameReferenceDef(child_element, reference)
|
|
4203
|
+
elif isinstance(reference, EcucReferenceDef):
|
|
4204
|
+
self.writeEcucReferenceDef(child_element, reference)
|
|
4205
|
+
else:
|
|
4206
|
+
self.notImplemented("Unsupported Reference <%s>" % type(reference))
|
|
4207
|
+
|
|
4208
|
+
def writeEcucContainerDefSubContainers(self, element: ET.Element, container_def: EcucParamConfContainerDef):
|
|
4209
|
+
sub_containers = container_def.getSubContainers()
|
|
4210
|
+
if len(sub_containers) > 0:
|
|
4211
|
+
child_element = ET.SubElement(element, "SUB-CONTAINERS")
|
|
4212
|
+
for sub_container in sub_containers:
|
|
4213
|
+
if isinstance(sub_container, EcucParamConfContainerDef):
|
|
4214
|
+
self.writeEcucParamConfContainerDef(child_element, sub_container)
|
|
4215
|
+
elif isinstance(sub_container, EcucChoiceContainerDef):
|
|
4216
|
+
self.writeEcucChoiceContainerDef(child_element, sub_container)
|
|
4217
|
+
else:
|
|
4218
|
+
self.notImplemented("Unsupported SubContainer <%s>" % type(sub_container))
|
|
4219
|
+
|
|
4220
|
+
def writeEcucParamConfContainerDef(self, element: ET.Element, container_def: EcucParamConfContainerDef):
|
|
4221
|
+
if container_def is not None:
|
|
4222
|
+
child_element = ET.SubElement(element, "ECUC-PARAM-CONF-CONTAINER-DEF")
|
|
4223
|
+
self.writeEcucContainerDef(child_element, container_def)
|
|
4224
|
+
self.writeEcucContainerDefParameters(child_element, container_def)
|
|
4225
|
+
self.writeEcucContainerDefReferences(child_element, container_def)
|
|
4226
|
+
self.writeEcucContainerDefSubContainers(child_element, container_def)
|
|
4227
|
+
|
|
4228
|
+
def writeEcucChoiceContainerDefChoices(self, element: ET.Element, container_def: EcucChoiceContainerDef):
|
|
4229
|
+
choices = container_def.getChoices()
|
|
4230
|
+
if len(choices) > 0:
|
|
4231
|
+
child_element = ET.SubElement(element, "CHOICES")
|
|
4232
|
+
for choice in choices:
|
|
4233
|
+
if isinstance(choice, EcucParamConfContainerDef):
|
|
4234
|
+
self.writeEcucParamConfContainerDef(child_element, choice)
|
|
4235
|
+
else:
|
|
4236
|
+
self.notImplemented("Unsupported Choice <%s>" % type(choice))
|
|
4237
|
+
|
|
4238
|
+
def writeEcucChoiceContainerDef(self, element: ET.Element, container_def: EcucChoiceContainerDef):
|
|
4239
|
+
if container_def is not None:
|
|
4240
|
+
child_element = ET.SubElement(element, "ECUC-CHOICE-CONTAINER-DEF")
|
|
4241
|
+
self.writeEcucContainerDef(child_element, container_def)
|
|
4242
|
+
self.writeEcucChoiceContainerDefChoices(child_element, container_def)
|
|
4243
|
+
|
|
4244
|
+
def writeEcucModuleDefContainers(self, element: ET.Element, module_def: EcucModuleDef):
|
|
4245
|
+
container_defs = module_def.getContainers()
|
|
4246
|
+
if len(container_defs) > 0:
|
|
4247
|
+
child_element = ET.SubElement(element, "CONTAINERS")
|
|
4248
|
+
for container_def in container_defs:
|
|
4249
|
+
if isinstance(container_def, EcucParamConfContainerDef):
|
|
4250
|
+
self.writeEcucParamConfContainerDef(child_element, container_def)
|
|
4251
|
+
elif isinstance(container_def, EcucChoiceContainerDef):
|
|
4252
|
+
self.writeEcucChoiceContainerDef(child_element, container_def)
|
|
4253
|
+
else:
|
|
4254
|
+
self.notImplemented("Unsupported Container <%s>" % type(container_def))
|
|
4255
|
+
|
|
4256
|
+
def writeEcucModuleDef(self, element: ET.Element, module_def: EcucModuleDef):
|
|
4257
|
+
if module_def is not None:
|
|
4258
|
+
self.logger.debug("Write EcucModuleDef <%s>" % module_def.getShortName())
|
|
4259
|
+
child_element = ET.SubElement(element, "ECUC-MODULE-DEF")
|
|
4260
|
+
self.writeEcucDefinitionElement(child_element, module_def)
|
|
4261
|
+
self.setChildElementOptionalBooleanValue(child_element, "POST-BUILD-VARIANT-SUPPORT", module_def.getPostBuildVariantSupport())
|
|
4262
|
+
self.writeEcucModuleDefSupportedConfigVariants(child_element, module_def)
|
|
4263
|
+
self.writeEcucModuleDefContainers(child_element, module_def)
|
|
4264
|
+
|
|
3931
4265
|
def writeMacMulticastGroup(self, element: ET.Element, group: MacMulticastGroup):
|
|
3932
4266
|
if group is not None:
|
|
3933
4267
|
child_element = ET.SubElement(element, "MAC-MULTICAST-GROUP")
|
|
@@ -4483,6 +4817,21 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
4483
4817
|
self.writeIdentifiable(child_element, mapping)
|
|
4484
4818
|
self.writeClientServerInterfaceMappingOperationMappings(child_element, mapping)
|
|
4485
4819
|
|
|
4820
|
+
def writeModeInterfaceMappingModeMapping(self, element: ET.Element, mapping: ModeInterfaceMapping):
|
|
4821
|
+
mode_mapping = mapping.getModeMapping()
|
|
4822
|
+
if mode_mapping is not None:
|
|
4823
|
+
child_element = ET.SubElement(element, "MODE-MAPPING")
|
|
4824
|
+
self.setChildElementOptionalRefType(child_element, "FIRST-MODE-GROUP-REF", mode_mapping.getFirstModeGroupRef())
|
|
4825
|
+
self.setChildElementOptionalRefType(child_element, "MODE-DECLARATION-MAPPING-SET-REF", mode_mapping.getModeDeclarationMappingSetRef())
|
|
4826
|
+
self.setChildElementOptionalRefType(child_element, "SECOND-MODE-GROUP-REF", mode_mapping.getSecondModeGroupRef())
|
|
4827
|
+
|
|
4828
|
+
def writeModeInterfaceMapping(self, element: ET.Element, mapping: ModeInterfaceMapping):
|
|
4829
|
+
# self.logger.debug("Read ClientServerInterfaceMapping %s" % mapping.getShortName())
|
|
4830
|
+
if mapping is not None:
|
|
4831
|
+
child_element = ET.SubElement(element, "MODE-INTERFACE-MAPPING")
|
|
4832
|
+
self.writeIdentifiable(child_element, mapping)
|
|
4833
|
+
self.writeModeInterfaceMappingModeMapping(child_element, mapping)
|
|
4834
|
+
|
|
4486
4835
|
def writePortInterfaceMappings(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
|
|
4487
4836
|
mappings = mapping_set.getPortInterfaceMappings()
|
|
4488
4837
|
if len(mappings) > 0:
|
|
@@ -4492,6 +4841,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
4492
4841
|
self.writeVariableAndParameterInterfaceMapping(child_element, mapping)
|
|
4493
4842
|
elif isinstance(mapping, ClientServerInterfaceMapping):
|
|
4494
4843
|
self.writeClientServerInterfaceMapping(child_element, mapping)
|
|
4844
|
+
elif isinstance(mapping, ModeInterfaceMapping):
|
|
4845
|
+
self.writeModeInterfaceMapping(child_element, mapping)
|
|
4495
4846
|
else:
|
|
4496
4847
|
self.notImplemented("Unsupported PortInterfaceMapping <%s>" % type(mapping))
|
|
4497
4848
|
|
|
@@ -5444,6 +5795,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
5444
5795
|
self.writeKeywordSet(element, ar_element)
|
|
5445
5796
|
elif isinstance(ar_element, PortPrototypeBlueprint):
|
|
5446
5797
|
self.writePortPrototypeBlueprint(element, ar_element)
|
|
5798
|
+
elif isinstance(ar_element, ModeDeclarationMappingSet):
|
|
5799
|
+
self.writeModeDeclarationMappingSet(element, ar_element)
|
|
5800
|
+
elif isinstance(ar_element, EcucModuleDef):
|
|
5801
|
+
self.writeEcucModuleDef(element, ar_element)
|
|
5802
|
+
elif isinstance(ar_element, EcucModuleConfigurationValues):
|
|
5803
|
+
self.writeEcucModuleConfigurationValues(element, ar_element)
|
|
5447
5804
|
else:
|
|
5448
5805
|
self.notImplemented("Unsupported Elements of ARPackage <%s>" % type(ar_element))
|
|
5449
5806
|
|