armodel 1.7.2__py3-none-any.whl → 1.7.3__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 (40) hide show
  1. armodel/cli/arxml_dump_cli.py +1 -1
  2. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +42 -19
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +104 -30
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +12 -16
  5. armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +70 -0
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +12 -9
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +29 -22
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HardwareConfiguration.py +33 -0
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HeapUsage.py +10 -0
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/SoftwareContext.py +23 -0
  11. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/StackUsage.py +93 -0
  12. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +39 -5
  13. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +26 -2
  14. armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcBswMapping.py +48 -6
  15. armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +5 -5
  16. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +21 -1
  17. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +12 -0
  18. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +8 -0
  19. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +196 -5
  20. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +11 -2
  21. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +36 -21
  22. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +10 -1
  23. armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +16 -1
  24. armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +34 -3
  25. armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +7 -0
  26. armodel/models/M2/MSR/DataDictionary/ServiceProcessTask.py +33 -0
  27. armodel/models/__init__.py +3 -0
  28. armodel/parser/abstract_arxml_parser.py +4 -14
  29. armodel/parser/arxml_parser.py +347 -180
  30. armodel/tests/test_armodel/models/test_ar_object.py +6 -2
  31. armodel/tests/test_armodel/models/test_port_interface.py +4 -4
  32. armodel/tests/test_armodel/parser/test_parse_bswmd.py +48 -48
  33. armodel/writer/abstract_arxml_writer.py +1 -0
  34. armodel/writer/arxml_writer.py +351 -226
  35. {armodel-1.7.2.dist-info → armodel-1.7.3.dist-info}/METADATA +15 -2
  36. {armodel-1.7.2.dist-info → armodel-1.7.3.dist-info}/RECORD +40 -34
  37. {armodel-1.7.2.dist-info → armodel-1.7.3.dist-info}/LICENSE +0 -0
  38. {armodel-1.7.2.dist-info → armodel-1.7.3.dist-info}/WHEEL +0 -0
  39. {armodel-1.7.2.dist-info → armodel-1.7.3.dist-info}/entry_points.txt +0 -0
  40. {armodel-1.7.2.dist-info → armodel-1.7.3.dist-info}/top_level.txt +0 -0
@@ -2,10 +2,12 @@ import xml.etree.cElementTree as ET
2
2
 
3
3
  from typing import List
4
4
 
5
+
6
+
5
7
  from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
6
8
  from ..models.M2.MSR.AsamHdo.AdminData import AdminData
7
9
  from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
8
- from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstTextContent, CompuMethod, CompuNominatorDenominator, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
10
+ from ..models.M2.MSR.AsamHdo.ComputationMethod import Compu, CompuConst, CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent, CompuConstTextContent, CompuMethod, CompuNominatorDenominator, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
9
11
  from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstr, InternalConstrs, PhysConstrs
10
12
  from ..models.M2.MSR.AsamHdo.SpecialData import Sdg
11
13
  from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension, Unit
@@ -13,8 +15,9 @@ from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValu
13
15
  from ..models.M2.MSR.DataDictionary.Axis import SwAxisGrouped, SwAxisIndividual
14
16
  from ..models.M2.MSR.DataDictionary.AuxillaryObjects import SwAddrMethod
15
17
  from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxis, SwCalprmAxisSet
16
- from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, ValueList
18
+ from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, SwPointerTargetProps, ValueList
17
19
  from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayout, SwRecordLayoutGroup, SwRecordLayoutV
20
+ from ..models.M2.MSR.DataDictionary.ServiceProcessTask import SwServiceArg
18
21
  from ..models.M2.MSR.Documentation.Annotation import Annotation
19
22
  from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
20
23
  from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
@@ -25,20 +28,21 @@ from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
25
28
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
26
29
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
27
30
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
28
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswEvent, BswInternalBehavior, BswModeSenderPolicy, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
31
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswEvent, BswInternalBehavior, BswInterruptEntity, BswModeSenderPolicy, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
29
32
  from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
33
+ from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
30
34
  from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
31
35
  from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
32
36
  from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Code, Implementation
33
37
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
34
38
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef, ExecutionOrderConstraint
35
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DiagnosticCommunicationManagerNeeds, DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds, NvBlockNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
39
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DiagnosticCommunicationManagerNeeds, DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds, EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
36
40
  from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
37
41
  from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
38
42
  from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
39
43
  from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclaration, ModeDeclarationGroup, ModeDeclarationGroupPrototype
40
44
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
41
-
45
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
42
46
  from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
43
47
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
44
48
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, MultilanguageReferrable, Referrable
@@ -46,7 +50,7 @@ from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyI
46
50
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
47
51
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral, Limit
48
52
 
49
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption
53
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
50
54
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
51
55
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
52
56
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType
@@ -69,7 +73,7 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes im
69
73
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ServiceSwComponentType
70
74
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import DataTypeMappingSet
71
75
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
72
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ClientServerInterface, ClientServerOperation, ModeSwitchInterface, ParameterInterface, PortInterface, SenderReceiverInterface, TriggerInterface
76
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ClientServerInterface, ClientServerOperation, DataPrototypeMapping, ModeSwitchInterface, ParameterInterface, PortInterface, PortInterfaceMappingSet, SenderReceiverInterface, TriggerInterface, VariableAndParameterInterfaceMapping
73
77
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
74
78
 
75
79
  from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
@@ -127,7 +131,7 @@ class ARXMLWriter(AbstractARXMLWriter):
127
131
  for sdg in sdgs:
128
132
  self.setSdg(sdgs_tag, sdg)
129
133
 
130
- def writeChildLimitElement(self, element: ET.Element, key: str, limit: Limit):
134
+ def setChildLimitElement(self, element: ET.Element, key: str, limit: Limit):
131
135
  if limit is not None:
132
136
  limit_tag = ET.SubElement(element, key)
133
137
  self.setARObjectAttributes(limit_tag, limit)
@@ -222,7 +226,7 @@ class ARXMLWriter(AbstractARXMLWriter):
222
226
  child_element = ET.SubElement(element, "NONQUEUED-SENDER-COM-SPEC")
223
227
  self.setARObjectAttributes(child_element, com_spec)
224
228
  self.setSenderComSpec(child_element, com_spec)
225
- self.setInitValue(child_element, com_spec.initValue)
229
+ self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
226
230
 
227
231
  def setServerComSpec(self, element: ET.Element, com_spec: ServerComSpec):
228
232
  child_element = ET.SubElement(element, "SERVER-COM-SPEC")
@@ -297,9 +301,9 @@ class ARXMLWriter(AbstractARXMLWriter):
297
301
  if cont is not None:
298
302
  child_element = ET.SubElement(element, "SW-VALUE-CONT")
299
303
  self.setARObjectAttributes(child_element, cont)
300
- self.setChildElementOptionalRefType(child_element, "UNIT-REF", cont.unit_ref)
301
- self.setValueList(child_element, "SW-ARRAYSIZE", cont.sw_arraysize)
302
- self.setSwValues(child_element, "SW-VALUES-PHYS", cont.sw_values_phys)
304
+ self.setChildElementOptionalRefType(child_element, "UNIT-REF", cont.unitRef)
305
+ self.setValueList(child_element, "SW-ARRAYSIZE", cont.swArraysize)
306
+ self.setSwValues(child_element, "SW-VALUES-PHYS", cont.swValuesPhys)
303
307
 
304
308
  def writeValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
305
309
  if value_spec is not None:
@@ -350,37 +354,34 @@ class ARXMLWriter(AbstractARXMLWriter):
350
354
  self.writeValueSpecification(value_spec_tag, value_spec)
351
355
  self.setChildElementOptionalRefType(value_spec_tag, "CONSTANT-REF", value_spec.getConstantRef())
352
356
 
353
- def setValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
357
+ def setValueSpecification(self, element: ET.Element, key: str, value_spec: ValueSpecification):
354
358
  if value_spec is not None:
359
+ child_element = ET.SubElement(element, key)
355
360
  if isinstance(value_spec, ApplicationValueSpecification):
356
- self.setApplicationValueSpecification(element, value_spec)
361
+ self.setApplicationValueSpecification(child_element, value_spec)
357
362
  elif isinstance(value_spec, TextValueSpecification):
358
- self.setTextValueSpecification(element, value_spec)
363
+ self.setTextValueSpecification(child_element, value_spec)
359
364
  elif isinstance(value_spec, ConstantReference):
360
- self.setConstantReference(element, value_spec)
365
+ self.setConstantReference(child_element, value_spec)
361
366
  elif isinstance(value_spec, NumericalValueSpecification):
362
- self.setNumericalValueSpecification(element, value_spec)
367
+ self.setNumericalValueSpecification(child_element, value_spec)
363
368
  elif isinstance(value_spec, ArrayValueSpecification):
364
- self.setArrayValueSpecification(element, value_spec)
369
+ self.setArrayValueSpecification(child_element, value_spec)
365
370
  elif isinstance(value_spec, RecordValueSpecification):
366
- self.setRecordValueSpecification(element, value_spec)
371
+ self.setRecordValueSpecification(child_element, value_spec)
367
372
  else:
368
373
  self.notImplemented("Unsupported ValueSpecification %s" % type(value_spec))
369
374
 
370
- def setInitValue(self, element: ET.Element, init_value: ValueSpecification):
371
- if init_value is not None:
372
- child_element = ET.SubElement(element, "INIT-VALUE")
373
- self.setValueSpecification(child_element, init_value)
374
-
375
375
  def writeNonqueuedReceiverComSpec(self, element: ET.Element, com_spec: NonqueuedReceiverComSpec):
376
376
  child_element = ET.SubElement(element, "NONQUEUED-RECEIVER-COM-SPEC")
377
377
  self.setARObjectAttributes(child_element, com_spec)
378
378
  self.writeReceiverComSpec(child_element, com_spec)
379
- self.setChildElementOptionalFloatValue(child_element, "ALIVE-TIMEOUT", com_spec.aliveTimeout)
380
- self.setChildElementOptionalBooleanValue(child_element, "ENABLE-UPDATE", com_spec.enableUpdated)
381
- self.setChildElementOptionalBooleanValue(child_element, "HANDLE-NEVER-RECEIVED", com_spec.handleNeverReceived)
382
- self.setChildElementOptionalLiteral(child_element, "HANDLE-TIMEOUT-TYPE", com_spec.handleTimeoutType)
383
- self.setInitValue(child_element, com_spec.initValue)
379
+ self.setChildElementOptionalFloatValue(child_element, "ALIVE-TIMEOUT", com_spec.getAliveTimeout())
380
+ self.setChildElementOptionalBooleanValue(child_element, "ENABLE-UPDATE", com_spec.getEnableUpdated())
381
+ self.setDataFilter(child_element, "FILTER", com_spec.getFilter())
382
+ self.setChildElementOptionalBooleanValue(child_element, "HANDLE-NEVER-RECEIVED", com_spec.getHandleNeverReceived())
383
+ self.setChildElementOptionalLiteral(child_element, "HANDLE-TIMEOUT-TYPE", com_spec.getHandleTimeoutType())
384
+ self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
384
385
 
385
386
  def writeQueuedReceiverComSpec(self, element: ET.Element, com_spec: QueuedReceiverComSpec):
386
387
  child_element = ET.SubElement(element, "QUEUED-RECEIVER-COM-SPEC")
@@ -398,8 +399,8 @@ class ARXMLWriter(AbstractARXMLWriter):
398
399
  self.logger.debug("writeParameterRequireComSpec")
399
400
  child_element = ET.SubElement(element, "PARAMETER-REQUIRE-COM-SPEC")
400
401
  self.setARObjectAttributes(child_element, com_spec)
401
- self.setChildElementOptionalRefType(child_element, "PARAMETER-REF", com_spec.parameter_ref)
402
- self.setInitValue(child_element, com_spec.init_value)
402
+ self.setChildElementOptionalRefType(child_element, "PARAMETER-REF", com_spec.getParameterRef())
403
+ self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
403
404
 
404
405
  def writeModeSwitchReceiverComSpec(self, element: ET.Element, com_spec: ModeSwitchReceiverComSpec):
405
406
  self.logger.debug("writeModeSwitchReceiverComSpec")
@@ -432,7 +433,7 @@ class ARXMLWriter(AbstractARXMLWriter):
432
433
  prototype_tag = ET.SubElement(ports_tag, "P-PORT-PROTOTYPE")
433
434
 
434
435
  self.setIdentifiable(prototype_tag, prototype)
435
- self.logger.debug("write PPortPrototype %s" % prototype.short_name)
436
+ self.logger.debug("write PPortPrototype %s" % prototype.getShortName())
436
437
  self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
437
438
  self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-INTERFACE-TREF", prototype.getProvidedInterfaceTRef())
438
439
 
@@ -444,14 +445,14 @@ class ARXMLWriter(AbstractARXMLWriter):
444
445
  self.writeRPortComSpec(com_specs_tag, com_spec)
