armodel 1.7.1__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 (54) hide show
  1. armodel/cli/arxml_dump_cli.py +3 -3
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +3 -3
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +81 -36
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +104 -30
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +12 -16
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +70 -0
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +12 -9
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +22 -11
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +29 -22
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +26 -9
  11. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HardwareConfiguration.py +33 -0
  12. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HeapUsage.py +10 -0
  13. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +8 -0
  14. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/SoftwareContext.py +23 -0
  15. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/StackUsage.py +93 -0
  16. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +39 -5
  17. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +735 -27
  18. armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcBswMapping.py +48 -6
  19. armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +5 -5
  20. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +20 -3
  21. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +3 -0
  22. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +55 -1
  23. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +41 -3
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -15
  25. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +8 -0
  26. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -8
  27. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +239 -5
  28. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +56 -6
  29. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +91 -55
  30. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +10 -1
  31. armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +186 -24
  32. armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +34 -3
  33. armodel/models/M2/MSR/DataDictionary/AuxillaryObjects.py +4 -4
  34. armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +7 -0
  35. armodel/models/M2/MSR/DataDictionary/RecordLayout.py +130 -37
  36. armodel/models/M2/MSR/DataDictionary/ServiceProcessTask.py +33 -0
  37. armodel/models/__init__.py +4 -0
  38. armodel/parser/abstract_arxml_parser.py +30 -27
  39. armodel/parser/arxml_parser.py +683 -371
  40. armodel/tests/test_armodel/models/test_ar_object.py +6 -2
  41. armodel/tests/test_armodel/models/test_datatype.py +4 -4
  42. armodel/tests/test_armodel/models/test_m2_msr.py +5 -5
  43. armodel/tests/test_armodel/models/test_port_interface.py +4 -4
  44. armodel/tests/test_armodel/parser/test_parse_bswmd.py +48 -48
  45. armodel/tests/test_armodel/parser/test_sw_components.py +1 -1
  46. armodel/tests/test_armodel/parser/test_system.py +0 -1
  47. armodel/writer/abstract_arxml_writer.py +10 -0
  48. armodel/writer/arxml_writer.py +668 -358
  49. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/METADATA +34 -1
  50. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/RECORD +54 -48
  51. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/LICENSE +0 -0
  52. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/WHEEL +0 -0
  53. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/entry_points.txt +0 -0
  54. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/top_level.txt +0 -0
@@ -2,14 +2,12 @@ import xml.etree.cElementTree as ET
2
2
 
3
3
  from typing import List
4
4
 
5
- from armodel.models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
6
-
7
-
8
5
 
9
6
 
7
+ from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
10
8
  from ..models.M2.MSR.AsamHdo.AdminData import AdminData
11
9
  from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
12
- 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
13
11
  from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstr, InternalConstrs, PhysConstrs
14
12
  from ..models.M2.MSR.AsamHdo.SpecialData import Sdg
15
13
  from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension, Unit
@@ -17,8 +15,9 @@ from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValu
17
15
  from ..models.M2.MSR.DataDictionary.Axis import SwAxisGrouped, SwAxisIndividual
18
16
  from ..models.M2.MSR.DataDictionary.AuxillaryObjects import SwAddrMethod
19
17
  from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxis, SwCalprmAxisSet
20
- from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, ValueList
18
+ from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, SwPointerTargetProps, ValueList
21
19
  from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayout, SwRecordLayoutGroup, SwRecordLayoutV
20
+ from ..models.M2.MSR.DataDictionary.ServiceProcessTask import SwServiceArg
22
21
  from ..models.M2.MSR.Documentation.Annotation import Annotation
23
22
  from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
24
23
  from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
@@ -29,20 +28,21 @@ from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
29
28
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
30
29
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
31
30
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
32
- 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
33
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
34
34
  from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
35
35
  from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
36
36
  from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Code, Implementation
37
37
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
38
38
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef, ExecutionOrderConstraint
39
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import NvBlockNeeds, RoleBasedDataAssignment, ServiceDependency
39
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DiagnosticCommunicationManagerNeeds, DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds, EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
40
40
  from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
41
41
  from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
42
42
  from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
43
43
  from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclaration, ModeDeclarationGroup, ModeDeclarationGroupPrototype
44
44
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
45
-
45
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
46
46
  from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
47
47
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
48
48
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, MultilanguageReferrable, Referrable
@@ -50,16 +50,16 @@ from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyI
50
50
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
51
51
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral, Limit
52
52
 
53
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption
54
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
53
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
54
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
55
55
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
56
56
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType
57
57
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
58
58
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
59
59
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
60
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype
60
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PRPortPrototype, PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype
61
61
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
62
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior, SynchronousServerCallPoint
62
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import AsynchronousServerCallPoint, RunnableEntity, RunnableEntityArgument, SwcInternalBehavior, SynchronousServerCallPoint
63
63
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
64
64
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.DataElements import ParameterAccess, VariableAccess
65
65
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector, SwComponentPrototype, SwConnector
@@ -73,7 +73,7 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes im
73
73
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ServiceSwComponentType
74
74
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import DataTypeMappingSet
75
75
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
76
- 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
77
77
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
78
78
 
79
79
  from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
@@ -111,13 +111,15 @@ class ARXMLWriter(AbstractARXMLWriter):
111
111
  def writeSds(self, parent: ET.Element, sdg: Sdg):
112
112
  for sd in sdg.getSds():
113
113
  sd_tag = ET.SubElement(parent, "SD")
114
- sd_tag.attrib['GID'] = sd.gid
114
+ if sd.gid is not None:
115
+ sd_tag.attrib['GID'] = sd.gid
115
116
  sd_tag.text = sd.value
116
117
 
117
118
  def setSdg(self, parent: ET.Element, sdg: Sdg):
118
119
  if sdg is not None:
119
120
  sdg_tag = ET.SubElement(parent, "SDG")
120
- sdg_tag.attrib['GID'] = sdg.gid
121
+ if sdg.gid is not None and sdg.gid != "":
122
+ sdg_tag.attrib['GID'] = sdg.gid
121
123
  self.writeSds(sdg_tag, sdg)
122
124
  for sdg_item in sdg.getSdgContentsTypes():
123
125
  self.setSdg(sdg_tag, sdg_item)
@@ -129,7 +131,7 @@ class ARXMLWriter(AbstractARXMLWriter):
129
131
  for sdg in sdgs:
130
132
  self.setSdg(sdgs_tag, sdg)
131
133
 
132
- def writeChildLimitElement(self, element: ET.Element, key: str, limit: Limit):
134
+ def setChildLimitElement(self, element: ET.Element, key: str, limit: Limit):
133
135
  if limit is not None:
134
136
  limit_tag = ET.SubElement(element, key)
135
137
  self.setARObjectAttributes(limit_tag, limit)
@@ -139,7 +141,7 @@ class ARXMLWriter(AbstractARXMLWriter):
139
141
 
140
142
  def setReferable(self, element: ET.Element, referrable: Referrable):
141
143
  self.setARObjectAttributes(element, referrable)
142
- self.setShortName(element, referrable.short_name)
144
+ self.setShortName(element, referrable.getShortName())
143
145
 
144
146
  def setLanguageSpecific(self, element: ET.Element, key: str, specific: LanguageSpecific):
145
147
  child_element = ET.SubElement(element, key)
@@ -224,7 +226,7 @@ class ARXMLWriter(AbstractARXMLWriter):
224
226
  child_element = ET.SubElement(element, "NONQUEUED-SENDER-COM-SPEC")
225
227
  self.setARObjectAttributes(child_element, com_spec)
226
228
  self.setSenderComSpec(child_element, com_spec)
227
- self.setInitValue(child_element, com_spec.initValue)
229
+ self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
228
230
 
229
231
  def setServerComSpec(self, element: ET.Element, com_spec: ServerComSpec):
230
232
  child_element = ET.SubElement(element, "SERVER-COM-SPEC")
@@ -253,7 +255,7 @@ class ARXMLWriter(AbstractARXMLWriter):
253
255
  elif isinstance(com_spec, ModeSwitchSenderComSpec):
254
256
  self.setModeSwitchSenderComSpec(com_specs_tag, com_spec)
255
257
  else:
256
- raise NotImplementedError("Unsupported PPortComSpec %s" % type(com_spec))
258
+ self.notImplemented("Unsupported PPortComSpec %s" % type(com_spec))
257
259
 
258
260
  def setApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key:str, iref: ApplicationCompositeElementInPortInterfaceInstanceRef):
259
261
  if iref is not None:
@@ -266,8 +268,8 @@ class ARXMLWriter(AbstractARXMLWriter):
266
268
  if representation is not None:
267
269
  self.logger.debug("setCompositeNetworkRepresentation")
268
270
  child_element = ET.SubElement(element, "COMPOSITE-NETWORK-REPRESENTATION")
269
- self.setApplicationCompositeElementInPortInterfaceInstanceRef(child_element, "LEAF-ELEMENT-IREF", representation.leaf_element_iref)
270
- self.setSwDataDefProps(child_element, "NETWORK-REPRESENTATION", representation.network_representation)
271
+ self.setApplicationCompositeElementInPortInterfaceInstanceRef(child_element, "LEAF-ELEMENT-IREF", representation.getLeafElementIRef())
272
+ self.setSwDataDefProps(child_element, "NETWORK-REPRESENTATION", representation.getNetworkRepresentation())
271
273
 
272
274
  def writeReceiverComSpec(self, element: ET.Element, com_spec: ReceiverComSpec):
273
275
  representations = com_spec.getCompositeNetworkRepresentations()
@@ -275,10 +277,11 @@ class ARXMLWriter(AbstractARXMLWriter):
275
277
  child_element = ET.SubElement(element, "COMPOSITE-NETWORK-REPRESENTATIONS")
276
278
  for representation in representations:
277
279
  self.setCompositeNetworkRepresentation(child_element, representation)
278
- self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.dataElementRef)
279
- self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.networkRepresentation)
280
- self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.handleOutOfRange)
281
- self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.usesEndToEndProtection)
280
+ self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.getDataElementRef())
281
+ self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.getNetworkRepresentation())
282
+ self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.getHandleOutOfRange())
283
+ self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE-STATUS", com_spec.getHandleOutOfRangeStatus())
284
+ self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.getUsesEndToEndProtection())
282
285
 
283
286
  def setSwValues(self, element: ET.Element, key: str, sw_values: SwValues):
284
287
  if sw_values is not None:
@@ -295,37 +298,41 @@ class ARXMLWriter(AbstractARXMLWriter):
295
298
  self.setChildElementOptionalFloatValue(child_element, "V", value_list.v)
296
299
 
297
300
  def writeSwValueCont(self, element: ET.Element, cont: SwValueCont):
298
- child_element = ET.SubElement(element, "SW-VALUE-CONT")
299
- 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)
301
+ if cont is not None:
302
+ child_element = ET.SubElement(element, "SW-VALUE-CONT")
303
+ self.setARObjectAttributes(child_element, cont)
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
- self.setARObjectAttributes(element, value_spec)
306
- if value_spec.short_label is not None:
307
- self.setChildElementOptionalLiteral(element, "SHORT-LABEL", value_spec.short_label)
309
+ if value_spec is not None:
310
+ self.setARObjectAttributes(element, value_spec)
311
+ self.setChildElementOptionalLiteral(element, "SHORT-LABEL", value_spec.getShortLabel())
308
312
 
309
313
  def setApplicationValueSpecification(self, element: ET.Element, value_spec: ApplicationValueSpecification):
310
- value_spec_tag = ET.SubElement(element, "APPLICATION-VALUE-SPECIFICATION")
311
- self.writeValueSpecification(value_spec_tag, value_spec)
312
- self.setChildElementOptionalLiteral(value_spec_tag, "CATEGORY", value_spec.category)
313
- self.writeSwValueCont(value_spec_tag, value_spec.sw_value_cont)
314
+ if value_spec is not None:
315
+ value_spec_tag = ET.SubElement(element, "APPLICATION-VALUE-SPECIFICATION")
316
+ self.writeValueSpecification(value_spec_tag, value_spec)
317
+ self.setChildElementOptionalLiteral(value_spec_tag, "CATEGORY", value_spec.getCategory())
318
+ self.writeSwValueCont(value_spec_tag, value_spec.getSwValueCont())
314
319
 
315
320
  def setTextValueSpecification(self, element: ET.Element, value_spec: TextValueSpecification):
316
- value_spec_tag = ET.SubElement(element, "TEXT-VALUE-SPECIFICATION")
317
- self.writeValueSpecification(value_spec_tag, value_spec)
318
- self.setChildElementOptionalLiteral(value_spec_tag, "VALUE", value_spec.value)
321
+ if value_spec is not None:
322
+ value_spec_tag = ET.SubElement(element, "TEXT-VALUE-SPECIFICATION")
323
+ self.writeValueSpecification(value_spec_tag, value_spec)
324
+ self.setChildElementOptionalLiteral(value_spec_tag, "VALUE", value_spec.getValue())
319
325
 
320
326
  def setNumericalValueSpecification(self, element: ET.Element, value_spec: NumericalValueSpecification):
321
- value_spec_tag = ET.SubElement(element, "NUMERICAL-VALUE-SPECIFICATION")
322
- self.writeValueSpecification(value_spec_tag, value_spec)
323
- self.setChildElementOptionalFloatValue(value_spec_tag, "VALUE", value_spec.value)
327
+ if value_spec is not None:
328
+ value_spec_tag = ET.SubElement(element, "NUMERICAL-VALUE-SPECIFICATION")
329
+ self.writeValueSpecification(value_spec_tag, value_spec)
330
+ self.setChildElementOptionalFloatValue(value_spec_tag, "VALUE", value_spec.getValue())
324
331
 
325
332
  def setArrayValueSpecification(self, element: ET.Element, value_spec: ArrayValueSpecification):
326
333
  value_spec_tag = ET.SubElement(element, "ARRAY-VALUE-SPECIFICATION")
327
334
  self.writeValueSpecification(value_spec_tag, value_spec)
328
- sub_elements = value_spec.get_elements()
335
+ sub_elements = value_spec.getElements()
329
336
  if len(sub_elements) > 0:
330
337
  elements_tag = ET.SubElement(value_spec_tag, "ELEMENTS")
331
338
  for sub_element in sub_elements:
@@ -333,45 +340,48 @@ class ARXMLWriter(AbstractARXMLWriter):
333
340
  self.setNumericalValueSpecification(elements_tag, sub_element)
334
341
  elif isinstance(sub_element, ApplicationValueSpecification):
335
342
  self.setApplicationValueSpecification(elements_tag, sub_element)
343
+ elif isinstance(sub_element, TextValueSpecification):
344
+ self.setTextValueSpecification(elements_tag, sub_element)
345
+ elif isinstance(sub_element, ArrayValueSpecification):
346
+ self.setArrayValueSpecification(elements_tag, sub_element)
347
+ elif isinstance(sub_element, RecordValueSpecification):
348
+ self.setRecordValueSpecification(elements_tag, sub_element)
336
349
  else:
337
- raise NotImplementedError("Unsupported element type of <%s> of ArrayValueSpecification" % type(sub_element))
350
+ self.notImplemented("Unsupported element type of <%s> of ArrayValueSpecification" % type(sub_element))
338
351
 
339
352
  def setConstantReference(self, element: ET.Element, value_spec: ConstantReference):
340
353
  value_spec_tag = ET.SubElement(element, "CONSTANT-REFERENCE")
341
354
  self.writeValueSpecification(value_spec_tag, value_spec)
342
355
  self.setChildElementOptionalRefType(value_spec_tag, "CONSTANT-REF", value_spec.getConstantRef())
343
356
 
344
- def setValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
357
+ def setValueSpecification(self, element: ET.Element, key: str, value_spec: ValueSpecification):
345
358
  if value_spec is not None:
359
+ child_element = ET.SubElement(element, key)
346
360
  if isinstance(value_spec, ApplicationValueSpecification):
347
- self.setApplicationValueSpecification(element, value_spec)
361
+ self.setApplicationValueSpecification(child_element, value_spec)
348
362
  elif isinstance(value_spec, TextValueSpecification):
349
- self.setTextValueSpecification(element, value_spec)
363
+ self.setTextValueSpecification(child_element, value_spec)
350
364
  elif isinstance(value_spec, ConstantReference):
351
- self.setConstantReference(element, value_spec)
365
+ self.setConstantReference(child_element, value_spec)
352
366
  elif isinstance(value_spec, NumericalValueSpecification):
353
- self.setNumericalValueSpecification(element, value_spec)
367
+ self.setNumericalValueSpecification(child_element, value_spec)
354
368
  elif isinstance(value_spec, ArrayValueSpecification):
355
- self.setArrayValueSpecification(element, value_spec)
369
+ self.setArrayValueSpecification(child_element, value_spec)
356
370
  elif isinstance(value_spec, RecordValueSpecification):
