armodel 1.7.2__py3-none-any.whl → 1.7.4__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 +1 -1
  2. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +44 -20
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +104 -30
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +12 -16
  5. armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +70 -0
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +12 -9
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +29 -22
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HardwareConfiguration.py +33 -0
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HeapUsage.py +10 -0
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/SoftwareContext.py +23 -0
  11. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/StackUsage.py +93 -0
  12. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +39 -5
  13. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +28 -5
  14. armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcBswMapping.py +48 -6
  15. armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +5 -5
  16. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +27 -1
  17. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +39 -0
  18. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +17 -1
  19. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +8 -0
  20. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +196 -5
  21. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AutosarVariableRef.py +31 -0
  22. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/DataElements.py +4 -3
  23. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/InstanceRefsUsage.py +17 -32
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +4 -0
  25. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +17 -2
  26. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +81 -34
  27. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +10 -1
  28. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetCommunication.py +229 -0
  29. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +167 -0
  30. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/NetworkEndpoint.py +225 -0
  31. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +96 -7
  32. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +47 -4
  33. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +18 -5
  34. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +7 -12
  35. armodel/models/M2/MSR/AsamHdo/BaseTypes.py +0 -1
  36. armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +16 -1
  37. armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +34 -3
  38. armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +7 -0
  39. armodel/models/M2/MSR/DataDictionary/ServiceProcessTask.py +33 -0
  40. armodel/models/__init__.py +6 -0
  41. armodel/parser/abstract_arxml_parser.py +4 -14
  42. armodel/parser/arxml_parser.py +567 -224
  43. armodel/tests/test_armodel/models/test_ar_object.py +6 -2
  44. armodel/tests/test_armodel/models/test_ar_ref.py +2 -2
  45. armodel/tests/test_armodel/models/test_port_interface.py +4 -4
  46. armodel/tests/test_armodel/parser/test_parse_bswmd.py +48 -48
  47. armodel/writer/abstract_arxml_writer.py +2 -3
  48. armodel/writer/arxml_writer.py +566 -288
  49. {armodel-1.7.2.dist-info → armodel-1.7.4.dist-info}/METADATA +30 -2
  50. {armodel-1.7.2.dist-info → armodel-1.7.4.dist-info}/RECORD +54 -44
  51. {armodel-1.7.2.dist-info → armodel-1.7.4.dist-info}/LICENSE +0 -0
  52. {armodel-1.7.2.dist-info → armodel-1.7.4.dist-info}/WHEEL +0 -0
  53. {armodel-1.7.2.dist-info → armodel-1.7.4.dist-info}/entry_points.txt +0 -0
  54. {armodel-1.7.2.dist-info → armodel-1.7.4.dist-info}/top_level.txt +0 -0
@@ -1,11 +1,10 @@
1
1
  import xml.etree.cElementTree as ET
2
-
3
2
  from typing import List
4
3
 
5
4
  from ..models.M2.AUTOSARTemplates.GenericStructure.LifeCycles import LifeCycleInfoSet
6
5
  from ..models.M2.MSR.AsamHdo.AdminData import AdminData
7
6
  from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition, SwBaseType
8
- from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstTextContent, CompuMethod, CompuNominatorDenominator, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
7
+ from ..models.M2.MSR.AsamHdo.ComputationMethod import Compu, CompuConst, CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent, CompuConstTextContent, CompuMethod, CompuNominatorDenominator, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
9
8
  from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstr, InternalConstrs, PhysConstrs
10
9
  from ..models.M2.MSR.AsamHdo.SpecialData import Sdg
11
10
  from ..models.M2.MSR.AsamHdo.Units import PhysicalDimension, Unit
@@ -13,8 +12,9 @@ from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValu
13
12
  from ..models.M2.MSR.DataDictionary.Axis import SwAxisGrouped, SwAxisIndividual
14
13
  from ..models.M2.MSR.DataDictionary.AuxillaryObjects import SwAddrMethod
15
14
  from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxis, SwCalprmAxisSet
16
- from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, ValueList
15
+ from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, SwPointerTargetProps, ValueList
17
16
  from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayout, SwRecordLayoutGroup, SwRecordLayoutV
17
+ from ..models.M2.MSR.DataDictionary.ServiceProcessTask import SwServiceArg
18
18
  from ..models.M2.MSR.Documentation.Annotation import Annotation
19
19
  from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
20
20
  from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
@@ -25,20 +25,21 @@ from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
25
25
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
26
26
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
27
27
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
28
- from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswEvent, BswInternalBehavior, BswModeSenderPolicy, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
28
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswEvent, BswInternalBehavior, BswInterruptEntity, BswModeSenderPolicy, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
29
29
  from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
30
+ from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
30
31
  from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
31
32
  from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
32
33
  from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Code, Implementation
33
34
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
34
35
  from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import EOCExecutableEntityRef, ExecutionOrderConstraint
35
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DiagnosticCommunicationManagerNeeds, DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds, NvBlockNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
36
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds, DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds, EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
36
37
  from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
37
38
  from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
38
39
  from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
39
40
  from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclaration, ModeDeclarationGroup, ModeDeclarationGroupPrototype
40
41
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
41
-
42
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
42
43
  from ..models.M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
43
44
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
44
45
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, MultilanguageReferrable, Referrable
@@ -46,7 +47,7 @@ from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyI
46
47
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
47
48
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral, Limit
48
49
 
49
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption
50
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
50
51
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
51
52
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
52
53
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType
@@ -56,12 +57,13 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import Compo
56
57
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, CompositionSwComponentType, EcuAbstractionSwComponentType, PRPortPrototype, PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype
57
58
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
58
59
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import AsynchronousServerCallPoint, RunnableEntity, RunnableEntityArgument, SwcInternalBehavior, SynchronousServerCallPoint
60
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
59
61
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
60
62
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.DataElements import ParameterAccess, VariableAccess
61
63
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector, SwComponentPrototype, SwConnector
62
64
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
63
65
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
64
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, AutosarVariableRef, VariableInAtomicSWCTypeInstanceRef
66
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, VariableInAtomicSWCTypeInstanceRef
65
67
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, RPortComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
66
68
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef
67
69
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
@@ -69,20 +71,24 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes im
69
71
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import ServiceSwComponentType
70
72
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import DataTypeMappingSet
71
73
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet
72
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ClientServerInterface, ClientServerOperation, ModeSwitchInterface, ParameterInterface, PortInterface, SenderReceiverInterface, TriggerInterface
74
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ClientServerInterface, ClientServerOperation, DataPrototypeMapping, ModeSwitchInterface, ParameterInterface, PortInterface, PortInterfaceMappingSet, SenderReceiverInterface, TriggerInterface, VariableAndParameterInterfaceMapping
73
75
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
74
76
 
75
77
  from ..models.M2.AUTOSARTemplates.SystemTemplate import SwcToEcuMapping, System, SystemMapping
76
78
  from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
77
79
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import FrameTriggering, IPdu, IPduTiming, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalTriggering, PduTriggering, SecuredIPdu, SystemSignal, DcmIPdu, Frame, ISignal, NPdu, NmPdu, SystemSignalGroup
78
80
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
79
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
81
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
82
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
80
83
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import GenericEthernetFrame
84
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCluster, EthernetCommunicationConnector, EthernetCommunicationController
85
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import Ipv6Configuration, NetworkEndpoint, NetworkEndpointAddress
86
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import SoAdConfig
81
87
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import Gateway, ISignalMapping
82
88
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrame, CanFrameTriggering, RxIdentifierRange
83
89
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
84
90
  from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering, LinUnconditionalFrame
85
- from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
91
+ from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinCluster, LinPhysicalChannel, PhysicalChannel
86
92
  from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
87
93
  from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
88
94
  from ..models.M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig
@@ -127,7 +133,7 @@ class ARXMLWriter(AbstractARXMLWriter):
127
133
  for sdg in sdgs:
128
134
  self.setSdg(sdgs_tag, sdg)
129
135
 
130
- def writeChildLimitElement(self, element: ET.Element, key: str, limit: Limit):
136
+ def setChildLimitElement(self, element: ET.Element, key: str, limit: Limit):
131
137
  if limit is not None:
132
138
  limit_tag = ET.SubElement(element, key)
133
139
  self.setARObjectAttributes(limit_tag, limit)
@@ -222,7 +228,7 @@ class ARXMLWriter(AbstractARXMLWriter):
222
228
  child_element = ET.SubElement(element, "NONQUEUED-SENDER-COM-SPEC")
223
229
  self.setARObjectAttributes(child_element, com_spec)
224
230
  self.setSenderComSpec(child_element, com_spec)
225
- self.setInitValue(child_element, com_spec.initValue)
231
+ self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
226
232
 
227
233
  def setServerComSpec(self, element: ET.Element, com_spec: ServerComSpec):
228
234
  child_element = ET.SubElement(element, "SERVER-COM-SPEC")
@@ -297,9 +303,9 @@ class ARXMLWriter(AbstractARXMLWriter):
297
303
  if cont is not None:
298
304
  child_element = ET.SubElement(element, "SW-VALUE-CONT")
299
305
  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)
306
+ self.setChildElementOptionalRefType(child_element, "UNIT-REF", cont.unitRef)
307
+ self.setValueList(child_element, "SW-ARRAYSIZE", cont.swArraysize)
308
+ self.setSwValues(child_element, "SW-VALUES-PHYS", cont.swValuesPhys)
303
309
 
304
310
  def writeValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
305
311
  if value_spec is not None:
@@ -350,37 +356,34 @@ class ARXMLWriter(AbstractARXMLWriter):
350
356
  self.writeValueSpecification(value_spec_tag, value_spec)
351
357
  self.setChildElementOptionalRefType(value_spec_tag, "CONSTANT-REF", value_spec.getConstantRef())
352
358
 
353
- def setValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
359
+ def setValueSpecification(self, element: ET.Element, key: str, value_spec: ValueSpecification):
354
360
  if value_spec is not None:
361
+ child_element = ET.SubElement(element, key)
355
362
  if isinstance(value_spec, ApplicationValueSpecification):
356
- self.setApplicationValueSpecification(element, value_spec)
363
+ self.setApplicationValueSpecification(child_element, value_spec)
357
364
  elif isinstance(value_spec, TextValueSpecification):
358
- self.setTextValueSpecification(element, value_spec)
365
+ self.setTextValueSpecification(child_element, value_spec)
359
366
  elif isinstance(value_spec, ConstantReference):
360
- self.setConstantReference(element, value_spec)
367
+ self.setConstantReference(child_element, value_spec)
361
368
  elif isinstance(value_spec, NumericalValueSpecification):
362
- self.setNumericalValueSpecification(element, value_spec)
369
+ self.setNumericalValueSpecification(child_element, value_spec)
363
370
  elif isinstance(value_spec, ArrayValueSpecification):
364
- self.setArrayValueSpecification(element, value_spec)
371
+ self.setArrayValueSpecification(child_element, value_spec)
365
372
  elif isinstance(value_spec, RecordValueSpecification):
366
- self.setRecordValueSpecification(element, value_spec)
373
+ self.setRecordValueSpecification(child_element, value_spec)
367
374
  else:
368
375
  self.notImplemented("Unsupported ValueSpecification %s" % type(value_spec))
369
376
 
370
- def setInitValue(self, element: ET.Element, init_value: ValueSpecification):
371
- if init_value is not None:
372
- child_element = ET.SubElement(element, "INIT-VALUE")
373
- self.setValueSpecification(child_element, init_value)
374
-
375
377
  def writeNonqueuedReceiverComSpec(self, element: ET.Element, com_spec: NonqueuedReceiverComSpec):
376
378
  child_element = ET.SubElement(element, "NONQUEUED-RECEIVER-COM-SPEC")
377
379
  self.setARObjectAttributes(child_element, com_spec)
378
380
  self.writeReceiverComSpec(child_element, com_spec)
379
- self.setChildElementOptionalFloatValue(child_element, "ALIVE-TIMEOUT", com_spec.aliveTimeout)
380
- self.setChildElementOptionalBooleanValue(child_element, "ENABLE-UPDATE", com_spec.enableUpdated)
381
- self.setChildElementOptionalBooleanValue(child_element, "HANDLE-NEVER-RECEIVED", com_spec.handleNeverReceived)
382
- self.setChildElementOptionalLiteral(child_element, "HANDLE-TIMEOUT-TYPE", com_spec.handleTimeoutType)
383
- self.setInitValue(child_element, com_spec.initValue)
381
+ self.setChildElementOptionalFloatValue(child_element, "ALIVE-TIMEOUT", com_spec.getAliveTimeout())
382
+ self.setChildElementOptionalBooleanValue(child_element, "ENABLE-UPDATE", com_spec.getEnableUpdated())
383
+ self.setDataFilter(child_element, "FILTER", com_spec.getFilter())
384
+ self.setChildElementOptionalBooleanValue(child_element, "HANDLE-NEVER-RECEIVED", com_spec.getHandleNeverReceived())
385
+ self.setChildElementOptionalLiteral(child_element, "HANDLE-TIMEOUT-TYPE", com_spec.getHandleTimeoutType())
386
+ self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
384
387
 
385
388
  def writeQueuedReceiverComSpec(self, element: ET.Element, com_spec: QueuedReceiverComSpec):
386
389
  child_element = ET.SubElement(element, "QUEUED-RECEIVER-COM-SPEC")
@@ -398,14 +401,16 @@ class ARXMLWriter(AbstractARXMLWriter):
398
401
  self.logger.debug("writeParameterRequireComSpec")
399
402
  child_element = ET.SubElement(element, "PARAMETER-REQUIRE-COM-SPEC")
400
403
  self.setARObjectAttributes(child_element, com_spec)
401
- self.setChildElementOptionalRefType(child_element, "PARAMETER-REF", com_spec.parameter_ref)
402
- self.setInitValue(child_element, com_spec.init_value)
404
+ self.setChildElementOptionalRefType(child_element, "PARAMETER-REF", com_spec.getParameterRef())
405
+ self.setValueSpecification(child_element, "INIT-VALUE", com_spec.getInitValue())
403
406
 
404
- def writeModeSwitchReceiverComSpec(self, element: ET.Element, com_spec: ModeSwitchReceiverComSpec):
407
+ def setModeSwitchReceiverComSpec(self, element: ET.Element, com_spec: ModeSwitchReceiverComSpec):
405
408
  self.logger.debug("writeModeSwitchReceiverComSpec")
406
409
  child_element = ET.SubElement(element, "MODE-SWITCH-RECEIVER-COM-SPEC")
407
410
  self.setARObjectAttributes(child_element, com_spec)
408
- self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", com_spec.modeGroupRef)
411
+ self.setChildElementOptionalBooleanValue(child_element, "ENHANCED-MODE-API", com_spec.getEnhancedModeApi())
412
+ self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", com_spec.getModeGroupRef())
413
+ self.setChildElementOptionalBooleanValue(child_element, "SUPPORTS-ASYNCHRONOUS-MODE-SWITCH", com_spec.getSupportsAsynchronousModeSwitch())
409
414
 
410
415
  def writeRPortComSpec(self, element: ET.Element, com_spec: RPortComSpec):
411
416
  if isinstance(com_spec, NonqueuedReceiverComSpec):
@@ -415,7 +420,7 @@ class ARXMLWriter(AbstractARXMLWriter):
415
420
  elif isinstance(com_spec, ClientComSpec):
416
421
  self.writeClientComSpec(element, com_spec)
417
422
  elif isinstance(com_spec, ModeSwitchReceiverComSpec):
418
- self.writeModeSwitchReceiverComSpec(element, com_spec)
423
+ self.setModeSwitchReceiverComSpec(element, com_spec)
419
424
  elif isinstance(com_spec, ParameterRequireComSpec):
420
425
  self.writeParameterRequireComSpec(element, com_spec)
421
426
  else:
@@ -432,7 +437,7 @@ class ARXMLWriter(AbstractARXMLWriter):
432
437
  prototype_tag = ET.SubElement(ports_tag, "P-PORT-PROTOTYPE")
433
438
 
434
439
  self.setIdentifiable(prototype_tag, prototype)
435
- self.logger.debug("write PPortPrototype %s" % prototype.short_name)
440
+ self.logger.debug("write PPortPrototype %s" % prototype.getShortName())
436
441
  self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
437
442
  self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-INTERFACE-TREF", prototype.getProvidedInterfaceTRef())
438
443
 
@@ -444,14 +449,14 @@ class ARXMLWriter(AbstractARXMLWriter):
444
449
  self.writeRPortComSpec(com_specs_tag, com_spec)
445
450
 
446
451
  def writeRPortPrototype(self, ports_tag: ET.Element, prototype: RPortPrototype):