445
446
 
446
447
  def writeRPortPrototype(self, ports_tag: ET.Element, prototype: RPortPrototype):
447
- self.logger.debug("write RPortPrototype %s" % prototype.short_name)
448
+ self.logger.debug("write RPortPrototype %s" % prototype.getShortName())
448
449
  prototype_tag = ET.SubElement(ports_tag, "R-PORT-PROTOTYPE")
449
450
  self.setIdentifiable(prototype_tag, prototype)
450
451
  self.setAbstractRequiredPortPrototype(prototype_tag, prototype)
451
452
  self.setChildElementOptionalRefType(prototype_tag, "REQUIRED-INTERFACE-TREF", prototype.getRequiredInterfaceTRef())
452
453
 
453
454
  def writePRPortPrototype(self, ports_tag: ET.Element, prototype: PRPortPrototype):
454
- self.logger.debug("write PRPortPrototype %s" % prototype.short_name)
455
+ self.logger.debug("write PRPortPrototype %s" % prototype.getShortName())
455
456
  prototype_tag = ET.SubElement(ports_tag, "PR-PORT-PROTOTYPE")
456
457
  self.setIdentifiable(prototype_tag, prototype)
457
458
  self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
@@ -490,7 +491,7 @@ class ARXMLWriter(AbstractARXMLWriter):
490
491
  self.setChildElementOptionalRefType(child_element, "PORT-PROTOTYPE-REF", ref)
491
492
 
492
493
  def writePortGroup(self, element: ET.Element, port_group: PortGroup):
493
- self.logger.debug("writePortGroup %s" % port_group.short_name)
494
+ self.logger.debug("writePortGroup %s" % port_group.getShortName())
494
495
  child_element = ET.SubElement(element, "PORT-GROUP")
495
496
  self.setIdentifiable(child_element, port_group)
496
497
  self.writePortGroupInnerGroupIRefs(child_element, port_group)
@@ -524,18 +525,19 @@ class ARXMLWriter(AbstractARXMLWriter):
524
525
  self.writeSwComponentPrototype(components_tag, prototype)
525
526
 
526
527
  def writeAssemblySwConnector(self, element: ET.Element, sw_connector: AssemblySwConnector):
527
- connector_tag = ET.SubElement(element, "ASSEMBLY-SW-CONNECTOR")
528
- self.setIdentifiable(connector_tag, sw_connector)
528
+ child_element = ET.SubElement(element, "ASSEMBLY-SW-CONNECTOR")
529
+ self.setIdentifiable(child_element, sw_connector)
530
+ self.setChildElementOptionalRefType(child_element, "MAPPING-REF", sw_connector.getMappingRef())
529
531
 
530
532
  if sw_connector.getProviderIRef() is not None:
531
- provider_iref_tag = ET.SubElement(connector_tag, "PROVIDER-IREF")
533
+ provider_iref_tag = ET.SubElement(child_element, "PROVIDER-IREF")
532
534
  provider_iref = sw_connector.getProviderIRef()
533
535
  self.setARObjectAttributes(provider_iref_tag, provider_iref)
534
536
  self.setChildElementOptionalRefType(provider_iref_tag, "CONTEXT-COMPONENT-REF", provider_iref.getContextComponentRef())
535
537
  self.setChildElementOptionalRefType(provider_iref_tag, "TARGET-P-PORT-REF", provider_iref.getTargetPPortRef())
536
538
 
537
539
  if sw_connector.getRequesterIRef() is not None:
538
- requester_iref_tag = ET.SubElement(connector_tag, "REQUESTER-IREF")
540
+ requester_iref_tag = ET.SubElement(child_element, "REQUESTER-IREF")
539
541
  requester_iref = sw_connector.getRequesterIRef()
540
542
  self.setARObjectAttributes(requester_iref_tag, requester_iref)
541
543
  self.setChildElementOptionalRefType(requester_iref_tag, "CONTEXT-COMPONENT-REF", requester_iref.getContextComponentRef())
@@ -681,32 +683,35 @@ class ARXMLWriter(AbstractARXMLWriter):
681
683
  for axis in axises:
682
684
  self.setSwCalprmAxis(child_element, axis)
683
685
 
684
- def writeSwDataDefProsInvalidValue(self, element: ET.Element, props: SwDataDefProps):
685
- if props.getInvalidValue() is not None:
686
- child_element = ET.SubElement(element, "INVALID-VALUE")
687
- self.setValueSpecification(child_element, props.getInvalidValue())
686
+ def setSwPointerTargetProps(self, element: ET.Element, key: str, props: SwPointerTargetProps):
687
+ if props is not None:
688
+ child_element = ET.SubElement(element, key)
689
+ self.setChildElementOptionalLiteral(child_element, "TARGET-CATEGORY", props.getTargetCategory())
690
+ self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", props.getSwDataDefProps())
688
691
 
689
- def setSwDataDefProps(self, element: ET.Element, key: str, sw_data_def_props: SwDataDefProps):
690
- if sw_data_def_props is not None:
692
+ def setSwDataDefProps(self, element: ET.Element, key: str, props: SwDataDefProps):
693
+ if props is not None:
691
694
  child_element = ET.SubElement(element, key)
692
- self.setARObjectAttributes(child_element, sw_data_def_props)
695
+ self.setARObjectAttributes(child_element, props)
693
696
  sw_data_def_props_variants_tag = ET.SubElement(child_element, "SW-DATA-DEF-PROPS-VARIANTS")
694
- sw_data_def_props_conditional_tag = ET.SubElement(sw_data_def_props_variants_tag, "SW-DATA-DEF-PROPS-CONDITIONAL")
695
- self.setARObjectAttributes(sw_data_def_props_conditional_tag, sw_data_def_props.conditional)
696
- self.setAnnotations(sw_data_def_props_conditional_tag, sw_data_def_props.getAnnotations())
697
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "BASE-TYPE-REF", sw_data_def_props.getBaseTypeRef())
698
- self.writeSwDataDefProsInvalidValue(sw_data_def_props_conditional_tag, sw_data_def_props)
699
- self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-CALIBRATION-ACCESS", sw_data_def_props.getSwCalibrationAccess())
700
- self.setSwCalprmAxisSet(sw_data_def_props_conditional_tag, "SW-CALPRM-AXIS-SET", sw_data_def_props.getSwCalprmAxisSet())
701
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "COMPU-METHOD-REF", sw_data_def_props.getCompuMethodRef())
702
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "DATA-CONSTR-REF", sw_data_def_props.getDataConstrRef())
703
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "SW-ADDR-METHOD-REF", sw_data_def_props.getSwAddrMethodRef())
704
- self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-IMPL-POLICY", sw_data_def_props.getSwImplPolicy())
705
- self.setChildElementOptionalNumericalValue(sw_data_def_props_conditional_tag, "SW-INTENDED-RESOLUTION", sw_data_def_props.getSwIntendedResolution())
706
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", sw_data_def_props.getImplementationDataTypeRef())
707
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "SW-RECORD-LAYOUT-REF", sw_data_def_props.getSwRecordLayoutRef())
708
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "VALUE-AXIS-DATA-TYPE-REF", sw_data_def_props.getValueAxisDataTypeRef())
709
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "UNIT-REF", sw_data_def_props.getUnitRef())
697
+ conditional_tag = ET.SubElement(sw_data_def_props_variants_tag, "SW-DATA-DEF-PROPS-CONDITIONAL")
698
+ self.setARObjectAttributes(conditional_tag, props.conditional)
699
+ self.setAnnotations(conditional_tag, props.getAnnotations())
700
+ self.setChildElementOptionalRefType(conditional_tag, "BASE-TYPE-REF", props.getBaseTypeRef())
701
+ self.setChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF", props.getCompuMethodRef())
702
+ self.setChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF", props.getDataConstrRef())
703
+ self.setValueSpecification(conditional_tag, "INVALID-VALUE", props.getInvalidValue())
704
+ self.setChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", props.getImplementationDataTypeRef())
705
+ self.setChildElementOptionalFloatValue(conditional_tag, "STEP-SIZE", props.getStepSize())
706
+ self.setChildElementOptionalRefType(conditional_tag, "SW-ADDR-METHOD-REF", props.getSwAddrMethodRef())
707
+ self.setChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS", props.getSwCalibrationAccess())
708
+ self.setSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET", props.getSwCalprmAxisSet())
709
+ self.setChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY", props.getSwImplPolicy())
710
+ self.setChildElementOptionalNumericalValue(conditional_tag, "SW-INTENDED-RESOLUTION", props.getSwIntendedResolution())
711
+ self.setSwPointerTargetProps(conditional_tag, "SW-POINTER-TARGET-PROPS", props.getSwPointerTargetProps())
712
+ self.setChildElementOptionalRefType(conditional_tag, "SW-RECORD-LAYOUT-REF", props.getSwRecordLayoutRef())
713
+ self.setChildElementOptionalRefType(conditional_tag, "VALUE-AXIS-DATA-TYPE-REF", props.getValueAxisDataTypeRef())
714
+ self.setChildElementOptionalRefType(conditional_tag, "UNIT-REF", props.getUnitRef())
710
715
 
711
716
  def setApplicationDataType(self, element: ET.Element, data_type: ApplicationDataType):
712
717
  self.setAutosarDataType(element, data_type)
@@ -718,7 +723,7 @@ class ARXMLWriter(AbstractARXMLWriter):
718
723
  self.setARElement(element, data_type)
719
724
  self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", data_type.getSwDataDefProps())
720
725
 
721
- def writeApplicationPrimitiveDataType(self, element: ET.Element, data_type: ApplicationPrimitiveDataType):
726
+ def setApplicationPrimitiveDataType(self, element: ET.Element, data_type: ApplicationPrimitiveDataType):
722
727
  self.logger.debug("writeApplicationPrimitiveDataType %s" % data_type.getShortName())
723
728
  data_type_tag = ET.SubElement(element, "APPLICATION-PRIMITIVE-DATA-TYPE")
724
729
  self.setApplicationDataType(data_type_tag, data_type)
@@ -741,7 +746,7 @@ class ARXMLWriter(AbstractARXMLWriter):
741
746
  child_element = ET.SubElement(elements_tag, "APPLICATION-RECORD-ELEMENT")
742
747
  self.setApplicationRecordElement(child_element, record)
743
748
 
744
- def writeApplicationRecordDataType(self, element: ET.Element, data_type: ApplicationRecordDataType):
749
+ def setApplicationRecordDataType(self, element: ET.Element, data_type: ApplicationRecordDataType):
745
750
  data_type_tag = ET.SubElement(element, "APPLICATION-RECORD-DATA-TYPE")
746
751
  self.setApplicationDataType(data_type_tag, data_type)
747
752
  self.writeApplicationRecordElements(data_type_tag, data_type)
@@ -749,9 +754,9 @@ class ARXMLWriter(AbstractARXMLWriter):
749
754
  def writeApplicationDataTypes(self, parent: ET.Element, ar_package: ARPackage):
750
755
  for data_type in ar_package.getApplicationDataType():
751
756
  if isinstance(data_type, ApplicationPrimitiveDataType):
752
- self.writeApplicationPrimitiveDataType(parent, data_type)
757
+ self.setApplicationPrimitiveDataType(parent, data_type)
753
758
  elif isinstance(data_type, ApplicationRecordDataType):
754
- self.writeApplicationRecordDataType(parent, data_type)
759
+ self.setApplicationRecordDataType(parent, data_type)
755
760
  else:
756
761
  self.notImplemented("Unsupported ApplicationDataType <%s>" % type(data_type))
757
762
 
@@ -761,7 +766,7 @@ class ARXMLWriter(AbstractARXMLWriter):
761
766
  self.setChildElementOptionalNumericalValue(element, "MEM-ALIGNMENT", base_type_definition.memAlignment)
762
767
  self.setChildElementOptionalLiteral(element, "NATIVE-DECLARATION", base_type_definition.nativeDeclaration)
763
768
 
764
- def writeSwBaseType(self, element: ET.Element, base_type: SwBaseType):
769
+ def setSwBaseType(self, element: ET.Element, base_type: SwBaseType):
765
770
  data_type_tag = ET.SubElement(element, "SW-BASE-TYPE")
766
771
  self.setIdentifiable(data_type_tag, base_type)
767
772
  self.writeBaseTypeDirectDefinition(data_type_tag, base_type.baseTypeDefinition)
@@ -793,48 +798,49 @@ class ARXMLWriter(AbstractARXMLWriter):
793
798
  else:
794
799
  self.notImplemented("Unsupported CompuScaleContents %s" % type(compu_scale.compuScaleContents))
795
800
 