357
- self.setRecordValueSpecification(element, value_spec)
371
+ self.setRecordValueSpecification(child_element, value_spec)
358
372
  else:
359
- raise NotImplementedError("Unsupported ValueSpecification %s" % type(value_spec))
360
-
361
- def setInitValue(self, element: ET.Element, init_value: ValueSpecification):
362
- if init_value is not None:
363
- child_element = ET.SubElement(element, "INIT-VALUE")
364
- self.setValueSpecification(child_element, init_value)
373
+ self.notImplemented("Unsupported ValueSpecification %s" % type(value_spec))
365
374
 
366
375
  def writeNonqueuedReceiverComSpec(self, element: ET.Element, com_spec: NonqueuedReceiverComSpec):
367
376
  child_element = ET.SubElement(element, "NONQUEUED-RECEIVER-COM-SPEC")
368
377
  self.setARObjectAttributes(child_element, com_spec)
369
378
  self.writeReceiverComSpec(child_element, com_spec)
370
- self.setChildElementOptionalFloatValue(child_element, "ALIVE-TIMEOUT", com_spec.aliveTimeout)
371
- self.setChildElementOptionalBooleanValue(child_element, "ENABLE-UPDATE", com_spec.enableUpdated)
372
- self.setChildElementOptionalBooleanValue(child_element, "HANDLE-NEVER-RECEIVED", com_spec.handleNeverReceived)
373
- self.setChildElementOptionalLiteral(child_element, "HANDLE-TIMEOUT-TYPE", com_spec.handleTimeoutType)
374
- 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())
375
385
 
376
386
  def writeQueuedReceiverComSpec(self, element: ET.Element, com_spec: QueuedReceiverComSpec):
377
387
  child_element = ET.SubElement(element, "QUEUED-RECEIVER-COM-SPEC")
@@ -389,8 +399,8 @@ class ARXMLWriter(AbstractARXMLWriter):
389
399
  self.logger.debug("writeParameterRequireComSpec")
390
400
  child_element = ET.SubElement(element, "PARAMETER-REQUIRE-COM-SPEC")
391
401
  self.setARObjectAttributes(child_element, com_spec)
392
- self.setChildElementOptionalRefType(child_element, "PARAMETER-REF", com_spec.parameter_ref)
393
- 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())
394
404
 
395
405
  def writeModeSwitchReceiverComSpec(self, element: ET.Element, com_spec: ModeSwitchReceiverComSpec):
396
406
  self.logger.debug("writeModeSwitchReceiverComSpec")
@@ -411,31 +421,43 @@ class ARXMLWriter(AbstractARXMLWriter):
411
421
  self.writeParameterRequireComSpec(element, com_spec)
412
422
  else:
413
423
  raise ValueError("Unsupported RPortComSpec %s" % type(com_spec))
424
+
425
+ def setAbstractProvidedPortPrototype(self, element: ET.Element, prototype: AbstractProvidedPortPrototype):
426
+ com_specs = prototype.getProvidedComSpecs()
427
+ if len(com_specs):
428
+ com_specs_tag = ET.SubElement(element, "PROVIDED-COM-SPECS")
429
+ for com_spec in com_specs:
430
+ self.writePPortComSpec(com_specs_tag, com_spec)
414
431
 
415
432
  def writePPortPrototype(self, ports_tag: ET.Element, prototype: PPortPrototype):
416
433
  prototype_tag = ET.SubElement(ports_tag, "P-PORT-PROTOTYPE")
417
434
 
418
435
  self.setIdentifiable(prototype_tag, prototype)
419
- self.logger.debug("writePPortPrototype %s" % prototype.short_name)
436
+ self.logger.debug("write PPortPrototype %s" % prototype.getShortName())
437
+ self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
438
+ self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-INTERFACE-TREF", prototype.getProvidedInterfaceTRef())
420
439
 
421
- com_specs = prototype.getProvidedComSpecs()
422
- if len(com_specs):
423
- com_specs_tag = ET.SubElement(prototype_tag, "PROVIDED-COM-SPECS")
440
+ def setAbstractRequiredPortPrototype(self, element: ET.Element, prototype: AbstractRequiredPortPrototype):
441
+ com_specs = prototype.getRequiredComSpecs()
442
+ if len(com_specs) > 0:
443
+ com_specs_tag = ET.SubElement(element, "REQUIRED-COM-SPECS")
424
444
  for com_spec in com_specs:
425
- self.writePPortComSpec(com_specs_tag, com_spec)
426
-
427
- self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-INTERFACE-TREF", prototype.getProvidedInterfaceTRef())
445
+ self.writeRPortComSpec(com_specs_tag, com_spec)
428
446
 
429
447
  def writeRPortPrototype(self, ports_tag: ET.Element, prototype: RPortPrototype):
430
- self.logger.debug("writeRPortPrototype %s" % prototype.short_name)
448
+ self.logger.debug("write RPortPrototype %s" % prototype.getShortName())
431
449
  prototype_tag = ET.SubElement(ports_tag, "R-PORT-PROTOTYPE")
432
450
  self.setIdentifiable(prototype_tag, prototype)
433
- com_specs = prototype.getRequiredComSpecs()
434
- if len(com_specs) > 0:
435
- com_specs_tag = ET.SubElement(prototype_tag, "REQUIRED-COM-SPECS")
436
- for com_spec in com_specs:
437
- self.writeRPortComSpec(com_specs_tag, com_spec)
451
+ self.setAbstractRequiredPortPrototype(prototype_tag, prototype)
438
452
  self.setChildElementOptionalRefType(prototype_tag, "REQUIRED-INTERFACE-TREF", prototype.getRequiredInterfaceTRef())
453
+
454
+ def writePRPortPrototype(self, ports_tag: ET.Element, prototype: PRPortPrototype):
455
+ self.logger.debug("write PRPortPrototype %s" % prototype.getShortName())
456
+ prototype_tag = ET.SubElement(ports_tag, "PR-PORT-PROTOTYPE")
457
+ self.setIdentifiable(prototype_tag, prototype)
458
+ self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
459
+ self.setAbstractRequiredPortPrototype(prototype_tag, prototype)
460
+ self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-REQUIRED-INTERFACE-TREF", prototype.getProvidedRequiredInterface())
439
461
 
440
462
  def writePortPrototypes(self, ports_tag: ET.Element, port_prototypes: List[PortPrototype]):
441
463
  for port_prototype in port_prototypes:
@@ -443,6 +465,8 @@ class ARXMLWriter(AbstractARXMLWriter):
443
465
  self.writePPortPrototype(ports_tag, port_prototype)
444
466
  elif isinstance(port_prototype, RPortPrototype):
445
467
  self.writeRPortPrototype(ports_tag, port_prototype)
468
+ elif isinstance(port_prototype, PRPortPrototype):
469
+ self.writePRPortPrototype(ports_tag, port_prototype)
446
470
  else:
447
471
  self._raiseError("Invalid PortPrototype")
448
472
 
@@ -467,7 +491,7 @@ class ARXMLWriter(AbstractARXMLWriter):
467
491
  self.setChildElementOptionalRefType(child_element, "PORT-PROTOTYPE-REF", ref)
468
492
 
469
493
  def writePortGroup(self, element: ET.Element, port_group: PortGroup):
470
- self.logger.debug("writePortGroup %s" % port_group.short_name)
494
+ self.logger.debug("writePortGroup %s" % port_group.getShortName())
471
495
  child_element = ET.SubElement(element, "PORT-GROUP")
472
496
  self.setIdentifiable(child_element, port_group)
473
497
  self.writePortGroupInnerGroupIRefs(child_element, port_group)
@@ -501,18 +525,19 @@ class ARXMLWriter(AbstractARXMLWriter):
501
525
  self.writeSwComponentPrototype(components_tag, prototype)
502
526
 
503
527
  def writeAssemblySwConnector(self, element: ET.Element, sw_connector: AssemblySwConnector):
504
- connector_tag = ET.SubElement(element, "ASSEMBLY-SW-CONNECTOR")
505
- 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())
506
531
 
507
532
  if sw_connector.getProviderIRef() is not None:
508
- provider_iref_tag = ET.SubElement(connector_tag, "PROVIDER-IREF")
533
+ provider_iref_tag = ET.SubElement(child_element, "PROVIDER-IREF")
509
534
  provider_iref = sw_connector.getProviderIRef()
510
535
  self.setARObjectAttributes(provider_iref_tag, provider_iref)
511
536
  self.setChildElementOptionalRefType(provider_iref_tag, "CONTEXT-COMPONENT-REF", provider_iref.getContextComponentRef())
512
537
  self.setChildElementOptionalRefType(provider_iref_tag, "TARGET-P-PORT-REF", provider_iref.getTargetPPortRef())
513
538
 
514
539
  if sw_connector.getRequesterIRef() is not None:
515
- requester_iref_tag = ET.SubElement(connector_tag, "REQUESTER-IREF")
540
+ requester_iref_tag = ET.SubElement(child_element, "REQUESTER-IREF")
516
541
  requester_iref = sw_connector.getRequesterIRef()
517
542
  self.setARObjectAttributes(requester_iref_tag, requester_iref)
518
543
  self.setChildElementOptionalRefType(requester_iref_tag, "CONTEXT-COMPONENT-REF", requester_iref.getContextComponentRef())
@@ -546,7 +571,7 @@ class ARXMLWriter(AbstractARXMLWriter):
546
571
  elif isinstance(sw_connector, DelegationSwConnector):
547
572
  self.writeDelegationSwConnector(element, sw_connector)
548
573
  else:
549
- raise NotImplementedError("Unsupported Sw Connector %s")
574
+ self.notImplemented("Unsupported Sw Connector %s")
550
575
 
551
576
  def writeSwConnectors(self, element: ET.Element, sw_component: CompositionSwComponentType):
552
577
  sw_connectors = sw_component.getSwConnectors()
@@ -658,49 +683,53 @@ class ARXMLWriter(AbstractARXMLWriter):
658
683
  for axis in axises:
659
684
  self.setSwCalprmAxis(child_element, axis)
660
685
 
661
- def writeSwDataDefProsInvalidValue(self, element: ET.Element, props: SwDataDefProps):
662
- if props.getInvalidValue() is not None:
663
- child_element = ET.SubElement(element, "INVALID-VALUE")
664
- 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())
665
691
 
666
- def setSwDataDefProps(self, element: ET.Element, key: str, sw_data_def_props: SwDataDefProps):
667
- 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:
668
694
  child_element = ET.SubElement(element, key)
669
- self.setARObjectAttributes(child_element, sw_data_def_props)
695
+ self.setARObjectAttributes(child_element, props)
670
696
  sw_data_def_props_variants_tag = ET.SubElement(child_element, "SW-DATA-DEF-PROPS-VARIANTS")
671
- sw_data_def_props_conditional_tag = ET.SubElement(sw_data_def_props_variants_tag, "SW-DATA-DEF-PROPS-CONDITIONAL")
672
- self.setARObjectAttributes(sw_data_def_props_conditional_tag, sw_data_def_props.conditional)
673
- self.setAnnotations(sw_data_def_props_conditional_tag, sw_data_def_props.getAnnotations())
674
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "BASE-TYPE-REF", sw_data_def_props.getBaseTypeRef())
675
- self.writeSwDataDefProsInvalidValue(sw_data_def_props_conditional_tag, sw_data_def_props)
676
- self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-CALIBRATION-ACCESS", sw_data_def_props.getSwCalibrationAccess())
677
- self.setSwCalprmAxisSet(sw_data_def_props_conditional_tag, "SW-CALPRM-AXIS-SET", sw_data_def_props.getSwCalprmAxisSet())
678
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "COMPU-METHOD-REF", sw_data_def_props.getCompuMethodRef())
679
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "DATA-CONSTR-REF", sw_data_def_props.getDataConstrRef())
680
- self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-IMPL-POLICY", sw_data_def_props.getSwImplPolicy())
681
- self.setChildElementOptionalNumericalValue(sw_data_def_props_conditional_tag, "SW-INTENDED-RESOLUTION", sw_data_def_props.getSwIntendedResolution())
682
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", sw_data_def_props.getImplementationDataTypeRef())
683
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "SW-RECORD-LAYOUT-REF", sw_data_def_props.getSwRecordLayoutRef())
684
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "VALUE-AXIS-DATA-TYPE-REF", sw_data_def_props.getValueAxisDataTypeRef())
685
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "UNIT-REF", sw_data_def_props.getUnitRef())
686
-
687
- def writeApplicationDataType(self, element: ET.Element, data_type: ApplicationDataType):
688
- self.writeAutosarDataType(element, data_type)
689
-
690
- def writeApplicationCompositeDataType(self, element: ET.Element, data_type: ApplicationCompositeDataType):
691
- self.writeApplicationDataType(element, data_type)
692
-
693
- def writeAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
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())
715
+
716
+ def setApplicationDataType(self, element: ET.Element, data_type: ApplicationDataType):
717
+ self.setAutosarDataType(element, data_type)
718
+
719
+ def setApplicationCompositeDataType(self, element: ET.Element, data_type: ApplicationCompositeDataType):
720
+ self.setApplicationDataType(element, data_type)
721
+
722
+ def setAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
694
723
  self.setARElement(element, data_type)
695
- self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", data_type.swDataDefProps)
724
+ self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", data_type.getSwDataDefProps())
696
725
 
697
- def writeApplicationPrimitiveDataType(self, element: ET.Element, data_type: ApplicationPrimitiveDataType):
698
- self.logger.debug("writeApplicationPrimitiveDataType %s" % data_type.short_name)
726
+ def setApplicationPrimitiveDataType(self, element: ET.Element, data_type: ApplicationPrimitiveDataType):
727
+ self.logger.debug("writeApplicationPrimitiveDataType %s" % data_type.getShortName())
699
728
  data_type_tag = ET.SubElement(element, "APPLICATION-PRIMITIVE-DATA-TYPE")
700
- self.writeApplicationDataType(data_type_tag, data_type)
729
+ self.setApplicationDataType(data_type_tag, data_type)
701
730
 
702
731
  def setDataPrototype(self, element: ET.Element, prototype: DataPrototype):
703
- self.setIdentifiable(element, prototype)
732
+ self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", prototype.getSwDataDefProps())
704
733
 
705
734
  def setApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
706
735
  self.setDataPrototype(element, prototype)
@@ -717,19 +746,19 @@ class ARXMLWriter(AbstractARXMLWriter):
717
746
  child_element = ET.SubElement(elements_tag, "APPLICATION-RECORD-ELEMENT")
718
747
  self.setApplicationRecordElement(child_element, record)
719
748
 
720
- def writeApplicationRecordDataType(self, element: ET.Element, data_type: ApplicationRecordDataType):
749
+ def setApplicationRecordDataType(self, element: ET.Element, data_type: ApplicationRecordDataType):
721
750
  data_type_tag = ET.SubElement(element, "APPLICATION-RECORD-DATA-TYPE")
722
- self.writeApplicationDataType(data_type_tag, data_type)
751
+ self.setApplicationDataType(data_type_tag, data_type)
723
752
  self.writeApplicationRecordElements(data_type_tag, data_type)
724
753
 
725
754
  def writeApplicationDataTypes(self, parent: ET.Element, ar_package: ARPackage):
726
755
  for data_type in ar_package.getApplicationDataType():
727
756
  if isinstance(data_type, ApplicationPrimitiveDataType):
728
- self.writeApplicationPrimitiveDataType(parent, data_type)
757
+ self.setApplicationPrimitiveDataType(parent, data_type)
729
758
  elif isinstance(data_type, ApplicationRecordDataType):
730
- self.writeApplicationRecordDataType(parent, data_type)
759
+ self.setApplicationRecordDataType(parent, data_type)
731
760
  else:
732
- raise NotImplementedError("Unsupported ApplicationDataType <%s>" % type(data_type))
761
+ self.notImplemented("Unsupported ApplicationDataType <%s>" % type(data_type))
733
762
 
734
763
  def writeBaseTypeDirectDefinition(self, element: ET.Element, base_type_definition: BaseTypeDirectDefinition):
735
764
  self.setChildElementOptionalNumericalValue(element, "BASE-TYPE-SIZE", base_type_definition.baseTypeSize)
@@ -737,15 +766,15 @@ class ARXMLWriter(AbstractARXMLWriter):
737
766
  self.setChildElementOptionalNumericalValue(element, "MEM-ALIGNMENT", base_type_definition.memAlignment)
738
767
  self.setChildElementOptionalLiteral(element, "NATIVE-DECLARATION", base_type_definition.nativeDeclaration)
739
768
 
740
- def writeSwBaseType(self, element: ET.Element, base_type: SwBaseType):
769
+ def setSwBaseType(self, element: ET.Element, base_type: SwBaseType):
741
770
  data_type_tag = ET.SubElement(element, "SW-BASE-TYPE")
742
771
  self.setIdentifiable(data_type_tag, base_type)
743
772
  self.writeBaseTypeDirectDefinition(data_type_tag, base_type.baseTypeDefinition)
