armodel 1.8.0__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/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +0 -1
- 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 +7 -7
- 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/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 +33 -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 +9 -9
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +172 -128
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +11 -11
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +8 -8
- 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/__init__.py +6 -6
- armodel/models/M2/MSR/AsamHdo/AdminData.py +101 -8
- armodel/parser/abstract_arxml_parser.py +8 -5
- armodel/parser/arxml_parser.py +332 -16
- 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 +4 -4
- 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 +376 -29
- {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/METADATA +17 -1
- {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/RECORD +49 -46
- {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/LICENSE +0 -0
- {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/WHEEL +0 -0
- {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/entry_points.txt +0 -0
- {armodel-1.8.0.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
|
|
@@ -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())
|
|
@@ -3938,6 +3989,279 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
3938
3989
|
self.writeARElement(child_element, blueprint)
|
|
3939
3990
|
self.setChildElementOptionalRefType(child_element, "INTERFACE-REF", blueprint.getInterfaceRef())
|
|
3940
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
|
+
|
|
3941
4265
|
def writeMacMulticastGroup(self, element: ET.Element, group: MacMulticastGroup):
|
|
3942
4266
|
if group is not None:
|
|
3943
4267
|
child_element = ET.SubElement(element, "MAC-MULTICAST-GROUP")
|
|
@@ -4493,6 +4817,21 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
4493
4817
|
self.writeIdentifiable(child_element, mapping)
|
|
4494
4818
|
self.writeClientServerInterfaceMappingOperationMappings(child_element, mapping)
|
|
4495
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
|
+
|
|
4496
4835
|
def writePortInterfaceMappings(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
|
|
4497
4836
|
mappings = mapping_set.getPortInterfaceMappings()
|
|
4498
4837
|
if len(mappings) > 0:
|
|
@@ -4502,6 +4841,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
4502
4841
|
self.writeVariableAndParameterInterfaceMapping(child_element, mapping)
|
|
4503
4842
|
elif isinstance(mapping, ClientServerInterfaceMapping):
|
|
4504
4843
|
self.writeClientServerInterfaceMapping(child_element, mapping)
|
|
4844
|
+
elif isinstance(mapping, ModeInterfaceMapping):
|
|
4845
|
+
self.writeModeInterfaceMapping(child_element, mapping)
|
|
4505
4846
|
else:
|
|
4506
4847
|
self.notImplemented("Unsupported PortInterfaceMapping <%s>" % type(mapping))
|
|
4507
4848
|
|
|
@@ -5454,6 +5795,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
5454
5795
|
self.writeKeywordSet(element, ar_element)
|
|
5455
5796
|
elif isinstance(ar_element, PortPrototypeBlueprint):
|
|
5456
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)
|
|
5457
5804
|
else:
|
|
5458
5805
|
self.notImplemented("Unsupported Elements of ARPackage <%s>" % type(ar_element))
|
|
5459
5806
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: armodel
|
|
3
|
-
Version: 1.8.
|
|
3
|
+
Version: 1.8.1
|
|
4
4
|
Summary: the python arxml parser
|
|
5
5
|
Home-page: http://github.com/melodypapa/py-armodel
|
|
6
6
|
Author: melodypapa
|
|
@@ -602,3 +602,19 @@ Fix the attribute intervalType of **Limit** is empty issue.
|
|
|
602
602
|
* findVariableDataPrototype
|
|
603
603
|
* findImplementationDataType
|
|
604
604
|
|
|
605
|
+
**Version 1.8.1**
|
|
606
|
+
|
|
607
|
+
1. To support the following AR Element:
|
|
608
|
+
* MODE-DECLARATION-MAPPING-SET
|
|
609
|
+
* MODE-INTERFACE-MAPPING
|
|
610
|
+
* ECUC-MODULE-DEF
|
|
611
|
+
* DOC-REVISION
|
|
612
|
+
* ECUC-PARAM-CONF-CONTAINER-DEF
|
|
613
|
+
* ECUC-BOOLEAN-PARAM-DEF
|
|
614
|
+
* ECUC-STRING-PARAM-DEF
|
|
615
|
+
* ECUC-INTEGER-PARAM-DEF
|
|
616
|
+
* ECUC-FLOAT-PARAM-DEF
|
|
617
|
+
* ECUC-ENUMERATION-PARAM-DEF
|
|
618
|
+
2. Same short name with different type can be added and located.
|
|
619
|
+
|
|
620
|
+
|