796
- def writeCompuScales(self, element: ET.Element, compu_scales: CompuScales):
797
- compu_scales_tag = ET.SubElement(element, "COMPU-SCALES")
798
- for compu_scale in compu_scales.getCompuScales():
799
- child_element = ET.SubElement(compu_scales_tag, "COMPU-SCALE")
800
- self.setARObjectAttributes(child_element, compu_scale)
801
- self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", compu_scale.getShortLabel())
802
- self.setChildElementOptionalLiteral(child_element, "SYMBOL", compu_scale.getSymbol())
803
- self.writeChildLimitElement(child_element, "LOWER-LIMIT", compu_scale.getLowerLimit())
804
- self.writeChildLimitElement(child_element, "UPPER-LIMIT", compu_scale.getUpperLimit())
805
- self.writeCompuScaleContents(child_element, compu_scale)
806
-
807
- def writeCompuInternalToPhys(self, element: ET.Element, compu_method: CompuMethod):
808
- compu = compu_method.getCompuInternalToPhys()
809
- if compu is not None:
810
- child_element = ET.SubElement(element, "COMPU-INTERNAL-TO-PHYS")
811
- self.setARObjectAttributes(child_element, compu)
812
- compu_content = compu.getCompuContent()
813
- if compu_content is not None:
814
- if isinstance(compu_content, CompuScales):
815
- self.writeCompuScales(child_element, compu_content)
816
- else:
817
- self.notImplemented("Unsupported CompuContent <%s>" % type(compu_content))
801
+ def setCompuConstContent(self, element: ET.Element, content: CompuConstContent):
802
+ if content is not None:
803
+ if isinstance(content, CompuConstFormulaContent):
804
+ self.setChildElementOptionalLiteral(element, "VF", content.getVf())
805
+ elif isinstance(content, CompuConstNumericContent):
806
+ self.setChildElementOptionalNumericalValue(element, "V", content.getV())
807
+ elif isinstance(content, CompuConstTextContent):
808
+ self.setChildElementOptionalLiteral(element, "VT", content.getVt())
809
+ else:
810
+ self.notImplemented("Unsupported CompuConstContent <%s>" % type(content))
811
+
812
+ def setCompuScales(self, element: ET.Element, compu_scales: CompuScales):
813
+ if compu_scales is not None:
814
+ compu_scales_tag = ET.SubElement(element, "COMPU-SCALES")
815
+ for compu_scale in compu_scales.getCompuScales():
816
+ child_element = ET.SubElement(compu_scales_tag, "COMPU-SCALE")
817
+ self.setARObjectAttributes(child_element, compu_scale)
818
+ self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", compu_scale.getShortLabel())
819
+ self.setChildElementOptionalLiteral(child_element, "SYMBOL", compu_scale.getSymbol())
820
+ self.setChildLimitElement(child_element, "LOWER-LIMIT", compu_scale.getLowerLimit())
821
+ self.setChildLimitElement(child_element, "UPPER-LIMIT", compu_scale.getUpperLimit())
822
+ self.writeCompuScaleContents(child_element, compu_scale)
823
+
824
+ def setCompuConst(self, element: ET.Element, key: str, compu_const: CompuConst):
825
+ if compu_const is not None:
826
+ child_element = ET.SubElement(element, key)
827
+ self.setARObjectAttributes(child_element, compu_const)
828
+ self.setCompuConstContent(child_element, compu_const.getCompuConstContentType())
818
829
 
819
- def writeCompuPhysToInternal(self, element: ET.Element, compu_method: CompuMethod):
820
- compu = compu_method.getCompuPhysToInternal()
830
+ def setCompu(self, element: ET.Element, key: str, compu: Compu):
821
831
  if compu is not None:
822
- child_element = ET.SubElement(element, "COMPU-PHYS-TO-INTERNAL")
832
+ child_element = ET.SubElement(element, key)
823
833
  self.setARObjectAttributes(child_element, compu)
824
- compu_content = compu.getCompuContent()
825
- if compu_content is not None:
826
- if isinstance(compu_content, CompuScales):
827
- self.writeCompuScales(child_element, compu_content)
828
- else:
829
- self.notImplemented("Unsupported CompuContent <%s>" % type(compu_content))
834
+ self.setCompuScales(child_element, compu.getCompuContent())
835
+ self.setCompuConst(child_element, "COMPU-DEFAULT-VALUE", compu.getCompuDefaultValue())
830
836
 
831
- def writeCompuMethod(self, element: ET.Element, compu_method: CompuMethod):
837
+ def setCompuMethod(self, element: ET.Element, compu_method: CompuMethod):
832
838
  child_element = ET.SubElement(element, "COMPU-METHOD")
833
- self.logger.debug("writeCompuMethods %s" % compu_method.getShortName())
839
+ self.logger.debug("write CompuMethods %s" % compu_method.getShortName())
834
840
  self.setIdentifiable(child_element, compu_method)
835
841
  self.setChildElementOptionalRefType(child_element, "UNIT-REF", compu_method.getUnitRef())
836
- self.writeCompuInternalToPhys(child_element, compu_method)
837
- self.writeCompuPhysToInternal(child_element, compu_method)
842
+ self.setCompu(child_element, "COMPU-INTERNAL-TO-PHYS", compu_method.getCompuInternalToPhys())
843
+ self.setCompu(child_element, "COMPU-PHYS-TO-INTERNAL", compu_method.getCompuPhysToInternal())
838
844
 
839
845
  def setApplicationValueSpecification(self, element: ET.Element, spec: ApplicationValueSpecification):
840
846
  spec_tag = ET.SubElement(element, "APPLICATION-VALUE-SPECIFICATION")
@@ -868,26 +874,25 @@ class ARXMLWriter(AbstractARXMLWriter):
868
874
  self.setIdentifiable(spec_tag, spec)
869
875
 
870
876
  if spec.getValueSpec() is not None:
871
- value_spec_tag = ET.SubElement(spec_tag, "VALUE-SPEC")
872
- self.setValueSpecification(value_spec_tag, spec.getValueSpec())
877
+ self.setValueSpecification(spec_tag, "VALUE-SPEC", spec.getValueSpec())
873
878
 
874
879
  def setInternalConstrs(self, element: ET.Element, constrs: InternalConstrs):
875
880
  if constrs is not None:
876
881
  constrs_tag = ET.SubElement(element, "INTERNAL-CONSTRS")
877
882
  self.setARObjectAttributes(constrs_tag, constrs)
878
883
  if constrs.lower_limit is not None:
879
- self.writeChildLimitElement(constrs_tag, "LOWER-LIMIT", constrs.lower_limit)
884
+ self.setChildLimitElement(constrs_tag, "LOWER-LIMIT", constrs.lower_limit)
880
885
  if constrs.upper_limit is not None:
881
- self.writeChildLimitElement(constrs_tag, "UPPER-LIMIT", constrs.upper_limit)
886
+ self.setChildLimitElement(constrs_tag, "UPPER-LIMIT", constrs.upper_limit)
882
887
 
883
888
  def setPhysConstrs(self, element: ET.Element, constrs: PhysConstrs):
884
889
  if constrs is not None:
885
890
  child_element = ET.SubElement(element, "PHYS-CONSTRS")
886
891
  self.setARObjectAttributes(child_element, constrs)
887
892
  if constrs.lower_limit is not None:
888
- self.writeChildLimitElement(child_element, "LOWER-LIMIT", constrs.lower_limit)
893
+ self.setChildLimitElement(child_element, "LOWER-LIMIT", constrs.lower_limit)
889
894
  if constrs.upper_limit is not None:
890
- self.writeChildLimitElement(child_element, "UPPER-LIMIT", constrs.upper_limit)
895
+ self.setChildLimitElement(child_element, "UPPER-LIMIT", constrs.upper_limit)
891
896
  self.setChildElementOptionalRefType(child_element, "UNIT-REF", constrs.unit_ref)
892
897
 
893
898
  def writeDataConstrRules(self, element: ET.Element, parent: DataConstr):
@@ -907,7 +912,7 @@ class ARXMLWriter(AbstractARXMLWriter):
907
912
  self.writeDataConstrRules(child_element, constr)
908
913
 
909
914
  def writeUnit(self, element: ET.Element, unit: Unit):
910
- self.logger.debug("writeUnit %s" % unit.short_name)
915
+ self.logger.debug("writeUnit %s" % unit.getShortName())
911
916
  child_element = ET.SubElement(element, "UNIT")
912
917
  self.setIdentifiable(child_element, unit)
913
918
  self.setChildElementOptionalLiteral(child_element, "DISPLAY-NAME", unit.getDisplayName())
@@ -1064,9 +1069,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1064
1069
  self.setIdentifiable(child_element, access)
1065
1070
  self.setAutosarVariableRef(child_element, access.getAccessedVariableRef())
1066
1071
 
1067
- def writeDataReadAccesses(self, element: ET.Element, entity: RunnableEntity):
1068
- #accesses = entity.getDataReadAccesses():
1069
- pass
1072
+
1070
1073
 
1071
1074
  def setAutosarParameterRef(self, element: ET.Element, key: str, parameter_ref: AutosarParameterRef):
1072
1075
  if parameter_ref is not None:
@@ -1099,12 +1102,19 @@ class ARXMLWriter(AbstractARXMLWriter):
1099
1102
  for point in points:
1100
1103
  self.setVariableAccess(child_element, point)
1101
1104
 
1105
+ def writeDataReadAccesses(self, element: ET.Element, entity: RunnableEntity):
1106
+ accesses = entity.getDataReadAccesses()
1107
+ if len(accesses) > 0:
1108
+ child_element = ET.SubElement(element, "DATA-READ-ACCESSS")
1109
+ for access in accesses:
1110
+ self.setVariableAccess(child_element, access)
1111
+
1102
1112
  def writeDataWriteAccesses(self, element: ET.Element, entity: RunnableEntity):
1103
- points = entity.getDataWriteAccesses()
1104
- if len(points) > 0:
1113
+ accesses = entity.getDataWriteAccesses()
1114
+ if len(accesses) > 0:
1105
1115
  child_element = ET.SubElement(element, "DATA-WRITE-ACCESSS")
1106
- for point in points:
1107
- self.setVariableAccess(child_element, point)
1116
+ for access in accesses:
1117
+ self.setVariableAccess(child_element, access)
1108
1118
 
1109
1119
  def writeReadLocalVariables(self, element: ET.Element, entity: RunnableEntity):
1110
1120
  variables = entity.getReadLocalVariables()
@@ -1214,6 +1224,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1214
1224
  self.writeAsynchronousServerCallResultPoint(child_element, entity)
1215
1225
  self.setChildElementOptionalBooleanValue(child_element, "CAN-BE-INVOKED-CONCURRENTLY", entity.getCanBeInvokedConcurrently())
1216
1226
  self.writeParameterAccesses(child_element, entity)
1227
+ self.writeDataReadAccesses(child_element, entity)
1217
1228
  self.writeDataReceivePointByArguments(child_element, entity)
1218
1229
  self.writeDataSendPoints(child_element, entity)
1219
1230
  self.writeDataWriteAccesses(child_element, entity)
@@ -1260,7 +1271,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1260
1271
  child_element = ET.SubElement(element, "PARAMETER-DATA-PROTOTYPE")
1261
1272
  self.setIdentifiable(child_element, prototype)
1262
1273
  self.setAutosarDataPrototype(child_element, prototype)
1263
- self.setInitValue(child_element, prototype.getInitValue())
1274
+ self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
1264
1275
 
1265
1276
  def writePerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
1266
1277
  prototypes = behavior.getPerInstanceParameters()
@@ -1269,16 +1280,14 @@ class ARXMLWriter(AbstractARXMLWriter):
1269
1280
  for prototype in prototypes:
1270
1281
  self.writeParameterDataPrototype(child_element, prototype)
1271
1282
 
1272
- def writePortDefinedArgumentValues(self, element: ET.Element, option: PortAPIOption) :
1273
- argument_values = option.getPortArgValues()
1283
+ def writePortDefinedArgumentValues(self, element: ET.Element, argument_values: List[PortDefinedArgumentValue]) :
1274
1284
  if len(argument_values) > 0:
1275
1285
  child_element = ET.SubElement(element, "PORT-ARG-VALUES")
1276
1286
  for argument_value in argument_values:
1277
1287
  child_element = ET.SubElement(child_element, "PORT-DEFINED-ARGUMENT-VALUE")
1278
- if argument_value.value is not None:
1279
- value_tag = ET.SubElement(child_element, "VALUE")
1280
- self.setValueSpecification(value_tag, argument_value.value)
1281
- self.setChildElementOptionalRefType(child_element, "VALUE-TYPE-TREF", argument_value.valueTypeTRef)
1288
+ if argument_value.getValue() is not None:
1289
+ self.setValueSpecification(child_element, "VALUE", argument_value.getValue())
1290
+ self.setChildElementOptionalRefType(child_element, "VALUE-TYPE-TREF", argument_value.getValueTypeTRef())
1282
1291
 
1283
1292
  def writePortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
1284
1293
  options = behavior.getPortAPIOptions()
@@ -1286,10 +1295,11 @@ class ARXMLWriter(AbstractARXMLWriter):
1286
1295
  port_api_options_tag = ET.SubElement(element, "PORT-API-OPTIONS")