744
773
 
745
774
  def writeCompuScaleConstantContents(self, element: ET.Element, contents: CompuScaleConstantContents):
746
775
  compu_const_tag = ET.SubElement(element, "COMPU-CONST")
747
- if isinstance(contents.compu_const.compu_const_content_type, CompuConstTextContent):
748
- self.setChildElementOptionalLiteral(compu_const_tag, "VT", contents.compu_const.compu_const_content_type.vt)
776
+ if isinstance(contents.compuConst.compuConstContentType, CompuConstTextContent):
777
+ self.setChildElementOptionalLiteral(compu_const_tag, "VT", contents.compuConst.compuConstContentType.vt)
749
778
 
750
779
  def writeCompuNominatorDenominator(self, element: ET.Element, key: str, parent: CompuNominatorDenominator):
751
780
  child_element = ET.SubElement(element, key)
@@ -754,12 +783,12 @@ class ARXMLWriter(AbstractARXMLWriter):
754
783
  v_tag.text = v
755
784
 
756
785
  def writeCompuScaleRationalFormula(self, element: ET.Element, contents: CompuScaleRationalFormula):
757
- if contents.compu_rational_coeffs is not None:
786
+ if contents.compuRationalCoeffs is not None:
758
787
  coeffs_tag = ET.SubElement(element, "COMPU-RATIONAL-COEFFS")
759
- if contents.compu_rational_coeffs.compu_numerator:
760
- self.writeCompuNominatorDenominator(coeffs_tag, "COMPU-NUMERATOR", contents.compu_rational_coeffs.compu_numerator)
761
- if contents.compu_rational_coeffs.compu_denominator:
762
- self.writeCompuNominatorDenominator(coeffs_tag, "COMPU-DENOMINATOR", contents.compu_rational_coeffs.compu_denominator)
788
+ if contents.compuRationalCoeffs.compuNumerator:
789
+ self.writeCompuNominatorDenominator(coeffs_tag, "COMPU-NUMERATOR", contents.compuRationalCoeffs.compuNumerator)
790
+ if contents.compuRationalCoeffs.compuDenominator:
791
+ self.writeCompuNominatorDenominator(coeffs_tag, "COMPU-DENOMINATOR", contents.compuRationalCoeffs.compuDenominator)
763
792
 
764
793
  def writeCompuScaleContents(self, element: ET.Element, compu_scale: CompuScale):
765
794
  if isinstance(compu_scale.compuScaleContents, CompuScaleConstantContents):
@@ -767,44 +796,63 @@ class ARXMLWriter(AbstractARXMLWriter):
767
796
  elif isinstance(compu_scale.compuScaleContents, CompuScaleRationalFormula):
768
797
  self.writeCompuScaleRationalFormula(element, compu_scale.compuScaleContents)
769
798
  else:
770
- raise NotImplementedError("Unsupported CompuScaleContents %s" % type(compu_scale.compuScaleContents))
771
-
772
- def writeCompuScales(self, element: ET.Element, compu_scales: CompuScales):
773
- compu_scales_tag = ET.SubElement(element, "COMPU-SCALES")
774
- for compu_scale in compu_scales.getCompuScales():
775
- child_element = ET.SubElement(compu_scales_tag, "COMPU-SCALE")
776
- self.setARObjectAttributes(child_element, compu_scale)
777
- self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", compu_scale.short_label)
778
- self.setChildElementOptionalLiteral(child_element, "SYMBOL", compu_scale.symbol)
779
- self.writeChildLimitElement(child_element, "LOWER-LIMIT", compu_scale.lowerLimit)
780
- self.writeChildLimitElement(child_element, "UPPER-LIMIT", compu_scale.upperLimit)
781
- self.writeCompuScaleContents(child_element, compu_scale)
782
-
783
- def writeCompuInternalToPhys(self, element: ET.Element, compu_method: CompuMethod):
784
- if compu_method.compu_internal_to_phys is not None:
785
- compu_internal_to_phys_tag = ET.SubElement(element, "COMPU-INTERNAL-TO-PHYS")
786
- self.setARObjectAttributes(compu_internal_to_phys_tag, compu_method.compu_internal_to_phys)
787
- if isinstance(compu_method.compu_internal_to_phys.compu_content, CompuScales):
788
- self.writeCompuScales(compu_internal_to_phys_tag, compu_method.compu_internal_to_phys.compu_content)
789
-
790
- def writeCompuMethod(self, element: ET.Element, compu_method: CompuMethod):
791
- compu_method_tag = ET.SubElement(element, "COMPU-METHOD")
792
- self.logger.debug("writeCompuMethods %s" % compu_method.short_name)
793
- self.setIdentifiable(compu_method_tag, compu_method)
794
- self.setChildElementOptionalRefType(compu_method_tag, "UNIT-REF", compu_method.unit_ref)
795
- self.writeCompuInternalToPhys(compu_method_tag, compu_method)
799
+ self.notImplemented("Unsupported CompuScaleContents %s" % type(compu_scale.compuScaleContents))
800
+
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())
829
+
830
+ def setCompu(self, element: ET.Element, key: str, compu: Compu):
831
+ if compu is not None:
832
+ child_element = ET.SubElement(element, key)
833
+ self.setARObjectAttributes(child_element, compu)
834
+ self.setCompuScales(child_element, compu.getCompuContent())
835
+ self.setCompuConst(child_element, "COMPU-DEFAULT-VALUE", compu.getCompuDefaultValue())
836
+
837
+ def setCompuMethod(self, element: ET.Element, compu_method: CompuMethod):
838
+ child_element = ET.SubElement(element, "COMPU-METHOD")
839
+ self.logger.debug("write CompuMethods %s" % compu_method.getShortName())
840
+ self.setIdentifiable(child_element, compu_method)
841
+ self.setChildElementOptionalRefType(child_element, "UNIT-REF", compu_method.getUnitRef())
842
+ self.setCompu(child_element, "COMPU-INTERNAL-TO-PHYS", compu_method.getCompuInternalToPhys())
843
+ self.setCompu(child_element, "COMPU-PHYS-TO-INTERNAL", compu_method.getCompuPhysToInternal())
796
844
 
797
845
  def setApplicationValueSpecification(self, element: ET.Element, spec: ApplicationValueSpecification):
798
846
  spec_tag = ET.SubElement(element, "APPLICATION-VALUE-SPECIFICATION")
799
- self.setChildElementOptionalLiteral(spec_tag, "SHORT-LABEL", spec.short_label)
847
+ self.setChildElementOptionalLiteral(spec_tag, "SHORT-LABEL", spec.getShortLabel())
800
848
  self.setChildElementOptionalLiteral(spec_tag, "CATEGORY", spec.category)
801
- self.writeSwValueCont(spec_tag, spec.sw_value_cont)
849
+ self.writeSwValueCont(spec_tag, spec.getSwValueCont())
802
850
 
803
851
  def setRecordValueSpecification(self, element: ET.Element, spec: RecordValueSpecification):
804
852
  child_element = ET.SubElement(element, "RECORD-VALUE-SPECIFICATION")
805
853
  self.setARObjectAttributes(child_element, spec)
806
- self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", spec.short_label)
807
- fields = spec.get_fields()
854
+ self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", spec.getShortLabel())
855
+ fields = spec.getFields()
808
856
  if len(fields) > 0:
809
857
  fields_tag = ET.SubElement(child_element, "FIELDS")
810
858
  for field in fields:
@@ -816,34 +864,35 @@ class ARXMLWriter(AbstractARXMLWriter):
816
864
  self.setTextValueSpecification(fields_tag, field)
817
865
  elif isinstance(field, ArrayValueSpecification):
818
866
  self.setArrayValueSpecification(fields_tag, field)
867
+ elif isinstance(field, RecordValueSpecification):
868
+ self.setRecordValueSpecification(fields_tag, field)
819
869
  else:
820
- raise NotImplementedError("Unsupported Field <%s>" % type(field))
870
+ self.notImplemented("Unsupported Field <%s>" % type(field))
821
871
 
822
872
  def writeConstantSpecification(self, element: ET.Element, spec: ConstantSpecification):
823
873
  spec_tag = ET.SubElement(element, "CONSTANT-SPECIFICATION")
824
874
  self.setIdentifiable(spec_tag, spec)
825
875
 
826
876
  if spec.getValueSpec() is not None:
827
- value_spec_tag = ET.SubElement(spec_tag, "VALUE-SPEC")
828
- self.setValueSpecification(value_spec_tag, spec.getValueSpec())
877
+ self.setValueSpecification(spec_tag, "VALUE-SPEC", spec.getValueSpec())
829
878
 
830
879
  def setInternalConstrs(self, element: ET.Element, constrs: InternalConstrs):
831
880
  if constrs is not None:
832
881
  constrs_tag = ET.SubElement(element, "INTERNAL-CONSTRS")
833
882
  self.setARObjectAttributes(constrs_tag, constrs)
834
883
  if constrs.lower_limit is not None:
835
- self.writeChildLimitElement(constrs_tag, "LOWER-LIMIT", constrs.lower_limit)
884
+ self.setChildLimitElement(constrs_tag, "LOWER-LIMIT", constrs.lower_limit)
836
885
  if constrs.upper_limit is not None:
837
- self.writeChildLimitElement(constrs_tag, "UPPER-LIMIT", constrs.upper_limit)
886
+ self.setChildLimitElement(constrs_tag, "UPPER-LIMIT", constrs.upper_limit)
838
887
 
839
888
  def setPhysConstrs(self, element: ET.Element, constrs: PhysConstrs):
840
889
  if constrs is not None:
841
890
  child_element = ET.SubElement(element, "PHYS-CONSTRS")
842
891
  self.setARObjectAttributes(child_element, constrs)
843
892
  if constrs.lower_limit is not None:
844
- self.writeChildLimitElement(child_element, "LOWER-LIMIT", constrs.lower_limit)
893
+ self.setChildLimitElement(child_element, "LOWER-LIMIT", constrs.lower_limit)
845
894
  if constrs.upper_limit is not None:
846
- self.writeChildLimitElement(child_element, "UPPER-LIMIT", constrs.upper_limit)
895
+ self.setChildLimitElement(child_element, "UPPER-LIMIT", constrs.upper_limit)
847
896
  self.setChildElementOptionalRefType(child_element, "UNIT-REF", constrs.unit_ref)
848
897
 
849
898
  def writeDataConstrRules(self, element: ET.Element, parent: DataConstr):
@@ -863,7 +912,7 @@ class ARXMLWriter(AbstractARXMLWriter):
863
912
  self.writeDataConstrRules(child_element, constr)
864
913
 
865
914
  def writeUnit(self, element: ET.Element, unit: Unit):
866
- self.logger.debug("writeUnit %s" % unit.short_name)
915
+ self.logger.debug("writeUnit %s" % unit.getShortName())
867
916
  child_element = ET.SubElement(element, "UNIT")
868
917
  self.setIdentifiable(child_element, unit)
869
918
  self.setChildElementOptionalLiteral(child_element, "DISPLAY-NAME", unit.getDisplayName())
@@ -873,15 +922,18 @@ class ARXMLWriter(AbstractARXMLWriter):
873
922
 
874
923
  def setRModeInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: RModeInAtomicSwcInstanceRef):
875
924
  child_element = ET.SubElement(element, key)
925
+ self.setARObjectAttributes(child_element, iref)
876
926
  self.setChildElementOptionalRefType(child_element, "BASE", iref.getBaseRef())
877
927
  self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", iref.getContextPortRef())
878
928
  self.setChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF", iref.getContextModeDeclarationGroupPrototypeRef())
879
929
  self.setChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF", iref.getTargetModeDeclarationRef())
880
930
 
881
931
  def setPOperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: POperationInAtomicSwcInstanceRef):
882
- child_element = ET.SubElement(element, key)
883
- self.setChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF", iref.context_p_port_ref)
884
- self.setChildElementOptionalRefType(child_element, "TARGET-PROVIDED-OPERATION-REF", iref.target_provided_operation_ref)
932
+ if iref is not None:
933
+ child_element = ET.SubElement(element, key)
934
+ self.setARObjectAttributes(child_element, iref)
935
+ self.setChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF", iref.getContextPPortRef())
936
+ self.setChildElementOptionalRefType(child_element, "TARGET-PROVIDED-OPERATION-REF", iref.getTargetProvidedOperationRef())
885
937
 
886
938
  def setRTEEvent(self, element: ET.Element, event: RTEEvent):
887
939
  self.setIdentifiable(element, event)
@@ -896,7 +948,8 @@ class ARXMLWriter(AbstractARXMLWriter):
896
948
  if event is not None:
897
949
  child_element = ET.SubElement(element, "TIMING-EVENT")
898
950
  self.setRTEEvent(child_element, event)
899
- self.setChildElementOptionalFloatValue(child_element, "PERIOD", event.period)
951
+ self.setChildElementOptionalTimeValue(child_element, "OFFSET", event.getOffset())
952
+ self.setChildElementOptionalTimeValue(child_element, "PERIOD", event.getPeriod())
900
953
 
901
954
  def setOperationInvokedEvent(self, element: ET.Element, event: OperationInvokedEvent):
902
955
  if event is not None:
@@ -935,6 +988,12 @@ class ARXMLWriter(AbstractARXMLWriter):
935
988
  child_element = ET.SubElement(element, "INIT-EVENT")
936
989
  self.setRTEEvent(child_element, event)
937
990
 
991
+ def setAsynchronousServerCallReturnsEvent(self, element: ET.Element, event: InitEvent):
992
+ if event is not None:
993
+ child_element = ET.SubElement(element, "ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT")
994
+ self.setRTEEvent(child_element, event)
995
+ self.setChildElementOptionalRefType(child_element, "EVENT-SOURCE-REF", event.getActivationReasonRepresentationRef())
996
+
938
997
  def writeRTEEvents(self, element: ET.Element, parent: SwcInternalBehavior):
939
998
  events = parent.getRteEvents()
940
999
  if len(events) > 0:
@@ -953,8 +1012,10 @@ class ARXMLWriter(AbstractARXMLWriter):
953
1012
  self.setInternalTriggerOccurredEvent(child_element, event)
954
1013
  elif isinstance(event, InitEvent):
955
1014
  self.setInitEvent(child_element, event)
1015
+ elif isinstance(event, AsynchronousServerCallReturnsEvent):
1016
+ self.setAsynchronousServerCallReturnsEvent(child_element, event)
956
1017
  else:
957
- raise NotImplementedError("Unsupported Event <%s>" % type(event))
1018
+ self.notImplemented("Unsupported Event <%s>" % type(event))
958
1019
 
959
1020
  def writeExclusiveAreas(self, element: ET.Element, behavior: InternalBehavior):
960
1021
  areas = behavior.getExclusiveAreas()
@@ -990,6 +1051,7 @@ class ARXMLWriter(AbstractARXMLWriter):
990
1051
  self.setARObjectAttributes(child_element, ref)
991
1052
  if ref.getAutosarVariableIRef() is not None:
992
1053
  child_element = ET.SubElement(child_element, "AUTOSAR-VARIABLE-IREF")
1054
+ #self.setARObjectAttributes(child_element, ref)
993
1055
  self.setChildElementOptionalRefType(child_element, "PORT-PROTOTYPE-REF", ref.getAutosarVariableIRef().getPortPrototypeRef())
994
1056
  self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", ref.getAutosarVariableIRef().getTargetDataPrototypeRef())
995
1057
  self.setChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF", ref.getLocalVariableRef())
@@ -1007,9 +1069,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1007
1069
  self.setIdentifiable(child_element, access)
1008
1070
  self.setAutosarVariableRef(child_element, access.getAccessedVariableRef())
1009
1071
 
1010
- def writeDataReadAccesses(self, element: ET.Element, entity: RunnableEntity):
1011
- #accesses = entity.getDataReadAccesses():
1012
- pass
1072
+
1013
1073
 
1014
1074
  def setAutosarParameterRef(self, element: ET.Element, key: str, parameter_ref: AutosarParameterRef):
1015
1075
  if parameter_ref is not None:
@@ -1042,12 +1102,19 @@ class ARXMLWriter(AbstractARXMLWriter):
1042
1102
  for point in points:
1043
1103
  self.setVariableAccess(child_element, point)
1044
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
+
1045
1112
  def writeDataWriteAccesses(self, element: ET.Element, entity: RunnableEntity):
1046
- points = entity.getDataWriteAccesses()
1047
- if len(points) > 0:
1113
+ accesses = entity.getDataWriteAccesses()
1114
+ if len(accesses) > 0:
1048
1115
  child_element = ET.SubElement(element, "DATA-WRITE-ACCESSS")
1049
- for point in points:
1050
- self.setVariableAccess(child_element, point)
1116
+ for access in accesses:
1117
+ self.setVariableAccess(child_element, access)
1051
1118
 
1052
1119
  def writeReadLocalVariables(self, element: ET.Element, entity: RunnableEntity):
