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