1287
1296
  for option in options:
1288
1297
  child_element = ET.SubElement(port_api_options_tag, "PORT-API-OPTION")
1289
- self.setChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS", option.enableTakeAddress)
1290
- self.setChildElementOptionalBooleanValue(child_element, "INDIRECT-API", option.indirectAPI)
1291
- self.writePortDefinedArgumentValues(child_element, option)
1292
- self.setChildElementOptionalRefType(child_element, "PORT-REF", option.portRef)
1298
+ self.setChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS", option.getEnableTakeAddress())
1299
+ self.setChildElementOptionalLiteral(child_element, "ERROR-HANDLING", option.getErrorHandling())
1300
+ self.setChildElementOptionalBooleanValue(child_element, "INDIRECT-API", option.getIndirectAPI())
1301
+ self.writePortDefinedArgumentValues(child_element, option.getPortArgValues())
1302
+ self.setChildElementOptionalRefType(child_element, "PORT-REF", option.getPortRef())
1293
1303
 
1294
1304
  def writeRoleBasedDataTypeAssignment(self, element: ET.Element, assignment: RoleBasedDataTypeAssignment):
1295
1305
  child_element = ET.SubElement(element, "ROLE-BASED-DATA-TYPE-ASSIGNMENT")
@@ -1343,7 +1353,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1343
1353
 
1344
1354
  def writeNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
1345
1355
  child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
1346
- self.logger.debug("write NvBlockNeeds %s" % needs.short_name)
1356
+ self.logger.debug("write NvBlockNeeds %s" % needs.getShortName())
1347
1357
  self.setIdentifiable(child_element, needs)
1348
1358
  self.setChildElementOptionalBooleanValue(child_element, "CALC-RAM-BLOCK-CRC", needs.getCalcRamBlockCrc())
1349
1359
  self.setChildElementOptionalBooleanValue(child_element, "CHECK-STATIC-BLOCK-ID", needs.getCheckStaticBlockId())
@@ -1366,20 +1376,20 @@ class ARXMLWriter(AbstractARXMLWriter):
1366
1376
 
1367
1377
  def writeDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
1368
1378
  child_element = ET.SubElement(element, "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS")
1369
- self.logger.debug("write DiagnosticCommunicationManagerNeeds %s" % needs.short_name)
1379
+ self.logger.debug("write DiagnosticCommunicationManagerNeeds %s" % needs.getShortName())
1370
1380
  self.setIdentifiable(child_element, needs)
1371
1381
  self.setChildElementOptionalLiteral(child_element, "SERVICE-REQUEST-CALLBACK-TYPE", needs.getServiceRequestCallbackType())
1372
1382
 
1373
1383
  def writeDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
1374
1384
  child_element = ET.SubElement(element, "DIAGNOSTIC-ROUTINE-NEEDS")
1375
- self.logger.debug("write DiagnosticRoutineNeeds %s" % needs.short_name)
1385
+ self.logger.debug("write DiagnosticRoutineNeeds %s" % needs.getShortName())
1376
1386
  self.setIdentifiable(child_element, needs)
1377
1387
  self.setChildElementOptionalLiteral(child_element, "DIAG-ROUTINE-TYPE", needs.getDiagRoutineType())
1378
1388
  self.setChildElementOptionalIntegerValue(child_element, "RID-NUMBER", needs.getRidNumber())
1379
1389
 
1380
1390
  def writeDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
1381
1391
  child_element = ET.SubElement(element, "DIAGNOSTIC-VALUE-NEEDS")
1382
- self.logger.debug("write DiagnosticValueNeeds %s" % needs.short_name)
1392
+ self.logger.debug("write DiagnosticValueNeeds %s" % needs.getShortName())
1383
1393
  self.setIdentifiable(child_element, needs)
1384
1394
  self.setChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH", needs.getDataLength())
1385
1395
  self.setChildElementOptionalLiteral(child_element, "DIAGNOSTIC-VALUE-ACCESS", needs.getDiagnosticValueAccess())
@@ -1402,7 +1412,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1402
1412
 
1403
1413
  def writeDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
1404
1414
  child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-NEEDS")
1405
- self.logger.debug("write DiagnosticEventNeeds %s" % needs.short_name)
1415
+ self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
1406
1416
  self.setIdentifiable(child_element, needs)
1407
1417
  self.writeDiagEventDebounceAlgorithm(child_element, needs)
1408
1418
  self.setChildElementOptionalLiteral(child_element, "DTC-KIND", needs.getDtcKind())
@@ -1410,10 +1420,15 @@ class ARXMLWriter(AbstractARXMLWriter):
1410
1420
 
1411
1421
  def writeCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
1412
1422
  child_element = ET.SubElement(element, "CRYPTO-SERVICE-NEEDS")
1413
- self.logger.debug("write CryptoServiceNeeds %s" % needs.short_name)
1423
+ self.logger.debug("write CryptoServiceNeeds %s" % needs.getShortName())
1414
1424
  self.setIdentifiable(child_element, needs)
1415
1425
  self.setChildElementOptionalPositiveInteger(child_element, "MAXIMUM-KEY-LENGTH", needs.getMaximumKeyLength())
1416
1426
 
1427
+ def writeEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
1428
+ child_element = ET.SubElement(element, "ECU-STATE-MGR-USER-NEEDS")
1429
+ self.logger.debug("write EcuStateMgrUserNeeds %s" % needs.getShortName())
1430
+ self.setIdentifiable(child_element, needs)
1431
+
1417
1432
  def writeSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
1418
1433
  needs = parent.getServiceNeeds()
1419
1434
  if len(needs) > 0:
@@ -1431,6 +1446,8 @@ class ARXMLWriter(AbstractARXMLWriter):
1431
1446
  self.writeDiagnosticEventNeeds(child_element, need)
1432
1447
  elif isinstance(need, CryptoServiceNeeds):
1433
1448
  self.writeCryptoServiceNeeds(child_element, need)
1449
+ elif isinstance(need, EcuStateMgrUserNeeds):
1450
+ self.writeEcuStateMgrUserNeeds(child_element, need)
1434
1451
  else:
1435
1452
  self._raiseError("Unsupported service needs <%s>" % type(need))
1436
1453
 
@@ -1464,20 +1481,20 @@ class ARXMLWriter(AbstractARXMLWriter):
1464
1481
  self.setChildElementOptionalRefType(data_type_refs_tag, "DATA-TYPE-REF", type_ref)
1465
1482
 
1466
1483
  def writeSwcInternalBehavior(self, element: ET.Element, behavior: SwcInternalBehavior):
1467
- self.logger.debug("writeSwInternalBehavior %s" % behavior.short_name)
1484
+ self.logger.debug("writeSwInternalBehavior %s" % behavior.getShortName())
1468
1485
 
1469
1486
  child_element = ET.SubElement(element, "SWC-INTERNAL-BEHAVIOR")
1470
1487
  self.writeInternalBehavior(child_element, behavior)
1471
1488
  self.writeRTEEvents(child_element, behavior)
1472
1489
  self.writeExplicitInterRunnableVariables(child_element, behavior)
1473
- self.setChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART", behavior.handle_termination_and_restart)
1490
+ self.setChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART", behavior.handleTerminationAndRestart)
1474
1491
  self.setIncludedDataTypeSets(child_element, behavior.getIncludedDataTypeSets())
1475
1492
  self.writePerInstanceMemories(child_element, behavior)
1476
1493
  self.writePerInstanceParameters(child_element, behavior)
1477
1494
  self.writePortAPIOptions(child_element, behavior)
1478
1495
  self.writeSwcInternalBehaviorRunnableEntities(child_element, behavior)
1479
1496
  self.writeSwcInternalBehaviorServiceDependencies(child_element, behavior)
1480
- self.setChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION", behavior.supports_multiple_instantiation)
1497
+ self.setChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION", behavior.supportsMultipleInstantiation)
1481
1498
 
1482
1499
  def writeAtomicSwComponentTypeInternalBehaviors(self, element: ET.Element, behavior: InternalBehavior):
1483
1500
  if behavior is not None:
@@ -1492,7 +1509,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1492
1509
  self.writeAtomicSwComponentTypeInternalBehaviors(element, sw_component.internal_behavior)
1493
1510
 
1494
1511
  def writeComplexDeviceDriverSwComponentType(self, element: ET.Element, sw_component: ComplexDeviceDriverSwComponentType):
1495
- self.logger.debug("writeComplexDeviceDriverSwComponentType %s" % sw_component.short_name)
1512
+ self.logger.debug("writeComplexDeviceDriverSwComponentType %s" % sw_component.getShortName())
1496
1513
  child_element = ET.SubElement(element, "COMPLEX-DEVICE-DRIVER-SW-COMPONENT-TYPE")
1497
1514
  self.writeAtomicSwComponentType(child_element, sw_component)
1498
1515
 
@@ -1508,7 +1525,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1508
1525
  self.setChildElementOptionalLiteral(artifact_desc_tag, "CATEGORY", artifact_desc.category)
1509
1526
 
1510
1527
  def setCode(self, element: ET.SubElement, code_desc: Code):
1511
- self.logger.debug("setCode %s" % code_desc.short_name)
1528
+ self.logger.debug("setCode %s" % code_desc.getShortName())
1512
1529
  child_element = ET.SubElement(element, "CODE")
1513
1530
  self.setIdentifiable(child_element, code_desc)
1514
1531
  self.writeArtifactDescriptor(child_element, code_desc)
@@ -1542,13 +1559,33 @@ class ARXMLWriter(AbstractARXMLWriter):
1542
1559
  self.setChildElementOptionalNumericalValue(child_element, "SIZE", memory_section.getSize())
1543
1560
  self.setChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF", memory_section.getSwAddrMethodRef())
1544
1561
  self.setChildElementOptionalLiteral(child_element, "SYMBOL", memory_section.getSymbol())
1545
- self.logger.debug("write MemorySection %s" % memory_section.getShortName())
1562
+ self.logger.debug("Write MemorySection %s" % memory_section.getShortName())
1563
+
1564
+ def setStackUsage(self, element: ET.Element, usage: StackUsage):
1565
+ self.logger.debug("Write StackUsage %s" % usage.getShortName())
1566
+ self.setIdentifiable(element, usage)
1567
+
1568
+ def setRoughEstimateStackUsage(self, element: ET.Element, usage: RoughEstimateStackUsage):
1569
+ if usage is not None:
1570
+ child_element = ET.SubElement(element, "ROUGH-ESTIMATE-STACK-USAGE")
1571
+ self.setStackUsage(child_element, usage)
1572
+ self.setChildElementOptionalPositiveInteger(child_element, "MEMORY-CONSUMPTION", usage.getMemoryConsumption())
1573
+
1574
+ def writeStackUsages(self, element: ET.Element, usages: List[StackUsage]):
1575
+ if len(usages) > 0:
1576
+ child_element = ET.SubElement(element, "STACK-USAGES")
1577
+ for usage in usages:
1578
+ if isinstance(usage, RoughEstimateStackUsage):
1579
+ self.setRoughEstimateStackUsage(child_element, usage)
1580
+ else:
1581
+ self.notImplemented("Unsupported Stack Usages: <%s>" % type(usage))
1546
1582
 
1547
1583
  def setResourceConsumption(self, element: ET.Element, consumption: ResourceConsumption):
1548
1584
  if consumption is not None:
1549
1585
  child_element = ET.SubElement(element, "RESOURCE-CONSUMPTION")
1550
1586
  self.setIdentifiable(child_element, consumption)
1551
1587
  self.writeMemorySections(child_element, consumption)
1588
+ self.writeStackUsages(child_element, consumption.getStackUsages())
1552
1589
 
1553
1590
  def writeImplementation(self, element: ET.Element, impl: Implementation):
1554
1591
  self.setIdentifiable(element, impl)
@@ -1561,7 +1598,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1561
1598
  self.setChildElementOptionalNumericalValue(element, "VENDOR-ID", impl.getVendorId())
1562
1599
 
1563
1600
  def writeSwcImplementation(self, element: ET.Element, impl: SwcImplementation):
1564
- self.logger.debug("writeSwcImplementation %s" % impl.short_name)
1601
+ self.logger.debug("writeSwcImplementation %s" % impl.getShortName())
1565
1602
  child_element = ET.SubElement(element, "SWC-IMPLEMENTATION")
1566
1603
  self.writeImplementation(child_element, impl)
1567
1604
  self.setChildElementOptionalRefType(child_element, "BEHAVIOR-REF", impl.getBehaviorRef())
@@ -1627,7 +1664,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1627
1664
  self.setEndToEndProtection(child_element, protection)
1628
1665
 
1629
1666
  def writeEndToEndProtectionSet(self, element: ET.Element, protection_set: EndToEndProtectionSet):
1630
- self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.short_name)
1667
+ self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.getShortName())
1631
1668
  child_element = ET.SubElement(element, "END-TO-END-PROTECTION-SET")