1053
1120
  variables = entity.getReadLocalVariables()
@@ -1059,8 +1126,9 @@ class ARXMLWriter(AbstractARXMLWriter):
1059
1126
  def setROperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: ROperationInAtomicSwcInstanceRef):
1060
1127
  if iref is not None:
1061
1128
  child_element = ET.SubElement(element, key)
1062
- self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.context_r_port_ref)
1063
- self.setChildElementOptionalRefType(child_element, "TARGET-REQUIRED-OPERATION-REF", iref.target_required_operation_ref)
1129
+ self.setARObjectAttributes(child_element, iref)
1130
+ self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.getContextRPortRef())
1131
+ self.setChildElementOptionalRefType(child_element, "TARGET-REQUIRED-OPERATION-REF", iref.getTargetRequiredOperationRef())
1064
1132
 
1065
1133
  def setServerCallPoint(self, element: ET.Element, call_point: ServerCallPoint):
1066
1134
  self.setROperationInAtomicSwcInstanceRef(element, "OPERATION-IREF", call_point.getOperationIRef())
@@ -1071,6 +1139,11 @@ class ARXMLWriter(AbstractARXMLWriter):
1071
1139
  self.setIdentifiable(child_element, call_point)
1072
1140
  self.setServerCallPoint(child_element, call_point)
1073
1141
 
1142
+ def setAsynchronousServerCallPoint(self, element: ET.Element, call_point: SynchronousServerCallPoint):
1143
+ child_element = ET.SubElement(element, "ASYNCHRONOUS-SERVER-CALL-POINT")
1144
+ self.setIdentifiable(child_element, call_point)
1145
+ self.setServerCallPoint(child_element, call_point)
1146
+
1074
1147
  def writeServerCallPoints(self, element: ET.Element, entity: RunnableEntity):
1075
1148
  call_points = entity.getServerCallPoints()
1076
1149
  if len(call_points) > 0:
@@ -1078,6 +1151,8 @@ class ARXMLWriter(AbstractARXMLWriter):
1078
1151
  for call_point in call_points:
1079
1152
  if isinstance(call_point, SynchronousServerCallPoint):
1080
1153
  self.setSynchronousServerCallPoint(child_element, call_point)
1154
+ elif isinstance(call_point, AsynchronousServerCallPoint):
1155
+ self.setAsynchronousServerCallPoint(child_element, call_point)
1081
1156
  else:
1082
1157
  self._raiseError("Unsupported ServerCallPoint type <%s>" % type(call_point))
1083
1158
 
@@ -1130,15 +1205,26 @@ class ARXMLWriter(AbstractARXMLWriter):
1130
1205
  if isinstance(argument, RunnableEntityArgument):
1131
1206
  self.setRunnableEntityArgument(child_element, argument)
1132
1207
  else:
1133
- raise NotImplementedError("Unsupported argument of Runnable Entity <%s>" % type(argument))
1208
+ self.notImplemented("Unsupported argument of Runnable Entity <%s>" % type(argument))
1209
+
1210
+ def writeAsynchronousServerCallResultPoint(self, element: ET.Element, entity: RunnableEntity):
1211
+ points = entity.getAsynchronousServerCallResultPoints()
1212
+ if len(points) > 0:
1213
+ points_tag = ET.SubElement(element, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINTS")
1214
+ for point in points:
1215
+ child_element = ET.SubElement(points_tag, "ASYNCHRONOUS-SERVER-CALL-RESULT-POINT")
1216
+ self.setIdentifiable(child_element, point)
1217
+ self.setChildElementOptionalRefType(child_element, "ASYNCHRONOUS-SERVER-CALL-POINT-REF", point.getAsynchronousServerCallPointRef())
1134
1218
 
1135
1219
  def writeRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
1136
1220
  if entity is not None:
1137
1221
  child_element = ET.SubElement(element, "RUNNABLE-ENTITY")
1138
1222
  self.setExecutableEntity(child_element, entity)
1139
1223
  self.writeRunnableEntityArguments(child_element, entity)
1224
+ self.writeAsynchronousServerCallResultPoint(child_element, entity)
1140
1225
  self.setChildElementOptionalBooleanValue(child_element, "CAN-BE-INVOKED-CONCURRENTLY", entity.getCanBeInvokedConcurrently())
1141
1226
  self.writeParameterAccesses(child_element, entity)
1227
+ self.writeDataReadAccesses(child_element, entity)
1142
1228
  self.writeDataReceivePointByArguments(child_element, entity)
1143
1229
  self.writeDataSendPoints(child_element, entity)
1144
1230
  self.writeDataWriteAccesses(child_element, entity)
@@ -1157,7 +1243,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1157
1243
  if isinstance(entity, RunnableEntity):
1158
1244
  self.writeRunnableEntity(runnables_tag, entity)
1159
1245
  else:
1160
- raise NotImplementedError("Unsupported RunnableEntity <%s>" % type(entity))
1246
+ self.notImplemented("Unsupported RunnableEntity <%s>" % type(entity))
1161
1247
 
1162
1248
  def writeExplicitInterRunnableVariables(self, element: ET.Element, behavior: SwcInternalBehavior):
1163
1249
  prototypes = behavior.getExplicitInterRunnableVariables()
@@ -1176,34 +1262,32 @@ class ARXMLWriter(AbstractARXMLWriter):
1176
1262
  for memory in memories:
1177
1263
  child_element = ET.SubElement(memories_tag, "PER-INSTANCE-MEMORY")
1178
1264
  self.setIdentifiable(child_element, memory)
1179
- self.setChildElementOptionalLiteral(child_element, "INIT-VALUE", memory.initValue)
1180
- self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", memory.swDataDefProps)
1181
- self.setChildElementOptionalLiteral(child_element, "TYPE", memory.type)
1182
- self.setChildElementOptionalLiteral (child_element, "TYPE-DEFINITION", memory.typeDefinition)
1265
+ self.setChildElementOptionalLiteral(child_element, "INIT-VALUE", memory.getInitValue())
1266
+ self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", memory.getSwDataDefProps())
1267
+ self.setChildElementOptionalLiteral(child_element, "TYPE", memory.getType())
1268
+ self.setChildElementOptionalLiteral (child_element, "TYPE-DEFINITION", memory.getTypeDefinition())
1183
1269
 
1184
1270
  def writeParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
1185
1271
  child_element = ET.SubElement(element, "PARAMETER-DATA-PROTOTYPE")
1186
1272
  self.setIdentifiable(child_element, prototype)
1187
- self.writeAutosarDataPrototype(child_element, prototype)
1188
- self.setInitValue(child_element, prototype.initValue)
1273
+ self.setAutosarDataPrototype(child_element, prototype)
1274
+ self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
1189
1275
 
1190
- def writeParameterDataPrototypes(self, element: ET.Element, behavior: SwcInternalBehavior):
1276
+ def writePerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
1191
1277
  prototypes = behavior.getPerInstanceParameters()
1192
1278
  if len(prototypes) > 0:
1193
1279
  child_element = ET.SubElement(element, "PER-INSTANCE-PARAMETERS")
1194
1280
  for prototype in prototypes:
1195
1281
  self.writeParameterDataPrototype(child_element, prototype)
1196
1282
 
1197
- def writePortDefinedArgumentValues(self, element: ET.Element, option: PortAPIOption) :
1198
- argument_values = option.getPortArgValues()
1283
+ def writePortDefinedArgumentValues(self, element: ET.Element, argument_values: List[PortDefinedArgumentValue]) :
1199
1284
  if len(argument_values) > 0:
1200
1285
  child_element = ET.SubElement(element, "PORT-ARG-VALUES")
1201
1286
  for argument_value in argument_values:
1202
1287
  child_element = ET.SubElement(child_element, "PORT-DEFINED-ARGUMENT-VALUE")
1203
- if argument_value.value is not None:
1204
- value_tag = ET.SubElement(child_element, "VALUE")
1205
- self.setValueSpecification(value_tag, argument_value.value)
1206
- 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())
1207
1291
 
1208
1292
  def writePortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
1209
1293
  options = behavior.getPortAPIOptions()
@@ -1211,19 +1295,36 @@ class ARXMLWriter(AbstractARXMLWriter):
1211
1295
  port_api_options_tag = ET.SubElement(element, "PORT-API-OPTIONS")
1212
1296
  for option in options:
1213
1297
  child_element = ET.SubElement(port_api_options_tag, "PORT-API-OPTION")
1214
- self.setChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS", option.enableTakeAddress)
1215
- self.setChildElementOptionalBooleanValue(child_element, "INDIRECT-API", option.indirectAPI)
1216
- self.writePortDefinedArgumentValues(child_element, option)
1217
- 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())
1303
+
1304
+ def writeRoleBasedDataTypeAssignment(self, element: ET.Element, assignment: RoleBasedDataTypeAssignment):
1305
+ child_element = ET.SubElement(element, "ROLE-BASED-DATA-TYPE-ASSIGNMENT")
1306
+ self.setChildElementOptionalLiteral(child_element, "ROLE", assignment.role)
1307
+ self.setChildElementOptionalRefType(child_element, "USED-IMPLEMENTATION-DATA-TYPE-REF", assignment.usedImplementationDataTypeRef)
1308
+
1309
+ def writeServiceDependencyAssignedDataType(self, element: ET.Element, dependency: ServiceDependency):
1310
+ assigned_data = dependency.getAssignedDataTypes()
1311
+ if len(assigned_data) > 0:
1312
+ child_element = ET.SubElement(element, "ASSIGNED-DATA-TYPES")
1313
+ for data in assigned_data:
1314
+ if isinstance(data, RoleBasedDataTypeAssignment):
1315
+ self.writeRoleBasedDataTypeAssignment(child_element, data)
1316
+ else:
1317
+ self._raiseError("Unsupported Assigned Data <%s>" % type(data))
1218
1318
 
1219
1319
  def writeServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
1220
1320
  self.setIdentifiable(element, dependency)
1321
+ self.writeServiceDependencyAssignedDataType(element, dependency)
1221
1322
 
1222
1323
  def writeRoleBasedDataAssignment(self, element: ET.Element, assignment: RoleBasedDataAssignment):
1223
1324
  child_element = ET.SubElement(element, "ROLE-BASED-DATA-ASSIGNMENT")
1224
1325
  self.setChildElementOptionalLiteral(child_element, "ROLE", assignment.role)
1225
- self.setAutosarParameterRef(child_element, "USED-PARAMETER-ELEMENT", assignment.used_parameter_element)
1226
- self.setChildElementOptionalRefType(child_element, "USED-PIM-REF", assignment.used_pim_ref)
1326
+ self.setAutosarParameterRef(child_element, "USED-PARAMETER-ELEMENT", assignment.getUsedParameterElement())
1327
+ self.setChildElementOptionalRefType(child_element, "USED-PIM-REF", assignment.getUsedPimRef())
1227
1328
 
1228
1329
  def writeRoleBasedPortAssignment(self, element: ET.Element, assignment: RoleBasedPortAssignment):
1229
1330
  child_element = ET.SubElement(element, "ROLE-BASED-PORT-ASSIGNMENT")
@@ -1252,20 +1353,81 @@ class ARXMLWriter(AbstractARXMLWriter):
1252
1353
 
1253
1354
  def writeNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
1254
1355
  child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
1255
- self.logger.debug("writeNvBlockNeeds %s" % needs.short_name)
1356
+ self.logger.debug("write NvBlockNeeds %s" % needs.getShortName())
1357
+ self.setIdentifiable(child_element, needs)
1358
+ self.setChildElementOptionalBooleanValue(child_element, "CALC-RAM-BLOCK-CRC", needs.getCalcRamBlockCrc())
1359
+ self.setChildElementOptionalBooleanValue(child_element, "CHECK-STATIC-BLOCK-ID", needs.getCheckStaticBlockId())
1360
+ self.setChildElementOptionalNumericalValue(child_element, "N-DATA-SETS", needs.getNDataSets())
1361
+ self.setChildElementOptionalNumericalValue(child_element, "N-ROM-BLOCKS", needs.getNRomBlocks())
1362
+ self.setChildElementOptionalLiteral(child_element, "RAM-BLOCK-STATUS-CONTROL", needs.getRamBlockStatusControl())
1363
+ self.setChildElementOptionalBooleanValue(child_element, "READONLY", needs.getReadonly())
1364
+ self.setChildElementOptionalLiteral(child_element, "RELIABILITY", needs.getReliability())
1365
+ self.setChildElementOptionalBooleanValue(child_element, "RESISTANT-TO-CHANGED-SW", needs.getResistantToChangedSw())
1366
+ self.setChildElementOptionalBooleanValue(child_element, "RESTORE-AT-START", needs.getRestoreAtStart())
1367
+ self.setChildElementOptionalBooleanValue(child_element, "STORE-AT-SHUTDOWN", needs.getStoreAtShutdown())
1368
+ self.setChildElementOptionalBooleanValue(child_element, "STORE-CYCLIC", needs.getStoreCyclic())
1369
+ self.setChildElementOptionalBooleanValue(child_element, "STORE-EMERGENCY", needs.getStoreEmergency())
1370
+ self.setChildElementOptionalBooleanValue(child_element, "STORE-IMMEDIATE", needs.getStoreImmediate())
1371
+ self.setChildElementOptionalBooleanValue(child_element, "USE-AUTO-VALIDATION-AT-SHUT-DOWN", needs.getUseAutoValidationAtShutDown())
1372
+ self.setChildElementOptionalBooleanValue(child_element, "USE-CRC-COMP-MECHANISM", needs.getUseCRCCompMechanism())
1373
+ self.setChildElementOptionalBooleanValue(child_element, "WRITE-ONLY-ONCE", needs.getWriteOnlyOnce())
1374
+ self.setChildElementOptionalBooleanValue(child_element, "WRITE-VERIFICATION", needs.getWriteVerification())
1375
+ self.setChildElementOptionalLiteral(child_element, "WRITING-PRIORITY", needs.getWritingPriority())
1376
+
1377
+ def writeDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
1378
+ child_element = ET.SubElement(element, "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS")
1379
+ self.logger.debug("write DiagnosticCommunicationManagerNeeds %s" % needs.getShortName())
1380
+ self.setIdentifiable(child_element, needs)
1381
+ self.setChildElementOptionalLiteral(child_element, "SERVICE-REQUEST-CALLBACK-TYPE", needs.getServiceRequestCallbackType())
1382
+
1383
+ def writeDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
1384
+ child_element = ET.SubElement(element, "DIAGNOSTIC-ROUTINE-NEEDS")
1385
+ self.logger.debug("write DiagnosticRoutineNeeds %s" % needs.getShortName())
1386
+ self.setIdentifiable(child_element, needs)
1387
+ self.setChildElementOptionalLiteral(child_element, "DIAG-ROUTINE-TYPE", needs.getDiagRoutineType())
1388
+ self.setChildElementOptionalIntegerValue(child_element, "RID-NUMBER", needs.getRidNumber())
1389
+
1390
+ def writeDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
1391
+ child_element = ET.SubElement(element, "DIAGNOSTIC-VALUE-NEEDS")
1392
+ self.logger.debug("write DiagnosticValueNeeds %s" % needs.getShortName())
1393
+ self.setIdentifiable(child_element, needs)
1394
+ self.setChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH", needs.getDataLength())
1395
+ self.setChildElementOptionalLiteral(child_element, "DIAGNOSTIC-VALUE-ACCESS", needs.getDiagnosticValueAccess())
1396
+ self.setChildElementOptionalIntegerValue(child_element, "DID-NUMBER", needs.getDidNumber())
1397
+ self.setChildElementOptionalBooleanValue(child_element, "FIXED-LENGTH", needs.getFixedLength())
1398
+ self.setChildElementOptionalLiteral(child_element, "PROCESSING-STYLE", needs.getProcessingStyle())
1399
+
1400
+ def setDiagEventDebounceMonitorInternal(self, element: ET.Element, algorithm: DiagEventDebounceMonitorInternal):
1401
+ child_element = ET.SubElement(element, "DIAG-EVENT-DEBOUNCE-MONITOR-INTERNAL")
1402
+ self.setIdentifiable(child_element, algorithm)
1403
+
1404
+ def writeDiagEventDebounceAlgorithm(self, element: ET.Element, needs: DiagnosticEventNeeds):
1405
+ algorithm = needs.getDiagEventDebounceAlgorithm()
1406
+ if algorithm is not None:
1407
+ child_element = ET.SubElement(element, "DIAG-EVENT-DEBOUNCE-ALGORITHM")
1408
+ if isinstance(algorithm, DiagEventDebounceMonitorInternal):
1409
+ self.setDiagEventDebounceMonitorInternal(child_element, algorithm)
1410
+ else:
1411
+ self.notImplemented("Unsupported DiagEventDebounceAlgorithm <%s>" % type(algorithm))
1412
+
1413
+ def writeDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
1414
+ child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-NEEDS")
1415
+ self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
1416
+ self.setIdentifiable(child_element, needs)
1417
+ self.writeDiagEventDebounceAlgorithm(child_element, needs)
1418
+ self.setChildElementOptionalLiteral(child_element, "DTC-KIND", needs.getDtcKind())
1419
+ self.setChildElementOptionalIntegerValue(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
1420
+
1421
+ def writeCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
1422
+ child_element = ET.SubElement(element, "CRYPTO-SERVICE-NEEDS")
1423
+ self.logger.debug("write CryptoServiceNeeds %s" % needs.getShortName())
1424
+ self.setIdentifiable(child_element, needs)
1425
+ self.setChildElementOptionalPositiveInteger(child_element, "MAXIMUM-KEY-LENGTH", needs.getMaximumKeyLength())
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())
1256
1430
  self.setIdentifiable(child_element, needs)
