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.
Files changed (49) hide show
  1. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +0 -1
  2. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +14 -14
  3. armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +2 -3
  4. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +1 -1
  5. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +7 -7
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +1 -1
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +4 -4
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +3 -3
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/ExecutionOrderConstraint.py +3 -3
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/TimingExtensions.py +3 -3
  11. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +86 -9
  12. armodel/models/M2/AUTOSARTemplates/ECUCParameterDefTemplate.py +1249 -0
  13. armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +13 -10
  14. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +238 -225
  15. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ArObject.py +5 -4
  16. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +46 -25
  17. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +33 -3
  18. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +18 -20
  19. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -19
  20. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +4 -4
  21. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +71 -27
  22. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +9 -9
  23. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +172 -128
  24. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +11 -11
  25. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +8 -8
  26. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +2 -2
  27. armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +6 -6
  28. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +6 -6
  29. armodel/models/M2/MSR/AsamHdo/AdminData.py +101 -8
  30. armodel/parser/abstract_arxml_parser.py +8 -5
  31. armodel/parser/arxml_parser.py +332 -16
  32. armodel/tests/test_armodel/models/test_ECUCParameterDefTemplate.py +116 -0
  33. armodel/tests/test_armodel/models/test_Identifiable.py +85 -0
  34. armodel/tests/test_armodel/models/test_ar_object.py +85 -86
  35. armodel/tests/test_armodel/models/test_ar_package.py +70 -70
  36. armodel/tests/test_armodel/models/test_ar_ref.py +36 -36
  37. armodel/tests/test_armodel/models/test_common_structure.py +37 -35
  38. armodel/tests/test_armodel/models/test_datatype.py +4 -4
  39. armodel/tests/test_armodel/models/test_general_structure.py +19 -18
  40. armodel/tests/test_armodel/models/test_port_interface.py +2 -6
  41. armodel/tests/test_armodel/parser/test_arxml_parser.py +8 -8
  42. armodel/writer/abstract_arxml_writer.py +6 -2
  43. armodel/writer/arxml_writer.py +376 -29
  44. {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/METADATA +17 -1
  45. {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/RECORD +49 -46
  46. {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/LICENSE +0 -0
  47. {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/WHEEL +0 -0
  48. {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/entry_points.txt +0 -0
  49. {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/top_level.txt +0 -0
@@ -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, EcucInstanceReferenceValue
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 writeSdgs(self, parent: ET.Element, admin_data: AdminData):
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.writeSdgs(child_element, admin_data)
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 setTransmissionAcknowledgementRequest(self, element: ET.Element, acknowledge: TransmissionAcknowledgementRequest):
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 setSenderComSpec(self, element: ET.Element, com_spec: SenderComSpec):
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.setCompositeNetworkRepresentation(child_element, representation)
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.setTransmissionAcknowledgementRequest(element, com_spec.getTransmissionAcknowledge())
397
+ self.writeTransmissionAcknowledgementRequest(element, com_spec.getTransmissionAcknowledge())
347
398
  self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.getUsesEndToEndProtection())
348
399
 
349
- def setNonqueuedSenderComSpec(self, element: ET.Element, com_spec: NonqueuedSenderComSpec):
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.setSenderComSpec(child_element, com_spec)
403
+ self.writeSenderComSpec(child_element, com_spec)
353
404
  self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
354
405
 
355
- def setServerComSpec(self, element: ET.Element, com_spec: ServerComSpec):
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 setQueuedSenderComSpec(self, element: ET.Element, com_spec: QueuedSenderComSpec):
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.setSenderComSpec(child_element, com_spec)
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 setModeSwitchSenderComSpec(self, element: ET.Element, com_spec: ModeSwitchSenderComSpec):
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.setNonqueuedSenderComSpec(com_specs_tag, com_spec)
432
+ self.writeNonqueuedSenderComSpec(com_specs_tag, com_spec)
382
433
  elif isinstance(com_spec, ServerComSpec):
383
- self.setServerComSpec(com_specs_tag, com_spec)
434
+ self.writeServerComSpec(com_specs_tag, com_spec)
384
435
  elif isinstance(com_spec, QueuedSenderComSpec):
385
- self.setQueuedSenderComSpec(com_specs_tag, com_spec)
436
+ self.writeQueuedSenderComSpec(com_specs_tag, com_spec)
386
437
  elif isinstance(com_spec, ModeSwitchSenderComSpec):
387
- self.setModeSwitchSenderComSpec(com_specs_tag, com_spec)
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 setCompositeNetworkRepresentation(self, element: ET.Element, representation: CompositeNetworkRepresentation):
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.setCompositeNetworkRepresentation(child_element, representation)
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 setVariableAccess(self, element: ET.Element, access: VariableAccess):
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.setVariableAccess(child_element, access)
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.setVariableAccess(child_element, point)
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.setVariableAccess(child_element, access)
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.setVariableAccess(child_element, access)
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.setVariableAccess(child_element, access)
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.setVariableAccess(child_element, access)
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.0
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
+