1632
1669
  self.setIdentifiable(child_element, protection_set)
1633
1670
  self.writeEndToEndProtections(child_element, protection_set)
@@ -1637,11 +1674,11 @@ class ARXMLWriter(AbstractARXMLWriter):
1637
1674
  self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
1638
1675
 
1639
1676
  def writeVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
1640
- self.logger.debug("writeVariableDataPrototype %s" % prototype.short_name)
1677
+ self.logger.debug("writeVariableDataPrototype %s" % prototype.getShortName())
1641
1678
  child_element = ET.SubElement(element, "VARIABLE-DATA-PROTOTYPE")
1642
1679
  self.setIdentifiable(child_element, prototype)
1643
1680
  self.setAutosarDataPrototype(child_element, prototype)
1644
- self.setInitValue(child_element, prototype.initValue)
1681
+ self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
1645
1682
 
1646
1683
  def writeSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
1647
1684
  data_elements = sr_interface.getDataElements()
@@ -1663,7 +1700,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1663
1700
  self.setChildElementOptionalLiteral(child_element, "HANDLE-INVALID", policy.getHandleInvalid())
1664
1701
 
1665
1702
  def writeSenderReceiverInterface(self, element: ET.Element, sr_interface: SenderReceiverInterface):
1666
- self.logger.debug("writeSenderReceiverInterface %s" % sr_interface.short_name)
1703
+ self.logger.debug("writeSenderReceiverInterface %s" % sr_interface.getShortName())
1667
1704
  child_element = ET.SubElement(element, "SENDER-RECEIVER-INTERFACE")
1668
1705
  self.setIdentifiable(child_element, sr_interface)
1669
1706
  self.setChildElementOptionalBooleanValue(child_element, "IS-SERVICE", sr_interface.getIsService())
@@ -1717,15 +1754,22 @@ class ARXMLWriter(AbstractARXMLWriter):
1717
1754
  self.writeBswModuleEntityManagedModeGroup(element, entity)
1718
1755
 
1719
1756
  def setBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
1720
- self.logger.debug("setBswCalledEntity %s" % entity.short_name)
1757
+ self.logger.debug("setBswCalledEntity %s" % entity.getShortName())
1721
1758
  child_element = ET.SubElement(element, "BSW-CALLED-ENTITY")
1722
1759
  self.setBswModuleEntity(child_element, entity)
1723
1760
 
1724
1761
  def setBswSchedulableEntity(self, element: ET.Element, entity: BswSchedulableEntity):
1725
- self.logger.debug("setBswCalledEntity %s" % entity.short_name)
1762
+ self.logger.debug("set BswSchedulableEntity %s" % entity.getShortName())
1726
1763
  child_element = ET.SubElement(element, "BSW-SCHEDULABLE-ENTITY")
1727
1764
  self.setBswModuleEntity(child_element, entity)
1728
1765
 
1766
+ def setBswInterruptEntity(self, element: ET.Element, entity: BswInterruptEntity):
1767
+ self.logger.debug("read BswInterruptEntity %s" % entity.getShortName())
1768
+ child_element = ET.SubElement(element, "BSW-INTERRUPT-ENTITY")
1769
+ self.setBswModuleEntity(child_element, entity)
1770
+ self.setChildElementOptionalLiteral(child_element, "INTERRUPT-CATEGORY", entity.getInterruptCategory())
1771
+ self.setChildElementOptionalLiteral(child_element, "INTERRUPT-SOURCE", entity.getInterruptSource())
1772
+
1729
1773
  def writeBswInternalBehaviorBswModuleEntities(self, element: ET.Element, parent: BswInternalBehavior):
1730
1774
  entities = parent.getBswModuleEntities()
1731
1775
  if len(entities) > 0:
@@ -1735,8 +1779,10 @@ class ARXMLWriter(AbstractARXMLWriter):
1735
1779
  self.setBswCalledEntity(child_element, entity)
1736
1780
  elif isinstance(entity, BswSchedulableEntity):
1737
1781
  self.setBswSchedulableEntity(child_element, entity)
1782
+ elif isinstance(entity, BswInterruptEntity):
1783
+ self.setBswInterruptEntity(child_element, entity)
1738
1784
  else:
1739
- self._raiseError("Unsupported BswModuleEntity <%s>" % type(entity))
1785
+ self.notImplemented("Unsupported BswModuleEntity <%s>" % type(entity))
1740
1786
 
1741
1787
  def setBswEvent(self, element: ET.Element, event: BswEvent):
1742
1788
  self.setIdentifiable(element, event)
@@ -1746,7 +1792,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1746
1792
  self.setBswEvent(element, event)
1747
1793
 
1748
1794
  def setBswTimingEvent(self, element: ET.Element, event: BswTimingEvent):
1749
- self.logger.debug("setBswTimingEvent %s" % event.short_name)
1795
+ self.logger.debug("setBswTimingEvent %s" % event.getShortName())
1750
1796
  child_element = ET.SubElement(element, "BSW-TIMING-EVENT")
1751
1797
  self.setBswScheduleEvent(child_element, event)
1752
1798
  self.setChildElementOptionalTimeValue(child_element, "PERIOD", event.getPeriod())
@@ -1804,10 +1850,10 @@ class ARXMLWriter(AbstractARXMLWriter):
1804
1850
  self._raiseError("Unsupported BswInternalBehavior <%s>" % type(behavior))
1805
1851
 
1806
1852
  def writeBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
1807
- self.logger.debug("writeBswModuleDescription %s" % desc.short_name)
1853
+ self.logger.debug("writeBswModuleDescription %s" % desc.getShortName())
1808
1854
  child_element = ET.SubElement(element, "BSW-MODULE-DESCRIPTION")
1809
1855
  self.setIdentifiable(child_element, desc)
1810
- self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.module_id)
1856
+ self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.getModuleId())
1811
1857
  self.writerBswModuleDescriptionImplementedEntry(child_element, desc)
1812
1858
  self.writeProvidedModeGroup(child_element, desc)
1813
1859
  #self.readRequiredModeGroup(element, bsw_module_description)
@@ -1821,22 +1867,37 @@ class ARXMLWriter(AbstractARXMLWriter):
1821
1867
  child_element = ET.SubElement(mode_groups_tag, "MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL")
1822
1868
  self.setChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF", mode_group_ref)
1823
1869
 
1870
+ def setSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
1871
+ self.logger.debug("Set SwServiceArg <%s>" % arg.getShortName())
1872
+ if arg is not None:
1873
+ child_element = ET.SubElement(element, "SW-SERVICE-ARG")
1874
+ self.setIdentifiable(child_element, arg)
1875
+ self.setChildElementOptionalLiteral(child_element, "DIRECTION", arg.getDirection())
1876
+ self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", arg.getSwDataDefProps())
1877
+
1878
+ def writeBswModuleEntryArguments(self, element: ET.Element, entry: BswModuleEntry):
1879
+ arguments = entry.getArguments()
1880
+ if len(arguments) > 0:
1881
+ child_element = ET.SubElement(element, "ARGUMENTS")
1882
+ for argument in arguments:
1883
+ self.setSwServiceArg(child_element, argument)
1884
+
1824
1885
  def writeBswModuleEntry(self, element: ET.Element, entry: BswModuleEntry):
1825
- self.logger.debug("writeBswModuleDescription %s" % entry.short_name)
1886
+ self.logger.debug("writeBswModuleDescription %s" % entry.getShortName())
1826
1887
  child_element = ET.SubElement(element, "BSW-MODULE-ENTRY")
1827
1888
  self.setIdentifiable(child_element, entry)
1828
- self.setChildElementOptionalNumericalValue(child_element, "SERVICE-ID", entry.service_id)
1829
- self.setChildElementOptionalBooleanValue(child_element, "IS-REENTRANT", entry.is_reentrant)
1830
- self.setChildElementOptionalBooleanValue(child_element, "IS-SYNCHRONOUS", entry.is_synchronous)
1831
- self.setChildElementOptionalLiteral(child_element, "CALL-TYPE", entry.call_type)
1832
- self.setChildElementOptionalLiteral(child_element, "EXECUTION-CONTEXT", entry.execution_context)
1833
- self.setChildElementOptionalLiteral(child_element, "SW-SERVICE-IMPL-POLICY", entry.sw_service_impl_policy)
1834
-
1889
+ self.setChildElementOptionalNumericalValue(child_element, "SERVICE-ID", entry.getServiceId())
1890
+ self.setChildElementOptionalBooleanValue(child_element, "IS-REENTRANT", entry.getIsReentrant())
1891
+ self.setChildElementOptionalBooleanValue(child_element, "IS-SYNCHRONOUS", entry.getIsSynchronous())
1892
+ self.setChildElementOptionalLiteral(child_element, "CALL-TYPE", entry.getCallType())
1893
+ self.setChildElementOptionalLiteral(child_element, "EXECUTION-CONTEXT", entry.getExecutionContext())
1894
+ self.setChildElementOptionalLiteral(child_element, "SW-SERVICE-IMPL-POLICY", entry.getSwServiceImplPolicy())
1895
+ self.writeBswModuleEntryArguments(child_element, entry)
1835
1896
 
1836
1897
  def setSwcBswRunnableMapping(self, element: ET.SubElement, mapping: SwcBswRunnableMapping):
1837
1898
  child_element = ET.SubElement(element, "SWC-BSW-RUNNABLE-MAPPING")
1838
- self.setChildElementOptionalRefType(child_element, "BSW-ENTITY-REF", mapping.bswEntityRef)
1839
- self.setChildElementOptionalRefType(child_element, "SWC-RUNNABLE-REF", mapping.swcRunnableRef)
1899
+ self.setChildElementOptionalRefType(child_element, "BSW-ENTITY-REF", mapping.getBswEntityRef())
1900
+ self.setChildElementOptionalRefType(child_element, "SWC-RUNNABLE-REF", mapping.getSwcRunnableRef())
1840
1901
 
1841
1902
  def writeSwcBswRunnableMappings(self, element: ET.Element, parent: SwcBswMapping):
1842
1903
  runnable_mappings = parent.getRunnableMappings()
@@ -1849,12 +1910,12 @@ class ARXMLWriter(AbstractARXMLWriter):
1849
1910
  self._raiseError("Unsupported Runnable Mapping <%s>" % type(mapping))
1850
1911
 
1851
1912
  def setSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
1852
- self.logger.debug("writeBswModuleDescription %s" % mapping.short_name)
1913
+ self.logger.debug("writeBswModuleDescription %s" % mapping.getShortName())
1853
1914
  child_element = ET.SubElement(element, "SWC-BSW-MAPPING")
1854
1915
  self.setIdentifiable(child_element, mapping)
1855
- self.setChildElementOptionalRefType(child_element, "BSW-BEHAVIOR-REF", mapping.bswBehaviorRef)
1916
+ self.setChildElementOptionalRefType(child_element, "BSW-BEHAVIOR-REF", mapping.getBswBehaviorRef())
1856
1917
  self.writeSwcBswRunnableMappings(child_element, mapping)
1857
- self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.swcBehaviorRef)
1918
+ self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.getSwcBehaviorRef())
1858
1919
 
1859
1920
  def writeEngineeringObject(self, element: ET.Element, engineering_obj: EngineeringObject):
1860
1921
  self.setARObjectAttributes(element, engineering_obj)
@@ -1885,7 +1946,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1885
1946
  self.setChildElementOptionalRefType(child_element, "VENDOR-SPECIFIC-MODULE-DEF-REF", ref)
1886
1947
 
1887
1948
  def writeBswImplementation(self, element: ET.Element, impl: BswImplementation):
1888
- self.logger.debug("writeBswModuleDescription %s" % impl.short_name)
1949
+ self.logger.debug("writeBswModuleDescription %s" % impl.getShortName())
1889
1950
  child_element = ET.SubElement(element, "BSW-IMPLEMENTATION")
1890
1951
  self.writeImplementation(child_element, impl)
1891
1952
  self.setChildElementOptionalLiteral(child_element, "AR-RELEASE-VERSION", impl.getArReleaseVersion())
@@ -1906,7 +1967,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1906
1967
  self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", type_element.getSwDataDefProps())
1907
1968
 
1908
1969
  def writeImplementationDataType(self, element: ET.Element, data_type: ImplementationDataType):
1909
- self.logger.debug("writeImplementationDataType %s" % data_type.short_name)
1970
+ self.logger.debug("writeImplementationDataType %s" % data_type.getShortName())
1910
1971
  child_element = ET.SubElement(element, "IMPLEMENTATION-DATA-TYPE")
1911
1972
  self.setAutosarDataType(child_element, data_type)
1912
1973
  self.setChildElementOptionalLiteral(child_element, "DYNAMIC-ARRAY-SIZE-PROFILE", data_type.getDynamicArraySizeProfile())
@@ -1923,7 +1984,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1923
1984
  self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