1257
- self.setChildElementOptionalBooleanValue(child_element, "CALC-RAM-BLOCK-CRC", needs.calc_ram_block_crc)
1258
- self.setChildElementOptionalBooleanValue(child_element, "CHECK-STATIC-BLOCK-ID", needs.check_static_block_id)
1259
- self.setChildElementOptionalNumericalValue(child_element, "N-DATA-SETS", needs.n_data_sets)
1260
- self.setChildElementOptionalNumericalValue(child_element, "N-ROM-BLOCKS", needs.n_rom_blocks)
1261
- self.setChildElementOptionalBooleanValue(child_element, "READONLY", needs.readonly)
1262
- self.setChildElementOptionalLiteral(child_element, "RELIABILITY", needs.reliability)
1263
- self.setChildElementOptionalBooleanValue(child_element, "RESISTANT-TO-CHANGED-SW", needs.resistant_to_changed_sw)
1264
- self.setChildElementOptionalBooleanValue(child_element, "RESTORE-AT-START", needs.restore_at_start)
1265
- self.setChildElementOptionalBooleanValue(child_element, "STORE-AT-SHUTDOWN", needs.store_at_shutdown)
1266
- self.setChildElementOptionalBooleanValue(child_element, "WRITE-ONLY-ONCE", needs.write_only_once)
1267
- self.setChildElementOptionalBooleanValue(child_element, "WRITE-VERIFICATION", needs.write_verification)
1268
- self.setChildElementOptionalLiteral(child_element, "WRITING-PRIORITY", needs.writing_priority)
1269
1431
 
1270
1432
  def writeSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
1271
1433
  needs = parent.getServiceNeeds()
@@ -1273,7 +1435,19 @@ class ARXMLWriter(AbstractARXMLWriter):
1273
1435
  child_element = ET.SubElement(element, "SERVICE-NEEDS")
1274
1436
  for need in needs:
1275
1437
  if isinstance(need, NvBlockNeeds):
1276
- self.writeNvBlockNeeds(child_element, need)
1438
+ self.writeNvBlockNeeds(child_element, need)
1439
+ elif isinstance(need, DiagnosticCommunicationManagerNeeds):
1440
+ self.writeDiagnosticCommunicationManagerNeeds(child_element, need)
1441
+ elif isinstance(need, DiagnosticRoutineNeeds):
1442
+ self.writeDiagnosticRoutineNeeds(child_element, need)
1443
+ elif isinstance(need, DiagnosticValueNeeds):
1444
+ self.writeDiagnosticValueNeeds(child_element, need)
1445
+ elif isinstance(need, DiagnosticEventNeeds):
1446
+ self.writeDiagnosticEventNeeds(child_element, need)
1447
+ elif isinstance(need, CryptoServiceNeeds):
1448
+ self.writeCryptoServiceNeeds(child_element, need)
1449
+ elif isinstance(need, EcuStateMgrUserNeeds):
1450
+ self.writeEcuStateMgrUserNeeds(child_element, need)
1277
1451
  else:
1278
1452
  self._raiseError("Unsupported service needs <%s>" % type(need))
1279
1453
 
@@ -1307,20 +1481,20 @@ class ARXMLWriter(AbstractARXMLWriter):
1307
1481
  self.setChildElementOptionalRefType(data_type_refs_tag, "DATA-TYPE-REF", type_ref)
1308
1482
 
1309
1483
  def writeSwcInternalBehavior(self, element: ET.Element, behavior: SwcInternalBehavior):
1310
- self.logger.debug("writeSwInternalBehavior %s" % behavior.short_name)
1484
+ self.logger.debug("writeSwInternalBehavior %s" % behavior.getShortName())
1311
1485
 
1312
1486
  child_element = ET.SubElement(element, "SWC-INTERNAL-BEHAVIOR")
1313
1487
  self.writeInternalBehavior(child_element, behavior)
1314
1488
  self.writeRTEEvents(child_element, behavior)
1315
1489
  self.writeExplicitInterRunnableVariables(child_element, behavior)
1316
- self.setChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART", behavior.handle_termination_and_restart)
1490
+ self.setChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART", behavior.handleTerminationAndRestart)
1317
1491
  self.setIncludedDataTypeSets(child_element, behavior.getIncludedDataTypeSets())
1318
1492
  self.writePerInstanceMemories(child_element, behavior)
1319
- self.writeParameterDataPrototypes(child_element, behavior)
1493
+ self.writePerInstanceParameters(child_element, behavior)
1320
1494
  self.writePortAPIOptions(child_element, behavior)
1321
1495
  self.writeSwcInternalBehaviorRunnableEntities(child_element, behavior)
1322
1496
  self.writeSwcInternalBehaviorServiceDependencies(child_element, behavior)
1323
- self.setChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION", behavior.supports_multiple_instantiation)
1497
+ self.setChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION", behavior.supportsMultipleInstantiation)
1324
1498
 
1325
1499
  def writeAtomicSwComponentTypeInternalBehaviors(self, element: ET.Element, behavior: InternalBehavior):
1326
1500
  if behavior is not None:
@@ -1335,7 +1509,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1335
1509
  self.writeAtomicSwComponentTypeInternalBehaviors(element, sw_component.internal_behavior)
1336
1510
 
1337
1511
  def writeComplexDeviceDriverSwComponentType(self, element: ET.Element, sw_component: ComplexDeviceDriverSwComponentType):
1338
- self.logger.debug("writeComplexDeviceDriverSwComponentType %s" % sw_component.short_name)
1512
+ self.logger.debug("writeComplexDeviceDriverSwComponentType %s" % sw_component.getShortName())
1339
1513
  child_element = ET.SubElement(element, "COMPLEX-DEVICE-DRIVER-SW-COMPONENT-TYPE")
1340
1514
  self.writeAtomicSwComponentType(child_element, sw_component)
1341
1515
 
@@ -1351,7 +1525,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1351
1525
  self.setChildElementOptionalLiteral(artifact_desc_tag, "CATEGORY", artifact_desc.category)
1352
1526
 
1353
1527
  def setCode(self, element: ET.SubElement, code_desc: Code):
1354
- self.logger.debug("setCode %s" % code_desc.short_name)
1528
+ self.logger.debug("setCode %s" % code_desc.getShortName())
1355
1529
  child_element = ET.SubElement(element, "CODE")
1356
1530
  self.setIdentifiable(child_element, code_desc)
1357
1531
  self.writeArtifactDescriptor(child_element, code_desc)
@@ -1379,18 +1553,39 @@ class ARXMLWriter(AbstractARXMLWriter):
1379
1553
  for memory_section in memory_sections:
1380
1554
  child_element = ET.SubElement(sections_tag, "MEMORY-SECTION")
1381
1555
  self.setIdentifiable(child_element, memory_section)
1382
- self.setChildElementOptionalLiteral(child_element, "ALIGNMENT", memory_section.alignment)
1556
+ self.setChildElementOptionalLiteral(child_element, "ALIGNMENT", memory_section.getAlignment())
1557
+ self.setChildElementOptionalLiteral(child_element, "MEM-CLASS-SYMBOL", memory_section.getMemClassSymbol())
1383
1558
  self.setMemorySectionOptions(child_element, memory_section.getOptions())
1384
- self.setChildElementOptionalNumericalValue(child_element, "SIZE", memory_section.size)
1385
- self.setChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF", memory_section.swAddrMethodRef)
1386
- self.setChildElementOptionalLiteral(child_element, "SYMBOL", memory_section.symbol)
1387
- self.logger.debug("writeMemorySections %s" % memory_section.short_name)
1559
+ self.setChildElementOptionalNumericalValue(child_element, "SIZE", memory_section.getSize())
1560
+ self.setChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF", memory_section.getSwAddrMethodRef())
1561
+ self.setChildElementOptionalLiteral(child_element, "SYMBOL", memory_section.getSymbol())
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))
1388
1582
 
1389
1583
  def setResourceConsumption(self, element: ET.Element, consumption: ResourceConsumption):
1390
1584
  if consumption is not None:
1391
1585
  child_element = ET.SubElement(element, "RESOURCE-CONSUMPTION")
1392
1586
  self.setIdentifiable(child_element, consumption)
1393
1587
  self.writeMemorySections(child_element, consumption)
1588
+ self.writeStackUsages(child_element, consumption.getStackUsages())
1394
1589
 
1395
1590
  def writeImplementation(self, element: ET.Element, impl: Implementation):
1396
1591
  self.setIdentifiable(element, impl)
@@ -1403,7 +1598,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1403
1598
  self.setChildElementOptionalNumericalValue(element, "VENDOR-ID", impl.getVendorId())
1404
1599
 
1405
1600
  def writeSwcImplementation(self, element: ET.Element, impl: SwcImplementation):
1406
- self.logger.debug("writeSwcImplementation %s" % impl.short_name)
1601
+ self.logger.debug("writeSwcImplementation %s" % impl.getShortName())
1407
1602
  child_element = ET.SubElement(element, "SWC-IMPLEMENTATION")
1408
1603
  self.writeImplementation(child_element, impl)
1409
1604
  self.setChildElementOptionalRefType(child_element, "BEHAVIOR-REF", impl.getBehaviorRef())
@@ -1469,21 +1664,21 @@ class ARXMLWriter(AbstractARXMLWriter):
1469
1664
  self.setEndToEndProtection(child_element, protection)
1470
1665
 
1471
1666
  def writeEndToEndProtectionSet(self, element: ET.Element, protection_set: EndToEndProtectionSet):
1472
- self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.short_name)
1667
+ self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.getShortName())
1473
1668
  child_element = ET.SubElement(element, "END-TO-END-PROTECTION-SET")
1474
1669
  self.setIdentifiable(child_element, protection_set)
1475
1670
  self.writeEndToEndProtections(child_element, protection_set)
1476
1671
 
1477
- def writeAutosarDataPrototype(self, element: ET.Element, prototype: AutosarDataPrototype):
1672
+ def setAutosarDataPrototype(self, element: ET.Element, prototype: AutosarDataPrototype):
1673
+ self.setDataPrototype(element, prototype)
1478
1674
  self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
1479
1675
 
1480
1676
  def writeVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
1481
- self.logger.debug("writeVariableDataPrototype %s" % prototype.short_name)
1677
+ self.logger.debug("writeVariableDataPrototype %s" % prototype.getShortName())
1482
1678
  child_element = ET.SubElement(element, "VARIABLE-DATA-PROTOTYPE")
1483
1679
  self.setIdentifiable(child_element, prototype)
1484
- self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
1485
- self.writeAutosarDataPrototype(child_element, prototype)
1486
- self.setInitValue(child_element, prototype.initValue)
1680
+ self.setAutosarDataPrototype(child_element, prototype)
1681
+ self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
1487
1682
 
1488
1683
  def writeSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
1489
1684
  data_elements = sr_interface.getDataElements()
@@ -1505,11 +1700,12 @@ class ARXMLWriter(AbstractARXMLWriter):
1505
1700
  self.setChildElementOptionalLiteral(child_element, "HANDLE-INVALID", policy.getHandleInvalid())
1506
1701
 
1507
1702
  def writeSenderReceiverInterface(self, element: ET.Element, sr_interface: SenderReceiverInterface):
1508
- self.logger.debug("writeSenderReceiverInterface %s" % sr_interface.short_name)
1703
+ self.logger.debug("writeSenderReceiverInterface %s" % sr_interface.getShortName())
1509
1704
  child_element = ET.SubElement(element, "SENDER-RECEIVER-INTERFACE")
1510
1705
  self.setIdentifiable(child_element, sr_interface)
1511
1706
  self.setChildElementOptionalBooleanValue(child_element, "IS-SERVICE", sr_interface.getIsService())
1512
1707
  self.writeSenderReceiverInterfaceDataElements(child_element, sr_interface)
1708
+ self.writeSenderReceiverInterfaceInvalidationPolicies(child_element, sr_interface)
1513
1709
 
1514
1710
  def writerBswModuleDescriptionImplementedEntry(self, element: ET.Element, desc: BswModuleDescription):
1515
1711
  entries = desc.getImplementedEntries()
@@ -1558,15 +1754,22 @@ class ARXMLWriter(AbstractARXMLWriter):
1558
1754
  self.writeBswModuleEntityManagedModeGroup(element, entity)
1559
1755
 
1560
1756
  def setBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
1561
- self.logger.debug("setBswCalledEntity %s" % entity.short_name)
1757
+ self.logger.debug("setBswCalledEntity %s" % entity.getShortName())
1562
1758
  child_element = ET.SubElement(element, "BSW-CALLED-ENTITY")
1563
1759
  self.setBswModuleEntity(child_element, entity)
1564
1760
 
1565
1761
  def setBswSchedulableEntity(self, element: ET.Element, entity: BswSchedulableEntity):
1566
- self.logger.debug("setBswCalledEntity %s" % entity.short_name)
1762
+ self.logger.debug("set BswSchedulableEntity %s" % entity.getShortName())
1567
1763
  child_element = ET.SubElement(element, "BSW-SCHEDULABLE-ENTITY")
1568
1764
  self.setBswModuleEntity(child_element, entity)
1569
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
+
1570
1773
  def writeBswInternalBehaviorBswModuleEntities(self, element: ET.Element, parent: BswInternalBehavior):
1571
1774
  entities = parent.getBswModuleEntities()
1572
1775
  if len(entities) > 0:
@@ -1576,8 +1779,10 @@ class ARXMLWriter(AbstractARXMLWriter):
1576
1779
  self.setBswCalledEntity(child_element, entity)
1577
1780
  elif isinstance(entity, BswSchedulableEntity):
1578
1781
  self.setBswSchedulableEntity(child_element, entity)
1782
+ elif isinstance(entity, BswInterruptEntity):
1783
+ self.setBswInterruptEntity(child_element, entity)
1579
1784
  else:
1580
- self._raiseError("Unsupported BswModuleEntity <%s>" % type(entity))
1785
+ self.notImplemented("Unsupported BswModuleEntity <%s>" % type(entity))
1581
1786
 
1582
1787
  def setBswEvent(self, element: ET.Element, event: BswEvent):
1583
1788
  self.setIdentifiable(element, event)
@@ -1587,10 +1792,10 @@ class ARXMLWriter(AbstractARXMLWriter):
1587
1792
  self.setBswEvent(element, event)
1588
1793
 
1589
1794
  def setBswTimingEvent(self, element: ET.Element, event: BswTimingEvent):
1590
- self.logger.debug("setBswTimingEvent %s" % event.short_name)
1795
+ self.logger.debug("setBswTimingEvent %s" % event.getShortName())
1591
1796
  child_element = ET.SubElement(element, "BSW-TIMING-EVENT")
1592
1797
  self.setBswScheduleEvent(child_element, event)
1593
- self.setChildElementOptionalFloatValue(child_element, "PERIOD", event.period)
1798
+ self.setChildElementOptionalTimeValue(child_element, "PERIOD", event.getPeriod())
1594
1799
 
1595
1800
  def writeBswInternalBehaviorBswEvents(self, element: ET.Element, parent: BswInternalBehavior):
1596
1801
  events = parent.getBswEvents()
@@ -1645,10 +1850,10 @@ class ARXMLWriter(AbstractARXMLWriter):
1645
1850
  self._raiseError("Unsupported BswInternalBehavior <%s>" % type(behavior))
1646
1851
 
1647
1852
  def writeBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
1648
- self.logger.debug("writeBswModuleDescription %s" % desc.short_name)
1853
+ self.logger.debug("writeBswModuleDescription %s" % desc.getShortName())
1649
1854
  child_element = ET.SubElement(element, "BSW-MODULE-DESCRIPTION")
1650
1855
  self.setIdentifiable(child_element, desc)
1651
- self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.module_id)
1856
+ self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.getModuleId())
1652
1857
  self.writerBswModuleDescriptionImplementedEntry(child_element, desc)
1653
1858
  self.writeProvidedModeGroup(child_element, desc)
1654
1859
  #self.readRequiredModeGroup(element, bsw_module_description)
@@ -1662,22 +1867,37 @@ class ARXMLWriter(AbstractARXMLWriter):
1662
1867
  child_element = ET.SubElement(mode_groups_tag, "MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL")