447
- self.logger.debug("write RPortPrototype %s" % prototype.short_name)
452
+ self.logger.debug("write RPortPrototype %s" % prototype.getShortName())
448
453
  prototype_tag = ET.SubElement(ports_tag, "R-PORT-PROTOTYPE")
449
454
  self.setIdentifiable(prototype_tag, prototype)
450
455
  self.setAbstractRequiredPortPrototype(prototype_tag, prototype)
451
456
  self.setChildElementOptionalRefType(prototype_tag, "REQUIRED-INTERFACE-TREF", prototype.getRequiredInterfaceTRef())
452
457
 
453
458
  def writePRPortPrototype(self, ports_tag: ET.Element, prototype: PRPortPrototype):
454
- self.logger.debug("write PRPortPrototype %s" % prototype.short_name)
459
+ self.logger.debug("write PRPortPrototype %s" % prototype.getShortName())
455
460
  prototype_tag = ET.SubElement(ports_tag, "PR-PORT-PROTOTYPE")
456
461
  self.setIdentifiable(prototype_tag, prototype)
457
462
  self.setAbstractProvidedPortPrototype(prototype_tag, prototype)
@@ -490,7 +495,7 @@ class ARXMLWriter(AbstractARXMLWriter):
490
495
  self.setChildElementOptionalRefType(child_element, "PORT-PROTOTYPE-REF", ref)
491
496
 
492
497
  def writePortGroup(self, element: ET.Element, port_group: PortGroup):
493
- self.logger.debug("writePortGroup %s" % port_group.short_name)
498
+ self.logger.debug("writePortGroup %s" % port_group.getShortName())
494
499
  child_element = ET.SubElement(element, "PORT-GROUP")
495
500
  self.setIdentifiable(child_element, port_group)
496
501
  self.writePortGroupInnerGroupIRefs(child_element, port_group)
@@ -524,18 +529,19 @@ class ARXMLWriter(AbstractARXMLWriter):
524
529
  self.writeSwComponentPrototype(components_tag, prototype)
525
530
 
526
531
  def writeAssemblySwConnector(self, element: ET.Element, sw_connector: AssemblySwConnector):
527
- connector_tag = ET.SubElement(element, "ASSEMBLY-SW-CONNECTOR")
528
- self.setIdentifiable(connector_tag, sw_connector)
532
+ child_element = ET.SubElement(element, "ASSEMBLY-SW-CONNECTOR")
533
+ self.setIdentifiable(child_element, sw_connector)
534
+ self.setChildElementOptionalRefType(child_element, "MAPPING-REF", sw_connector.getMappingRef())
529
535
 
530
536
  if sw_connector.getProviderIRef() is not None:
531
- provider_iref_tag = ET.SubElement(connector_tag, "PROVIDER-IREF")
537
+ provider_iref_tag = ET.SubElement(child_element, "PROVIDER-IREF")
532
538
  provider_iref = sw_connector.getProviderIRef()
533
539
  self.setARObjectAttributes(provider_iref_tag, provider_iref)
534
540
  self.setChildElementOptionalRefType(provider_iref_tag, "CONTEXT-COMPONENT-REF", provider_iref.getContextComponentRef())
535
541
  self.setChildElementOptionalRefType(provider_iref_tag, "TARGET-P-PORT-REF", provider_iref.getTargetPPortRef())
536
542
 
537
543
  if sw_connector.getRequesterIRef() is not None:
538
- requester_iref_tag = ET.SubElement(connector_tag, "REQUESTER-IREF")
544
+ requester_iref_tag = ET.SubElement(child_element, "REQUESTER-IREF")
539
545
  requester_iref = sw_connector.getRequesterIRef()
540
546
  self.setARObjectAttributes(requester_iref_tag, requester_iref)
541
547
  self.setChildElementOptionalRefType(requester_iref_tag, "CONTEXT-COMPONENT-REF", requester_iref.getContextComponentRef())
@@ -650,11 +656,11 @@ class ARXMLWriter(AbstractARXMLWriter):
650
656
  def setSwAxisIndividual(self, element: ET.Element, props: SwAxisIndividual):
651
657
  child_element = ET.SubElement(element, "SW-AXIS-INDIVIDUAL")
652
658
  self.setARObjectAttributes(child_element, props)
653
- self.setChildElementOptionalRefType(child_element, "INPUT-VARIABLE-TYPE-REF", props.inputVariableTypeRef)
654
- self.setChildElementOptionalRefType(child_element, "COMPU-METHOD-REF", props.compuMethodRef)
655
- self.setChildElementOptionalNumericalValue(child_element, "SW-MAX-AXIS-POINTS", props.swMaxAxisPoints)
656
- self.setChildElementOptionalNumericalValue(child_element, "SW-MIN-AXIS-POINTS", props.swMinAxisPoints)
657
- self.setChildElementOptionalRefType(child_element, "DATA-CONSTR-REF", props.dataConstrRef)
659
+ self.setChildElementOptionalRefType(child_element, "INPUT-VARIABLE-TYPE-REF", props.getInputVariableTypeRef())
660
+ self.setChildElementOptionalRefType(child_element, "COMPU-METHOD-REF", props.getCompuMethodRef())
661
+ self.setChildElementOptionalNumericalValue(child_element, "SW-MAX-AXIS-POINTS", props.getSwMaxAxisPoints())
662
+ self.setChildElementOptionalNumericalValue(child_element, "SW-MIN-AXIS-POINTS", props.getSwMinAxisPoints())
663
+ self.setChildElementOptionalRefType(child_element, "DATA-CONSTR-REF", props.getDataConstrRef())
658
664
 
659
665
  def setSwAxisGrouped(self, element: ET.Element, props: SwAxisGrouped):
660
666
  child_element = ET.SubElement(element, "SW-AXIS-GROUPED")
@@ -681,32 +687,36 @@ class ARXMLWriter(AbstractARXMLWriter):
681
687
  for axis in axises:
682
688
  self.setSwCalprmAxis(child_element, axis)
683
689
 
684
- def writeSwDataDefProsInvalidValue(self, element: ET.Element, props: SwDataDefProps):
685
- if props.getInvalidValue() is not None:
686
- child_element = ET.SubElement(element, "INVALID-VALUE")
687
- self.setValueSpecification(child_element, props.getInvalidValue())
690
+ def setSwPointerTargetProps(self, element: ET.Element, key: str, props: SwPointerTargetProps):
691
+ if props is not None:
692
+ child_element = ET.SubElement(element, key)
693
+ self.setChildElementOptionalLiteral(child_element, "TARGET-CATEGORY", props.getTargetCategory())
694
+ self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", props.getSwDataDefProps())
688
695
 
689
- def setSwDataDefProps(self, element: ET.Element, key: str, sw_data_def_props: SwDataDefProps):
690
- if sw_data_def_props is not None:
696
+ def setSwDataDefProps(self, element: ET.Element, key: str, props: SwDataDefProps):
697
+ if props is not None:
691
698
  child_element = ET.SubElement(element, key)
692
- self.setARObjectAttributes(child_element, sw_data_def_props)
699
+ self.setARObjectAttributes(child_element, props)
693
700
  sw_data_def_props_variants_tag = ET.SubElement(child_element, "SW-DATA-DEF-PROPS-VARIANTS")
694
- sw_data_def_props_conditional_tag = ET.SubElement(sw_data_def_props_variants_tag, "SW-DATA-DEF-PROPS-CONDITIONAL")
695
- self.setARObjectAttributes(sw_data_def_props_conditional_tag, sw_data_def_props.conditional)
696
- self.setAnnotations(sw_data_def_props_conditional_tag, sw_data_def_props.getAnnotations())
697
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "BASE-TYPE-REF", sw_data_def_props.getBaseTypeRef())
698
- self.writeSwDataDefProsInvalidValue(sw_data_def_props_conditional_tag, sw_data_def_props)
699
- self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-CALIBRATION-ACCESS", sw_data_def_props.getSwCalibrationAccess())
700
- self.setSwCalprmAxisSet(sw_data_def_props_conditional_tag, "SW-CALPRM-AXIS-SET", sw_data_def_props.getSwCalprmAxisSet())
701
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "COMPU-METHOD-REF", sw_data_def_props.getCompuMethodRef())
702
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "DATA-CONSTR-REF", sw_data_def_props.getDataConstrRef())
703
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "SW-ADDR-METHOD-REF", sw_data_def_props.getSwAddrMethodRef())
704
- self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-IMPL-POLICY", sw_data_def_props.getSwImplPolicy())
705
- self.setChildElementOptionalNumericalValue(sw_data_def_props_conditional_tag, "SW-INTENDED-RESOLUTION", sw_data_def_props.getSwIntendedResolution())
706
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", sw_data_def_props.getImplementationDataTypeRef())
707
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "SW-RECORD-LAYOUT-REF", sw_data_def_props.getSwRecordLayoutRef())
708
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "VALUE-AXIS-DATA-TYPE-REF", sw_data_def_props.getValueAxisDataTypeRef())
709
- self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "UNIT-REF", sw_data_def_props.getUnitRef())
701
+ conditional_tag = ET.SubElement(sw_data_def_props_variants_tag, "SW-DATA-DEF-PROPS-CONDITIONAL")
702
+ self.setARObjectAttributes(conditional_tag, props.conditional)
703
+ self.setAnnotations(conditional_tag, props.getAnnotations())
704
+ self.setChildElementOptionalRefType(conditional_tag, "BASE-TYPE-REF", props.getBaseTypeRef())
705
+ self.setChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF", props.getCompuMethodRef())
706
+
707
+ self.setValueSpecification(conditional_tag, "INVALID-VALUE", props.getInvalidValue())
708
+ self.setChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", props.getImplementationDataTypeRef())
709
+ self.setChildElementOptionalFloatValue(conditional_tag, "STEP-SIZE", props.getStepSize())
710
+ self.setChildElementOptionalRefType(conditional_tag, "SW-ADDR-METHOD-REF", props.getSwAddrMethodRef())
711
+ self.setChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS", props.getSwCalibrationAccess())
712
+ self.setChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF", props.getDataConstrRef())
713
+ self.setSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET", props.getSwCalprmAxisSet())
714
+ self.setChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY", props.getSwImplPolicy())
715
+ self.setChildElementOptionalNumericalValue(conditional_tag, "SW-INTENDED-RESOLUTION", props.getSwIntendedResolution())
716
+ self.setSwPointerTargetProps(conditional_tag, "SW-POINTER-TARGET-PROPS", props.getSwPointerTargetProps())
717
+ self.setChildElementOptionalRefType(conditional_tag, "SW-RECORD-LAYOUT-REF", props.getSwRecordLayoutRef())
718
+ self.setChildElementOptionalRefType(conditional_tag, "VALUE-AXIS-DATA-TYPE-REF", props.getValueAxisDataTypeRef())
719
+ self.setChildElementOptionalRefType(conditional_tag, "UNIT-REF", props.getUnitRef())
710
720
 
711
721
  def setApplicationDataType(self, element: ET.Element, data_type: ApplicationDataType):
712
722
  self.setAutosarDataType(element, data_type)
@@ -727,6 +737,7 @@ class ARXMLWriter(AbstractARXMLWriter):
727
737
  self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", prototype.getSwDataDefProps())
728
738
 
729
739
  def setApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
740
+ self.setIdentifiable(element, prototype)
730
741
  self.setDataPrototype(element, prototype)
731
742
  self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
732
743
 
@@ -755,16 +766,17 @@ class ARXMLWriter(AbstractARXMLWriter):
755
766
  else:
756
767
  self.notImplemented("Unsupported ApplicationDataType <%s>" % type(data_type))
757
768
 
758
- def writeBaseTypeDirectDefinition(self, element: ET.Element, base_type_definition: BaseTypeDirectDefinition):
759
- self.setChildElementOptionalNumericalValue(element, "BASE-TYPE-SIZE", base_type_definition.baseTypeSize)
760
- self.setChildElementOptionalLiteral(element, "BASE-TYPE-ENCODING", base_type_definition.baseTypeEncoding)
761
- self.setChildElementOptionalNumericalValue(element, "MEM-ALIGNMENT", base_type_definition.memAlignment)
762
- self.setChildElementOptionalLiteral(element, "NATIVE-DECLARATION", base_type_definition.nativeDeclaration)
769
+ def setBaseTypeDirectDefinition(self, element: ET.Element, base_type_definition: BaseTypeDirectDefinition):
770
+ self.setChildElementOptionalNumericalValue(element, "BASE-TYPE-SIZE", base_type_definition.getBaseTypeSize())
771
+ self.setChildElementOptionalLiteral(element, "BASE-TYPE-ENCODING", base_type_definition.getBaseTypeEncoding())
772
+ self.setChildElementOptionalLiteral(element, "BYTE-ORDER", base_type_definition.getByteOrder())
773
+ self.setChildElementOptionalNumericalValue(element, "MEM-ALIGNMENT", base_type_definition.getMemAlignment())
774
+ self.setChildElementOptionalLiteral(element, "NATIVE-DECLARATION", base_type_definition.getNativeDeclaration())
763
775
 
764
776
  def writeSwBaseType(self, element: ET.Element, base_type: SwBaseType):
765
777
  data_type_tag = ET.SubElement(element, "SW-BASE-TYPE")
766
778
  self.setIdentifiable(data_type_tag, base_type)
767
- self.writeBaseTypeDirectDefinition(data_type_tag, base_type.baseTypeDefinition)
779
+ self.setBaseTypeDirectDefinition(data_type_tag, base_type.getBaseTypeDefinition())
768
780
 
769
781
  def writeCompuScaleConstantContents(self, element: ET.Element, contents: CompuScaleConstantContents):
770
782
  compu_const_tag = ET.SubElement(element, "COMPU-CONST")
@@ -793,48 +805,49 @@ class ARXMLWriter(AbstractARXMLWriter):
793
805
  else:
794
806
  self.notImplemented("Unsupported CompuScaleContents %s" % type(compu_scale.compuScaleContents))
795
807
 
796
- def writeCompuScales(self, element: ET.Element, compu_scales: CompuScales):
797
- compu_scales_tag = ET.SubElement(element, "COMPU-SCALES")
798
- for compu_scale in compu_scales.getCompuScales():
799
- child_element = ET.SubElement(compu_scales_tag, "COMPU-SCALE")
800
- self.setARObjectAttributes(child_element, compu_scale)
801
- self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", compu_scale.getShortLabel())
802
- self.setChildElementOptionalLiteral(child_element, "SYMBOL", compu_scale.getSymbol())
803
- self.writeChildLimitElement(child_element, "LOWER-LIMIT", compu_scale.getLowerLimit())
804
- self.writeChildLimitElement(child_element, "UPPER-LIMIT", compu_scale.getUpperLimit())
805
- self.writeCompuScaleContents(child_element, compu_scale)
806
-
807
- def writeCompuInternalToPhys(self, element: ET.Element, compu_method: CompuMethod):
808
- compu = compu_method.getCompuInternalToPhys()
809
- if compu is not None:
810
- child_element = ET.SubElement(element, "COMPU-INTERNAL-TO-PHYS")
811
- self.setARObjectAttributes(child_element, compu)
812
- compu_content = compu.getCompuContent()
813
- if compu_content is not None:
814
- if isinstance(compu_content, CompuScales):
815
- self.writeCompuScales(child_element, compu_content)
816
- else:
817
- self.notImplemented("Unsupported CompuContent <%s>" % type(compu_content))
808
+ def setCompuConstContent(self, element: ET.Element, content: CompuConstContent):
809
+ if content is not None:
810
+ if isinstance(content, CompuConstFormulaContent):
811
+ self.setChildElementOptionalLiteral(element, "VF", content.getVf())
812
+ elif isinstance(content, CompuConstNumericContent):
813
+ self.setChildElementOptionalNumericalValue(element, "V", content.getV())
814
+ elif isinstance(content, CompuConstTextContent):
815
+ self.setChildElementOptionalLiteral(element, "VT", content.getVt())
816
+ else:
817
+ self.notImplemented("Unsupported CompuConstContent <%s>" % type(content))
818
+
819
+ def setCompuScales(self, element: ET.Element, compu_scales: CompuScales):
820
+ if compu_scales is not None:
821
+ compu_scales_tag = ET.SubElement(element, "COMPU-SCALES")
822
+ for compu_scale in compu_scales.getCompuScales():
823
+ child_element = ET.SubElement(compu_scales_tag, "COMPU-SCALE")
824
+ self.setARObjectAttributes(child_element, compu_scale)
825
+ self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", compu_scale.getShortLabel())
826
+ self.setChildElementOptionalLiteral(child_element, "SYMBOL", compu_scale.getSymbol())
827
+ self.setChildLimitElement(child_element, "LOWER-LIMIT", compu_scale.getLowerLimit())
828
+ self.setChildLimitElement(child_element, "UPPER-LIMIT", compu_scale.getUpperLimit())
829
+ self.writeCompuScaleContents(child_element, compu_scale)
830
+
831
+ def setCompuConst(self, element: ET.Element, key: str, compu_const: CompuConst):
832
+ if compu_const is not None:
833
+ child_element = ET.SubElement(element, key)
834
+ self.setARObjectAttributes(child_element, compu_const)
835
+ self.setCompuConstContent(child_element, compu_const.getCompuConstContentType())
818
836
 