1924
1985
  self.setChildElementOptionalRefType(child_element, "TYPE-TREF", prototype.typeTRef)
1925
1986
  self.setChildElementOptionalLiteral(child_element, "DIRECTION", prototype.direction)
1926
- self.setChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY", prototype.server_argument_impl_policy)
1987
+ self.setChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY", prototype.serverArgumentImplPolicy)
1927
1988
 
1928
1989
  def writePossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
1929
1990
  error_refs = parent.getPossbileErrorRefs()
@@ -1933,7 +1994,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1933
1994
  self.setChildElementOptionalRefType(error_refs_tag, "POSSIBLE-ERROR-REF", error_ref)
1934
1995
 
1935
1996
  def writeClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
1936
- self.logger.debug("writeClientServerOperation %s" % operation.short_name)
1997
+ self.logger.debug("writeClientServerOperation %s" % operation.getShortName())
1937
1998
  child_element = ET.SubElement(element, "CLIENT-SERVER-OPERATION")
1938
1999
  self.setIdentifiable(child_element, operation)
1939
2000
  self.writeArgumentDataPrototypes(child_element, operation)
@@ -1950,7 +2011,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1950
2011
  self._raiseError("Unsupported Operation <%s>" % type(operation))
1951
2012
 
1952
2013
  def writeApplicationError(self, element: ET.Element, error: ApplicationError):
1953
- self.logger.debug("writeApplicationError %s" % error.short_name)
2014
+ self.logger.debug("writeApplicationError %s" % error.getShortName())
1954
2015
  child_element = ET.SubElement(element, "APPLICATION-ERROR")
1955
2016
  self.setIdentifiable(child_element, error)
1956
2017
  self.setChildElementOptionalNumericalValue(child_element, "ERROR-CODE", error.error_code)
@@ -1978,25 +2039,25 @@ class ARXMLWriter(AbstractARXMLWriter):
1978
2039
  self.writeParameterDataPrototype(child_element, prototype)
1979
2040
 
1980
2041
  def writeParameterInterface(self, element: ET.Element, param_interface: ParameterInterface):
1981
- self.logger.debug("Write ParameterInterface %s" % param_interface.short_name)
2042
+ self.logger.debug("Write ParameterInterface %s" % param_interface.getShortName())
1982
2043
  child_element = ET.SubElement(element, "PARAMETER-INTERFACE")
1983
2044
  self.setPortInterface(child_element, param_interface)
1984
2045
  self.writeParameterInterfaceParameters(child_element, param_interface)
1985
2046
 
1986
2047
  def writeClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
1987
- self.logger.debug("writeClientServerInterface %s" % cs_interface.short_name)
2048
+ self.logger.debug("writeClientServerInterface %s" % cs_interface.getShortName())
1988
2049
  child_element = ET.SubElement(element, "CLIENT-SERVER-INTERFACE")
1989
2050
  self.setPortInterface(child_element, cs_interface)
1990
2051
  self.writeOperations(child_element, cs_interface)
1991
2052
  self.writePossibleErrors(child_element, cs_interface)
1992
2053
 
1993
2054
  def writeApplicationSwComponentType(self, element: ET.Element, sw_component: ApplicationSwComponentType):
1994
- self.logger.debug("writeApplicationSwComponentType %s" % sw_component.short_name)
2055
+ self.logger.debug("writeApplicationSwComponentType %s" % sw_component.getShortName())
1995
2056
  child_element = ET.SubElement(element, "APPLICATION-SW-COMPONENT-TYPE")
1996
2057
  self.writeAtomicSwComponentType(child_element, sw_component)
1997
2058
 
1998
2059
  def writeEcuAbstractionSwComponentType(self, element: ET.Element, sw_component: EcuAbstractionSwComponentType):
1999
- self.logger.debug("writeEcuAbstractionSwComponentType %s" % sw_component.short_name)
2060
+ self.logger.debug("writeEcuAbstractionSwComponentType %s" % sw_component.getShortName())
2000
2061
  child_element = ET.SubElement(element, "ECU-ABSTRACTION-SW-COMPONENT-TYPE")
2001
2062
  self.writeAtomicSwComponentType(child_element, sw_component)
2002
2063
 
@@ -2008,7 +2069,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2008
2069
  self.setChildElementOptionalNumericalValue(child_element, "MAX-NUMBER-OF-ELEMENTS", prototype.maxNumberOfElements)
2009
2070
 
2010
2071
  def writeApplicationArrayDataType(self, element: ET.Element, data_type: ApplicationArrayDataType):
2011
- self.logger.debug("writeApplicationArrayDataType %s" % data_type.short_name)
2072
+ self.logger.debug("writeApplicationArrayDataType %s" % data_type.getShortName())
2012
2073
  child_element = ET.SubElement(element, "APPLICATION-ARRAY-DATA-TYPE")
2013
2074
  self.setApplicationCompositeDataType(child_element, data_type)
2014
2075
  self.setApplicationArrayElement(child_element, data_type.element)
@@ -2037,13 +2098,13 @@ class ARXMLWriter(AbstractARXMLWriter):
2037
2098
  return group
2038
2099
 
2039
2100
  def writeSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
2040
- self.logger.debug("writeSwRecordLayout %s" % layout.short_name)
2101
+ self.logger.debug("writeSwRecordLayout %s" % layout.getShortName())
2041
2102
  child_element = ET.SubElement(element, "SW-RECORD-LAYOUT")
2042
2103
  self.setIdentifiable(child_element, layout)
2043
2104
  self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", layout.getSwRecordLayoutGroup())
2044
2105
 
2045
2106
  def writeSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
2046
- self.logger.debug("writeSwAddrMethod %s" % method.short_name)
2107
+ self.logger.debug("writeSwAddrMethod %s" % method.getShortName())
2047
2108
  child_element = ET.SubElement(element, "SW-ADDR-METHOD")
2048
2109
  self.setIdentifiable(child_element, method)
2049
2110
  self.setChildElementOptionalLiteral(child_element, "MEMORY-ALLOCATION-KEYWORD-POLICY", method.getMemoryAllocationKeywordPolicy())
@@ -2056,11 +2117,11 @@ class ARXMLWriter(AbstractARXMLWriter):
2056
2117
  self.setChildElementOptionalLiteral(child_element, "SECTION-TYPE", method.getSectionType())
2057
2118
 
2058
2119
  def writeTriggerInterface(self, element: ET.Element, trigger_if: TriggerInterface):
2059
- self.logger.debug("writeTriggerInterface %s" % trigger_if.short_name)
2120
+ self.logger.debug("writeTriggerInterface %s" % trigger_if.getShortName())
2060
2121
  child_element = ET.SubElement(element, "TRIGGER-INTERFACE")
2061
2122
 
2062
2123
  def writeServiceSwComponentType(self, element: ET.Element, sw_component: ServiceSwComponentType):
2063
- self.logger.debug("writeServiceSwComponentType %s" % sw_component.short_name)
2124
+ self.logger.debug("writeServiceSwComponentType %s" % sw_component.getShortName())
2064
2125
  child_element = ET.SubElement(element, "SERVICE-SW-COMPONENT-TYPE")
2065
2126
  self.writeAtomicSwComponentType(child_element, sw_component)
2066
2127
 
@@ -2085,7 +2146,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2085
2146
  self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", map.getModeGroupRef())
2086
2147
 
2087
2148
  def writeDataTypeMappingSet(self, element: ET.Element, mapping_set: DataTypeMappingSet):
2088
- self.logger.debug("writeDataTypeMappingSet %s" % mapping_set.short_name)
2149
+ self.logger.debug("writeDataTypeMappingSet %s" % mapping_set.getShortName())
2089
2150
  child_element = ET.SubElement(element, "DATA-TYPE-MAPPING-SET")
2090
2151
  self.setIdentifiable(child_element, mapping_set)
2091
2152
  self.writeDataTypeMaps(child_element, mapping_set)
@@ -2104,7 +2165,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2104
2165
  self.setModeDeclaration(child_element, mode_declaration)
2105
2166
 
2106
2167
  def writeModeDeclarationGroup(self, element: ET.Element, group: ModeDeclarationGroup):
2107
- self.logger.debug("writeModeDeclarationGroup %s" % group.short_name)
2168
+ self.logger.debug("writeModeDeclarationGroup %s" % group.getShortName())
2108
2169
  child_element = ET.SubElement(element, "MODE-DECLARATION-GROUP")
2109
2170
  self.setIdentifiable(child_element, group)
2110
2171
  self.setChildElementOptionalRefType(child_element, "INITIAL-MODE-REF", group.initialModeRef)
@@ -2120,7 +2181,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2120
2181
  self.setChildElementOptionalRefType(child_element, "TYPE-TREF", mode_group.type_tref)
2121
2182
 
2122
2183
  def writeModeSwitchInterface(self, element: ET.Element, mode_interface: ModeSwitchInterface):
2123
- self.logger.debug("writeModeSwitchInterface %s" % mode_interface.short_name)
2184
+ self.logger.debug("writeModeSwitchInterface %s" % mode_interface.getShortName())
2124
2185
  child_element = ET.SubElement(element, "MODE-SWITCH-INTERFACE")
2125
2186
  self.setPortInterface(child_element, mode_interface)
2126
2187
  self.writeModeSwitchInterfaceModeGroup(child_element, mode_interface)
@@ -2147,7 +2208,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2147
2208
  self._raiseError("Unsupported order element <%s>" % type(order_element))
2148
2209
 
2149
2210
  def writeExecutionOrderConstraint(self, element: ET.Element, constraint: ExecutionOrderConstraint):
2150
- self.logger.debug("writeExecutionOrderConstraint %s" % constraint.short_name)
2211
+ self.logger.debug("writeExecutionOrderConstraint %s" % constraint.getShortName())
2151
2212
  child_element = ET.SubElement(element, "EXECUTION-ORDER-CONSTRAINT")
2152
2213
  self.setIdentifiable(child_element, constraint)
2153
2214
  self.writeExecutionOrderConstraintOrderedElement(child_element, constraint)
@@ -2166,7 +2227,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2166
2227
  self.writeTimingRequirements(element, extension)
2167
2228
 
2168
2229
  def writeSwcTiming(self, element: ET.Element, timing: SwcTiming):
2169
- self.logger.debug("writeSWcTiming %s" % timing.short_name)
2230
+ self.logger.debug("writeSWcTiming %s" % timing.getShortName())
2170
2231
  child_element = ET.SubElement(element, "SWC-TIMING")
2171
2232
  self.setIdentifiable(child_element, timing)
2172
2233
  self.writeTimingExtension(child_element, timing)
@@ -2188,7 +2249,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2188
2249
  self.writePduToFrameMappings(element, frame)
2189
2250
 
2190
2251
  def writeLinUnconditionalFrame(self, element: ET.Element, frame: LinUnconditionalFrame):
2191
- self.logger.debug("LinUnconditionalFrame %s" % frame.short_name)
2252
+ self.logger.debug("LinUnconditionalFrame %s" % frame.getShortName())
2192
2253
  child_element = ET.SubElement(element, "LIN-UNCONDITIONAL-FRAME")
2193
2254
  self.writeFrame(child_element, frame)
2194
2255
 
@@ -2210,7 +2271,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2210
2271
  self.setChildElementOptionalRefType(refs_tag, "TX-NM-PDU-REF", ref)
2211
2272
 
2212
2273
  def writeCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
2213
- self.logger.debug("writeCanNmNode %s" % nm_node.short_name)
2274
+ self.logger.debug("writeCanNmNode %s" % nm_node.getShortName())
2214
2275
  child_element = ET.SubElement(element, "CAN-NM-NODE")
2215
2276
  self.setIdentifiable(child_element, nm_node)
2216
2277
  self.writeNmNode(child_element, nm_node)
@@ -2259,7 +2320,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2259
2320
  self.setChildElementOptionalBooleanValue(element, "NM-SYNCHRONIZING-NETWORK", cluster.getNmSynchronizingNetwork())
2260
2321
 
2261
2322
  def writeCanNmCluster(self, element: ET.Element, cluster: CanNmCluster):
2262
- self.logger.debug("WriteCanNmCluster %s" % cluster.short_name)
2323
+ self.logger.debug("WriteCanNmCluster %s" % cluster.getShortName())
2263
2324
  child_element = ET.SubElement(element, "CAN-NM-CLUSTER")
2264
2325
  self.setIdentifiable(child_element, cluster)
2265
2326
  self.writeNmCluster(child_element, cluster)
@@ -2290,20 +2351,20 @@ class ARXMLWriter(AbstractARXMLWriter):
2290
2351
  self._raiseError("Unsupported Nm Cluster <%s>" % type(cluster))
2291
2352
 
2292
2353
  def writeNmConfig(self, element: ET.Element, config: NmConfig):
2293
- self.logger.debug("WriteNmConfig %s" % config.short_name)
2354
+ self.logger.debug("WriteNmConfig %s" % config.getShortName())
2294
2355
  child_element = ET.SubElement(element, "NM-CONFIG")