1663
1868
  self.setChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF", mode_group_ref)
1664
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
+
1665
1885
  def writeBswModuleEntry(self, element: ET.Element, entry: BswModuleEntry):
1666
- self.logger.debug("writeBswModuleDescription %s" % entry.short_name)
1886
+ self.logger.debug("writeBswModuleDescription %s" % entry.getShortName())
1667
1887
  child_element = ET.SubElement(element, "BSW-MODULE-ENTRY")
1668
1888
  self.setIdentifiable(child_element, entry)
1669
- self.setChildElementOptionalNumericalValue(child_element, "SERVICE-ID", entry.service_id)
1670
- self.setChildElementOptionalBooleanValue(child_element, "IS-REENTRANT", entry.is_reentrant)
1671
- self.setChildElementOptionalBooleanValue(child_element, "IS-SYNCHRONOUS", entry.is_synchronous)
1672
- self.setChildElementOptionalLiteral(child_element, "CALL-TYPE", entry.call_type)
1673
- self.setChildElementOptionalLiteral(child_element, "EXECUTION-CONTEXT", entry.execution_context)
1674
- self.setChildElementOptionalLiteral(child_element, "SW-SERVICE-IMPL-POLICY", entry.sw_service_impl_policy)
1675
-
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)
1676
1896
 
1677
1897
  def setSwcBswRunnableMapping(self, element: ET.SubElement, mapping: SwcBswRunnableMapping):
1678
1898
  child_element = ET.SubElement(element, "SWC-BSW-RUNNABLE-MAPPING")
1679
- self.setChildElementOptionalRefType(child_element, "BSW-ENTITY-REF", mapping.bswEntityRef)
1680
- 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())
1681
1901
 
1682
1902
  def writeSwcBswRunnableMappings(self, element: ET.Element, parent: SwcBswMapping):
1683
1903
  runnable_mappings = parent.getRunnableMappings()
@@ -1690,12 +1910,12 @@ class ARXMLWriter(AbstractARXMLWriter):
1690
1910
  self._raiseError("Unsupported Runnable Mapping <%s>" % type(mapping))
1691
1911
 
1692
1912
  def setSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
1693
- self.logger.debug("writeBswModuleDescription %s" % mapping.short_name)
1913
+ self.logger.debug("writeBswModuleDescription %s" % mapping.getShortName())
1694
1914
  child_element = ET.SubElement(element, "SWC-BSW-MAPPING")
1695
1915
  self.setIdentifiable(child_element, mapping)
1696
- self.setChildElementOptionalRefType(child_element, "BSW-BEHAVIOR-REF", mapping.bswBehaviorRef)
1916
+ self.setChildElementOptionalRefType(child_element, "BSW-BEHAVIOR-REF", mapping.getBswBehaviorRef())
1697
1917
  self.writeSwcBswRunnableMappings(child_element, mapping)
1698
- self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.swcBehaviorRef)
1918
+ self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.getSwcBehaviorRef())
1699
1919
 
1700
1920
  def writeEngineeringObject(self, element: ET.Element, engineering_obj: EngineeringObject):
1701
1921
  self.setARObjectAttributes(element, engineering_obj)
@@ -1726,7 +1946,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1726
1946
  self.setChildElementOptionalRefType(child_element, "VENDOR-SPECIFIC-MODULE-DEF-REF", ref)
1727
1947
 
1728
1948
  def writeBswImplementation(self, element: ET.Element, impl: BswImplementation):
1729
- self.logger.debug("writeBswModuleDescription %s" % impl.short_name)
1949
+ self.logger.debug("writeBswModuleDescription %s" % impl.getShortName())
1730
1950
  child_element = ET.SubElement(element, "BSW-IMPLEMENTATION")
1731
1951
  self.writeImplementation(child_element, impl)
1732
1952
  self.setChildElementOptionalLiteral(child_element, "AR-RELEASE-VERSION", impl.getArReleaseVersion())
@@ -1741,13 +1961,16 @@ class ARXMLWriter(AbstractARXMLWriter):
1741
1961
  child_element = ET.SubElement(sub_elements_tag, "IMPLEMENTATION-DATA-TYPE-ELEMENT")
1742
1962
  self.setIdentifiable(child_element, type_element)
1743
1963
  self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE", type_element.getArraySize())
1964
+ self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-HANDLING", type_element.getArraySizeHandling())
1744
1965
  self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS", type_element.getArraySizeSemantics())
1966
+ self.writeImplementationDataTypeElements(child_element, type_element)
1745
1967
  self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", type_element.getSwDataDefProps())
1746
1968
 
1747
1969
  def writeImplementationDataType(self, element: ET.Element, data_type: ImplementationDataType):
1748
- self.logger.debug("writeImplementationDataType %s" % data_type.short_name)
1970
+ self.logger.debug("writeImplementationDataType %s" % data_type.getShortName())
1749
1971
  child_element = ET.SubElement(element, "IMPLEMENTATION-DATA-TYPE")
1750
- self.writeAutosarDataType(child_element, data_type)
1972
+ self.setAutosarDataType(child_element, data_type)
1973
+ self.setChildElementOptionalLiteral(child_element, "DYNAMIC-ARRAY-SIZE-PROFILE", data_type.getDynamicArraySizeProfile())
1751
1974
  self.writeImplementationDataTypeElements(child_element, data_type)
1752
1975
  self.setChildElementOptionalLiteral(child_element, "TYPE-EMITTER", data_type.getTypeEmitter())
1753
1976
 
@@ -1761,7 +1984,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1761
1984
  self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
1762
1985
  self.setChildElementOptionalRefType(child_element, "TYPE-TREF", prototype.typeTRef)
1763
1986
  self.setChildElementOptionalLiteral(child_element, "DIRECTION", prototype.direction)
1764
- self.setChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY", prototype.server_argument_impl_policy)
1987
+ self.setChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY", prototype.serverArgumentImplPolicy)
1765
1988
 
1766
1989
  def writePossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
1767
1990
  error_refs = parent.getPossbileErrorRefs()
@@ -1771,7 +1994,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1771
1994
  self.setChildElementOptionalRefType(error_refs_tag, "POSSIBLE-ERROR-REF", error_ref)
1772
1995
 
1773
1996
  def writeClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
1774
- self.logger.debug("writeClientServerOperation %s" % operation.short_name)
1997
+ self.logger.debug("writeClientServerOperation %s" % operation.getShortName())
1775
1998
  child_element = ET.SubElement(element, "CLIENT-SERVER-OPERATION")
1776
1999
  self.setIdentifiable(child_element, operation)
1777
2000
  self.writeArgumentDataPrototypes(child_element, operation)
@@ -1788,7 +2011,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1788
2011
  self._raiseError("Unsupported Operation <%s>" % type(operation))
1789
2012
 
1790
2013
  def writeApplicationError(self, element: ET.Element, error: ApplicationError):
1791
- self.logger.debug("writeApplicationError %s" % error.short_name)
2014
+ self.logger.debug("writeApplicationError %s" % error.getShortName())
1792
2015
  child_element = ET.SubElement(element, "APPLICATION-ERROR")
1793
2016
  self.setIdentifiable(child_element, error)
1794
2017
  self.setChildElementOptionalNumericalValue(child_element, "ERROR-CODE", error.error_code)
@@ -1808,20 +2031,33 @@ class ARXMLWriter(AbstractARXMLWriter):
1808
2031
  self.setChildElementOptionalBooleanValue(element, "IS-SERVICE", port_interface.isService)
1809
2032
  self.setChildElementOptionalLiteral(element, "SERVICE-KIND", port_interface.serviceKind)
1810
2033
 
2034
+ def writeParameterInterfaceParameters(self, element: ET.Element, param_interface: ParameterInterface):
2035
+ parameters = param_interface.getParameters()
2036
+ if len(parameters) > 0:
2037
+ child_element = ET.SubElement(element, "PARAMETERS")
2038
+ for prototype in parameters:
2039
+ self.writeParameterDataPrototype(child_element, prototype)
2040
+
2041
+ def writeParameterInterface(self, element: ET.Element, param_interface: ParameterInterface):
2042
+ self.logger.debug("Write ParameterInterface %s" % param_interface.getShortName())
2043
+ child_element = ET.SubElement(element, "PARAMETER-INTERFACE")
2044
+ self.setPortInterface(child_element, param_interface)
2045
+ self.writeParameterInterfaceParameters(child_element, param_interface)
2046
+
1811
2047
  def writeClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
1812
- self.logger.debug("writeClientServerInterface %s" % cs_interface.short_name)
2048
+ self.logger.debug("writeClientServerInterface %s" % cs_interface.getShortName())
1813
2049
  child_element = ET.SubElement(element, "CLIENT-SERVER-INTERFACE")
1814
2050
  self.setPortInterface(child_element, cs_interface)
1815
2051
  self.writeOperations(child_element, cs_interface)
1816
2052
  self.writePossibleErrors(child_element, cs_interface)
1817
2053
 
1818
2054
  def writeApplicationSwComponentType(self, element: ET.Element, sw_component: ApplicationSwComponentType):
1819
- self.logger.debug("writeApplicationSwComponentType %s" % sw_component.short_name)
2055
+ self.logger.debug("writeApplicationSwComponentType %s" % sw_component.getShortName())
1820
2056
  child_element = ET.SubElement(element, "APPLICATION-SW-COMPONENT-TYPE")
1821
2057
  self.writeAtomicSwComponentType(child_element, sw_component)
1822
2058
 
1823
2059
  def writeEcuAbstractionSwComponentType(self, element: ET.Element, sw_component: EcuAbstractionSwComponentType):
1824
- self.logger.debug("writeEcuAbstractionSwComponentType %s" % sw_component.short_name)
2060
+ self.logger.debug("writeEcuAbstractionSwComponentType %s" % sw_component.getShortName())
1825
2061
  child_element = ET.SubElement(element, "ECU-ABSTRACTION-SW-COMPONENT-TYPE")
1826
2062
  self.writeAtomicSwComponentType(child_element, sw_component)
1827
2063
 
@@ -1833,49 +2069,59 @@ class ARXMLWriter(AbstractARXMLWriter):
1833
2069
  self.setChildElementOptionalNumericalValue(child_element, "MAX-NUMBER-OF-ELEMENTS", prototype.maxNumberOfElements)
1834
2070
 
1835
2071
  def writeApplicationArrayDataType(self, element: ET.Element, data_type: ApplicationArrayDataType):
1836
- self.logger.debug("writeApplicationArrayDataType %s" % data_type.short_name)
2072
+ self.logger.debug("writeApplicationArrayDataType %s" % data_type.getShortName())
1837
2073
  child_element = ET.SubElement(element, "APPLICATION-ARRAY-DATA-TYPE")
1838
- self.writeApplicationCompositeDataType(child_element, data_type)
2074
+ self.setApplicationCompositeDataType(child_element, data_type)
1839
2075
  self.setApplicationArrayElement(child_element, data_type.element)
1840
2076
 
1841
2077
  def setSwRecordLayoutV(self, element: ET.Element, key: str, layout_v: SwRecordLayoutV):
1842
2078
  if layout_v is not None:
1843
2079
  child_element = ET.SubElement(element, key)
1844
- self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", layout_v.shortLabel)
1845
- self.setChildElementOptionalRefType(child_element, "BASE-TYPE-REF", layout_v.baseTypeRef)
1846
- self.setChildElementOptionalNumericalValue(child_element, "SW-RECORD-LAYOUT-V-AXIS", layout_v.swRecordLayoutVAxis)
1847
- self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP", layout_v.swRecordLayoutVProp)
1848
- self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX", layout_v.swRecordLayoutVIndex)
2080
+ self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", layout_v.getShortLabel())
2081
+ self.setChildElementOptionalRefType(child_element, "BASE-TYPE-REF", layout_v.getBaseTypeRef())
2082
+ self.setChildElementOptionalNumericalValue(child_element, "SW-RECORD-LAYOUT-V-AXIS", layout_v.getSwRecordLayoutVAxis())
2083
+ self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-PROP", layout_v.getSwRecordLayoutVProp())
2084
+ self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-V-INDEX", layout_v.getSwRecordLayoutVIndex())
1849
2085
 
1850
2086
  def setSwRecordLayoutGroup(self, element: ET.Element, key: str, group: SwRecordLayoutGroup):
1851
2087
  if group is not None:
1852
2088
  child_element = ET.SubElement(element, key)