819
- def writeCompuPhysToInternal(self, element: ET.Element, compu_method: CompuMethod):
820
- compu = compu_method.getCompuPhysToInternal()
837
+ def setCompu(self, element: ET.Element, key: str, compu: Compu):
821
838
  if compu is not None:
822
- child_element = ET.SubElement(element, "COMPU-PHYS-TO-INTERNAL")
839
+ child_element = ET.SubElement(element, key)
823
840
  self.setARObjectAttributes(child_element, compu)
824
- compu_content = compu.getCompuContent()
825
- if compu_content is not None:
826
- if isinstance(compu_content, CompuScales):
827
- self.writeCompuScales(child_element, compu_content)
828
- else:
829
- self.notImplemented("Unsupported CompuContent <%s>" % type(compu_content))
841
+ self.setCompuScales(child_element, compu.getCompuContent())
842
+ self.setCompuConst(child_element, "COMPU-DEFAULT-VALUE", compu.getCompuDefaultValue())
830
843
 
831
844
  def writeCompuMethod(self, element: ET.Element, compu_method: CompuMethod):
832
845
  child_element = ET.SubElement(element, "COMPU-METHOD")
833
- self.logger.debug("writeCompuMethods %s" % compu_method.getShortName())
846
+ self.logger.debug("write CompuMethods %s" % compu_method.getShortName())
834
847
  self.setIdentifiable(child_element, compu_method)
835
848
  self.setChildElementOptionalRefType(child_element, "UNIT-REF", compu_method.getUnitRef())
836
- self.writeCompuInternalToPhys(child_element, compu_method)
837
- self.writeCompuPhysToInternal(child_element, compu_method)
849
+ self.setCompu(child_element, "COMPU-INTERNAL-TO-PHYS", compu_method.getCompuInternalToPhys())
850
+ self.setCompu(child_element, "COMPU-PHYS-TO-INTERNAL", compu_method.getCompuPhysToInternal())
838
851
 
839
852
  def setApplicationValueSpecification(self, element: ET.Element, spec: ApplicationValueSpecification):
840
853
  spec_tag = ET.SubElement(element, "APPLICATION-VALUE-SPECIFICATION")
@@ -868,26 +881,25 @@ class ARXMLWriter(AbstractARXMLWriter):
868
881
  self.setIdentifiable(spec_tag, spec)
869
882
 
870
883
  if spec.getValueSpec() is not None:
871
- value_spec_tag = ET.SubElement(spec_tag, "VALUE-SPEC")
872
- self.setValueSpecification(value_spec_tag, spec.getValueSpec())
884
+ self.setValueSpecification(spec_tag, "VALUE-SPEC", spec.getValueSpec())
873
885
 
874
886
  def setInternalConstrs(self, element: ET.Element, constrs: InternalConstrs):
875
887
  if constrs is not None:
876
888
  constrs_tag = ET.SubElement(element, "INTERNAL-CONSTRS")
877
889
  self.setARObjectAttributes(constrs_tag, constrs)
878
890
  if constrs.lower_limit is not None:
879
- self.writeChildLimitElement(constrs_tag, "LOWER-LIMIT", constrs.lower_limit)
891
+ self.setChildLimitElement(constrs_tag, "LOWER-LIMIT", constrs.lower_limit)
880
892
  if constrs.upper_limit is not None:
881
- self.writeChildLimitElement(constrs_tag, "UPPER-LIMIT", constrs.upper_limit)
893
+ self.setChildLimitElement(constrs_tag, "UPPER-LIMIT", constrs.upper_limit)
882
894
 
883
895
  def setPhysConstrs(self, element: ET.Element, constrs: PhysConstrs):
884
896
  if constrs is not None:
885
897
  child_element = ET.SubElement(element, "PHYS-CONSTRS")
886
898
  self.setARObjectAttributes(child_element, constrs)
887
899
  if constrs.lower_limit is not None:
888
- self.writeChildLimitElement(child_element, "LOWER-LIMIT", constrs.lower_limit)
900
+ self.setChildLimitElement(child_element, "LOWER-LIMIT", constrs.lower_limit)
889
901
  if constrs.upper_limit is not None:
890
- self.writeChildLimitElement(child_element, "UPPER-LIMIT", constrs.upper_limit)
902
+ self.setChildLimitElement(child_element, "UPPER-LIMIT", constrs.upper_limit)
891
903
  self.setChildElementOptionalRefType(child_element, "UNIT-REF", constrs.unit_ref)
892
904
 
893
905
  def writeDataConstrRules(self, element: ET.Element, parent: DataConstr):
@@ -907,7 +919,7 @@ class ARXMLWriter(AbstractARXMLWriter):
907
919
  self.writeDataConstrRules(child_element, constr)
908
920
 
909
921
  def writeUnit(self, element: ET.Element, unit: Unit):
910
- self.logger.debug("writeUnit %s" % unit.short_name)
922
+ self.logger.debug("writeUnit %s" % unit.getShortName())
911
923
  child_element = ET.SubElement(element, "UNIT")
912
924
  self.setIdentifiable(child_element, unit)
913
925
  self.setChildElementOptionalLiteral(child_element, "DISPLAY-NAME", unit.getDisplayName())
@@ -1027,22 +1039,15 @@ class ARXMLWriter(AbstractARXMLWriter):
1027
1039
  for ref in refs:
1028
1040
  self.setChildElementOptionalRefType(refs_tag, "DATA-TYPE-MAPPING-REF", ref)
1029
1041
 
1030
- def writeInternalBehaviorConstantMemories(self, element: ET.Element, behavior: InternalBehavior):
1031
- memories = behavior.getConstantMemorys()
1032
- if len(memories) > 0:
1033
- child_element = ET.SubElement(element, "CONSTANT-MEMORYS")
1034
- for memory in memories:
1035
- self.writeParameterDataPrototype(child_element, memory)
1036
-
1037
1042
  def writeInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
1038
1043
  self.setIdentifiable(element, behavior)
1039
- self.writeInternalBehaviorConstantMemories(element, behavior)
1044
+ self.setParameterDataPrototypes(element, "CONSTANT-MEMORYS", behavior.getConstantMemories())
1040
1045
  self.writeDataTypeMappingRefs(element, behavior)
1041
1046
  self.writeExclusiveAreas(element, behavior)
1042
1047
 
1043
- def setAutosarVariableRef(self, element: ET.Element, ref: AutosarVariableRef):
1048
+ def setAutosarVariableRef(self, element: ET.Element, key: str, ref: AutosarVariableRef):
1044
1049
  if ref is not None:
1045
- child_element = ET.SubElement(element, "ACCESSED-VARIABLE")
1050
+ child_element = ET.SubElement(element, key)
1046
1051
  self.setARObjectAttributes(child_element, ref)
1047
1052
  if ref.getAutosarVariableIRef() is not None:
1048
1053
  child_element = ET.SubElement(child_element, "AUTOSAR-VARIABLE-IREF")
@@ -1062,21 +1067,17 @@ class ARXMLWriter(AbstractARXMLWriter):
1062
1067
  def setVariableAccess(self, element: ET.Element, access: VariableAccess):
1063
1068
  child_element = ET.SubElement(element, "VARIABLE-ACCESS")
1064
1069
  self.setIdentifiable(child_element, access)
1065
- self.setAutosarVariableRef(child_element, access.getAccessedVariableRef())
1066
-
1067
- def writeDataReadAccesses(self, element: ET.Element, entity: RunnableEntity):
1068
- #accesses = entity.getDataReadAccesses():
1069
- pass
1070
+ self.setAutosarVariableRef(child_element, "ACCESSED-VARIABLE", access.getAccessedVariableRef())
1070
1071
 
1071
1072
  def setAutosarParameterRef(self, element: ET.Element, key: str, parameter_ref: AutosarParameterRef):
1072
1073
  if parameter_ref is not None:
1073
1074
  child_element = ET.SubElement(element, key)
1074
- self.setChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF", parameter_ref.local_parameter_ref)
1075
+ self.setChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF", parameter_ref.getLocalParameterRef())
1075
1076
 
1076
1077
  def writeParameterAccess(self, element: ET.Element, parameter_access: ParameterAccess):
1077
1078
  child_element = ET.SubElement(element, "PARAMETER-ACCESS")
1078
1079
  self.setIdentifiable(child_element, parameter_access)
1079
- self.setAutosarParameterRef(child_element, "ACCESSED-PARAMETER", parameter_access.accessed_parameter)
1080
+ self.setAutosarParameterRef(child_element, "ACCESSED-PARAMETER", parameter_access.getAccessedParameter())
1080
1081
 
1081
1082
  def writeParameterAccesses(self, element: ET.Element, entity: RunnableEntity):
1082
1083
  parameter_accesses = entity.getParameterAccesses()
@@ -1099,12 +1100,19 @@ class ARXMLWriter(AbstractARXMLWriter):
1099
1100
  for point in points:
1100
1101
  self.setVariableAccess(child_element, point)
1101
1102
 
1103
+ def writeDataReadAccesses(self, element: ET.Element, entity: RunnableEntity):
1104
+ accesses = entity.getDataReadAccesses()
1105
+ if len(accesses) > 0:
1106
+ child_element = ET.SubElement(element, "DATA-READ-ACCESSS")
1107
+ for access in accesses:
1108
+ self.setVariableAccess(child_element, access)
1109
+
1102
1110
  def writeDataWriteAccesses(self, element: ET.Element, entity: RunnableEntity):
1103
- points = entity.getDataWriteAccesses()
1104
- if len(points) > 0:
1111
+ accesses = entity.getDataWriteAccesses()
1112
+ if len(accesses) > 0:
1105
1113
  child_element = ET.SubElement(element, "DATA-WRITE-ACCESSS")
1106
- for point in points:
1107
- self.setVariableAccess(child_element, point)
1114
+ for access in accesses:
1115
+ self.setVariableAccess(child_element, access)
1108
1116
 
1109
1117
  def writeReadLocalVariables(self, element: ET.Element, entity: RunnableEntity):
1110
1118
  variables = entity.getReadLocalVariables()
@@ -1213,12 +1221,13 @@ class ARXMLWriter(AbstractARXMLWriter):
1213
1221
  self.writeRunnableEntityArguments(child_element, entity)
1214
1222
  self.writeAsynchronousServerCallResultPoint(child_element, entity)
1215
1223
  self.setChildElementOptionalBooleanValue(child_element, "CAN-BE-INVOKED-CONCURRENTLY", entity.getCanBeInvokedConcurrently())
1216
- self.writeParameterAccesses(child_element, entity)
1224
+ self.writeDataReadAccesses(child_element, entity)
1217
1225
  self.writeDataReceivePointByArguments(child_element, entity)
1218
1226
  self.writeDataSendPoints(child_element, entity)
1219
1227
  self.writeDataWriteAccesses(child_element, entity)
1220
1228
  self.writeModeAccessPoints(child_element, entity)
1221
1229
  self.writeModeSwitchPoints(child_element, entity)
1230
+ self.writeParameterAccesses(child_element, entity)
1222
1231
  self.writeReadLocalVariables(child_element, entity)
1223
1232
  self.writeServerCallPoints(child_element, entity)
1224
1233
  self.setChildElementOptionalLiteral(child_element, "SYMBOL", entity.symbol)
@@ -1233,6 +1242,16 @@ class ARXMLWriter(AbstractARXMLWriter):
1233
1242
  self.writeRunnableEntity(runnables_tag, entity)
1234
1243
  else:
1235
1244
  self.notImplemented("Unsupported RunnableEntity <%s>" % type(entity))
1245
+
1246
+ def writeSwcInternalBehaviorArTypedPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
1247
+ prototypes = behavior.getArTypedPerInstanceMemories()
1248
+ if len(prototypes) > 0:
1249
+ child_element = ET.SubElement(element, "AR-TYPED-PER-INSTANCE-MEMORYS")
1250
+ for prototype in prototypes:
1251
+ if isinstance(prototype, VariableDataPrototype):
1252
+ self.writeVariableDataPrototype(child_element, prototype)
1253
+ else:
1254
+ self._raiseError("Unsupported ArTypedPerInstanceMemories <%s>" % type(prototype))
1236
1255
 
1237
1256
  def writeExplicitInterRunnableVariables(self, element: ET.Element, behavior: SwcInternalBehavior):
1238
1257
  prototypes = behavior.getExplicitInterRunnableVariables()
@@ -1256,29 +1275,26 @@ class ARXMLWriter(AbstractARXMLWriter):
1256
1275
  self.setChildElementOptionalLiteral(child_element, "TYPE", memory.getType())
1257
1276
  self.setChildElementOptionalLiteral (child_element, "TYPE-DEFINITION", memory.getTypeDefinition())
1258
1277
 
1259
- def writeParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
1278
+ def setParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
1260
1279
  child_element = ET.SubElement(element, "PARAMETER-DATA-PROTOTYPE")
1261
1280
  self.setIdentifiable(child_element, prototype)
1262
1281
  self.setAutosarDataPrototype(child_element, prototype)
1263
- self.setInitValue(child_element, prototype.getInitValue())
1282
+ self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
1264
1283
 
1265
- def writePerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
1266
- prototypes = behavior.getPerInstanceParameters()
1267
- if len(prototypes) > 0:
1268
- child_element = ET.SubElement(element, "PER-INSTANCE-PARAMETERS")
1269
- for prototype in prototypes:
1270
- self.writeParameterDataPrototype(child_element, prototype)
1284
+ def setParameterDataPrototypes(self, element: ET.Element, key: str, parameters: List[ParameterDataPrototype]):
1285
+ if len(parameters) > 0:
1286
+ child_element = ET.SubElement(element, key)
1287
+ for parameter in parameters:
1288
+ self.setParameterDataPrototype(child_element, parameter)
1271
1289
 
1272
- def writePortDefinedArgumentValues(self, element: ET.Element, option: PortAPIOption) :
1273
- argument_values = option.getPortArgValues()
1290
+ def writePortDefinedArgumentValues(self, element: ET.Element, argument_values: List[PortDefinedArgumentValue]) :
1274
1291
  if len(argument_values) > 0:
1275
1292
  child_element = ET.SubElement(element, "PORT-ARG-VALUES")
1276
1293
  for argument_value in argument_values:
1277
1294
  child_element = ET.SubElement(child_element, "PORT-DEFINED-ARGUMENT-VALUE")
1278
- if argument_value.value is not None:
1279
- value_tag = ET.SubElement(child_element, "VALUE")
1280
- self.setValueSpecification(value_tag, argument_value.value)
1281
- self.setChildElementOptionalRefType(child_element, "VALUE-TYPE-TREF", argument_value.valueTypeTRef)
1295
+ if argument_value.getValue() is not None:
1296
+ self.setValueSpecification(child_element, "VALUE", argument_value.getValue())
1297
+ self.setChildElementOptionalRefType(child_element, "VALUE-TYPE-TREF", argument_value.getValueTypeTRef())
1282
1298
 
1283
1299
  def writePortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
1284
1300
  options = behavior.getPortAPIOptions()
@@ -1286,10 +1302,11 @@ class ARXMLWriter(AbstractARXMLWriter):
1286
1302
  port_api_options_tag = ET.SubElement(element, "PORT-API-OPTIONS")
1287
1303
  for option in options:
1288
1304
  child_element = ET.SubElement(port_api_options_tag, "PORT-API-OPTION")
1289
- self.setChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS", option.enableTakeAddress)
1290
- self.setChildElementOptionalBooleanValue(child_element, "INDIRECT-API", option.indirectAPI)
1291
- self.writePortDefinedArgumentValues(child_element, option)
1292
- self.setChildElementOptionalRefType(child_element, "PORT-REF", option.portRef)
1305
+ self.setChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS", option.getEnableTakeAddress())
1306
+ self.setChildElementOptionalLiteral(child_element, "ERROR-HANDLING", option.getErrorHandling())
1307
+ self.setChildElementOptionalBooleanValue(child_element, "INDIRECT-API", option.getIndirectAPI())
1308
+ self.writePortDefinedArgumentValues(child_element, option.getPortArgValues())
1309
+ self.setChildElementOptionalRefType(child_element, "PORT-REF", option.getPortRef())
1293
1310
 
