armodel 1.5.0__py3-none-any.whl → 1.6.0__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 +13 -13
- armodel/cli/memory_section_cli.py +76 -0
- armodel/cli/system_signal_cli.py +74 -0
- armodel/lib/__init__.py +2 -1
- armodel/lib/system_signal.py +37 -0
- armodel/models/__init__.py +6 -3
- armodel/models/annotation.py +27 -3
- armodel/models/ar_object.py +18 -6
- armodel/models/ar_package.py +124 -14
- armodel/models/ar_ref.py +109 -62
- armodel/models/bsw_module_template.py +37 -14
- armodel/models/common_structure.py +132 -147
- armodel/models/communication.py +1 -1
- armodel/models/data_prototype.py +41 -6
- armodel/models/datatype.py +11 -5
- armodel/models/fibex/can_communication.py +119 -3
- armodel/models/fibex/fibex_4_can/__init__.py +0 -0
- armodel/models/fibex/fibex_4_lin/__init__.py +0 -0
- armodel/models/fibex/fibex_4_multiplatform.py +81 -88
- armodel/models/fibex/fibex_core/__init__.py +0 -0
- armodel/models/fibex/fibex_core/core_communication.py +627 -0
- armodel/models/fibex/fibex_core/core_topology.py +180 -0
- armodel/models/fibex/lin_communication.py +24 -3
- armodel/models/general_structure.py +101 -8
- armodel/models/m2/__init__.py +0 -0
- armodel/models/m2/autosar_templates/__init__.py +0 -0
- armodel/models/m2/autosar_templates/common_structure/__init__.py +188 -0
- armodel/models/m2/autosar_templates/common_structure/constants.py +0 -0
- armodel/models/m2/autosar_templates/ecuc_description_template.py +268 -0
- armodel/models/m2/autosar_templates/sw_component_template/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/communication.py +316 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/instance_refs.py +149 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface.py +236 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/__init__.py +203 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/access_count.py +13 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/data_elements.py +54 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/mode_declaration_group.py +39 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/server_call.py +26 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/trigger.py +10 -0
- armodel/models/m2/autosar_templates/system_template/__init__.py +321 -0
- armodel/models/m2/autosar_templates/system_template/data_mapping.py +88 -0
- armodel/models/m2/autosar_templates/system_template/network_management.py +554 -0
- armodel/models/m2/autosar_templates/system_template/transport_protocols.py +7 -0
- armodel/models/m2/msr/__init__.py +0 -0
- armodel/models/m2/msr/asam_hdo/__init__.py +0 -0
- armodel/models/m2/msr/asam_hdo/units.py +105 -0
- armodel/models/m2/msr/data_dictionary/__init__.py +0 -0
- armodel/models/m2/msr/data_dictionary/auxillary_objects.py +42 -0
- armodel/models/m2/msr/data_dictionary/data_def_properties.py +295 -0
- armodel/models/m2/msr/documentation/__init__.py +0 -0
- armodel/models/m2/msr/documentation/block_elements.py +18 -0
- armodel/models/multilanguage_data.py +15 -0
- armodel/models/per_instance_memory.py +34 -6
- armodel/models/port_prototype.py +12 -174
- armodel/models/sw_component.py +14 -216
- armodel/parser/abstract_arxml_parser.py +10 -1
- armodel/parser/arxml_parser.py +803 -186
- armodel/tests/test_armodel/models/test_ar_package.py +1 -1
- armodel/tests/test_armodel/models/test_ar_ref.py +3 -3
- armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -5
- armodel/tests/test_armodel/models/test_common_structure.py +3 -3
- armodel/tests/test_armodel/models/test_data_dictionary.py +5 -5
- armodel/tests/test_armodel/models/test_data_prototype.py +1 -1
- armodel/tests/test_armodel/models/test_datatype.py +1 -1
- armodel/tests/test_armodel/models/test_port_interface.py +1 -1
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +3 -3
- armodel/tests/test_armodel/parser/test_sw_components.py +2 -2
- armodel/writer/arxml_writer.py +832 -196
- {armodel-1.5.0.dist-info → armodel-1.6.0.dist-info}/METADATA +24 -1
- armodel-1.6.0.dist-info/RECORD +127 -0
- {armodel-1.5.0.dist-info → armodel-1.6.0.dist-info}/entry_points.txt +3 -1
- armodel-1.5.0.dist-info/RECORD +0 -91
- {armodel-1.5.0.dist-info → armodel-1.6.0.dist-info}/LICENSE +0 -0
- {armodel-1.5.0.dist-info → armodel-1.6.0.dist-info}/WHEEL +0 -0
- {armodel-1.5.0.dist-info → armodel-1.6.0.dist-info}/top_level.txt +0 -0
armodel/writer/arxml_writer.py
CHANGED
|
@@ -2,42 +2,57 @@ import xml.etree.cElementTree as ET
|
|
|
2
2
|
|
|
3
3
|
from typing import List
|
|
4
4
|
|
|
5
|
+
from ..models.m2.msr.data_dictionary.auxillary_objects import SwAddrMethod
|
|
6
|
+
from ..models.m2.msr.data_dictionary.data_def_properties import SwDataDefProps
|
|
7
|
+
from ..models.m2.msr.asam_hdo.units import PhysicalDimension
|
|
8
|
+
from ..models.m2.msr.documentation.block_elements import DocumentationBlock
|
|
9
|
+
from ..models.m2_msr import CompuConstTextContent, CompuMethod, CompuNominatorDenominator, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
|
|
10
|
+
|
|
11
|
+
from ..models.m2.autosar_templates.common_structure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
|
|
12
|
+
from ..models.m2.autosar_templates.sw_component_template.components.instance_refs import PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
13
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior import RunnableEntityArgument, SynchronousServerCallPoint
|
|
14
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior.server_call import ServerCallPoint
|
|
15
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior.data_elements import ParameterAccess, VariableAccess
|
|
16
|
+
from ..models.m2.autosar_templates.ecuc_description_template import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
|
|
17
|
+
from ..models.m2.autosar_templates.system_template.data_mapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
18
|
+
from ..models.m2.autosar_templates.system_template import System, SystemMapping
|
|
19
|
+
from ..models.m2.autosar_templates.system_template.network_management import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
|
|
20
|
+
from ..models.m2.autosar_templates.system_template.transport_protocols import CanTpConfig
|
|
21
|
+
from ..models.m2.autosar_templates.sw_component_template.communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, RPortComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
22
|
+
|
|
5
23
|
from ..models.fibex.fibex_4_multiplatform import Gateway, ISignalMapping
|
|
24
|
+
from ..models.fibex.can_communication import CanFrame, CanFrameTriggering, RxIdentifierRange
|
|
25
|
+
from ..models.fibex.fibex_core.core_communication import FrameTriggering, IPdu, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalTriggering, PduTriggering, SecuredIPdu, SystemSignal, DcmIPdu, Frame, ISignal, NPdu, NmPdu, SystemSignalGroup
|
|
26
|
+
from ..models.fibex.lin_communication import LinFrameTriggering, LinUnconditionalFrame
|
|
27
|
+
from ..models.fibex.fibex_core.core_topology import AbstractCanCluster, CanCluster, EcuInstance, CanPhysicalChannel, CommunicationCluster, LinCluster, LinPhysicalChannel, PhysicalChannel
|
|
6
28
|
|
|
7
|
-
from ..models.fibex.can_communication import CanFrame
|
|
8
|
-
from ..models.fibex.fibex_core import DcmIPdu, Frame, ISignal, NPdu, NmPdu
|
|
9
|
-
from ..models.fibex.lin_communication import LinUnconditionalFrame
|
|
10
|
-
from ..models.fibex.lin_topology import LinCluster
|
|
11
|
-
from ..models.system_template.network_management import NmConfig
|
|
12
|
-
from ..models.system_template.transport_protocols import CanTpConfig
|
|
13
29
|
from ..models.internal_behavior import IncludedDataTypeSet, InternalBehavior
|
|
14
30
|
from ..models.timing import EOCExecutableEntityRef, ExecutionOrderConstraint, SwcTiming, TimingExtension
|
|
15
31
|
from ..models.data_def_properties import ValueList
|
|
16
|
-
from ..models.multilanguage_data import MultiLanguageOverviewParagraph, MultilanguageLongName
|
|
32
|
+
from ..models.multilanguage_data import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultilanguageLongName
|
|
17
33
|
from ..models.record_layout import SwRecordLayout, SwRecordLayoutGroup, SwRecordLayoutV
|
|
18
34
|
from ..models.service_mapping import RoleBasedPortAssignment
|
|
19
35
|
from ..models.service_needs import NvBlockNeeds, RoleBasedDataAssignment
|
|
20
36
|
from ..models.data_prototype import ApplicationArrayElement, ApplicationCompositeElementDataPrototype, ApplicationRecordElement, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
21
37
|
from ..models.bsw_module_template import BswCalledEntity, BswEvent, BswInternalBehavior, BswModeSenderPolicy, BswModuleDescription, BswModuleEntity, BswModuleEntry, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
|
|
22
38
|
from ..models.ar_package import AUTOSAR
|
|
23
|
-
from ..models.sw_component import ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, DataReceivedEvent, EcuAbstractionSwComponentType, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent,
|
|
39
|
+
from ..models.sw_component import ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, DataReceivedEvent, EcuAbstractionSwComponentType, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, PortAPIOption, PortGroup, RTEEvent, ServiceDependency, ServiceSwComponentType, SwcModeSwitchEvent, SwcServiceDependency
|
|
24
40
|
from ..models.ar_package import ARPackage
|
|
25
|
-
from ..models.ar_ref import ApplicationCompositeElementInPortInterfaceInstanceRef, AutosarParameterRef, AutosarVariableRef, InnerPortGroupInCompositionInstanceRef, POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef,
|
|
41
|
+
from ..models.ar_ref import AnyInstanceRef, ApplicationCompositeElementInPortInterfaceInstanceRef, AutosarParameterRef, AutosarVariableRef, InnerPortGroupInCompositionInstanceRef, POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef, RefType, VariableDataPrototypeInSystemInstanceRef
|
|
26
42
|
from ..models.calibration import SwAxisGrouped, SwAxisIndividual, SwCalprmAxis, SwCalprmAxisSet, SwValueCont, SwValues
|
|
27
|
-
from ..models.common_structure import
|
|
43
|
+
from ..models.common_structure import IncludedModeDeclarationGroupSet, ModeDeclaration, ModeDeclarationGroup, ModeDeclarationGroupPrototype
|
|
28
44
|
from ..models.communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
|
|
29
|
-
from ..models.data_dictionary import SwAddrMethod, SwDataDefProps
|
|
30
45
|
from ..models.datatype import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType, BaseTypeDirectDefinition, DataTypeMappingSet, ImplementationDataType, SwBaseType
|
|
31
46
|
from ..models.general_structure import ARElement, AdminData, Identifiable, Limit, MultilanguageReferrable, Referrable, Sdg, SwcBswMapping, SwcBswRunnableMapping
|
|
32
|
-
|
|
33
|
-
from ..models.port_prototype import
|
|
47
|
+
|
|
48
|
+
from ..models.port_prototype import PPortPrototype, PortPrototype, RPortPrototype
|
|
34
49
|
from ..models.sw_component import AssemblySwConnector, CompositionSwComponentType, DelegationSwConnector, SwComponentPrototype, SwComponentType, SwConnector
|
|
35
50
|
from ..models.annotation import Annotation
|
|
36
51
|
from ..models.end_to_end_protection import EndToEndDescription, EndToEndProtection, EndToEndProtectionSet, EndToEndProtectionVariablePrototype
|
|
37
|
-
from ..models.port_interface import ApplicationError, ClientServerInterface, ClientServerOperation, ModeSwitchInterface, PortInterface, SenderReceiverInterface, TriggerInterface
|
|
38
|
-
from ..models.
|
|
52
|
+
from ..models.m2.autosar_templates.sw_component_template.port_interface import ApplicationError, ClientServerInterface, ClientServerOperation, ModeSwitchInterface, PortInterface, SenderReceiverInterface, TriggerInterface
|
|
53
|
+
from ..models.m2.msr.asam_hdo.units import Unit
|
|
39
54
|
from ..models.implementation import AutosarEngineeringObject, BswImplementation, Code, EngineeringObject, Implementation, SwcImplementation
|
|
40
|
-
from ..models.common_structure import
|
|
55
|
+
from ..models.common_structure import ExecutableEntity, ResourceConsumption
|
|
41
56
|
from ..models.sw_component import RunnableEntity, SwcInternalBehavior, TimingEvent
|
|
42
57
|
from ..models.ar_object import ARLiteral
|
|
43
58
|
from ..models.global_constraints import DataConstr, InternalConstrs, PhysConstrs
|
|
@@ -53,6 +68,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
53
68
|
|
|
54
69
|
return sub_element
|
|
55
70
|
|
|
71
|
+
def setChildElementRxIdentifierRange(self, element: ET.Element, key: str, range: RxIdentifierRange):
|
|
72
|
+
if range is not None:
|
|
73
|
+
child_element = ET.SubElement(element, key)
|
|
74
|
+
self.setChildElementOptionalNumericalValue(child_element, "LOWER-CAN-ID", range.getLowerCanId())
|
|
75
|
+
self.setChildElementOptionalNumericalValue(child_element, "UPPER-CAN-ID", range.getUpperCanId())
|
|
76
|
+
|
|
56
77
|
def writeSds(self, parent: ET.Element, sdg: Sdg):
|
|
57
78
|
for sd in sdg.getSds():
|
|
58
79
|
sd_tag = ET.SubElement(parent, "SD")
|
|
@@ -63,8 +84,9 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
63
84
|
if sdg is not None:
|
|
64
85
|
sdg_tag = ET.SubElement(parent, "SDG")
|
|
65
86
|
sdg_tag.attrib['GID'] = sdg.gid
|
|
66
|
-
self.setSdg(sdg_tag, sdg.sdg_contents_type)
|
|
67
87
|
self.writeSds(sdg_tag, sdg)
|
|
88
|
+
for sdg_item in sdg.getSdgContentsTypes():
|
|
89
|
+
self.setSdg(sdg_tag, sdg_item)
|
|
68
90
|
|
|
69
91
|
def writeSdgs(self, parent: ET.Element, admin_data: AdminData):
|
|
70
92
|
sdgs = admin_data.getSdgs()
|
|
@@ -81,7 +103,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
81
103
|
limit_tag.attrib['INTERVAL-TYPE'] = limit.intervalType
|
|
82
104
|
limit_tag.text = limit.value
|
|
83
105
|
|
|
84
|
-
def
|
|
106
|
+
def setReferable(self, element: ET.Element, referrable: Referrable):
|
|
85
107
|
self.setARObjectAttributes(element, referrable)
|
|
86
108
|
self.setShortName(element, referrable.short_name)
|
|
87
109
|
|
|
@@ -107,61 +129,77 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
107
129
|
l2_tag.attrib['L'] = l2.l
|
|
108
130
|
l2_tag.text = l2.value
|
|
109
131
|
|
|
110
|
-
def
|
|
111
|
-
self.
|
|
112
|
-
if referrable.
|
|
113
|
-
self.setMultiLongName(element, "LONG-NAME", referrable.
|
|
132
|
+
def setMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
|
|
133
|
+
self.setReferable(element, referrable)
|
|
134
|
+
if referrable.longName is not None:
|
|
135
|
+
self.setMultiLongName(element, "LONG-NAME", referrable.longName)
|
|
114
136
|
|
|
115
|
-
def
|
|
137
|
+
def setAdminData(self, element: ET.Element, admin_data: AdminData):
|
|
116
138
|
element = ET.SubElement(element, "ADMIN-DATA")
|
|
117
139
|
self.writeSdgs(element, admin_data)
|
|
118
140
|
|
|
119
|
-
def
|
|
120
|
-
self.
|
|
121
|
-
self.
|
|
122
|
-
self.
|
|
123
|
-
|
|
124
|
-
|
|
141
|
+
def setIdentifiable(self, element: ET.Element, identifiable: Identifiable):
|
|
142
|
+
self.setMultilanguageReferrable(element, identifiable)
|
|
143
|
+
self.setAnnotations(element, identifiable.getAnnotations())
|
|
144
|
+
self.setMultiLanguageOverviewParagraph(element, "DESC", identifiable.getDesc())
|
|
145
|
+
self.setChildElementOptionalLiteral(element, "CATEGORY", identifiable.getCategory())
|
|
146
|
+
if identifiable.getAdminData() is not None:
|
|
147
|
+
self.setAdminData(element, identifiable.getAdminData())
|
|
125
148
|
|
|
126
|
-
def
|
|
127
|
-
self.
|
|
149
|
+
def setARElement(self, parent: ET.Element, ar_element: ARElement):
|
|
150
|
+
self.setIdentifiable(parent, ar_element)
|
|
128
151
|
|
|
129
|
-
def
|
|
152
|
+
def setTransmissionAcknowledgementRequest(self, element: ET.Element, acknowledge: TransmissionAcknowledgementRequest):
|
|
130
153
|
if (acknowledge != None):
|
|
131
154
|
child_element = ET.SubElement(element, "TRANSMISSION-ACKNOWLEDGE")
|
|
132
155
|
self.setARObjectAttributes(child_element, acknowledge)
|
|
133
156
|
if acknowledge.timeout != None:
|
|
134
157
|
self.setChildElementOptionalFloatValue(child_element, "TIMEOUT", acknowledge.timeout)
|
|
135
158
|
|
|
136
|
-
def
|
|
159
|
+
def setSenderComSpec(self, element: ET.Element, com_spec: SenderComSpec):
|
|
137
160
|
representations = com_spec.getCompositeNetworkRepresentations()
|
|
138
161
|
if len(representations) > 0:
|
|
139
162
|
child_element = ET.SubElement(element, "COMPOSITE-NETWORK-REPRESENTATIONS")
|
|
140
163
|
for representation in representations:
|
|
141
164
|
self.setCompositeNetworkRepresentation(child_element, representation)
|
|
142
|
-
self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.
|
|
143
|
-
self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.
|
|
144
|
-
self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.
|
|
145
|
-
self.
|
|
146
|
-
self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.
|
|
165
|
+
self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.getDataElementRef())
|
|
166
|
+
self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.getNetworkRepresentation())
|
|
167
|
+
self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.getHandleOutOfRange())
|
|
168
|
+
self.setTransmissionAcknowledgementRequest(element, com_spec.getTransmissionAcknowledge())
|
|
169
|
+
self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.getUsesEndToEndProtection())
|
|
147
170
|
|
|
148
|
-
def
|
|
149
|
-
|
|
150
|
-
self.setARObjectAttributes(
|
|
151
|
-
self.
|
|
152
|
-
self.setInitValue(
|
|
171
|
+
def setNonqueuedSenderComSpec(self, element: ET.Element, com_spec: NonqueuedSenderComSpec):
|
|
172
|
+
child_element = ET.SubElement(element, "NONQUEUED-SENDER-COM-SPEC")
|
|
173
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
174
|
+
self.setSenderComSpec(child_element, com_spec)
|
|
175
|
+
self.setInitValue(child_element, com_spec.initValue)
|
|
153
176
|
|
|
154
|
-
def
|
|
155
|
-
|
|
156
|
-
self.setARObjectAttributes(
|
|
157
|
-
self.setChildElementOptionalRefType(
|
|
158
|
-
self.setChildElementOptionalNumericalValue(
|
|
177
|
+
def setServerComSpec(self, element: ET.Element, com_spec: ServerComSpec):
|
|
178
|
+
child_element = ET.SubElement(element, "SERVER-COM-SPEC")
|
|
179
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
180
|
+
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.getOperationRef())
|
|
181
|
+
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.getQueueLength())
|
|
182
|
+
|
|
183
|
+
def setQueuedSenderComSpec(self, element: ET.Element, com_spec: QueuedSenderComSpec):
|
|
184
|
+
child_element = ET.SubElement(element, "QUEUED-SENDER-COM-SPEC")
|
|
185
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
186
|
+
self.setSenderComSpec(child_element, com_spec)
|
|
187
|
+
|
|
188
|
+
def setModeSwitchSenderComSpec(self, element: ET.Element, com_spec: ModeSwitchSenderComSpec):
|
|
189
|
+
child_element = ET.SubElement(element, "MODE-SWITCH-SENDER-COM-SPEC")
|
|
190
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
191
|
+
self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", com_spec.getModeGroupRef())
|
|
192
|
+
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.getQueueLength())
|
|
159
193
|
|
|
160
194
|
def writePPortComSpec(self, com_specs_tag: ET.Element, com_spec: PPortComSpec):
|
|
161
195
|
if isinstance(com_spec, NonqueuedSenderComSpec):
|
|
162
|
-
self.
|
|
196
|
+
self.setNonqueuedSenderComSpec(com_specs_tag, com_spec)
|
|
163
197
|
elif isinstance(com_spec, ServerComSpec):
|
|
164
|
-
self.
|
|
198
|
+
self.setServerComSpec(com_specs_tag, com_spec)
|
|
199
|
+
elif isinstance(com_spec, QueuedSenderComSpec):
|
|
200
|
+
self.setQueuedSenderComSpec(com_specs_tag, com_spec)
|
|
201
|
+
elif isinstance(com_spec, ModeSwitchSenderComSpec):
|
|
202
|
+
self.setModeSwitchSenderComSpec(com_specs_tag, com_spec)
|
|
165
203
|
else:
|
|
166
204
|
raise NotImplementedError("Unsupported PPortComSpec %s" % type(com_spec))
|
|
167
205
|
|
|
@@ -185,10 +223,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
185
223
|
child_element = ET.SubElement(element, "COMPOSITE-NETWORK-REPRESENTATIONS")
|
|
186
224
|
for representation in representations:
|
|
187
225
|
self.setCompositeNetworkRepresentation(child_element, representation)
|
|
188
|
-
self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.
|
|
189
|
-
self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.
|
|
190
|
-
self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.
|
|
191
|
-
self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.
|
|
226
|
+
self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.dataElementRef)
|
|
227
|
+
self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.networkRepresentation)
|
|
228
|
+
self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.handleOutOfRange)
|
|
229
|
+
self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.usesEndToEndProtection)
|
|
192
230
|
|
|
193
231
|
def setSwValues(self, element: ET.Element, key: str, sw_values: SwValues):
|
|
194
232
|
if sw_values is not None:
|
|
@@ -249,7 +287,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
249
287
|
def setConstantReference(self, element: ET.Element, value_spec: ConstantReference):
|
|
250
288
|
value_spec_tag = ET.SubElement(element, "CONSTANT-REFERENCE")
|
|
251
289
|
self.writeValueSpecification(value_spec_tag, value_spec)
|
|
252
|
-
self.setChildElementOptionalRefType(value_spec_tag, "CONSTANT-REF", value_spec.
|
|
290
|
+
self.setChildElementOptionalRefType(value_spec_tag, "CONSTANT-REF", value_spec.getConstantRef())
|
|
253
291
|
|
|
254
292
|
def setValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
|
|
255
293
|
if value_spec is not None:
|
|
@@ -277,23 +315,23 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
277
315
|
child_element = ET.SubElement(element, "NONQUEUED-RECEIVER-COM-SPEC")
|
|
278
316
|
self.setARObjectAttributes(child_element, com_spec)
|
|
279
317
|
self.writeReceiverComSpec(child_element, com_spec)
|
|
280
|
-
self.setChildElementOptionalFloatValue(child_element, "ALIVE-TIMEOUT", com_spec.
|
|
281
|
-
self.setChildElementOptionalBooleanValue(child_element, "ENABLE-UPDATE", com_spec.
|
|
282
|
-
self.setChildElementOptionalBooleanValue(child_element, "HANDLE-NEVER-RECEIVED", com_spec.
|
|
283
|
-
self.setChildElementOptionalLiteral(child_element, "HANDLE-TIMEOUT-TYPE", com_spec.
|
|
284
|
-
self.setInitValue(child_element, com_spec.
|
|
318
|
+
self.setChildElementOptionalFloatValue(child_element, "ALIVE-TIMEOUT", com_spec.aliveTimeout)
|
|
319
|
+
self.setChildElementOptionalBooleanValue(child_element, "ENABLE-UPDATE", com_spec.enableUpdated)
|
|
320
|
+
self.setChildElementOptionalBooleanValue(child_element, "HANDLE-NEVER-RECEIVED", com_spec.handleNeverReceived)
|
|
321
|
+
self.setChildElementOptionalLiteral(child_element, "HANDLE-TIMEOUT-TYPE", com_spec.handleTimeoutType)
|
|
322
|
+
self.setInitValue(child_element, com_spec.initValue)
|
|
285
323
|
|
|
286
324
|
def writeQueuedReceiverComSpec(self, element: ET.Element, com_spec: QueuedReceiverComSpec):
|
|
287
325
|
child_element = ET.SubElement(element, "QUEUED-RECEIVER-COM-SPEC")
|
|
288
326
|
self.setARObjectAttributes(child_element, com_spec)
|
|
289
327
|
self.writeReceiverComSpec(child_element, com_spec)
|
|
290
|
-
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.
|
|
328
|
+
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.queueLength)
|
|
291
329
|
|
|
292
330
|
def writeClientComSpec(self, element: ET.Element, com_spec: ClientComSpec):
|
|
293
331
|
self.logger.debug("writeClientComSpec")
|
|
294
332
|
child_element = ET.SubElement(element, "CLIENT-COM-SPEC")
|
|
295
333
|
self.setARObjectAttributes(child_element, com_spec)
|
|
296
|
-
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.
|
|
334
|
+
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.operationRef)
|
|
297
335
|
|
|
298
336
|
def writeModeSwitchReceiverComSpec(self, element: ET.Element, com_spec: ModeSwitchReceiverComSpec):
|
|
299
337
|
self.logger.debug("writeModeSwitchReceiverComSpec")
|
|
@@ -316,7 +354,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
316
354
|
def writePPortPrototype(self, ports_tag: ET.Element, prototype: PPortPrototype):
|
|
317
355
|
prototype_tag = ET.SubElement(ports_tag, "P-PORT-PROTOTYPE")
|
|
318
356
|
|
|
319
|
-
self.
|
|
357
|
+
self.setIdentifiable(prototype_tag, prototype)
|
|
320
358
|
self.logger.debug("writePPortPrototype %s" % prototype.short_name)
|
|
321
359
|
|
|
322
360
|
com_specs = prototype.getProvidedComSpecs()
|
|
@@ -330,7 +368,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
330
368
|
def writeRPortPrototype(self, ports_tag: ET.Element, prototype: RPortPrototype):
|
|
331
369
|
self.logger.debug("writeRPortPrototype %s" % prototype.short_name)
|
|
332
370
|
prototype_tag = ET.SubElement(ports_tag, "R-PORT-PROTOTYPE")
|
|
333
|
-
self.
|
|
371
|
+
self.setIdentifiable(prototype_tag, prototype)
|
|
334
372
|
com_specs = prototype.getRequiredComSpecs()
|
|
335
373
|
if len(com_specs) > 0:
|
|
336
374
|
com_specs_tag = ET.SubElement(prototype_tag, "REQUIRED-COM-SPECS")
|
|
@@ -370,7 +408,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
370
408
|
def writePortGroup(self, element: ET.Element, port_group: PortGroup):
|
|
371
409
|
self.logger.debug("writePortGroup %s" % port_group.short_name)
|
|
372
410
|
child_element = ET.SubElement(element, "PORT-GROUP")
|
|
373
|
-
self.
|
|
411
|
+
self.setIdentifiable(child_element, port_group)
|
|
374
412
|
self.writePortGroupInnerGroupIRefs(child_element, port_group)
|
|
375
413
|
self.writePortGroupOuterPortRefs(child_element, port_group)
|
|
376
414
|
|
|
@@ -382,7 +420,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
382
420
|
self.writePortGroup(child_element, port_group)
|
|
383
421
|
|
|
384
422
|
def writeSwComponentType(self, element: ET.Element, sw_component: SwComponentType):
|
|
385
|
-
self.
|
|
423
|
+
self.setIdentifiable(element, sw_component)
|
|
386
424
|
port_prototypes = sw_component.getPortPrototypes()
|
|
387
425
|
if len(port_prototypes) > 0:
|
|
388
426
|
ports_tag = ET.SubElement(element, "PORTS")
|
|
@@ -391,7 +429,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
391
429
|
|
|
392
430
|
def writeSwComponentPrototype(self, element: ET.Element, prototype: SwComponentPrototype):
|
|
393
431
|
prototype_tag = ET.SubElement(element, "SW-COMPONENT-PROTOTYPE")
|
|
394
|
-
self.
|
|
432
|
+
self.setIdentifiable(prototype_tag, prototype)
|
|
395
433
|
self.setChildElementOptionalRefType(prototype_tag, "TYPE-TREF", prototype.type_tref)
|
|
396
434
|
|
|
397
435
|
def writeSwComponentPrototypes(self, element: ET.Element, sw_component: CompositionSwComponentType):
|
|
@@ -401,7 +439,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
401
439
|
|
|
402
440
|
def writeAssemblySwConnector(self, element: ET.Element, sw_connector: AssemblySwConnector):
|
|
403
441
|
connector_tag = ET.SubElement(element, "ASSEMBLY-SW-CONNECTOR")
|
|
404
|
-
self.
|
|
442
|
+
self.setIdentifiable(connector_tag, sw_connector)
|
|
405
443
|
|
|
406
444
|
if sw_connector.provider_iref is not None:
|
|
407
445
|
provider_iref_tag = ET.SubElement(connector_tag, "PROVIDER-IREF")
|
|
@@ -417,7 +455,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
417
455
|
|
|
418
456
|
def writeDelegationSwConnector(self, element: ET.Element, sw_connector: DelegationSwConnector):
|
|
419
457
|
connector_tag = ET.SubElement(element, "DELEGATION-SW-CONNECTOR")
|
|
420
|
-
self.
|
|
458
|
+
self.setIdentifiable(connector_tag, sw_connector)
|
|
421
459
|
|
|
422
460
|
if sw_connector.inner_port_iref is not None:
|
|
423
461
|
inner_port_iref_tag = ET.SubElement(connector_tag, "INNER-PORT-IREF")
|
|
@@ -471,11 +509,33 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
471
509
|
for sw_component in ar_package.getCompositionSwComponentTypes():
|
|
472
510
|
self.writeCompositionSwComponentType(element, sw_component)
|
|
473
511
|
|
|
512
|
+
def writeLParagraphs(self, element: ET.Element, paragraph: MultiLanguageParagraph):
|
|
513
|
+
for l1 in paragraph.getL1s():
|
|
514
|
+
l1_tag = ET.SubElement(element, "L-1")
|
|
515
|
+
self.setARObjectAttributes(l1_tag, l1)
|
|
516
|
+
if l1.l is not None:
|
|
517
|
+
l1_tag.attrib['L'] = l1.l
|
|
518
|
+
l1_tag.text = l1.value
|
|
519
|
+
|
|
520
|
+
def setMultiLanguageParagraphs(self, element: ET.Element, key: str, paragraphs: List[MultiLanguageParagraph]):
|
|
521
|
+
for paragraph in paragraphs:
|
|
522
|
+
child_element = ET.SubElement(element, key)
|
|
523
|
+
self.setARObjectAttributes(child_element, paragraph)
|
|
524
|
+
self.writeLParagraphs(child_element, paragraph)
|
|
525
|
+
return paragraphs
|
|
526
|
+
|
|
527
|
+
def setDocumentationBlock(self, element: ET.Element, key: str, block: DocumentationBlock):
|
|
528
|
+
if block is not None:
|
|
529
|
+
child_element = ET.SubElement(element, key)
|
|
530
|
+
self.setARObjectAttributes(child_element, block)
|
|
531
|
+
self.setMultiLanguageParagraphs(child_element, "P", block.getPs())
|
|
532
|
+
|
|
474
533
|
def writeGeneralAnnotation(self, element: ET.Element, annotation: Annotation):
|
|
475
|
-
self.setMultiLongName(element, "LABEL", annotation.
|
|
534
|
+
self.setMultiLongName(element, "LABEL", annotation.getLabel())
|
|
535
|
+
self.setChildElementOptionalLiteral(element, "ANNOTATION-ORIGIN", annotation.getAnnotationOrigin())
|
|
536
|
+
self.setDocumentationBlock(element, "ANNOTATION-TEXT", annotation.getAnnotationText())
|
|
476
537
|
|
|
477
|
-
def
|
|
478
|
-
annotations = props.getAnnotations()
|
|
538
|
+
def setAnnotations(self, element: ET.Element, annotations: List[Annotation]) :
|
|
479
539
|
if len(annotations) > 0:
|
|
480
540
|
annotations_tag = ET.SubElement(element, "ANNOTATIONS")
|
|
481
541
|
for annotation in annotations:
|
|
@@ -516,6 +576,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
516
576
|
for axis in axises:
|
|
517
577
|
self.setSwCalprmAxis(child_element, axis)
|
|
518
578
|
|
|
579
|
+
def writeSwDataDefProsInvalidValue(self, element: ET.Element, props: SwDataDefProps):
|
|
580
|
+
if props.getInvalidValue() is not None:
|
|
581
|
+
child_element = ET.SubElement(element, "INVALID-VALUE")
|
|
582
|
+
self.setValueSpecification(child_element, props.getInvalidValue())
|
|
583
|
+
|
|
519
584
|
def setSwDataDefProps(self, element: ET.Element, key: str, sw_data_def_props: SwDataDefProps):
|
|
520
585
|
if sw_data_def_props is not None:
|
|
521
586
|
child_element = ET.SubElement(element, key)
|
|
@@ -523,18 +588,18 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
523
588
|
sw_data_def_props_variants_tag = ET.SubElement(child_element, "SW-DATA-DEF-PROPS-VARIANTS")
|
|
524
589
|
sw_data_def_props_conditional_tag = ET.SubElement(sw_data_def_props_variants_tag, "SW-DATA-DEF-PROPS-CONDITIONAL")
|
|
525
590
|
self.setARObjectAttributes(sw_data_def_props_conditional_tag, sw_data_def_props.conditional)
|
|
526
|
-
self.
|
|
527
|
-
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "BASE-TYPE-REF", sw_data_def_props.
|
|
528
|
-
self.
|
|
529
|
-
self.
|
|
530
|
-
self.
|
|
531
|
-
self.
|
|
532
|
-
self.
|
|
533
|
-
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "DATA-
|
|
534
|
-
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "
|
|
535
|
-
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "
|
|
536
|
-
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "
|
|
537
|
-
|
|
591
|
+
self.setAnnotations(sw_data_def_props_conditional_tag, sw_data_def_props.getAnnotations())
|
|
592
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "BASE-TYPE-REF", sw_data_def_props.getBaseTypeRef())
|
|
593
|
+
self.writeSwDataDefProsInvalidValue(sw_data_def_props_conditional_tag, sw_data_def_props)
|
|
594
|
+
self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-CALIBRATION-ACCESS", sw_data_def_props.getSwCalibrationAccess())
|
|
595
|
+
self.setSwCalprmAxisSet(sw_data_def_props_conditional_tag, "SW-CALPRM-AXIS-SET", sw_data_def_props.getSwCalprmAxisSet())
|
|
596
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "COMPU-METHOD-REF", sw_data_def_props.getCompuMethodRef())
|
|
597
|
+
self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-IMPL-POLICY", sw_data_def_props.getSwImplPolicy())
|
|
598
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", sw_data_def_props.getImplementationDataTypeRef())
|
|
599
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "DATA-CONSTR-REF", sw_data_def_props.getDataConstrRef())
|
|
600
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "SW-RECORD-LAYOUT-REF", sw_data_def_props.getSwRecordLayoutRef())
|
|
601
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "VALUE-AXIS-DATA-TYPE-REF", sw_data_def_props.getValueAxisDataTypeRef())
|
|
602
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "UNIT-REF", sw_data_def_props.getUnitRef())
|
|
538
603
|
|
|
539
604
|
def writeApplicationDataType(self, element: ET.Element, data_type: ApplicationDataType):
|
|
540
605
|
self.writeAutosarDataType(element, data_type)
|
|
@@ -543,8 +608,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
543
608
|
self.writeApplicationDataType(element, data_type)
|
|
544
609
|
|
|
545
610
|
def writeAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
546
|
-
self.
|
|
547
|
-
self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", data_type.
|
|
611
|
+
self.setARElement(element, data_type)
|
|
612
|
+
self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", data_type.swDataDefProps)
|
|
548
613
|
|
|
549
614
|
def writeApplicationPrimitiveDataType(self, element: ET.Element, data_type: ApplicationPrimitiveDataType):
|
|
550
615
|
self.logger.debug("writeApplicationPrimitiveDataType %s" % data_type.short_name)
|
|
@@ -552,7 +617,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
552
617
|
self.writeApplicationDataType(data_type_tag, data_type)
|
|
553
618
|
|
|
554
619
|
def setDataPrototype(self, element: ET.Element, prototype: DataPrototype):
|
|
555
|
-
self.
|
|
620
|
+
self.setIdentifiable(element, prototype)
|
|
556
621
|
|
|
557
622
|
def setApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
|
|
558
623
|
self.setDataPrototype(element, prototype)
|
|
@@ -591,7 +656,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
591
656
|
|
|
592
657
|
def writeSwBaseType(self, element: ET.Element, base_type: SwBaseType):
|
|
593
658
|
data_type_tag = ET.SubElement(element, "SW-BASE-TYPE")
|
|
594
|
-
self.
|
|
659
|
+
self.setIdentifiable(data_type_tag, base_type)
|
|
595
660
|
self.writeBaseTypeDirectDefinition(data_type_tag, base_type.baseTypeDefinition)
|
|
596
661
|
|
|
597
662
|
def writeCompuScaleConstantContents(self, element: ET.Element, contents: CompuScaleConstantContents):
|
|
@@ -641,7 +706,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
641
706
|
def writeCompuMethod(self, element: ET.Element, compu_method: CompuMethod):
|
|
642
707
|
compu_method_tag = ET.SubElement(element, "COMPU-METHOD")
|
|
643
708
|
self.logger.debug("writeCompuMethods %s" % compu_method.short_name)
|
|
644
|
-
self.
|
|
709
|
+
self.setIdentifiable(compu_method_tag, compu_method)
|
|
645
710
|
self.setChildElementOptionalRefType(compu_method_tag, "UNIT-REF", compu_method.unit_ref)
|
|
646
711
|
self.writeCompuInternalToPhys(compu_method_tag, compu_method)
|
|
647
712
|
|
|
@@ -672,11 +737,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
672
737
|
|
|
673
738
|
def writeConstantSpecification(self, element: ET.Element, spec: ConstantSpecification):
|
|
674
739
|
spec_tag = ET.SubElement(element, "CONSTANT-SPECIFICATION")
|
|
675
|
-
self.
|
|
740
|
+
self.setIdentifiable(spec_tag, spec)
|
|
676
741
|
|
|
677
|
-
if spec.
|
|
742
|
+
if spec.getValueSpec() is not None:
|
|
678
743
|
value_spec_tag = ET.SubElement(spec_tag, "VALUE-SPEC")
|
|
679
|
-
self.setValueSpecification(value_spec_tag, spec.
|
|
744
|
+
self.setValueSpecification(value_spec_tag, spec.getValueSpec())
|
|
680
745
|
|
|
681
746
|
def setInternalConstrs(self, element: ET.Element, constrs: InternalConstrs):
|
|
682
747
|
if constrs is not None:
|
|
@@ -710,21 +775,24 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
710
775
|
|
|
711
776
|
def writeDataConstr(self, element: ET.Element, constr: DataConstr):
|
|
712
777
|
child_element = ET.SubElement(element, "DATA-CONSTR")
|
|
713
|
-
self.
|
|
778
|
+
self.setIdentifiable(child_element, constr)
|
|
714
779
|
self.writeDataConstrRules(child_element, constr)
|
|
715
780
|
|
|
716
781
|
def writeUnit(self, element: ET.Element, unit: Unit):
|
|
717
782
|
self.logger.debug("writeUnit %s" % unit.short_name)
|
|
718
783
|
child_element = ET.SubElement(element, "UNIT")
|
|
719
|
-
self.
|
|
720
|
-
self.setChildElementOptionalLiteral(child_element, "DISPLAY-NAME", unit.
|
|
784
|
+
self.setIdentifiable(child_element, unit)
|
|
785
|
+
self.setChildElementOptionalLiteral(child_element, "DISPLAY-NAME", unit.getDisplayName())
|
|
786
|
+
self.setChildElementOptionalFloatValue(child_element, "FACTOR-SI-TO-UNIT", unit.getFactorSiToUnit())
|
|
787
|
+
self.setChildElementOptionalFloatValue(child_element, "OFFSET-SI-TO-UNIT", unit.getOffsetSiToUnit())
|
|
788
|
+
self.setChildElementOptionalRefType(child_element, "PHYSICAL-DIMENSION-REF", unit.getPhysicalDimensionRef())
|
|
721
789
|
|
|
722
790
|
def setRModeInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: RModeInAtomicSwcInstanceRef):
|
|
723
791
|
child_element = ET.SubElement(element, key)
|
|
724
|
-
self.setChildElementOptionalRefType(child_element, "BASE", iref.
|
|
725
|
-
self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", iref.
|
|
726
|
-
self.setChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF", iref.
|
|
727
|
-
self.setChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF", iref.
|
|
792
|
+
self.setChildElementOptionalRefType(child_element, "BASE", iref.getBaseRef())
|
|
793
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", iref.getContextPortRef())
|
|
794
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF", iref.getContextModeDeclarationGroupPrototypeRef())
|
|
795
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF", iref.getTargetModeDeclarationRef())
|
|
728
796
|
|
|
729
797
|
def setPOperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: POperationInAtomicSwcInstanceRef):
|
|
730
798
|
child_element = ET.SubElement(element, key)
|
|
@@ -732,7 +800,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
732
800
|
self.setChildElementOptionalRefType(child_element, "TARGET-PROVIDED-OPERATION-REF", iref.target_provided_operation_ref)
|
|
733
801
|
|
|
734
802
|
def setRTEEvent(self, element: ET.Element, event: RTEEvent):
|
|
735
|
-
self.
|
|
803
|
+
self.setIdentifiable(element, event)
|
|
736
804
|
irefs = event.getDisabledModeIRefs()
|
|
737
805
|
if len(irefs) > 0:
|
|
738
806
|
child_element = ET.SubElement(element, "DISABLED-MODE-IREFS")
|
|
@@ -766,14 +834,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
766
834
|
def setRVariableInAtomicSwcInstanceRef(self, element: ET.Element, iref: RVariableInAtomicSwcInstanceRef):
|
|
767
835
|
if iref is not None:
|
|
768
836
|
child_element = ET.SubElement(element, "DATA-IREF")
|
|
769
|
-
self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.
|
|
770
|
-
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-ELEMENT-REF", iref.
|
|
837
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.getContextRPortRef())
|
|
838
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-ELEMENT-REF", iref.getTargetDataElementRef())
|
|
771
839
|
|
|
772
840
|
def setDataReceivedEvent(self, element: ET.Element, event: DataReceivedEvent):
|
|
773
841
|
if event is not None:
|
|
774
842
|
child_element = ET.SubElement(element, "DATA-RECEIVED-EVENT")
|
|
775
843
|
self.setRTEEvent(child_element, event)
|
|
776
|
-
self.setRVariableInAtomicSwcInstanceRef(child_element, event.
|
|
844
|
+
self.setRVariableInAtomicSwcInstanceRef(child_element, event.dataIRef)
|
|
777
845
|
|
|
778
846
|
def setInternalTriggerOccurredEvent(self, element: ET.Element, event: DataReceivedEvent):
|
|
779
847
|
pass
|
|
@@ -810,7 +878,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
810
878
|
areas_tag = ET.SubElement(element, "EXCLUSIVE-AREAS")
|
|
811
879
|
for area in areas:
|
|
812
880
|
child_element = ET.SubElement(areas_tag, "EXCLUSIVE-AREA")
|
|
813
|
-
self.
|
|
881
|
+
self.setIdentifiable(child_element, area)
|
|
814
882
|
|
|
815
883
|
def writeDataTypeMappingRefs(self, element: ET.Element, behavior: InternalBehavior):
|
|
816
884
|
refs = behavior.getDataTypeMappingRefs()
|
|
@@ -827,31 +895,25 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
827
895
|
self.writeParameterDataPrototype(child_element, memory)
|
|
828
896
|
|
|
829
897
|
def writeInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
|
|
830
|
-
self.
|
|
898
|
+
self.setIdentifiable(element, behavior)
|
|
831
899
|
self.writeInternalBehaviorConstantMemories(element, behavior)
|
|
832
900
|
self.writeDataTypeMappingRefs(element, behavior)
|
|
833
901
|
self.writeExclusiveAreas(element, behavior)
|
|
834
902
|
|
|
835
|
-
def writeExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
|
|
836
|
-
if entity is not None:
|
|
837
|
-
self.setChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL", entity.minimumStartInterval)
|
|
838
|
-
self.setChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF", entity.swAddrMethodRef)
|
|
839
|
-
|
|
840
903
|
def setAutosarVariableRef(self, element: ET.Element, ref: AutosarVariableRef):
|
|
841
904
|
if ref is not None:
|
|
842
905
|
child_element = ET.SubElement(element, "ACCESSED-VARIABLE")
|
|
843
|
-
|
|
906
|
+
self.setARObjectAttributes(child_element, ref)
|
|
907
|
+
if ref.getAutosarVariableIRef() is not None:
|
|
844
908
|
child_element = ET.SubElement(child_element, "AUTOSAR-VARIABLE-IREF")
|
|
845
|
-
self.
|
|
846
|
-
self.setChildElementOptionalRefType(child_element, "
|
|
847
|
-
|
|
848
|
-
if ref.local_variable_ref is not None:
|
|
849
|
-
self.setChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF", ref.local_variable_ref)
|
|
909
|
+
self.setChildElementOptionalRefType(child_element, "PORT-PROTOTYPE-REF", ref.getAutosarVariableIRef().getPortPrototypeRef())
|
|
910
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", ref.getAutosarVariableIRef().getTargetDataPrototypeRef())
|
|
911
|
+
self.setChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF", ref.getLocalVariableRef())
|
|
850
912
|
|
|
851
913
|
def setVariableAccess(self, element: ET.Element, access: VariableAccess):
|
|
852
914
|
child_element = ET.SubElement(element, "VARIABLE-ACCESS")
|
|
853
|
-
self.
|
|
854
|
-
self.setAutosarVariableRef(child_element, access.
|
|
915
|
+
self.setIdentifiable(child_element, access)
|
|
916
|
+
self.setAutosarVariableRef(child_element, access.getAccessedVariableRef())
|
|
855
917
|
|
|
856
918
|
def writeDataReadAccesses(self, element: ET.Element, entity: RunnableEntity):
|
|
857
919
|
#accesses = entity.getDataReadAccesses():
|
|
@@ -864,7 +926,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
864
926
|
|
|
865
927
|
def writeParameterAccess(self, element: ET.Element, parameter_access: ParameterAccess):
|
|
866
928
|
child_element = ET.SubElement(element, "PARAMETER-ACCESS")
|
|
867
|
-
self.
|
|
929
|
+
self.setIdentifiable(child_element, parameter_access)
|
|
868
930
|
self.setAutosarParameterRef(child_element, "ACCESSED-PARAMETER", parameter_access.accessed_parameter)
|
|
869
931
|
|
|
870
932
|
def writeParameterAccesses(self, element: ET.Element, entity: RunnableEntity):
|
|
@@ -902,20 +964,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
902
964
|
for access in variables:
|
|
903
965
|
self.setVariableAccess(child_element, access)
|
|
904
966
|
|
|
905
|
-
def
|
|
967
|
+
def setROperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: ROperationInAtomicSwcInstanceRef):
|
|
906
968
|
if iref is not None:
|
|
907
969
|
child_element = ET.SubElement(element, key)
|
|
908
970
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.context_r_port_ref)
|
|
909
971
|
self.setChildElementOptionalRefType(child_element, "TARGET-REQUIRED-OPERATION-REF", iref.target_required_operation_ref)
|
|
910
972
|
|
|
911
|
-
def
|
|
912
|
-
self.
|
|
973
|
+
def setServerCallPoint(self, element: ET.Element, call_point: ServerCallPoint):
|
|
974
|
+
self.setROperationInAtomicSwcInstanceRef(element, "OPERATION-IREF", call_point.getOperationIRef())
|
|
913
975
|
self.setChildElementOptionalFloatValue(element, "TIMEOUT", call_point.timeout)
|
|
914
976
|
|
|
915
|
-
def
|
|
977
|
+
def setSynchronousServerCallPoint(self, element: ET.Element, call_point: SynchronousServerCallPoint):
|
|
916
978
|
child_element = ET.SubElement(element, "SYNCHRONOUS-SERVER-CALL-POINT")
|
|
917
|
-
self.
|
|
918
|
-
self.
|
|
979
|
+
self.setIdentifiable(child_element, call_point)
|
|
980
|
+
self.setServerCallPoint(child_element, call_point)
|
|
919
981
|
|
|
920
982
|
def writeServerCallPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
921
983
|
call_points = entity.getServerCallPoints()
|
|
@@ -923,7 +985,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
923
985
|
child_element = ET.SubElement(element, "SERVER-CALL-POINTS")
|
|
924
986
|
for call_point in call_points:
|
|
925
987
|
if isinstance(call_point, SynchronousServerCallPoint):
|
|
926
|
-
self.
|
|
988
|
+
self.setSynchronousServerCallPoint(child_element, call_point)
|
|
927
989
|
else:
|
|
928
990
|
self._raiseError("Unsupported ServerCallPoint type <%s>" % type(call_point))
|
|
929
991
|
|
|
@@ -934,10 +996,18 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
934
996
|
for access in variables:
|
|
935
997
|
self.setVariableAccess(child_element, access)
|
|
936
998
|
|
|
937
|
-
def setRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, iref: RModeGroupInAtomicSWCInstanceRef):
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
999
|
+
def setRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, tag: str, iref: RModeGroupInAtomicSWCInstanceRef):
|
|
1000
|
+
if iref is not None:
|
|
1001
|
+
child_element = ET.SubElement(element, tag)
|
|
1002
|
+
instance_ref_tag = ET.SubElement(child_element, "R-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF")
|
|
1003
|
+
self.setChildElementOptionalRefType(instance_ref_tag, "CONTEXT-R-PORT-REF", iref.getContextRPortRef())
|
|
1004
|
+
self.setChildElementOptionalRefType(instance_ref_tag, "TARGET-MODE-GROUP-REF", iref.getTargetModeGroupRef())
|
|
1005
|
+
|
|
1006
|
+
def setPModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, tag: str, iref: PModeGroupInAtomicSwcInstanceRef):
|
|
1007
|
+
if iref is not None:
|
|
1008
|
+
child_element = ET.SubElement(element, tag)
|
|
1009
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF", iref.getContextPPortRef())
|
|
1010
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF", iref.getTargetModeGroupRef())
|
|
941
1011
|
|
|
942
1012
|
def writeModeAccessPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
943
1013
|
points = entity.getModeAccessPoints()
|
|
@@ -945,21 +1015,43 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
945
1015
|
mode_access_points_tag = ET.SubElement(element, "MODE-ACCESS-POINTS")
|
|
946
1016
|
for point in points:
|
|
947
1017
|
child_element = ET.SubElement(mode_access_points_tag, "MODE-ACCESS-POINT")
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
1018
|
+
self.setRModeGroupInAtomicSWCInstanceRef(child_element, "MODE-GROUP-IREF", point.getModeGroupIRef())
|
|
1019
|
+
|
|
1020
|
+
def writeModeSwitchPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
1021
|
+
points = entity.getModeSwitchPoints()
|
|
1022
|
+
if len(points) > 0:
|
|
1023
|
+
mode_access_points_tag = ET.SubElement(element, "MODE-SWITCH-POINTS")
|
|
1024
|
+
for point in points:
|
|
1025
|
+
child_element = ET.SubElement(mode_access_points_tag, "MODE-SWITCH-POINT")
|
|
1026
|
+
self.setIdentifiable(child_element, point)
|
|
1027
|
+
self.setPModeGroupInAtomicSWCInstanceRef(child_element, "MODE-GROUP-IREF", point.getModeGroupIRef())
|
|
1028
|
+
|
|
1029
|
+
def setRunnableEntityArgument(self, element: ET.Element, argument: RunnableEntityArgument):
|
|
1030
|
+
child_element = ET.SubElement(element, "RUNNABLE-ENTITY-ARGUMENT")
|
|
1031
|
+
self.setChildElementOptionalLiteral(child_element, "SYMBOL", argument.getSymbol())
|
|
1032
|
+
|
|
1033
|
+
def writeRunnableEntityArguments(self, element: ET.Element, entity: RunnableEntity):
|
|
1034
|
+
arguments = entity.getArguments()
|
|
1035
|
+
if len(arguments) > 0:
|
|
1036
|
+
child_element = ET.SubElement(element, "ARGUMENTS")
|
|
1037
|
+
for argument in arguments:
|
|
1038
|
+
if isinstance(argument, RunnableEntityArgument):
|
|
1039
|
+
self.setRunnableEntityArgument(child_element, argument)
|
|
1040
|
+
else:
|
|
1041
|
+
raise NotImplementedError("Unsupported argument of Runnable Entity <%s>" % type(argument))
|
|
951
1042
|
|
|
952
1043
|
def writeRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
|
|
953
1044
|
if entity is not None:
|
|
954
1045
|
child_element = ET.SubElement(element, "RUNNABLE-ENTITY")
|
|
955
|
-
self.
|
|
956
|
-
self.
|
|
957
|
-
self.setChildElementOptionalBooleanValue(child_element, "CAN-BE-INVOKED-CONCURRENTLY", entity.
|
|
1046
|
+
self.setExecutableEntity(child_element, entity)
|
|
1047
|
+
self.writeRunnableEntityArguments(child_element, entity)
|
|
1048
|
+
self.setChildElementOptionalBooleanValue(child_element, "CAN-BE-INVOKED-CONCURRENTLY", entity.getCanBeInvokedConcurrently())
|
|
958
1049
|
self.writeParameterAccesses(child_element, entity)
|
|
959
1050
|
self.writeDataReceivePointByArguments(child_element, entity)
|
|
960
1051
|
self.writeDataSendPoints(child_element, entity)
|
|
961
1052
|
self.writeDataWriteAccesses(child_element, entity)
|
|
962
1053
|
self.writeModeAccessPoints(child_element, entity)
|
|
1054
|
+
self.writeModeSwitchPoints(child_element, entity)
|
|
963
1055
|
self.writeReadLocalVariables(child_element, entity)
|
|
964
1056
|
self.writeServerCallPoints(child_element, entity)
|
|
965
1057
|
self.setChildElementOptionalLiteral(child_element, "SYMBOL", entity.symbol)
|
|
@@ -991,17 +1083,17 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
991
1083
|
memories_tag = ET.SubElement(element, "PER-INSTANCE-MEMORYS")
|
|
992
1084
|
for memory in memories:
|
|
993
1085
|
child_element = ET.SubElement(memories_tag, "PER-INSTANCE-MEMORY")
|
|
994
|
-
self.
|
|
995
|
-
self.setChildElementOptionalLiteral(child_element, "INIT-VALUE", memory.
|
|
996
|
-
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", memory.
|
|
1086
|
+
self.setIdentifiable(child_element, memory)
|
|
1087
|
+
self.setChildElementOptionalLiteral(child_element, "INIT-VALUE", memory.initValue)
|
|
1088
|
+
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", memory.swDataDefProps)
|
|
997
1089
|
self.setChildElementOptionalLiteral(child_element, "TYPE", memory.type)
|
|
998
|
-
self.setChildElementOptionalLiteral (child_element, "TYPE-DEFINITION", memory.
|
|
1090
|
+
self.setChildElementOptionalLiteral (child_element, "TYPE-DEFINITION", memory.typeDefinition)
|
|
999
1091
|
|
|
1000
1092
|
def writeParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
|
|
1001
1093
|
child_element = ET.SubElement(element, "PARAMETER-DATA-PROTOTYPE")
|
|
1002
|
-
self.
|
|
1094
|
+
self.setIdentifiable(child_element, prototype)
|
|
1003
1095
|
self.writeAutosarDataPrototype(child_element, prototype)
|
|
1004
|
-
self.setInitValue(child_element, prototype.
|
|
1096
|
+
self.setInitValue(child_element, prototype.initValue)
|
|
1005
1097
|
|
|
1006
1098
|
def writeParameterDataPrototypes(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1007
1099
|
prototypes = behavior.getPerInstanceParameters()
|
|
@@ -1033,7 +1125,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1033
1125
|
self.setChildElementOptionalRefType(child_element, "PORT-REF", option.port_ref)
|
|
1034
1126
|
|
|
1035
1127
|
def writeServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
|
|
1036
|
-
self.
|
|
1128
|
+
self.setIdentifiable(element, dependency)
|
|
1037
1129
|
|
|
1038
1130
|
def writeRoleBasedDataAssignment(self, element: ET.Element, assignment: RoleBasedDataAssignment):
|
|
1039
1131
|
child_element = ET.SubElement(element, "ROLE-BASED-DATA-ASSIGNMENT")
|
|
@@ -1069,7 +1161,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1069
1161
|
def writeNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
|
|
1070
1162
|
child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
|
|
1071
1163
|
self.logger.debug("writeNvBlockNeeds %s" % needs.short_name)
|
|
1072
|
-
self.
|
|
1164
|
+
self.setIdentifiable(child_element, needs)
|
|
1073
1165
|
self.setChildElementOptionalBooleanValue(child_element, "CALC-RAM-BLOCK-CRC", needs.calc_ram_block_crc)
|
|
1074
1166
|
self.setChildElementOptionalBooleanValue(child_element, "CHECK-STATIC-BLOCK-ID", needs.check_static_block_id)
|
|
1075
1167
|
self.setChildElementOptionalNumericalValue(child_element, "N-DATA-SETS", needs.n_data_sets)
|
|
@@ -1169,7 +1261,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1169
1261
|
def setCode(self, element: ET.SubElement, code_desc: Code):
|
|
1170
1262
|
self.logger.debug("setCode %s" % code_desc.short_name)
|
|
1171
1263
|
child_element = ET.SubElement(element, "CODE")
|
|
1172
|
-
self.
|
|
1264
|
+
self.setIdentifiable(child_element, code_desc)
|
|
1173
1265
|
self.writeArtifactDescriptor(child_element, code_desc)
|
|
1174
1266
|
|
|
1175
1267
|
def writeCodeDescriptors(self, element: ET.Element, impl: Implementation):
|
|
@@ -1194,7 +1286,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1194
1286
|
sections_tag = ET.SubElement(element, "MEMORY-SECTIONS")
|
|
1195
1287
|
for memory_section in memory_sections:
|
|
1196
1288
|
child_element = ET.SubElement(sections_tag, "MEMORY-SECTION")
|
|
1197
|
-
self.
|
|
1289
|
+
self.setIdentifiable(child_element, memory_section)
|
|
1198
1290
|
self.setChildElementOptionalLiteral(child_element, "ALIGNMENT", memory_section.alignment)
|
|
1199
1291
|
self.setMemorySectionOptions(child_element, memory_section.getOptions())
|
|
1200
1292
|
self.setChildElementOptionalNumericalValue(child_element, "SIZE", memory_section.size)
|
|
@@ -1205,11 +1297,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1205
1297
|
def setResourceConsumption(self, element: ET.Element, consumption: ResourceConsumption):
|
|
1206
1298
|
if consumption is not None:
|
|
1207
1299
|
child_element = ET.SubElement(element, "RESOURCE-CONSUMPTION")
|
|
1208
|
-
self.
|
|
1300
|
+
self.setIdentifiable(child_element, consumption)
|
|
1209
1301
|
self.writeMemorySections(child_element, consumption)
|
|
1210
1302
|
|
|
1211
1303
|
def writeImplementation(self, element: ET.Element, impl: Implementation):
|
|
1212
|
-
self.
|
|
1304
|
+
self.setIdentifiable(element, impl)
|
|
1213
1305
|
self.writeCodeDescriptors(element, impl)
|
|
1214
1306
|
self.setChildElementOptionalLiteral(element, "PROGRAMMING-LANGUAGE", impl.programming_language)
|
|
1215
1307
|
self.setResourceConsumption(element, impl.getResourceConsumption())
|
|
@@ -1272,7 +1364,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1272
1364
|
def setEndToEndProtection(self, element: ET.Element, protection: EndToEndProtection):
|
|
1273
1365
|
if protection is not None:
|
|
1274
1366
|
child_element = ET.SubElement(element, "END-TO-END-PROTECTION")
|
|
1275
|
-
self.
|
|
1367
|
+
self.setIdentifiable(child_element, protection)
|
|
1276
1368
|
self.setEndToEndDescription(child_element, "END-TO-END-PROFILE", protection.endToEndProfile)
|
|
1277
1369
|
self.writeEndToEndProtectionVariablePrototypes(child_element, protection)
|
|
1278
1370
|
|
|
@@ -1287,21 +1379,21 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1287
1379
|
def writeEndToEndProtectionSet(self, element: ET.Element, protection_set: EndToEndProtectionSet):
|
|
1288
1380
|
self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.short_name)
|
|
1289
1381
|
child_element = ET.SubElement(element, "END-TO-END-PROTECTION-SET")
|
|
1290
|
-
self.
|
|
1382
|
+
self.setIdentifiable(child_element, protection_set)
|
|
1291
1383
|
self.writeEndToEndProtections(child_element, protection_set)
|
|
1292
1384
|
|
|
1293
1385
|
def writeAutosarDataPrototype(self, element: ET.Element, prototype: AutosarDataPrototype):
|
|
1294
|
-
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.
|
|
1386
|
+
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
|
|
1295
1387
|
|
|
1296
1388
|
def writeVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
|
|
1297
1389
|
self.logger.debug("writeVariableDataPrototype %s" % prototype.short_name)
|
|
1298
1390
|
child_element = ET.SubElement(element, "VARIABLE-DATA-PROTOTYPE")
|
|
1299
|
-
self.
|
|
1300
|
-
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.
|
|
1391
|
+
self.setIdentifiable(child_element, prototype)
|
|
1392
|
+
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
|
|
1301
1393
|
self.writeAutosarDataPrototype(child_element, prototype)
|
|
1302
|
-
self.setInitValue(child_element, prototype.
|
|
1394
|
+
self.setInitValue(child_element, prototype.initValue)
|
|
1303
1395
|
|
|
1304
|
-
def
|
|
1396
|
+
def writeSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1305
1397
|
data_elements = sr_interface.getDataElements()
|
|
1306
1398
|
if len(data_elements) > 0:
|
|
1307
1399
|
data_elements_tag = ET.SubElement(element, "DATA-ELEMENTS")
|
|
@@ -1311,12 +1403,22 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1311
1403
|
else:
|
|
1312
1404
|
self._raiseError("Unsupported Data Element <%s>" % type(data_element))
|
|
1313
1405
|
|
|
1406
|
+
def writeSenderReceiverInterfaceInvalidationPolicies(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1407
|
+
policies = sr_interface.getInvalidationPolicies()
|
|
1408
|
+
if len(policies) > 0:
|
|
1409
|
+
policies_tag = ET.SubElement(element, "INVALIDATION-POLICYS")
|
|
1410
|
+
for policy in policies:
|
|
1411
|
+
child_element = ET.SubElement(policies_tag, "INVALIDATION-POLICY")
|
|
1412
|
+
self.setChildElementOptionalRefType(child_element, "DATA-ELEMENT-REF", policy.getDataElementRef())
|
|
1413
|
+
self.setChildElementOptionalLiteral(child_element, "HANDLE-INVALID", policy.getHandleInvalid())
|
|
1414
|
+
|
|
1314
1415
|
def writeSenderReceiverInterface(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1315
1416
|
self.logger.debug("writeSenderReceiverInterface %s" % sr_interface.short_name)
|
|
1316
1417
|
child_element = ET.SubElement(element, "SENDER-RECEIVER-INTERFACE")
|
|
1317
|
-
self.
|
|
1318
|
-
self.setChildElementOptionalBooleanValue(child_element, "IS-SERVICE", sr_interface.
|
|
1319
|
-
self.
|
|
1418
|
+
self.setIdentifiable(child_element, sr_interface)
|
|
1419
|
+
self.setChildElementOptionalBooleanValue(child_element, "IS-SERVICE", sr_interface.isService)
|
|
1420
|
+
self.writeSenderReceiverInterfaceDataElements(child_element, sr_interface)
|
|
1421
|
+
self.writeSenderReceiverInterfaceInvalidationPolicies(child_element, sr_interface)
|
|
1320
1422
|
|
|
1321
1423
|
def writerBswModuleDescriptionImplementedEntry(self, element: ET.Element, desc: BswModuleDescription):
|
|
1322
1424
|
entries = desc.getImplementedEntries()
|
|
@@ -1327,7 +1429,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1327
1429
|
self.setChildElementOptionalRefType(entry_tag, "BSW-MODULE-ENTRY-REF", entry)
|
|
1328
1430
|
|
|
1329
1431
|
def setModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
|
|
1330
|
-
self.
|
|
1432
|
+
self.setIdentifiable(element, prototype)
|
|
1331
1433
|
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.type_tref)
|
|
1332
1434
|
|
|
1333
1435
|
def writeProvidedModeGroup(self, element: ET.Element, parent: BswModuleDescription):
|
|
@@ -1346,9 +1448,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1346
1448
|
self.setChildElementOptionalRefType(child_element, "CAN-ENTER-EXCLUSIVE-AREA-REF", ref)
|
|
1347
1449
|
|
|
1348
1450
|
def setExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
|
|
1349
|
-
self.
|
|
1451
|
+
self.setIdentifiable(element, entity)
|
|
1350
1452
|
self.writeCanEnterExclusiveAreaRefs(element, entity)
|
|
1351
|
-
self.setChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL", entity.
|
|
1453
|
+
self.setChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL", entity.getMinimumStartInterval())
|
|
1454
|
+
self.setChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF", entity.getSwAddrMethodRef())
|
|
1352
1455
|
|
|
1353
1456
|
def writeBswModuleEntityManagedModeGroup(self, element: ET.Element, entity: BswModuleEntity):
|
|
1354
1457
|
mode_group_refs = entity.getManagedModeGroupRefs()
|
|
@@ -1360,7 +1463,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1360
1463
|
|
|
1361
1464
|
def setBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
|
|
1362
1465
|
self.setExecutableEntity(element, entity)
|
|
1363
|
-
self.setChildElementOptionalRefType(element, "IMPLEMENTED-ENTRY-REF", entity.
|
|
1466
|
+
self.setChildElementOptionalRefType(element, "IMPLEMENTED-ENTRY-REF", entity.implementedEntryRef)
|
|
1364
1467
|
self.writeBswModuleEntityManagedModeGroup(element, entity)
|
|
1365
1468
|
|
|
1366
1469
|
def setBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
|
|
@@ -1386,7 +1489,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1386
1489
|
self._raiseError("Unsupported BswModuleEntity <%s>" % type(entity))
|
|
1387
1490
|
|
|
1388
1491
|
def setBswEvent(self, element: ET.Element, event: BswEvent):
|
|
1389
|
-
self.
|
|
1492
|
+
self.setIdentifiable(element, event)
|
|
1390
1493
|
self.setChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF", event.startsOnEventRef)
|
|
1391
1494
|
|
|
1392
1495
|
def setBswScheduleEvent(self, element: ET.Element, event: BswScheduleEvent):
|
|
@@ -1453,7 +1556,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1453
1556
|
def writeBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
|
|
1454
1557
|
self.logger.debug("writeBswModuleDescription %s" % desc.short_name)
|
|
1455
1558
|
child_element = ET.SubElement(element, "BSW-MODULE-DESCRIPTION")
|
|
1456
|
-
self.
|
|
1559
|
+
self.setIdentifiable(child_element, desc)
|
|
1457
1560
|
self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.module_id)
|
|
1458
1561
|
self.writerBswModuleDescriptionImplementedEntry(child_element, desc)
|
|
1459
1562
|
self.writeProvidedModeGroup(child_element, desc)
|
|
@@ -1471,7 +1574,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1471
1574
|
def writeBswModuleEntry(self, element: ET.Element, entry: BswModuleEntry):
|
|
1472
1575
|
self.logger.debug("writeBswModuleDescription %s" % entry.short_name)
|
|
1473
1576
|
child_element = ET.SubElement(element, "BSW-MODULE-ENTRY")
|
|
1474
|
-
self.
|
|
1577
|
+
self.setIdentifiable(child_element, entry)
|
|
1475
1578
|
self.setChildElementOptionalNumericalValue(child_element, "SERVICE-ID", entry.service_id)
|
|
1476
1579
|
self.setChildElementOptionalBooleanValue(child_element, "IS-REENTRANT", entry.is_reentrant)
|
|
1477
1580
|
self.setChildElementOptionalBooleanValue(child_element, "IS-SYNCHRONOUS", entry.is_synchronous)
|
|
@@ -1498,7 +1601,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1498
1601
|
def setSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
|
|
1499
1602
|
self.logger.debug("writeBswModuleDescription %s" % mapping.short_name)
|
|
1500
1603
|
child_element = ET.SubElement(element, "SWC-BSW-MAPPING")
|
|
1501
|
-
self.
|
|
1604
|
+
self.setIdentifiable(child_element, mapping)
|
|
1502
1605
|
self.setChildElementOptionalRefType(child_element, "BSW-BEHAVIOR-REF", mapping.bswBehaviorRef)
|
|
1503
1606
|
self.writeSwcBswRunnableMappings(child_element, mapping)
|
|
1504
1607
|
self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.swcBehaviorRef)
|
|
@@ -1545,15 +1648,17 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1545
1648
|
sub_elements_tag = ET.SubElement(element, "SUB-ELEMENTS")
|
|
1546
1649
|
for type_element in sub_elements:
|
|
1547
1650
|
child_element = ET.SubElement(sub_elements_tag, "IMPLEMENTATION-DATA-TYPE-ELEMENT")
|
|
1548
|
-
self.
|
|
1549
|
-
self.
|
|
1651
|
+
self.setIdentifiable(child_element, type_element)
|
|
1652
|
+
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE", type_element.getArraySize())
|
|
1653
|
+
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS", type_element.getArraySizeSemantics())
|
|
1654
|
+
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", type_element.swDataDefProps)
|
|
1550
1655
|
|
|
1551
1656
|
def writeImplementationDataType(self, element: ET.Element, data_type: ImplementationDataType):
|
|
1552
1657
|
self.logger.debug("writeImplementationDataType %s" % data_type.short_name)
|
|
1553
1658
|
child_element = ET.SubElement(element, "IMPLEMENTATION-DATA-TYPE")
|
|
1554
1659
|
self.writeAutosarDataType(child_element, data_type)
|
|
1555
|
-
self.setChildElementOptionalLiteral(child_element, "TYPE-EMITTER", data_type.getTypeEmitter())
|
|
1556
1660
|
self.writeImplementationDataTypeElements(child_element, data_type)
|
|
1661
|
+
self.setChildElementOptionalLiteral(child_element, "TYPE-EMITTER", data_type.getTypeEmitter())
|
|
1557
1662
|
|
|
1558
1663
|
def writeArgumentDataPrototypes(self, element: ET.Element, parent: ClientServerOperation):
|
|
1559
1664
|
arguments = parent.getArgumentDataPrototypes()
|
|
@@ -1561,9 +1666,9 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1561
1666
|
arguments_tag = ET.SubElement(element, "ARGUMENTS")
|
|
1562
1667
|
for prototype in arguments:
|
|
1563
1668
|
child_element = ET.SubElement(arguments_tag, "ARGUMENT-DATA-PROTOTYPE")
|
|
1564
|
-
self.
|
|
1565
|
-
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.
|
|
1566
|
-
self.setChildElementOptionalRefType(child_element, "TYPE-TREF", prototype.
|
|
1669
|
+
self.setIdentifiable(child_element, prototype)
|
|
1670
|
+
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
|
|
1671
|
+
self.setChildElementOptionalRefType(child_element, "TYPE-TREF", prototype.typeTRef)
|
|
1567
1672
|
self.setChildElementOptionalLiteral(child_element, "DIRECTION", prototype.direction)
|
|
1568
1673
|
|
|
1569
1674
|
def writePossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
|
|
@@ -1576,7 +1681,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1576
1681
|
def writeClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
|
|
1577
1682
|
self.logger.debug("writeClientServerOperation %s" % operation.short_name)
|
|
1578
1683
|
child_element = ET.SubElement(element, "CLIENT-SERVER-OPERATION")
|
|
1579
|
-
self.
|
|
1684
|
+
self.setIdentifiable(child_element, operation)
|
|
1580
1685
|
self.writeArgumentDataPrototypes(child_element, operation)
|
|
1581
1686
|
self.writePossibleErrorRefs(child_element, operation)
|
|
1582
1687
|
|
|
@@ -1593,7 +1698,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1593
1698
|
def writeApplicationError(self, element: ET.Element, error: ApplicationError):
|
|
1594
1699
|
self.logger.debug("writeApplicationError %s" % error.short_name)
|
|
1595
1700
|
child_element = ET.SubElement(element, "APPLICATION-ERROR")
|
|
1596
|
-
self.
|
|
1701
|
+
self.setIdentifiable(child_element, error)
|
|
1597
1702
|
self.setChildElementOptionalNumericalValue(child_element, "ERROR-CODE", error.error_code)
|
|
1598
1703
|
|
|
1599
1704
|
def writePossibleErrors(self, element: ET.Element, parent: ClientServerInterface):
|
|
@@ -1607,8 +1712,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1607
1712
|
self._raiseError("Unsupported PossibleError %s" % type(error))
|
|
1608
1713
|
|
|
1609
1714
|
def setPortInterface(self, element: ET.Element, port_interface: PortInterface):
|
|
1610
|
-
self.
|
|
1611
|
-
self.setChildElementOptionalBooleanValue(element, "IS-SERVICE", port_interface.
|
|
1715
|
+
self.setIdentifiable(element, port_interface)
|
|
1716
|
+
self.setChildElementOptionalBooleanValue(element, "IS-SERVICE", port_interface.isService)
|
|
1612
1717
|
self.setChildElementOptionalLiteral(element, "SERVICE-KIND", port_interface.serviceKind)
|
|
1613
1718
|
|
|
1614
1719
|
def writeClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
|
|
@@ -1666,7 +1771,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1666
1771
|
def writeSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
|
|
1667
1772
|
self.logger.debug("writeSwRecordLayout %s" % layout.short_name)
|
|
1668
1773
|
child_element = ET.SubElement(element, "SW-RECORD-LAYOUT")
|
|
1669
|
-
self.
|
|
1774
|
+
self.setIdentifiable(child_element, layout)
|
|
1670
1775
|
self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", layout.swRecordLayoutGroup)
|
|
1671
1776
|
|
|
1672
1777
|
def writeSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
|
|
@@ -1705,13 +1810,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1705
1810
|
def writeDataTypeMappingSet(self, element: ET.Element, mapping_set: DataTypeMappingSet):
|
|
1706
1811
|
self.logger.debug("writeDataTypeMappingSet %s" % mapping_set.short_name)
|
|
1707
1812
|
child_element = ET.SubElement(element, "DATA-TYPE-MAPPING-SET")
|
|
1708
|
-
self.
|
|
1813
|
+
self.setIdentifiable(child_element, mapping_set)
|
|
1709
1814
|
self.writeDataTypeMaps(child_element, mapping_set)
|
|
1710
1815
|
self.writeModeRequestTypeMaps(child_element, mapping_set)
|
|
1711
1816
|
|
|
1712
1817
|
def setModeDeclaration(self, element: ET.Element, mode_declaration: ModeDeclaration):
|
|
1713
1818
|
child_element = ET.SubElement(element, "MODE-DECLARATION")
|
|
1714
|
-
self.
|
|
1819
|
+
self.setIdentifiable(child_element, mode_declaration)
|
|
1715
1820
|
self.setChildElementOptionalNumericalValue(child_element, "VALUE", mode_declaration.getValue())
|
|
1716
1821
|
|
|
1717
1822
|
def writeModeDeclarationGroupModeDeclaration(self, element: ET.Element, parent: ModeDeclarationGroup):
|
|
@@ -1724,7 +1829,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1724
1829
|
def writeModeDeclarationGroup(self, element: ET.Element, group: ModeDeclarationGroup):
|
|
1725
1830
|
self.logger.debug("writeModeDeclarationGroup %s" % group.short_name)
|
|
1726
1831
|
child_element = ET.SubElement(element, "MODE-DECLARATION-GROUP")
|
|
1727
|
-
self.
|
|
1832
|
+
self.setIdentifiable(child_element, group)
|
|
1728
1833
|
self.setChildElementOptionalRefType(child_element, "INITIAL-MODE-REF", group._initial_mode_ref)
|
|
1729
1834
|
self.writeModeDeclarationGroupModeDeclaration(child_element, group)
|
|
1730
1835
|
self.setChildElementOptionalNumericalValue(child_element, "ON-TRANSITION-VALUE", group.getOnTransitionValue())
|
|
@@ -1734,7 +1839,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1734
1839
|
if len(mode_groups) > 0:
|
|
1735
1840
|
mode_group = mode_groups[0]
|
|
1736
1841
|
child_element = ET.SubElement(element, "MODE-GROUP")
|
|
1737
|
-
self.
|
|
1842
|
+
self.setIdentifiable(child_element, mode_group)
|
|
1738
1843
|
self.setChildElementOptionalRefType(child_element, "TYPE-TREF", mode_group.type_tref)
|
|
1739
1844
|
|
|
1740
1845
|
def writeModeSwitchInterface(self, element: ET.Element, mode_interface: ModeSwitchInterface):
|
|
@@ -1751,7 +1856,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1751
1856
|
|
|
1752
1857
|
def writeEOCExecutableEntityRef(self, element: ET.Element, entity_ref: EOCExecutableEntityRef):
|
|
1753
1858
|
child_element = ET.SubElement(element, "EOC-EXECUTABLE-ENTITY-REF")
|
|
1754
|
-
self.
|
|
1859
|
+
self.setIdentifiable(child_element, entity_ref)
|
|
1755
1860
|
self.setEOCExecutableEntityRefSuccessorRefs(child_element, entity_ref.getSuccessorRefs())
|
|
1756
1861
|
|
|
1757
1862
|
def writeExecutionOrderConstraintOrderedElement(self, element: ET.Element, constraint: ExecutionOrderConstraint):
|
|
@@ -1767,7 +1872,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1767
1872
|
def writeExecutionOrderConstraint(self, element: ET.Element, constraint: ExecutionOrderConstraint):
|
|
1768
1873
|
self.logger.debug("writeExecutionOrderConstraint %s" % constraint.short_name)
|
|
1769
1874
|
child_element = ET.SubElement(element, "EXECUTION-ORDER-CONSTRAINT")
|
|
1770
|
-
self.
|
|
1875
|
+
self.setIdentifiable(child_element, constraint)
|
|
1771
1876
|
self.writeExecutionOrderConstraintOrderedElement(child_element, constraint)
|
|
1772
1877
|
|
|
1773
1878
|
def writeTimingRequirements(self, element: ET.Element, extension: TimingExtension):
|
|
@@ -1786,7 +1891,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1786
1891
|
def writeSwcTiming(self, element: ET.Element, timing: SwcTiming):
|
|
1787
1892
|
self.logger.debug("writeSWcTiming %s" % timing.short_name)
|
|
1788
1893
|
child_element = ET.SubElement(element, "SWC-TIMING")
|
|
1789
|
-
self.
|
|
1894
|
+
self.setIdentifiable(child_element, timing)
|
|
1790
1895
|
self.writeTimingExtension(child_element, timing)
|
|
1791
1896
|
|
|
1792
1897
|
def writePduToFrameMappings(self, element: ET.Element, parent: Frame):
|
|
@@ -1795,13 +1900,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1795
1900
|
mappings_tags = ET.SubElement(element, "PDU-TO-FRAME-MAPPINGS")
|
|
1796
1901
|
for mapping in mappings:
|
|
1797
1902
|
child_element = ET.SubElement(mappings_tags, "PDU-TO-FRAME-MAPPING")
|
|
1798
|
-
self.
|
|
1903
|
+
self.setIdentifiable(child_element, mapping)
|
|
1799
1904
|
self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.packingByteOrder)
|
|
1800
1905
|
self.setChildElementOptionalRefType(child_element, "PDU-REF", mapping.pduRef)
|
|
1801
1906
|
self.setChildElementOptionalNumericalValue(child_element, "START-POSITION", mapping.startPosition)
|
|
1802
1907
|
|
|
1803
1908
|
def writeFrame(self, element: ET.Element, frame: Frame):
|
|
1804
|
-
self.
|
|
1909
|
+
self.setIdentifiable(element, frame)
|
|
1805
1910
|
self.setChildElementOptionalNumericalValue(element, "FRAME-LENGTH", frame.frameLength)
|
|
1806
1911
|
self.writePduToFrameMappings(element, frame)
|
|
1807
1912
|
|
|
@@ -1810,41 +1915,376 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1810
1915
|
child_element = ET.SubElement(element, "LIN-UNCONDITIONAL-FRAME")
|
|
1811
1916
|
self.writeFrame(child_element, frame)
|
|
1812
1917
|
|
|
1918
|
+
def writeNmNode(self, element: ET.Element, nm_node: NmNode):
|
|
1919
|
+
self.setChildElementOptionalRefType(element, "CONTROLLER-REF", nm_node.getControllerRef())
|
|
1920
|
+
self.setChildElementOptionalRefType(element, "NM-IF-ECU-REF", nm_node.getNmIfEcuRef())
|
|
1921
|
+
self.setChildElementOptionalNumericalValue(element, "NM-NODE-ID", nm_node.getNmNodeId())
|
|
1922
|
+
|
|
1923
|
+
refs = nm_node.getRxNmPduRefs()
|
|
1924
|
+
if len(refs) > 0:
|
|
1925
|
+
refs_tag = ET.SubElement(element, "RX-NM-PDU-REFS")
|
|
1926
|
+
for ref in refs:
|
|
1927
|
+
self.setChildElementOptionalRefType(refs_tag, "RX-NM-PDU-REF", ref)
|
|
1928
|
+
|
|
1929
|
+
refs = nm_node.getTxNmPduRefs()
|
|
1930
|
+
if len(refs) > 0:
|
|
1931
|
+
refs_tag = ET.SubElement(element, "TX-NM-PDU-REFS")
|
|
1932
|
+
for ref in refs:
|
|
1933
|
+
self.setChildElementOptionalRefType(refs_tag, "TX-NM-PDU-REF", ref)
|
|
1934
|
+
|
|
1935
|
+
def writeCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
|
|
1936
|
+
self.logger.debug("writeCanNmNode %s" % nm_node.short_name)
|
|
1937
|
+
child_element = ET.SubElement(element, "CAN-NM-NODE")
|
|
1938
|
+
self.setIdentifiable(child_element, nm_node)
|
|
1939
|
+
self.writeNmNode(child_element, nm_node)
|
|
1940
|
+
|
|
1941
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-CYCLE-OFFSET", nm_node.getNmMsgCycleOffset())
|
|
1942
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-REDUCED-TIME", nm_node.getNmMsgReducedTime())
|
|
1943
|
+
self.setChildElementRxIdentifierRange(child_element, "NM-RANGE-CONFIG", nm_node.getNmRangeConfig())
|
|
1944
|
+
|
|
1945
|
+
def writeNmClusterNmNodes(self, element: ET.Element, parent: NmCluster):
|
|
1946
|
+
nodes = parent.getNmNodes()
|
|
1947
|
+
if len(nodes) > 0:
|
|
1948
|
+
child_element = ET.SubElement(element, "NM-NODES")
|
|
1949
|
+
for node in nodes:
|
|
1950
|
+
if isinstance(node, CanNmNode):
|
|
1951
|
+
self.writeCanNmNode(child_element, node)
|
|
1952
|
+
else:
|
|
1953
|
+
self._raiseError("Unsupported Nm Node <%s>" % type(node))
|
|
1954
|
+
|
|
1955
|
+
def setCanNmClusterCoupling(self, element: ET.Element, coupling: CanNmClusterCoupling):
|
|
1956
|
+
child_element = ET.SubElement(element, "CAN-NM-CLUSTER-COUPLING")
|
|
1957
|
+
refs = coupling.getCoupledClusterRefs()
|
|
1958
|
+
if len(refs) > 0:
|
|
1959
|
+
refs_tag = ET.SubElement(child_element, "COUPLED-CLUSTER-REFS")
|
|
1960
|
+
for ref in refs:
|
|
1961
|
+
self.setChildElementOptionalRefType(refs_tag, "COUPLED-CLUSTER-REF", ref)
|
|
1962
|
+
|
|
1963
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ENABLED", coupling.getNmBusloadReductionEnabled())
|
|
1964
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-IMMEDIATE-RESTART-ENABLED", coupling.getNmImmediateRestartEnabled())
|
|
1965
|
+
|
|
1966
|
+
def writeNmConfigNmClusterCouplings(self, element: ET.Element, config: NmConfig):
|
|
1967
|
+
self.logger.debug("writeNmConfigNmClusterCouplings %s" % config.getShortName())
|
|
1968
|
+
couplings = config.getNmClusterCouplings()
|
|
1969
|
+
if len(couplings) > 0:
|
|
1970
|
+
child_element= ET.SubElement(element, "NM-CLUSTER-COUPLINGS")
|
|
1971
|
+
for coupling in couplings:
|
|
1972
|
+
if isinstance(coupling, CanNmClusterCoupling):
|
|
1973
|
+
self.setCanNmClusterCoupling(child_element, coupling)
|
|
1974
|
+
else:
|
|
1975
|
+
self._raiseError("Unsupported Nm Cluster Coupling <%s>" % type(coupling))
|
|
1976
|
+
|
|
1977
|
+
def writeNmCluster(self, element: ET.Element, cluster: NmCluster):
|
|
1978
|
+
self.setChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF", cluster.communicationClusterRef)
|
|
1979
|
+
self.setChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID", cluster.nmChannelId)
|
|
1980
|
+
self.setChildElementOptionalBooleanValue(element, "NM-CHANNEL-SLEEP-MASTER", cluster.nmChannelSleepMaster)
|
|
1981
|
+
self.writeNmClusterNmNodes(element, cluster)
|
|
1982
|
+
self.setChildElementOptionalBooleanValue(element, "NM-SYNCHRONIZING-NETWORK", cluster.getNmSynchronizingNetwork())
|
|
1983
|
+
|
|
1984
|
+
def writeCanNmCluster(self, element: ET.Element, cluster: CanNmCluster):
|
|
1985
|
+
self.logger.debug("WriteCanNmCluster %s" % cluster.short_name)
|
|
1986
|
+
child_element = ET.SubElement(element, "CAN-NM-CLUSTER")
|
|
1987
|
+
self.setIdentifiable(child_element, cluster)
|
|
1988
|
+
self.writeNmCluster(child_element, cluster)
|
|
1989
|
+
|
|
1990
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ACTIVE", cluster.getNmBusloadReductionActive())
|
|
1991
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-CAR-WAKE-UP-RX-ENABLED", cluster.getNmCarWakeUpRxEnabled())
|
|
1992
|
+
self.setChildElementOptionalNumericalValue(child_element, "NM-CBV-POSITION", cluster.getNmCbvPosition())
|
|
1993
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-CHANNEL-ACTIVE", cluster.getNmChannelActive())
|
|
1994
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-IMMEDIATE-NM-CYCLE-TIME", cluster.getNmImmediateNmCycleTime())
|
|
1995
|
+
self.setChildElementOptionalNumericalValue(child_element, "NM-IMMEDIATE-NM-TRANSMISSIONS", cluster.getNmImmediateNmTransmissions())
|
|
1996
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-MESSAGE-TIMEOUT-TIME", cluster.getNmMessageTimeoutTime())
|
|
1997
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-CYCLE-TIME", cluster.getNmMsgCycleTime())
|
|
1998
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-NETWORK-TIMEOUT", cluster.getNmNetworkTimeout())
|
|
1999
|
+
self.setChildElementOptionalNumericalValue(child_element, "NM-NID-POSITION", cluster.getNmNidPosition())
|
|
2000
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-REMOTE-SLEEP-INDICATION-TIME", cluster.getNmRemoteSleepIndicationTime())
|
|
2001
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-REPEAT-MESSAGE-TIME", cluster.getNmRepeatMessageTime())
|
|
2002
|
+
self.setChildElementOptionalNumericalValue(child_element, "NM-USER-DATA-LENGTH", cluster.getNmUserDataLength())
|
|
2003
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-WAIT-BUS-SLEEP-TIME", cluster.getNmWaitBusSleepTime())
|
|
2004
|
+
|
|
2005
|
+
def writeNmConfigNmClusters(self, element: ET.Element, parent: NmConfig):
|
|
2006
|
+
clusters = parent.getNmClusters()
|
|
2007
|
+
if len(clusters) > 0:
|
|
2008
|
+
child_element = ET.SubElement(element, "NM-CLUSTERS")
|
|
2009
|
+
for cluster in clusters:
|
|
2010
|
+
if isinstance(cluster, CanNmCluster):
|
|
2011
|
+
self.writeCanNmCluster(child_element, cluster)
|
|
2012
|
+
else:
|
|
2013
|
+
self._raiseError("Unsupported Nm Cluster <%s>" % type(cluster))
|
|
2014
|
+
|
|
1813
2015
|
def writeNmConfig(self, element: ET.Element, config: NmConfig):
|
|
1814
|
-
self.logger.debug("
|
|
2016
|
+
self.logger.debug("WriteNmConfig %s" % config.short_name)
|
|
1815
2017
|
child_element = ET.SubElement(element, "NM-CONFIG")
|
|
1816
|
-
self.
|
|
2018
|
+
self.setIdentifiable(child_element, config)
|
|
2019
|
+
self.writeNmConfigNmClusters(child_element, config)
|
|
2020
|
+
self.writeNmConfigNmClusterCouplings(child_element, config)
|
|
1817
2021
|
|
|
1818
2022
|
def writeNmPdu(self, element: ET.Element, pdu: NmPdu):
|
|
1819
2023
|
self.logger.debug("NmPdu %s" % pdu.short_name)
|
|
1820
2024
|
child_element = ET.SubElement(element, "NM-PDU")
|
|
1821
|
-
self.
|
|
2025
|
+
self.setIdentifiable(child_element, pdu)
|
|
2026
|
+
self.writeIPdu(child_element, pdu)
|
|
1822
2027
|
|
|
1823
2028
|
def writeNPdu(self, element: ET.Element, pdu: NPdu):
|
|
1824
2029
|
self.logger.debug("NPdu %s" % pdu.short_name)
|
|
1825
2030
|
child_element = ET.SubElement(element, "N-PDU")
|
|
1826
|
-
self.
|
|
2031
|
+
self.setIdentifiable(child_element, pdu)
|
|
2032
|
+
self.writeIPdu(child_element, pdu)
|
|
2033
|
+
|
|
2034
|
+
def writeIPdu(self, element: ET.Element, pdu: IPdu):
|
|
2035
|
+
self.setChildElementOptionalLiteral(element, "LENGTH", pdu.getLength())
|
|
1827
2036
|
|
|
1828
2037
|
def writeDcmIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
1829
2038
|
self.logger.debug("DcmIPdu %s" % pdu.short_name)
|
|
1830
2039
|
child_element = ET.SubElement(element, "DCM-I-PDU")
|
|
1831
|
-
self.
|
|
2040
|
+
self.setIdentifiable(child_element, pdu)
|
|
2041
|
+
self.writeIPdu(child_element, pdu)
|
|
2042
|
+
self.setChildElementOptionalLiteral(child_element, "DIAG-PDU-TYPE", pdu.getDiagPduType())
|
|
2043
|
+
|
|
2044
|
+
def writeSecuredIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
2045
|
+
self.logger.debug("SecuredIPdu %s" % pdu.short_name)
|
|
2046
|
+
child_element = ET.SubElement(element, "SECURED-I-PDU")
|
|
2047
|
+
self.setIdentifiable(child_element, pdu)
|
|
2048
|
+
self.writeIPdu(child_element, pdu)
|
|
1832
2049
|
|
|
1833
2050
|
def writeCanTpConfig(self, element: ET.Element, config: CanTpConfig):
|
|
1834
2051
|
self.logger.debug("CanTpConfig %s" % config.short_name)
|
|
1835
2052
|
child_element = ET.SubElement(element, "CAN-TP-CONFIG")
|
|
1836
|
-
self.
|
|
2053
|
+
self.setIdentifiable(child_element, config)
|
|
2054
|
+
|
|
2055
|
+
def writeFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
|
|
2056
|
+
ref_list = triggering.getFramePortRefs()
|
|
2057
|
+
if len(ref_list) > 0:
|
|
2058
|
+
frame_port_refs_tag = ET.SubElement(element, "FRAME-PORT-REFS")
|
|
2059
|
+
for ref in ref_list:
|
|
2060
|
+
self.setChildElementOptionalRefType(frame_port_refs_tag, "FRAME-PORT-REF", ref)
|
|
2061
|
+
self.setChildElementOptionalRefType(element, "FRAME-REF", triggering.getFrameRef())
|
|
2062
|
+
|
|
2063
|
+
refs = triggering.getPduTriggeringRefs()
|
|
2064
|
+
if len(refs) > 0:
|
|
2065
|
+
triggerings_tag = ET.SubElement(element, "PDU-TRIGGERINGS")
|
|
2066
|
+
for ref in refs:
|
|
2067
|
+
child_element = ET.SubElement(triggerings_tag, 'PDU-TRIGGERING-REF-CONDITIONAL')
|
|
2068
|
+
self.setChildElementOptionalRefType(child_element, "PDU-TRIGGERING-REF", ref)
|
|
2069
|
+
|
|
2070
|
+
def writeCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
|
|
2071
|
+
self.logger.debug("WRite CanFrameTriggering %s" % triggering.getShortName())
|
|
2072
|
+
child_element = ET.SubElement(element, "CAN-FRAME-TRIGGERING")
|
|
2073
|
+
self.setIdentifiable(child_element, triggering)
|
|
2074
|
+
self.writeFrameTriggering(child_element, triggering)
|
|
2075
|
+
self.setChildElementOptionalLiteral(child_element, "CAN-ADDRESSING-MODE", triggering.getCanAddressingMode())
|
|
2076
|
+
self.setChildElementOptionalBooleanValue(child_element, "CAN-FD-FRAME-SUPPORT", triggering.getCanFdFrameSupport())
|
|
2077
|
+
self.setChildElementOptionalLiteral(child_element, "CAN-FRAME-RX-BEHAVIOR", triggering.getCanFrameRxBehavior())
|
|
2078
|
+
self.setChildElementOptionalLiteral(child_element, "CAN-FRAME-TX-BEHAVIOR", triggering.getCanFrameTxBehavior())
|
|
2079
|
+
self.setChildElementOptionalNumericalValue(child_element, "IDENTIFIER", triggering.getIdentifier())
|
|
2080
|
+
self.setChildElementRxIdentifierRange(child_element, "RX-IDENTIFIER-RANGE", triggering.getRxIdentifierRange())
|
|
2081
|
+
|
|
2082
|
+
def writeLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
|
|
2083
|
+
self.logger.debug("Write LinFrameTriggering %s" % triggering.getShortName())
|
|
2084
|
+
child_element = ET.SubElement(element, "LIN-FRAME-TRIGGERING")
|
|
2085
|
+
self.setIdentifiable(child_element, triggering)
|
|
2086
|
+
self.writeFrameTriggering(child_element, triggering)
|
|
2087
|
+
self.setChildElementOptionalNumericalValue(child_element, "IDENTIFIER", triggering.getIdentifier())
|
|
2088
|
+
self.setChildElementOptionalLiteral(child_element, "LIN-CHECKSUM", triggering.getLinChecksum())
|
|
2089
|
+
|
|
2090
|
+
def writeISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
|
|
2091
|
+
self.logger.debug("Write ISignalTriggering %s" % triggering.getShortName())
|
|
2092
|
+
child_element = ET.SubElement(element, "I-SIGNAL-TRIGGERING")
|
|
2093
|
+
self.setIdentifiable(child_element, triggering)
|
|
2094
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", triggering.getISignalGroupRef())
|
|
2095
|
+
ref_list = triggering.getISignalPortRefs()
|
|
2096
|
+
if len(ref_list) > 0:
|
|
2097
|
+
i_signal_port_refs_tag = ET.SubElement(child_element, "I-SIGNAL-PORT-REFS")
|
|
2098
|
+
for ref in ref_list:
|
|
2099
|
+
self.setChildElementOptionalRefType(i_signal_port_refs_tag, "I-SIGNAL-PORT-REF", ref)
|
|
2100
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-REF", triggering.getISignalRef())
|
|
2101
|
+
|
|
2102
|
+
def writePduTriggering(self, element: ET.Element, triggering: PduTriggering):
|
|
2103
|
+
self.logger.debug("Write PduTriggering %s" % triggering.getShortName())
|
|
2104
|
+
child_element = ET.SubElement(element, "PDU-TRIGGERING")
|
|
2105
|
+
self.setIdentifiable(child_element, triggering)
|
|
2106
|
+
ref_list = triggering.getIPduPortRefs()
|
|
2107
|
+
if len(ref_list) > 0:
|
|
2108
|
+
i_signal_port_refs_tag = ET.SubElement(child_element, "I-PDU-PORT-REFS")
|
|
2109
|
+
for ref in ref_list:
|
|
2110
|
+
self.setChildElementOptionalRefType(i_signal_port_refs_tag, "I-PDU-PORT-REF", ref)
|
|
2111
|
+
self.setChildElementOptionalRefType(child_element, "I-PDU-REF", triggering.getIPduRef())
|
|
2112
|
+
|
|
2113
|
+
refs = triggering.getISignalTriggeringRefs()
|
|
2114
|
+
if len(refs) > 0:
|
|
2115
|
+
triggerings_tag = ET.SubElement(child_element, "I-SIGNAL-TRIGGERINGS")
|
|
2116
|
+
for ref in refs:
|
|
2117
|
+
child_element = ET.SubElement(triggerings_tag, 'I-SIGNAL-TRIGGERING-REF-CONDITIONAL')
|
|
2118
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-TRIGGERING-REF", ref)
|
|
2119
|
+
|
|
2120
|
+
def writePhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
|
|
2121
|
+
connectors = channel.getCommConnectorRefs()
|
|
2122
|
+
if len(connectors) > 0:
|
|
2123
|
+
connectors_tag = ET.SubElement(element, "COMM-CONNECTORS")
|
|
2124
|
+
for connector in connectors:
|
|
2125
|
+
child_element = ET.SubElement(connectors_tag, 'COMMUNICATION-CONNECTOR-REF-CONDITIONAL')
|
|
2126
|
+
self.setChildElementOptionalRefType(child_element, "COMMUNICATION-CONNECTOR-REF", connector)
|
|
2127
|
+
|
|
2128
|
+
triggerings = channel.getFrameTriggerings()
|
|
2129
|
+
if len(triggerings) > 0:
|
|
2130
|
+
triggerings_tag = ET.SubElement(element, "FRAME-TRIGGERINGS")
|
|
2131
|
+
for triggering in triggerings:
|
|
2132
|
+
if isinstance(triggering, CanFrameTriggering):
|
|
2133
|
+
self.writeCanFrameTriggering(triggerings_tag, triggering)
|
|
2134
|
+
elif isinstance(triggering, LinFrameTriggering):
|
|
2135
|
+
self.writeLinFrameTriggering(triggerings_tag, triggering)
|
|
2136
|
+
else:
|
|
2137
|
+
raise NotImplementedError("Unsupported Frame Triggering <%s>" % type(triggering))
|
|
2138
|
+
|
|
2139
|
+
triggerings = channel.getISignalTriggerings()
|
|
2140
|
+
if len(triggerings) > 0:
|
|
2141
|
+
triggerings_tag = ET.SubElement(element, "I-SIGNAL-TRIGGERINGS")
|
|
2142
|
+
for triggering in triggerings:
|
|
2143
|
+
if isinstance(triggering, ISignalTriggering):
|
|
2144
|
+
self.writeISignalTriggering(triggerings_tag, triggering)
|
|
2145
|
+
else:
|
|
2146
|
+
raise NotImplementedError("Unsupported ISignalTriggering <%s>" % type(triggering))
|
|
2147
|
+
|
|
2148
|
+
triggerings = channel.getPduTriggerings()
|
|
2149
|
+
if len(triggerings) > 0:
|
|
2150
|
+
triggerings_tag = ET.SubElement(element, "PDU-TRIGGERINGS")
|
|
2151
|
+
for triggering in triggerings:
|
|
2152
|
+
if isinstance(triggering, PduTriggering):
|
|
2153
|
+
self.writePduTriggering(triggerings_tag, triggering)
|
|
2154
|
+
else:
|
|
2155
|
+
raise NotImplementedError("Unsupported PduTriggering <%s>" % type(triggering))
|
|
2156
|
+
|
|
2157
|
+
def writeCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
|
|
2158
|
+
self.logger.debug("CanPhysicalChannel %s" % channel.short_name)
|
|
2159
|
+
child_element = ET.SubElement(element, "CAN-PHYSICAL-CHANNEL")
|
|
2160
|
+
self.setIdentifiable(child_element, channel)
|
|
2161
|
+
self.writePhysicalChannel(child_element, channel)
|
|
2162
|
+
|
|
2163
|
+
def writeLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2164
|
+
self.logger.debug("LinPhysicalChannel %s" % channel.short_name)
|
|
2165
|
+
child_element = ET.SubElement(element, "LIN-PHYSICAL-CHANNEL")
|
|
2166
|
+
self.setIdentifiable(child_element, channel)
|
|
2167
|
+
self.writePhysicalChannel(child_element, channel)
|
|
2168
|
+
|
|
2169
|
+
def writeCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2170
|
+
channels = cluster.getPhysicalChannels()
|
|
2171
|
+
if len(channels) > 0:
|
|
2172
|
+
child_element = ET.SubElement(element, "PHYSICAL-CHANNELS")
|
|
2173
|
+
for channel in channels:
|
|
2174
|
+
if isinstance(channel, CanPhysicalChannel):
|
|
2175
|
+
self.writeCanPhysicalChannel(child_element, channel)
|
|
2176
|
+
elif isinstance(channel, LinPhysicalChannel):
|
|
2177
|
+
self.writeLinPhysicalChannel(child_element, channel)
|
|
2178
|
+
else:
|
|
2179
|
+
raise NotImplementedError("Unsupported Physical Channel <%s>" % type(channel))
|
|
2180
|
+
|
|
2181
|
+
def writeCommunicationCluster(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2182
|
+
self.setChildElementOptionalNumericalValue(element, "BAUDRATE", cluster.getBaudrate())
|
|
2183
|
+
self.writeCommunicationClusterPhysicalChannels(element, cluster)
|
|
2184
|
+
self.setChildElementOptionalLiteral(element, "PROTOCOL-NAME", cluster.getProtocolName())
|
|
2185
|
+
self.setChildElementOptionalLiteral(element, "PROTOCOL-VERSION", cluster.getProtocolVersion())
|
|
2186
|
+
|
|
2187
|
+
def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
|
|
2188
|
+
self.setChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE", cluster.getCanFdBaudrate())
|
|
1837
2189
|
|
|
1838
2190
|
def writeLinCluster(self, element: ET.Element, cluster: LinCluster):
|
|
1839
2191
|
self.logger.debug("LinCluster %s" % cluster.short_name)
|
|
1840
2192
|
child_element = ET.SubElement(element, "LIN-CLUSTER")
|
|
1841
|
-
self.
|
|
2193
|
+
self.setIdentifiable(child_element, cluster)
|
|
2194
|
+
child_element = ET.SubElement(child_element, "LIN-CLUSTER-VARIANTS")
|
|
2195
|
+
child_element = ET.SubElement(child_element, "LIN-CLUSTER-CONDITIONAL")
|
|
2196
|
+
self.writeCommunicationCluster(child_element, cluster)
|
|
2197
|
+
|
|
2198
|
+
def writeCanCluster(self, element: ET.Element, cluster: CanCluster):
|
|
2199
|
+
self.logger.debug("CanCluster %s" % cluster.short_name)
|
|
2200
|
+
child_element = ET.SubElement(element, "CAN-CLUSTER")
|
|
2201
|
+
self.setIdentifiable(child_element, cluster)
|
|
2202
|
+
|
|
2203
|
+
child_element = ET.SubElement(child_element, "CAN-CLUSTER-VARIANTS")
|
|
2204
|
+
child_element = ET.SubElement(child_element, "CAN-CLUSTER-CONDITIONAL")
|
|
2205
|
+
self.writeCommunicationCluster(child_element, cluster)
|
|
2206
|
+
self.readAbstractCanCluster(child_element, cluster)
|
|
1842
2207
|
|
|
1843
2208
|
def writeCanFrame(self, element: ET.Element, frame: CanFrame):
|
|
1844
2209
|
self.logger.debug("CanFrame %s" % frame.short_name)
|
|
1845
2210
|
child_element = ET.SubElement(element, "CAN-FRAME")
|
|
1846
2211
|
self.writeFrame(child_element, frame)
|
|
1847
2212
|
|
|
2213
|
+
def writeEcuInstance(self, element: ET.Element, instance: EcuInstance):
|
|
2214
|
+
self.logger.debug("EcuInstance %s" % instance.short_name)
|
|
2215
|
+
child_element = ET.SubElement(element, "ECU-INSTANCE")
|
|
2216
|
+
self.setIdentifiable(child_element, instance)
|
|
2217
|
+
|
|
2218
|
+
def writeSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
|
|
2219
|
+
self.logger.debug("Write SystemSignalGroup %s" % group.short_name)
|
|
2220
|
+
child_element = ET.SubElement(element, "SYSTEM-SIGNAL-GROUP")
|
|
2221
|
+
self.setIdentifiable(child_element, group)
|
|
2222
|
+
signal_refs = group.getSystemSignalRefs()
|
|
2223
|
+
if len(signal_refs) > 0:
|
|
2224
|
+
signal_refs_tag = ET.SubElement(child_element, "SYSTEM-SIGNAL-REFS")
|
|
2225
|
+
for signal_ref in signal_refs:
|
|
2226
|
+
self.setChildElementOptionalRefType(signal_refs_tag, "SYSTEM-SIGNAL-REF", signal_ref)
|
|
2227
|
+
|
|
2228
|
+
def setSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
|
|
2229
|
+
child_element = ET.SubElement(element, "SENDER-RECEIVER-TO-SIGNAL-MAPPING")
|
|
2230
|
+
self.setVariableDataPrototypeInSystemInstanceRef(child_element, "DATA-ELEMENT-IREF", mapping.getDataElementIRef())
|
|
2231
|
+
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", mapping.getSystemSignalRef())
|
|
2232
|
+
|
|
2233
|
+
def setSenderReceiverToSignalGroupMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
|
|
2234
|
+
child_element = ET.SubElement(element, "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING")
|
|
2235
|
+
self.setVariableDataPrototypeInSystemInstanceRef(child_element, "DATA-ELEMENT-IREF", mapping.getDataElementIRef())
|
|
2236
|
+
self.setChildElementOptionalRefType(child_element, "SIGNAL-GROUP-REF", mapping.getSignalGroupRef())
|
|
2237
|
+
|
|
2238
|
+
def writeSystemMappingDataMappings(self, element: ET.Element, system_mapping: SystemMapping):
|
|
2239
|
+
data_mappings = system_mapping.getDataMappings()
|
|
2240
|
+
if len(data_mappings) > 0:
|
|
2241
|
+
child_element = ET.SubElement(element, "DATA-MAPPINGS")
|
|
2242
|
+
for data_mapping in data_mappings:
|
|
2243
|
+
if isinstance(data_mapping, SenderReceiverToSignalMapping):
|
|
2244
|
+
self.setSenderReceiverToSignalMapping(child_element, data_mapping)
|
|
2245
|
+
elif isinstance(data_mapping, SenderReceiverToSignalGroupMapping):
|
|
2246
|
+
self.setSenderReceiverToSignalGroupMapping(child_element, data_mapping)
|
|
2247
|
+
else:
|
|
2248
|
+
raise NotImplementedError("Unsupported Data Mapping %s" % type(data_mapping))
|
|
2249
|
+
|
|
2250
|
+
def writeSystemMapping(self, element: ET.Element, mapping: SystemMapping):
|
|
2251
|
+
self.logger.debug("Write SystemMapping %s" % mapping.short_name)
|
|
2252
|
+
child_element = ET.SubElement(element, "SYSTEM-MAPPING")
|
|
2253
|
+
self.setIdentifiable(child_element, mapping)
|
|
2254
|
+
self.writeSystemMappingDataMappings(child_element, mapping)
|
|
2255
|
+
|
|
2256
|
+
def writeSystemMappings(self, element: ET.Element, system: System):
|
|
2257
|
+
mappings = system.getMappings()
|
|
2258
|
+
if len(mappings) > 0:
|
|
2259
|
+
mappings_tag = ET.SubElement(element, "MAPPINGS")
|
|
2260
|
+
for mapping in mappings:
|
|
2261
|
+
if isinstance(mapping, SystemMapping):
|
|
2262
|
+
self.writeSystemMapping(mappings_tag, mapping)
|
|
2263
|
+
else:
|
|
2264
|
+
raise NotImplementedError("Unsupported Mapping %s" % type(mapping))
|
|
2265
|
+
|
|
2266
|
+
def writeSystem(self, element: ET.Element, system: System):
|
|
2267
|
+
self.logger.debug("Write System %s" % system.short_name)
|
|
2268
|
+
child_element = ET.SubElement(element, "SYSTEM")
|
|
2269
|
+
self.setARElement(child_element, system)
|
|
2270
|
+
|
|
2271
|
+
self.setChildElementOptionalLiteral(child_element, "ECU-EXTRACT-VERSION", system.getEcuExtractVersion())
|
|
2272
|
+
refs = system.getFibexElementRefs()
|
|
2273
|
+
if len(refs) > 0:
|
|
2274
|
+
fibex_elements_tag = ET.SubElement(child_element, "FIBEX-ELEMENTS")
|
|
2275
|
+
for ref in refs:
|
|
2276
|
+
fibex_element_ref_conditional_tag = ET.SubElement(fibex_elements_tag, "FIBEX-ELEMENT-REF-CONDITIONAL")
|
|
2277
|
+
self.setChildElementOptionalRefType(fibex_element_ref_conditional_tag, "FIBEX-ELEMENT-REF", ref)
|
|
2278
|
+
|
|
2279
|
+
self.writeSystemMappings(child_element, system)
|
|
2280
|
+
|
|
2281
|
+
def writePhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
|
|
2282
|
+
self.logger.debug("Write PhysicalDimension %s" % dimension.short_name)
|
|
2283
|
+
child_element = ET.SubElement(element, "PHYSICAL-DIMENSION")
|
|
2284
|
+
self.setARElement(child_element, dimension)
|
|
2285
|
+
self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
|
|
2286
|
+
self.setChildElementOptionalNumericalValue(child_element, "LENGTH-EXP", dimension.getLengthExp())
|
|
2287
|
+
|
|
1848
2288
|
def setISignalMappings(self, element: ET.Element, mappings: List[ISignalMapping]):
|
|
1849
2289
|
if len(mappings) > 0:
|
|
1850
2290
|
mappings_tag = ET.SubElement(element, "SIGNAL-MAPPINGS")
|
|
@@ -1856,20 +2296,192 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1856
2296
|
def writeGateway(self, element: ET.Element, gateway: Gateway):
|
|
1857
2297
|
self.logger.debug("Gateway %s" % gateway.short_name)
|
|
1858
2298
|
child_element = ET.SubElement(element, "GATEWAY")
|
|
1859
|
-
self.
|
|
2299
|
+
self.setIdentifiable(child_element, gateway)
|
|
1860
2300
|
self.setChildElementOptionalRefType(child_element, "ECU-REF", gateway.ecuRef)
|
|
1861
2301
|
self.setISignalMappings(child_element, gateway.getSignalMappings())
|
|
1862
2302
|
|
|
1863
2303
|
def writeISignal(self, element: ET.Element, signal: ISignal):
|
|
1864
2304
|
self.logger.debug("ISignal %s" % signal.short_name)
|
|
1865
2305
|
child_element = ET.SubElement(element, "I-SIGNAL")
|
|
1866
|
-
self.
|
|
2306
|
+
self.setIdentifiable(child_element, signal)
|
|
1867
2307
|
self.setChildElementOptionalLiteral(child_element, "DATA-TYPE-POLICY", signal.dataTypePolicy)
|
|
1868
2308
|
self.setInitValue(child_element, signal.initValue)
|
|
1869
2309
|
self.setChildElementOptionalNumericalValue(child_element, "LENGTH", signal.length)
|
|
1870
2310
|
self.setSwDataDefProps(child_element, "NETWORK-REPRESENTATION-PROPS", signal.networkRepresentationProps)
|
|
1871
2311
|
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", signal.systemSignalRef)
|
|
1872
2312
|
|
|
2313
|
+
def writeEcucValueCollectionEcucValues(self, element: ET.Element, collection: EcucValueCollection):
|
|
2314
|
+
value_refs = collection.getEcucValueRefs()
|
|
2315
|
+
if len(value_refs) > 0:
|
|
2316
|
+
ecuc_values_tag = ET.SubElement(element, "ECUC-VALUES")
|
|
2317
|
+
for value_ref in value_refs:
|
|
2318
|
+
child_element = ET.SubElement(ecuc_values_tag, "ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL")
|
|
2319
|
+
self.setChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF", value_ref)
|
|
2320
|
+
|
|
2321
|
+
def writeEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
|
|
2322
|
+
self.logger.debug("EcucValueCollection %s" % collection.short_name)
|
|
2323
|
+
child_element = ET.SubElement(element, "ECUC-VALUE-COLLECTION")
|
|
2324
|
+
self.setIdentifiable(child_element, collection)
|
|
2325
|
+
self.setChildElementOptionalRefType(child_element, "ECU-EXTRACT-REF", collection.getEcuExtractRef())
|
|
2326
|
+
self.writeEcucValueCollectionEcucValues(child_element, collection)
|
|
2327
|
+
|
|
2328
|
+
def writeEcucContainerValueSubContainers(self, element: ET.Element, container: EcucContainerValue):
|
|
2329
|
+
sub_containers = container.getSubContainers()
|
|
2330
|
+
if len(sub_containers) > 0:
|
|
2331
|
+
sub_containers_tag = ET.SubElement(element, "SUB-CONTAINERS")
|
|
2332
|
+
for sub_container in sub_containers:
|
|
2333
|
+
if isinstance(sub_container, EcucContainerValue):
|
|
2334
|
+
self.writeEcucContainValue(sub_containers_tag, sub_container)
|
|
2335
|
+
else:
|
|
2336
|
+
raise NotImplementedError("Unsupported Sub Container %s" % type(container))
|
|
2337
|
+
|
|
2338
|
+
def writeEcucParameterValue(self, element: ET.Element, param_value: EcucParameterValue):
|
|
2339
|
+
self.setChildElementOptionalRefType(element, "DEFINITION-REF", param_value.getDefinitionRef())
|
|
2340
|
+
self.setAnnotations(element, param_value.getAnnotations())
|
|
2341
|
+
|
|
2342
|
+
def setEcucTextualParamValue(self, element: ET.Element, param_value: EcucTextualParamValue):
|
|
2343
|
+
child_element = ET.SubElement(element, "ECUC-TEXTUAL-PARAM-VALUE")
|
|
2344
|
+
self.writeEcucParameterValue(child_element, param_value)
|
|
2345
|
+
self.setChildElementOptionalLiteral(child_element, "VALUE", param_value.getValue())
|
|
2346
|
+
|
|
2347
|
+
def setEcucNumericalParamValue(self, element: ET.Element, param_value: EcucNumericalParamValue):
|
|
2348
|
+
child_element = ET.SubElement(element, "ECUC-NUMERICAL-PARAM-VALUE")
|
|
2349
|
+
self.writeEcucParameterValue(child_element, param_value)
|
|
2350
|
+
self.setChildElementOptionalNumericalValue(child_element, "VALUE", param_value.getValue())
|
|
2351
|
+
|
|
2352
|
+
def writeEcucContainerValueParameterValues(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2353
|
+
param_values = container_value.getParameterValues()
|
|
2354
|
+
if len(param_values) > 0:
|
|
2355
|
+
child_element = ET.SubElement(element, "PARAMETER-VALUES")
|
|
2356
|
+
for param_value in param_values:
|
|
2357
|
+
if isinstance(param_value, EcucTextualParamValue):
|
|
2358
|
+
self.setEcucTextualParamValue(child_element, param_value)
|
|
2359
|
+
elif isinstance(param_value, EcucNumericalParamValue):
|
|
2360
|
+
self.setEcucNumericalParamValue(child_element, param_value)
|
|
2361
|
+
else:
|
|
2362
|
+
raise NotImplementedError("Unsupported EcucParameterValue <%s>" % type(param_value))
|
|
2363
|
+
|
|
2364
|
+
def writeEcucAbstractReferenceValue(self, element: ET.Element, value: EcucAbstractReferenceValue):
|
|
2365
|
+
self.setChildElementOptionalRefType(element, "DEFINITION-REF", value.getDefinitionRef())
|
|
2366
|
+
self.setAnnotations(element, value.getAnnotations())
|
|
2367
|
+
|
|
2368
|
+
def setEcucReferenceValue(self, element: ET.Element, value = EcucReferenceValue()):
|
|
2369
|
+
child_element = ET.SubElement(element, "ECUC-REFERENCE-VALUE")
|
|
2370
|
+
self.writeEcucAbstractReferenceValue(child_element, value)
|
|
2371
|
+
self.setChildElementOptionalRefType(child_element, "VALUE-REF", value.getValueRef())
|
|
2372
|
+
return value
|
|
2373
|
+
|
|
2374
|
+
def setAnyInstanceRef(self, element: ET.Element, key, instance_ref: AnyInstanceRef):
|
|
2375
|
+
if instance_ref is not None:
|
|
2376
|
+
child_element = ET.SubElement(element, key)
|
|
2377
|
+
self.setChildElementOptionalRefType(child_element, "BASE-REF", instance_ref.getBaseRef())
|
|
2378
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-ELEMENT-REF", instance_ref.getContextElementRef())
|
|
2379
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-REF", instance_ref.getTargetRef())
|
|
2380
|
+
return instance_ref
|
|
2381
|
+
|
|
2382
|
+
def setEcucInstanceReferenceValue(self, element: ET.Element, value : EcucInstanceReferenceValue):
|
|
2383
|
+
child_element = ET.SubElement(element, "ECUC-INSTANCE-REFERENCE-VALUE")
|
|
2384
|
+
self.writeEcucAbstractReferenceValue(child_element, value)
|
|
2385
|
+
self.setAnyInstanceRef(child_element, "VALUE-IREF", value.getValueIRef())
|
|
2386
|
+
return value
|
|
2387
|
+
|
|
2388
|
+
def writeEcucContainerValueReferenceValues(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2389
|
+
reference_values = container_value.getReferenceValues()
|
|
2390
|
+
if len(reference_values) > 0:
|
|
2391
|
+
child_element = ET.SubElement(element, "REFERENCE-VALUES")
|
|
2392
|
+
for reference_value in reference_values:
|
|
2393
|
+
if isinstance(reference_value, EcucReferenceValue):
|
|
2394
|
+
self.setEcucReferenceValue(child_element, reference_value)
|
|
2395
|
+
elif isinstance(reference_value, EcucInstanceReferenceValue):
|
|
2396
|
+
self.setEcucInstanceReferenceValue(child_element, reference_value)
|
|
2397
|
+
else:
|
|
2398
|
+
raise NotImplementedError("Unsupported EcucParameterValue <%s>" % type(reference_value))
|
|
2399
|
+
|
|
2400
|
+
def writeEcucContainValue(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2401
|
+
self.logger.debug("EcucContainerValue %s" % container_value.short_name)
|
|
2402
|
+
child_element = ET.SubElement(element, "ECUC-CONTAINER-VALUE")
|
|
2403
|
+
self.setIdentifiable(child_element, container_value)
|
|
2404
|
+
self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", container_value.getDefinitionRef())
|
|
2405
|
+
self.writeEcucContainerValueParameterValues(child_element, container_value)
|
|
2406
|
+
self.writeEcucContainerValueReferenceValues(child_element, container_value)
|
|
2407
|
+
self.writeEcucContainerValueSubContainers(child_element, container_value)
|
|
2408
|
+
|
|
2409
|
+
def writeEcucModuleConfigurationValuesContainers(self, element: ET.Element, value: EcucModuleConfigurationValues):
|
|
2410
|
+
containers = value.getContainers()
|
|
2411
|
+
if len(containers) > 0:
|
|
2412
|
+
containers_tag = ET.SubElement(element, "CONTAINERS")
|
|
2413
|
+
for container in containers:
|
|
2414
|
+
if isinstance(container, EcucContainerValue):
|
|
2415
|
+
self.writeEcucContainValue(containers_tag, container)
|
|
2416
|
+
else:
|
|
2417
|
+
raise NotImplementedError("Unsupported Container %s" % type(container))
|
|
2418
|
+
|
|
2419
|
+
def writeEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
|
|
2420
|
+
self.logger.debug("EcucModuleConfigurationValues %s" % values.short_name)
|
|
2421
|
+
child_element = ET.SubElement(element, "ECUC-MODULE-CONFIGURATION-VALUES")
|
|
2422
|
+
self.setIdentifiable(child_element, values)
|
|
2423
|
+
self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", values.getDefinitionRef())
|
|
2424
|
+
self.setChildElementOptionalLiteral(child_element, "IMPLEMENTATION-CONFIG-VARIANT", values.getImplementationConfigVariant())
|
|
2425
|
+
self.setChildElementOptionalRefType(child_element, "MODULE-DESCRIPTION-REF", values.getModuleDescriptionRef())
|
|
2426
|
+
self.writeEcucModuleConfigurationValuesContainers(child_element, values)
|
|
2427
|
+
|
|
2428
|
+
def writeISignalGroup(self, element: ET.Element, group: ISignalGroup):
|
|
2429
|
+
self.logger.debug("ISignalGroup %s" % group.short_name)
|
|
2430
|
+
child_element = ET.SubElement(element, "I-SIGNAL-GROUP")
|
|
2431
|
+
self.setIdentifiable(child_element, group)
|
|
2432
|
+
signal_refs = group.getISignalRefs()
|
|
2433
|
+
if len(signal_refs) > 0:
|
|
2434
|
+
signal_refs_tag = ET.SubElement(child_element, "I-SIGNAL-REFS")
|
|
2435
|
+
for signal_ref in signal_refs:
|
|
2436
|
+
self.setChildElementOptionalRefType(signal_refs_tag, "I-SIGNAL-REF", signal_ref)
|
|
2437
|
+
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-GROUP-REF", group.getSystemSignalGroupRef())
|
|
2438
|
+
|
|
2439
|
+
def writeISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
|
|
2440
|
+
self.logger.debug("ISignalIPduGroup %s" % group.short_name)
|
|
2441
|
+
child_element = ET.SubElement(element, "I-SIGNAL-I-PDU-GROUP")
|
|
2442
|
+
self.setIdentifiable(child_element, group)
|
|
2443
|
+
self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", group.getCommunicationDirection())
|
|
2444
|
+
self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-MODE", group.getCommunicationMode())
|
|
2445
|
+
group_refs = group.getContainedISignalIPduGroupRefs()
|
|
2446
|
+
if len(group_refs) > 0:
|
|
2447
|
+
pdu_refs_tag = ET.SubElement(child_element, "CONTAINED-I-SIGNAL-I-PDU-GROUP-REFS")
|
|
2448
|
+
for pdu_ref in group_refs:
|
|
2449
|
+
self.setChildElementOptionalRefType(pdu_refs_tag, "CONTAINED-I-SIGNAL-I-PDU-GROUP-REF", pdu_ref)
|
|
2450
|
+
pdu_refs = group.getISignalIPduRefs()
|
|
2451
|
+
if len(pdu_refs) > 0:
|
|
2452
|
+
pdu_refs_tag = ET.SubElement(child_element, "I-SIGNAL-I-PDUS")
|
|
2453
|
+
for pdu_ref in pdu_refs:
|
|
2454
|
+
ref_conditional_tag = ET.SubElement(pdu_refs_tag, "I-SIGNAL-I-PDU-REF-CONDITIONAL")
|
|
2455
|
+
self.setChildElementOptionalRefType(ref_conditional_tag, "I-SIGNAL-I-PDU-REF", pdu_ref)
|
|
2456
|
+
|
|
2457
|
+
def writeSystemSignal(self, element: ET.Element, signal: SystemSignal):
|
|
2458
|
+
self.logger.debug("SystemSignal %s" % signal.short_name)
|
|
2459
|
+
child_element = ET.SubElement(element, "SYSTEM-SIGNAL")
|
|
2460
|
+
self.setIdentifiable(child_element, signal)
|
|
2461
|
+
self.setChildElementOptionalBooleanValue(child_element, "DYNAMIC-LENGTH", signal.getDynamicLength())
|
|
2462
|
+
|
|
2463
|
+
def writeISignalToPduMappings(self, element: ET.Element, parent: ISignalIPdu):
|
|
2464
|
+
mappings = parent.getISignalToPduMappings()
|
|
2465
|
+
if len(mappings) > 0:
|
|
2466
|
+
mappings_tag = ET.SubElement(element, "I-SIGNAL-TO-PDU-MAPPINGS")
|
|
2467
|
+
for mapping in mappings:
|
|
2468
|
+
child_element = ET.SubElement(mappings_tag, "I-SIGNAL-TO-I-PDU-MAPPING")
|
|
2469
|
+
self.setIdentifiable(child_element, mapping)
|
|
2470
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-REF", mapping.getISignalRef())
|
|
2471
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", mapping.getISignalGroupRef())
|
|
2472
|
+
self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.getPackingByteOrder())
|
|
2473
|
+
self.setChildElementOptionalNumericalValue(child_element, "START-POSITION", mapping.getStartPosition())
|
|
2474
|
+
self.setChildElementOptionalLiteral(child_element, "TRANSFER-PROPERTY", mapping.getTransferProperty())
|
|
2475
|
+
self.setChildElementOptionalNumericalValue(child_element, "UPDATE-INDICATION-BIT-POSITION", mapping.getUpdateIndicationBitPosition())
|
|
2476
|
+
|
|
2477
|
+
def writeISignalIPdu(self, element: ET.Element, i_pdu: ISignalIPdu):
|
|
2478
|
+
self.logger.debug("ISignalIPdu %s" % i_pdu.short_name)
|
|
2479
|
+
child_element = ET.SubElement(element, "I-SIGNAL-I-PDU")
|
|
2480
|
+
self.setIdentifiable(child_element, i_pdu)
|
|
2481
|
+
self.setChildElementOptionalNumericalValue(child_element, "LENGTH", i_pdu.getLength())
|
|
2482
|
+
self.writeISignalToPduMappings(child_element, i_pdu)
|
|
2483
|
+
self.setChildElementOptionalLiteral(child_element, "UNUSED-BIT-PATTERN", i_pdu.getUnusedBitPattern())
|
|
2484
|
+
|
|
1873
2485
|
def writeARPackageElement(self, element: ET.Element, ar_element: ARElement):
|
|
1874
2486
|
if isinstance(ar_element, ComplexDeviceDriverSwComponentType):
|
|
1875
2487
|
self.writeComplexDeviceDriverSwComponentType(element, ar_element)
|
|
@@ -1939,16 +2551,40 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1939
2551
|
self.writeNPdu(element, ar_element)
|
|
1940
2552
|
elif isinstance(ar_element, DcmIPdu):
|
|
1941
2553
|
self.writeDcmIPdu(element, ar_element)
|
|
2554
|
+
elif isinstance(ar_element, SecuredIPdu):
|
|
2555
|
+
self.writeSecuredIPdu(element, ar_element)
|
|
1942
2556
|
elif isinstance(ar_element, CanTpConfig):
|
|
1943
2557
|
self.writeCanTpConfig(element, ar_element)
|
|
1944
2558
|
elif isinstance(ar_element, LinCluster):
|
|
1945
2559
|
self.writeLinCluster(element, ar_element)
|
|
2560
|
+
elif isinstance(ar_element, CanCluster):
|
|
2561
|
+
self.writeCanCluster(element, ar_element)
|
|
1946
2562
|
elif isinstance(ar_element, CanFrame):
|
|
1947
2563
|
self.writeCanFrame(element, ar_element)
|
|
1948
2564
|
elif isinstance(ar_element, Gateway):
|
|
1949
2565
|
self.writeGateway(element, ar_element)
|
|
1950
2566
|
elif isinstance(ar_element, ISignal):
|
|
1951
2567
|
self.writeISignal(element, ar_element)
|
|
2568
|
+
elif isinstance(ar_element, EcucValueCollection):
|
|
2569
|
+
self.writeEcucValueCollection(element, ar_element)
|
|
2570
|
+
elif isinstance(ar_element, EcucModuleConfigurationValues):
|
|
2571
|
+
self.writeEcucModuleConfigurationValues(element, ar_element)
|
|
2572
|
+
elif isinstance(ar_element, ISignalGroup):
|
|
2573
|
+
self.writeISignalGroup(element, ar_element)
|
|
2574
|
+
elif isinstance(ar_element, ISignalIPduGroup):
|
|
2575
|
+
self.writeISignalIPduGroup(element, ar_element)
|
|
2576
|
+
elif isinstance(ar_element, SystemSignal):
|
|
2577
|
+
self.writeSystemSignal(element, ar_element)
|
|
2578
|
+
elif isinstance(ar_element, ISignalIPdu):
|
|
2579
|
+
self.writeISignalIPdu(element, ar_element)
|
|
2580
|
+
elif isinstance(ar_element, EcuInstance):
|
|
2581
|
+
self.writeEcuInstance(element, ar_element)
|
|
2582
|
+
elif isinstance(ar_element, SystemSignalGroup):
|
|
2583
|
+
self.writeSystemSignalGroup(element, ar_element)
|
|
2584
|
+
elif isinstance(ar_element, System):
|
|
2585
|
+
self.writeSystem(element, ar_element)
|
|
2586
|
+
elif isinstance(ar_element, PhysicalDimension):
|
|
2587
|
+
self.writePhysicalDimension(element, ar_element)
|
|
1952
2588
|
else:
|
|
1953
2589
|
raise NotImplementedError("Unsupported Elements of ARPackage <%s>" % type(ar_element))
|
|
1954
2590
|
|
|
@@ -1959,7 +2595,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1959
2595
|
for pkg in pkgs:
|
|
1960
2596
|
pkg_tag = ET.SubElement(pkgs_tag, "AR-PACKAGE")
|
|
1961
2597
|
|
|
1962
|
-
self.
|
|
2598
|
+
self.setIdentifiable(pkg_tag, pkg)
|
|
1963
2599
|
self.logger.debug("writeARPackage %s" % pkg.full_name)
|
|
1964
2600
|
|
|
1965
2601
|
if pkg.getTotalElement() > 0:
|