1853
- self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", group.shortLabel)
1854
- self.setChildElementOptionalLiteral(child_element, "CATEGORY", group.category)
1855
- self.setChildElementOptionalNumericalValue(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS", group.swRecordLayoutGroupAxis)
1856
- self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX", group.swRecordLayoutGroupIndex)
1857
- self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM", group.swRecordLayoutGroupFrom)
1858
- self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO", group.swRecordLayoutGroupTo)
1859
- self.setSwRecordLayoutV(child_element, "SW-RECORD-LAYOUT-V", group.swRecordLayoutGroupContentType.swRecordLayoutV)
1860
- self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", group.swRecordLayoutGroupContentType.swRecordLayoutGroup)
2089
+ self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", group.getShortLabel())
2090
+ self.setChildElementOptionalLiteral(child_element, "CATEGORY", group.getCategory())
2091
+ self.setChildElementOptionalNumericalValue(child_element, "SW-RECORD-LAYOUT-GROUP-AXIS", group.getSwRecordLayoutGroupAxis())
2092
+ self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-INDEX", group.getSwRecordLayoutGroupIndex())
2093
+ self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-FROM", group.getSwRecordLayoutGroupFrom())
2094
+ self.setChildElementOptionalLiteral(child_element, "SW-RECORD-LAYOUT-GROUP-TO", group.getSwRecordLayoutGroupTo())
2095
+ self.setChildElementOptionalIntegerValue(child_element, "SW-RECORD-LAYOUT-GROUP-STEP", group.getSwRecordLayoutGroupStep())
2096
+ #self.setSwRecordLayoutV(child_element, "SW-RECORD-LAYOUT-V", group.swRecordLayoutGroupContentType.swRecordLayoutV)
2097
+ #self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", group.swRecordLayoutGroupContentType.swRecordLayoutGroup)
1861
2098
  return group
1862
2099
 
1863
2100
  def writeSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
1864
- self.logger.debug("writeSwRecordLayout %s" % layout.short_name)
2101
+ self.logger.debug("writeSwRecordLayout %s" % layout.getShortName())
1865
2102
  child_element = ET.SubElement(element, "SW-RECORD-LAYOUT")
1866
2103
  self.setIdentifiable(child_element, layout)
1867
- self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", layout.swRecordLayoutGroup)
2104
+ self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", layout.getSwRecordLayoutGroup())
1868
2105
 
1869
2106
  def writeSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
1870
- self.logger.debug("writeSwAddrMethod %s" % method.short_name)
1871
- child_element = ET.SubElement(element, "SW-RECORD-LAYOUT")
2107
+ self.logger.debug("writeSwAddrMethod %s" % method.getShortName())
2108
+ child_element = ET.SubElement(element, "SW-ADDR-METHOD")
2109
+ self.setIdentifiable(child_element, method)
2110
+ self.setChildElementOptionalLiteral(child_element, "MEMORY-ALLOCATION-KEYWORD-POLICY", method.getMemoryAllocationKeywordPolicy())
2111
+ options = method.getOptions()
2112
+ if len(options) > 0:
2113
+ options_tag = ET.SubElement(child_element, "OPTIONS")
2114
+ for option in options:
2115
+ self.setChildElementOptionalLiteral(options_tag, "OPTION", option)
2116
+ self.setChildElementOptionalLiteral(child_element, "SECTION-INITIALIZATION-POLICY", method.getSectionInitializationPolicy())
2117
+ self.setChildElementOptionalLiteral(child_element, "SECTION-TYPE", method.getSectionType())
1872
2118
 
1873
2119
  def writeTriggerInterface(self, element: ET.Element, trigger_if: TriggerInterface):
1874
- self.logger.debug("writeTriggerInterface %s" % trigger_if.short_name)
1875
- child_element = ET.SubElement(element, "SW-RECORD-LAYOUT")
2120
+ self.logger.debug("writeTriggerInterface %s" % trigger_if.getShortName())
2121
+ child_element = ET.SubElement(element, "TRIGGER-INTERFACE")
1876
2122
 
1877
2123
  def writeServiceSwComponentType(self, element: ET.Element, sw_component: ServiceSwComponentType):
1878
- self.logger.debug("writeServiceSwComponentType %s" % sw_component.short_name)
2124
+ self.logger.debug("writeServiceSwComponentType %s" % sw_component.getShortName())
1879
2125
  child_element = ET.SubElement(element, "SERVICE-SW-COMPONENT-TYPE")
1880
2126
  self.writeAtomicSwComponentType(child_element, sw_component)
1881
2127
 
@@ -1886,8 +2132,8 @@ class ARXMLWriter(AbstractARXMLWriter):
1886
2132
  for map in maps:
1887
2133
  child_element = ET.SubElement(maps_tag, "DATA-TYPE-MAP")
1888
2134
  self.setARObjectAttributes(child_element, map)
1889
- self.setChildElementOptionalRefType(child_element, "APPLICATION-DATA-TYPE-REF", map.application_data_type_ref)
1890
- self.setChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF", map.implementation_data_type_ref)
2135
+ self.setChildElementOptionalRefType(child_element, "APPLICATION-DATA-TYPE-REF", map.getApplicationDataTypeRef())
2136
+ self.setChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF", map.getImplementationDataTypeRef())
1891
2137
 
1892
2138
  def writeModeRequestTypeMaps(self, element: ET.Element, parent: DataTypeMappingSet):
1893
2139
  maps = parent.getModeRequestTypeMaps()
@@ -1896,11 +2142,11 @@ class ARXMLWriter(AbstractARXMLWriter):
1896
2142
  for map in maps:
1897
2143
  child_element = ET.SubElement(maps_tag, "MODE-REQUEST-TYPE-MAP")
1898
2144
  self.setARObjectAttributes(child_element, map)
1899
- self.setChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF", map.implementation_data_type_ref)
1900
- self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", map.mode_group_ref)
2145
+ self.setChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF", map.getImplementationDataTypeRef())
2146
+ self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", map.getModeGroupRef())
1901
2147
 
1902
2148
  def writeDataTypeMappingSet(self, element: ET.Element, mapping_set: DataTypeMappingSet):
1903
- self.logger.debug("writeDataTypeMappingSet %s" % mapping_set.short_name)
2149
+ self.logger.debug("writeDataTypeMappingSet %s" % mapping_set.getShortName())
1904
2150
  child_element = ET.SubElement(element, "DATA-TYPE-MAPPING-SET")
1905
2151
  self.setIdentifiable(child_element, mapping_set)
1906
2152
  self.writeDataTypeMaps(child_element, mapping_set)
@@ -1919,10 +2165,10 @@ class ARXMLWriter(AbstractARXMLWriter):
1919
2165
  self.setModeDeclaration(child_element, mode_declaration)
1920
2166
 
1921
2167
  def writeModeDeclarationGroup(self, element: ET.Element, group: ModeDeclarationGroup):
1922
- self.logger.debug("writeModeDeclarationGroup %s" % group.short_name)
2168
+ self.logger.debug("writeModeDeclarationGroup %s" % group.getShortName())
1923
2169
  child_element = ET.SubElement(element, "MODE-DECLARATION-GROUP")
1924
2170
  self.setIdentifiable(child_element, group)
1925
- self.setChildElementOptionalRefType(child_element, "INITIAL-MODE-REF", group._initial_mode_ref)
2171
+ self.setChildElementOptionalRefType(child_element, "INITIAL-MODE-REF", group.initialModeRef)
1926
2172
  self.writeModeDeclarationGroupModeDeclaration(child_element, group)
1927
2173
  self.setChildElementOptionalNumericalValue(child_element, "ON-TRANSITION-VALUE", group.getOnTransitionValue())
1928
2174
 
@@ -1935,7 +2181,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1935
2181
  self.setChildElementOptionalRefType(child_element, "TYPE-TREF", mode_group.type_tref)
1936
2182
 
1937
2183
  def writeModeSwitchInterface(self, element: ET.Element, mode_interface: ModeSwitchInterface):
1938
- self.logger.debug("writeModeSwitchInterface %s" % mode_interface.short_name)
2184
+ self.logger.debug("writeModeSwitchInterface %s" % mode_interface.getShortName())
1939
2185
  child_element = ET.SubElement(element, "MODE-SWITCH-INTERFACE")
1940
2186
  self.setPortInterface(child_element, mode_interface)
1941
2187
  self.writeModeSwitchInterfaceModeGroup(child_element, mode_interface)
@@ -1962,7 +2208,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1962
2208
  self._raiseError("Unsupported order element <%s>" % type(order_element))
1963
2209
 
1964
2210
  def writeExecutionOrderConstraint(self, element: ET.Element, constraint: ExecutionOrderConstraint):
1965
- self.logger.debug("writeExecutionOrderConstraint %s" % constraint.short_name)
2211
+ self.logger.debug("writeExecutionOrderConstraint %s" % constraint.getShortName())
1966
2212
  child_element = ET.SubElement(element, "EXECUTION-ORDER-CONSTRAINT")
1967
2213
  self.setIdentifiable(child_element, constraint)
1968
2214
  self.writeExecutionOrderConstraintOrderedElement(child_element, constraint)
@@ -1981,7 +2227,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1981
2227
  self.writeTimingRequirements(element, extension)
1982
2228
 
1983
2229
  def writeSwcTiming(self, element: ET.Element, timing: SwcTiming):
1984
- self.logger.debug("writeSWcTiming %s" % timing.short_name)
2230
+ self.logger.debug("writeSWcTiming %s" % timing.getShortName())
1985
2231
  child_element = ET.SubElement(element, "SWC-TIMING")
1986
2232
  self.setIdentifiable(child_element, timing)
1987
2233
  self.writeTimingExtension(child_element, timing)
@@ -2003,7 +2249,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2003
2249
  self.writePduToFrameMappings(element, frame)
2004
2250
 
2005
2251
  def writeLinUnconditionalFrame(self, element: ET.Element, frame: LinUnconditionalFrame):
2006
- self.logger.debug("LinUnconditionalFrame %s" % frame.short_name)
2252
+ self.logger.debug("LinUnconditionalFrame %s" % frame.getShortName())
2007
2253
  child_element = ET.SubElement(element, "LIN-UNCONDITIONAL-FRAME")
2008
2254
  self.writeFrame(child_element, frame)
2009
2255
 
@@ -2025,7 +2271,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2025
2271
  self.setChildElementOptionalRefType(refs_tag, "TX-NM-PDU-REF", ref)
2026
2272
 
2027
2273
  def writeCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
2028
- self.logger.debug("writeCanNmNode %s" % nm_node.short_name)
2274
+ self.logger.debug("writeCanNmNode %s" % nm_node.getShortName())
2029
2275
  child_element = ET.SubElement(element, "CAN-NM-NODE")
2030
2276
  self.setIdentifiable(child_element, nm_node)
2031
2277
  self.writeNmNode(child_element, nm_node)
@@ -2074,7 +2320,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2074
2320
  self.setChildElementOptionalBooleanValue(element, "NM-SYNCHRONIZING-NETWORK", cluster.getNmSynchronizingNetwork())
2075
2321
 
2076
2322
  def writeCanNmCluster(self, element: ET.Element, cluster: CanNmCluster):
2077
- self.logger.debug("WriteCanNmCluster %s" % cluster.short_name)
2323
+ self.logger.debug("WriteCanNmCluster %s" % cluster.getShortName())
2078
2324
  child_element = ET.SubElement(element, "CAN-NM-CLUSTER")
2079
2325
  self.setIdentifiable(child_element, cluster)
2080
2326
  self.writeNmCluster(child_element, cluster)
@@ -2105,20 +2351,20 @@ class ARXMLWriter(AbstractARXMLWriter):
2105
2351
  self._raiseError("Unsupported Nm Cluster <%s>" % type(cluster))
2106
2352
 
2107
2353
  def writeNmConfig(self, element: ET.Element, config: NmConfig):
2108
- self.logger.debug("WriteNmConfig %s" % config.short_name)
2354
+ self.logger.debug("WriteNmConfig %s" % config.getShortName())
2109
2355
  child_element = ET.SubElement(element, "NM-CONFIG")
2110
2356
  self.setIdentifiable(child_element, config)
2111
2357
  self.writeNmConfigNmClusters(child_element, config)
2112
2358
  self.writeNmConfigNmClusterCouplings(child_element, config)
2113
2359
 
2114
2360
  def writeNmPdu(self, element: ET.Element, pdu: NmPdu):
2115
- self.logger.debug("NmPdu %s" % pdu.short_name)
2361
+ self.logger.debug("NmPdu %s" % pdu.getShortName())
2116
2362
  child_element = ET.SubElement(element, "NM-PDU")
2117
2363
  self.setIdentifiable(child_element, pdu)
2118
2364
  self.writeIPdu(child_element, pdu)
2119
2365
 
2120
2366
  def writeNPdu(self, element: ET.Element, pdu: NPdu):
2121
- self.logger.debug("NPdu %s" % pdu.short_name)
2367
+ self.logger.debug("NPdu %s" % pdu.getShortName())
2122
2368
  child_element = ET.SubElement(element, "N-PDU")
2123
2369
  self.setIdentifiable(child_element, pdu)
2124
2370
  self.writeIPdu(child_element, pdu)
@@ -2127,20 +2373,20 @@ class ARXMLWriter(AbstractARXMLWriter):
2127
2373
  self.setChildElementOptionalLiteral(element, "LENGTH", pdu.getLength())
2128
2374
 
2129
2375
  def writeDcmIPdu(self, element: ET.Element, pdu: DcmIPdu):
2130
- self.logger.debug("DcmIPdu %s" % pdu.short_name)
2376
+ self.logger.debug("DcmIPdu %s" % pdu.getShortName())
2131
2377
  child_element = ET.SubElement(element, "DCM-I-PDU")
2132
2378
  self.setIdentifiable(child_element, pdu)
2133
2379
  self.writeIPdu(child_element, pdu)
2134
2380
  self.setChildElementOptionalLiteral(child_element, "DIAG-PDU-TYPE", pdu.getDiagPduType())
2135
2381
 
2136
2382
  def writeSecuredIPdu(self, element: ET.Element, pdu: DcmIPdu):
2137
- self.logger.debug("SecuredIPdu %s" % pdu.short_name)
2383
+ self.logger.debug("SecuredIPdu %s" % pdu.getShortName())
2138
2384
  child_element = ET.SubElement(element, "SECURED-I-PDU")
2139
2385
  self.setIdentifiable(child_element, pdu)
2140
2386
  self.writeIPdu(child_element, pdu)
2141
2387
 
2142
2388
  def writeCanTpConfig(self, element: ET.Element, config: CanTpConfig):
2143
- self.logger.debug("CanTpConfig %s" % config.short_name)
2389
+ self.logger.debug("CanTpConfig %s" % config.getShortName())
2144
2390
  child_element = ET.SubElement(element, "CAN-TP-CONFIG")
2145
2391
  self.setIdentifiable(child_element, config)
2146
2392
 
@@ -2226,7 +2472,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2226
2472
  elif isinstance(triggering, LinFrameTriggering):
2227
2473
  self.writeLinFrameTriggering(triggerings_tag, triggering)
2228
2474
  else:
2229
- raise NotImplementedError("Unsupported Frame Triggering <%s>" % type(triggering))
2475
+ self.notImplemented("Unsupported Frame Triggering <%s>" % type(triggering))
2230
2476
 
2231
2477
  triggerings = channel.getISignalTriggerings()
2232
2478
  if len(triggerings) > 0:
@@ -2235,7 +2481,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2235
2481
  if isinstance(triggering, ISignalTriggering):
2236
2482
  self.writeISignalTriggering(triggerings_tag, triggering)
2237
2483
  else:
2238
- raise NotImplementedError("Unsupported ISignalTriggering <%s>" % type(triggering))
2484
+ self.notImplemented("Unsupported ISignalTriggering <%s>" % type(triggering))
2239
2485
 
2240
2486
  triggerings = channel.getPduTriggerings()
2241
2487
  if len(triggerings) > 0:
@@ -2244,16 +2490,16 @@ class ARXMLWriter(AbstractARXMLWriter):
2244
2490
  if isinstance(triggering, PduTriggering):
2245
2491
  self.writePduTriggering(triggerings_tag, triggering)
2246
2492
  else:
2247
- raise NotImplementedError("Unsupported PduTriggering <%s>" % type(triggering))
2493
+ self.notImplemented("Unsupported PduTriggering <%s>" % type(triggering))
2248
2494
 
2249
2495
  def writeCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
2250
- self.logger.debug("CanPhysicalChannel %s" % channel.short_name)
2496
+ self.logger.debug("CanPhysicalChannel %s" % channel.getShortName())
2251
2497
  child_element = ET.SubElement(element, "CAN-PHYSICAL-CHANNEL")
2252
2498
  self.setIdentifiable(child_element, channel)
2253
2499
  self.writePhysicalChannel(child_element, channel)
2254
2500
 
2255
2501
  def writeLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
2256
- self.logger.debug("LinPhysicalChannel %s" % channel.short_name)
2502
+ self.logger.debug("LinPhysicalChannel %s" % channel.getShortName())
2257
2503
  child_element = ET.SubElement(element, "LIN-PHYSICAL-CHANNEL")
2258
2504
  self.setIdentifiable(child_element, channel)
2259
2505
  self.writePhysicalChannel(child_element, channel)
@@ -2268,7 +2514,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2268
2514
  elif isinstance(channel, LinPhysicalChannel):
2269
2515
  self.writeLinPhysicalChannel(child_element, channel)
2270
2516
  else:
2271
- raise NotImplementedError("Unsupported Physical Channel <%s>" % type(channel))
2517
+ self.notImplemented("Unsupported Physical Channel <%s>" % type(channel))
2272
2518
 
2273
2519
  def writeCommunicationCluster(self, element: ET.Element, cluster: CommunicationCluster):
2274
2520
  self.setChildElementOptionalNumericalValue(element, "BAUDRATE", cluster.getBaudrate())
@@ -2281,7 +2527,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2281
2527
  self.setChildElementOptionalNumericalValue(element, "SPEED", cluster.getSpeed())
2282
2528
 
2283
2529
  def writeLinCluster(self, element: ET.Element, cluster: LinCluster):
2284
- self.logger.debug("LinCluster %s" % cluster.short_name)
2530
+ self.logger.debug("LinCluster %s" % cluster.getShortName())
2285
2531
  child_element = ET.SubElement(element, "LIN-CLUSTER")
2286
2532
  self.setIdentifiable(child_element, cluster)
2287
2533
  child_element = ET.SubElement(child_element, "LIN-CLUSTER-VARIANTS")
@@ -2289,7 +2535,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2289
2535
  self.writeCommunicationCluster(child_element, cluster)
2290
2536
 
2291
2537
  def writeCanCluster(self, element: ET.Element, cluster: CanCluster):
2292
- self.logger.debug("CanCluster %s" % cluster.short_name)
2538
+ self.logger.debug("CanCluster %s" % cluster.getShortName())
2293
2539
  child_element = ET.SubElement(element, "CAN-CLUSTER")
2294
2540
  self.setIdentifiable(child_element, cluster)
2295
2541
 
@@ -2299,7 +2545,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2299
2545
  self.readAbstractCanCluster(child_element, cluster)
2300
2546
 
2301
2547
  def writeCanFrame(self, element: ET.Element, frame: CanFrame):
2302
- self.logger.debug("Write CanFrame %s" % frame.short_name)
2548
+ self.logger.debug("Write CanFrame %s" % frame.getShortName())
2303
2549
  child_element = ET.SubElement(element, "CAN-FRAME")
2304
2550
  self.writeFrame(child_element, frame)
2305
2551
 
@@ -2371,7 +2617,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2371
2617
  self._raiseError("Unsupported Communication connector <%s>" % type(connector))
2372
2618
 
2373
2619
  def writeEcuInstance(self, element: ET.Element, instance: EcuInstance):
2374
- self.logger.debug("EcuInstance %s" % instance.short_name)
2620
+ self.logger.debug("EcuInstance %s" % instance.getShortName())
2375
2621
  child_element = ET.SubElement(element, "ECU-INSTANCE")
2376
2622
  self.setIdentifiable(child_element, instance)
2377
2623
  self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-GW-TIME-BASE", instance.getComConfigurationGwTimeBase())
@@ -2384,7 +2630,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2384
2630
  self.setChildElementOptionalBooleanValue(child_element, "WAKE-UP-OVER-BUS-SUPPORTED", instance.getWakeUpOverBusSupported())
2385
2631
 
2386
2632
  def writeSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
2387
- self.logger.debug("Write SystemSignalGroup %s" % group.short_name)
2633
+ self.logger.debug("Write SystemSignalGroup %s" % group.getShortName())
2388
2634
  child_element = ET.SubElement(element, "SYSTEM-SIGNAL-GROUP")
2389
2635
  self.setIdentifiable(child_element, group)
2390
2636
  signal_refs = group.getSystemSignalRefs()
@@ -2395,6 +2641,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2395
2641
 
2396
2642
  def setSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
2397
2643
  child_element = ET.SubElement(element, "SENDER-RECEIVER-TO-SIGNAL-MAPPING")
2644
+ self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", mapping.getCommunicationDirection())
2398
2645
  self.setVariableDataPrototypeInSystemInstanceRef(child_element, "DATA-ELEMENT-IREF", mapping.getDataElementIRef())
2399
2646
  self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", mapping.getSystemSignalRef())
2400
2647
 
@@ -2413,7 +2660,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2413
2660
  elif isinstance(data_mapping, SenderReceiverToSignalGroupMapping):
2414
2661
  self.setSenderReceiverToSignalGroupMapping(child_element, data_mapping)
2415
2662
  else:
2416
- raise NotImplementedError("Unsupported Data Mapping %s" % type(data_mapping))
2663
+ self.notImplemented("Unsupported Data Mapping %s" % type(data_mapping))
2417
2664
 
2418
2665
  def setSwcToEcuMapping(self, element: ET.Element, mapping: SwcToEcuMapping):
2419
2666
  child_element = ET.SubElement(element, "SWC-TO-ECU-MAPPING")
@@ -2433,10 +2680,10 @@ class ARXMLWriter(AbstractARXMLWriter):
2433
2680
  if isinstance(sw_mapping, SwcToEcuMapping):
2434
2681
  self.setSwcToEcuMapping(child_element, sw_mapping)
2435
2682
  else:
2436
- raise NotImplementedError("Unsupported Sw Mapping %s" % type(sw_mapping))
2683
+ self.notImplemented("Unsupported Sw Mapping %s" % type(sw_mapping))
2437
2684
 
2438
2685
  def writeSystemMapping(self, element: ET.Element, mapping: SystemMapping):
2439
- self.logger.debug("Write SystemMapping %s" % mapping.short_name)
2686
+ self.logger.debug("Write SystemMapping %s" % mapping.getShortName())
2440
2687
  child_element = ET.SubElement(element, "SYSTEM-MAPPING")
2441
2688
  self.setIdentifiable(child_element, mapping)
2442
2689
  self.writeSystemMappingDataMappings(child_element, mapping)
@@ -2450,7 +2697,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2450
2697
  if isinstance(mapping, SystemMapping):
2451
2698
  self.writeSystemMapping(mappings_tag, mapping)
2452
2699
  else:
2453
- raise NotImplementedError("Unsupported Mapping %s" % type(mapping))
2700
+ self.notImplemented("Unsupported Mapping %s" % type(mapping))
2454
2701
 
2455
2702
  def writeRootSwCompositionPrototype(self, element: ET.Element, system: System):
2456
2703
  prototype = system.getRootSoftwareComposition()
@@ -2459,10 +2706,11 @@ class ARXMLWriter(AbstractARXMLWriter):
2459
2706
  child_element = ET.SubElement(element, "ROOT-SOFTWARE-COMPOSITIONS")
2460
2707
  child_element = ET.SubElement(child_element, "ROOT-SW-COMPOSITION-PROTOTYPE")
2461
2708
  self.setIdentifiable(child_element, prototype)
2709
+ self.setChildElementOptionalRefType(child_element, "FLAT-MAP-REF", prototype.getFlatMapRef())
2462
2710
  self.setChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF", prototype.getSoftwareCompositionTRef())
2463
2711
 
2464
2712
  def writeSystem(self, element: ET.Element, system: System):
2465
- self.logger.debug("Write System %s" % system.short_name)
2713
+ self.logger.debug("Write System %s" % system.getShortName())
2466
2714
  child_element = ET.SubElement(element, "SYSTEM")
2467
2715
  self.setARElement(child_element, system)
2468
2716
 
@@ -2478,12 +2726,69 @@ class ARXMLWriter(AbstractARXMLWriter):
2478
2726
  self.writeRootSwCompositionPrototype(child_element, system)
2479
2727
  self.setChildElementOptionalRevisionLabelString(child_element, "SYSTEM-VERSION", system.getSystemVersion())
2480
2728
 
2481
- def writePhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
2482
- 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())
2483
2731
  child_element = ET.SubElement(element, "PHYSICAL-DIMENSION")