2295
2356
  self.setIdentifiable(child_element, config)
2296
2357
  self.writeNmConfigNmClusters(child_element, config)
2297
2358
  self.writeNmConfigNmClusterCouplings(child_element, config)
2298
2359
 
2299
2360
  def writeNmPdu(self, element: ET.Element, pdu: NmPdu):
2300
- self.logger.debug("NmPdu %s" % pdu.short_name)
2361
+ self.logger.debug("NmPdu %s" % pdu.getShortName())
2301
2362
  child_element = ET.SubElement(element, "NM-PDU")
2302
2363
  self.setIdentifiable(child_element, pdu)
2303
2364
  self.writeIPdu(child_element, pdu)
2304
2365
 
2305
2366
  def writeNPdu(self, element: ET.Element, pdu: NPdu):
2306
- self.logger.debug("NPdu %s" % pdu.short_name)
2367
+ self.logger.debug("NPdu %s" % pdu.getShortName())
2307
2368
  child_element = ET.SubElement(element, "N-PDU")
2308
2369
  self.setIdentifiable(child_element, pdu)
2309
2370
  self.writeIPdu(child_element, pdu)
@@ -2312,20 +2373,20 @@ class ARXMLWriter(AbstractARXMLWriter):
2312
2373
  self.setChildElementOptionalLiteral(element, "LENGTH", pdu.getLength())
2313
2374
 
2314
2375
  def writeDcmIPdu(self, element: ET.Element, pdu: DcmIPdu):
2315
- self.logger.debug("DcmIPdu %s" % pdu.short_name)
2376
+ self.logger.debug("DcmIPdu %s" % pdu.getShortName())
2316
2377
  child_element = ET.SubElement(element, "DCM-I-PDU")
2317
2378
  self.setIdentifiable(child_element, pdu)
2318
2379
  self.writeIPdu(child_element, pdu)
2319
2380
  self.setChildElementOptionalLiteral(child_element, "DIAG-PDU-TYPE", pdu.getDiagPduType())
2320
2381
 
2321
2382
  def writeSecuredIPdu(self, element: ET.Element, pdu: DcmIPdu):
2322
- self.logger.debug("SecuredIPdu %s" % pdu.short_name)
2383
+ self.logger.debug("SecuredIPdu %s" % pdu.getShortName())
2323
2384
  child_element = ET.SubElement(element, "SECURED-I-PDU")
2324
2385
  self.setIdentifiable(child_element, pdu)
2325
2386
  self.writeIPdu(child_element, pdu)
2326
2387
 
2327
2388
  def writeCanTpConfig(self, element: ET.Element, config: CanTpConfig):
2328
- self.logger.debug("CanTpConfig %s" % config.short_name)
2389
+ self.logger.debug("CanTpConfig %s" % config.getShortName())
2329
2390
  child_element = ET.SubElement(element, "CAN-TP-CONFIG")
2330
2391
  self.setIdentifiable(child_element, config)
2331
2392
 
@@ -2432,13 +2493,13 @@ class ARXMLWriter(AbstractARXMLWriter):
2432
2493
  self.notImplemented("Unsupported PduTriggering <%s>" % type(triggering))
2433
2494
 
2434
2495
  def writeCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
2435
- self.logger.debug("CanPhysicalChannel %s" % channel.short_name)
2496
+ self.logger.debug("CanPhysicalChannel %s" % channel.getShortName())
2436
2497
  child_element = ET.SubElement(element, "CAN-PHYSICAL-CHANNEL")
2437
2498
  self.setIdentifiable(child_element, channel)
2438
2499
  self.writePhysicalChannel(child_element, channel)
2439
2500
 
2440
2501
  def writeLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
2441
- self.logger.debug("LinPhysicalChannel %s" % channel.short_name)
2502
+ self.logger.debug("LinPhysicalChannel %s" % channel.getShortName())
2442
2503
  child_element = ET.SubElement(element, "LIN-PHYSICAL-CHANNEL")
2443
2504
  self.setIdentifiable(child_element, channel)
2444
2505
  self.writePhysicalChannel(child_element, channel)
@@ -2466,7 +2527,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2466
2527
  self.setChildElementOptionalNumericalValue(element, "SPEED", cluster.getSpeed())
2467
2528
 
2468
2529
  def writeLinCluster(self, element: ET.Element, cluster: LinCluster):
2469
- self.logger.debug("LinCluster %s" % cluster.short_name)
2530
+ self.logger.debug("LinCluster %s" % cluster.getShortName())
2470
2531
  child_element = ET.SubElement(element, "LIN-CLUSTER")
2471
2532
  self.setIdentifiable(child_element, cluster)
2472
2533
  child_element = ET.SubElement(child_element, "LIN-CLUSTER-VARIANTS")
@@ -2474,7 +2535,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2474
2535
  self.writeCommunicationCluster(child_element, cluster)
2475
2536
 
2476
2537
  def writeCanCluster(self, element: ET.Element, cluster: CanCluster):
2477
- self.logger.debug("CanCluster %s" % cluster.short_name)
2538
+ self.logger.debug("CanCluster %s" % cluster.getShortName())
2478
2539
  child_element = ET.SubElement(element, "CAN-CLUSTER")
2479
2540
  self.setIdentifiable(child_element, cluster)
2480
2541
 
@@ -2484,7 +2545,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2484
2545
  self.readAbstractCanCluster(child_element, cluster)
2485
2546
 
2486
2547
  def writeCanFrame(self, element: ET.Element, frame: CanFrame):
2487
- self.logger.debug("Write CanFrame %s" % frame.short_name)
2548
+ self.logger.debug("Write CanFrame %s" % frame.getShortName())
2488
2549
  child_element = ET.SubElement(element, "CAN-FRAME")
2489
2550
  self.writeFrame(child_element, frame)
2490
2551
 
@@ -2556,7 +2617,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2556
2617
  self._raiseError("Unsupported Communication connector <%s>" % type(connector))
2557
2618
 
2558
2619
  def writeEcuInstance(self, element: ET.Element, instance: EcuInstance):
2559
- self.logger.debug("EcuInstance %s" % instance.short_name)
2620
+ self.logger.debug("EcuInstance %s" % instance.getShortName())
2560
2621
  child_element = ET.SubElement(element, "ECU-INSTANCE")
2561
2622
  self.setIdentifiable(child_element, instance)
2562
2623
  self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-GW-TIME-BASE", instance.getComConfigurationGwTimeBase())
@@ -2569,7 +2630,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2569
2630
  self.setChildElementOptionalBooleanValue(child_element, "WAKE-UP-OVER-BUS-SUPPORTED", instance.getWakeUpOverBusSupported())
2570
2631
 
2571
2632
  def writeSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
2572
- self.logger.debug("Write SystemSignalGroup %s" % group.short_name)
2633
+ self.logger.debug("Write SystemSignalGroup %s" % group.getShortName())
2573
2634
  child_element = ET.SubElement(element, "SYSTEM-SIGNAL-GROUP")
2574
2635
  self.setIdentifiable(child_element, group)
2575
2636
  signal_refs = group.getSystemSignalRefs()
@@ -2580,6 +2641,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2580
2641
 
2581
2642
  def setSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
2582
2643
  child_element = ET.SubElement(element, "SENDER-RECEIVER-TO-SIGNAL-MAPPING")
2644
+ self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", mapping.getCommunicationDirection())
2583
2645
  self.setVariableDataPrototypeInSystemInstanceRef(child_element, "DATA-ELEMENT-IREF", mapping.getDataElementIRef())
2584
2646
  self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", mapping.getSystemSignalRef())
2585
2647
 
@@ -2621,7 +2683,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2621
2683
  self.notImplemented("Unsupported Sw Mapping %s" % type(sw_mapping))
2622
2684
 
2623
2685
  def writeSystemMapping(self, element: ET.Element, mapping: SystemMapping):
2624
- self.logger.debug("Write SystemMapping %s" % mapping.short_name)
2686
+ self.logger.debug("Write SystemMapping %s" % mapping.getShortName())
2625
2687
  child_element = ET.SubElement(element, "SYSTEM-MAPPING")
2626
2688
  self.setIdentifiable(child_element, mapping)
2627
2689
  self.writeSystemMappingDataMappings(child_element, mapping)
@@ -2644,10 +2706,11 @@ class ARXMLWriter(AbstractARXMLWriter):
2644
2706
  child_element = ET.SubElement(element, "ROOT-SOFTWARE-COMPOSITIONS")
2645
2707
  child_element = ET.SubElement(child_element, "ROOT-SW-COMPOSITION-PROTOTYPE")
2646
2708
  self.setIdentifiable(child_element, prototype)
2709
+ self.setChildElementOptionalRefType(child_element, "FLAT-MAP-REF", prototype.getFlatMapRef())
2647
2710
  self.setChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF", prototype.getSoftwareCompositionTRef())
2648
2711
 
2649
2712
  def writeSystem(self, element: ET.Element, system: System):
2650
- self.logger.debug("Write System %s" % system.short_name)
2713
+ self.logger.debug("Write System %s" % system.getShortName())
2651
2714
  child_element = ET.SubElement(element, "SYSTEM")
2652
2715
  self.setARElement(child_element, system)
2653
2716
 
@@ -2663,14 +2726,70 @@ class ARXMLWriter(AbstractARXMLWriter):
2663
2726
  self.writeRootSwCompositionPrototype(child_element, system)
2664
2727
  self.setChildElementOptionalRevisionLabelString(child_element, "SYSTEM-VERSION", system.getSystemVersion())
2665
2728
 
2666
- def writePhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
2667
- self.logger.debug("Write PhysicalDimension %s" % dimension.short_name)
2729
+ def setPhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
2730
+ self.logger.debug("Set PhysicalDimension %s" % dimension.getShortName())
2668
2731
  child_element = ET.SubElement(element, "PHYSICAL-DIMENSION")
2669
2732
  self.setARElement(child_element, dimension)
2670
2733
  self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
2671
2734
  self.setChildElementOptionalNumericalValue(child_element, "LENGTH-EXP", dimension.getLengthExp())
2672
2735
  self.setChildElementOptionalNumericalValue(child_element, "TIME-EXP", dimension.getTimeExp())
2673
2736
 