1294
1311
  def writeRoleBasedDataTypeAssignment(self, element: ET.Element, assignment: RoleBasedDataTypeAssignment):
1295
1312
  child_element = ET.SubElement(element, "ROLE-BASED-DATA-TYPE-ASSIGNMENT")
@@ -1313,6 +1330,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1313
1330
  def writeRoleBasedDataAssignment(self, element: ET.Element, assignment: RoleBasedDataAssignment):
1314
1331
  child_element = ET.SubElement(element, "ROLE-BASED-DATA-ASSIGNMENT")
1315
1332
  self.setChildElementOptionalLiteral(child_element, "ROLE", assignment.role)
1333
+ self.setAutosarVariableRef(child_element, "USED-DATA-ELEMENT", assignment.getUsedDataElement())
1316
1334
  self.setAutosarParameterRef(child_element, "USED-PARAMETER-ELEMENT", assignment.getUsedParameterElement())
1317
1335
  self.setChildElementOptionalRefType(child_element, "USED-PIM-REF", assignment.getUsedPimRef())
1318
1336
 
@@ -1341,9 +1359,9 @@ class ARXMLWriter(AbstractARXMLWriter):
1341
1359
  else:
1342
1360
  self._raiseError("Unsupported Assigned Data <%s>" % type(data))
1343
1361
 
1344
- def writeNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
1362
+ def setNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
1345
1363
  child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
1346
- self.logger.debug("write NvBlockNeeds %s" % needs.short_name)
1364
+ self.logger.debug("write NvBlockNeeds %s" % needs.getShortName())
1347
1365
  self.setIdentifiable(child_element, needs)
1348
1366
  self.setChildElementOptionalBooleanValue(child_element, "CALC-RAM-BLOCK-CRC", needs.getCalcRamBlockCrc())
1349
1367
  self.setChildElementOptionalBooleanValue(child_element, "CHECK-STATIC-BLOCK-ID", needs.getCheckStaticBlockId())
@@ -1362,24 +1380,25 @@ class ARXMLWriter(AbstractARXMLWriter):
1362
1380
  self.setChildElementOptionalBooleanValue(child_element, "USE-CRC-COMP-MECHANISM", needs.getUseCRCCompMechanism())
1363
1381
  self.setChildElementOptionalBooleanValue(child_element, "WRITE-ONLY-ONCE", needs.getWriteOnlyOnce())
1364
1382
  self.setChildElementOptionalBooleanValue(child_element, "WRITE-VERIFICATION", needs.getWriteVerification())
1383
+ self.setChildElementOptionalPositiveInteger(child_element, "WRITING-FREQUENCY", needs.getWritingFrequency())
1365
1384
  self.setChildElementOptionalLiteral(child_element, "WRITING-PRIORITY", needs.getWritingPriority())
1366
1385
 
1367
- def writeDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
1386
+ def setDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
1368
1387
  child_element = ET.SubElement(element, "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS")
1369
- self.logger.debug("write DiagnosticCommunicationManagerNeeds %s" % needs.short_name)
1388
+ self.logger.debug("write DiagnosticCommunicationManagerNeeds %s" % needs.getShortName())
1370
1389
  self.setIdentifiable(child_element, needs)
1371
1390
  self.setChildElementOptionalLiteral(child_element, "SERVICE-REQUEST-CALLBACK-TYPE", needs.getServiceRequestCallbackType())
1372
1391
 
1373
- def writeDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
1392
+ def setDiagnosticRoutineNeeds(self, element: ET.Element, needs: DiagnosticRoutineNeeds):
1374
1393
  child_element = ET.SubElement(element, "DIAGNOSTIC-ROUTINE-NEEDS")
1375
- self.logger.debug("write DiagnosticRoutineNeeds %s" % needs.short_name)
1394
+ self.logger.debug("write DiagnosticRoutineNeeds %s" % needs.getShortName())
1376
1395
  self.setIdentifiable(child_element, needs)
1377
1396
  self.setChildElementOptionalLiteral(child_element, "DIAG-ROUTINE-TYPE", needs.getDiagRoutineType())
1378
1397
  self.setChildElementOptionalIntegerValue(child_element, "RID-NUMBER", needs.getRidNumber())
1379
1398
 
1380
- def writeDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
1399
+ def setDiagnosticValueNeeds(self, element: ET.Element, needs: DiagnosticValueNeeds):
1381
1400
  child_element = ET.SubElement(element, "DIAGNOSTIC-VALUE-NEEDS")
1382
- self.logger.debug("write DiagnosticValueNeeds %s" % needs.short_name)
1401
+ self.logger.debug("write DiagnosticValueNeeds %s" % needs.getShortName())
1383
1402
  self.setIdentifiable(child_element, needs)
1384
1403
  self.setChildElementOptionalPositiveInteger(child_element, "DATA-LENGTH", needs.getDataLength())
1385
1404
  self.setChildElementOptionalLiteral(child_element, "DIAGNOSTIC-VALUE-ACCESS", needs.getDiagnosticValueAccess())
@@ -1400,39 +1419,54 @@ class ARXMLWriter(AbstractARXMLWriter):
1400
1419
  else:
1401
1420
  self.notImplemented("Unsupported DiagEventDebounceAlgorithm <%s>" % type(algorithm))
1402
1421
 
1403
- def writeDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
1422
+ def setDiagnosticEventNeeds(self, element: ET.Element, needs: DiagnosticEventNeeds):
1404
1423
  child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-NEEDS")
1405
- self.logger.debug("write DiagnosticEventNeeds %s" % needs.short_name)
1424
+ self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
1406
1425
  self.setIdentifiable(child_element, needs)
1407
1426
  self.writeDiagEventDebounceAlgorithm(child_element, needs)
1408
1427
  self.setChildElementOptionalLiteral(child_element, "DTC-KIND", needs.getDtcKind())
1409
1428
  self.setChildElementOptionalIntegerValue(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
1429
+
1430
+ def setDiagnosticEventInfoNeeds(self, element: ET.Element, needs: DiagnosticEventInfoNeeds):
1431
+ child_element = ET.SubElement(element, "DIAGNOSTIC-EVENT-INFO-NEEDS")
1432
+ self.logger.debug("write DiagnosticEventNeeds %s" % needs.getShortName())
1433
+ self.setIdentifiable(child_element, needs)
1434
+ self.setChildElementOptionalPositiveInteger(child_element, "UDS-DTC-NUMBER", needs.getUdsDtcNumber())
1410
1435
 
1411
- def writeCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
1436
+ def setCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
1412
1437
  child_element = ET.SubElement(element, "CRYPTO-SERVICE-NEEDS")
1413
- self.logger.debug("write CryptoServiceNeeds %s" % needs.short_name)
1438
+ self.logger.debug("write CryptoServiceNeeds %s" % needs.getShortName())
1414
1439
  self.setIdentifiable(child_element, needs)
1415
1440
  self.setChildElementOptionalPositiveInteger(child_element, "MAXIMUM-KEY-LENGTH", needs.getMaximumKeyLength())
1416
1441
 
1442
+ def setEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
1443
+ child_element = ET.SubElement(element, "ECU-STATE-MGR-USER-NEEDS")
1444
+ self.logger.debug("write EcuStateMgrUserNeeds %s" % needs.getShortName())
1445
+ self.setIdentifiable(child_element, needs)
1446
+
1417
1447
  def writeSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
1418
1448
  needs = parent.getServiceNeeds()
1419
1449
  if len(needs) > 0:
1420
1450
  child_element = ET.SubElement(element, "SERVICE-NEEDS")
1421
1451
  for need in needs:
1422
1452
  if isinstance(need, NvBlockNeeds):
1423
- self.writeNvBlockNeeds(child_element, need)
1453
+ self.setNvBlockNeeds(child_element, need)
1424
1454
  elif isinstance(need, DiagnosticCommunicationManagerNeeds):
1425
- self.writeDiagnosticCommunicationManagerNeeds(child_element, need)
1455
+ self.setDiagnosticCommunicationManagerNeeds(child_element, need)
1426
1456
  elif isinstance(need, DiagnosticRoutineNeeds):
1427
- self.writeDiagnosticRoutineNeeds(child_element, need)
1457
+ self.setDiagnosticRoutineNeeds(child_element, need)
1428
1458
  elif isinstance(need, DiagnosticValueNeeds):
1429
- self.writeDiagnosticValueNeeds(child_element, need)
1459
+ self.setDiagnosticValueNeeds(child_element, need)
1430
1460
  elif isinstance(need, DiagnosticEventNeeds):
1431
- self.writeDiagnosticEventNeeds(child_element, need)
1461
+ self.setDiagnosticEventNeeds(child_element, need)
1462
+ elif isinstance(need, DiagnosticEventInfoNeeds):
1463
+ self.setDiagnosticEventInfoNeeds(child_element, need)
1432
1464
  elif isinstance(need, CryptoServiceNeeds):
1433
- self.writeCryptoServiceNeeds(child_element, need)
1465
+ self.setCryptoServiceNeeds(child_element, need)
1466
+ elif isinstance(need, EcuStateMgrUserNeeds):
1467
+ self.setEcuStateMgrUserNeeds(child_element, need)
1434
1468
  else:
1435
- self._raiseError("Unsupported service needs <%s>" % type(need))
1469
+ self.notImplemented("Unsupported service needs <%s>" % type(need))
1436
1470
 
1437
1471
  def writeSwcServiceDependency(self, element: ET.Element, dependency: SwcServiceDependency):
1438
1472
  child_element = ET.SubElement(element, "SWC-SERVICE-DEPENDENCY")
@@ -1463,21 +1497,24 @@ class ARXMLWriter(AbstractARXMLWriter):
1463
1497
  for type_ref in type_refs:
1464
1498
  self.setChildElementOptionalRefType(data_type_refs_tag, "DATA-TYPE-REF", type_ref)
1465
1499
 
1500
+
1466
1501
  def writeSwcInternalBehavior(self, element: ET.Element, behavior: SwcInternalBehavior):
1467
- self.logger.debug("writeSwInternalBehavior %s" % behavior.short_name)
1502
+ self.logger.debug("writeSwInternalBehavior %s" % behavior.getShortName())
1468
1503
 
1469
1504
  child_element = ET.SubElement(element, "SWC-INTERNAL-BEHAVIOR")
1470
1505
  self.writeInternalBehavior(child_element, behavior)
1506
+ self.writeSwcInternalBehaviorArTypedPerInstanceMemories(child_element, behavior)
1471
1507
  self.writeRTEEvents(child_element, behavior)
1472
1508
  self.writeExplicitInterRunnableVariables(child_element, behavior)
1473
- self.setChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART", behavior.handle_termination_and_restart)
1509
+ self.setChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART", behavior.getHandleTerminationAndRestart())
1474
1510
  self.setIncludedDataTypeSets(child_element, behavior.getIncludedDataTypeSets())
1475
1511
  self.writePerInstanceMemories(child_element, behavior)
1476
- self.writePerInstanceParameters(child_element, behavior)
1512
+ self.setParameterDataPrototypes(child_element, "PER-INSTANCE-PARAMETERS", behavior.getPerInstanceParameters())
1477
1513
  self.writePortAPIOptions(child_element, behavior)
1478
1514
  self.writeSwcInternalBehaviorRunnableEntities(child_element, behavior)
1479
1515
  self.writeSwcInternalBehaviorServiceDependencies(child_element, behavior)
1480
- self.setChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION", behavior.supports_multiple_instantiation)
1516
+ self.setParameterDataPrototypes(child_element, "SHARED-PARAMETERS", behavior.getSharedParameters())
1517
+ self.setChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION", behavior.getSupportsMultipleInstantiation())
1481
1518
 
1482
1519
  def writeAtomicSwComponentTypeInternalBehaviors(self, element: ET.Element, behavior: InternalBehavior):
1483
1520
  if behavior is not None:
@@ -1492,7 +1529,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1492
1529
  self.writeAtomicSwComponentTypeInternalBehaviors(element, sw_component.internal_behavior)
1493
1530
 
1494
1531
  def writeComplexDeviceDriverSwComponentType(self, element: ET.Element, sw_component: ComplexDeviceDriverSwComponentType):
1495
- self.logger.debug("writeComplexDeviceDriverSwComponentType %s" % sw_component.short_name)
1532
+ self.logger.debug("writeComplexDeviceDriverSwComponentType %s" % sw_component.getShortName())
1496
1533
  child_element = ET.SubElement(element, "COMPLEX-DEVICE-DRIVER-SW-COMPONENT-TYPE")
1497
1534
  self.writeAtomicSwComponentType(child_element, sw_component)
1498
1535
 
@@ -1508,7 +1545,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1508
1545
  self.setChildElementOptionalLiteral(artifact_desc_tag, "CATEGORY", artifact_desc.category)
1509
1546
 
1510
1547
  def setCode(self, element: ET.SubElement, code_desc: Code):
1511
- self.logger.debug("setCode %s" % code_desc.short_name)
1548
+ self.logger.debug("setCode %s" % code_desc.getShortName())
1512
1549
  child_element = ET.SubElement(element, "CODE")
1513
1550
  self.setIdentifiable(child_element, code_desc)
1514
1551
  self.writeArtifactDescriptor(child_element, code_desc)
@@ -1542,13 +1579,33 @@ class ARXMLWriter(AbstractARXMLWriter):
1542
1579
  self.setChildElementOptionalNumericalValue(child_element, "SIZE", memory_section.getSize())
1543
1580
  self.setChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF", memory_section.getSwAddrMethodRef())
1544
1581
  self.setChildElementOptionalLiteral(child_element, "SYMBOL", memory_section.getSymbol())
1545
- self.logger.debug("write MemorySection %s" % memory_section.getShortName())
1582
+ self.logger.debug("Write MemorySection %s" % memory_section.getShortName())
1583
+
1584
+ def setStackUsage(self, element: ET.Element, usage: StackUsage):
1585
+ self.logger.debug("Write StackUsage %s" % usage.getShortName())
1586
+ self.setIdentifiable(element, usage)
1587
+
1588
+ def setRoughEstimateStackUsage(self, element: ET.Element, usage: RoughEstimateStackUsage):
1589
+ if usage is not None:
1590
+ child_element = ET.SubElement(element, "ROUGH-ESTIMATE-STACK-USAGE")
1591
+ self.setStackUsage(child_element, usage)
1592
+ self.setChildElementOptionalPositiveInteger(child_element, "MEMORY-CONSUMPTION", usage.getMemoryConsumption())
1593
+
1594
+ def writeStackUsages(self, element: ET.Element, usages: List[StackUsage]):
1595
+ if len(usages) > 0:
1596
+ child_element = ET.SubElement(element, "STACK-USAGES")
1597
+ for usage in usages:
1598
+ if isinstance(usage, RoughEstimateStackUsage):
1599
+ self.setRoughEstimateStackUsage(child_element, usage)
1600
+ else:
1601
+ self.notImplemented("Unsupported Stack Usages: <%s>" % type(usage))
1546
1602
 
1547
1603
  def setResourceConsumption(self, element: ET.Element, consumption: ResourceConsumption):
1548
1604
  if consumption is not None:
1549
1605
  child_element = ET.SubElement(element, "RESOURCE-CONSUMPTION")
1550
1606
  self.setIdentifiable(child_element, consumption)
1551
1607
  self.writeMemorySections(child_element, consumption)
1608
+ self.writeStackUsages(child_element, consumption.getStackUsages())
1552
1609
 
1553
1610
  def writeImplementation(self, element: ET.Element, impl: Implementation):
1554
1611
  self.setIdentifiable(element, impl)
@@ -1561,7 +1618,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1561
1618
  self.setChildElementOptionalNumericalValue(element, "VENDOR-ID", impl.getVendorId())
1562
1619
 
1563
1620
  def writeSwcImplementation(self, element: ET.Element, impl: SwcImplementation):
1564
- self.logger.debug("writeSwcImplementation %s" % impl.short_name)
1621
+ self.logger.debug("writeSwcImplementation %s" % impl.getShortName())
1565
1622
  child_element = ET.SubElement(element, "SWC-IMPLEMENTATION")
1566
1623
  self.writeImplementation(child_element, impl)
1567
1624
  self.setChildElementOptionalRefType(child_element, "BEHAVIOR-REF", impl.getBehaviorRef())
@@ -1627,7 +1684,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1627
1684
  self.setEndToEndProtection(child_element, protection)
1628
1685
 
1629
1686
  def writeEndToEndProtectionSet(self, element: ET.Element, protection_set: EndToEndProtectionSet):
1630
- self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.short_name)
1687
+ self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.getShortName())
1631
1688
  child_element = ET.SubElement(element, "END-TO-END-PROTECTION-SET")