2484
2732
  self.setARElement(child_element, dimension)
2485
2733
  self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
2486
2734
  self.setChildElementOptionalNumericalValue(child_element, "LENGTH-EXP", dimension.getLengthExp())
2735
+ self.setChildElementOptionalNumericalValue(child_element, "TIME-EXP", dimension.getTimeExp())
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)
2487
2792
 
2488
2793
  def setISignalMappings(self, element: ET.Element, mappings: List[ISignalMapping]):
2489
2794
  if len(mappings) > 0:
@@ -2494,21 +2799,21 @@ class ARXMLWriter(AbstractARXMLWriter):
2494
2799
  self.setChildElementOptionalRefType(child_element, "TARGET-SIGNAL-REF", mapping.targetSignalRef)
2495
2800
 
2496
2801
  def writeGateway(self, element: ET.Element, gateway: Gateway):
2497
- self.logger.debug("Gateway %s" % gateway.short_name)
2802
+ self.logger.debug("Gateway %s" % gateway.getShortName())
2498
2803
  child_element = ET.SubElement(element, "GATEWAY")
2499
2804
  self.setIdentifiable(child_element, gateway)
2500
2805
  self.setChildElementOptionalRefType(child_element, "ECU-REF", gateway.ecuRef)
2501
2806
  self.setISignalMappings(child_element, gateway.getSignalMappings())
2502
2807
 
2503
2808
  def writeISignal(self, element: ET.Element, signal: ISignal):
2504
- self.logger.debug("ISignal %s" % signal.short_name)
2809
+ self.logger.debug("ISignal %s" % signal.getShortName())
2505
2810
  child_element = ET.SubElement(element, "I-SIGNAL")
2506
2811
  self.setIdentifiable(child_element, signal)
2507
- self.setChildElementOptionalLiteral(child_element, "DATA-TYPE-POLICY", signal.dataTypePolicy)
2508
- self.setInitValue(child_element, signal.initValue)
2509
- self.setChildElementOptionalNumericalValue(child_element, "LENGTH", signal.length)
2510
- self.setSwDataDefProps(child_element, "NETWORK-REPRESENTATION-PROPS", signal.networkRepresentationProps)
2511
- 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())
2512
2817
 
2513
2818
  def writeEcucValueCollectionEcucValues(self, element: ET.Element, collection: EcucValueCollection):
2514
2819
  value_refs = collection.getEcucValueRefs()
@@ -2519,7 +2824,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2519
2824
  self.setChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF", value_ref)
2520
2825
 
2521
2826
  def writeEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
2522
- self.logger.debug("EcucValueCollection %s" % collection.short_name)
2827
+ self.logger.debug("EcucValueCollection %s" % collection.getShortName())
2523
2828
  child_element = ET.SubElement(element, "ECUC-VALUE-COLLECTION")
2524
2829
  self.setIdentifiable(child_element, collection)
2525
2830
  self.setChildElementOptionalRefType(child_element, "ECU-EXTRACT-REF", collection.getEcuExtractRef())
@@ -2533,7 +2838,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2533
2838
  if isinstance(sub_container, EcucContainerValue):
2534
2839
  self.writeEcucContainValue(sub_containers_tag, sub_container)
2535
2840
  else:
2536
- raise NotImplementedError("Unsupported Sub Container %s" % type(container))
2841
+ self.notImplemented("Unsupported Sub Container %s" % type(container))
2537
2842
 
2538
2843
  def writeEcucParameterValue(self, element: ET.Element, param_value: EcucParameterValue):
2539
2844
  self.setChildElementOptionalRefType(element, "DEFINITION-REF", param_value.getDefinitionRef())
@@ -2559,7 +2864,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2559
2864
  elif isinstance(param_value, EcucNumericalParamValue):
2560
2865
  self.setEcucNumericalParamValue(child_element, param_value)
2561
2866
  else:
2562
- raise NotImplementedError("Unsupported EcucParameterValue <%s>" % type(param_value))
2867
+ self.notImplemented("Unsupported EcucParameterValue <%s>" % type(param_value))
2563
2868
 
2564
2869
  def writeEcucAbstractReferenceValue(self, element: ET.Element, value: EcucAbstractReferenceValue):
2565
2870
  self.setChildElementOptionalRefType(element, "DEFINITION-REF", value.getDefinitionRef())
@@ -2575,7 +2880,8 @@ class ARXMLWriter(AbstractARXMLWriter):
2575
2880
  if instance_ref is not None:
2576
2881
  child_element = ET.SubElement(element, key)
2577
2882
  self.setChildElementOptionalRefType(child_element, "BASE-REF", instance_ref.getBaseRef())
2578
- 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)
2579
2885
  self.setChildElementOptionalRefType(child_element, "TARGET-REF", instance_ref.getTargetRef())
2580
2886
  return instance_ref
2581
2887
 
@@ -2595,10 +2901,10 @@ class ARXMLWriter(AbstractARXMLWriter):
2595
2901
  elif isinstance(reference_value, EcucInstanceReferenceValue):
2596
2902
  self.setEcucInstanceReferenceValue(child_element, reference_value)
2597
2903
  else:
2598
- raise NotImplementedError("Unsupported EcucParameterValue <%s>" % type(reference_value))
2904
+ self.notImplemented("Unsupported EcucParameterValue <%s>" % type(reference_value))
2599
2905
 
2600
2906
  def writeEcucContainValue(self, element: ET.Element, container_value: EcucContainerValue):
2601
- self.logger.debug("EcucContainerValue %s" % container_value.short_name)
2907
+ self.logger.debug("EcucContainerValue %s" % container_value.getShortName())
2602
2908
  child_element = ET.SubElement(element, "ECUC-CONTAINER-VALUE")
2603
2909
  self.setIdentifiable(child_element, container_value)
2604
2910
  self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", container_value.getDefinitionRef())
@@ -2614,10 +2920,10 @@ class ARXMLWriter(AbstractARXMLWriter):
2614
2920
  if isinstance(container, EcucContainerValue):
2615
2921
  self.writeEcucContainValue(containers_tag, container)
2616
2922
  else:
2617
- raise NotImplementedError("Unsupported Container %s" % type(container))
2923
+ self.notImplemented("Unsupported Container %s" % type(container))
2618
2924
 
2619
2925
  def writeEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
2620
- self.logger.debug("EcucModuleConfigurationValues %s" % values.short_name)
2926
+ self.logger.debug("EcucModuleConfigurationValues %s" % values.getShortName())
2621
2927
  child_element = ET.SubElement(element, "ECUC-MODULE-CONFIGURATION-VALUES")
2622
2928
  self.setIdentifiable(child_element, values)
2623
2929
  self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", values.getDefinitionRef())
@@ -2626,7 +2932,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2626
2932
  self.writeEcucModuleConfigurationValuesContainers(child_element, values)
2627
2933
 
2628
2934
  def writeISignalGroup(self, element: ET.Element, group: ISignalGroup):
2629
- self.logger.debug("ISignalGroup %s" % group.short_name)
2935
+ self.logger.debug("ISignalGroup %s" % group.getShortName())
2630
2936
  child_element = ET.SubElement(element, "I-SIGNAL-GROUP")
2631
2937
  self.setIdentifiable(child_element, group)
2632
2938
  signal_refs = group.getISignalRefs()
@@ -2637,7 +2943,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2637
2943
  self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-GROUP-REF", group.getSystemSignalGroupRef())
2638
2944
 
2639
2945
  def writeISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
2640
- self.logger.debug("ISignalIPduGroup %s" % group.short_name)
2946
+ self.logger.debug("ISignalIPduGroup %s" % group.getShortName())
2641
2947
  child_element = ET.SubElement(element, "I-SIGNAL-I-PDU-GROUP")
2642
2948
  self.setIdentifiable(child_element, group)
2643
2949
  self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", group.getCommunicationDirection())
@@ -2655,23 +2961,20 @@ class ARXMLWriter(AbstractARXMLWriter):
2655
2961
  self.setChildElementOptionalRefType(ref_conditional_tag, "I-SIGNAL-I-PDU-REF", pdu_ref)
2656
2962
 
2657
2963
  def writeSystemSignal(self, element: ET.Element, signal: SystemSignal):
2658
- self.logger.debug("SystemSignal %s" % signal.short_name)
2964
+ self.logger.debug("SystemSignal %s" % signal.getShortName())
2659
2965
  child_element = ET.SubElement(element, "SYSTEM-SIGNAL")
2660
2966
  self.setIdentifiable(child_element, signal)
2661
2967
  self.setChildElementOptionalBooleanValue(child_element, "DYNAMIC-LENGTH", signal.getDynamicLength())
2662
2968
 
2663
- def writeParameterInterface(self, element: ET.Element, signal: SystemSignal):
2664
- self.logger.debug("Write ParameterInterface %s" % signal.short_name)
2665
- child_element = ET.SubElement(element, "PARAMETER-INTERFACE")
2666
- self.setIdentifiable(child_element, signal)
2969
+
2667
2970
 
2668
2971
  def writeGenericEthernetFrame(self, element: ET.Element, signal: GenericEthernetFrame):
2669
- self.logger.debug("Write GenericEthernetFrame %s" % signal.short_name)
2972
+ self.logger.debug("Write GenericEthernetFrame %s" % signal.getShortName())
2670
2973
  child_element = ET.SubElement(element, "ETHERNET-FRAME")
2671
2974
  self.writeFrame(child_element, signal)
2672
2975
 
2673
2976
  def writeLifeCycleInfoSet(self, element: ET.Element, set: LifeCycleInfoSet):
2674
- self.logger.debug("Write LifeCycleInfoSet %s" % set.short_name)
2977
+ self.logger.debug("Write LifeCycleInfoSet %s" % set.getShortName())
2675
2978
  child_element = ET.SubElement(element, "LIFE-CYCLE-INFO-SET")
2676
2979
  self.setIdentifiable(child_element, set)
2677
2980
 
@@ -2690,8 +2993,9 @@ class ARXMLWriter(AbstractARXMLWriter):
2690
2993
  self.setChildElementOptionalNumericalValue(child_element, "UPDATE-INDICATION-BIT-POSITION", mapping.getUpdateIndicationBitPosition())
2691
2994
 
2692
2995
  def setDataFilter(self, element: ET.Element, key: str, filter: DataFilter):
2693
- child_element = ET.SubElement(element, key)
2694
- 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())
2695
2999
 
2696
3000
  def setTransmissionModeConditions(self, element: ET.Element, conditions: List[TransmissionModeCondition]):
2697
3001
  if len(conditions) > 0:
@@ -2732,7 +3036,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2732
3036
  self.setTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION", timing.getTransmissionModeDeclaration())
2733
3037
 
2734
3038
  def writeISignalIPdu(self, element: ET.Element, i_pdu: ISignalIPdu):
2735
- self.logger.debug("ISignalIPdu %s" % i_pdu.short_name)
3039
+ self.logger.debug("ISignalIPdu %s" % i_pdu.getShortName())
2736
3040
  child_element = ET.SubElement(element, "I-SIGNAL-I-PDU")
2737
3041
  self.setIdentifiable(child_element, i_pdu)
2738
3042
  self.setChildElementOptionalNumericalValue(child_element, "LENGTH", i_pdu.getLength())
@@ -2748,13 +3052,13 @@ class ARXMLWriter(AbstractARXMLWriter):
2748
3052
  elif isinstance(ar_element, CompositionSwComponentType):
2749
3053
  self.writeCompositionSwComponentType(element, ar_element)
2750
3054
  elif isinstance(ar_element, ApplicationPrimitiveDataType):
2751
- self.writeApplicationPrimitiveDataType(element, ar_element)
3055
+ self.setApplicationPrimitiveDataType(element, ar_element)
2752
3056
  elif isinstance(ar_element, ApplicationRecordDataType):
2753
- self.writeApplicationRecordDataType(element, ar_element)
3057
+ self.setApplicationRecordDataType(element, ar_element)
2754
3058
  elif isinstance(ar_element, SwBaseType):
2755
- self.writeSwBaseType(element, ar_element)
3059
+ self.setSwBaseType(element, ar_element)
2756
3060
  elif isinstance(ar_element, CompuMethod):
2757
- self.writeCompuMethod(element, ar_element)
3061
+ self.setCompuMethod(element, ar_element)
2758
3062
  elif isinstance(ar_element, ConstantSpecification):
2759
3063
  self.writeConstantSpecification(element, ar_element)
2760
3064
  elif isinstance(ar_element, DataConstr):
@@ -2837,8 +3141,14 @@ class ARXMLWriter(AbstractARXMLWriter):
2837
3141
  self.writeGenericEthernetFrame(element, ar_element)
2838
3142
  elif isinstance(ar_element, LifeCycleInfoSet):
2839
3143
  self.writeLifeCycleInfoSet(element, ar_element)
3144
+ elif isinstance(ar_element, PhysicalDimension):
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)
2840
3150
  else:
2841
- raise NotImplementedError("Unsupported Elements of ARPackage <%s>" % type(ar_element))
3151
+ self.notImplemented("Unsupported Elements of ARPackage <%s>" % type(ar_element))
2842
3152
 
2843
3153
  def writeReferenceBases(self, element: ET.Element, bases: List[ReferenceBase]):
2844
3154
  self.logger.debug("Write ReferenceBases")