armodel 1.5.0__py3-none-any.whl → 1.6.1__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/data_models/sw_connector.py +3 -3
- armodel/lib/__init__.py +2 -1
- armodel/lib/system_signal.py +37 -0
- armodel/models/__init__.py +9 -4
- armodel/models/annotation.py +27 -3
- armodel/models/ar_object.py +18 -6
- armodel/models/ar_package.py +271 -127
- armodel/models/ar_ref.py +11 -166
- armodel/models/bsw_module_template.py +37 -14
- armodel/models/common_structure.py +91 -174
- armodel/models/communication.py +2 -2
- armodel/models/data_prototype.py +41 -6
- armodel/models/datatype.py +16 -74
- armodel/models/end_to_end_protection.py +1 -1
- 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 +110 -11
- armodel/models/internal_behavior.py +1 -1
- 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/common_structure/implementation.py +21 -0
- armodel/models/m2/autosar_templates/common_structure/implementation_data_types.py +148 -0
- armodel/models/m2/autosar_templates/ecuc_description_template.py +269 -0
- armodel/models/m2/autosar_templates/generic_structure/__init__.py +0 -0
- armodel/models/m2/autosar_templates/generic_structure/abstract_structure.py +69 -0
- armodel/models/m2/autosar_templates/sw_component_template/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/communication.py +360 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/__init__.py +246 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/instance_refs.py +181 -0
- armodel/models/m2/autosar_templates/sw_component_template/composition/__init__.py +154 -0
- armodel/models/m2/autosar_templates/sw_component_template/composition/instance_refs.py +157 -0
- armodel/models/m2/autosar_templates/sw_component_template/data_type/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/data_type/data_prototypes.py +104 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface/__init__.py +243 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface/instance_refs.py +39 -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 +46 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/instance_refs_usage.py +169 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/mode_declaration_group.py +38 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/server_call.py +27 -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/instance_refs.py +48 -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/m2_msr.py +1 -0
- armodel/models/multilanguage_data.py +15 -0
- armodel/models/per_instance_memory.py +34 -6
- armodel/models/port_prototype.py +2 -253
- armodel/models/service_needs.py +3 -1
- armodel/models/sw_component.py +19 -358
- armodel/parser/__init__.py +2 -1
- armodel/parser/abstract_arxml_parser.py +10 -1
- armodel/parser/arxml_parser.py +912 -229
- armodel/parser/file_parser.py +43 -0
- armodel/tests/test_armodel/models/test_ar_package.py +6 -3
- armodel/tests/test_armodel/models/test_ar_ref.py +18 -16
- armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -5
- armodel/tests/test_armodel/models/test_common_structure.py +8 -7
- armodel/tests/test_armodel/models/test_data_dictionary.py +5 -5
- armodel/tests/test_armodel/models/test_data_prototype.py +2 -2
- armodel/tests/test_armodel/models/test_datatype.py +9 -9
- armodel/tests/test_armodel/models/test_port_interface.py +2 -2
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +3 -3
- armodel/tests/test_armodel/parser/test_sw_components.py +3 -3
- armodel/writer/abstract_arxml_writer.py +5 -1
- armodel/writer/arxml_writer.py +870 -224
- {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/METADATA +28 -1
- armodel-1.6.1.dist-info/RECORD +140 -0
- {armodel-1.5.0.dist-info → armodel-1.6.1.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.1.dist-info}/LICENSE +0 -0
- {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/WHEEL +0 -0
- {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/top_level.txt +0 -0
armodel/writer/arxml_writer.py
CHANGED
|
@@ -2,42 +2,67 @@ import xml.etree.cElementTree as ET
|
|
|
2
2
|
|
|
3
3
|
from typing import List
|
|
4
4
|
|
|
5
|
+
from armodel.models.m2.autosar_templates.common_structure.implementation_data_types import ImplementationDataType
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
from ..models.m2.msr.data_dictionary.auxillary_objects import SwAddrMethod
|
|
10
|
+
from ..models.m2.msr.data_dictionary.data_def_properties import SwDataDefProps
|
|
11
|
+
from ..models.m2.msr.asam_hdo.units import PhysicalDimension
|
|
12
|
+
from ..models.m2.msr.documentation.block_elements import DocumentationBlock
|
|
13
|
+
from ..models.m2_msr import CompuConstTextContent, CompuMethod, CompuNominatorDenominator, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
|
|
14
|
+
|
|
15
|
+
from ..models.m2.autosar_templates.common_structure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
|
|
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.generic_structure.abstract_structure import AnyInstanceRef
|
|
18
|
+
from ..models.m2.autosar_templates.sw_component_template.components import PortGroup, SwComponentType, PPortPrototype, PortPrototype, RPortPrototype
|
|
19
|
+
from ..models.m2.autosar_templates.sw_component_template.components.instance_refs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
20
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior import RunnableEntityArgument, SynchronousServerCallPoint
|
|
21
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior.server_call import ServerCallPoint
|
|
22
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior.data_elements import ParameterAccess, VariableAccess
|
|
23
|
+
from ..models.m2.autosar_templates.sw_component_template.composition import AssemblySwConnector, CompositionSwComponentType, DelegationSwConnector, SwComponentPrototype, SwConnector
|
|
24
|
+
from ..models.m2.autosar_templates.sw_component_template.composition.instance_refs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
25
|
+
from ..models.m2.autosar_templates.sw_component_template.port_interface.instance_refs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
26
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior.instance_refs_usage import AutosarParameterRef, AutosarVariableRef, VariableInAtomicSWCTypeInstanceRef
|
|
27
|
+
from ..models.m2.autosar_templates.system_template.instance_refs import VariableDataPrototypeInSystemInstanceRef
|
|
28
|
+
from ..models.m2.autosar_templates.sw_component_template.components.instance_refs import PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef
|
|
29
|
+
from ..models.m2.autosar_templates.system_template.data_mapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
30
|
+
from ..models.m2.autosar_templates.system_template import System, SystemMapping
|
|
31
|
+
from ..models.m2.autosar_templates.system_template.network_management import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
|
|
32
|
+
from ..models.m2.autosar_templates.system_template.transport_protocols import CanTpConfig
|
|
33
|
+
from ..models.m2.autosar_templates.sw_component_template.communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, RPortComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
34
|
+
|
|
5
35
|
from ..models.fibex.fibex_4_multiplatform import Gateway, ISignalMapping
|
|
36
|
+
from ..models.fibex.can_communication import CanFrame, CanFrameTriggering, RxIdentifierRange
|
|
37
|
+
from ..models.fibex.fibex_core.core_communication import FrameTriggering, IPdu, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalTriggering, PduTriggering, SecuredIPdu, SystemSignal, DcmIPdu, Frame, ISignal, NPdu, NmPdu, SystemSignalGroup
|
|
38
|
+
from ..models.fibex.lin_communication import LinFrameTriggering, LinUnconditionalFrame
|
|
39
|
+
from ..models.fibex.fibex_core.core_topology import AbstractCanCluster, CanCluster, EcuInstance, CanPhysicalChannel, CommunicationCluster, LinCluster, LinPhysicalChannel, PhysicalChannel
|
|
6
40
|
|
|
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
41
|
from ..models.internal_behavior import IncludedDataTypeSet, InternalBehavior
|
|
14
42
|
from ..models.timing import EOCExecutableEntityRef, ExecutionOrderConstraint, SwcTiming, TimingExtension
|
|
15
43
|
from ..models.data_def_properties import ValueList
|
|
16
|
-
from ..models.multilanguage_data import MultiLanguageOverviewParagraph, MultilanguageLongName
|
|
44
|
+
from ..models.multilanguage_data import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultilanguageLongName
|
|
17
45
|
from ..models.record_layout import SwRecordLayout, SwRecordLayoutGroup, SwRecordLayoutV
|
|
18
46
|
from ..models.service_mapping import RoleBasedPortAssignment
|
|
19
47
|
from ..models.service_needs import NvBlockNeeds, RoleBasedDataAssignment
|
|
20
|
-
from ..models.
|
|
48
|
+
from ..models.m2.autosar_templates.sw_component_template.data_type.data_prototypes import ApplicationArrayElement, ApplicationCompositeElementDataPrototype, ApplicationRecordElement, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
21
49
|
from ..models.bsw_module_template import BswCalledEntity, BswEvent, BswInternalBehavior, BswModeSenderPolicy, BswModuleDescription, BswModuleEntity, BswModuleEntry, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
|
|
22
50
|
from ..models.ar_package import AUTOSAR
|
|
23
|
-
from ..models.sw_component import ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, DataReceivedEvent, EcuAbstractionSwComponentType, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent,
|
|
51
|
+
from ..models.sw_component import ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, DataReceivedEvent, EcuAbstractionSwComponentType, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, PortAPIOption, RTEEvent, ServiceDependency, ServiceSwComponentType, SwcModeSwitchEvent, SwcServiceDependency
|
|
24
52
|
from ..models.ar_package import ARPackage
|
|
25
|
-
from ..models.ar_ref import
|
|
53
|
+
from ..models.ar_ref import RefType
|
|
26
54
|
from ..models.calibration import SwAxisGrouped, SwAxisIndividual, SwCalprmAxis, SwCalprmAxisSet, SwValueCont, SwValues
|
|
27
|
-
from ..models.common_structure import
|
|
55
|
+
from ..models.common_structure import IncludedModeDeclarationGroupSet, ModeDeclaration, ModeDeclarationGroup, ModeDeclarationGroupPrototype
|
|
28
56
|
from ..models.communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
|
|
29
|
-
from ..models.
|
|
30
|
-
from ..models.datatype import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType, BaseTypeDirectDefinition, DataTypeMappingSet, ImplementationDataType, SwBaseType
|
|
57
|
+
from ..models.datatype import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType, BaseTypeDirectDefinition, DataTypeMappingSet, SwBaseType
|
|
31
58
|
from ..models.general_structure import ARElement, AdminData, Identifiable, Limit, MultilanguageReferrable, Referrable, Sdg, SwcBswMapping, SwcBswRunnableMapping
|
|
32
|
-
|
|
33
|
-
from ..models.port_prototype import ClientComSpec, ModeSwitchReceiverComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, PPortPrototype, PortPrototype, QueuedReceiverComSpec, RPortComSpec, RPortPrototype, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
34
|
-
from ..models.sw_component import AssemblySwConnector, CompositionSwComponentType, DelegationSwConnector, SwComponentPrototype, SwComponentType, SwConnector
|
|
59
|
+
|
|
35
60
|
from ..models.annotation import Annotation
|
|
36
61
|
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.
|
|
62
|
+
from ..models.m2.autosar_templates.sw_component_template.port_interface import ApplicationError, ClientServerInterface, ClientServerOperation, ModeSwitchInterface, PortInterface, SenderReceiverInterface, TriggerInterface
|
|
63
|
+
from ..models.m2.msr.asam_hdo.units import Unit
|
|
39
64
|
from ..models.implementation import AutosarEngineeringObject, BswImplementation, Code, EngineeringObject, Implementation, SwcImplementation
|
|
40
|
-
from ..models.common_structure import
|
|
65
|
+
from ..models.common_structure import ExecutableEntity, ResourceConsumption
|
|
41
66
|
from ..models.sw_component import RunnableEntity, SwcInternalBehavior, TimingEvent
|
|
42
67
|
from ..models.ar_object import ARLiteral
|
|
43
68
|
from ..models.global_constraints import DataConstr, InternalConstrs, PhysConstrs
|
|
@@ -53,6 +78,12 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
53
78
|
|
|
54
79
|
return sub_element
|
|
55
80
|
|
|
81
|
+
def setChildElementRxIdentifierRange(self, element: ET.Element, key: str, range: RxIdentifierRange):
|
|
82
|
+
if range is not None:
|
|
83
|
+
child_element = ET.SubElement(element, key)
|
|
84
|
+
self.setChildElementOptionalNumericalValue(child_element, "LOWER-CAN-ID", range.getLowerCanId())
|
|
85
|
+
self.setChildElementOptionalNumericalValue(child_element, "UPPER-CAN-ID", range.getUpperCanId())
|
|
86
|
+
|
|
56
87
|
def writeSds(self, parent: ET.Element, sdg: Sdg):
|
|
57
88
|
for sd in sdg.getSds():
|
|
58
89
|
sd_tag = ET.SubElement(parent, "SD")
|
|
@@ -63,8 +94,9 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
63
94
|
if sdg is not None:
|
|
64
95
|
sdg_tag = ET.SubElement(parent, "SDG")
|
|
65
96
|
sdg_tag.attrib['GID'] = sdg.gid
|
|
66
|
-
self.setSdg(sdg_tag, sdg.sdg_contents_type)
|
|
67
97
|
self.writeSds(sdg_tag, sdg)
|
|
98
|
+
for sdg_item in sdg.getSdgContentsTypes():
|
|
99
|
+
self.setSdg(sdg_tag, sdg_item)
|
|
68
100
|
|
|
69
101
|
def writeSdgs(self, parent: ET.Element, admin_data: AdminData):
|
|
70
102
|
sdgs = admin_data.getSdgs()
|
|
@@ -81,7 +113,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
81
113
|
limit_tag.attrib['INTERVAL-TYPE'] = limit.intervalType
|
|
82
114
|
limit_tag.text = limit.value
|
|
83
115
|
|
|
84
|
-
def
|
|
116
|
+
def setReferable(self, element: ET.Element, referrable: Referrable):
|
|
85
117
|
self.setARObjectAttributes(element, referrable)
|
|
86
118
|
self.setShortName(element, referrable.short_name)
|
|
87
119
|
|
|
@@ -107,61 +139,77 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
107
139
|
l2_tag.attrib['L'] = l2.l
|
|
108
140
|
l2_tag.text = l2.value
|
|
109
141
|
|
|
110
|
-
def
|
|
111
|
-
self.
|
|
112
|
-
if referrable.
|
|
113
|
-
self.setMultiLongName(element, "LONG-NAME", referrable.
|
|
142
|
+
def setMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
|
|
143
|
+
self.setReferable(element, referrable)
|
|
144
|
+
if referrable.longName is not None:
|
|
145
|
+
self.setMultiLongName(element, "LONG-NAME", referrable.longName)
|
|
114
146
|
|
|
115
|
-
def
|
|
147
|
+
def setAdminData(self, element: ET.Element, admin_data: AdminData):
|
|
116
148
|
element = ET.SubElement(element, "ADMIN-DATA")
|
|
117
149
|
self.writeSdgs(element, admin_data)
|
|
118
150
|
|
|
119
|
-
def
|
|
120
|
-
self.
|
|
121
|
-
self.
|
|
122
|
-
self.
|
|
123
|
-
|
|
124
|
-
|
|
151
|
+
def setIdentifiable(self, element: ET.Element, identifiable: Identifiable):
|
|
152
|
+
self.setMultilanguageReferrable(element, identifiable)
|
|
153
|
+
self.setAnnotations(element, identifiable.getAnnotations())
|
|
154
|
+
self.setMultiLanguageOverviewParagraph(element, "DESC", identifiable.getDesc())
|
|
155
|
+
self.setChildElementOptionalLiteral(element, "CATEGORY", identifiable.getCategory())
|
|
156
|
+
if identifiable.getAdminData() is not None:
|
|
157
|
+
self.setAdminData(element, identifiable.getAdminData())
|
|
125
158
|
|
|
126
|
-
def
|
|
127
|
-
self.
|
|
159
|
+
def setARElement(self, parent: ET.Element, ar_element: ARElement):
|
|
160
|
+
self.setIdentifiable(parent, ar_element)
|
|
128
161
|
|
|
129
|
-
def
|
|
162
|
+
def setTransmissionAcknowledgementRequest(self, element: ET.Element, acknowledge: TransmissionAcknowledgementRequest):
|
|
130
163
|
if (acknowledge != None):
|
|
131
164
|
child_element = ET.SubElement(element, "TRANSMISSION-ACKNOWLEDGE")
|
|
132
165
|
self.setARObjectAttributes(child_element, acknowledge)
|
|
133
166
|
if acknowledge.timeout != None:
|
|
134
167
|
self.setChildElementOptionalFloatValue(child_element, "TIMEOUT", acknowledge.timeout)
|
|
135
168
|
|
|
136
|
-
def
|
|
169
|
+
def setSenderComSpec(self, element: ET.Element, com_spec: SenderComSpec):
|
|
137
170
|
representations = com_spec.getCompositeNetworkRepresentations()
|
|
138
171
|
if len(representations) > 0:
|
|
139
172
|
child_element = ET.SubElement(element, "COMPOSITE-NETWORK-REPRESENTATIONS")
|
|
140
173
|
for representation in representations:
|
|
141
174
|
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.
|
|
175
|
+
self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.getDataElementRef())
|
|
176
|
+
self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.getNetworkRepresentation())
|
|
177
|
+
self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.getHandleOutOfRange())
|
|
178
|
+
self.setTransmissionAcknowledgementRequest(element, com_spec.getTransmissionAcknowledge())
|
|
179
|
+
self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.getUsesEndToEndProtection())
|
|
147
180
|
|
|
148
|
-
def
|
|
149
|
-
|
|
150
|
-
self.setARObjectAttributes(
|
|
151
|
-
self.
|
|
152
|
-
self.setInitValue(
|
|
181
|
+
def setNonqueuedSenderComSpec(self, element: ET.Element, com_spec: NonqueuedSenderComSpec):
|
|
182
|
+
child_element = ET.SubElement(element, "NONQUEUED-SENDER-COM-SPEC")
|
|
183
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
184
|
+
self.setSenderComSpec(child_element, com_spec)
|
|
185
|
+
self.setInitValue(child_element, com_spec.initValue)
|
|
153
186
|
|
|
154
|
-
def
|
|
155
|
-
|
|
156
|
-
self.setARObjectAttributes(
|
|
157
|
-
self.setChildElementOptionalRefType(
|
|
158
|
-
self.setChildElementOptionalNumericalValue(
|
|
187
|
+
def setServerComSpec(self, element: ET.Element, com_spec: ServerComSpec):
|
|
188
|
+
child_element = ET.SubElement(element, "SERVER-COM-SPEC")
|
|
189
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
190
|
+
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.getOperationRef())
|
|
191
|
+
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.getQueueLength())
|
|
192
|
+
|
|
193
|
+
def setQueuedSenderComSpec(self, element: ET.Element, com_spec: QueuedSenderComSpec):
|
|
194
|
+
child_element = ET.SubElement(element, "QUEUED-SENDER-COM-SPEC")
|
|
195
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
196
|
+
self.setSenderComSpec(child_element, com_spec)
|
|
197
|
+
|
|
198
|
+
def setModeSwitchSenderComSpec(self, element: ET.Element, com_spec: ModeSwitchSenderComSpec):
|
|
199
|
+
child_element = ET.SubElement(element, "MODE-SWITCH-SENDER-COM-SPEC")
|
|
200
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
201
|
+
self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", com_spec.getModeGroupRef())
|
|
202
|
+
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.getQueueLength())
|
|
159
203
|
|
|
160
204
|
def writePPortComSpec(self, com_specs_tag: ET.Element, com_spec: PPortComSpec):
|
|
161
205
|
if isinstance(com_spec, NonqueuedSenderComSpec):
|
|
162
|
-
self.
|
|
206
|
+
self.setNonqueuedSenderComSpec(com_specs_tag, com_spec)
|
|
163
207
|
elif isinstance(com_spec, ServerComSpec):
|
|
164
|
-
self.
|
|
208
|
+
self.setServerComSpec(com_specs_tag, com_spec)
|
|
209
|
+
elif isinstance(com_spec, QueuedSenderComSpec):
|
|
210
|
+
self.setQueuedSenderComSpec(com_specs_tag, com_spec)
|
|
211
|
+
elif isinstance(com_spec, ModeSwitchSenderComSpec):
|
|
212
|
+
self.setModeSwitchSenderComSpec(com_specs_tag, com_spec)
|
|
165
213
|
else:
|
|
166
214
|
raise NotImplementedError("Unsupported PPortComSpec %s" % type(com_spec))
|
|
167
215
|
|
|
@@ -185,10 +233,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
185
233
|
child_element = ET.SubElement(element, "COMPOSITE-NETWORK-REPRESENTATIONS")
|
|
186
234
|
for representation in representations:
|
|
187
235
|
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.
|
|
236
|
+
self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.dataElementRef)
|
|
237
|
+
self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.networkRepresentation)
|
|
238
|
+
self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.handleOutOfRange)
|
|
239
|
+
self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.usesEndToEndProtection)
|
|
192
240
|
|
|
193
241
|
def setSwValues(self, element: ET.Element, key: str, sw_values: SwValues):
|
|
194
242
|
if sw_values is not None:
|
|
@@ -249,7 +297,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
249
297
|
def setConstantReference(self, element: ET.Element, value_spec: ConstantReference):
|
|
250
298
|
value_spec_tag = ET.SubElement(element, "CONSTANT-REFERENCE")
|
|
251
299
|
self.writeValueSpecification(value_spec_tag, value_spec)
|
|
252
|
-
self.setChildElementOptionalRefType(value_spec_tag, "CONSTANT-REF", value_spec.
|
|
300
|
+
self.setChildElementOptionalRefType(value_spec_tag, "CONSTANT-REF", value_spec.getConstantRef())
|
|
253
301
|
|
|
254
302
|
def setValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
|
|
255
303
|
if value_spec is not None:
|
|
@@ -277,23 +325,30 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
277
325
|
child_element = ET.SubElement(element, "NONQUEUED-RECEIVER-COM-SPEC")
|
|
278
326
|
self.setARObjectAttributes(child_element, com_spec)
|
|
279
327
|
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.
|
|
328
|
+
self.setChildElementOptionalFloatValue(child_element, "ALIVE-TIMEOUT", com_spec.aliveTimeout)
|
|
329
|
+
self.setChildElementOptionalBooleanValue(child_element, "ENABLE-UPDATE", com_spec.enableUpdated)
|
|
330
|
+
self.setChildElementOptionalBooleanValue(child_element, "HANDLE-NEVER-RECEIVED", com_spec.handleNeverReceived)
|
|
331
|
+
self.setChildElementOptionalLiteral(child_element, "HANDLE-TIMEOUT-TYPE", com_spec.handleTimeoutType)
|
|
332
|
+
self.setInitValue(child_element, com_spec.initValue)
|
|
285
333
|
|
|
286
334
|
def writeQueuedReceiverComSpec(self, element: ET.Element, com_spec: QueuedReceiverComSpec):
|
|
287
335
|
child_element = ET.SubElement(element, "QUEUED-RECEIVER-COM-SPEC")
|
|
288
336
|
self.setARObjectAttributes(child_element, com_spec)
|
|
289
337
|
self.writeReceiverComSpec(child_element, com_spec)
|
|
290
|
-
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.
|
|
338
|
+
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.queueLength)
|
|
291
339
|
|
|
292
340
|
def writeClientComSpec(self, element: ET.Element, com_spec: ClientComSpec):
|
|
293
341
|
self.logger.debug("writeClientComSpec")
|
|
294
342
|
child_element = ET.SubElement(element, "CLIENT-COM-SPEC")
|
|
295
343
|
self.setARObjectAttributes(child_element, com_spec)
|
|
296
|
-
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.
|
|
344
|
+
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.getOperationRef())
|
|
345
|
+
|
|
346
|
+
def writeParameterRequireComSpec(self, element: ET.Element, com_spec: ParameterRequireComSpec):
|
|
347
|
+
self.logger.debug("writeParameterRequireComSpec")
|
|
348
|
+
child_element = ET.SubElement(element, "PARAMETER-REQUIRE-COM-SPEC")
|
|
349
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
350
|
+
self.setChildElementOptionalRefType(child_element, "PARAMETER-REF", com_spec.parameter_ref)
|
|
351
|
+
self.setInitValue(child_element, com_spec.init_value)
|
|
297
352
|
|
|
298
353
|
def writeModeSwitchReceiverComSpec(self, element: ET.Element, com_spec: ModeSwitchReceiverComSpec):
|
|
299
354
|
self.logger.debug("writeModeSwitchReceiverComSpec")
|
|
@@ -310,13 +365,15 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
310
365
|
self.writeClientComSpec(element, com_spec)
|
|
311
366
|
elif isinstance(com_spec, ModeSwitchReceiverComSpec):
|
|
312
367
|
self.writeModeSwitchReceiverComSpec(element, com_spec)
|
|
368
|
+
elif isinstance(com_spec, ParameterRequireComSpec):
|
|
369
|
+
self.writeParameterRequireComSpec(element, com_spec)
|
|
313
370
|
else:
|
|
314
371
|
raise ValueError("Unsupported RPortComSpec %s" % type(com_spec))
|
|
315
372
|
|
|
316
373
|
def writePPortPrototype(self, ports_tag: ET.Element, prototype: PPortPrototype):
|
|
317
374
|
prototype_tag = ET.SubElement(ports_tag, "P-PORT-PROTOTYPE")
|
|
318
375
|
|
|
319
|
-
self.
|
|
376
|
+
self.setIdentifiable(prototype_tag, prototype)
|
|
320
377
|
self.logger.debug("writePPortPrototype %s" % prototype.short_name)
|
|
321
378
|
|
|
322
379
|
com_specs = prototype.getProvidedComSpecs()
|
|
@@ -325,18 +382,18 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
325
382
|
for com_spec in com_specs:
|
|
326
383
|
self.writePPortComSpec(com_specs_tag, com_spec)
|
|
327
384
|
|
|
328
|
-
self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-INTERFACE-TREF", prototype.
|
|
385
|
+
self.setChildElementOptionalRefType(prototype_tag, "PROVIDED-INTERFACE-TREF", prototype.getProvidedInterfaceTRef())
|
|
329
386
|
|
|
330
387
|
def writeRPortPrototype(self, ports_tag: ET.Element, prototype: RPortPrototype):
|
|
331
388
|
self.logger.debug("writeRPortPrototype %s" % prototype.short_name)
|
|
332
389
|
prototype_tag = ET.SubElement(ports_tag, "R-PORT-PROTOTYPE")
|
|
333
|
-
self.
|
|
390
|
+
self.setIdentifiable(prototype_tag, prototype)
|
|
334
391
|
com_specs = prototype.getRequiredComSpecs()
|
|
335
392
|
if len(com_specs) > 0:
|
|
336
393
|
com_specs_tag = ET.SubElement(prototype_tag, "REQUIRED-COM-SPECS")
|
|
337
394
|
for com_spec in com_specs:
|
|
338
395
|
self.writeRPortComSpec(com_specs_tag, com_spec)
|
|
339
|
-
self.setChildElementOptionalRefType(prototype_tag, "REQUIRED-INTERFACE-TREF", prototype.
|
|
396
|
+
self.setChildElementOptionalRefType(prototype_tag, "REQUIRED-INTERFACE-TREF", prototype.getRequiredInterfaceTRef())
|
|
340
397
|
|
|
341
398
|
def writePortPrototypes(self, ports_tag: ET.Element, port_prototypes: List[PortPrototype]):
|
|
342
399
|
for port_prototype in port_prototypes:
|
|
@@ -349,8 +406,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
349
406
|
|
|
350
407
|
def writeInnerGroupIRef(self, element: ET.Element, inner_group_iref: InnerPortGroupInCompositionInstanceRef):
|
|
351
408
|
child_element = ET.SubElement(element, "INNER-GROUP-IREF")
|
|
352
|
-
self.setChildElementOptionalRefType(child_element, "CONTEXT-REF", inner_group_iref.contextRef)
|
|
353
|
-
self.setChildElementOptionalRefType(child_element, "TARGET-REF", inner_group_iref.
|
|
409
|
+
#self.setChildElementOptionalRefType(child_element, "CONTEXT-REF", inner_group_iref.contextRef)
|
|
410
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-REF", inner_group_iref.getTargetRef())
|
|
354
411
|
|
|
355
412
|
def writePortGroupInnerGroupIRefs(self, element: ET.Element, parent: PortGroup):
|
|
356
413
|
irefs = parent.getInnerGroupIRefs()
|
|
@@ -370,7 +427,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
370
427
|
def writePortGroup(self, element: ET.Element, port_group: PortGroup):
|
|
371
428
|
self.logger.debug("writePortGroup %s" % port_group.short_name)
|
|
372
429
|
child_element = ET.SubElement(element, "PORT-GROUP")
|
|
373
|
-
self.
|
|
430
|
+
self.setIdentifiable(child_element, port_group)
|
|
374
431
|
self.writePortGroupInnerGroupIRefs(child_element, port_group)
|
|
375
432
|
self.writePortGroupOuterPortRefs(child_element, port_group)
|
|
376
433
|
|
|
@@ -382,7 +439,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
382
439
|
self.writePortGroup(child_element, port_group)
|
|
383
440
|
|
|
384
441
|
def writeSwComponentType(self, element: ET.Element, sw_component: SwComponentType):
|
|
385
|
-
self.
|
|
442
|
+
self.setIdentifiable(element, sw_component)
|
|
386
443
|
port_prototypes = sw_component.getPortPrototypes()
|
|
387
444
|
if len(port_prototypes) > 0:
|
|
388
445
|
ports_tag = ET.SubElement(element, "PORTS")
|
|
@@ -391,49 +448,54 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
391
448
|
|
|
392
449
|
def writeSwComponentPrototype(self, element: ET.Element, prototype: SwComponentPrototype):
|
|
393
450
|
prototype_tag = ET.SubElement(element, "SW-COMPONENT-PROTOTYPE")
|
|
394
|
-
self.
|
|
395
|
-
self.setChildElementOptionalRefType(prototype_tag, "TYPE-TREF", prototype.
|
|
451
|
+
self.setIdentifiable(prototype_tag, prototype)
|
|
452
|
+
self.setChildElementOptionalRefType(prototype_tag, "TYPE-TREF", prototype.getTypeTRef())
|
|
396
453
|
|
|
397
454
|
def writeSwComponentPrototypes(self, element: ET.Element, sw_component: CompositionSwComponentType):
|
|
398
|
-
|
|
399
|
-
|
|
455
|
+
prototypes = sw_component.getSwComponentPrototypes()
|
|
456
|
+
if len(prototypes) > 0:
|
|
457
|
+
components_tag = ET.SubElement(element, "COMPONENTS")
|
|
458
|
+
for prototype in prototypes:
|
|
400
459
|
self.writeSwComponentPrototype(components_tag, prototype)
|
|
401
460
|
|
|
402
461
|
def writeAssemblySwConnector(self, element: ET.Element, sw_connector: AssemblySwConnector):
|
|
403
462
|
connector_tag = ET.SubElement(element, "ASSEMBLY-SW-CONNECTOR")
|
|
404
|
-
self.
|
|
463
|
+
self.setIdentifiable(connector_tag, sw_connector)
|
|
405
464
|
|
|
406
|
-
if sw_connector.
|
|
465
|
+
if sw_connector.getProviderIRef() is not None:
|
|
407
466
|
provider_iref_tag = ET.SubElement(connector_tag, "PROVIDER-IREF")
|
|
408
|
-
|
|
409
|
-
self.
|
|
410
|
-
self.setChildElementOptionalRefType(provider_iref_tag, "
|
|
467
|
+
provider_iref = sw_connector.getProviderIRef()
|
|
468
|
+
self.setARObjectAttributes(provider_iref_tag, provider_iref)
|
|
469
|
+
self.setChildElementOptionalRefType(provider_iref_tag, "CONTEXT-COMPONENT-REF", provider_iref.getContextComponentRef())
|
|
470
|
+
self.setChildElementOptionalRefType(provider_iref_tag, "TARGET-P-PORT-REF", provider_iref.getTargetPPortRef())
|
|
411
471
|
|
|
412
|
-
if sw_connector.
|
|
472
|
+
if sw_connector.getRequesterIRef() is not None:
|
|
413
473
|
requester_iref_tag = ET.SubElement(connector_tag, "REQUESTER-IREF")
|
|
414
|
-
|
|
415
|
-
self.
|
|
416
|
-
self.setChildElementOptionalRefType(requester_iref_tag, "
|
|
474
|
+
requester_iref = sw_connector.getRequesterIRef()
|
|
475
|
+
self.setARObjectAttributes(requester_iref_tag, requester_iref)
|
|
476
|
+
self.setChildElementOptionalRefType(requester_iref_tag, "CONTEXT-COMPONENT-REF", requester_iref.getContextComponentRef())
|
|
477
|
+
self.setChildElementOptionalRefType(requester_iref_tag, "TARGET-R-PORT-REF", requester_iref.getTargetRPortRef())
|
|
417
478
|
|
|
418
479
|
def writeDelegationSwConnector(self, element: ET.Element, sw_connector: DelegationSwConnector):
|
|
419
480
|
connector_tag = ET.SubElement(element, "DELEGATION-SW-CONNECTOR")
|
|
420
|
-
self.
|
|
481
|
+
self.setIdentifiable(connector_tag, sw_connector)
|
|
421
482
|
|
|
422
|
-
if sw_connector.
|
|
483
|
+
if sw_connector.getInnerPortIRref() is not None:
|
|
423
484
|
inner_port_iref_tag = ET.SubElement(connector_tag, "INNER-PORT-IREF")
|
|
424
|
-
|
|
485
|
+
inner_port_iref = sw_connector.getInnerPortIRref()
|
|
486
|
+
if isinstance(inner_port_iref, PPortInCompositionInstanceRef):
|
|
425
487
|
instance_ref_tag = ET.SubElement(inner_port_iref_tag, "P-PORT-IN-COMPOSITION-INSTANCE-REF")
|
|
426
|
-
self.setChildElementOptionalRefType(instance_ref_tag, "CONTEXT-COMPONENT-REF",
|
|
427
|
-
self.setChildElementOptionalRefType(instance_ref_tag, "TARGET-P-PORT-REF",
|
|
428
|
-
elif isinstance(
|
|
488
|
+
self.setChildElementOptionalRefType(instance_ref_tag, "CONTEXT-COMPONENT-REF", inner_port_iref.getContextComponentRef())
|
|
489
|
+
self.setChildElementOptionalRefType(instance_ref_tag, "TARGET-P-PORT-REF", inner_port_iref.getTargetPPortRef())
|
|
490
|
+
elif isinstance(inner_port_iref, RPortInCompositionInstanceRef):
|
|
429
491
|
instance_ref_tag = ET.SubElement(inner_port_iref_tag, "R-PORT-IN-COMPOSITION-INSTANCE-REF")
|
|
430
|
-
self.setChildElementOptionalRefType(instance_ref_tag, "CONTEXT-COMPONENT-REF",
|
|
431
|
-
self.setChildElementOptionalRefType(instance_ref_tag, "TARGET-R-PORT-REF",
|
|
492
|
+
self.setChildElementOptionalRefType(instance_ref_tag, "CONTEXT-COMPONENT-REF", inner_port_iref.getContextComponentRef())
|
|
493
|
+
self.setChildElementOptionalRefType(instance_ref_tag, "TARGET-R-PORT-REF", inner_port_iref.getTargetRPortRef())
|
|
432
494
|
else:
|
|
433
|
-
self._raiseError("Invalid inner port of DelegationSwConnector <%s>" % sw_connector.
|
|
495
|
+
self._raiseError("Invalid inner port of DelegationSwConnector <%s>" % sw_connector.getShortName())
|
|
434
496
|
|
|
435
|
-
if sw_connector.
|
|
436
|
-
self.setChildElementOptionalRefType(connector_tag, "OUTER-PORT-REF", sw_connector.
|
|
497
|
+
if sw_connector.getOuterPortRef() is not None:
|
|
498
|
+
self.setChildElementOptionalRefType(connector_tag, "OUTER-PORT-REF", sw_connector.getOuterPortRef())
|
|
437
499
|
#self.writeChildOptionalRefElement(requester_iref_tag, "TARGET-R-PORT-REF", sw_connector.requester_iref.target_r_port_ref)
|
|
438
500
|
|
|
439
501
|
def writeSwConnector(self, element: ET.Element, sw_connector: SwConnector):
|
|
@@ -448,8 +510,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
448
510
|
sw_connectors = sw_component.getSwConnectors()
|
|
449
511
|
if len(sw_connectors) > 0:
|
|
450
512
|
connectors_tag = ET.SubElement(element, "CONNECTORS")
|
|
513
|
+
# Change the implementation to compatible with AUTOSAR builder
|
|
451
514
|
for sw_connector in sw_connectors:
|
|
452
515
|
self.writeSwConnector(connectors_tag, sw_connector)
|
|
516
|
+
#for sw_connector in sw_component.getAssemblySwConnectors():
|
|
517
|
+
# self.writeSwConnector(connectors_tag, sw_connector)
|
|
518
|
+
#for sw_connector in sw_component.getDelegationSwConnectors():
|
|
519
|
+
# self.writeSwConnector(connectors_tag, sw_connector)
|
|
453
520
|
|
|
454
521
|
def writeCompositionSwComponentTypeDataTypeMappingSet(self, element: ET.Element, parent: CompositionSwComponentType):
|
|
455
522
|
data_type_mappings = parent.getDataTypeMappings()
|
|
@@ -471,11 +538,33 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
471
538
|
for sw_component in ar_package.getCompositionSwComponentTypes():
|
|
472
539
|
self.writeCompositionSwComponentType(element, sw_component)
|
|
473
540
|
|
|
541
|
+
def writeLParagraphs(self, element: ET.Element, paragraph: MultiLanguageParagraph):
|
|
542
|
+
for l1 in paragraph.getL1s():
|
|
543
|
+
l1_tag = ET.SubElement(element, "L-1")
|
|
544
|
+
self.setARObjectAttributes(l1_tag, l1)
|
|
545
|
+
if l1.l is not None:
|
|
546
|
+
l1_tag.attrib['L'] = l1.l
|
|
547
|
+
l1_tag.text = l1.value
|
|
548
|
+
|
|
549
|
+
def setMultiLanguageParagraphs(self, element: ET.Element, key: str, paragraphs: List[MultiLanguageParagraph]):
|
|
550
|
+
for paragraph in paragraphs:
|
|
551
|
+
child_element = ET.SubElement(element, key)
|
|
552
|
+
self.setARObjectAttributes(child_element, paragraph)
|
|
553
|
+
self.writeLParagraphs(child_element, paragraph)
|
|
554
|
+
return paragraphs
|
|
555
|
+
|
|
556
|
+
def setDocumentationBlock(self, element: ET.Element, key: str, block: DocumentationBlock):
|
|
557
|
+
if block is not None:
|
|
558
|
+
child_element = ET.SubElement(element, key)
|
|
559
|
+
self.setARObjectAttributes(child_element, block)
|
|
560
|
+
self.setMultiLanguageParagraphs(child_element, "P", block.getPs())
|
|
561
|
+
|
|
474
562
|
def writeGeneralAnnotation(self, element: ET.Element, annotation: Annotation):
|
|
475
|
-
self.setMultiLongName(element, "LABEL", annotation.
|
|
563
|
+
self.setMultiLongName(element, "LABEL", annotation.getLabel())
|
|
564
|
+
self.setChildElementOptionalLiteral(element, "ANNOTATION-ORIGIN", annotation.getAnnotationOrigin())
|
|
565
|
+
self.setDocumentationBlock(element, "ANNOTATION-TEXT", annotation.getAnnotationText())
|
|
476
566
|
|
|
477
|
-
def
|
|
478
|
-
annotations = props.getAnnotations()
|
|
567
|
+
def setAnnotations(self, element: ET.Element, annotations: List[Annotation]) :
|
|
479
568
|
if len(annotations) > 0:
|
|
480
569
|
annotations_tag = ET.SubElement(element, "ANNOTATIONS")
|
|
481
570
|
for annotation in annotations:
|
|
@@ -516,6 +605,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
516
605
|
for axis in axises:
|
|
517
606
|
self.setSwCalprmAxis(child_element, axis)
|
|
518
607
|
|
|
608
|
+
def writeSwDataDefProsInvalidValue(self, element: ET.Element, props: SwDataDefProps):
|
|
609
|
+
if props.getInvalidValue() is not None:
|
|
610
|
+
child_element = ET.SubElement(element, "INVALID-VALUE")
|
|
611
|
+
self.setValueSpecification(child_element, props.getInvalidValue())
|
|
612
|
+
|
|
519
613
|
def setSwDataDefProps(self, element: ET.Element, key: str, sw_data_def_props: SwDataDefProps):
|
|
520
614
|
if sw_data_def_props is not None:
|
|
521
615
|
child_element = ET.SubElement(element, key)
|
|
@@ -523,18 +617,18 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
523
617
|
sw_data_def_props_variants_tag = ET.SubElement(child_element, "SW-DATA-DEF-PROPS-VARIANTS")
|
|
524
618
|
sw_data_def_props_conditional_tag = ET.SubElement(sw_data_def_props_variants_tag, "SW-DATA-DEF-PROPS-CONDITIONAL")
|
|
525
619
|
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
|
-
|
|
620
|
+
self.setAnnotations(sw_data_def_props_conditional_tag, sw_data_def_props.getAnnotations())
|
|
621
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "BASE-TYPE-REF", sw_data_def_props.getBaseTypeRef())
|
|
622
|
+
self.writeSwDataDefProsInvalidValue(sw_data_def_props_conditional_tag, sw_data_def_props)
|
|
623
|
+
self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-CALIBRATION-ACCESS", sw_data_def_props.getSwCalibrationAccess())
|
|
624
|
+
self.setSwCalprmAxisSet(sw_data_def_props_conditional_tag, "SW-CALPRM-AXIS-SET", sw_data_def_props.getSwCalprmAxisSet())
|
|
625
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "COMPU-METHOD-REF", sw_data_def_props.getCompuMethodRef())
|
|
626
|
+
self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-IMPL-POLICY", sw_data_def_props.getSwImplPolicy())
|
|
627
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", sw_data_def_props.getImplementationDataTypeRef())
|
|
628
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "DATA-CONSTR-REF", sw_data_def_props.getDataConstrRef())
|
|
629
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "SW-RECORD-LAYOUT-REF", sw_data_def_props.getSwRecordLayoutRef())
|
|
630
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "VALUE-AXIS-DATA-TYPE-REF", sw_data_def_props.getValueAxisDataTypeRef())
|
|
631
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "UNIT-REF", sw_data_def_props.getUnitRef())
|
|
538
632
|
|
|
539
633
|
def writeApplicationDataType(self, element: ET.Element, data_type: ApplicationDataType):
|
|
540
634
|
self.writeAutosarDataType(element, data_type)
|
|
@@ -543,8 +637,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
543
637
|
self.writeApplicationDataType(element, data_type)
|
|
544
638
|
|
|
545
639
|
def writeAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
546
|
-
self.
|
|
547
|
-
self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", data_type.
|
|
640
|
+
self.setARElement(element, data_type)
|
|
641
|
+
self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", data_type.swDataDefProps)
|
|
548
642
|
|
|
549
643
|
def writeApplicationPrimitiveDataType(self, element: ET.Element, data_type: ApplicationPrimitiveDataType):
|
|
550
644
|
self.logger.debug("writeApplicationPrimitiveDataType %s" % data_type.short_name)
|
|
@@ -552,7 +646,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
552
646
|
self.writeApplicationDataType(data_type_tag, data_type)
|
|
553
647
|
|
|
554
648
|
def setDataPrototype(self, element: ET.Element, prototype: DataPrototype):
|
|
555
|
-
self.
|
|
649
|
+
self.setIdentifiable(element, prototype)
|
|
556
650
|
|
|
557
651
|
def setApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
|
|
558
652
|
self.setDataPrototype(element, prototype)
|
|
@@ -591,7 +685,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
591
685
|
|
|
592
686
|
def writeSwBaseType(self, element: ET.Element, base_type: SwBaseType):
|
|
593
687
|
data_type_tag = ET.SubElement(element, "SW-BASE-TYPE")
|
|
594
|
-
self.
|
|
688
|
+
self.setIdentifiable(data_type_tag, base_type)
|
|
595
689
|
self.writeBaseTypeDirectDefinition(data_type_tag, base_type.baseTypeDefinition)
|
|
596
690
|
|
|
597
691
|
def writeCompuScaleConstantContents(self, element: ET.Element, contents: CompuScaleConstantContents):
|
|
@@ -626,6 +720,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
626
720
|
for compu_scale in compu_scales.getCompuScales():
|
|
627
721
|
child_element = ET.SubElement(compu_scales_tag, "COMPU-SCALE")
|
|
628
722
|
self.setARObjectAttributes(child_element, compu_scale)
|
|
723
|
+
self.setChildElementOptionalLiteral(child_element, "SHORT-LABEL", compu_scale.short_label)
|
|
629
724
|
self.setChildElementOptionalLiteral(child_element, "SYMBOL", compu_scale.symbol)
|
|
630
725
|
self.writeChildLimitElement(child_element, "LOWER-LIMIT", compu_scale.lowerLimit)
|
|
631
726
|
self.writeChildLimitElement(child_element, "UPPER-LIMIT", compu_scale.upperLimit)
|
|
@@ -641,7 +736,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
641
736
|
def writeCompuMethod(self, element: ET.Element, compu_method: CompuMethod):
|
|
642
737
|
compu_method_tag = ET.SubElement(element, "COMPU-METHOD")
|
|
643
738
|
self.logger.debug("writeCompuMethods %s" % compu_method.short_name)
|
|
644
|
-
self.
|
|
739
|
+
self.setIdentifiable(compu_method_tag, compu_method)
|
|
645
740
|
self.setChildElementOptionalRefType(compu_method_tag, "UNIT-REF", compu_method.unit_ref)
|
|
646
741
|
self.writeCompuInternalToPhys(compu_method_tag, compu_method)
|
|
647
742
|
|
|
@@ -672,11 +767,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
672
767
|
|
|
673
768
|
def writeConstantSpecification(self, element: ET.Element, spec: ConstantSpecification):
|
|
674
769
|
spec_tag = ET.SubElement(element, "CONSTANT-SPECIFICATION")
|
|
675
|
-
self.
|
|
770
|
+
self.setIdentifiable(spec_tag, spec)
|
|
676
771
|
|
|
677
|
-
if spec.
|
|
772
|
+
if spec.getValueSpec() is not None:
|
|
678
773
|
value_spec_tag = ET.SubElement(spec_tag, "VALUE-SPEC")
|
|
679
|
-
self.setValueSpecification(value_spec_tag, spec.
|
|
774
|
+
self.setValueSpecification(value_spec_tag, spec.getValueSpec())
|
|
680
775
|
|
|
681
776
|
def setInternalConstrs(self, element: ET.Element, constrs: InternalConstrs):
|
|
682
777
|
if constrs is not None:
|
|
@@ -710,21 +805,24 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
710
805
|
|
|
711
806
|
def writeDataConstr(self, element: ET.Element, constr: DataConstr):
|
|
712
807
|
child_element = ET.SubElement(element, "DATA-CONSTR")
|
|
713
|
-
self.
|
|
808
|
+
self.setIdentifiable(child_element, constr)
|
|
714
809
|
self.writeDataConstrRules(child_element, constr)
|
|
715
810
|
|
|
716
811
|
def writeUnit(self, element: ET.Element, unit: Unit):
|
|
717
812
|
self.logger.debug("writeUnit %s" % unit.short_name)
|
|
718
813
|
child_element = ET.SubElement(element, "UNIT")
|
|
719
|
-
self.
|
|
720
|
-
self.setChildElementOptionalLiteral(child_element, "DISPLAY-NAME", unit.
|
|
814
|
+
self.setIdentifiable(child_element, unit)
|
|
815
|
+
self.setChildElementOptionalLiteral(child_element, "DISPLAY-NAME", unit.getDisplayName())
|
|
816
|
+
self.setChildElementOptionalFloatValue(child_element, "FACTOR-SI-TO-UNIT", unit.getFactorSiToUnit())
|
|
817
|
+
self.setChildElementOptionalFloatValue(child_element, "OFFSET-SI-TO-UNIT", unit.getOffsetSiToUnit())
|
|
818
|
+
self.setChildElementOptionalRefType(child_element, "PHYSICAL-DIMENSION-REF", unit.getPhysicalDimensionRef())
|
|
721
819
|
|
|
722
820
|
def setRModeInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: RModeInAtomicSwcInstanceRef):
|
|
723
821
|
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.
|
|
822
|
+
self.setChildElementOptionalRefType(child_element, "BASE", iref.getBaseRef())
|
|
823
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", iref.getContextPortRef())
|
|
824
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF", iref.getContextModeDeclarationGroupPrototypeRef())
|
|
825
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF", iref.getTargetModeDeclarationRef())
|
|
728
826
|
|
|
729
827
|
def setPOperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: POperationInAtomicSwcInstanceRef):
|
|
730
828
|
child_element = ET.SubElement(element, key)
|
|
@@ -732,7 +830,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
732
830
|
self.setChildElementOptionalRefType(child_element, "TARGET-PROVIDED-OPERATION-REF", iref.target_provided_operation_ref)
|
|
733
831
|
|
|
734
832
|
def setRTEEvent(self, element: ET.Element, event: RTEEvent):
|
|
735
|
-
self.
|
|
833
|
+
self.setIdentifiable(element, event)
|
|
736
834
|
irefs = event.getDisabledModeIRefs()
|
|
737
835
|
if len(irefs) > 0:
|
|
738
836
|
child_element = ET.SubElement(element, "DISABLED-MODE-IREFS")
|
|
@@ -766,14 +864,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
766
864
|
def setRVariableInAtomicSwcInstanceRef(self, element: ET.Element, iref: RVariableInAtomicSwcInstanceRef):
|
|
767
865
|
if iref is not None:
|
|
768
866
|
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.
|
|
867
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.getContextRPortRef())
|
|
868
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-ELEMENT-REF", iref.getTargetDataElementRef())
|
|
771
869
|
|
|
772
870
|
def setDataReceivedEvent(self, element: ET.Element, event: DataReceivedEvent):
|
|
773
871
|
if event is not None:
|
|
774
872
|
child_element = ET.SubElement(element, "DATA-RECEIVED-EVENT")
|
|
775
873
|
self.setRTEEvent(child_element, event)
|
|
776
|
-
self.setRVariableInAtomicSwcInstanceRef(child_element, event.
|
|
874
|
+
self.setRVariableInAtomicSwcInstanceRef(child_element, event.dataIRef)
|
|
777
875
|
|
|
778
876
|
def setInternalTriggerOccurredEvent(self, element: ET.Element, event: DataReceivedEvent):
|
|
779
877
|
pass
|
|
@@ -810,7 +908,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
810
908
|
areas_tag = ET.SubElement(element, "EXCLUSIVE-AREAS")
|
|
811
909
|
for area in areas:
|
|
812
910
|
child_element = ET.SubElement(areas_tag, "EXCLUSIVE-AREA")
|
|
813
|
-
self.
|
|
911
|
+
self.setIdentifiable(child_element, area)
|
|
814
912
|
|
|
815
913
|
def writeDataTypeMappingRefs(self, element: ET.Element, behavior: InternalBehavior):
|
|
816
914
|
refs = behavior.getDataTypeMappingRefs()
|
|
@@ -827,31 +925,25 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
827
925
|
self.writeParameterDataPrototype(child_element, memory)
|
|
828
926
|
|
|
829
927
|
def writeInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
|
|
830
|
-
self.
|
|
928
|
+
self.setIdentifiable(element, behavior)
|
|
831
929
|
self.writeInternalBehaviorConstantMemories(element, behavior)
|
|
832
930
|
self.writeDataTypeMappingRefs(element, behavior)
|
|
833
931
|
self.writeExclusiveAreas(element, behavior)
|
|
834
932
|
|
|
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
933
|
def setAutosarVariableRef(self, element: ET.Element, ref: AutosarVariableRef):
|
|
841
934
|
if ref is not None:
|
|
842
935
|
child_element = ET.SubElement(element, "ACCESSED-VARIABLE")
|
|
843
|
-
|
|
936
|
+
self.setARObjectAttributes(child_element, ref)
|
|
937
|
+
if ref.getAutosarVariableIRef() is not None:
|
|
844
938
|
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)
|
|
939
|
+
self.setChildElementOptionalRefType(child_element, "PORT-PROTOTYPE-REF", ref.getAutosarVariableIRef().getPortPrototypeRef())
|
|
940
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", ref.getAutosarVariableIRef().getTargetDataPrototypeRef())
|
|
941
|
+
self.setChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF", ref.getLocalVariableRef())
|
|
850
942
|
|
|
851
943
|
def setVariableAccess(self, element: ET.Element, access: VariableAccess):
|
|
852
944
|
child_element = ET.SubElement(element, "VARIABLE-ACCESS")
|
|
853
|
-
self.
|
|
854
|
-
self.setAutosarVariableRef(child_element, access.
|
|
945
|
+
self.setIdentifiable(child_element, access)
|
|
946
|
+
self.setAutosarVariableRef(child_element, access.getAccessedVariableRef())
|
|
855
947
|
|
|
856
948
|
def writeDataReadAccesses(self, element: ET.Element, entity: RunnableEntity):
|
|
857
949
|
#accesses = entity.getDataReadAccesses():
|
|
@@ -864,7 +956,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
864
956
|
|
|
865
957
|
def writeParameterAccess(self, element: ET.Element, parameter_access: ParameterAccess):
|
|
866
958
|
child_element = ET.SubElement(element, "PARAMETER-ACCESS")
|
|
867
|
-
self.
|
|
959
|
+
self.setIdentifiable(child_element, parameter_access)
|
|
868
960
|
self.setAutosarParameterRef(child_element, "ACCESSED-PARAMETER", parameter_access.accessed_parameter)
|
|
869
961
|
|
|
870
962
|
def writeParameterAccesses(self, element: ET.Element, entity: RunnableEntity):
|
|
@@ -902,20 +994,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
902
994
|
for access in variables:
|
|
903
995
|
self.setVariableAccess(child_element, access)
|
|
904
996
|
|
|
905
|
-
def
|
|
997
|
+
def setROperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: ROperationInAtomicSwcInstanceRef):
|
|
906
998
|
if iref is not None:
|
|
907
999
|
child_element = ET.SubElement(element, key)
|
|
908
1000
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.context_r_port_ref)
|
|
909
1001
|
self.setChildElementOptionalRefType(child_element, "TARGET-REQUIRED-OPERATION-REF", iref.target_required_operation_ref)
|
|
910
1002
|
|
|
911
|
-
def
|
|
912
|
-
self.
|
|
1003
|
+
def setServerCallPoint(self, element: ET.Element, call_point: ServerCallPoint):
|
|
1004
|
+
self.setROperationInAtomicSwcInstanceRef(element, "OPERATION-IREF", call_point.getOperationIRef())
|
|
913
1005
|
self.setChildElementOptionalFloatValue(element, "TIMEOUT", call_point.timeout)
|
|
914
1006
|
|
|
915
|
-
def
|
|
1007
|
+
def setSynchronousServerCallPoint(self, element: ET.Element, call_point: SynchronousServerCallPoint):
|
|
916
1008
|
child_element = ET.SubElement(element, "SYNCHRONOUS-SERVER-CALL-POINT")
|
|
917
|
-
self.
|
|
918
|
-
self.
|
|
1009
|
+
self.setIdentifiable(child_element, call_point)
|
|
1010
|
+
self.setServerCallPoint(child_element, call_point)
|
|
919
1011
|
|
|
920
1012
|
def writeServerCallPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
921
1013
|
call_points = entity.getServerCallPoints()
|
|
@@ -923,7 +1015,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
923
1015
|
child_element = ET.SubElement(element, "SERVER-CALL-POINTS")
|
|
924
1016
|
for call_point in call_points:
|
|
925
1017
|
if isinstance(call_point, SynchronousServerCallPoint):
|
|
926
|
-
self.
|
|
1018
|
+
self.setSynchronousServerCallPoint(child_element, call_point)
|
|
927
1019
|
else:
|
|
928
1020
|
self._raiseError("Unsupported ServerCallPoint type <%s>" % type(call_point))
|
|
929
1021
|
|
|
@@ -934,10 +1026,18 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
934
1026
|
for access in variables:
|
|
935
1027
|
self.setVariableAccess(child_element, access)
|
|
936
1028
|
|
|
937
|
-
def setRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, iref: RModeGroupInAtomicSWCInstanceRef):
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
1029
|
+
def setRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, tag: str, iref: RModeGroupInAtomicSWCInstanceRef):
|
|
1030
|
+
if iref is not None:
|
|
1031
|
+
child_element = ET.SubElement(element, tag)
|
|
1032
|
+
instance_ref_tag = ET.SubElement(child_element, "R-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF")
|
|
1033
|
+
self.setChildElementOptionalRefType(instance_ref_tag, "CONTEXT-R-PORT-REF", iref.getContextRPortRef())
|
|
1034
|
+
self.setChildElementOptionalRefType(instance_ref_tag, "TARGET-MODE-GROUP-REF", iref.getTargetModeGroupRef())
|
|
1035
|
+
|
|
1036
|
+
def setPModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, tag: str, iref: PModeGroupInAtomicSwcInstanceRef):
|
|
1037
|
+
if iref is not None:
|
|
1038
|
+
child_element = ET.SubElement(element, tag)
|
|
1039
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF", iref.getContextPPortRef())
|
|
1040
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF", iref.getTargetModeGroupRef())
|
|
941
1041
|
|
|
942
1042
|
def writeModeAccessPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
943
1043
|
points = entity.getModeAccessPoints()
|
|
@@ -945,21 +1045,43 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
945
1045
|
mode_access_points_tag = ET.SubElement(element, "MODE-ACCESS-POINTS")
|
|
946
1046
|
for point in points:
|
|
947
1047
|
child_element = ET.SubElement(mode_access_points_tag, "MODE-ACCESS-POINT")
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
1048
|
+
self.setRModeGroupInAtomicSWCInstanceRef(child_element, "MODE-GROUP-IREF", point.getModeGroupIRef())
|
|
1049
|
+
|
|
1050
|
+
def writeModeSwitchPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
1051
|
+
points = entity.getModeSwitchPoints()
|
|
1052
|
+
if len(points) > 0:
|
|
1053
|
+
mode_access_points_tag = ET.SubElement(element, "MODE-SWITCH-POINTS")
|
|
1054
|
+
for point in points:
|
|
1055
|
+
child_element = ET.SubElement(mode_access_points_tag, "MODE-SWITCH-POINT")
|
|
1056
|
+
self.setIdentifiable(child_element, point)
|
|
1057
|
+
self.setPModeGroupInAtomicSWCInstanceRef(child_element, "MODE-GROUP-IREF", point.getModeGroupIRef())
|
|
1058
|
+
|
|
1059
|
+
def setRunnableEntityArgument(self, element: ET.Element, argument: RunnableEntityArgument):
|
|
1060
|
+
child_element = ET.SubElement(element, "RUNNABLE-ENTITY-ARGUMENT")
|
|
1061
|
+
self.setChildElementOptionalLiteral(child_element, "SYMBOL", argument.getSymbol())
|
|
1062
|
+
|
|
1063
|
+
def writeRunnableEntityArguments(self, element: ET.Element, entity: RunnableEntity):
|
|
1064
|
+
arguments = entity.getArguments()
|
|
1065
|
+
if len(arguments) > 0:
|
|
1066
|
+
child_element = ET.SubElement(element, "ARGUMENTS")
|
|
1067
|
+
for argument in arguments:
|
|
1068
|
+
if isinstance(argument, RunnableEntityArgument):
|
|
1069
|
+
self.setRunnableEntityArgument(child_element, argument)
|
|
1070
|
+
else:
|
|
1071
|
+
raise NotImplementedError("Unsupported argument of Runnable Entity <%s>" % type(argument))
|
|
951
1072
|
|
|
952
1073
|
def writeRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
|
|
953
1074
|
if entity is not None:
|
|
954
1075
|
child_element = ET.SubElement(element, "RUNNABLE-ENTITY")
|
|
955
|
-
self.
|
|
956
|
-
self.
|
|
957
|
-
self.setChildElementOptionalBooleanValue(child_element, "CAN-BE-INVOKED-CONCURRENTLY", entity.
|
|
1076
|
+
self.setExecutableEntity(child_element, entity)
|
|
1077
|
+
self.writeRunnableEntityArguments(child_element, entity)
|
|
1078
|
+
self.setChildElementOptionalBooleanValue(child_element, "CAN-BE-INVOKED-CONCURRENTLY", entity.getCanBeInvokedConcurrently())
|
|
958
1079
|
self.writeParameterAccesses(child_element, entity)
|
|
959
1080
|
self.writeDataReceivePointByArguments(child_element, entity)
|
|
960
1081
|
self.writeDataSendPoints(child_element, entity)
|
|
961
1082
|
self.writeDataWriteAccesses(child_element, entity)
|
|
962
1083
|
self.writeModeAccessPoints(child_element, entity)
|
|
1084
|
+
self.writeModeSwitchPoints(child_element, entity)
|
|
963
1085
|
self.writeReadLocalVariables(child_element, entity)
|
|
964
1086
|
self.writeServerCallPoints(child_element, entity)
|
|
965
1087
|
self.setChildElementOptionalLiteral(child_element, "SYMBOL", entity.symbol)
|
|
@@ -991,17 +1113,17 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
991
1113
|
memories_tag = ET.SubElement(element, "PER-INSTANCE-MEMORYS")
|
|
992
1114
|
for memory in memories:
|
|
993
1115
|
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.
|
|
1116
|
+
self.setIdentifiable(child_element, memory)
|
|
1117
|
+
self.setChildElementOptionalLiteral(child_element, "INIT-VALUE", memory.initValue)
|
|
1118
|
+
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", memory.swDataDefProps)
|
|
997
1119
|
self.setChildElementOptionalLiteral(child_element, "TYPE", memory.type)
|
|
998
|
-
self.setChildElementOptionalLiteral (child_element, "TYPE-DEFINITION", memory.
|
|
1120
|
+
self.setChildElementOptionalLiteral (child_element, "TYPE-DEFINITION", memory.typeDefinition)
|
|
999
1121
|
|
|
1000
1122
|
def writeParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
|
|
1001
1123
|
child_element = ET.SubElement(element, "PARAMETER-DATA-PROTOTYPE")
|
|
1002
|
-
self.
|
|
1124
|
+
self.setIdentifiable(child_element, prototype)
|
|
1003
1125
|
self.writeAutosarDataPrototype(child_element, prototype)
|
|
1004
|
-
self.setInitValue(child_element, prototype.
|
|
1126
|
+
self.setInitValue(child_element, prototype.initValue)
|
|
1005
1127
|
|
|
1006
1128
|
def writeParameterDataPrototypes(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1007
1129
|
prototypes = behavior.getPerInstanceParameters()
|
|
@@ -1033,7 +1155,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1033
1155
|
self.setChildElementOptionalRefType(child_element, "PORT-REF", option.port_ref)
|
|
1034
1156
|
|
|
1035
1157
|
def writeServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
|
|
1036
|
-
self.
|
|
1158
|
+
self.setIdentifiable(element, dependency)
|
|
1037
1159
|
|
|
1038
1160
|
def writeRoleBasedDataAssignment(self, element: ET.Element, assignment: RoleBasedDataAssignment):
|
|
1039
1161
|
child_element = ET.SubElement(element, "ROLE-BASED-DATA-ASSIGNMENT")
|
|
@@ -1069,7 +1191,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1069
1191
|
def writeNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
|
|
1070
1192
|
child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
|
|
1071
1193
|
self.logger.debug("writeNvBlockNeeds %s" % needs.short_name)
|
|
1072
|
-
self.
|
|
1194
|
+
self.setIdentifiable(child_element, needs)
|
|
1073
1195
|
self.setChildElementOptionalBooleanValue(child_element, "CALC-RAM-BLOCK-CRC", needs.calc_ram_block_crc)
|
|
1074
1196
|
self.setChildElementOptionalBooleanValue(child_element, "CHECK-STATIC-BLOCK-ID", needs.check_static_block_id)
|
|
1075
1197
|
self.setChildElementOptionalNumericalValue(child_element, "N-DATA-SETS", needs.n_data_sets)
|
|
@@ -1169,7 +1291,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1169
1291
|
def setCode(self, element: ET.SubElement, code_desc: Code):
|
|
1170
1292
|
self.logger.debug("setCode %s" % code_desc.short_name)
|
|
1171
1293
|
child_element = ET.SubElement(element, "CODE")
|
|
1172
|
-
self.
|
|
1294
|
+
self.setIdentifiable(child_element, code_desc)
|
|
1173
1295
|
self.writeArtifactDescriptor(child_element, code_desc)
|
|
1174
1296
|
|
|
1175
1297
|
def writeCodeDescriptors(self, element: ET.Element, impl: Implementation):
|
|
@@ -1194,7 +1316,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1194
1316
|
sections_tag = ET.SubElement(element, "MEMORY-SECTIONS")
|
|
1195
1317
|
for memory_section in memory_sections:
|
|
1196
1318
|
child_element = ET.SubElement(sections_tag, "MEMORY-SECTION")
|
|
1197
|
-
self.
|
|
1319
|
+
self.setIdentifiable(child_element, memory_section)
|
|
1198
1320
|
self.setChildElementOptionalLiteral(child_element, "ALIGNMENT", memory_section.alignment)
|
|
1199
1321
|
self.setMemorySectionOptions(child_element, memory_section.getOptions())
|
|
1200
1322
|
self.setChildElementOptionalNumericalValue(child_element, "SIZE", memory_section.size)
|
|
@@ -1205,11 +1327,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1205
1327
|
def setResourceConsumption(self, element: ET.Element, consumption: ResourceConsumption):
|
|
1206
1328
|
if consumption is not None:
|
|
1207
1329
|
child_element = ET.SubElement(element, "RESOURCE-CONSUMPTION")
|
|
1208
|
-
self.
|
|
1330
|
+
self.setIdentifiable(child_element, consumption)
|
|
1209
1331
|
self.writeMemorySections(child_element, consumption)
|
|
1210
1332
|
|
|
1211
1333
|
def writeImplementation(self, element: ET.Element, impl: Implementation):
|
|
1212
|
-
self.
|
|
1334
|
+
self.setIdentifiable(element, impl)
|
|
1213
1335
|
self.writeCodeDescriptors(element, impl)
|
|
1214
1336
|
self.setChildElementOptionalLiteral(element, "PROGRAMMING-LANGUAGE", impl.programming_language)
|
|
1215
1337
|
self.setResourceConsumption(element, impl.getResourceConsumption())
|
|
@@ -1272,7 +1394,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1272
1394
|
def setEndToEndProtection(self, element: ET.Element, protection: EndToEndProtection):
|
|
1273
1395
|
if protection is not None:
|
|
1274
1396
|
child_element = ET.SubElement(element, "END-TO-END-PROTECTION")
|
|
1275
|
-
self.
|
|
1397
|
+
self.setIdentifiable(child_element, protection)
|
|
1276
1398
|
self.setEndToEndDescription(child_element, "END-TO-END-PROFILE", protection.endToEndProfile)
|
|
1277
1399
|
self.writeEndToEndProtectionVariablePrototypes(child_element, protection)
|
|
1278
1400
|
|
|
@@ -1287,21 +1409,21 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1287
1409
|
def writeEndToEndProtectionSet(self, element: ET.Element, protection_set: EndToEndProtectionSet):
|
|
1288
1410
|
self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.short_name)
|
|
1289
1411
|
child_element = ET.SubElement(element, "END-TO-END-PROTECTION-SET")
|
|
1290
|
-
self.
|
|
1412
|
+
self.setIdentifiable(child_element, protection_set)
|
|
1291
1413
|
self.writeEndToEndProtections(child_element, protection_set)
|
|
1292
1414
|
|
|
1293
1415
|
def writeAutosarDataPrototype(self, element: ET.Element, prototype: AutosarDataPrototype):
|
|
1294
|
-
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.
|
|
1416
|
+
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
|
|
1295
1417
|
|
|
1296
1418
|
def writeVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
|
|
1297
1419
|
self.logger.debug("writeVariableDataPrototype %s" % prototype.short_name)
|
|
1298
1420
|
child_element = ET.SubElement(element, "VARIABLE-DATA-PROTOTYPE")
|
|
1299
|
-
self.
|
|
1300
|
-
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.
|
|
1421
|
+
self.setIdentifiable(child_element, prototype)
|
|
1422
|
+
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
|
|
1301
1423
|
self.writeAutosarDataPrototype(child_element, prototype)
|
|
1302
|
-
self.setInitValue(child_element, prototype.
|
|
1424
|
+
self.setInitValue(child_element, prototype.initValue)
|
|
1303
1425
|
|
|
1304
|
-
def
|
|
1426
|
+
def writeSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1305
1427
|
data_elements = sr_interface.getDataElements()
|
|
1306
1428
|
if len(data_elements) > 0:
|
|
1307
1429
|
data_elements_tag = ET.SubElement(element, "DATA-ELEMENTS")
|
|
@@ -1311,12 +1433,21 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1311
1433
|
else:
|
|
1312
1434
|
self._raiseError("Unsupported Data Element <%s>" % type(data_element))
|
|
1313
1435
|
|
|
1436
|
+
def writeSenderReceiverInterfaceInvalidationPolicies(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1437
|
+
policies = sr_interface.getInvalidationPolicies()
|
|
1438
|
+
if len(policies) > 0:
|
|
1439
|
+
policies_tag = ET.SubElement(element, "INVALIDATION-POLICYS")
|
|
1440
|
+
for policy in policies:
|
|
1441
|
+
child_element = ET.SubElement(policies_tag, "INVALIDATION-POLICY")
|
|
1442
|
+
self.setChildElementOptionalRefType(child_element, "DATA-ELEMENT-REF", policy.getDataElementRef())
|
|
1443
|
+
self.setChildElementOptionalLiteral(child_element, "HANDLE-INVALID", policy.getHandleInvalid())
|
|
1444
|
+
|
|
1314
1445
|
def writeSenderReceiverInterface(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1315
1446
|
self.logger.debug("writeSenderReceiverInterface %s" % sr_interface.short_name)
|
|
1316
1447
|
child_element = ET.SubElement(element, "SENDER-RECEIVER-INTERFACE")
|
|
1317
|
-
self.
|
|
1318
|
-
self.setChildElementOptionalBooleanValue(child_element, "IS-SERVICE", sr_interface.
|
|
1319
|
-
self.
|
|
1448
|
+
self.setIdentifiable(child_element, sr_interface)
|
|
1449
|
+
self.setChildElementOptionalBooleanValue(child_element, "IS-SERVICE", sr_interface.getIsService())
|
|
1450
|
+
self.writeSenderReceiverInterfaceDataElements(child_element, sr_interface)
|
|
1320
1451
|
|
|
1321
1452
|
def writerBswModuleDescriptionImplementedEntry(self, element: ET.Element, desc: BswModuleDescription):
|
|
1322
1453
|
entries = desc.getImplementedEntries()
|
|
@@ -1327,7 +1458,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1327
1458
|
self.setChildElementOptionalRefType(entry_tag, "BSW-MODULE-ENTRY-REF", entry)
|
|
1328
1459
|
|
|
1329
1460
|
def setModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
|
|
1330
|
-
self.
|
|
1461
|
+
self.setIdentifiable(element, prototype)
|
|
1331
1462
|
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.type_tref)
|
|
1332
1463
|
|
|
1333
1464
|
def writeProvidedModeGroup(self, element: ET.Element, parent: BswModuleDescription):
|
|
@@ -1346,9 +1477,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1346
1477
|
self.setChildElementOptionalRefType(child_element, "CAN-ENTER-EXCLUSIVE-AREA-REF", ref)
|
|
1347
1478
|
|
|
1348
1479
|
def setExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
|
|
1349
|
-
self.
|
|
1480
|
+
self.setIdentifiable(element, entity)
|
|
1350
1481
|
self.writeCanEnterExclusiveAreaRefs(element, entity)
|
|
1351
|
-
self.setChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL", entity.
|
|
1482
|
+
self.setChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL", entity.getMinimumStartInterval())
|
|
1483
|
+
self.setChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF", entity.getSwAddrMethodRef())
|
|
1352
1484
|
|
|
1353
1485
|
def writeBswModuleEntityManagedModeGroup(self, element: ET.Element, entity: BswModuleEntity):
|
|
1354
1486
|
mode_group_refs = entity.getManagedModeGroupRefs()
|
|
@@ -1360,7 +1492,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1360
1492
|
|
|
1361
1493
|
def setBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
|
|
1362
1494
|
self.setExecutableEntity(element, entity)
|
|
1363
|
-
self.setChildElementOptionalRefType(element, "IMPLEMENTED-ENTRY-REF", entity.
|
|
1495
|
+
self.setChildElementOptionalRefType(element, "IMPLEMENTED-ENTRY-REF", entity.implementedEntryRef)
|
|
1364
1496
|
self.writeBswModuleEntityManagedModeGroup(element, entity)
|
|
1365
1497
|
|
|
1366
1498
|
def setBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
|
|
@@ -1386,7 +1518,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1386
1518
|
self._raiseError("Unsupported BswModuleEntity <%s>" % type(entity))
|
|
1387
1519
|
|
|
1388
1520
|
def setBswEvent(self, element: ET.Element, event: BswEvent):
|
|
1389
|
-
self.
|
|
1521
|
+
self.setIdentifiable(element, event)
|
|
1390
1522
|
self.setChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF", event.startsOnEventRef)
|
|
1391
1523
|
|
|
1392
1524
|
def setBswScheduleEvent(self, element: ET.Element, event: BswScheduleEvent):
|
|
@@ -1453,7 +1585,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1453
1585
|
def writeBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
|
|
1454
1586
|
self.logger.debug("writeBswModuleDescription %s" % desc.short_name)
|
|
1455
1587
|
child_element = ET.SubElement(element, "BSW-MODULE-DESCRIPTION")
|
|
1456
|
-
self.
|
|
1588
|
+
self.setIdentifiable(child_element, desc)
|
|
1457
1589
|
self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.module_id)
|
|
1458
1590
|
self.writerBswModuleDescriptionImplementedEntry(child_element, desc)
|
|
1459
1591
|
self.writeProvidedModeGroup(child_element, desc)
|
|
@@ -1471,7 +1603,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1471
1603
|
def writeBswModuleEntry(self, element: ET.Element, entry: BswModuleEntry):
|
|
1472
1604
|
self.logger.debug("writeBswModuleDescription %s" % entry.short_name)
|
|
1473
1605
|
child_element = ET.SubElement(element, "BSW-MODULE-ENTRY")
|
|
1474
|
-
self.
|
|
1606
|
+
self.setIdentifiable(child_element, entry)
|
|
1475
1607
|
self.setChildElementOptionalNumericalValue(child_element, "SERVICE-ID", entry.service_id)
|
|
1476
1608
|
self.setChildElementOptionalBooleanValue(child_element, "IS-REENTRANT", entry.is_reentrant)
|
|
1477
1609
|
self.setChildElementOptionalBooleanValue(child_element, "IS-SYNCHRONOUS", entry.is_synchronous)
|
|
@@ -1498,7 +1630,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1498
1630
|
def setSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
|
|
1499
1631
|
self.logger.debug("writeBswModuleDescription %s" % mapping.short_name)
|
|
1500
1632
|
child_element = ET.SubElement(element, "SWC-BSW-MAPPING")
|
|
1501
|
-
self.
|
|
1633
|
+
self.setIdentifiable(child_element, mapping)
|
|
1502
1634
|
self.setChildElementOptionalRefType(child_element, "BSW-BEHAVIOR-REF", mapping.bswBehaviorRef)
|
|
1503
1635
|
self.writeSwcBswRunnableMappings(child_element, mapping)
|
|
1504
1636
|
self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.swcBehaviorRef)
|
|
@@ -1545,15 +1677,17 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1545
1677
|
sub_elements_tag = ET.SubElement(element, "SUB-ELEMENTS")
|
|
1546
1678
|
for type_element in sub_elements:
|
|
1547
1679
|
child_element = ET.SubElement(sub_elements_tag, "IMPLEMENTATION-DATA-TYPE-ELEMENT")
|
|
1548
|
-
self.
|
|
1549
|
-
self.
|
|
1680
|
+
self.setIdentifiable(child_element, type_element)
|
|
1681
|
+
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE", type_element.getArraySize())
|
|
1682
|
+
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS", type_element.getArraySizeSemantics())
|
|
1683
|
+
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", type_element.getSwDataDefProps())
|
|
1550
1684
|
|
|
1551
1685
|
def writeImplementationDataType(self, element: ET.Element, data_type: ImplementationDataType):
|
|
1552
1686
|
self.logger.debug("writeImplementationDataType %s" % data_type.short_name)
|
|
1553
1687
|
child_element = ET.SubElement(element, "IMPLEMENTATION-DATA-TYPE")
|
|
1554
1688
|
self.writeAutosarDataType(child_element, data_type)
|
|
1555
|
-
self.setChildElementOptionalLiteral(child_element, "TYPE-EMITTER", data_type.getTypeEmitter())
|
|
1556
1689
|
self.writeImplementationDataTypeElements(child_element, data_type)
|
|
1690
|
+
self.setChildElementOptionalLiteral(child_element, "TYPE-EMITTER", data_type.getTypeEmitter())
|
|
1557
1691
|
|
|
1558
1692
|
def writeArgumentDataPrototypes(self, element: ET.Element, parent: ClientServerOperation):
|
|
1559
1693
|
arguments = parent.getArgumentDataPrototypes()
|
|
@@ -1561,10 +1695,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1561
1695
|
arguments_tag = ET.SubElement(element, "ARGUMENTS")
|
|
1562
1696
|
for prototype in arguments:
|
|
1563
1697
|
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.
|
|
1698
|
+
self.setIdentifiable(child_element, prototype)
|
|
1699
|
+
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
|
|
1700
|
+
self.setChildElementOptionalRefType(child_element, "TYPE-TREF", prototype.typeTRef)
|
|
1567
1701
|
self.setChildElementOptionalLiteral(child_element, "DIRECTION", prototype.direction)
|
|
1702
|
+
self.setChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY", prototype.server_argument_impl_policy)
|
|
1568
1703
|
|
|
1569
1704
|
def writePossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
|
|
1570
1705
|
error_refs = parent.getPossbileErrorRefs()
|
|
@@ -1576,7 +1711,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1576
1711
|
def writeClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
|
|
1577
1712
|
self.logger.debug("writeClientServerOperation %s" % operation.short_name)
|
|
1578
1713
|
child_element = ET.SubElement(element, "CLIENT-SERVER-OPERATION")
|
|
1579
|
-
self.
|
|
1714
|
+
self.setIdentifiable(child_element, operation)
|
|
1580
1715
|
self.writeArgumentDataPrototypes(child_element, operation)
|
|
1581
1716
|
self.writePossibleErrorRefs(child_element, operation)
|
|
1582
1717
|
|
|
@@ -1593,7 +1728,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1593
1728
|
def writeApplicationError(self, element: ET.Element, error: ApplicationError):
|
|
1594
1729
|
self.logger.debug("writeApplicationError %s" % error.short_name)
|
|
1595
1730
|
child_element = ET.SubElement(element, "APPLICATION-ERROR")
|
|
1596
|
-
self.
|
|
1731
|
+
self.setIdentifiable(child_element, error)
|
|
1597
1732
|
self.setChildElementOptionalNumericalValue(child_element, "ERROR-CODE", error.error_code)
|
|
1598
1733
|
|
|
1599
1734
|
def writePossibleErrors(self, element: ET.Element, parent: ClientServerInterface):
|
|
@@ -1607,8 +1742,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1607
1742
|
self._raiseError("Unsupported PossibleError %s" % type(error))
|
|
1608
1743
|
|
|
1609
1744
|
def setPortInterface(self, element: ET.Element, port_interface: PortInterface):
|
|
1610
|
-
self.
|
|
1611
|
-
self.setChildElementOptionalBooleanValue(element, "IS-SERVICE", port_interface.
|
|
1745
|
+
self.setIdentifiable(element, port_interface)
|
|
1746
|
+
self.setChildElementOptionalBooleanValue(element, "IS-SERVICE", port_interface.isService)
|
|
1612
1747
|
self.setChildElementOptionalLiteral(element, "SERVICE-KIND", port_interface.serviceKind)
|
|
1613
1748
|
|
|
1614
1749
|
def writeClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
|
|
@@ -1666,7 +1801,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1666
1801
|
def writeSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
|
|
1667
1802
|
self.logger.debug("writeSwRecordLayout %s" % layout.short_name)
|
|
1668
1803
|
child_element = ET.SubElement(element, "SW-RECORD-LAYOUT")
|
|
1669
|
-
self.
|
|
1804
|
+
self.setIdentifiable(child_element, layout)
|
|
1670
1805
|
self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", layout.swRecordLayoutGroup)
|
|
1671
1806
|
|
|
1672
1807
|
def writeSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
|
|
@@ -1705,13 +1840,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1705
1840
|
def writeDataTypeMappingSet(self, element: ET.Element, mapping_set: DataTypeMappingSet):
|
|
1706
1841
|
self.logger.debug("writeDataTypeMappingSet %s" % mapping_set.short_name)
|
|
1707
1842
|
child_element = ET.SubElement(element, "DATA-TYPE-MAPPING-SET")
|
|
1708
|
-
self.
|
|
1843
|
+
self.setIdentifiable(child_element, mapping_set)
|
|
1709
1844
|
self.writeDataTypeMaps(child_element, mapping_set)
|
|
1710
1845
|
self.writeModeRequestTypeMaps(child_element, mapping_set)
|
|
1711
1846
|
|
|
1712
1847
|
def setModeDeclaration(self, element: ET.Element, mode_declaration: ModeDeclaration):
|
|
1713
1848
|
child_element = ET.SubElement(element, "MODE-DECLARATION")
|
|
1714
|
-
self.
|
|
1849
|
+
self.setIdentifiable(child_element, mode_declaration)
|
|
1715
1850
|
self.setChildElementOptionalNumericalValue(child_element, "VALUE", mode_declaration.getValue())
|
|
1716
1851
|
|
|
1717
1852
|
def writeModeDeclarationGroupModeDeclaration(self, element: ET.Element, parent: ModeDeclarationGroup):
|
|
@@ -1724,7 +1859,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1724
1859
|
def writeModeDeclarationGroup(self, element: ET.Element, group: ModeDeclarationGroup):
|
|
1725
1860
|
self.logger.debug("writeModeDeclarationGroup %s" % group.short_name)
|
|
1726
1861
|
child_element = ET.SubElement(element, "MODE-DECLARATION-GROUP")
|
|
1727
|
-
self.
|
|
1862
|
+
self.setIdentifiable(child_element, group)
|
|
1728
1863
|
self.setChildElementOptionalRefType(child_element, "INITIAL-MODE-REF", group._initial_mode_ref)
|
|
1729
1864
|
self.writeModeDeclarationGroupModeDeclaration(child_element, group)
|
|
1730
1865
|
self.setChildElementOptionalNumericalValue(child_element, "ON-TRANSITION-VALUE", group.getOnTransitionValue())
|
|
@@ -1734,7 +1869,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1734
1869
|
if len(mode_groups) > 0:
|
|
1735
1870
|
mode_group = mode_groups[0]
|
|
1736
1871
|
child_element = ET.SubElement(element, "MODE-GROUP")
|
|
1737
|
-
self.
|
|
1872
|
+
self.setIdentifiable(child_element, mode_group)
|
|
1738
1873
|
self.setChildElementOptionalRefType(child_element, "TYPE-TREF", mode_group.type_tref)
|
|
1739
1874
|
|
|
1740
1875
|
def writeModeSwitchInterface(self, element: ET.Element, mode_interface: ModeSwitchInterface):
|
|
@@ -1751,7 +1886,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1751
1886
|
|
|
1752
1887
|
def writeEOCExecutableEntityRef(self, element: ET.Element, entity_ref: EOCExecutableEntityRef):
|
|
1753
1888
|
child_element = ET.SubElement(element, "EOC-EXECUTABLE-ENTITY-REF")
|
|
1754
|
-
self.
|
|
1889
|
+
self.setIdentifiable(child_element, entity_ref)
|
|
1755
1890
|
self.setEOCExecutableEntityRefSuccessorRefs(child_element, entity_ref.getSuccessorRefs())
|
|
1756
1891
|
|
|
1757
1892
|
def writeExecutionOrderConstraintOrderedElement(self, element: ET.Element, constraint: ExecutionOrderConstraint):
|
|
@@ -1767,7 +1902,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1767
1902
|
def writeExecutionOrderConstraint(self, element: ET.Element, constraint: ExecutionOrderConstraint):
|
|
1768
1903
|
self.logger.debug("writeExecutionOrderConstraint %s" % constraint.short_name)
|
|
1769
1904
|
child_element = ET.SubElement(element, "EXECUTION-ORDER-CONSTRAINT")
|
|
1770
|
-
self.
|
|
1905
|
+
self.setIdentifiable(child_element, constraint)
|
|
1771
1906
|
self.writeExecutionOrderConstraintOrderedElement(child_element, constraint)
|
|
1772
1907
|
|
|
1773
1908
|
def writeTimingRequirements(self, element: ET.Element, extension: TimingExtension):
|
|
@@ -1786,7 +1921,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1786
1921
|
def writeSwcTiming(self, element: ET.Element, timing: SwcTiming):
|
|
1787
1922
|
self.logger.debug("writeSWcTiming %s" % timing.short_name)
|
|
1788
1923
|
child_element = ET.SubElement(element, "SWC-TIMING")
|
|
1789
|
-
self.
|
|
1924
|
+
self.setIdentifiable(child_element, timing)
|
|
1790
1925
|
self.writeTimingExtension(child_element, timing)
|
|
1791
1926
|
|
|
1792
1927
|
def writePduToFrameMappings(self, element: ET.Element, parent: Frame):
|
|
@@ -1795,13 +1930,13 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1795
1930
|
mappings_tags = ET.SubElement(element, "PDU-TO-FRAME-MAPPINGS")
|
|
1796
1931
|
for mapping in mappings:
|
|
1797
1932
|
child_element = ET.SubElement(mappings_tags, "PDU-TO-FRAME-MAPPING")
|
|
1798
|
-
self.
|
|
1933
|
+
self.setIdentifiable(child_element, mapping)
|
|
1799
1934
|
self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.packingByteOrder)
|
|
1800
1935
|
self.setChildElementOptionalRefType(child_element, "PDU-REF", mapping.pduRef)
|
|
1801
1936
|
self.setChildElementOptionalNumericalValue(child_element, "START-POSITION", mapping.startPosition)
|
|
1802
1937
|
|
|
1803
1938
|
def writeFrame(self, element: ET.Element, frame: Frame):
|
|
1804
|
-
self.
|
|
1939
|
+
self.setIdentifiable(element, frame)
|
|
1805
1940
|
self.setChildElementOptionalNumericalValue(element, "FRAME-LENGTH", frame.frameLength)
|
|
1806
1941
|
self.writePduToFrameMappings(element, frame)
|
|
1807
1942
|
|
|
@@ -1810,41 +1945,376 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1810
1945
|
child_element = ET.SubElement(element, "LIN-UNCONDITIONAL-FRAME")
|
|
1811
1946
|
self.writeFrame(child_element, frame)
|
|
1812
1947
|
|
|
1948
|
+
def writeNmNode(self, element: ET.Element, nm_node: NmNode):
|
|
1949
|
+
self.setChildElementOptionalRefType(element, "CONTROLLER-REF", nm_node.getControllerRef())
|
|
1950
|
+
self.setChildElementOptionalRefType(element, "NM-IF-ECU-REF", nm_node.getNmIfEcuRef())
|
|
1951
|
+
self.setChildElementOptionalNumericalValue(element, "NM-NODE-ID", nm_node.getNmNodeId())
|
|
1952
|
+
|
|
1953
|
+
refs = nm_node.getRxNmPduRefs()
|
|
1954
|
+
if len(refs) > 0:
|
|
1955
|
+
refs_tag = ET.SubElement(element, "RX-NM-PDU-REFS")
|
|
1956
|
+
for ref in refs:
|
|
1957
|
+
self.setChildElementOptionalRefType(refs_tag, "RX-NM-PDU-REF", ref)
|
|
1958
|
+
|
|
1959
|
+
refs = nm_node.getTxNmPduRefs()
|
|
1960
|
+
if len(refs) > 0:
|
|
1961
|
+
refs_tag = ET.SubElement(element, "TX-NM-PDU-REFS")
|
|
1962
|
+
for ref in refs:
|
|
1963
|
+
self.setChildElementOptionalRefType(refs_tag, "TX-NM-PDU-REF", ref)
|
|
1964
|
+
|
|
1965
|
+
def writeCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
|
|
1966
|
+
self.logger.debug("writeCanNmNode %s" % nm_node.short_name)
|
|
1967
|
+
child_element = ET.SubElement(element, "CAN-NM-NODE")
|
|
1968
|
+
self.setIdentifiable(child_element, nm_node)
|
|
1969
|
+
self.writeNmNode(child_element, nm_node)
|
|
1970
|
+
|
|
1971
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-CYCLE-OFFSET", nm_node.getNmMsgCycleOffset())
|
|
1972
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-REDUCED-TIME", nm_node.getNmMsgReducedTime())
|
|
1973
|
+
self.setChildElementRxIdentifierRange(child_element, "NM-RANGE-CONFIG", nm_node.getNmRangeConfig())
|
|
1974
|
+
|
|
1975
|
+
def writeNmClusterNmNodes(self, element: ET.Element, parent: NmCluster):
|
|
1976
|
+
nodes = parent.getNmNodes()
|
|
1977
|
+
if len(nodes) > 0:
|
|
1978
|
+
child_element = ET.SubElement(element, "NM-NODES")
|
|
1979
|
+
for node in nodes:
|
|
1980
|
+
if isinstance(node, CanNmNode):
|
|
1981
|
+
self.writeCanNmNode(child_element, node)
|
|
1982
|
+
else:
|
|
1983
|
+
self._raiseError("Unsupported Nm Node <%s>" % type(node))
|
|
1984
|
+
|
|
1985
|
+
def setCanNmClusterCoupling(self, element: ET.Element, coupling: CanNmClusterCoupling):
|
|
1986
|
+
child_element = ET.SubElement(element, "CAN-NM-CLUSTER-COUPLING")
|
|
1987
|
+
refs = coupling.getCoupledClusterRefs()
|
|
1988
|
+
if len(refs) > 0:
|
|
1989
|
+
refs_tag = ET.SubElement(child_element, "COUPLED-CLUSTER-REFS")
|
|
1990
|
+
for ref in refs:
|
|
1991
|
+
self.setChildElementOptionalRefType(refs_tag, "COUPLED-CLUSTER-REF", ref)
|
|
1992
|
+
|
|
1993
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ENABLED", coupling.getNmBusloadReductionEnabled())
|
|
1994
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-IMMEDIATE-RESTART-ENABLED", coupling.getNmImmediateRestartEnabled())
|
|
1995
|
+
|
|
1996
|
+
def writeNmConfigNmClusterCouplings(self, element: ET.Element, config: NmConfig):
|
|
1997
|
+
self.logger.debug("writeNmConfigNmClusterCouplings %s" % config.getShortName())
|
|
1998
|
+
couplings = config.getNmClusterCouplings()
|
|
1999
|
+
if len(couplings) > 0:
|
|
2000
|
+
child_element= ET.SubElement(element, "NM-CLUSTER-COUPLINGS")
|
|
2001
|
+
for coupling in couplings:
|
|
2002
|
+
if isinstance(coupling, CanNmClusterCoupling):
|
|
2003
|
+
self.setCanNmClusterCoupling(child_element, coupling)
|
|
2004
|
+
else:
|
|
2005
|
+
self._raiseError("Unsupported Nm Cluster Coupling <%s>" % type(coupling))
|
|
2006
|
+
|
|
2007
|
+
def writeNmCluster(self, element: ET.Element, cluster: NmCluster):
|
|
2008
|
+
self.setChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF", cluster.communicationClusterRef)
|
|
2009
|
+
self.setChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID", cluster.nmChannelId)
|
|
2010
|
+
self.setChildElementOptionalBooleanValue(element, "NM-CHANNEL-SLEEP-MASTER", cluster.nmChannelSleepMaster)
|
|
2011
|
+
self.writeNmClusterNmNodes(element, cluster)
|
|
2012
|
+
self.setChildElementOptionalBooleanValue(element, "NM-SYNCHRONIZING-NETWORK", cluster.getNmSynchronizingNetwork())
|
|
2013
|
+
|
|
2014
|
+
def writeCanNmCluster(self, element: ET.Element, cluster: CanNmCluster):
|
|
2015
|
+
self.logger.debug("WriteCanNmCluster %s" % cluster.short_name)
|
|
2016
|
+
child_element = ET.SubElement(element, "CAN-NM-CLUSTER")
|
|
2017
|
+
self.setIdentifiable(child_element, cluster)
|
|
2018
|
+
self.writeNmCluster(child_element, cluster)
|
|
2019
|
+
|
|
2020
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ACTIVE", cluster.getNmBusloadReductionActive())
|
|
2021
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-CAR-WAKE-UP-RX-ENABLED", cluster.getNmCarWakeUpRxEnabled())
|
|
2022
|
+
self.setChildElementOptionalNumericalValue(child_element, "NM-CBV-POSITION", cluster.getNmCbvPosition())
|
|
2023
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-CHANNEL-ACTIVE", cluster.getNmChannelActive())
|
|
2024
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-IMMEDIATE-NM-CYCLE-TIME", cluster.getNmImmediateNmCycleTime())
|
|
2025
|
+
self.setChildElementOptionalNumericalValue(child_element, "NM-IMMEDIATE-NM-TRANSMISSIONS", cluster.getNmImmediateNmTransmissions())
|
|
2026
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-MESSAGE-TIMEOUT-TIME", cluster.getNmMessageTimeoutTime())
|
|
2027
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-CYCLE-TIME", cluster.getNmMsgCycleTime())
|
|
2028
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-NETWORK-TIMEOUT", cluster.getNmNetworkTimeout())
|
|
2029
|
+
self.setChildElementOptionalNumericalValue(child_element, "NM-NID-POSITION", cluster.getNmNidPosition())
|
|
2030
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-REMOTE-SLEEP-INDICATION-TIME", cluster.getNmRemoteSleepIndicationTime())
|
|
2031
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-REPEAT-MESSAGE-TIME", cluster.getNmRepeatMessageTime())
|
|
2032
|
+
self.setChildElementOptionalNumericalValue(child_element, "NM-USER-DATA-LENGTH", cluster.getNmUserDataLength())
|
|
2033
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-WAIT-BUS-SLEEP-TIME", cluster.getNmWaitBusSleepTime())
|
|
2034
|
+
|
|
2035
|
+
def writeNmConfigNmClusters(self, element: ET.Element, parent: NmConfig):
|
|
2036
|
+
clusters = parent.getNmClusters()
|
|
2037
|
+
if len(clusters) > 0:
|
|
2038
|
+
child_element = ET.SubElement(element, "NM-CLUSTERS")
|
|
2039
|
+
for cluster in clusters:
|
|
2040
|
+
if isinstance(cluster, CanNmCluster):
|
|
2041
|
+
self.writeCanNmCluster(child_element, cluster)
|
|
2042
|
+
else:
|
|
2043
|
+
self._raiseError("Unsupported Nm Cluster <%s>" % type(cluster))
|
|
2044
|
+
|
|
1813
2045
|
def writeNmConfig(self, element: ET.Element, config: NmConfig):
|
|
1814
|
-
self.logger.debug("
|
|
2046
|
+
self.logger.debug("WriteNmConfig %s" % config.short_name)
|
|
1815
2047
|
child_element = ET.SubElement(element, "NM-CONFIG")
|
|
1816
|
-
self.
|
|
2048
|
+
self.setIdentifiable(child_element, config)
|
|
2049
|
+
self.writeNmConfigNmClusters(child_element, config)
|
|
2050
|
+
self.writeNmConfigNmClusterCouplings(child_element, config)
|
|
1817
2051
|
|
|
1818
2052
|
def writeNmPdu(self, element: ET.Element, pdu: NmPdu):
|
|
1819
2053
|
self.logger.debug("NmPdu %s" % pdu.short_name)
|
|
1820
2054
|
child_element = ET.SubElement(element, "NM-PDU")
|
|
1821
|
-
self.
|
|
2055
|
+
self.setIdentifiable(child_element, pdu)
|
|
2056
|
+
self.writeIPdu(child_element, pdu)
|
|
1822
2057
|
|
|
1823
2058
|
def writeNPdu(self, element: ET.Element, pdu: NPdu):
|
|
1824
2059
|
self.logger.debug("NPdu %s" % pdu.short_name)
|
|
1825
2060
|
child_element = ET.SubElement(element, "N-PDU")
|
|
1826
|
-
self.
|
|
2061
|
+
self.setIdentifiable(child_element, pdu)
|
|
2062
|
+
self.writeIPdu(child_element, pdu)
|
|
2063
|
+
|
|
2064
|
+
def writeIPdu(self, element: ET.Element, pdu: IPdu):
|
|
2065
|
+
self.setChildElementOptionalLiteral(element, "LENGTH", pdu.getLength())
|
|
1827
2066
|
|
|
1828
2067
|
def writeDcmIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
1829
2068
|
self.logger.debug("DcmIPdu %s" % pdu.short_name)
|
|
1830
2069
|
child_element = ET.SubElement(element, "DCM-I-PDU")
|
|
1831
|
-
self.
|
|
2070
|
+
self.setIdentifiable(child_element, pdu)
|
|
2071
|
+
self.writeIPdu(child_element, pdu)
|
|
2072
|
+
self.setChildElementOptionalLiteral(child_element, "DIAG-PDU-TYPE", pdu.getDiagPduType())
|
|
2073
|
+
|
|
2074
|
+
def writeSecuredIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
2075
|
+
self.logger.debug("SecuredIPdu %s" % pdu.short_name)
|
|
2076
|
+
child_element = ET.SubElement(element, "SECURED-I-PDU")
|
|
2077
|
+
self.setIdentifiable(child_element, pdu)
|
|
2078
|
+
self.writeIPdu(child_element, pdu)
|
|
1832
2079
|
|
|
1833
2080
|
def writeCanTpConfig(self, element: ET.Element, config: CanTpConfig):
|
|
1834
2081
|
self.logger.debug("CanTpConfig %s" % config.short_name)
|
|
1835
2082
|
child_element = ET.SubElement(element, "CAN-TP-CONFIG")
|
|
1836
|
-
self.
|
|
2083
|
+
self.setIdentifiable(child_element, config)
|
|
2084
|
+
|
|
2085
|
+
def writeFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
|
|
2086
|
+
ref_list = triggering.getFramePortRefs()
|
|
2087
|
+
if len(ref_list) > 0:
|
|
2088
|
+
frame_port_refs_tag = ET.SubElement(element, "FRAME-PORT-REFS")
|
|
2089
|
+
for ref in ref_list:
|
|
2090
|
+
self.setChildElementOptionalRefType(frame_port_refs_tag, "FRAME-PORT-REF", ref)
|
|
2091
|
+
self.setChildElementOptionalRefType(element, "FRAME-REF", triggering.getFrameRef())
|
|
2092
|
+
|
|
2093
|
+
refs = triggering.getPduTriggeringRefs()
|
|
2094
|
+
if len(refs) > 0:
|
|
2095
|
+
triggerings_tag = ET.SubElement(element, "PDU-TRIGGERINGS")
|
|
2096
|
+
for ref in refs:
|
|
2097
|
+
child_element = ET.SubElement(triggerings_tag, 'PDU-TRIGGERING-REF-CONDITIONAL')
|
|
2098
|
+
self.setChildElementOptionalRefType(child_element, "PDU-TRIGGERING-REF", ref)
|
|
2099
|
+
|
|
2100
|
+
def writeCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
|
|
2101
|
+
self.logger.debug("WRite CanFrameTriggering %s" % triggering.getShortName())
|
|
2102
|
+
child_element = ET.SubElement(element, "CAN-FRAME-TRIGGERING")
|
|
2103
|
+
self.setIdentifiable(child_element, triggering)
|
|
2104
|
+
self.writeFrameTriggering(child_element, triggering)
|
|
2105
|
+
self.setChildElementOptionalLiteral(child_element, "CAN-ADDRESSING-MODE", triggering.getCanAddressingMode())
|
|
2106
|
+
self.setChildElementOptionalBooleanValue(child_element, "CAN-FD-FRAME-SUPPORT", triggering.getCanFdFrameSupport())
|
|
2107
|
+
self.setChildElementOptionalLiteral(child_element, "CAN-FRAME-RX-BEHAVIOR", triggering.getCanFrameRxBehavior())
|
|
2108
|
+
self.setChildElementOptionalLiteral(child_element, "CAN-FRAME-TX-BEHAVIOR", triggering.getCanFrameTxBehavior())
|
|
2109
|
+
self.setChildElementOptionalNumericalValue(child_element, "IDENTIFIER", triggering.getIdentifier())
|
|
2110
|
+
self.setChildElementRxIdentifierRange(child_element, "RX-IDENTIFIER-RANGE", triggering.getRxIdentifierRange())
|
|
2111
|
+
|
|
2112
|
+
def writeLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
|
|
2113
|
+
self.logger.debug("Write LinFrameTriggering %s" % triggering.getShortName())
|
|
2114
|
+
child_element = ET.SubElement(element, "LIN-FRAME-TRIGGERING")
|
|
2115
|
+
self.setIdentifiable(child_element, triggering)
|
|
2116
|
+
self.writeFrameTriggering(child_element, triggering)
|
|
2117
|
+
self.setChildElementOptionalNumericalValue(child_element, "IDENTIFIER", triggering.getIdentifier())
|
|
2118
|
+
self.setChildElementOptionalLiteral(child_element, "LIN-CHECKSUM", triggering.getLinChecksum())
|
|
2119
|
+
|
|
2120
|
+
def writeISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
|
|
2121
|
+
self.logger.debug("Write ISignalTriggering %s" % triggering.getShortName())
|
|
2122
|
+
child_element = ET.SubElement(element, "I-SIGNAL-TRIGGERING")
|
|
2123
|
+
self.setIdentifiable(child_element, triggering)
|
|
2124
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", triggering.getISignalGroupRef())
|
|
2125
|
+
ref_list = triggering.getISignalPortRefs()
|
|
2126
|
+
if len(ref_list) > 0:
|
|
2127
|
+
i_signal_port_refs_tag = ET.SubElement(child_element, "I-SIGNAL-PORT-REFS")
|
|
2128
|
+
for ref in ref_list:
|
|
2129
|
+
self.setChildElementOptionalRefType(i_signal_port_refs_tag, "I-SIGNAL-PORT-REF", ref)
|
|
2130
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-REF", triggering.getISignalRef())
|
|
2131
|
+
|
|
2132
|
+
def writePduTriggering(self, element: ET.Element, triggering: PduTriggering):
|
|
2133
|
+
self.logger.debug("Write PduTriggering %s" % triggering.getShortName())
|
|
2134
|
+
child_element = ET.SubElement(element, "PDU-TRIGGERING")
|
|
2135
|
+
self.setIdentifiable(child_element, triggering)
|
|
2136
|
+
ref_list = triggering.getIPduPortRefs()
|
|
2137
|
+
if len(ref_list) > 0:
|
|
2138
|
+
i_signal_port_refs_tag = ET.SubElement(child_element, "I-PDU-PORT-REFS")
|
|
2139
|
+
for ref in ref_list:
|
|
2140
|
+
self.setChildElementOptionalRefType(i_signal_port_refs_tag, "I-PDU-PORT-REF", ref)
|
|
2141
|
+
self.setChildElementOptionalRefType(child_element, "I-PDU-REF", triggering.getIPduRef())
|
|
2142
|
+
|
|
2143
|
+
refs = triggering.getISignalTriggeringRefs()
|
|
2144
|
+
if len(refs) > 0:
|
|
2145
|
+
triggerings_tag = ET.SubElement(child_element, "I-SIGNAL-TRIGGERINGS")
|
|
2146
|
+
for ref in refs:
|
|
2147
|
+
child_element = ET.SubElement(triggerings_tag, 'I-SIGNAL-TRIGGERING-REF-CONDITIONAL')
|
|
2148
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-TRIGGERING-REF", ref)
|
|
2149
|
+
|
|
2150
|
+
def writePhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
|
|
2151
|
+
connectors = channel.getCommConnectorRefs()
|
|
2152
|
+
if len(connectors) > 0:
|
|
2153
|
+
connectors_tag = ET.SubElement(element, "COMM-CONNECTORS")
|
|
2154
|
+
for connector in connectors:
|
|
2155
|
+
child_element = ET.SubElement(connectors_tag, 'COMMUNICATION-CONNECTOR-REF-CONDITIONAL')
|
|
2156
|
+
self.setChildElementOptionalRefType(child_element, "COMMUNICATION-CONNECTOR-REF", connector)
|
|
2157
|
+
|
|
2158
|
+
triggerings = channel.getFrameTriggerings()
|
|
2159
|
+
if len(triggerings) > 0:
|
|
2160
|
+
triggerings_tag = ET.SubElement(element, "FRAME-TRIGGERINGS")
|
|
2161
|
+
for triggering in triggerings:
|
|
2162
|
+
if isinstance(triggering, CanFrameTriggering):
|
|
2163
|
+
self.writeCanFrameTriggering(triggerings_tag, triggering)
|
|
2164
|
+
elif isinstance(triggering, LinFrameTriggering):
|
|
2165
|
+
self.writeLinFrameTriggering(triggerings_tag, triggering)
|
|
2166
|
+
else:
|
|
2167
|
+
raise NotImplementedError("Unsupported Frame Triggering <%s>" % type(triggering))
|
|
2168
|
+
|
|
2169
|
+
triggerings = channel.getISignalTriggerings()
|
|
2170
|
+
if len(triggerings) > 0:
|
|
2171
|
+
triggerings_tag = ET.SubElement(element, "I-SIGNAL-TRIGGERINGS")
|
|
2172
|
+
for triggering in triggerings:
|
|
2173
|
+
if isinstance(triggering, ISignalTriggering):
|
|
2174
|
+
self.writeISignalTriggering(triggerings_tag, triggering)
|
|
2175
|
+
else:
|
|
2176
|
+
raise NotImplementedError("Unsupported ISignalTriggering <%s>" % type(triggering))
|
|
2177
|
+
|
|
2178
|
+
triggerings = channel.getPduTriggerings()
|
|
2179
|
+
if len(triggerings) > 0:
|
|
2180
|
+
triggerings_tag = ET.SubElement(element, "PDU-TRIGGERINGS")
|
|
2181
|
+
for triggering in triggerings:
|
|
2182
|
+
if isinstance(triggering, PduTriggering):
|
|
2183
|
+
self.writePduTriggering(triggerings_tag, triggering)
|
|
2184
|
+
else:
|
|
2185
|
+
raise NotImplementedError("Unsupported PduTriggering <%s>" % type(triggering))
|
|
2186
|
+
|
|
2187
|
+
def writeCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
|
|
2188
|
+
self.logger.debug("CanPhysicalChannel %s" % channel.short_name)
|
|
2189
|
+
child_element = ET.SubElement(element, "CAN-PHYSICAL-CHANNEL")
|
|
2190
|
+
self.setIdentifiable(child_element, channel)
|
|
2191
|
+
self.writePhysicalChannel(child_element, channel)
|
|
2192
|
+
|
|
2193
|
+
def writeLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2194
|
+
self.logger.debug("LinPhysicalChannel %s" % channel.short_name)
|
|
2195
|
+
child_element = ET.SubElement(element, "LIN-PHYSICAL-CHANNEL")
|
|
2196
|
+
self.setIdentifiable(child_element, channel)
|
|
2197
|
+
self.writePhysicalChannel(child_element, channel)
|
|
2198
|
+
|
|
2199
|
+
def writeCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2200
|
+
channels = cluster.getPhysicalChannels()
|
|
2201
|
+
if len(channels) > 0:
|
|
2202
|
+
child_element = ET.SubElement(element, "PHYSICAL-CHANNELS")
|
|
2203
|
+
for channel in channels:
|
|
2204
|
+
if isinstance(channel, CanPhysicalChannel):
|
|
2205
|
+
self.writeCanPhysicalChannel(child_element, channel)
|
|
2206
|
+
elif isinstance(channel, LinPhysicalChannel):
|
|
2207
|
+
self.writeLinPhysicalChannel(child_element, channel)
|
|
2208
|
+
else:
|
|
2209
|
+
raise NotImplementedError("Unsupported Physical Channel <%s>" % type(channel))
|
|
2210
|
+
|
|
2211
|
+
def writeCommunicationCluster(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2212
|
+
self.setChildElementOptionalNumericalValue(element, "BAUDRATE", cluster.getBaudrate())
|
|
2213
|
+
self.writeCommunicationClusterPhysicalChannels(element, cluster)
|
|
2214
|
+
self.setChildElementOptionalLiteral(element, "PROTOCOL-NAME", cluster.getProtocolName())
|
|
2215
|
+
self.setChildElementOptionalLiteral(element, "PROTOCOL-VERSION", cluster.getProtocolVersion())
|
|
2216
|
+
|
|
2217
|
+
def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
|
|
2218
|
+
self.setChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE", cluster.getCanFdBaudrate())
|
|
1837
2219
|
|
|
1838
2220
|
def writeLinCluster(self, element: ET.Element, cluster: LinCluster):
|
|
1839
2221
|
self.logger.debug("LinCluster %s" % cluster.short_name)
|
|
1840
2222
|
child_element = ET.SubElement(element, "LIN-CLUSTER")
|
|
1841
|
-
self.
|
|
2223
|
+
self.setIdentifiable(child_element, cluster)
|
|
2224
|
+
child_element = ET.SubElement(child_element, "LIN-CLUSTER-VARIANTS")
|
|
2225
|
+
child_element = ET.SubElement(child_element, "LIN-CLUSTER-CONDITIONAL")
|
|
2226
|
+
self.writeCommunicationCluster(child_element, cluster)
|
|
2227
|
+
|
|
2228
|
+
def writeCanCluster(self, element: ET.Element, cluster: CanCluster):
|
|
2229
|
+
self.logger.debug("CanCluster %s" % cluster.short_name)
|
|
2230
|
+
child_element = ET.SubElement(element, "CAN-CLUSTER")
|
|
2231
|
+
self.setIdentifiable(child_element, cluster)
|
|
2232
|
+
|
|
2233
|
+
child_element = ET.SubElement(child_element, "CAN-CLUSTER-VARIANTS")
|
|
2234
|
+
child_element = ET.SubElement(child_element, "CAN-CLUSTER-CONDITIONAL")
|
|
2235
|
+
self.writeCommunicationCluster(child_element, cluster)
|
|
2236
|
+
self.readAbstractCanCluster(child_element, cluster)
|
|
1842
2237
|
|
|
1843
2238
|
def writeCanFrame(self, element: ET.Element, frame: CanFrame):
|
|
1844
2239
|
self.logger.debug("CanFrame %s" % frame.short_name)
|
|
1845
2240
|
child_element = ET.SubElement(element, "CAN-FRAME")
|
|
1846
2241
|
self.writeFrame(child_element, frame)
|
|
1847
2242
|
|
|
2243
|
+
def writeEcuInstance(self, element: ET.Element, instance: EcuInstance):
|
|
2244
|
+
self.logger.debug("EcuInstance %s" % instance.short_name)
|
|
2245
|
+
child_element = ET.SubElement(element, "ECU-INSTANCE")
|
|
2246
|
+
self.setIdentifiable(child_element, instance)
|
|
2247
|
+
|
|
2248
|
+
def writeSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
|
|
2249
|
+
self.logger.debug("Write SystemSignalGroup %s" % group.short_name)
|
|
2250
|
+
child_element = ET.SubElement(element, "SYSTEM-SIGNAL-GROUP")
|
|
2251
|
+
self.setIdentifiable(child_element, group)
|
|
2252
|
+
signal_refs = group.getSystemSignalRefs()
|
|
2253
|
+
if len(signal_refs) > 0:
|
|
2254
|
+
signal_refs_tag = ET.SubElement(child_element, "SYSTEM-SIGNAL-REFS")
|
|
2255
|
+
for signal_ref in signal_refs:
|
|
2256
|
+
self.setChildElementOptionalRefType(signal_refs_tag, "SYSTEM-SIGNAL-REF", signal_ref)
|
|
2257
|
+
|
|
2258
|
+
def setSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
|
|
2259
|
+
child_element = ET.SubElement(element, "SENDER-RECEIVER-TO-SIGNAL-MAPPING")
|
|
2260
|
+
self.setVariableDataPrototypeInSystemInstanceRef(child_element, "DATA-ELEMENT-IREF", mapping.getDataElementIRef())
|
|
2261
|
+
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", mapping.getSystemSignalRef())
|
|
2262
|
+
|
|
2263
|
+
def setSenderReceiverToSignalGroupMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
|
|
2264
|
+
child_element = ET.SubElement(element, "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING")
|
|
2265
|
+
self.setVariableDataPrototypeInSystemInstanceRef(child_element, "DATA-ELEMENT-IREF", mapping.getDataElementIRef())
|
|
2266
|
+
self.setChildElementOptionalRefType(child_element, "SIGNAL-GROUP-REF", mapping.getSignalGroupRef())
|
|
2267
|
+
|
|
2268
|
+
def writeSystemMappingDataMappings(self, element: ET.Element, system_mapping: SystemMapping):
|
|
2269
|
+
data_mappings = system_mapping.getDataMappings()
|
|
2270
|
+
if len(data_mappings) > 0:
|
|
2271
|
+
child_element = ET.SubElement(element, "DATA-MAPPINGS")
|
|
2272
|
+
for data_mapping in data_mappings:
|
|
2273
|
+
if isinstance(data_mapping, SenderReceiverToSignalMapping):
|
|
2274
|
+
self.setSenderReceiverToSignalMapping(child_element, data_mapping)
|
|
2275
|
+
elif isinstance(data_mapping, SenderReceiverToSignalGroupMapping):
|
|
2276
|
+
self.setSenderReceiverToSignalGroupMapping(child_element, data_mapping)
|
|
2277
|
+
else:
|
|
2278
|
+
raise NotImplementedError("Unsupported Data Mapping %s" % type(data_mapping))
|
|
2279
|
+
|
|
2280
|
+
def writeSystemMapping(self, element: ET.Element, mapping: SystemMapping):
|
|
2281
|
+
self.logger.debug("Write SystemMapping %s" % mapping.short_name)
|
|
2282
|
+
child_element = ET.SubElement(element, "SYSTEM-MAPPING")
|
|
2283
|
+
self.setIdentifiable(child_element, mapping)
|
|
2284
|
+
self.writeSystemMappingDataMappings(child_element, mapping)
|
|
2285
|
+
|
|
2286
|
+
def writeSystemMappings(self, element: ET.Element, system: System):
|
|
2287
|
+
mappings = system.getMappings()
|
|
2288
|
+
if len(mappings) > 0:
|
|
2289
|
+
mappings_tag = ET.SubElement(element, "MAPPINGS")
|
|
2290
|
+
for mapping in mappings:
|
|
2291
|
+
if isinstance(mapping, SystemMapping):
|
|
2292
|
+
self.writeSystemMapping(mappings_tag, mapping)
|
|
2293
|
+
else:
|
|
2294
|
+
raise NotImplementedError("Unsupported Mapping %s" % type(mapping))
|
|
2295
|
+
|
|
2296
|
+
def writeSystem(self, element: ET.Element, system: System):
|
|
2297
|
+
self.logger.debug("Write System %s" % system.short_name)
|
|
2298
|
+
child_element = ET.SubElement(element, "SYSTEM")
|
|
2299
|
+
self.setARElement(child_element, system)
|
|
2300
|
+
|
|
2301
|
+
self.setChildElementOptionalLiteral(child_element, "ECU-EXTRACT-VERSION", system.getEcuExtractVersion())
|
|
2302
|
+
refs = system.getFibexElementRefs()
|
|
2303
|
+
if len(refs) > 0:
|
|
2304
|
+
fibex_elements_tag = ET.SubElement(child_element, "FIBEX-ELEMENTS")
|
|
2305
|
+
for ref in refs:
|
|
2306
|
+
fibex_element_ref_conditional_tag = ET.SubElement(fibex_elements_tag, "FIBEX-ELEMENT-REF-CONDITIONAL")
|
|
2307
|
+
self.setChildElementOptionalRefType(fibex_element_ref_conditional_tag, "FIBEX-ELEMENT-REF", ref)
|
|
2308
|
+
|
|
2309
|
+
self.writeSystemMappings(child_element, system)
|
|
2310
|
+
|
|
2311
|
+
def writePhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
|
|
2312
|
+
self.logger.debug("Write PhysicalDimension %s" % dimension.short_name)
|
|
2313
|
+
child_element = ET.SubElement(element, "PHYSICAL-DIMENSION")
|
|
2314
|
+
self.setARElement(child_element, dimension)
|
|
2315
|
+
self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
|
|
2316
|
+
self.setChildElementOptionalNumericalValue(child_element, "LENGTH-EXP", dimension.getLengthExp())
|
|
2317
|
+
|
|
1848
2318
|
def setISignalMappings(self, element: ET.Element, mappings: List[ISignalMapping]):
|
|
1849
2319
|
if len(mappings) > 0:
|
|
1850
2320
|
mappings_tag = ET.SubElement(element, "SIGNAL-MAPPINGS")
|
|
@@ -1856,20 +2326,192 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1856
2326
|
def writeGateway(self, element: ET.Element, gateway: Gateway):
|
|
1857
2327
|
self.logger.debug("Gateway %s" % gateway.short_name)
|
|
1858
2328
|
child_element = ET.SubElement(element, "GATEWAY")
|
|
1859
|
-
self.
|
|
2329
|
+
self.setIdentifiable(child_element, gateway)
|
|
1860
2330
|
self.setChildElementOptionalRefType(child_element, "ECU-REF", gateway.ecuRef)
|
|
1861
2331
|
self.setISignalMappings(child_element, gateway.getSignalMappings())
|
|
1862
2332
|
|
|
1863
2333
|
def writeISignal(self, element: ET.Element, signal: ISignal):
|
|
1864
2334
|
self.logger.debug("ISignal %s" % signal.short_name)
|
|
1865
2335
|
child_element = ET.SubElement(element, "I-SIGNAL")
|
|
1866
|
-
self.
|
|
2336
|
+
self.setIdentifiable(child_element, signal)
|
|
1867
2337
|
self.setChildElementOptionalLiteral(child_element, "DATA-TYPE-POLICY", signal.dataTypePolicy)
|
|
1868
2338
|
self.setInitValue(child_element, signal.initValue)
|
|
1869
2339
|
self.setChildElementOptionalNumericalValue(child_element, "LENGTH", signal.length)
|
|
1870
2340
|
self.setSwDataDefProps(child_element, "NETWORK-REPRESENTATION-PROPS", signal.networkRepresentationProps)
|
|
1871
2341
|
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", signal.systemSignalRef)
|
|
1872
2342
|
|
|
2343
|
+
def writeEcucValueCollectionEcucValues(self, element: ET.Element, collection: EcucValueCollection):
|
|
2344
|
+
value_refs = collection.getEcucValueRefs()
|
|
2345
|
+
if len(value_refs) > 0:
|
|
2346
|
+
ecuc_values_tag = ET.SubElement(element, "ECUC-VALUES")
|
|
2347
|
+
for value_ref in value_refs:
|
|
2348
|
+
child_element = ET.SubElement(ecuc_values_tag, "ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL")
|
|
2349
|
+
self.setChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF", value_ref)
|
|
2350
|
+
|
|
2351
|
+
def writeEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
|
|
2352
|
+
self.logger.debug("EcucValueCollection %s" % collection.short_name)
|
|
2353
|
+
child_element = ET.SubElement(element, "ECUC-VALUE-COLLECTION")
|
|
2354
|
+
self.setIdentifiable(child_element, collection)
|
|
2355
|
+
self.setChildElementOptionalRefType(child_element, "ECU-EXTRACT-REF", collection.getEcuExtractRef())
|
|
2356
|
+
self.writeEcucValueCollectionEcucValues(child_element, collection)
|
|
2357
|
+
|
|
2358
|
+
def writeEcucContainerValueSubContainers(self, element: ET.Element, container: EcucContainerValue):
|
|
2359
|
+
sub_containers = container.getSubContainers()
|
|
2360
|
+
if len(sub_containers) > 0:
|
|
2361
|
+
sub_containers_tag = ET.SubElement(element, "SUB-CONTAINERS")
|
|
2362
|
+
for sub_container in sub_containers:
|
|
2363
|
+
if isinstance(sub_container, EcucContainerValue):
|
|
2364
|
+
self.writeEcucContainValue(sub_containers_tag, sub_container)
|
|
2365
|
+
else:
|
|
2366
|
+
raise NotImplementedError("Unsupported Sub Container %s" % type(container))
|
|
2367
|
+
|
|
2368
|
+
def writeEcucParameterValue(self, element: ET.Element, param_value: EcucParameterValue):
|
|
2369
|
+
self.setChildElementOptionalRefType(element, "DEFINITION-REF", param_value.getDefinitionRef())
|
|
2370
|
+
self.setAnnotations(element, param_value.getAnnotations())
|
|
2371
|
+
|
|
2372
|
+
def setEcucTextualParamValue(self, element: ET.Element, param_value: EcucTextualParamValue):
|
|
2373
|
+
child_element = ET.SubElement(element, "ECUC-TEXTUAL-PARAM-VALUE")
|
|
2374
|
+
self.writeEcucParameterValue(child_element, param_value)
|
|
2375
|
+
self.setChildElementOptionalLiteral(child_element, "VALUE", param_value.getValue())
|
|
2376
|
+
|
|
2377
|
+
def setEcucNumericalParamValue(self, element: ET.Element, param_value: EcucNumericalParamValue):
|
|
2378
|
+
child_element = ET.SubElement(element, "ECUC-NUMERICAL-PARAM-VALUE")
|
|
2379
|
+
self.writeEcucParameterValue(child_element, param_value)
|
|
2380
|
+
self.setChildElementOptionalNumericalValue(child_element, "VALUE", param_value.getValue())
|
|
2381
|
+
|
|
2382
|
+
def writeEcucContainerValueParameterValues(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2383
|
+
param_values = container_value.getParameterValues()
|
|
2384
|
+
if len(param_values) > 0:
|
|
2385
|
+
child_element = ET.SubElement(element, "PARAMETER-VALUES")
|
|
2386
|
+
for param_value in param_values:
|
|
2387
|
+
if isinstance(param_value, EcucTextualParamValue):
|
|
2388
|
+
self.setEcucTextualParamValue(child_element, param_value)
|
|
2389
|
+
elif isinstance(param_value, EcucNumericalParamValue):
|
|
2390
|
+
self.setEcucNumericalParamValue(child_element, param_value)
|
|
2391
|
+
else:
|
|
2392
|
+
raise NotImplementedError("Unsupported EcucParameterValue <%s>" % type(param_value))
|
|
2393
|
+
|
|
2394
|
+
def writeEcucAbstractReferenceValue(self, element: ET.Element, value: EcucAbstractReferenceValue):
|
|
2395
|
+
self.setChildElementOptionalRefType(element, "DEFINITION-REF", value.getDefinitionRef())
|
|
2396
|
+
self.setAnnotations(element, value.getAnnotations())
|
|
2397
|
+
|
|
2398
|
+
def setEcucReferenceValue(self, element: ET.Element, value = EcucReferenceValue()):
|
|
2399
|
+
child_element = ET.SubElement(element, "ECUC-REFERENCE-VALUE")
|
|
2400
|
+
self.writeEcucAbstractReferenceValue(child_element, value)
|
|
2401
|
+
self.setChildElementOptionalRefType(child_element, "VALUE-REF", value.getValueRef())
|
|
2402
|
+
return value
|
|
2403
|
+
|
|
2404
|
+
def setAnyInstanceRef(self, element: ET.Element, key, instance_ref: AnyInstanceRef):
|
|
2405
|
+
if instance_ref is not None:
|
|
2406
|
+
child_element = ET.SubElement(element, key)
|
|
2407
|
+
self.setChildElementOptionalRefType(child_element, "BASE-REF", instance_ref.getBaseRef())
|
|
2408
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-ELEMENT-REF", instance_ref.getContextElementRef())
|
|
2409
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-REF", instance_ref.getTargetRef())
|
|
2410
|
+
return instance_ref
|
|
2411
|
+
|
|
2412
|
+
def setEcucInstanceReferenceValue(self, element: ET.Element, value : EcucInstanceReferenceValue):
|
|
2413
|
+
child_element = ET.SubElement(element, "ECUC-INSTANCE-REFERENCE-VALUE")
|
|
2414
|
+
self.writeEcucAbstractReferenceValue(child_element, value)
|
|
2415
|
+
self.setAnyInstanceRef(child_element, "VALUE-IREF", value.getValueIRef())
|
|
2416
|
+
return value
|
|
2417
|
+
|
|
2418
|
+
def writeEcucContainerValueReferenceValues(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2419
|
+
reference_values = container_value.getReferenceValues()
|
|
2420
|
+
if len(reference_values) > 0:
|
|
2421
|
+
child_element = ET.SubElement(element, "REFERENCE-VALUES")
|
|
2422
|
+
for reference_value in reference_values:
|
|
2423
|
+
if isinstance(reference_value, EcucReferenceValue):
|
|
2424
|
+
self.setEcucReferenceValue(child_element, reference_value)
|
|
2425
|
+
elif isinstance(reference_value, EcucInstanceReferenceValue):
|
|
2426
|
+
self.setEcucInstanceReferenceValue(child_element, reference_value)
|
|
2427
|
+
else:
|
|
2428
|
+
raise NotImplementedError("Unsupported EcucParameterValue <%s>" % type(reference_value))
|
|
2429
|
+
|
|
2430
|
+
def writeEcucContainValue(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2431
|
+
self.logger.debug("EcucContainerValue %s" % container_value.short_name)
|
|
2432
|
+
child_element = ET.SubElement(element, "ECUC-CONTAINER-VALUE")
|
|
2433
|
+
self.setIdentifiable(child_element, container_value)
|
|
2434
|
+
self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", container_value.getDefinitionRef())
|
|
2435
|
+
self.writeEcucContainerValueParameterValues(child_element, container_value)
|
|
2436
|
+
self.writeEcucContainerValueReferenceValues(child_element, container_value)
|
|
2437
|
+
self.writeEcucContainerValueSubContainers(child_element, container_value)
|
|
2438
|
+
|
|
2439
|
+
def writeEcucModuleConfigurationValuesContainers(self, element: ET.Element, value: EcucModuleConfigurationValues):
|
|
2440
|
+
containers = value.getContainers()
|
|
2441
|
+
if len(containers) > 0:
|
|
2442
|
+
containers_tag = ET.SubElement(element, "CONTAINERS")
|
|
2443
|
+
for container in containers:
|
|
2444
|
+
if isinstance(container, EcucContainerValue):
|
|
2445
|
+
self.writeEcucContainValue(containers_tag, container)
|
|
2446
|
+
else:
|
|
2447
|
+
raise NotImplementedError("Unsupported Container %s" % type(container))
|
|
2448
|
+
|
|
2449
|
+
def writeEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
|
|
2450
|
+
self.logger.debug("EcucModuleConfigurationValues %s" % values.short_name)
|
|
2451
|
+
child_element = ET.SubElement(element, "ECUC-MODULE-CONFIGURATION-VALUES")
|
|
2452
|
+
self.setIdentifiable(child_element, values)
|
|
2453
|
+
self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", values.getDefinitionRef())
|
|
2454
|
+
self.setChildElementOptionalLiteral(child_element, "IMPLEMENTATION-CONFIG-VARIANT", values.getImplementationConfigVariant())
|
|
2455
|
+
self.setChildElementOptionalRefType(child_element, "MODULE-DESCRIPTION-REF", values.getModuleDescriptionRef())
|
|
2456
|
+
self.writeEcucModuleConfigurationValuesContainers(child_element, values)
|
|
2457
|
+
|
|
2458
|
+
def writeISignalGroup(self, element: ET.Element, group: ISignalGroup):
|
|
2459
|
+
self.logger.debug("ISignalGroup %s" % group.short_name)
|
|
2460
|
+
child_element = ET.SubElement(element, "I-SIGNAL-GROUP")
|
|
2461
|
+
self.setIdentifiable(child_element, group)
|
|
2462
|
+
signal_refs = group.getISignalRefs()
|
|
2463
|
+
if len(signal_refs) > 0:
|
|
2464
|
+
signal_refs_tag = ET.SubElement(child_element, "I-SIGNAL-REFS")
|
|
2465
|
+
for signal_ref in signal_refs:
|
|
2466
|
+
self.setChildElementOptionalRefType(signal_refs_tag, "I-SIGNAL-REF", signal_ref)
|
|
2467
|
+
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-GROUP-REF", group.getSystemSignalGroupRef())
|
|
2468
|
+
|
|
2469
|
+
def writeISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
|
|
2470
|
+
self.logger.debug("ISignalIPduGroup %s" % group.short_name)
|
|
2471
|
+
child_element = ET.SubElement(element, "I-SIGNAL-I-PDU-GROUP")
|
|
2472
|
+
self.setIdentifiable(child_element, group)
|
|
2473
|
+
self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", group.getCommunicationDirection())
|
|
2474
|
+
self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-MODE", group.getCommunicationMode())
|
|
2475
|
+
group_refs = group.getContainedISignalIPduGroupRefs()
|
|
2476
|
+
if len(group_refs) > 0:
|
|
2477
|
+
pdu_refs_tag = ET.SubElement(child_element, "CONTAINED-I-SIGNAL-I-PDU-GROUP-REFS")
|
|
2478
|
+
for pdu_ref in group_refs:
|
|
2479
|
+
self.setChildElementOptionalRefType(pdu_refs_tag, "CONTAINED-I-SIGNAL-I-PDU-GROUP-REF", pdu_ref)
|
|
2480
|
+
pdu_refs = group.getISignalIPduRefs()
|
|
2481
|
+
if len(pdu_refs) > 0:
|
|
2482
|
+
pdu_refs_tag = ET.SubElement(child_element, "I-SIGNAL-I-PDUS")
|
|
2483
|
+
for pdu_ref in pdu_refs:
|
|
2484
|
+
ref_conditional_tag = ET.SubElement(pdu_refs_tag, "I-SIGNAL-I-PDU-REF-CONDITIONAL")
|
|
2485
|
+
self.setChildElementOptionalRefType(ref_conditional_tag, "I-SIGNAL-I-PDU-REF", pdu_ref)
|
|
2486
|
+
|
|
2487
|
+
def writeSystemSignal(self, element: ET.Element, signal: SystemSignal):
|
|
2488
|
+
self.logger.debug("SystemSignal %s" % signal.short_name)
|
|
2489
|
+
child_element = ET.SubElement(element, "SYSTEM-SIGNAL")
|
|
2490
|
+
self.setIdentifiable(child_element, signal)
|
|
2491
|
+
self.setChildElementOptionalBooleanValue(child_element, "DYNAMIC-LENGTH", signal.getDynamicLength())
|
|
2492
|
+
|
|
2493
|
+
def writeISignalToPduMappings(self, element: ET.Element, parent: ISignalIPdu):
|
|
2494
|
+
mappings = parent.getISignalToPduMappings()
|
|
2495
|
+
if len(mappings) > 0:
|
|
2496
|
+
mappings_tag = ET.SubElement(element, "I-SIGNAL-TO-PDU-MAPPINGS")
|
|
2497
|
+
for mapping in mappings:
|
|
2498
|
+
child_element = ET.SubElement(mappings_tag, "I-SIGNAL-TO-I-PDU-MAPPING")
|
|
2499
|
+
self.setIdentifiable(child_element, mapping)
|
|
2500
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-REF", mapping.getISignalRef())
|
|
2501
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", mapping.getISignalGroupRef())
|
|
2502
|
+
self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.getPackingByteOrder())
|
|
2503
|
+
self.setChildElementOptionalNumericalValue(child_element, "START-POSITION", mapping.getStartPosition())
|
|
2504
|
+
self.setChildElementOptionalLiteral(child_element, "TRANSFER-PROPERTY", mapping.getTransferProperty())
|
|
2505
|
+
self.setChildElementOptionalNumericalValue(child_element, "UPDATE-INDICATION-BIT-POSITION", mapping.getUpdateIndicationBitPosition())
|
|
2506
|
+
|
|
2507
|
+
def writeISignalIPdu(self, element: ET.Element, i_pdu: ISignalIPdu):
|
|
2508
|
+
self.logger.debug("ISignalIPdu %s" % i_pdu.short_name)
|
|
2509
|
+
child_element = ET.SubElement(element, "I-SIGNAL-I-PDU")
|
|
2510
|
+
self.setIdentifiable(child_element, i_pdu)
|
|
2511
|
+
self.setChildElementOptionalNumericalValue(child_element, "LENGTH", i_pdu.getLength())
|
|
2512
|
+
self.writeISignalToPduMappings(child_element, i_pdu)
|
|
2513
|
+
self.setChildElementOptionalLiteral(child_element, "UNUSED-BIT-PATTERN", i_pdu.getUnusedBitPattern())
|
|
2514
|
+
|
|
1873
2515
|
def writeARPackageElement(self, element: ET.Element, ar_element: ARElement):
|
|
1874
2516
|
if isinstance(ar_element, ComplexDeviceDriverSwComponentType):
|
|
1875
2517
|
self.writeComplexDeviceDriverSwComponentType(element, ar_element)
|
|
@@ -1939,10 +2581,14 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1939
2581
|
self.writeNPdu(element, ar_element)
|
|
1940
2582
|
elif isinstance(ar_element, DcmIPdu):
|
|
1941
2583
|
self.writeDcmIPdu(element, ar_element)
|
|
2584
|
+
elif isinstance(ar_element, SecuredIPdu):
|
|
2585
|
+
self.writeSecuredIPdu(element, ar_element)
|
|
1942
2586
|
elif isinstance(ar_element, CanTpConfig):
|
|
1943
2587
|
self.writeCanTpConfig(element, ar_element)
|
|
1944
2588
|
elif isinstance(ar_element, LinCluster):
|
|
1945
2589
|
self.writeLinCluster(element, ar_element)
|
|
2590
|
+
elif isinstance(ar_element, CanCluster):
|
|
2591
|
+
self.writeCanCluster(element, ar_element)
|
|
1946
2592
|
elif isinstance(ar_element, CanFrame):
|
|
1947
2593
|
self.writeCanFrame(element, ar_element)
|
|
1948
2594
|
elif isinstance(ar_element, Gateway):
|
|
@@ -1959,7 +2605,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1959
2605
|
for pkg in pkgs:
|
|
1960
2606
|
pkg_tag = ET.SubElement(pkgs_tag, "AR-PACKAGE")
|
|
1961
2607
|
|
|
1962
|
-
self.
|
|
2608
|
+
self.setIdentifiable(pkg_tag, pkg)
|
|
1963
2609
|
self.logger.debug("writeARPackage %s" % pkg.full_name)
|
|
1964
2610
|
|
|
1965
2611
|
if pkg.getTotalElement() > 0:
|