1632
1689
  self.setIdentifiable(child_element, protection_set)
1633
1690
  self.writeEndToEndProtections(child_element, protection_set)
@@ -1637,11 +1694,11 @@ class ARXMLWriter(AbstractARXMLWriter):
1637
1694
  self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
1638
1695
 
1639
1696
  def writeVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
1640
- self.logger.debug("writeVariableDataPrototype %s" % prototype.short_name)
1697
+ self.logger.debug("writeVariableDataPrototype %s" % prototype.getShortName())
1641
1698
  child_element = ET.SubElement(element, "VARIABLE-DATA-PROTOTYPE")
1642
1699
  self.setIdentifiable(child_element, prototype)
1643
1700
  self.setAutosarDataPrototype(child_element, prototype)
1644
- self.setInitValue(child_element, prototype.initValue)
1701
+ self.setValueSpecification(child_element, "INIT-VALUE", prototype.getInitValue())
1645
1702
 
1646
1703
  def writeSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
1647
1704
  data_elements = sr_interface.getDataElements()
@@ -1663,7 +1720,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1663
1720
  self.setChildElementOptionalLiteral(child_element, "HANDLE-INVALID", policy.getHandleInvalid())
1664
1721
 
1665
1722
  def writeSenderReceiverInterface(self, element: ET.Element, sr_interface: SenderReceiverInterface):
1666
- self.logger.debug("writeSenderReceiverInterface %s" % sr_interface.short_name)
1723
+ self.logger.debug("writeSenderReceiverInterface %s" % sr_interface.getShortName())
1667
1724
  child_element = ET.SubElement(element, "SENDER-RECEIVER-INTERFACE")
1668
1725
  self.setIdentifiable(child_element, sr_interface)
1669
1726
  self.setChildElementOptionalBooleanValue(child_element, "IS-SERVICE", sr_interface.getIsService())
@@ -1717,15 +1774,22 @@ class ARXMLWriter(AbstractARXMLWriter):
1717
1774
  self.writeBswModuleEntityManagedModeGroup(element, entity)
1718
1775
 
1719
1776
  def setBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
1720
- self.logger.debug("setBswCalledEntity %s" % entity.short_name)
1777
+ self.logger.debug("setBswCalledEntity %s" % entity.getShortName())
1721
1778
  child_element = ET.SubElement(element, "BSW-CALLED-ENTITY")
1722
1779
  self.setBswModuleEntity(child_element, entity)
1723
1780
 
1724
1781
  def setBswSchedulableEntity(self, element: ET.Element, entity: BswSchedulableEntity):
1725
- self.logger.debug("setBswCalledEntity %s" % entity.short_name)
1782
+ self.logger.debug("set BswSchedulableEntity %s" % entity.getShortName())
1726
1783
  child_element = ET.SubElement(element, "BSW-SCHEDULABLE-ENTITY")
1727
1784
  self.setBswModuleEntity(child_element, entity)
1728
1785
 
1786
+ def setBswInterruptEntity(self, element: ET.Element, entity: BswInterruptEntity):
1787
+ self.logger.debug("read BswInterruptEntity %s" % entity.getShortName())
1788
+ child_element = ET.SubElement(element, "BSW-INTERRUPT-ENTITY")
1789
+ self.setBswModuleEntity(child_element, entity)
1790
+ self.setChildElementOptionalLiteral(child_element, "INTERRUPT-CATEGORY", entity.getInterruptCategory())
1791
+ self.setChildElementOptionalLiteral(child_element, "INTERRUPT-SOURCE", entity.getInterruptSource())
1792
+
1729
1793
  def writeBswInternalBehaviorBswModuleEntities(self, element: ET.Element, parent: BswInternalBehavior):
1730
1794
  entities = parent.getBswModuleEntities()
1731
1795
  if len(entities) > 0:
@@ -1735,8 +1799,10 @@ class ARXMLWriter(AbstractARXMLWriter):
1735
1799
  self.setBswCalledEntity(child_element, entity)
1736
1800
  elif isinstance(entity, BswSchedulableEntity):
1737
1801
  self.setBswSchedulableEntity(child_element, entity)
1802
+ elif isinstance(entity, BswInterruptEntity):
1803
+ self.setBswInterruptEntity(child_element, entity)
1738
1804
  else:
1739
- self._raiseError("Unsupported BswModuleEntity <%s>" % type(entity))
1805
+ self.notImplemented("Unsupported BswModuleEntity <%s>" % type(entity))
1740
1806
 
1741
1807
  def setBswEvent(self, element: ET.Element, event: BswEvent):
1742
1808
  self.setIdentifiable(element, event)
@@ -1746,7 +1812,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1746
1812
  self.setBswEvent(element, event)
1747
1813
 
1748
1814
  def setBswTimingEvent(self, element: ET.Element, event: BswTimingEvent):
1749
- self.logger.debug("setBswTimingEvent %s" % event.short_name)
1815
+ self.logger.debug("setBswTimingEvent %s" % event.getShortName())
1750
1816
  child_element = ET.SubElement(element, "BSW-TIMING-EVENT")
1751
1817
  self.setBswScheduleEvent(child_element, event)
1752
1818
  self.setChildElementOptionalTimeValue(child_element, "PERIOD", event.getPeriod())
@@ -1804,10 +1870,10 @@ class ARXMLWriter(AbstractARXMLWriter):
1804
1870
  self._raiseError("Unsupported BswInternalBehavior <%s>" % type(behavior))
1805
1871
 
1806
1872
  def writeBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
1807
- self.logger.debug("writeBswModuleDescription %s" % desc.short_name)
1873
+ self.logger.debug("writeBswModuleDescription %s" % desc.getShortName())
1808
1874
  child_element = ET.SubElement(element, "BSW-MODULE-DESCRIPTION")
1809
1875
  self.setIdentifiable(child_element, desc)
1810
- self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.module_id)
1876
+ self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.getModuleId())
1811
1877
  self.writerBswModuleDescriptionImplementedEntry(child_element, desc)
1812
1878
  self.writeProvidedModeGroup(child_element, desc)
1813
1879
  #self.readRequiredModeGroup(element, bsw_module_description)
@@ -1821,22 +1887,37 @@ class ARXMLWriter(AbstractARXMLWriter):
1821
1887
  child_element = ET.SubElement(mode_groups_tag, "MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL")
1822
1888
  self.setChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF", mode_group_ref)
1823
1889
 
1890
+ def setSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
1891
+ self.logger.debug("Set SwServiceArg <%s>" % arg.getShortName())
1892
+ if arg is not None:
1893
+ child_element = ET.SubElement(element, "SW-SERVICE-ARG")
1894
+ self.setIdentifiable(child_element, arg)
1895
+ self.setChildElementOptionalLiteral(child_element, "DIRECTION", arg.getDirection())
1896
+ self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", arg.getSwDataDefProps())
1897
+
1898
+ def writeBswModuleEntryArguments(self, element: ET.Element, entry: BswModuleEntry):
1899
+ arguments = entry.getArguments()
1900
+ if len(arguments) > 0:
1901
+ child_element = ET.SubElement(element, "ARGUMENTS")
1902
+ for argument in arguments:
1903
+ self.setSwServiceArg(child_element, argument)
1904
+
1824
1905
  def writeBswModuleEntry(self, element: ET.Element, entry: BswModuleEntry):
1825
- self.logger.debug("writeBswModuleDescription %s" % entry.short_name)
1906
+ self.logger.debug("writeBswModuleDescription %s" % entry.getShortName())
1826
1907
  child_element = ET.SubElement(element, "BSW-MODULE-ENTRY")
1827
1908
  self.setIdentifiable(child_element, entry)
1828
- self.setChildElementOptionalNumericalValue(child_element, "SERVICE-ID", entry.service_id)
1829
- self.setChildElementOptionalBooleanValue(child_element, "IS-REENTRANT", entry.is_reentrant)
1830
- self.setChildElementOptionalBooleanValue(child_element, "IS-SYNCHRONOUS", entry.is_synchronous)
1831
- self.setChildElementOptionalLiteral(child_element, "CALL-TYPE", entry.call_type)
1832
- self.setChildElementOptionalLiteral(child_element, "EXECUTION-CONTEXT", entry.execution_context)
1833
- self.setChildElementOptionalLiteral(child_element, "SW-SERVICE-IMPL-POLICY", entry.sw_service_impl_policy)
1834
-
1909
+ self.setChildElementOptionalNumericalValue(child_element, "SERVICE-ID", entry.getServiceId())
1910
+ self.setChildElementOptionalBooleanValue(child_element, "IS-REENTRANT", entry.getIsReentrant())
1911
+ self.setChildElementOptionalBooleanValue(child_element, "IS-SYNCHRONOUS", entry.getIsSynchronous())
1912
+ self.setChildElementOptionalLiteral(child_element, "CALL-TYPE", entry.getCallType())
1913
+ self.setChildElementOptionalLiteral(child_element, "EXECUTION-CONTEXT", entry.getExecutionContext())
1914
+ self.setChildElementOptionalLiteral(child_element, "SW-SERVICE-IMPL-POLICY", entry.getSwServiceImplPolicy())
1915
+ self.writeBswModuleEntryArguments(child_element, entry)
1835
1916
 
1836
1917
  def setSwcBswRunnableMapping(self, element: ET.SubElement, mapping: SwcBswRunnableMapping):
1837
1918
  child_element = ET.SubElement(element, "SWC-BSW-RUNNABLE-MAPPING")
1838
- self.setChildElementOptionalRefType(child_element, "BSW-ENTITY-REF", mapping.bswEntityRef)
1839
- self.setChildElementOptionalRefType(child_element, "SWC-RUNNABLE-REF", mapping.swcRunnableRef)
1919
+ self.setChildElementOptionalRefType(child_element, "BSW-ENTITY-REF", mapping.getBswEntityRef())
1920
+ self.setChildElementOptionalRefType(child_element, "SWC-RUNNABLE-REF", mapping.getSwcRunnableRef())
1840
1921
 
1841
1922
  def writeSwcBswRunnableMappings(self, element: ET.Element, parent: SwcBswMapping):
1842
1923
  runnable_mappings = parent.getRunnableMappings()
@@ -1848,13 +1929,13 @@ class ARXMLWriter(AbstractARXMLWriter):
1848
1929
  else:
1849
1930
  self._raiseError("Unsupported Runnable Mapping <%s>" % type(mapping))
1850
1931
 
1851
- def setSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
1852
- self.logger.debug("writeBswModuleDescription %s" % mapping.short_name)
1932
+ def writeSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
1933
+ self.logger.debug("writeBswModuleDescription %s" % mapping.getShortName())
1853
1934
  child_element = ET.SubElement(element, "SWC-BSW-MAPPING")
1854
1935
  self.setIdentifiable(child_element, mapping)
1855
- self.setChildElementOptionalRefType(child_element, "BSW-BEHAVIOR-REF", mapping.bswBehaviorRef)
1936
+ self.setChildElementOptionalRefType(child_element, "BSW-BEHAVIOR-REF", mapping.getBswBehaviorRef())
1856
1937
  self.writeSwcBswRunnableMappings(child_element, mapping)
1857
- self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.swcBehaviorRef)
1938
+ self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.getSwcBehaviorRef())
1858
1939
 
1859
1940
  def writeEngineeringObject(self, element: ET.Element, engineering_obj: EngineeringObject):
1860
1941
  self.setARObjectAttributes(element, engineering_obj)
@@ -1885,7 +1966,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1885
1966
  self.setChildElementOptionalRefType(child_element, "VENDOR-SPECIFIC-MODULE-DEF-REF", ref)
1886
1967
 
1887
1968
  def writeBswImplementation(self, element: ET.Element, impl: BswImplementation):
1888
- self.logger.debug("writeBswModuleDescription %s" % impl.short_name)
1969
+ self.logger.debug("writeBswModuleDescription %s" % impl.getShortName())
1889
1970
  child_element = ET.SubElement(element, "BSW-IMPLEMENTATION")
1890
1971
  self.writeImplementation(child_element, impl)
1891
1972
  self.setChildElementOptionalLiteral(child_element, "AR-RELEASE-VERSION", impl.getArReleaseVersion())
@@ -1906,7 +1987,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1906
1987
  self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", type_element.getSwDataDefProps())
1907
1988
 
1908
1989
  def writeImplementationDataType(self, element: ET.Element, data_type: ImplementationDataType):
1909
- self.logger.debug("writeImplementationDataType %s" % data_type.short_name)
1990
+ self.logger.debug("writeImplementationDataType %s" % data_type.getShortName())
1910
1991
  child_element = ET.SubElement(element, "IMPLEMENTATION-DATA-TYPE")
1911
1992
  self.setAutosarDataType(child_element, data_type)
1912
1993
  self.setChildElementOptionalLiteral(child_element, "DYNAMIC-ARRAY-SIZE-PROFILE", data_type.getDynamicArraySizeProfile())
@@ -1923,7 +2004,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1923
2004
  self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
1924
2005
  self.setChildElementOptionalRefType(child_element, "TYPE-TREF", prototype.typeTRef)
1925
2006
  self.setChildElementOptionalLiteral(child_element, "DIRECTION", prototype.direction)
1926
- self.setChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY", prototype.server_argument_impl_policy)
2007
+ self.setChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY", prototype.serverArgumentImplPolicy)
1927
2008
 
1928
2009
  def writePossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
1929
2010
  error_refs = parent.getPossbileErrorRefs()
@@ -1933,7 +2014,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1933
2014
  self.setChildElementOptionalRefType(error_refs_tag, "POSSIBLE-ERROR-REF", error_ref)
1934
2015
 
1935
2016
  def writeClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
1936
- self.logger.debug("writeClientServerOperation %s" % operation.short_name)
2017
+ self.logger.debug("writeClientServerOperation %s" % operation.getShortName())
1937
2018
  child_element = ET.SubElement(element, "CLIENT-SERVER-OPERATION")
1938
2019
  self.setIdentifiable(child_element, operation)
1939
2020
  self.writeArgumentDataPrototypes(child_element, operation)
@@ -1950,7 +2031,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1950
2031
  self._raiseError("Unsupported Operation <%s>" % type(operation))
1951
2032
 
1952
2033
  def writeApplicationError(self, element: ET.Element, error: ApplicationError):
1953
- self.logger.debug("writeApplicationError %s" % error.short_name)
2034
+ self.logger.debug("writeApplicationError %s" % error.getShortName())
1954
2035
  child_element = ET.SubElement(element, "APPLICATION-ERROR")
1955
2036
  self.setIdentifiable(child_element, error)
1956
2037
  self.setChildElementOptionalNumericalValue(child_element, "ERROR-CODE", error.error_code)
@@ -1970,33 +2051,26 @@ class ARXMLWriter(AbstractARXMLWriter):
1970
2051
  self.setChildElementOptionalBooleanValue(element, "IS-SERVICE", port_interface.isService)
1971
2052
  self.setChildElementOptionalLiteral(element, "SERVICE-KIND", port_interface.serviceKind)
1972
2053
 
1973
- def writeParameterInterfaceParameters(self, element: ET.Element, param_interface: ParameterInterface):
1974
- parameters = param_interface.getParameters()
1975
- if len(parameters) > 0:
1976
- child_element = ET.SubElement(element, "PARAMETERS")
1977
- for prototype in parameters:
1978
- self.writeParameterDataPrototype(child_element, prototype)
1979
-
1980
2054
  def writeParameterInterface(self, element: ET.Element, param_interface: ParameterInterface):
1981
- self.logger.debug("Write ParameterInterface %s" % param_interface.short_name)
2055
+ self.logger.debug("Write ParameterInterface %s" % param_interface.getShortName())
1982
2056
  child_element = ET.SubElement(element, "PARAMETER-INTERFACE")
1983
2057
  self.setPortInterface(child_element, param_interface)
1984
- self.writeParameterInterfaceParameters(child_element, param_interface)
2058
+ self.setParameterDataPrototypes(child_element, "PARAMETERS", param_interface.getParameters())
1985
2059
 
1986
2060
  def writeClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
1987
- self.logger.debug("writeClientServerInterface %s" % cs_interface.short_name)
2061
+ self.logger.debug("writeClientServerInterface %s" % cs_interface.getShortName())
1988
2062
  child_element = ET.SubElement(element, "CLIENT-SERVER-INTERFACE")
1989
2063
  self.setPortInterface(child_element, cs_interface)
1990
2064
  self.writeOperations(child_element, cs_interface)
1991
2065
  self.writePossibleErrors(child_element, cs_interface)
1992
2066
 
1993
2067
  def writeApplicationSwComponentType(self, element: ET.Element, sw_component: ApplicationSwComponentType):