2737
+ def setFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
2738
+ self.logger.debug("Set FlatInstanceDescriptor %s" % desc.getShortName())
2739
+ child_element = ET.SubElement(element, "FLAT-INSTANCE-DESCRIPTOR")
2740
+ self.setIdentifiable(child_element, desc)
2741
+ self.setAnyInstanceRef(child_element, "UPSTREAM-REFERENCE-IREF", desc.getUpstreamReferenceIRef())
2742
+ self.setAnyInstanceRef(child_element, "ECU-EXTRACT-REFERENCE-IREF", desc.getEcuExtractReferenceIRef())
2743
+
2744
+ def writeFlatMapInstances(self, element: ET.Element, map: FlatMap):
2745
+ instances = map.getInstances()
2746
+ if len(instances) > 0:
2747
+ child_element = ET.SubElement(element, "INSTANCES")
2748
+ for instance in instances:
2749
+ if isinstance(instance, FlatInstanceDescriptor):
2750
+ self.setFlatInstanceDescriptor(child_element, instance)
2751
+ else:
2752
+ self.notImplemented("Unsupported Flat Map Instances <%s>" % type(instance))
2753
+
2754
+ def setFlatMap(self, element: ET.Element, map: FlatMap):
2755
+ self.logger.debug("Set FlatMap %s" % map.getShortName())
2756
+ child_element = ET.SubElement(element, "FLAT-MAP")
2757
+ self.setARElement(child_element, map)
2758
+ self.writeFlatMapInstances(child_element, map)
2759
+
2760
+ def setDataPrototypeMapping(self, element: ET.Element, mapping: DataPrototypeMapping):
2761
+ child_element = ET.SubElement(element, "DATA-PROTOTYPE-MAPPING")
2762
+ self.setChildElementOptionalRefType(child_element, "FIRST-DATA-PROTOTYPE-REF", mapping.getFirstDataPrototypeRef())
2763
+ self.setChildElementOptionalRefType(child_element, "SECOND-DATA-PROTOTYPE-REF", mapping.getSecondDataPrototypeRef())
2764
+
2765
+ def setDataPrototypeMappings(self, element: ET.Element, key: str, mappings: List[DataPrototypeMapping]):
2766
+ if len(mappings) > 0:
2767
+ child_element = ET.SubElement(element, key)
2768
+ for mapping in mappings:
2769
+ self.setDataPrototypeMapping(child_element, mapping)
2770
+
2771
+ def setVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
2772
+ self.logger.debug("set VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
2773
+ child_element = ET.SubElement(element, "VARIABLE-AND-PARAMETER-INTERFACE-MAPPING")
2774
+ self.setIdentifiable(child_element, mapping)
2775
+ self.setDataPrototypeMappings(child_element, "DATA-MAPPINGS", mapping.getDataMappings())
2776
+
2777
+ def writePortInterfaceMappings(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
2778
+ mappings = mapping_set.getPortInterfaceMappings()
2779
+ if len(mappings) > 0:
2780
+ child_element = ET.SubElement(element, "PORT-INTERFACE-MAPPINGS")
2781
+ for mapping in mappings:
2782
+ if isinstance(mapping, VariableAndParameterInterfaceMapping):
2783
+ self.setVariableAndParameterInterfaceMapping(child_element, mapping)
2784
+ else:
2785
+ self.notImplemented("Unsupported PortInterfaceMapping <%s>" % type(mapping))
2786
+
2787
+ def setPortInterfaceMappingSet(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
2788
+ self.logger.debug("Set PortInterfaceMappingSet %s" % mapping_set.getShortName())
2789
+ child_element = ET.SubElement(element, "PORT-INTERFACE-MAPPING-SET")
2790
+ self.setARElement(child_element, mapping_set)
2791
+ self.writePortInterfaceMappings(child_element, mapping_set)
2792
+
2674
2793
  def setISignalMappings(self, element: ET.Element, mappings: List[ISignalMapping]):
2675
2794
  if len(mappings) > 0:
2676
2795
  mappings_tag = ET.SubElement(element, "SIGNAL-MAPPINGS")
@@ -2680,21 +2799,21 @@ class ARXMLWriter(AbstractARXMLWriter):
2680
2799
  self.setChildElementOptionalRefType(child_element, "TARGET-SIGNAL-REF", mapping.targetSignalRef)
2681
2800
 
2682
2801
  def writeGateway(self, element: ET.Element, gateway: Gateway):
2683
- self.logger.debug("Gateway %s" % gateway.short_name)
2802
+ self.logger.debug("Gateway %s" % gateway.getShortName())
2684
2803
  child_element = ET.SubElement(element, "GATEWAY")
2685
2804
  self.setIdentifiable(child_element, gateway)
2686
2805
  self.setChildElementOptionalRefType(child_element, "ECU-REF", gateway.ecuRef)
2687
2806
  self.setISignalMappings(child_element, gateway.getSignalMappings())
2688
2807
 
2689
2808
  def writeISignal(self, element: ET.Element, signal: ISignal):
2690
- self.logger.debug("ISignal %s" % signal.short_name)
2809
+ self.logger.debug("ISignal %s" % signal.getShortName())
2691
2810
  child_element = ET.SubElement(element, "I-SIGNAL")
2692
2811
  self.setIdentifiable(child_element, signal)
2693
- self.setChildElementOptionalLiteral(child_element, "DATA-TYPE-POLICY", signal.dataTypePolicy)
2694
- self.setInitValue(child_element, signal.initValue)
2695
- self.setChildElementOptionalNumericalValue(child_element, "LENGTH", signal.length)
2696
- self.setSwDataDefProps(child_element, "NETWORK-REPRESENTATION-PROPS", signal.networkRepresentationProps)
2697
- self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", signal.systemSignalRef)
2812
+ self.setChildElementOptionalLiteral(child_element, "DATA-TYPE-POLICY", signal.getDataTypePolicy())
2813
+ self.setValueSpecification(element, "INIT-VALUE", signal.getInitValue())
2814
+ self.setChildElementOptionalNumericalValue(child_element, "LENGTH", signal.getLength())
2815
+ self.setSwDataDefProps(child_element, "NETWORK-REPRESENTATION-PROPS", signal.getNetworkRepresentationProps())
2816
+ self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", signal.getSystemSignalRef())
2698
2817
 
2699
2818
  def writeEcucValueCollectionEcucValues(self, element: ET.Element, collection: EcucValueCollection):
2700
2819
  value_refs = collection.getEcucValueRefs()
@@ -2705,7 +2824,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2705
2824
  self.setChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF", value_ref)
2706
2825
 
2707
2826
  def writeEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
2708
- self.logger.debug("EcucValueCollection %s" % collection.short_name)
2827
+ self.logger.debug("EcucValueCollection %s" % collection.getShortName())
2709
2828
  child_element = ET.SubElement(element, "ECUC-VALUE-COLLECTION")
2710
2829
  self.setIdentifiable(child_element, collection)
2711
2830
  self.setChildElementOptionalRefType(child_element, "ECU-EXTRACT-REF", collection.getEcuExtractRef())
@@ -2761,7 +2880,8 @@ class ARXMLWriter(AbstractARXMLWriter):
2761
2880
  if instance_ref is not None:
2762
2881
  child_element = ET.SubElement(element, key)
2763
2882
  self.setChildElementOptionalRefType(child_element, "BASE-REF", instance_ref.getBaseRef())
2764
- self.setChildElementOptionalRefType(child_element, "CONTEXT-ELEMENT-REF", instance_ref.getContextElementRef())
2883
+ for ref in instance_ref.getContextElementRefs():
2884
+ self.setChildElementOptionalRefType(child_element, "CONTEXT-ELEMENT-REF", ref)
2765
2885
  self.setChildElementOptionalRefType(child_element, "TARGET-REF", instance_ref.getTargetRef())
2766
2886
  return instance_ref
2767
2887
 
@@ -2784,7 +2904,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2784
2904
  self.notImplemented("Unsupported EcucParameterValue <%s>" % type(reference_value))
2785
2905
 
2786
2906
  def writeEcucContainValue(self, element: ET.Element, container_value: EcucContainerValue):
2787
- self.logger.debug("EcucContainerValue %s" % container_value.short_name)
2907
+ self.logger.debug("EcucContainerValue %s" % container_value.getShortName())
2788
2908
  child_element = ET.SubElement(element, "ECUC-CONTAINER-VALUE")
2789
2909
  self.setIdentifiable(child_element, container_value)
2790
2910
  self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", container_value.getDefinitionRef())
@@ -2803,7 +2923,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2803
2923
  self.notImplemented("Unsupported Container %s" % type(container))
2804
2924
 
2805
2925
  def writeEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
2806
- self.logger.debug("EcucModuleConfigurationValues %s" % values.short_name)
2926
+ self.logger.debug("EcucModuleConfigurationValues %s" % values.getShortName())
2807
2927
  child_element = ET.SubElement(element, "ECUC-MODULE-CONFIGURATION-VALUES")
2808
2928
  self.setIdentifiable(child_element, values)
2809
2929
  self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", values.getDefinitionRef())
@@ -2812,7 +2932,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2812
2932
  self.writeEcucModuleConfigurationValuesContainers(child_element, values)
2813
2933
 
2814
2934
  def writeISignalGroup(self, element: ET.Element, group: ISignalGroup):
2815
- self.logger.debug("ISignalGroup %s" % group.short_name)
2935
+ self.logger.debug("ISignalGroup %s" % group.getShortName())
2816
2936
  child_element = ET.SubElement(element, "I-SIGNAL-GROUP")
2817
2937
  self.setIdentifiable(child_element, group)
2818
2938
  signal_refs = group.getISignalRefs()
@@ -2823,7 +2943,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2823
2943
  self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-GROUP-REF", group.getSystemSignalGroupRef())
2824
2944
 
2825
2945
  def writeISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
2826
- self.logger.debug("ISignalIPduGroup %s" % group.short_name)
2946
+ self.logger.debug("ISignalIPduGroup %s" % group.getShortName())
2827
2947
  child_element = ET.SubElement(element, "I-SIGNAL-I-PDU-GROUP")
2828
2948
  self.setIdentifiable(child_element, group)
2829
2949
  self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", group.getCommunicationDirection())
@@ -2841,7 +2961,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2841
2961
  self.setChildElementOptionalRefType(ref_conditional_tag, "I-SIGNAL-I-PDU-REF", pdu_ref)
2842
2962
 
2843
2963
  def writeSystemSignal(self, element: ET.Element, signal: SystemSignal):
2844
- self.logger.debug("SystemSignal %s" % signal.short_name)
2964
+ self.logger.debug("SystemSignal %s" % signal.getShortName())
2845
2965
  child_element = ET.SubElement(element, "SYSTEM-SIGNAL")
2846
2966
  self.setIdentifiable(child_element, signal)
2847
2967
  self.setChildElementOptionalBooleanValue(child_element, "DYNAMIC-LENGTH", signal.getDynamicLength())
@@ -2849,12 +2969,12 @@ class ARXMLWriter(AbstractARXMLWriter):
2849
2969
 
2850
2970
 
2851
2971
  def writeGenericEthernetFrame(self, element: ET.Element, signal: GenericEthernetFrame):
2852
- self.logger.debug("Write GenericEthernetFrame %s" % signal.short_name)
2972
+ self.logger.debug("Write GenericEthernetFrame %s" % signal.getShortName())
2853
2973
  child_element = ET.SubElement(element, "ETHERNET-FRAME")
2854
2974
  self.writeFrame(child_element, signal)
2855
2975
 
2856
2976
  def writeLifeCycleInfoSet(self, element: ET.Element, set: LifeCycleInfoSet):
2857
- self.logger.debug("Write LifeCycleInfoSet %s" % set.short_name)
2977
+ self.logger.debug("Write LifeCycleInfoSet %s" % set.getShortName())
2858
2978
  child_element = ET.SubElement(element, "LIFE-CYCLE-INFO-SET")
2859
2979
  self.setIdentifiable(child_element, set)
2860
2980
 
@@ -2873,8 +2993,9 @@ class ARXMLWriter(AbstractARXMLWriter):
2873
2993
  self.setChildElementOptionalNumericalValue(child_element, "UPDATE-INDICATION-BIT-POSITION", mapping.getUpdateIndicationBitPosition())
2874
2994
 
2875
2995
  def setDataFilter(self, element: ET.Element, key: str, filter: DataFilter):
2876
- child_element = ET.SubElement(element, key)
2877
- self.setChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE", filter.getDataFilterType())
2996
+ if filter is not None:
2997
+ child_element = ET.SubElement(element, key)
2998
+ self.setChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE", filter.getDataFilterType())
2878
2999
 
2879
3000
  def setTransmissionModeConditions(self, element: ET.Element, conditions: List[TransmissionModeCondition]):
2880
3001
  if len(conditions) > 0:
@@ -2915,7 +3036,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2915
3036
  self.setTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION", timing.getTransmissionModeDeclaration())
2916
3037
 
2917
3038
  def writeISignalIPdu(self, element: ET.Element, i_pdu: ISignalIPdu):
2918
- self.logger.debug("ISignalIPdu %s" % i_pdu.short_name)
3039
+ self.logger.debug("ISignalIPdu %s" % i_pdu.getShortName())
2919
3040
  child_element = ET.SubElement(element, "I-SIGNAL-I-PDU")
2920
3041
  self.setIdentifiable(child_element, i_pdu)
2921
3042
  self.setChildElementOptionalNumericalValue(child_element, "LENGTH", i_pdu.getLength())
@@ -2931,13 +3052,13 @@ class ARXMLWriter(AbstractARXMLWriter):
2931
3052
  elif isinstance(ar_element, CompositionSwComponentType):
2932
3053
  self.writeCompositionSwComponentType(element, ar_element)
2933
3054
  elif isinstance(ar_element, ApplicationPrimitiveDataType):
2934
- self.writeApplicationPrimitiveDataType(element, ar_element)
3055
+ self.setApplicationPrimitiveDataType(element, ar_element)
2935
3056
  elif isinstance(ar_element, ApplicationRecordDataType):
2936
- self.writeApplicationRecordDataType(element, ar_element)
3057
+ self.setApplicationRecordDataType(element, ar_element)
2937
3058
  elif isinstance(ar_element, SwBaseType):
2938
- self.writeSwBaseType(element, ar_element)
3059
+ self.setSwBaseType(element, ar_element)
2939
3060
  elif isinstance(ar_element, CompuMethod):
2940
- self.writeCompuMethod(element, ar_element)
3061
+ self.setCompuMethod(element, ar_element)
2941
3062
  elif isinstance(ar_element, ConstantSpecification):
2942
3063
  self.writeConstantSpecification(element, ar_element)
2943
3064
  elif isinstance(ar_element, DataConstr):
@@ -3021,7 +3142,11 @@ class ARXMLWriter(AbstractARXMLWriter):
3021
3142
  elif isinstance(ar_element, LifeCycleInfoSet):
3022
3143
  self.writeLifeCycleInfoSet(element, ar_element)
3023
3144
  elif isinstance(ar_element, PhysicalDimension):
3024
- self.writePhysicalDimension(element, ar_element)
3145
+ self.setPhysicalDimension(element, ar_element)
3146
+ elif isinstance(ar_element, FlatMap):
3147
+ self.setFlatMap(element, ar_element)
3148
+ elif isinstance(ar_element, PortInterfaceMappingSet):
3149
+ self.setPortInterfaceMappingSet(element, ar_element)
3025
3150
  else:
3026
3151
  self.notImplemented("Unsupported Elements of ARPackage <%s>" % type(ar_element))
3027
3152