1994
- self.logger.debug("writeApplicationSwComponentType %s" % sw_component.short_name)
2068
+ self.logger.debug("writeApplicationSwComponentType %s" % sw_component.getShortName())
1995
2069
  child_element = ET.SubElement(element, "APPLICATION-SW-COMPONENT-TYPE")
1996
2070
  self.writeAtomicSwComponentType(child_element, sw_component)
1997
2071
 
1998
2072
  def writeEcuAbstractionSwComponentType(self, element: ET.Element, sw_component: EcuAbstractionSwComponentType):
1999
- self.logger.debug("writeEcuAbstractionSwComponentType %s" % sw_component.short_name)
2073
+ self.logger.debug("writeEcuAbstractionSwComponentType %s" % sw_component.getShortName())
2000
2074
  child_element = ET.SubElement(element, "ECU-ABSTRACTION-SW-COMPONENT-TYPE")
2001
2075
  self.writeAtomicSwComponentType(child_element, sw_component)
2002
2076
 
@@ -2008,7 +2082,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2008
2082
  self.setChildElementOptionalNumericalValue(child_element, "MAX-NUMBER-OF-ELEMENTS", prototype.maxNumberOfElements)
2009
2083
 
2010
2084
  def writeApplicationArrayDataType(self, element: ET.Element, data_type: ApplicationArrayDataType):
2011
- self.logger.debug("writeApplicationArrayDataType %s" % data_type.short_name)
2085
+ self.logger.debug("writeApplicationArrayDataType %s" % data_type.getShortName())
2012
2086
  child_element = ET.SubElement(element, "APPLICATION-ARRAY-DATA-TYPE")
2013
2087
  self.setApplicationCompositeDataType(child_element, data_type)
2014
2088
  self.setApplicationArrayElement(child_element, data_type.element)
@@ -2037,13 +2111,13 @@ class ARXMLWriter(AbstractARXMLWriter):
2037
2111
  return group
2038
2112
 
2039
2113
  def writeSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
2040
- self.logger.debug("writeSwRecordLayout %s" % layout.short_name)
2114
+ self.logger.debug("writeSwRecordLayout %s" % layout.getShortName())
2041
2115
  child_element = ET.SubElement(element, "SW-RECORD-LAYOUT")
2042
2116
  self.setIdentifiable(child_element, layout)
2043
2117
  self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", layout.getSwRecordLayoutGroup())
2044
2118
 
2045
2119
  def writeSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
2046
- self.logger.debug("writeSwAddrMethod %s" % method.short_name)
2120
+ self.logger.debug("writeSwAddrMethod %s" % method.getShortName())
2047
2121
  child_element = ET.SubElement(element, "SW-ADDR-METHOD")
2048
2122
  self.setIdentifiable(child_element, method)
2049
2123
  self.setChildElementOptionalLiteral(child_element, "MEMORY-ALLOCATION-KEYWORD-POLICY", method.getMemoryAllocationKeywordPolicy())
@@ -2056,11 +2130,11 @@ class ARXMLWriter(AbstractARXMLWriter):
2056
2130
  self.setChildElementOptionalLiteral(child_element, "SECTION-TYPE", method.getSectionType())
2057
2131
 
2058
2132
  def writeTriggerInterface(self, element: ET.Element, trigger_if: TriggerInterface):
2059
- self.logger.debug("writeTriggerInterface %s" % trigger_if.short_name)
2133
+ self.logger.debug("writeTriggerInterface %s" % trigger_if.getShortName())
2060
2134
  child_element = ET.SubElement(element, "TRIGGER-INTERFACE")
2061
2135
 
2062
2136
  def writeServiceSwComponentType(self, element: ET.Element, sw_component: ServiceSwComponentType):
2063
- self.logger.debug("writeServiceSwComponentType %s" % sw_component.short_name)
2137
+ self.logger.debug("writeServiceSwComponentType %s" % sw_component.getShortName())
2064
2138
  child_element = ET.SubElement(element, "SERVICE-SW-COMPONENT-TYPE")
2065
2139
  self.writeAtomicSwComponentType(child_element, sw_component)
2066
2140
 
@@ -2085,7 +2159,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2085
2159
  self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", map.getModeGroupRef())
2086
2160
 
2087
2161
  def writeDataTypeMappingSet(self, element: ET.Element, mapping_set: DataTypeMappingSet):
2088
- self.logger.debug("writeDataTypeMappingSet %s" % mapping_set.short_name)
2162
+ self.logger.debug("writeDataTypeMappingSet %s" % mapping_set.getShortName())
2089
2163
  child_element = ET.SubElement(element, "DATA-TYPE-MAPPING-SET")
2090
2164
  self.setIdentifiable(child_element, mapping_set)
2091
2165
  self.writeDataTypeMaps(child_element, mapping_set)
@@ -2104,7 +2178,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2104
2178
  self.setModeDeclaration(child_element, mode_declaration)
2105
2179
 
2106
2180
  def writeModeDeclarationGroup(self, element: ET.Element, group: ModeDeclarationGroup):
2107
- self.logger.debug("writeModeDeclarationGroup %s" % group.short_name)
2181
+ self.logger.debug("writeModeDeclarationGroup %s" % group.getShortName())
2108
2182
  child_element = ET.SubElement(element, "MODE-DECLARATION-GROUP")
2109
2183
  self.setIdentifiable(child_element, group)
2110
2184
  self.setChildElementOptionalRefType(child_element, "INITIAL-MODE-REF", group.initialModeRef)
@@ -2120,7 +2194,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2120
2194
  self.setChildElementOptionalRefType(child_element, "TYPE-TREF", mode_group.type_tref)
2121
2195
 
2122
2196
  def writeModeSwitchInterface(self, element: ET.Element, mode_interface: ModeSwitchInterface):
2123
- self.logger.debug("writeModeSwitchInterface %s" % mode_interface.short_name)
2197
+ self.logger.debug("writeModeSwitchInterface %s" % mode_interface.getShortName())
2124
2198
  child_element = ET.SubElement(element, "MODE-SWITCH-INTERFACE")
2125
2199
  self.setPortInterface(child_element, mode_interface)
2126
2200
  self.writeModeSwitchInterfaceModeGroup(child_element, mode_interface)
@@ -2147,7 +2221,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2147
2221
  self._raiseError("Unsupported order element <%s>" % type(order_element))
2148
2222
 
2149
2223
  def writeExecutionOrderConstraint(self, element: ET.Element, constraint: ExecutionOrderConstraint):
2150
- self.logger.debug("writeExecutionOrderConstraint %s" % constraint.short_name)
2224
+ self.logger.debug("writeExecutionOrderConstraint %s" % constraint.getShortName())
2151
2225
  child_element = ET.SubElement(element, "EXECUTION-ORDER-CONSTRAINT")
2152
2226
  self.setIdentifiable(child_element, constraint)
2153
2227
  self.writeExecutionOrderConstraintOrderedElement(child_element, constraint)
@@ -2166,7 +2240,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2166
2240
  self.writeTimingRequirements(element, extension)
2167
2241
 
2168
2242
  def writeSwcTiming(self, element: ET.Element, timing: SwcTiming):
2169
- self.logger.debug("writeSWcTiming %s" % timing.short_name)
2243
+ self.logger.debug("writeSWcTiming %s" % timing.getShortName())
2170
2244
  child_element = ET.SubElement(element, "SWC-TIMING")
2171
2245
  self.setIdentifiable(child_element, timing)
2172
2246
  self.writeTimingExtension(child_element, timing)
@@ -2188,7 +2262,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2188
2262
  self.writePduToFrameMappings(element, frame)
2189
2263
 
2190
2264
  def writeLinUnconditionalFrame(self, element: ET.Element, frame: LinUnconditionalFrame):
2191
- self.logger.debug("LinUnconditionalFrame %s" % frame.short_name)
2265
+ self.logger.debug("LinUnconditionalFrame %s" % frame.getShortName())
2192
2266
  child_element = ET.SubElement(element, "LIN-UNCONDITIONAL-FRAME")
2193
2267
  self.writeFrame(child_element, frame)
2194
2268
 
@@ -2210,7 +2284,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2210
2284
  self.setChildElementOptionalRefType(refs_tag, "TX-NM-PDU-REF", ref)
2211
2285
 
2212
2286
  def writeCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
2213
- self.logger.debug("writeCanNmNode %s" % nm_node.short_name)
2287
+ self.logger.debug("writeCanNmNode %s" % nm_node.getShortName())
2214
2288
  child_element = ET.SubElement(element, "CAN-NM-NODE")
2215
2289
  self.setIdentifiable(child_element, nm_node)
2216
2290
  self.writeNmNode(child_element, nm_node)
@@ -2259,7 +2333,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2259
2333
  self.setChildElementOptionalBooleanValue(element, "NM-SYNCHRONIZING-NETWORK", cluster.getNmSynchronizingNetwork())
2260
2334
 
2261
2335
  def writeCanNmCluster(self, element: ET.Element, cluster: CanNmCluster):
2262
- self.logger.debug("WriteCanNmCluster %s" % cluster.short_name)
2336
+ self.logger.debug("WriteCanNmCluster %s" % cluster.getShortName())
2263
2337
  child_element = ET.SubElement(element, "CAN-NM-CLUSTER")
2264
2338
  self.setIdentifiable(child_element, cluster)
2265
2339
  self.writeNmCluster(child_element, cluster)
@@ -2290,20 +2364,20 @@ class ARXMLWriter(AbstractARXMLWriter):
2290
2364
  self._raiseError("Unsupported Nm Cluster <%s>" % type(cluster))
2291
2365
 
2292
2366
  def writeNmConfig(self, element: ET.Element, config: NmConfig):
2293
- self.logger.debug("WriteNmConfig %s" % config.short_name)
2367
+ self.logger.debug("WriteNmConfig %s" % config.getShortName())
2294
2368
  child_element = ET.SubElement(element, "NM-CONFIG")
2295
2369
  self.setIdentifiable(child_element, config)
2296
2370
  self.writeNmConfigNmClusters(child_element, config)
2297
2371
  self.writeNmConfigNmClusterCouplings(child_element, config)
2298
2372
 
2299
2373
  def writeNmPdu(self, element: ET.Element, pdu: NmPdu):
2300
- self.logger.debug("NmPdu %s" % pdu.short_name)
2374
+ self.logger.debug("NmPdu %s" % pdu.getShortName())
2301
2375
  child_element = ET.SubElement(element, "NM-PDU")
2302
2376
  self.setIdentifiable(child_element, pdu)
2303
2377
  self.writeIPdu(child_element, pdu)
2304
2378
 
2305
2379
  def writeNPdu(self, element: ET.Element, pdu: NPdu):
2306
- self.logger.debug("NPdu %s" % pdu.short_name)
2380
+ self.logger.debug("NPdu %s" % pdu.getShortName())
2307
2381
  child_element = ET.SubElement(element, "N-PDU")
2308
2382
  self.setIdentifiable(child_element, pdu)
2309
2383
  self.writeIPdu(child_element, pdu)
@@ -2312,20 +2386,20 @@ class ARXMLWriter(AbstractARXMLWriter):
2312
2386
  self.setChildElementOptionalLiteral(element, "LENGTH", pdu.getLength())
2313
2387
 
2314
2388
  def writeDcmIPdu(self, element: ET.Element, pdu: DcmIPdu):
2315
- self.logger.debug("DcmIPdu %s" % pdu.short_name)
2389
+ self.logger.debug("DcmIPdu %s" % pdu.getShortName())
2316
2390
  child_element = ET.SubElement(element, "DCM-I-PDU")
2317
2391
  self.setIdentifiable(child_element, pdu)
2318
2392
  self.writeIPdu(child_element, pdu)
2319
2393
  self.setChildElementOptionalLiteral(child_element, "DIAG-PDU-TYPE", pdu.getDiagPduType())
2320
2394
 
2321
2395
  def writeSecuredIPdu(self, element: ET.Element, pdu: DcmIPdu):
2322
- self.logger.debug("SecuredIPdu %s" % pdu.short_name)
2396
+ self.logger.debug("SecuredIPdu %s" % pdu.getShortName())
2323
2397
  child_element = ET.SubElement(element, "SECURED-I-PDU")
2324
2398
  self.setIdentifiable(child_element, pdu)
2325
2399
  self.writeIPdu(child_element, pdu)
2326
2400
 
2327
2401
  def writeCanTpConfig(self, element: ET.Element, config: CanTpConfig):
2328
- self.logger.debug("CanTpConfig %s" % config.short_name)
2402
+ self.logger.debug("CanTpConfig %s" % config.getShortName())
2329
2403
  child_element = ET.SubElement(element, "CAN-TP-CONFIG")
2330
2404
  self.setIdentifiable(child_element, config)
2331
2405
 
@@ -2431,27 +2505,129 @@ class ARXMLWriter(AbstractARXMLWriter):
2431
2505
  else:
2432
2506
  self.notImplemented("Unsupported PduTriggering <%s>" % type(triggering))
2433
2507
 
2434
- def writeCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
2435
- self.logger.debug("CanPhysicalChannel %s" % channel.short_name)
2508
+ def setCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
2509
+ self.logger.debug("Set CanPhysicalChannel %s" % channel.getShortName())
2436
2510
  child_element = ET.SubElement(element, "CAN-PHYSICAL-CHANNEL")
2437
2511
  self.setIdentifiable(child_element, channel)
2438
2512
  self.writePhysicalChannel(child_element, channel)
2439
2513
 
2440
2514
  def writeLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
2441
- self.logger.debug("LinPhysicalChannel %s" % channel.short_name)
2515
+ self.logger.debug("Set LinPhysicalChannel %s" % channel.getShortName())
2442
2516
  child_element = ET.SubElement(element, "LIN-PHYSICAL-CHANNEL")
2443
2517
  self.setIdentifiable(child_element, channel)
2444
2518
  self.writePhysicalChannel(child_element, channel)
2445
2519
 
2520
+ def setIpv6Configuration(self, element: ET.Element, configuration: Ipv6Configuration):
2521
+ if configuration is not None:
2522
+ child_element = ET.SubElement(element, "IPV-6-CONFIGURATION")
2523
+ self.setChildElementOptionalPositiveInteger(child_element, "ASSIGNMENT-PRIORITY", configuration.getAssignmentPriority())
2524
+ self.setChildElementOptionalLiteral(child_element, "DEFAULT-ROUTER", configuration.getDefaultRouter())
2525
+ self.setChildElementOptionalBooleanValue(child_element, "ENABLE-ANYCAST", configuration.getEnableAnycast())
2526
+ self.setChildElementOptionalPositiveInteger(child_element, "HOP-COUNT", configuration.getHopCount())
2527
+ self.setChildElementOptionalPositiveInteger(child_element, "IP-ADDRESS-PREFIX-LENGTH", configuration.getIpAddressPrefixLength())
2528
+ self.setChildElementOptionalLiteral(child_element, "IPV-6-ADDRESS", configuration.getIpv6Address())
2529
+ self.setChildElementOptionalLiteral(child_element, "IPV-6-ADDRESS-SOURCE", configuration.getIpv6AddressSource())
2530
+
2531
+ def writeNetworkEndPointNetworkEndPointAddresses(self, element: ET.Element, addresses: List[NetworkEndpointAddress]):
2532
+ if len(addresses) > 0:
2533
+ child_element = ET.SubElement(element, "NETWORK-ENDPOINT-ADDRESSES")
2534
+ for address in addresses:
2535
+ if isinstance(address, Ipv6Configuration):
2536
+ self.setIpv6Configuration(child_element, address)
2537
+ else:
2538
+ self.notImplemented("Unsupported Network EndPoint Address <%s>" % type(address))
2539
+
2540
+ def writeNetworkEndPoint(self, element: ET.Element, end_point: NetworkEndpoint):
2541
+ self.logger.debug("Set NetworkEndpoint %s" % end_point.getShortName())
2542
+ child_element = ET.SubElement(element, "NETWORK-ENDPOINT")
2543
+ self.setIdentifiable(child_element, end_point)
2544
+ self.writeNetworkEndPointNetworkEndPointAddresses(child_element, end_point.getNetworkEndpointAddresses())
2545
+ self.setChildElementOptionalPositiveInteger(child_element, "PRIORITY", end_point.getPriority())
2546
+
2547
+ def writeEthernetPhysicalChannelNetworkEndPoints(self, element: ET.Element, end_points: List[NetworkEndpoint]):
2548
+ if len(end_points) > 0:
2549
+ child_element = ET.SubElement(element, "NETWORK-ENDPOINTS")
2550
+ for end_point in end_points:
2551
+ self.writeNetworkEndPoint(child_element, end_point)
2552
+
2553
+ def setSocketConnectionIpduIdentifier(self, element: ET.Element,identifier: SocketConnectionIpduIdentifier):
2554
+ if identifier is not None:
2555
+ child_element = ET.SubElement(element, "SOCKET-CONNECTION-IPDU-IDENTIFIER")
2556
+ self.setChildElementOptionalPositiveInteger(child_element, "HEADER-ID", identifier.getHeaderId())
2557
+ self.setChildElementOptionalLiteral(child_element, "PDU-COLLECTION-SEMANTICS", identifier.getPduCollectionSemantics())
2558
+ self.setChildElementOptionalLiteral(child_element, "PDU-COLLECTION-TRIGGER", identifier.getPduCollectionTrigger())
2559
+ self.setChildElementOptionalRefType(child_element, "PDU-REF", identifier.getPduRef())
2560
+ self.setChildElementOptionalRefType(child_element, "PDU-TRIGGERING-REF", identifier.getPduTriggeringRef())
2561
+
2562
+ def setSocketConnectionPdus(self, element: ET.Element, key: str, pdus: List[SocketConnectionIpduIdentifier]):
2563
+ if len(pdus) > 0:
2564
+ child_element = ET.SubElement(element, key)
2565
+ for pdu in pdus:
2566
+ if isinstance(pdu, SocketConnectionIpduIdentifier):
2567
+ self.setSocketConnectionIpduIdentifier(child_element, pdu)
2568
+ else:
2569
+ self.notImplemented("Unsupported Pdu <%s>" % type(pdu))
2570
+
2571
+ def setSocketConnection(self, element: ET.Element, connection: SocketConnection):
2572
+ if connection is not None:
2573
+ child_element = ET.SubElement(element, "SOCKET-CONNECTION")
2574
+ self.setChildElementOptionalRefType(child_element, "CLIENT-PORT-REF", connection.getClientPortRef())
2575
+ self.setSocketConnectionPdus(child_element, "PDUS", connection.getPdus())
2576
+ self.setChildElementOptionalPositiveInteger(child_element, "PDU-COLLECTION-MAX-BUFFER-SIZE", connection.getPduCollectionMaxBufferSize())
2577
+ self.setChildElementOptionalTimeValue(child_element, "PDU-COLLECTION-TIMEOUT", connection.getPduCollectionTimeout())
2578
+ self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", connection.getShortLabel())
2579
+
2580
+ def writeSocketConnectionBundleConnections(self, element: ET.Element, bundle: SocketConnectionBundle):
2581
+ connections = bundle.getBundledConnections()
2582
+ if len(connections) > 0:
2583
+ child_element = ET.SubElement(element, "BUNDLED-CONNECTIONS")
2584
+ for connection in connections:
2585
+ if isinstance(connection, SocketConnection):
2586
+ self.setSocketConnection(child_element, connection)
2587
+ else:
2588
+ self.notImplemented("Unsupported Bundled Connection <%s>" % type(connection))
2589
+
2590
+ def writeSocketConnectionBundle(self, element: ET.Element, bundle: SocketConnectionBundle):
2591
+ if bundle is not None:
2592
+ child_element = ET.SubElement(element, "SOCKET-CONNECTION-BUNDLE")
2593
+ self.setReferable(child_element, bundle)
2594
+ self.writeSocketConnectionBundleConnections(child_element, bundle)
2595
+ self.setChildElementOptionalRefType(child_element, "SERVER-PORT-REF", bundle.getServerPortRef())
2596
+
2597
+ def writeSoAdConfigConnectionBundles(self, element: ET.Element, config: SoAdConfig):
2598
+ bundles = config.getConnectionBundles()
2599
+ if len(bundles) > 0:
2600
+ child_element = ET.SubElement(element, "CONNECTION-BUNDLES")
2601
+ for bundle in bundles:
2602
+ if isinstance(bundle, SocketConnectionBundle):
2603
+ self.writeSocketConnectionBundle(child_element, bundle)
2604
+ else:
2605
+ self.notImplemented("Unsupported Connection Bundle <%s>" % type(bundle))
2606
+
2607
+ def setSoAdConfig(self, element: ET.Element, key: str, config: SoAdConfig):
2608
+ if config is not None:
2609
+ child_element = ET.SubElement(element, key)
2610
+ self.writeSoAdConfigConnectionBundles(child_element, config)
2611
+
2612
+ def setEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
2613
+ self.logger.debug("Set EthernetPhysicalChannel %s" % channel.getShortName())
2614
+ child_element = ET.SubElement(element, "ETHERNET-PHYSICAL-CHANNEL")
2615
+ self.setIdentifiable(child_element, channel)
2616
+ self.writePhysicalChannel(child_element, channel)
2617
+ self.writeEthernetPhysicalChannelNetworkEndPoints(child_element, channel.getNetworkEndpoints())
2618
+ self.setSoAdConfig(child_element, "SO-AD-CONFIG", channel.getSoAdConfig())
2619
+
2446
2620
  def writeCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
2447
2621
  channels = cluster.getPhysicalChannels()
2448
2622
  if len(channels) > 0:
2449
2623
  child_element = ET.SubElement(element, "PHYSICAL-CHANNELS")
2450
2624
  for channel in channels:
2451
2625
  if isinstance(channel, CanPhysicalChannel):
2452
- self.writeCanPhysicalChannel(child_element, channel)
2626
+ self.setCanPhysicalChannel(child_element, channel)
2453
2627
  elif isinstance(channel, LinPhysicalChannel):
2454
2628
  self.writeLinPhysicalChannel(child_element, channel)
2629
+ elif isinstance(channel, EthernetPhysicalChannel):
2630
+ self.setEthernetPhysicalChannel(child_element, channel)
2455
2631
  else:
2456
2632
  self.notImplemented("Unsupported Physical Channel <%s>" % type(channel))
2457
2633
 
@@ -2466,7 +2642,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2466
2642
  self.setChildElementOptionalNumericalValue(element, "SPEED", cluster.getSpeed())
2467
2643
 
2468
2644
  def writeLinCluster(self, element: ET.Element, cluster: LinCluster):
2469
- self.logger.debug("LinCluster %s" % cluster.short_name)
2645
+ self.logger.debug("LinCluster %s" % cluster.getShortName())
2470
2646
  child_element = ET.SubElement(element, "LIN-CLUSTER")
2471
2647
  self.setIdentifiable(child_element, cluster)
2472
2648
  child_element = ET.SubElement(child_element, "LIN-CLUSTER-VARIANTS")
@@ -2474,7 +2650,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2474
2650
  self.writeCommunicationCluster(child_element, cluster)
2475
2651
 
2476
2652
  def writeCanCluster(self, element: ET.Element, cluster: CanCluster):
2477
- self.logger.debug("CanCluster %s" % cluster.short_name)
2653
+ self.logger.debug("CanCluster %s" % cluster.getShortName())
2478
2654
  child_element = ET.SubElement(element, "CAN-CLUSTER")
2479
2655
  self.setIdentifiable(child_element, cluster)
2480
2656
 
@@ -2483,8 +2659,17 @@ class ARXMLWriter(AbstractARXMLWriter):
2483
2659
  self.writeCommunicationCluster(child_element, cluster)
2484
2660
  self.readAbstractCanCluster(child_element, cluster)
2485
2661
 
2662
+ def writeEthernetCluster(self, element: ET.Element, cluster: EthernetCluster):
2663
+ self.logger.debug("Set EthernetCluster %s" % cluster.getShortName())
2664
+ child_element = ET.SubElement(element, "ETHERNET-CLUSTER")
2665
+ self.setARElement(child_element, cluster)
2666
+
2667
+ child_element = ET.SubElement(child_element, "ETHERNET-CLUSTER-VARIANTS")
2668
+ child_element = ET.SubElement(child_element, "ETHERNET-CLUSTER-CONDITIONAL")
2669
+ self.writeCommunicationCluster(child_element, cluster)
2670
+
2486
2671
  def writeCanFrame(self, element: ET.Element, frame: CanFrame):
2487
- self.logger.debug("Write CanFrame %s" % frame.short_name)
2672
+ self.logger.debug("Write CanFrame %s" % frame.getShortName())
2488
2673
  child_element = ET.SubElement(element, "CAN-FRAME")
2489
2674
  self.writeFrame(child_element, frame)
2490
2675
 
@@ -2519,10 +2704,14 @@ class ARXMLWriter(AbstractARXMLWriter):
2519
2704
  else:
2520
2705
  self._raiseError("Unsupported CommConnectorPort <%s>" % type(port))
2521
2706
 
2522
- def writeCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
2707
+ def setCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
2523
2708
  self.logger.debug("Write CanCommunicationController %s" % controller.getShortName())
2524
2709
  self.setIdentifiable(element, controller)
2525
2710
 
2711
+ def setEthernetCommunicationController(self, element: ET.Element, controller: EthernetCommunicationController):
2712
+ self.logger.debug("Write EthernetCommunicationController %s" % controller.getShortName())
2713
+ self.setIdentifiable(element, controller)
2714
+
2526
2715
  def writeEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
2527
2716
  controllers = instance.getCommControllers()
2528
2717
  if len(controllers) > 0:
@@ -2530,19 +2719,25 @@ class ARXMLWriter(AbstractARXMLWriter):
2530
2719
  for controller in controllers:
2531
2720
  if isinstance(controller, CanCommunicationController):
2532
2721
  child_element = ET.SubElement(controllers_tag, "CAN-COMMUNICATION-CONTROLLER")
2533
- self.writeCanCommunicationController(child_element, controller)
2722
+ self.setCanCommunicationController(child_element, controller)
2723
+ elif isinstance(controller, EthernetCommunicationController):
2724
+ child_element = ET.SubElement(controllers_tag, "ETHERNET-COMMUNICATION-CONTROLLER")
2725
+ self.setEthernetCommunicationController(child_element, controller)
2534
2726
  else:
2535
- self._raiseError("Unsupported Communication Controller <%s>" % type(controller))
2727
+ self.notImplemented("Unsupported Communication Controller <%s>" % type(controller))
2536
2728
 
2537
2729
  def writeCommunicationConnector(self, element: ET.Element, connector: CommunicationConnector):
2538
2730
  self.setIdentifiable(element, connector)
2539
2731
  self.setChildElementOptionalRefType(element, "COMM-CONTROLLER-REF", connector.getCommControllerRef())
2540
2732
  self.writeCommunicationConnectorEcuCommPortInstances(element, connector)
2541
2733
 
2542
-
2543
2734
  def writeCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
2544
2735
  self.logger.debug("Write CanCommunicationConnector %s" % connector.getShortName())
2545
- self.writeCommunicationConnector(element, connector)
2736
+ self.writeCommunicationConnector(element, connector)
2737
+
2738
+ def writeEthernetCommunicationConnector(self, element: ET.Element, connector: EthernetCommunicationConnector):
2739
+ self.logger.debug("Write EthernetCommunicationConnector %s" % connector.getShortName())
2740
+ self.writeCommunicationConnector(element, connector)
2546
2741
 
2547
2742
  def writeEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
2548
2743
  connectors = instance.getConnectors()
@@ -2552,11 +2747,14 @@ class ARXMLWriter(AbstractARXMLWriter):
2552
2747
  if isinstance(connector, CanCommunicationConnector):
2553
2748
  child_element = ET.SubElement(connectors_tag, "CAN-COMMUNICATION-CONNECTOR")
2554
2749
  self.writeCanCommunicationConnector(child_element, connector)
2750
+ elif isinstance(connector, EthernetCommunicationConnector):
2751
+ child_element = ET.SubElement(connectors_tag, "ETHERNET-COMMUNICATION-CONNECTOR")
2752
+ self.writeEthernetCommunicationConnector(child_element, connector)
2555
2753
  else:
2556
2754
  self._raiseError("Unsupported Communication connector <%s>" % type(connector))
2557
2755
 
2558
2756
  def writeEcuInstance(self, element: ET.Element, instance: EcuInstance):
2559
- self.logger.debug("EcuInstance %s" % instance.short_name)
2757
+ self.logger.debug("EcuInstance %s" % instance.getShortName())
2560
2758
  child_element = ET.SubElement(element, "ECU-INSTANCE")
2561
2759
  self.setIdentifiable(child_element, instance)
2562
2760
  self.setChildElementOptionalTimeValue(child_element, "COM-CONFIGURATION-GW-TIME-BASE", instance.getComConfigurationGwTimeBase())
@@ -2569,7 +2767,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2569
2767
  self.setChildElementOptionalBooleanValue(child_element, "WAKE-UP-OVER-BUS-SUPPORTED", instance.getWakeUpOverBusSupported())
2570
2768
 
2571
2769
  def writeSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
2572
- self.logger.debug("Write SystemSignalGroup %s" % group.short_name)
2770
+ self.logger.debug("Write SystemSignalGroup %s" % group.getShortName())
2573
2771
  child_element = ET.SubElement(element, "SYSTEM-SIGNAL-GROUP")
2574
2772
  self.setIdentifiable(child_element, group)
2575
2773
  signal_refs = group.getSystemSignalRefs()
@@ -2580,6 +2778,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2580
2778
 
2581
2779
  def setSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
2582
2780
  child_element = ET.SubElement(element, "SENDER-RECEIVER-TO-SIGNAL-MAPPING")
2781
+ self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", mapping.getCommunicationDirection())
2583
2782
  self.setVariableDataPrototypeInSystemInstanceRef(child_element, "DATA-ELEMENT-IREF", mapping.getDataElementIRef())
2584
2783
  self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", mapping.getSystemSignalRef())
2585
2784
 
@@ -2621,7 +2820,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2621
2820
  self.notImplemented("Unsupported Sw Mapping %s" % type(sw_mapping))
2622
2821
 
2623
2822
  def writeSystemMapping(self, element: ET.Element, mapping: SystemMapping):
2624
- self.logger.debug("Write SystemMapping %s" % mapping.short_name)
2823
+ self.logger.debug("Write SystemMapping %s" % mapping.getShortName())
2625
2824
  child_element = ET.SubElement(element, "SYSTEM-MAPPING")
2626
2825
  self.setIdentifiable(child_element, mapping)
2627
2826
  self.writeSystemMappingDataMappings(child_element, mapping)
@@ -2644,10 +2843,11 @@ class ARXMLWriter(AbstractARXMLWriter):
2644
2843
  child_element = ET.SubElement(element, "ROOT-SOFTWARE-COMPOSITIONS")
2645
2844
  child_element = ET.SubElement(child_element, "ROOT-SW-COMPOSITION-PROTOTYPE")
2646
2845
  self.setIdentifiable(child_element, prototype)
2846
+ self.setChildElementOptionalRefType(child_element, "FLAT-MAP-REF", prototype.getFlatMapRef())
2647
2847
  self.setChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF", prototype.getSoftwareCompositionTRef())
2648
2848
 
2649
2849
  def writeSystem(self, element: ET.Element, system: System):
2650
- self.logger.debug("Write System %s" % system.short_name)
2850
+ self.logger.debug("Write System %s" % system.getShortName())
2651
2851
  child_element = ET.SubElement(element, "SYSTEM")
2652
2852
  self.setARElement(child_element, system)
2653
2853
 
@@ -2664,13 +2864,69 @@ class ARXMLWriter(AbstractARXMLWriter):
2664
2864
  self.setChildElementOptionalRevisionLabelString(child_element, "SYSTEM-VERSION", system.getSystemVersion())
2665
2865
 
2666
2866
  def writePhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
2667
- self.logger.debug("Write PhysicalDimension %s" % dimension.short_name)
2867
+ self.logger.debug("Set PhysicalDimension %s" % dimension.getShortName())
2668
2868
  child_element = ET.SubElement(element, "PHYSICAL-DIMENSION")
2669
2869
  self.setARElement(child_element, dimension)
2670
2870
  self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
2671
2871
  self.setChildElementOptionalNumericalValue(child_element, "LENGTH-EXP", dimension.getLengthExp())
2672
2872
  self.setChildElementOptionalNumericalValue(child_element, "TIME-EXP", dimension.getTimeExp())
2673
2873
 
2874
+ def setFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
2875
+ self.logger.debug("Set FlatInstanceDescriptor %s" % desc.getShortName())
2876
+ child_element = ET.SubElement(element, "FLAT-INSTANCE-DESCRIPTOR")
2877
+ self.setIdentifiable(child_element, desc)
2878
+ self.setAnyInstanceRef(child_element, "UPSTREAM-REFERENCE-IREF", desc.getUpstreamReferenceIRef())
2879
+ self.setAnyInstanceRef(child_element, "ECU-EXTRACT-REFERENCE-IREF", desc.getEcuExtractReferenceIRef())
2880
+
2881
+ def writeFlatMapInstances(self, element: ET.Element, map: FlatMap):
2882
+ instances = map.getInstances()
2883
+ if len(instances) > 0:
2884
+ child_element = ET.SubElement(element, "INSTANCES")
2885
+ for instance in instances:
2886
+ if isinstance(instance, FlatInstanceDescriptor):
2887
+ self.setFlatInstanceDescriptor(child_element, instance)
2888
+ else:
2889
+ self.notImplemented("Unsupported Flat Map Instances <%s>" % type(instance))
2890
+
2891
+ def writeFlatMap(self, element: ET.Element, map: FlatMap):
2892
+ self.logger.debug("Set FlatMap %s" % map.getShortName())
2893
+ child_element = ET.SubElement(element, "FLAT-MAP")
2894
+ self.setARElement(child_element, map)
2895
+ self.writeFlatMapInstances(child_element, map)
2896
+
2897
+ def setDataPrototypeMapping(self, element: ET.Element, mapping: DataPrototypeMapping):
2898
+ child_element = ET.SubElement(element, "DATA-PROTOTYPE-MAPPING")
2899
+ self.setChildElementOptionalRefType(child_element, "FIRST-DATA-PROTOTYPE-REF", mapping.getFirstDataPrototypeRef())
2900
+ self.setChildElementOptionalRefType(child_element, "SECOND-DATA-PROTOTYPE-REF", mapping.getSecondDataPrototypeRef())
2901
+
2902
+ def setDataPrototypeMappings(self, element: ET.Element, key: str, mappings: List[DataPrototypeMapping]):
2903
+ if len(mappings) > 0:
2904
+ child_element = ET.SubElement(element, key)
2905
+ for mapping in mappings:
2906
+ self.setDataPrototypeMapping(child_element, mapping)
2907
+
2908
+ def setVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
2909
+ self.logger.debug("set VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
2910
+ child_element = ET.SubElement(element, "VARIABLE-AND-PARAMETER-INTERFACE-MAPPING")
2911
+ self.setIdentifiable(child_element, mapping)
2912
+ self.setDataPrototypeMappings(child_element, "DATA-MAPPINGS", mapping.getDataMappings())
2913
+
2914
+ def writePortInterfaceMappings(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
2915
+ mappings = mapping_set.getPortInterfaceMappings()
2916
+ if len(mappings) > 0:
2917
+ child_element = ET.SubElement(element, "PORT-INTERFACE-MAPPINGS")
2918
+ for mapping in mappings:
2919
+ if isinstance(mapping, VariableAndParameterInterfaceMapping):
2920
+ self.setVariableAndParameterInterfaceMapping(child_element, mapping)
2921
+ else:
2922
+ self.notImplemented("Unsupported PortInterfaceMapping <%s>" % type(mapping))
2923
+
2924
+ def writePortInterfaceMappingSet(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
2925
+ self.logger.debug("Set PortInterfaceMappingSet %s" % mapping_set.getShortName())
2926
+ child_element = ET.SubElement(element, "PORT-INTERFACE-MAPPING-SET")
2927
+ self.setARElement(child_element, mapping_set)
2928
+ self.writePortInterfaceMappings(child_element, mapping_set)
2929
+
2674
2930
  def setISignalMappings(self, element: ET.Element, mappings: List[ISignalMapping]):
2675
2931
  if len(mappings) > 0:
2676
2932
  mappings_tag = ET.SubElement(element, "SIGNAL-MAPPINGS")
@@ -2680,21 +2936,22 @@ class ARXMLWriter(AbstractARXMLWriter):
2680
2936
  self.setChildElementOptionalRefType(child_element, "TARGET-SIGNAL-REF", mapping.targetSignalRef)
2681
2937
 
2682
2938
  def writeGateway(self, element: ET.Element, gateway: Gateway):
2683
- self.logger.debug("Gateway %s" % gateway.short_name)
2939
+ self.logger.debug("Gateway %s" % gateway.getShortName())
2684
2940
  child_element = ET.SubElement(element, "GATEWAY")
2685
2941
  self.setIdentifiable(child_element, gateway)
2686
2942
  self.setChildElementOptionalRefType(child_element, "ECU-REF", gateway.ecuRef)
2687
2943
  self.setISignalMappings(child_element, gateway.getSignalMappings())
2688
2944
 
2689
2945
  def writeISignal(self, element: ET.Element, signal: ISignal):
2690
- self.logger.debug("ISignal %s" % signal.short_name)
2946
+ self.logger.debug("ISignal %s" % signal.getShortName())
2691
2947
  child_element = ET.SubElement(element, "I-SIGNAL")
2692
2948
  self.setIdentifiable(child_element, signal)
2693
- self.setChildElementOptionalLiteral(child_element, "DATA-TYPE-POLICY", signal.dataTypePolicy)
2694
- self.setInitValue(child_element, signal.initValue)
2695
- self.setChildElementOptionalNumericalValue(child_element, "LENGTH", signal.length)
2696
- self.setSwDataDefProps(child_element, "NETWORK-REPRESENTATION-PROPS", signal.networkRepresentationProps)
2697
- self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", signal.systemSignalRef)
2949
+ self.setChildElementOptionalLiteral(child_element, "DATA-TYPE-POLICY", signal.getDataTypePolicy())
2950
+ self.setChildElementOptionalLiteral(child_element, "I-SIGNAL-TYPE", signal.getISignalType())
2951
+ self.setValueSpecification(child_element, "INIT-VALUE", signal.getInitValue())
2952
+ self.setChildElementOptionalNumericalValue(child_element, "LENGTH", signal.getLength())
2953
+ self.setSwDataDefProps(child_element, "NETWORK-REPRESENTATION-PROPS", signal.getNetworkRepresentationProps())
2954
+ self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", signal.getSystemSignalRef())
2698
2955
 
2699
2956
  def writeEcucValueCollectionEcucValues(self, element: ET.Element, collection: EcucValueCollection):
2700
2957
  value_refs = collection.getEcucValueRefs()
@@ -2705,7 +2962,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2705
2962
  self.setChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF", value_ref)
2706
2963
 
2707
2964
  def writeEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
2708
- self.logger.debug("EcucValueCollection %s" % collection.short_name)
2965
+ self.logger.debug("EcucValueCollection %s" % collection.getShortName())
2709
2966
  child_element = ET.SubElement(element, "ECUC-VALUE-COLLECTION")
2710
2967
  self.setIdentifiable(child_element, collection)
2711
2968
  self.setChildElementOptionalRefType(child_element, "ECU-EXTRACT-REF", collection.getEcuExtractRef())
@@ -2761,7 +3018,8 @@ class ARXMLWriter(AbstractARXMLWriter):
2761
3018
  if instance_ref is not None:
2762
3019
  child_element = ET.SubElement(element, key)
2763
3020
  self.setChildElementOptionalRefType(child_element, "BASE-REF", instance_ref.getBaseRef())
2764
- self.setChildElementOptionalRefType(child_element, "CONTEXT-ELEMENT-REF", instance_ref.getContextElementRef())
3021
+ for ref in instance_ref.getContextElementRefs():
3022
+ self.setChildElementOptionalRefType(child_element, "CONTEXT-ELEMENT-REF", ref)
2765
3023
  self.setChildElementOptionalRefType(child_element, "TARGET-REF", instance_ref.getTargetRef())
2766
3024
  return instance_ref
2767
3025
 
@@ -2784,7 +3042,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2784
3042
  self.notImplemented("Unsupported EcucParameterValue <%s>" % type(reference_value))
2785
3043
 
2786
3044
  def writeEcucContainValue(self, element: ET.Element, container_value: EcucContainerValue):
2787
- self.logger.debug("EcucContainerValue %s" % container_value.short_name)
3045
+ self.logger.debug("EcucContainerValue %s" % container_value.getShortName())
2788
3046
  child_element = ET.SubElement(element, "ECUC-CONTAINER-VALUE")
2789
3047
  self.setIdentifiable(child_element, container_value)
2790
3048
  self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", container_value.getDefinitionRef())
@@ -2803,7 +3061,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2803
3061
  self.notImplemented("Unsupported Container %s" % type(container))
2804
3062
 
2805
3063
  def writeEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
2806
- self.logger.debug("EcucModuleConfigurationValues %s" % values.short_name)
3064
+ self.logger.debug("EcucModuleConfigurationValues %s" % values.getShortName())
2807
3065
  child_element = ET.SubElement(element, "ECUC-MODULE-CONFIGURATION-VALUES")
2808
3066
  self.setIdentifiable(child_element, values)
2809
3067
  self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", values.getDefinitionRef())
@@ -2812,7 +3070,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2812
3070
  self.writeEcucModuleConfigurationValuesContainers(child_element, values)
2813
3071
 
2814
3072
  def writeISignalGroup(self, element: ET.Element, group: ISignalGroup):
2815
- self.logger.debug("ISignalGroup %s" % group.short_name)
3073
+ self.logger.debug("ISignalGroup %s" % group.getShortName())
2816
3074
  child_element = ET.SubElement(element, "I-SIGNAL-GROUP")
2817
3075
  self.setIdentifiable(child_element, group)
2818
3076
  signal_refs = group.getISignalRefs()
@@ -2823,7 +3081,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2823
3081
  self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-GROUP-REF", group.getSystemSignalGroupRef())
2824
3082
 
2825
3083
  def writeISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
2826
- self.logger.debug("ISignalIPduGroup %s" % group.short_name)
3084
+ self.logger.debug("Set ISignalIPduGroup %s" % group.getShortName())
2827
3085
  child_element = ET.SubElement(element, "I-SIGNAL-I-PDU-GROUP")
2828
3086
  self.setIdentifiable(child_element, group)
2829
3087
  self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", group.getCommunicationDirection())
@@ -2841,20 +3099,19 @@ class ARXMLWriter(AbstractARXMLWriter):
2841
3099
  self.setChildElementOptionalRefType(ref_conditional_tag, "I-SIGNAL-I-PDU-REF", pdu_ref)
2842
3100
 
2843
3101
  def writeSystemSignal(self, element: ET.Element, signal: SystemSignal):
2844
- self.logger.debug("SystemSignal %s" % signal.short_name)
3102
+ self.logger.debug("SystemSignal %s" % signal.getShortName())
2845
3103
  child_element = ET.SubElement(element, "SYSTEM-SIGNAL")
2846
3104
  self.setIdentifiable(child_element, signal)
2847
3105
  self.setChildElementOptionalBooleanValue(child_element, "DYNAMIC-LENGTH", signal.getDynamicLength())
2848
-
2849
-
3106
+ self.setSwDataDefProps(child_element, "PHYSICAL-PROPS", signal.getPhysicalProps())
2850
3107
 
2851
3108
  def writeGenericEthernetFrame(self, element: ET.Element, signal: GenericEthernetFrame):
2852
- self.logger.debug("Write GenericEthernetFrame %s" % signal.short_name)
3109
+ self.logger.debug("Write GenericEthernetFrame %s" % signal.getShortName())
2853
3110
  child_element = ET.SubElement(element, "ETHERNET-FRAME")
2854
3111
  self.writeFrame(child_element, signal)
2855
3112
 
2856
3113
  def writeLifeCycleInfoSet(self, element: ET.Element, set: LifeCycleInfoSet):
2857
- self.logger.debug("Write LifeCycleInfoSet %s" % set.short_name)
3114
+ self.logger.debug("Write LifeCycleInfoSet %s" % set.getShortName())
2858
3115
  child_element = ET.SubElement(element, "LIFE-CYCLE-INFO-SET")
2859
3116
  self.setIdentifiable(child_element, set)
2860
3117
 
@@ -2873,8 +3130,9 @@ class ARXMLWriter(AbstractARXMLWriter):
2873
3130
  self.setChildElementOptionalNumericalValue(child_element, "UPDATE-INDICATION-BIT-POSITION", mapping.getUpdateIndicationBitPosition())
2874
3131
 
2875
3132
  def setDataFilter(self, element: ET.Element, key: str, filter: DataFilter):
2876
- child_element = ET.SubElement(element, key)
2877
- self.setChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE", filter.getDataFilterType())
3133
+ if filter is not None:
3134
+ child_element = ET.SubElement(element, key)
3135
+ self.setChildElementOptionalLiteral(child_element, "DATA-FILTER-TYPE", filter.getDataFilterType())
2878
3136
 
2879
3137
  def setTransmissionModeConditions(self, element: ET.Element, conditions: List[TransmissionModeCondition]):
2880
3138
  if len(conditions) > 0:
@@ -2895,11 +3153,22 @@ class ARXMLWriter(AbstractARXMLWriter):
2895
3153
  self.setChildElementOptionalIntegerValue(child_element, "NUMBER-OF-REPETITIONS", timing.getNumberOfRepetitions())
2896
3154
  self.setTimeRangeType(child_element, "REPETITION-PERIOD", timing.getRepetitionPeriod())
2897
3155
 
3156
+ def setTimeRangeType(self, element: ET.Element, key: str, time_range: TimeRangeType):
3157
+ if time_range is not None:
3158
+ child_element = ET.SubElement(element, key)
3159
+ self.setChildElementOptionalTimeValue(child_element, "VALUE", time_range.getValue())
3160
+
3161
+ def setCyclicTiming(self, element: ET.Element, key: str, timing: CyclicTiming):
3162
+ if timing is not None:
3163
+ child_element = ET.SubElement(element, key)
3164
+ self.setTimeRangeType(child_element, "TIME-OFFSET", timing.getTimeOffset())
3165
+ self.setTimeRangeType(child_element, "TIME-PERIOD", timing.getTimePeriod())
3166
+
2898
3167
  def setTransmissionModeTiming(self, element: ET.Element, key: str, timing: TransmissionModeTiming):
2899
3168
  if timing is not None:
2900
3169
  self.logger.debug("Set TransmissionModeTiming of <%s>" % key)
2901
3170
  child_element = ET.SubElement(element, key)
2902
- #timing.getCyclicTiming(child_element, "")
3171
+ self.setCyclicTiming(child_element, "CYCLIC-TIMING", timing.getCyclicTiming())
2903
3172
  self.setEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING", timing.getEventControlledTiming())
2904
3173
 
2905
3174
  def setTransmissionModeDeclaration(self, element: ET.Element, key: str, decl : TransmissionModeDeclaration):
@@ -2912,10 +3181,11 @@ class ARXMLWriter(AbstractARXMLWriter):
2912
3181
  if timing is not None:
2913
3182
  spec_tag = ET.SubElement(element, "I-PDU-TIMING-SPECIFICATIONS")
2914
3183
  child_element = ET.SubElement(spec_tag, "I-PDU-TIMING")
3184
+ self.setChildElementOptionalTimeValue(child_element, "MINIMUM-DELAY", timing.getMinimumDelay())
2915
3185
  self.setTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION", timing.getTransmissionModeDeclaration())
2916
3186
 
2917
3187
  def writeISignalIPdu(self, element: ET.Element, i_pdu: ISignalIPdu):
2918
- self.logger.debug("ISignalIPdu %s" % i_pdu.short_name)
3188
+ self.logger.debug("ISignalIPdu %s" % i_pdu.getShortName())
2919
3189
  child_element = ET.SubElement(element, "I-SIGNAL-I-PDU")
2920
3190
  self.setIdentifiable(child_element, i_pdu)
2921
3191
  self.setChildElementOptionalNumericalValue(child_element, "LENGTH", i_pdu.getLength())
@@ -2953,7 +3223,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2953
3223
  elif isinstance(ar_element, BswModuleEntry):
2954
3224
  self.writeBswModuleEntry(element, ar_element)
2955
3225
  elif isinstance(ar_element, SwcBswMapping):
2956
- self.setSwcBswMapping(element, ar_element)
3226
+ self.writeSwcBswMapping(element, ar_element)
2957
3227
  elif isinstance(ar_element, BswImplementation):
2958
3228
  self.writeBswImplementation(element, ar_element)
2959
3229
  elif isinstance(ar_element, ImplementationDataType):
@@ -3022,6 +3292,14 @@ class ARXMLWriter(AbstractARXMLWriter):
3022
3292
  self.writeLifeCycleInfoSet(element, ar_element)
3023
3293
  elif isinstance(ar_element, PhysicalDimension):
3024
3294
  self.writePhysicalDimension(element, ar_element)
3295
+ elif isinstance(ar_element, FlatMap):
3296
+ self.writeFlatMap(element, ar_element)
3297
+ elif isinstance(ar_element, PortInterfaceMappingSet):
3298
+ self.writePortInterfaceMappingSet(element, ar_element)
3299
+ elif isinstance(ar_element, EthernetCluster):
3300
+ self.writeEthernetCluster(element, ar_element)
3301
+ elif isinstance(ar_element, ISignalIPduGroup):
3302
+ self.writeISignalIPduGroup(element, ar_element)
3025
3303
  else:
3026
3304
  self.notImplemented("Unsupported Elements of ARPackage <%s>" % type(ar_element))
3027
3305