armodel 1.4.3__py3-none-any.whl → 1.6.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/cli/arxml_dump_cli.py +14 -14
- armodel/cli/memory_section_cli.py +76 -0
- armodel/cli/system_signal_cli.py +74 -0
- armodel/lib/__init__.py +2 -1
- armodel/lib/system_signal.py +37 -0
- armodel/models/__init__.py +6 -3
- armodel/models/annotation.py +27 -3
- armodel/models/ar_object.py +18 -6
- armodel/models/ar_package.py +248 -30
- armodel/models/ar_ref.py +115 -45
- armodel/models/bsw_module_template.py +66 -28
- armodel/models/common_structure.py +150 -150
- armodel/models/communication.py +1 -1
- armodel/models/data_prototype.py +41 -6
- armodel/models/datatype.py +11 -5
- armodel/models/fibex/__init__.py +0 -0
- armodel/models/fibex/can_communication.py +122 -0
- 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 +138 -0
- 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/fibex_core.py +341 -0
- armodel/models/fibex/lin_communication.py +38 -0
- armodel/models/fibex/lin_topology.py +7 -0
- armodel/models/general_structure.py +119 -10
- armodel/models/implementation.py +4 -5
- armodel/models/internal_behavior.py +63 -0
- armodel/models/m2/__init__.py +0 -0
- armodel/models/m2/autosar_templates/__init__.py +0 -0
- armodel/models/m2/autosar_templates/common_structure/__init__.py +188 -0
- armodel/models/m2/autosar_templates/common_structure/constants.py +0 -0
- armodel/models/m2/autosar_templates/ecuc_description_template.py +268 -0
- armodel/models/m2/autosar_templates/sw_component_template/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/communication.py +316 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/instance_refs.py +149 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface.py +236 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/__init__.py +203 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/access_count.py +13 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/data_elements.py +54 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/mode_declaration_group.py +39 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/server_call.py +26 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/trigger.py +10 -0
- armodel/models/m2/autosar_templates/system_template/__init__.py +321 -0
- armodel/models/m2/autosar_templates/system_template/data_mapping.py +88 -0
- armodel/models/m2/autosar_templates/system_template/network_management.py +554 -0
- armodel/models/m2/autosar_templates/system_template/transport_protocols.py +7 -0
- armodel/models/m2/msr/__init__.py +0 -0
- armodel/models/m2/msr/asam_hdo/__init__.py +0 -0
- armodel/models/m2/msr/asam_hdo/units.py +105 -0
- armodel/models/m2/msr/data_dictionary/__init__.py +0 -0
- armodel/models/m2/msr/data_dictionary/auxillary_objects.py +42 -0
- armodel/models/m2/msr/data_dictionary/data_def_properties.py +295 -0
- armodel/models/m2/msr/documentation/__init__.py +0 -0
- armodel/models/m2/msr/documentation/block_elements.py +18 -0
- armodel/models/mode_declaration.py +8 -0
- armodel/models/multilanguage_data.py +15 -0
- armodel/models/per_instance_memory.py +34 -6
- armodel/models/port_prototype.py +15 -159
- armodel/models/rpt_scenario.py +20 -0
- armodel/models/sw_component.py +48 -187
- armodel/models/system_template/__init__.py +0 -0
- armodel/models/system_template/network_management.py +7 -0
- armodel/models/system_template/transport_protocols.py +7 -0
- armodel/models/timing.py +91 -0
- armodel/parser/abstract_arxml_parser.py +11 -2
- armodel/parser/arxml_parser.py +1101 -227
- armodel/tests/test_armodel/models/test_ar_package.py +1 -1
- armodel/tests/test_armodel/models/test_ar_ref.py +3 -3
- armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -5
- armodel/tests/test_armodel/models/test_common_structure.py +3 -3
- armodel/tests/test_armodel/models/test_data_dictionary.py +5 -5
- armodel/tests/test_armodel/models/test_data_prototype.py +2 -2
- armodel/tests/test_armodel/models/test_datatype.py +8 -8
- armodel/tests/test_armodel/models/test_port_interface.py +6 -6
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +16 -8
- armodel/tests/test_armodel/parser/test_sw_components.py +6 -6
- armodel/writer/arxml_writer.py +1046 -181
- {armodel-1.4.3.dist-info → armodel-1.6.0.dist-info}/METADATA +48 -1
- armodel-1.6.0.dist-info/RECORD +127 -0
- {armodel-1.4.3.dist-info → armodel-1.6.0.dist-info}/entry_points.txt +3 -1
- armodel-1.4.3.dist-info/RECORD +0 -78
- {armodel-1.4.3.dist-info → armodel-1.6.0.dist-info}/LICENSE +0 -0
- {armodel-1.4.3.dist-info → armodel-1.6.0.dist-info}/WHEEL +0 -0
- {armodel-1.4.3.dist-info → armodel-1.6.0.dist-info}/top_level.txt +0 -0
armodel/writer/arxml_writer.py
CHANGED
|
@@ -2,39 +2,62 @@ import xml.etree.cElementTree as ET
|
|
|
2
2
|
|
|
3
3
|
from typing import List
|
|
4
4
|
|
|
5
|
-
from
|
|
5
|
+
from ..models.m2.msr.data_dictionary.auxillary_objects import SwAddrMethod
|
|
6
|
+
from ..models.m2.msr.data_dictionary.data_def_properties import SwDataDefProps
|
|
7
|
+
from ..models.m2.msr.asam_hdo.units import PhysicalDimension
|
|
8
|
+
from ..models.m2.msr.documentation.block_elements import DocumentationBlock
|
|
9
|
+
from ..models.m2_msr import CompuConstTextContent, CompuMethod, CompuNominatorDenominator, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
|
|
6
10
|
|
|
11
|
+
from ..models.m2.autosar_templates.common_structure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, ConstantSpecification, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
|
|
12
|
+
from ..models.m2.autosar_templates.sw_component_template.components.instance_refs import PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
13
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior import RunnableEntityArgument, SynchronousServerCallPoint
|
|
14
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior.server_call import ServerCallPoint
|
|
15
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior.data_elements import ParameterAccess, VariableAccess
|
|
16
|
+
from ..models.m2.autosar_templates.ecuc_description_template import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
|
|
17
|
+
from ..models.m2.autosar_templates.system_template.data_mapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
18
|
+
from ..models.m2.autosar_templates.system_template import System, SystemMapping
|
|
19
|
+
from ..models.m2.autosar_templates.system_template.network_management import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
|
|
20
|
+
from ..models.m2.autosar_templates.system_template.transport_protocols import CanTpConfig
|
|
21
|
+
from ..models.m2.autosar_templates.sw_component_template.communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, RPortComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
22
|
+
|
|
23
|
+
from ..models.fibex.fibex_4_multiplatform import Gateway, ISignalMapping
|
|
24
|
+
from ..models.fibex.can_communication import CanFrame, CanFrameTriggering, RxIdentifierRange
|
|
25
|
+
from ..models.fibex.fibex_core.core_communication import FrameTriggering, IPdu, ISignalGroup, ISignalIPdu, ISignalIPduGroup, ISignalTriggering, PduTriggering, SecuredIPdu, SystemSignal, DcmIPdu, Frame, ISignal, NPdu, NmPdu, SystemSignalGroup
|
|
26
|
+
from ..models.fibex.lin_communication import LinFrameTriggering, LinUnconditionalFrame
|
|
27
|
+
from ..models.fibex.fibex_core.core_topology import AbstractCanCluster, CanCluster, EcuInstance, CanPhysicalChannel, CommunicationCluster, LinCluster, LinPhysicalChannel, PhysicalChannel
|
|
28
|
+
|
|
29
|
+
from ..models.internal_behavior import IncludedDataTypeSet, InternalBehavior
|
|
30
|
+
from ..models.timing import EOCExecutableEntityRef, ExecutionOrderConstraint, SwcTiming, TimingExtension
|
|
7
31
|
from ..models.data_def_properties import ValueList
|
|
8
|
-
from ..models.multilanguage_data import MultiLanguageOverviewParagraph, MultilanguageLongName
|
|
32
|
+
from ..models.multilanguage_data import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultilanguageLongName
|
|
9
33
|
from ..models.record_layout import SwRecordLayout, SwRecordLayoutGroup, SwRecordLayoutV
|
|
10
34
|
from ..models.service_mapping import RoleBasedPortAssignment
|
|
11
35
|
from ..models.service_needs import NvBlockNeeds, RoleBasedDataAssignment
|
|
12
36
|
from ..models.data_prototype import ApplicationArrayElement, ApplicationCompositeElementDataPrototype, ApplicationRecordElement, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
13
37
|
from ..models.bsw_module_template import BswCalledEntity, BswEvent, BswInternalBehavior, BswModeSenderPolicy, BswModuleDescription, BswModuleEntity, BswModuleEntry, BswSchedulableEntity, BswScheduleEvent, BswTimingEvent
|
|
14
38
|
from ..models.ar_package import AUTOSAR
|
|
15
|
-
from ..models.sw_component import ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, DataReceivedEvent, EcuAbstractionSwComponentType, InternalTriggerOccurredEvent, OperationInvokedEvent,
|
|
39
|
+
from ..models.sw_component import ApplicationSwComponentType, AtomicSwComponentType, ComplexDeviceDriverSwComponentType, DataReceivedEvent, EcuAbstractionSwComponentType, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, PortAPIOption, PortGroup, RTEEvent, ServiceDependency, ServiceSwComponentType, SwcModeSwitchEvent, SwcServiceDependency
|
|
16
40
|
from ..models.ar_package import ARPackage
|
|
17
|
-
from ..models.ar_ref import ApplicationCompositeElementInPortInterfaceInstanceRef, AutosarParameterRef, AutosarVariableRef, InnerPortGroupInCompositionInstanceRef, POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef,
|
|
41
|
+
from ..models.ar_ref import AnyInstanceRef, ApplicationCompositeElementInPortInterfaceInstanceRef, AutosarParameterRef, AutosarVariableRef, InnerPortGroupInCompositionInstanceRef, POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef, RefType, VariableDataPrototypeInSystemInstanceRef
|
|
18
42
|
from ..models.calibration import SwAxisGrouped, SwAxisIndividual, SwCalprmAxis, SwCalprmAxisSet, SwValueCont, SwValues
|
|
19
|
-
from ..models.common_structure import
|
|
43
|
+
from ..models.common_structure import IncludedModeDeclarationGroupSet, ModeDeclaration, ModeDeclarationGroup, ModeDeclarationGroupPrototype
|
|
20
44
|
from ..models.communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
|
|
21
|
-
from ..models.data_dictionary import SwAddrMethod, SwDataDefProps
|
|
22
45
|
from ..models.datatype import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType, BaseTypeDirectDefinition, DataTypeMappingSet, ImplementationDataType, SwBaseType
|
|
23
46
|
from ..models.general_structure import ARElement, AdminData, Identifiable, Limit, MultilanguageReferrable, Referrable, Sdg, SwcBswMapping, SwcBswRunnableMapping
|
|
24
|
-
|
|
25
|
-
from ..models.port_prototype import
|
|
47
|
+
|
|
48
|
+
from ..models.port_prototype import PPortPrototype, PortPrototype, RPortPrototype
|
|
26
49
|
from ..models.sw_component import AssemblySwConnector, CompositionSwComponentType, DelegationSwConnector, SwComponentPrototype, SwComponentType, SwConnector
|
|
27
50
|
from ..models.annotation import Annotation
|
|
28
51
|
from ..models.end_to_end_protection import EndToEndDescription, EndToEndProtection, EndToEndProtectionSet, EndToEndProtectionVariablePrototype
|
|
29
|
-
from ..models.port_interface import ApplicationError, ClientServerInterface, ClientServerOperation, ModeSwitchInterface, PortInterface, SenderReceiverInterface, TriggerInterface
|
|
30
|
-
from ..models.
|
|
52
|
+
from ..models.m2.autosar_templates.sw_component_template.port_interface import ApplicationError, ClientServerInterface, ClientServerOperation, ModeSwitchInterface, PortInterface, SenderReceiverInterface, TriggerInterface
|
|
53
|
+
from ..models.m2.msr.asam_hdo.units import Unit
|
|
31
54
|
from ..models.implementation import AutosarEngineeringObject, BswImplementation, Code, EngineeringObject, Implementation, SwcImplementation
|
|
32
|
-
from ..models.common_structure import
|
|
55
|
+
from ..models.common_structure import ExecutableEntity, ResourceConsumption
|
|
33
56
|
from ..models.sw_component import RunnableEntity, SwcInternalBehavior, TimingEvent
|
|
34
57
|
from ..models.ar_object import ARLiteral
|
|
35
58
|
from ..models.global_constraints import DataConstr, InternalConstrs, PhysConstrs
|
|
36
59
|
|
|
37
|
-
|
|
60
|
+
from .abstract_arxml_writer import AbstractARXMLWriter
|
|
38
61
|
class ARXMLWriter(AbstractARXMLWriter):
|
|
39
62
|
def __init__(self, options=None) -> None:
|
|
40
63
|
super().__init__(options)
|
|
@@ -45,20 +68,32 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
45
68
|
|
|
46
69
|
return sub_element
|
|
47
70
|
|
|
48
|
-
def
|
|
71
|
+
def setChildElementRxIdentifierRange(self, element: ET.Element, key: str, range: RxIdentifierRange):
|
|
72
|
+
if range is not None:
|
|
73
|
+
child_element = ET.SubElement(element, key)
|
|
74
|
+
self.setChildElementOptionalNumericalValue(child_element, "LOWER-CAN-ID", range.getLowerCanId())
|
|
75
|
+
self.setChildElementOptionalNumericalValue(child_element, "UPPER-CAN-ID", range.getUpperCanId())
|
|
76
|
+
|
|
77
|
+
def writeSds(self, parent: ET.Element, sdg: Sdg):
|
|
49
78
|
for sd in sdg.getSds():
|
|
50
79
|
sd_tag = ET.SubElement(parent, "SD")
|
|
51
80
|
sd_tag.attrib['GID'] = sd.gid
|
|
52
81
|
sd_tag.text = sd.value
|
|
53
|
-
|
|
54
|
-
def
|
|
82
|
+
|
|
83
|
+
def setSdg(self, parent: ET.Element, sdg: Sdg):
|
|
84
|
+
if sdg is not None:
|
|
85
|
+
sdg_tag = ET.SubElement(parent, "SDG")
|
|
86
|
+
sdg_tag.attrib['GID'] = sdg.gid
|
|
87
|
+
self.writeSds(sdg_tag, sdg)
|
|
88
|
+
for sdg_item in sdg.getSdgContentsTypes():
|
|
89
|
+
self.setSdg(sdg_tag, sdg_item)
|
|
90
|
+
|
|
91
|
+
def writeSdgs(self, parent: ET.Element, admin_data: AdminData):
|
|
55
92
|
sdgs = admin_data.getSdgs()
|
|
56
93
|
if len(sdgs) > 0:
|
|
57
94
|
sdgs_tag = ET.SubElement(parent, "SDGS")
|
|
58
95
|
for sdg in sdgs:
|
|
59
|
-
|
|
60
|
-
sdg_tag.attrib['GID'] = sdg.gid
|
|
61
|
-
self.writeSd(sdg_tag, sdg)
|
|
96
|
+
self.setSdg(sdgs_tag, sdg)
|
|
62
97
|
|
|
63
98
|
def writeChildLimitElement(self, element: ET.Element, key: str, limit: Limit):
|
|
64
99
|
if limit is not None:
|
|
@@ -68,7 +103,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
68
103
|
limit_tag.attrib['INTERVAL-TYPE'] = limit.intervalType
|
|
69
104
|
limit_tag.text = limit.value
|
|
70
105
|
|
|
71
|
-
def
|
|
106
|
+
def setReferable(self, element: ET.Element, referrable: Referrable):
|
|
72
107
|
self.setARObjectAttributes(element, referrable)
|
|
73
108
|
self.setShortName(element, referrable.short_name)
|
|
74
109
|
|
|
@@ -94,61 +129,77 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
94
129
|
l2_tag.attrib['L'] = l2.l
|
|
95
130
|
l2_tag.text = l2.value
|
|
96
131
|
|
|
97
|
-
def
|
|
98
|
-
self.
|
|
99
|
-
if referrable.
|
|
100
|
-
self.setMultiLongName(element, "LONG-NAME", referrable.
|
|
132
|
+
def setMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
|
|
133
|
+
self.setReferable(element, referrable)
|
|
134
|
+
if referrable.longName is not None:
|
|
135
|
+
self.setMultiLongName(element, "LONG-NAME", referrable.longName)
|
|
101
136
|
|
|
102
|
-
def
|
|
137
|
+
def setAdminData(self, element: ET.Element, admin_data: AdminData):
|
|
103
138
|
element = ET.SubElement(element, "ADMIN-DATA")
|
|
104
|
-
self.
|
|
105
|
-
|
|
106
|
-
def
|
|
107
|
-
self.
|
|
108
|
-
self.
|
|
109
|
-
self.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
139
|
+
self.writeSdgs(element, admin_data)
|
|
140
|
+
|
|
141
|
+
def setIdentifiable(self, element: ET.Element, identifiable: Identifiable):
|
|
142
|
+
self.setMultilanguageReferrable(element, identifiable)
|
|
143
|
+
self.setAnnotations(element, identifiable.getAnnotations())
|
|
144
|
+
self.setMultiLanguageOverviewParagraph(element, "DESC", identifiable.getDesc())
|
|
145
|
+
self.setChildElementOptionalLiteral(element, "CATEGORY", identifiable.getCategory())
|
|
146
|
+
if identifiable.getAdminData() is not None:
|
|
147
|
+
self.setAdminData(element, identifiable.getAdminData())
|
|
148
|
+
|
|
149
|
+
def setARElement(self, parent: ET.Element, ar_element: ARElement):
|
|
150
|
+
self.setIdentifiable(parent, ar_element)
|
|
115
151
|
|
|
116
|
-
def
|
|
152
|
+
def setTransmissionAcknowledgementRequest(self, element: ET.Element, acknowledge: TransmissionAcknowledgementRequest):
|
|
117
153
|
if (acknowledge != None):
|
|
118
154
|
child_element = ET.SubElement(element, "TRANSMISSION-ACKNOWLEDGE")
|
|
119
155
|
self.setARObjectAttributes(child_element, acknowledge)
|
|
120
156
|
if acknowledge.timeout != None:
|
|
121
157
|
self.setChildElementOptionalFloatValue(child_element, "TIMEOUT", acknowledge.timeout)
|
|
122
158
|
|
|
123
|
-
def
|
|
159
|
+
def setSenderComSpec(self, element: ET.Element, com_spec: SenderComSpec):
|
|
124
160
|
representations = com_spec.getCompositeNetworkRepresentations()
|
|
125
161
|
if len(representations) > 0:
|
|
126
162
|
child_element = ET.SubElement(element, "COMPOSITE-NETWORK-REPRESENTATIONS")
|
|
127
163
|
for representation in representations:
|
|
128
164
|
self.setCompositeNetworkRepresentation(child_element, representation)
|
|
129
|
-
self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.
|
|
130
|
-
self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.
|
|
131
|
-
self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.
|
|
132
|
-
self.
|
|
133
|
-
self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.
|
|
165
|
+
self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.getDataElementRef())
|
|
166
|
+
self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.getNetworkRepresentation())
|
|
167
|
+
self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.getHandleOutOfRange())
|
|
168
|
+
self.setTransmissionAcknowledgementRequest(element, com_spec.getTransmissionAcknowledge())
|
|
169
|
+
self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.getUsesEndToEndProtection())
|
|
134
170
|
|
|
135
|
-
def
|
|
136
|
-
|
|
137
|
-
self.setARObjectAttributes(
|
|
138
|
-
self.
|
|
139
|
-
self.setInitValue(
|
|
171
|
+
def setNonqueuedSenderComSpec(self, element: ET.Element, com_spec: NonqueuedSenderComSpec):
|
|
172
|
+
child_element = ET.SubElement(element, "NONQUEUED-SENDER-COM-SPEC")
|
|
173
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
174
|
+
self.setSenderComSpec(child_element, com_spec)
|
|
175
|
+
self.setInitValue(child_element, com_spec.initValue)
|
|
140
176
|
|
|
141
|
-
def
|
|
142
|
-
|
|
143
|
-
self.setARObjectAttributes(
|
|
144
|
-
self.setChildElementOptionalRefType(
|
|
145
|
-
self.setChildElementOptionalNumericalValue(
|
|
177
|
+
def setServerComSpec(self, element: ET.Element, com_spec: ServerComSpec):
|
|
178
|
+
child_element = ET.SubElement(element, "SERVER-COM-SPEC")
|
|
179
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
180
|
+
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.getOperationRef())
|
|
181
|
+
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.getQueueLength())
|
|
182
|
+
|
|
183
|
+
def setQueuedSenderComSpec(self, element: ET.Element, com_spec: QueuedSenderComSpec):
|
|
184
|
+
child_element = ET.SubElement(element, "QUEUED-SENDER-COM-SPEC")
|
|
185
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
186
|
+
self.setSenderComSpec(child_element, com_spec)
|
|
187
|
+
|
|
188
|
+
def setModeSwitchSenderComSpec(self, element: ET.Element, com_spec: ModeSwitchSenderComSpec):
|
|
189
|
+
child_element = ET.SubElement(element, "MODE-SWITCH-SENDER-COM-SPEC")
|
|
190
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
191
|
+
self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", com_spec.getModeGroupRef())
|
|
192
|
+
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.getQueueLength())
|
|
146
193
|
|
|
147
194
|
def writePPortComSpec(self, com_specs_tag: ET.Element, com_spec: PPortComSpec):
|
|
148
195
|
if isinstance(com_spec, NonqueuedSenderComSpec):
|
|
149
|
-
self.
|
|
196
|
+
self.setNonqueuedSenderComSpec(com_specs_tag, com_spec)
|
|
150
197
|
elif isinstance(com_spec, ServerComSpec):
|
|
151
|
-
self.
|
|
198
|
+
self.setServerComSpec(com_specs_tag, com_spec)
|
|
199
|
+
elif isinstance(com_spec, QueuedSenderComSpec):
|
|
200
|
+
self.setQueuedSenderComSpec(com_specs_tag, com_spec)
|
|
201
|
+
elif isinstance(com_spec, ModeSwitchSenderComSpec):
|
|
202
|
+
self.setModeSwitchSenderComSpec(com_specs_tag, com_spec)
|
|
152
203
|
else:
|
|
153
204
|
raise NotImplementedError("Unsupported PPortComSpec %s" % type(com_spec))
|
|
154
205
|
|
|
@@ -172,10 +223,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
172
223
|
child_element = ET.SubElement(element, "COMPOSITE-NETWORK-REPRESENTATIONS")
|
|
173
224
|
for representation in representations:
|
|
174
225
|
self.setCompositeNetworkRepresentation(child_element, representation)
|
|
175
|
-
self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.
|
|
176
|
-
self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.
|
|
177
|
-
self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.
|
|
178
|
-
self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.
|
|
226
|
+
self.setChildElementOptionalRefType(element, "DATA-ELEMENT-REF", com_spec.dataElementRef)
|
|
227
|
+
self.setSwDataDefProps(element, "NETWORK-REPRESENTATION", com_spec.networkRepresentation)
|
|
228
|
+
self.setChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE", com_spec.handleOutOfRange)
|
|
229
|
+
self.setChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION", com_spec.usesEndToEndProtection)
|
|
179
230
|
|
|
180
231
|
def setSwValues(self, element: ET.Element, key: str, sw_values: SwValues):
|
|
181
232
|
if sw_values is not None:
|
|
@@ -236,7 +287,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
236
287
|
def setConstantReference(self, element: ET.Element, value_spec: ConstantReference):
|
|
237
288
|
value_spec_tag = ET.SubElement(element, "CONSTANT-REFERENCE")
|
|
238
289
|
self.writeValueSpecification(value_spec_tag, value_spec)
|
|
239
|
-
self.setChildElementOptionalRefType(value_spec_tag, "CONSTANT-REF", value_spec.
|
|
290
|
+
self.setChildElementOptionalRefType(value_spec_tag, "CONSTANT-REF", value_spec.getConstantRef())
|
|
240
291
|
|
|
241
292
|
def setValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
|
|
242
293
|
if value_spec is not None:
|
|
@@ -264,23 +315,29 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
264
315
|
child_element = ET.SubElement(element, "NONQUEUED-RECEIVER-COM-SPEC")
|
|
265
316
|
self.setARObjectAttributes(child_element, com_spec)
|
|
266
317
|
self.writeReceiverComSpec(child_element, com_spec)
|
|
267
|
-
self.setChildElementOptionalFloatValue(child_element, "ALIVE-TIMEOUT", com_spec.
|
|
268
|
-
self.setChildElementOptionalBooleanValue(child_element, "ENABLE-UPDATE", com_spec.
|
|
269
|
-
self.setChildElementOptionalBooleanValue(child_element, "HANDLE-NEVER-RECEIVED", com_spec.
|
|
270
|
-
self.setChildElementOptionalLiteral(child_element, "HANDLE-TIMEOUT-TYPE", com_spec.
|
|
271
|
-
self.setInitValue(child_element, com_spec.
|
|
318
|
+
self.setChildElementOptionalFloatValue(child_element, "ALIVE-TIMEOUT", com_spec.aliveTimeout)
|
|
319
|
+
self.setChildElementOptionalBooleanValue(child_element, "ENABLE-UPDATE", com_spec.enableUpdated)
|
|
320
|
+
self.setChildElementOptionalBooleanValue(child_element, "HANDLE-NEVER-RECEIVED", com_spec.handleNeverReceived)
|
|
321
|
+
self.setChildElementOptionalLiteral(child_element, "HANDLE-TIMEOUT-TYPE", com_spec.handleTimeoutType)
|
|
322
|
+
self.setInitValue(child_element, com_spec.initValue)
|
|
272
323
|
|
|
273
324
|
def writeQueuedReceiverComSpec(self, element: ET.Element, com_spec: QueuedReceiverComSpec):
|
|
274
325
|
child_element = ET.SubElement(element, "QUEUED-RECEIVER-COM-SPEC")
|
|
275
326
|
self.setARObjectAttributes(child_element, com_spec)
|
|
276
327
|
self.writeReceiverComSpec(child_element, com_spec)
|
|
277
|
-
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.
|
|
328
|
+
self.setChildElementOptionalNumericalValue(child_element, "QUEUE-LENGTH", com_spec.queueLength)
|
|
278
329
|
|
|
279
330
|
def writeClientComSpec(self, element: ET.Element, com_spec: ClientComSpec):
|
|
280
331
|
self.logger.debug("writeClientComSpec")
|
|
281
332
|
child_element = ET.SubElement(element, "CLIENT-COM-SPEC")
|
|
282
333
|
self.setARObjectAttributes(child_element, com_spec)
|
|
283
|
-
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.
|
|
334
|
+
self.setChildElementOptionalRefType(child_element, "OPERATION-REF", com_spec.operationRef)
|
|
335
|
+
|
|
336
|
+
def writeModeSwitchReceiverComSpec(self, element: ET.Element, com_spec: ModeSwitchReceiverComSpec):
|
|
337
|
+
self.logger.debug("writeModeSwitchReceiverComSpec")
|
|
338
|
+
child_element = ET.SubElement(element, "MODE-SWITCH-RECEIVER-COM-SPEC")
|
|
339
|
+
self.setARObjectAttributes(child_element, com_spec)
|
|
340
|
+
self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", com_spec.modeGroupRef)
|
|
284
341
|
|
|
285
342
|
def writeRPortComSpec(self, element: ET.Element, com_spec: RPortComSpec):
|
|
286
343
|
if isinstance(com_spec, NonqueuedReceiverComSpec):
|
|
@@ -289,13 +346,15 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
289
346
|
self.writeQueuedReceiverComSpec(element, com_spec)
|
|
290
347
|
elif isinstance(com_spec, ClientComSpec):
|
|
291
348
|
self.writeClientComSpec(element, com_spec)
|
|
349
|
+
elif isinstance(com_spec, ModeSwitchReceiverComSpec):
|
|
350
|
+
self.writeModeSwitchReceiverComSpec(element, com_spec)
|
|
292
351
|
else:
|
|
293
352
|
raise ValueError("Unsupported RPortComSpec %s" % type(com_spec))
|
|
294
353
|
|
|
295
354
|
def writePPortPrototype(self, ports_tag: ET.Element, prototype: PPortPrototype):
|
|
296
355
|
prototype_tag = ET.SubElement(ports_tag, "P-PORT-PROTOTYPE")
|
|
297
356
|
|
|
298
|
-
self.
|
|
357
|
+
self.setIdentifiable(prototype_tag, prototype)
|
|
299
358
|
self.logger.debug("writePPortPrototype %s" % prototype.short_name)
|
|
300
359
|
|
|
301
360
|
com_specs = prototype.getProvidedComSpecs()
|
|
@@ -309,7 +368,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
309
368
|
def writeRPortPrototype(self, ports_tag: ET.Element, prototype: RPortPrototype):
|
|
310
369
|
self.logger.debug("writeRPortPrototype %s" % prototype.short_name)
|
|
311
370
|
prototype_tag = ET.SubElement(ports_tag, "R-PORT-PROTOTYPE")
|
|
312
|
-
self.
|
|
371
|
+
self.setIdentifiable(prototype_tag, prototype)
|
|
313
372
|
com_specs = prototype.getRequiredComSpecs()
|
|
314
373
|
if len(com_specs) > 0:
|
|
315
374
|
com_specs_tag = ET.SubElement(prototype_tag, "REQUIRED-COM-SPECS")
|
|
@@ -349,7 +408,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
349
408
|
def writePortGroup(self, element: ET.Element, port_group: PortGroup):
|
|
350
409
|
self.logger.debug("writePortGroup %s" % port_group.short_name)
|
|
351
410
|
child_element = ET.SubElement(element, "PORT-GROUP")
|
|
352
|
-
self.
|
|
411
|
+
self.setIdentifiable(child_element, port_group)
|
|
353
412
|
self.writePortGroupInnerGroupIRefs(child_element, port_group)
|
|
354
413
|
self.writePortGroupOuterPortRefs(child_element, port_group)
|
|
355
414
|
|
|
@@ -361,7 +420,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
361
420
|
self.writePortGroup(child_element, port_group)
|
|
362
421
|
|
|
363
422
|
def writeSwComponentType(self, element: ET.Element, sw_component: SwComponentType):
|
|
364
|
-
self.
|
|
423
|
+
self.setIdentifiable(element, sw_component)
|
|
365
424
|
port_prototypes = sw_component.getPortPrototypes()
|
|
366
425
|
if len(port_prototypes) > 0:
|
|
367
426
|
ports_tag = ET.SubElement(element, "PORTS")
|
|
@@ -370,7 +429,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
370
429
|
|
|
371
430
|
def writeSwComponentPrototype(self, element: ET.Element, prototype: SwComponentPrototype):
|
|
372
431
|
prototype_tag = ET.SubElement(element, "SW-COMPONENT-PROTOTYPE")
|
|
373
|
-
self.
|
|
432
|
+
self.setIdentifiable(prototype_tag, prototype)
|
|
374
433
|
self.setChildElementOptionalRefType(prototype_tag, "TYPE-TREF", prototype.type_tref)
|
|
375
434
|
|
|
376
435
|
def writeSwComponentPrototypes(self, element: ET.Element, sw_component: CompositionSwComponentType):
|
|
@@ -380,7 +439,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
380
439
|
|
|
381
440
|
def writeAssemblySwConnector(self, element: ET.Element, sw_connector: AssemblySwConnector):
|
|
382
441
|
connector_tag = ET.SubElement(element, "ASSEMBLY-SW-CONNECTOR")
|
|
383
|
-
self.
|
|
442
|
+
self.setIdentifiable(connector_tag, sw_connector)
|
|
384
443
|
|
|
385
444
|
if sw_connector.provider_iref is not None:
|
|
386
445
|
provider_iref_tag = ET.SubElement(connector_tag, "PROVIDER-IREF")
|
|
@@ -396,7 +455,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
396
455
|
|
|
397
456
|
def writeDelegationSwConnector(self, element: ET.Element, sw_connector: DelegationSwConnector):
|
|
398
457
|
connector_tag = ET.SubElement(element, "DELEGATION-SW-CONNECTOR")
|
|
399
|
-
self.
|
|
458
|
+
self.setIdentifiable(connector_tag, sw_connector)
|
|
400
459
|
|
|
401
460
|
if sw_connector.inner_port_iref is not None:
|
|
402
461
|
inner_port_iref_tag = ET.SubElement(connector_tag, "INNER-PORT-IREF")
|
|
@@ -450,11 +509,33 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
450
509
|
for sw_component in ar_package.getCompositionSwComponentTypes():
|
|
451
510
|
self.writeCompositionSwComponentType(element, sw_component)
|
|
452
511
|
|
|
512
|
+
def writeLParagraphs(self, element: ET.Element, paragraph: MultiLanguageParagraph):
|
|
513
|
+
for l1 in paragraph.getL1s():
|
|
514
|
+
l1_tag = ET.SubElement(element, "L-1")
|
|
515
|
+
self.setARObjectAttributes(l1_tag, l1)
|
|
516
|
+
if l1.l is not None:
|
|
517
|
+
l1_tag.attrib['L'] = l1.l
|
|
518
|
+
l1_tag.text = l1.value
|
|
519
|
+
|
|
520
|
+
def setMultiLanguageParagraphs(self, element: ET.Element, key: str, paragraphs: List[MultiLanguageParagraph]):
|
|
521
|
+
for paragraph in paragraphs:
|
|
522
|
+
child_element = ET.SubElement(element, key)
|
|
523
|
+
self.setARObjectAttributes(child_element, paragraph)
|
|
524
|
+
self.writeLParagraphs(child_element, paragraph)
|
|
525
|
+
return paragraphs
|
|
526
|
+
|
|
527
|
+
def setDocumentationBlock(self, element: ET.Element, key: str, block: DocumentationBlock):
|
|
528
|
+
if block is not None:
|
|
529
|
+
child_element = ET.SubElement(element, key)
|
|
530
|
+
self.setARObjectAttributes(child_element, block)
|
|
531
|
+
self.setMultiLanguageParagraphs(child_element, "P", block.getPs())
|
|
532
|
+
|
|
453
533
|
def writeGeneralAnnotation(self, element: ET.Element, annotation: Annotation):
|
|
454
|
-
self.setMultiLongName(element, "LABEL", annotation.
|
|
534
|
+
self.setMultiLongName(element, "LABEL", annotation.getLabel())
|
|
535
|
+
self.setChildElementOptionalLiteral(element, "ANNOTATION-ORIGIN", annotation.getAnnotationOrigin())
|
|
536
|
+
self.setDocumentationBlock(element, "ANNOTATION-TEXT", annotation.getAnnotationText())
|
|
455
537
|
|
|
456
|
-
def
|
|
457
|
-
annotations = props.getAnnotations()
|
|
538
|
+
def setAnnotations(self, element: ET.Element, annotations: List[Annotation]) :
|
|
458
539
|
if len(annotations) > 0:
|
|
459
540
|
annotations_tag = ET.SubElement(element, "ANNOTATIONS")
|
|
460
541
|
for annotation in annotations:
|
|
@@ -495,6 +576,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
495
576
|
for axis in axises:
|
|
496
577
|
self.setSwCalprmAxis(child_element, axis)
|
|
497
578
|
|
|
579
|
+
def writeSwDataDefProsInvalidValue(self, element: ET.Element, props: SwDataDefProps):
|
|
580
|
+
if props.getInvalidValue() is not None:
|
|
581
|
+
child_element = ET.SubElement(element, "INVALID-VALUE")
|
|
582
|
+
self.setValueSpecification(child_element, props.getInvalidValue())
|
|
583
|
+
|
|
498
584
|
def setSwDataDefProps(self, element: ET.Element, key: str, sw_data_def_props: SwDataDefProps):
|
|
499
585
|
if sw_data_def_props is not None:
|
|
500
586
|
child_element = ET.SubElement(element, key)
|
|
@@ -502,18 +588,18 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
502
588
|
sw_data_def_props_variants_tag = ET.SubElement(child_element, "SW-DATA-DEF-PROPS-VARIANTS")
|
|
503
589
|
sw_data_def_props_conditional_tag = ET.SubElement(sw_data_def_props_variants_tag, "SW-DATA-DEF-PROPS-CONDITIONAL")
|
|
504
590
|
self.setARObjectAttributes(sw_data_def_props_conditional_tag, sw_data_def_props.conditional)
|
|
505
|
-
self.
|
|
506
|
-
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "BASE-TYPE-REF", sw_data_def_props.
|
|
507
|
-
self.
|
|
508
|
-
self.
|
|
509
|
-
self.
|
|
510
|
-
self.
|
|
511
|
-
self.
|
|
512
|
-
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "DATA-
|
|
513
|
-
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "
|
|
514
|
-
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "
|
|
515
|
-
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "
|
|
516
|
-
|
|
591
|
+
self.setAnnotations(sw_data_def_props_conditional_tag, sw_data_def_props.getAnnotations())
|
|
592
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "BASE-TYPE-REF", sw_data_def_props.getBaseTypeRef())
|
|
593
|
+
self.writeSwDataDefProsInvalidValue(sw_data_def_props_conditional_tag, sw_data_def_props)
|
|
594
|
+
self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-CALIBRATION-ACCESS", sw_data_def_props.getSwCalibrationAccess())
|
|
595
|
+
self.setSwCalprmAxisSet(sw_data_def_props_conditional_tag, "SW-CALPRM-AXIS-SET", sw_data_def_props.getSwCalprmAxisSet())
|
|
596
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "COMPU-METHOD-REF", sw_data_def_props.getCompuMethodRef())
|
|
597
|
+
self.setChildElementOptionalLiteral(sw_data_def_props_conditional_tag, "SW-IMPL-POLICY", sw_data_def_props.getSwImplPolicy())
|
|
598
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF", sw_data_def_props.getImplementationDataTypeRef())
|
|
599
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "DATA-CONSTR-REF", sw_data_def_props.getDataConstrRef())
|
|
600
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "SW-RECORD-LAYOUT-REF", sw_data_def_props.getSwRecordLayoutRef())
|
|
601
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "VALUE-AXIS-DATA-TYPE-REF", sw_data_def_props.getValueAxisDataTypeRef())
|
|
602
|
+
self.setChildElementOptionalRefType(sw_data_def_props_conditional_tag, "UNIT-REF", sw_data_def_props.getUnitRef())
|
|
517
603
|
|
|
518
604
|
def writeApplicationDataType(self, element: ET.Element, data_type: ApplicationDataType):
|
|
519
605
|
self.writeAutosarDataType(element, data_type)
|
|
@@ -522,8 +608,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
522
608
|
self.writeApplicationDataType(element, data_type)
|
|
523
609
|
|
|
524
610
|
def writeAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
525
|
-
self.
|
|
526
|
-
self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", data_type.
|
|
611
|
+
self.setARElement(element, data_type)
|
|
612
|
+
self.setSwDataDefProps(element, "SW-DATA-DEF-PROPS", data_type.swDataDefProps)
|
|
527
613
|
|
|
528
614
|
def writeApplicationPrimitiveDataType(self, element: ET.Element, data_type: ApplicationPrimitiveDataType):
|
|
529
615
|
self.logger.debug("writeApplicationPrimitiveDataType %s" % data_type.short_name)
|
|
@@ -531,7 +617,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
531
617
|
self.writeApplicationDataType(data_type_tag, data_type)
|
|
532
618
|
|
|
533
619
|
def setDataPrototype(self, element: ET.Element, prototype: DataPrototype):
|
|
534
|
-
self.
|
|
620
|
+
self.setIdentifiable(element, prototype)
|
|
535
621
|
|
|
536
622
|
def setApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
|
|
537
623
|
self.setDataPrototype(element, prototype)
|
|
@@ -570,7 +656,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
570
656
|
|
|
571
657
|
def writeSwBaseType(self, element: ET.Element, base_type: SwBaseType):
|
|
572
658
|
data_type_tag = ET.SubElement(element, "SW-BASE-TYPE")
|
|
573
|
-
self.
|
|
659
|
+
self.setIdentifiable(data_type_tag, base_type)
|
|
574
660
|
self.writeBaseTypeDirectDefinition(data_type_tag, base_type.baseTypeDefinition)
|
|
575
661
|
|
|
576
662
|
def writeCompuScaleConstantContents(self, element: ET.Element, contents: CompuScaleConstantContents):
|
|
@@ -620,7 +706,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
620
706
|
def writeCompuMethod(self, element: ET.Element, compu_method: CompuMethod):
|
|
621
707
|
compu_method_tag = ET.SubElement(element, "COMPU-METHOD")
|
|
622
708
|
self.logger.debug("writeCompuMethods %s" % compu_method.short_name)
|
|
623
|
-
self.
|
|
709
|
+
self.setIdentifiable(compu_method_tag, compu_method)
|
|
624
710
|
self.setChildElementOptionalRefType(compu_method_tag, "UNIT-REF", compu_method.unit_ref)
|
|
625
711
|
self.writeCompuInternalToPhys(compu_method_tag, compu_method)
|
|
626
712
|
|
|
@@ -651,11 +737,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
651
737
|
|
|
652
738
|
def writeConstantSpecification(self, element: ET.Element, spec: ConstantSpecification):
|
|
653
739
|
spec_tag = ET.SubElement(element, "CONSTANT-SPECIFICATION")
|
|
654
|
-
self.
|
|
740
|
+
self.setIdentifiable(spec_tag, spec)
|
|
655
741
|
|
|
656
|
-
if spec.
|
|
742
|
+
if spec.getValueSpec() is not None:
|
|
657
743
|
value_spec_tag = ET.SubElement(spec_tag, "VALUE-SPEC")
|
|
658
|
-
self.setValueSpecification(value_spec_tag, spec.
|
|
744
|
+
self.setValueSpecification(value_spec_tag, spec.getValueSpec())
|
|
659
745
|
|
|
660
746
|
def setInternalConstrs(self, element: ET.Element, constrs: InternalConstrs):
|
|
661
747
|
if constrs is not None:
|
|
@@ -689,21 +775,24 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
689
775
|
|
|
690
776
|
def writeDataConstr(self, element: ET.Element, constr: DataConstr):
|
|
691
777
|
child_element = ET.SubElement(element, "DATA-CONSTR")
|
|
692
|
-
self.
|
|
778
|
+
self.setIdentifiable(child_element, constr)
|
|
693
779
|
self.writeDataConstrRules(child_element, constr)
|
|
694
780
|
|
|
695
781
|
def writeUnit(self, element: ET.Element, unit: Unit):
|
|
696
782
|
self.logger.debug("writeUnit %s" % unit.short_name)
|
|
697
783
|
child_element = ET.SubElement(element, "UNIT")
|
|
698
|
-
self.
|
|
699
|
-
self.setChildElementOptionalLiteral(child_element, "DISPLAY-NAME", unit.
|
|
784
|
+
self.setIdentifiable(child_element, unit)
|
|
785
|
+
self.setChildElementOptionalLiteral(child_element, "DISPLAY-NAME", unit.getDisplayName())
|
|
786
|
+
self.setChildElementOptionalFloatValue(child_element, "FACTOR-SI-TO-UNIT", unit.getFactorSiToUnit())
|
|
787
|
+
self.setChildElementOptionalFloatValue(child_element, "OFFSET-SI-TO-UNIT", unit.getOffsetSiToUnit())
|
|
788
|
+
self.setChildElementOptionalRefType(child_element, "PHYSICAL-DIMENSION-REF", unit.getPhysicalDimensionRef())
|
|
700
789
|
|
|
701
790
|
def setRModeInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: RModeInAtomicSwcInstanceRef):
|
|
702
791
|
child_element = ET.SubElement(element, key)
|
|
703
|
-
self.setChildElementOptionalRefType(child_element, "BASE", iref.
|
|
704
|
-
self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", iref.
|
|
705
|
-
self.setChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF", iref.
|
|
706
|
-
self.setChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF", iref.
|
|
792
|
+
self.setChildElementOptionalRefType(child_element, "BASE", iref.getBaseRef())
|
|
793
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", iref.getContextPortRef())
|
|
794
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF", iref.getContextModeDeclarationGroupPrototypeRef())
|
|
795
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF", iref.getTargetModeDeclarationRef())
|
|
707
796
|
|
|
708
797
|
def setPOperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: POperationInAtomicSwcInstanceRef):
|
|
709
798
|
child_element = ET.SubElement(element, key)
|
|
@@ -711,7 +800,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
711
800
|
self.setChildElementOptionalRefType(child_element, "TARGET-PROVIDED-OPERATION-REF", iref.target_provided_operation_ref)
|
|
712
801
|
|
|
713
802
|
def setRTEEvent(self, element: ET.Element, event: RTEEvent):
|
|
714
|
-
self.
|
|
803
|
+
self.setIdentifiable(element, event)
|
|
715
804
|
irefs = event.getDisabledModeIRefs()
|
|
716
805
|
if len(irefs) > 0:
|
|
717
806
|
child_element = ET.SubElement(element, "DISABLED-MODE-IREFS")
|
|
@@ -745,18 +834,23 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
745
834
|
def setRVariableInAtomicSwcInstanceRef(self, element: ET.Element, iref: RVariableInAtomicSwcInstanceRef):
|
|
746
835
|
if iref is not None:
|
|
747
836
|
child_element = ET.SubElement(element, "DATA-IREF")
|
|
748
|
-
self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.
|
|
749
|
-
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-ELEMENT-REF", iref.
|
|
837
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.getContextRPortRef())
|
|
838
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-ELEMENT-REF", iref.getTargetDataElementRef())
|
|
750
839
|
|
|
751
840
|
def setDataReceivedEvent(self, element: ET.Element, event: DataReceivedEvent):
|
|
752
841
|
if event is not None:
|
|
753
842
|
child_element = ET.SubElement(element, "DATA-RECEIVED-EVENT")
|
|
754
843
|
self.setRTEEvent(child_element, event)
|
|
755
|
-
self.setRVariableInAtomicSwcInstanceRef(child_element, event.
|
|
844
|
+
self.setRVariableInAtomicSwcInstanceRef(child_element, event.dataIRef)
|
|
756
845
|
|
|
757
846
|
def setInternalTriggerOccurredEvent(self, element: ET.Element, event: DataReceivedEvent):
|
|
758
847
|
pass
|
|
759
848
|
|
|
849
|
+
def setInitEvent(self, element: ET.Element, event: InitEvent):
|
|
850
|
+
if event is not None:
|
|
851
|
+
child_element = ET.SubElement(element, "INIT-EVENT")
|
|
852
|
+
self.setRTEEvent(child_element, event)
|
|
853
|
+
|
|
760
854
|
def writeRTEEvents(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
761
855
|
events = parent.getRteEvents()
|
|
762
856
|
if len(events) > 0:
|
|
@@ -773,6 +867,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
773
867
|
self.setDataReceivedEvent(child_element, event)
|
|
774
868
|
elif isinstance(event, InternalTriggerOccurredEvent):
|
|
775
869
|
self.setInternalTriggerOccurredEvent(child_element, event)
|
|
870
|
+
elif isinstance(event, InitEvent):
|
|
871
|
+
self.setInitEvent(child_element, event)
|
|
776
872
|
else:
|
|
777
873
|
raise NotImplementedError("Unsupported Event <%s>" % type(event))
|
|
778
874
|
|
|
@@ -782,7 +878,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
782
878
|
areas_tag = ET.SubElement(element, "EXCLUSIVE-AREAS")
|
|
783
879
|
for area in areas:
|
|
784
880
|
child_element = ET.SubElement(areas_tag, "EXCLUSIVE-AREA")
|
|
785
|
-
self.
|
|
881
|
+
self.setIdentifiable(child_element, area)
|
|
786
882
|
|
|
787
883
|
def writeDataTypeMappingRefs(self, element: ET.Element, behavior: InternalBehavior):
|
|
788
884
|
refs = behavior.getDataTypeMappingRefs()
|
|
@@ -790,30 +886,34 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
790
886
|
refs_tag = ET.SubElement(element, "DATA-TYPE-MAPPING-REFS")
|
|
791
887
|
for ref in refs:
|
|
792
888
|
self.setChildElementOptionalRefType(refs_tag, "DATA-TYPE-MAPPING-REF", ref)
|
|
889
|
+
|
|
890
|
+
def writeInternalBehaviorConstantMemories(self, element: ET.Element, behavior: InternalBehavior):
|
|
891
|
+
memories = behavior.getConstantMemorys()
|
|
892
|
+
if len(memories) > 0:
|
|
893
|
+
child_element = ET.SubElement(element, "CONSTANT-MEMORYS")
|
|
894
|
+
for memory in memories:
|
|
895
|
+
self.writeParameterDataPrototype(child_element, memory)
|
|
793
896
|
|
|
794
897
|
def writeInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
|
|
795
|
-
self.
|
|
898
|
+
self.setIdentifiable(element, behavior)
|
|
899
|
+
self.writeInternalBehaviorConstantMemories(element, behavior)
|
|
796
900
|
self.writeDataTypeMappingRefs(element, behavior)
|
|
797
901
|
self.writeExclusiveAreas(element, behavior)
|
|
798
902
|
|
|
799
|
-
def writeExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
|
|
800
|
-
if entity is not None:
|
|
801
|
-
self.setChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL", entity.minimum_start_interval)
|
|
802
|
-
|
|
803
903
|
def setAutosarVariableRef(self, element: ET.Element, ref: AutosarVariableRef):
|
|
804
904
|
if ref is not None:
|
|
805
905
|
child_element = ET.SubElement(element, "ACCESSED-VARIABLE")
|
|
806
|
-
|
|
906
|
+
self.setARObjectAttributes(child_element, ref)
|
|
907
|
+
if ref.getAutosarVariableIRef() is not None:
|
|
807
908
|
child_element = ET.SubElement(child_element, "AUTOSAR-VARIABLE-IREF")
|
|
808
|
-
self.setChildElementOptionalRefType(child_element, "PORT-PROTOTYPE-REF", ref.
|
|
809
|
-
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", ref.
|
|
810
|
-
|
|
811
|
-
self.setChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF", ref.local_variable_ref)
|
|
909
|
+
self.setChildElementOptionalRefType(child_element, "PORT-PROTOTYPE-REF", ref.getAutosarVariableIRef().getPortPrototypeRef())
|
|
910
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", ref.getAutosarVariableIRef().getTargetDataPrototypeRef())
|
|
911
|
+
self.setChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF", ref.getLocalVariableRef())
|
|
812
912
|
|
|
813
913
|
def setVariableAccess(self, element: ET.Element, access: VariableAccess):
|
|
814
914
|
child_element = ET.SubElement(element, "VARIABLE-ACCESS")
|
|
815
|
-
self.
|
|
816
|
-
self.setAutosarVariableRef(child_element, access.
|
|
915
|
+
self.setIdentifiable(child_element, access)
|
|
916
|
+
self.setAutosarVariableRef(child_element, access.getAccessedVariableRef())
|
|
817
917
|
|
|
818
918
|
def writeDataReadAccesses(self, element: ET.Element, entity: RunnableEntity):
|
|
819
919
|
#accesses = entity.getDataReadAccesses():
|
|
@@ -826,7 +926,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
826
926
|
|
|
827
927
|
def writeParameterAccess(self, element: ET.Element, parameter_access: ParameterAccess):
|
|
828
928
|
child_element = ET.SubElement(element, "PARAMETER-ACCESS")
|
|
829
|
-
self.
|
|
929
|
+
self.setIdentifiable(child_element, parameter_access)
|
|
830
930
|
self.setAutosarParameterRef(child_element, "ACCESSED-PARAMETER", parameter_access.accessed_parameter)
|
|
831
931
|
|
|
832
932
|
def writeParameterAccesses(self, element: ET.Element, entity: RunnableEntity):
|
|
@@ -864,20 +964,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
864
964
|
for access in variables:
|
|
865
965
|
self.setVariableAccess(child_element, access)
|
|
866
966
|
|
|
867
|
-
def
|
|
967
|
+
def setROperationInAtomicSwcInstanceRef(self, element: ET.Element, key: str, iref: ROperationInAtomicSwcInstanceRef):
|
|
868
968
|
if iref is not None:
|
|
869
969
|
child_element = ET.SubElement(element, key)
|
|
870
970
|
self.setChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF", iref.context_r_port_ref)
|
|
871
971
|
self.setChildElementOptionalRefType(child_element, "TARGET-REQUIRED-OPERATION-REF", iref.target_required_operation_ref)
|
|
872
972
|
|
|
873
|
-
def
|
|
874
|
-
self.
|
|
973
|
+
def setServerCallPoint(self, element: ET.Element, call_point: ServerCallPoint):
|
|
974
|
+
self.setROperationInAtomicSwcInstanceRef(element, "OPERATION-IREF", call_point.getOperationIRef())
|
|
875
975
|
self.setChildElementOptionalFloatValue(element, "TIMEOUT", call_point.timeout)
|
|
876
976
|
|
|
877
|
-
def
|
|
977
|
+
def setSynchronousServerCallPoint(self, element: ET.Element, call_point: SynchronousServerCallPoint):
|
|
878
978
|
child_element = ET.SubElement(element, "SYNCHRONOUS-SERVER-CALL-POINT")
|
|
879
|
-
self.
|
|
880
|
-
self.
|
|
979
|
+
self.setIdentifiable(child_element, call_point)
|
|
980
|
+
self.setServerCallPoint(child_element, call_point)
|
|
881
981
|
|
|
882
982
|
def writeServerCallPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
883
983
|
call_points = entity.getServerCallPoints()
|
|
@@ -885,7 +985,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
885
985
|
child_element = ET.SubElement(element, "SERVER-CALL-POINTS")
|
|
886
986
|
for call_point in call_points:
|
|
887
987
|
if isinstance(call_point, SynchronousServerCallPoint):
|
|
888
|
-
self.
|
|
988
|
+
self.setSynchronousServerCallPoint(child_element, call_point)
|
|
889
989
|
else:
|
|
890
990
|
self._raiseError("Unsupported ServerCallPoint type <%s>" % type(call_point))
|
|
891
991
|
|
|
@@ -896,16 +996,62 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
896
996
|
for access in variables:
|
|
897
997
|
self.setVariableAccess(child_element, access)
|
|
898
998
|
|
|
999
|
+
def setRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, tag: str, iref: RModeGroupInAtomicSWCInstanceRef):
|
|
1000
|
+
if iref is not None:
|
|
1001
|
+
child_element = ET.SubElement(element, tag)
|
|
1002
|
+
instance_ref_tag = ET.SubElement(child_element, "R-MODE-GROUP-IN-ATOMIC-SWC-INSTANCE-REF")
|
|
1003
|
+
self.setChildElementOptionalRefType(instance_ref_tag, "CONTEXT-R-PORT-REF", iref.getContextRPortRef())
|
|
1004
|
+
self.setChildElementOptionalRefType(instance_ref_tag, "TARGET-MODE-GROUP-REF", iref.getTargetModeGroupRef())
|
|
1005
|
+
|
|
1006
|
+
def setPModeGroupInAtomicSWCInstanceRef(self, element: ET.Element, tag: str, iref: PModeGroupInAtomicSwcInstanceRef):
|
|
1007
|
+
if iref is not None:
|
|
1008
|
+
child_element = ET.SubElement(element, tag)
|
|
1009
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF", iref.getContextPPortRef())
|
|
1010
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF", iref.getTargetModeGroupRef())
|
|
1011
|
+
|
|
1012
|
+
def writeModeAccessPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
1013
|
+
points = entity.getModeAccessPoints()
|
|
1014
|
+
if len(points) > 0:
|
|
1015
|
+
mode_access_points_tag = ET.SubElement(element, "MODE-ACCESS-POINTS")
|
|
1016
|
+
for point in points:
|
|
1017
|
+
child_element = ET.SubElement(mode_access_points_tag, "MODE-ACCESS-POINT")
|
|
1018
|
+
self.setRModeGroupInAtomicSWCInstanceRef(child_element, "MODE-GROUP-IREF", point.getModeGroupIRef())
|
|
1019
|
+
|
|
1020
|
+
def writeModeSwitchPoints(self, element: ET.Element, entity: RunnableEntity):
|
|
1021
|
+
points = entity.getModeSwitchPoints()
|
|
1022
|
+
if len(points) > 0:
|
|
1023
|
+
mode_access_points_tag = ET.SubElement(element, "MODE-SWITCH-POINTS")
|
|
1024
|
+
for point in points:
|
|
1025
|
+
child_element = ET.SubElement(mode_access_points_tag, "MODE-SWITCH-POINT")
|
|
1026
|
+
self.setIdentifiable(child_element, point)
|
|
1027
|
+
self.setPModeGroupInAtomicSWCInstanceRef(child_element, "MODE-GROUP-IREF", point.getModeGroupIRef())
|
|
1028
|
+
|
|
1029
|
+
def setRunnableEntityArgument(self, element: ET.Element, argument: RunnableEntityArgument):
|
|
1030
|
+
child_element = ET.SubElement(element, "RUNNABLE-ENTITY-ARGUMENT")
|
|
1031
|
+
self.setChildElementOptionalLiteral(child_element, "SYMBOL", argument.getSymbol())
|
|
1032
|
+
|
|
1033
|
+
def writeRunnableEntityArguments(self, element: ET.Element, entity: RunnableEntity):
|
|
1034
|
+
arguments = entity.getArguments()
|
|
1035
|
+
if len(arguments) > 0:
|
|
1036
|
+
child_element = ET.SubElement(element, "ARGUMENTS")
|
|
1037
|
+
for argument in arguments:
|
|
1038
|
+
if isinstance(argument, RunnableEntityArgument):
|
|
1039
|
+
self.setRunnableEntityArgument(child_element, argument)
|
|
1040
|
+
else:
|
|
1041
|
+
raise NotImplementedError("Unsupported argument of Runnable Entity <%s>" % type(argument))
|
|
1042
|
+
|
|
899
1043
|
def writeRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
|
|
900
1044
|
if entity is not None:
|
|
901
1045
|
child_element = ET.SubElement(element, "RUNNABLE-ENTITY")
|
|
902
|
-
self.
|
|
903
|
-
self.
|
|
904
|
-
self.setChildElementOptionalBooleanValue(child_element, "CAN-BE-INVOKED-CONCURRENTLY", entity.
|
|
1046
|
+
self.setExecutableEntity(child_element, entity)
|
|
1047
|
+
self.writeRunnableEntityArguments(child_element, entity)
|
|
1048
|
+
self.setChildElementOptionalBooleanValue(child_element, "CAN-BE-INVOKED-CONCURRENTLY", entity.getCanBeInvokedConcurrently())
|
|
905
1049
|
self.writeParameterAccesses(child_element, entity)
|
|
906
1050
|
self.writeDataReceivePointByArguments(child_element, entity)
|
|
907
1051
|
self.writeDataSendPoints(child_element, entity)
|
|
908
1052
|
self.writeDataWriteAccesses(child_element, entity)
|
|
1053
|
+
self.writeModeAccessPoints(child_element, entity)
|
|
1054
|
+
self.writeModeSwitchPoints(child_element, entity)
|
|
909
1055
|
self.writeReadLocalVariables(child_element, entity)
|
|
910
1056
|
self.writeServerCallPoints(child_element, entity)
|
|
911
1057
|
self.setChildElementOptionalLiteral(child_element, "SYMBOL", entity.symbol)
|
|
@@ -937,20 +1083,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
937
1083
|
memories_tag = ET.SubElement(element, "PER-INSTANCE-MEMORYS")
|
|
938
1084
|
for memory in memories:
|
|
939
1085
|
child_element = ET.SubElement(memories_tag, "PER-INSTANCE-MEMORY")
|
|
940
|
-
self.
|
|
941
|
-
self.setChildElementOptionalLiteral(child_element, "INIT-VALUE", memory.
|
|
942
|
-
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", memory.
|
|
1086
|
+
self.setIdentifiable(child_element, memory)
|
|
1087
|
+
self.setChildElementOptionalLiteral(child_element, "INIT-VALUE", memory.initValue)
|
|
1088
|
+
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", memory.swDataDefProps)
|
|
943
1089
|
self.setChildElementOptionalLiteral(child_element, "TYPE", memory.type)
|
|
944
|
-
self.setChildElementOptionalLiteral (child_element, "TYPE-DEFINITION", memory.
|
|
1090
|
+
self.setChildElementOptionalLiteral (child_element, "TYPE-DEFINITION", memory.typeDefinition)
|
|
945
1091
|
|
|
946
1092
|
def writeParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
|
|
947
1093
|
child_element = ET.SubElement(element, "PARAMETER-DATA-PROTOTYPE")
|
|
948
|
-
self.
|
|
1094
|
+
self.setIdentifiable(child_element, prototype)
|
|
949
1095
|
self.writeAutosarDataPrototype(child_element, prototype)
|
|
950
|
-
self.setInitValue(child_element, prototype.
|
|
1096
|
+
self.setInitValue(child_element, prototype.initValue)
|
|
951
1097
|
|
|
952
1098
|
def writeParameterDataPrototypes(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
953
|
-
prototypes = behavior.
|
|
1099
|
+
prototypes = behavior.getPerInstanceParameters()
|
|
954
1100
|
if len(prototypes) > 0:
|
|
955
1101
|
child_element = ET.SubElement(element, "PER-INSTANCE-PARAMETERS")
|
|
956
1102
|
for prototype in prototypes:
|
|
@@ -979,7 +1125,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
979
1125
|
self.setChildElementOptionalRefType(child_element, "PORT-REF", option.port_ref)
|
|
980
1126
|
|
|
981
1127
|
def writeServiceDependency(self, element: ET.Element, dependency: ServiceDependency):
|
|
982
|
-
self.
|
|
1128
|
+
self.setIdentifiable(element, dependency)
|
|
983
1129
|
|
|
984
1130
|
def writeRoleBasedDataAssignment(self, element: ET.Element, assignment: RoleBasedDataAssignment):
|
|
985
1131
|
child_element = ET.SubElement(element, "ROLE-BASED-DATA-ASSIGNMENT")
|
|
@@ -1015,7 +1161,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1015
1161
|
def writeNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
|
|
1016
1162
|
child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
|
|
1017
1163
|
self.logger.debug("writeNvBlockNeeds %s" % needs.short_name)
|
|
1018
|
-
self.
|
|
1164
|
+
self.setIdentifiable(child_element, needs)
|
|
1019
1165
|
self.setChildElementOptionalBooleanValue(child_element, "CALC-RAM-BLOCK-CRC", needs.calc_ram_block_crc)
|
|
1020
1166
|
self.setChildElementOptionalBooleanValue(child_element, "CHECK-STATIC-BLOCK-ID", needs.check_static_block_id)
|
|
1021
1167
|
self.setChildElementOptionalNumericalValue(child_element, "N-DATA-SETS", needs.n_data_sets)
|
|
@@ -1056,6 +1202,18 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1056
1202
|
else:
|
|
1057
1203
|
self._raiseError("Unsupported ServiceDependency <%s>" % type(dependency))
|
|
1058
1204
|
|
|
1205
|
+
def setIncludedDataTypeSets(self, element: ET.Element, sets: List[IncludedDataTypeSet]):
|
|
1206
|
+
if len(sets) > 0:
|
|
1207
|
+
include_data_type_sets_tag = ET.SubElement(element, "INCLUDED-DATA-TYPE-SETS")
|
|
1208
|
+
for set in sets:
|
|
1209
|
+
child_element = ET.SubElement(include_data_type_sets_tag, "INCLUDED-DATA-TYPE-SET")
|
|
1210
|
+
self.setARObjectAttributes(child_element, set)
|
|
1211
|
+
type_refs = set.getDataTypeRefs()
|
|
1212
|
+
if len(type_refs) > 0:
|
|
1213
|
+
data_type_refs_tag = ET.SubElement(child_element, "DATA-TYPE-REFS")
|
|
1214
|
+
for type_ref in type_refs:
|
|
1215
|
+
self.setChildElementOptionalRefType(data_type_refs_tag, "DATA-TYPE-REF", type_ref)
|
|
1216
|
+
|
|
1059
1217
|
def writeSwcInternalBehavior(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
1060
1218
|
self.logger.debug("writeSwInternalBehavior %s" % behavior.short_name)
|
|
1061
1219
|
|
|
@@ -1064,6 +1222,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1064
1222
|
self.writeRTEEvents(child_element, behavior)
|
|
1065
1223
|
self.writeExplicitInterRunnableVariables(child_element, behavior)
|
|
1066
1224
|
self.setChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART", behavior.handle_termination_and_restart)
|
|
1225
|
+
self.setIncludedDataTypeSets(child_element, behavior.getIncludedDataTypeSets())
|
|
1067
1226
|
self.writePerInstanceMemories(child_element, behavior)
|
|
1068
1227
|
self.writeParameterDataPrototypes(child_element, behavior)
|
|
1069
1228
|
self.writePortAPIOptions(child_element, behavior)
|
|
@@ -1102,7 +1261,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1102
1261
|
def setCode(self, element: ET.SubElement, code_desc: Code):
|
|
1103
1262
|
self.logger.debug("setCode %s" % code_desc.short_name)
|
|
1104
1263
|
child_element = ET.SubElement(element, "CODE")
|
|
1105
|
-
self.
|
|
1264
|
+
self.setIdentifiable(child_element, code_desc)
|
|
1106
1265
|
self.writeArtifactDescriptor(child_element, code_desc)
|
|
1107
1266
|
|
|
1108
1267
|
def writeCodeDescriptors(self, element: ET.Element, impl: Implementation):
|
|
@@ -1127,7 +1286,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1127
1286
|
sections_tag = ET.SubElement(element, "MEMORY-SECTIONS")
|
|
1128
1287
|
for memory_section in memory_sections:
|
|
1129
1288
|
child_element = ET.SubElement(sections_tag, "MEMORY-SECTION")
|
|
1130
|
-
self.
|
|
1289
|
+
self.setIdentifiable(child_element, memory_section)
|
|
1131
1290
|
self.setChildElementOptionalLiteral(child_element, "ALIGNMENT", memory_section.alignment)
|
|
1132
1291
|
self.setMemorySectionOptions(child_element, memory_section.getOptions())
|
|
1133
1292
|
self.setChildElementOptionalNumericalValue(child_element, "SIZE", memory_section.size)
|
|
@@ -1138,11 +1297,11 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1138
1297
|
def setResourceConsumption(self, element: ET.Element, consumption: ResourceConsumption):
|
|
1139
1298
|
if consumption is not None:
|
|
1140
1299
|
child_element = ET.SubElement(element, "RESOURCE-CONSUMPTION")
|
|
1141
|
-
self.
|
|
1300
|
+
self.setIdentifiable(child_element, consumption)
|
|
1142
1301
|
self.writeMemorySections(child_element, consumption)
|
|
1143
1302
|
|
|
1144
1303
|
def writeImplementation(self, element: ET.Element, impl: Implementation):
|
|
1145
|
-
self.
|
|
1304
|
+
self.setIdentifiable(element, impl)
|
|
1146
1305
|
self.writeCodeDescriptors(element, impl)
|
|
1147
1306
|
self.setChildElementOptionalLiteral(element, "PROGRAMMING-LANGUAGE", impl.programming_language)
|
|
1148
1307
|
self.setResourceConsumption(element, impl.getResourceConsumption())
|
|
@@ -1177,10 +1336,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1177
1336
|
def setVariableDataPrototypeInSystemInstanceRef(self, element: ET.Element, key: str, iref: VariableDataPrototypeInSystemInstanceRef):
|
|
1178
1337
|
if iref is not None:
|
|
1179
1338
|
child_element = ET.SubElement(element, key)
|
|
1180
|
-
self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPONENT-REF", iref.
|
|
1181
|
-
self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPOSITION-REF", iref.
|
|
1182
|
-
self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", iref.
|
|
1183
|
-
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", iref.
|
|
1339
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPONENT-REF", iref.context_component_refs)
|
|
1340
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-COMPOSITION-REF", iref.context_composition_ref)
|
|
1341
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF", iref.context_port_ref)
|
|
1342
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF", iref.target_data_prototype_ref)
|
|
1184
1343
|
|
|
1185
1344
|
def setEndToEndProtectionVariablePrototype(self, element: ET.Element, key: str, prototype: EndToEndProtectionVariablePrototype):
|
|
1186
1345
|
if prototype is not None:
|
|
@@ -1205,7 +1364,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1205
1364
|
def setEndToEndProtection(self, element: ET.Element, protection: EndToEndProtection):
|
|
1206
1365
|
if protection is not None:
|
|
1207
1366
|
child_element = ET.SubElement(element, "END-TO-END-PROTECTION")
|
|
1208
|
-
self.
|
|
1367
|
+
self.setIdentifiable(child_element, protection)
|
|
1209
1368
|
self.setEndToEndDescription(child_element, "END-TO-END-PROFILE", protection.endToEndProfile)
|
|
1210
1369
|
self.writeEndToEndProtectionVariablePrototypes(child_element, protection)
|
|
1211
1370
|
|
|
@@ -1220,21 +1379,21 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1220
1379
|
def writeEndToEndProtectionSet(self, element: ET.Element, protection_set: EndToEndProtectionSet):
|
|
1221
1380
|
self.logger.debug("writeEndToEndProtectionSet %s" % protection_set.short_name)
|
|
1222
1381
|
child_element = ET.SubElement(element, "END-TO-END-PROTECTION-SET")
|
|
1223
|
-
self.
|
|
1382
|
+
self.setIdentifiable(child_element, protection_set)
|
|
1224
1383
|
self.writeEndToEndProtections(child_element, protection_set)
|
|
1225
1384
|
|
|
1226
1385
|
def writeAutosarDataPrototype(self, element: ET.Element, prototype: AutosarDataPrototype):
|
|
1227
|
-
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.
|
|
1386
|
+
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.typeTRef)
|
|
1228
1387
|
|
|
1229
1388
|
def writeVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
|
|
1230
1389
|
self.logger.debug("writeVariableDataPrototype %s" % prototype.short_name)
|
|
1231
1390
|
child_element = ET.SubElement(element, "VARIABLE-DATA-PROTOTYPE")
|
|
1232
|
-
self.
|
|
1233
|
-
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.
|
|
1391
|
+
self.setIdentifiable(child_element, prototype)
|
|
1392
|
+
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
|
|
1234
1393
|
self.writeAutosarDataPrototype(child_element, prototype)
|
|
1235
|
-
self.setInitValue(child_element, prototype.
|
|
1394
|
+
self.setInitValue(child_element, prototype.initValue)
|
|
1236
1395
|
|
|
1237
|
-
def
|
|
1396
|
+
def writeSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1238
1397
|
data_elements = sr_interface.getDataElements()
|
|
1239
1398
|
if len(data_elements) > 0:
|
|
1240
1399
|
data_elements_tag = ET.SubElement(element, "DATA-ELEMENTS")
|
|
@@ -1244,12 +1403,22 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1244
1403
|
else:
|
|
1245
1404
|
self._raiseError("Unsupported Data Element <%s>" % type(data_element))
|
|
1246
1405
|
|
|
1406
|
+
def writeSenderReceiverInterfaceInvalidationPolicies(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1407
|
+
policies = sr_interface.getInvalidationPolicies()
|
|
1408
|
+
if len(policies) > 0:
|
|
1409
|
+
policies_tag = ET.SubElement(element, "INVALIDATION-POLICYS")
|
|
1410
|
+
for policy in policies:
|
|
1411
|
+
child_element = ET.SubElement(policies_tag, "INVALIDATION-POLICY")
|
|
1412
|
+
self.setChildElementOptionalRefType(child_element, "DATA-ELEMENT-REF", policy.getDataElementRef())
|
|
1413
|
+
self.setChildElementOptionalLiteral(child_element, "HANDLE-INVALID", policy.getHandleInvalid())
|
|
1414
|
+
|
|
1247
1415
|
def writeSenderReceiverInterface(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1248
1416
|
self.logger.debug("writeSenderReceiverInterface %s" % sr_interface.short_name)
|
|
1249
1417
|
child_element = ET.SubElement(element, "SENDER-RECEIVER-INTERFACE")
|
|
1250
|
-
self.
|
|
1251
|
-
self.setChildElementOptionalBooleanValue(child_element, "IS-SERVICE", sr_interface.
|
|
1252
|
-
self.
|
|
1418
|
+
self.setIdentifiable(child_element, sr_interface)
|
|
1419
|
+
self.setChildElementOptionalBooleanValue(child_element, "IS-SERVICE", sr_interface.isService)
|
|
1420
|
+
self.writeSenderReceiverInterfaceDataElements(child_element, sr_interface)
|
|
1421
|
+
self.writeSenderReceiverInterfaceInvalidationPolicies(child_element, sr_interface)
|
|
1253
1422
|
|
|
1254
1423
|
def writerBswModuleDescriptionImplementedEntry(self, element: ET.Element, desc: BswModuleDescription):
|
|
1255
1424
|
entries = desc.getImplementedEntries()
|
|
@@ -1260,7 +1429,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1260
1429
|
self.setChildElementOptionalRefType(entry_tag, "BSW-MODULE-ENTRY-REF", entry)
|
|
1261
1430
|
|
|
1262
1431
|
def setModeDeclarationGroupPrototype(self, element: ET.Element, prototype: ModeDeclarationGroupPrototype):
|
|
1263
|
-
self.
|
|
1432
|
+
self.setIdentifiable(element, prototype)
|
|
1264
1433
|
self.setChildElementOptionalRefType(element, "TYPE-TREF", prototype.type_tref)
|
|
1265
1434
|
|
|
1266
1435
|
def writeProvidedModeGroup(self, element: ET.Element, parent: BswModuleDescription):
|
|
@@ -1279,9 +1448,10 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1279
1448
|
self.setChildElementOptionalRefType(child_element, "CAN-ENTER-EXCLUSIVE-AREA-REF", ref)
|
|
1280
1449
|
|
|
1281
1450
|
def setExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
|
|
1282
|
-
self.
|
|
1451
|
+
self.setIdentifiable(element, entity)
|
|
1283
1452
|
self.writeCanEnterExclusiveAreaRefs(element, entity)
|
|
1284
|
-
self.setChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL", entity.
|
|
1453
|
+
self.setChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL", entity.getMinimumStartInterval())
|
|
1454
|
+
self.setChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF", entity.getSwAddrMethodRef())
|
|
1285
1455
|
|
|
1286
1456
|
def writeBswModuleEntityManagedModeGroup(self, element: ET.Element, entity: BswModuleEntity):
|
|
1287
1457
|
mode_group_refs = entity.getManagedModeGroupRefs()
|
|
@@ -1293,7 +1463,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1293
1463
|
|
|
1294
1464
|
def setBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
|
|
1295
1465
|
self.setExecutableEntity(element, entity)
|
|
1296
|
-
self.setChildElementOptionalRefType(element, "IMPLEMENTED-ENTRY-REF", entity.
|
|
1466
|
+
self.setChildElementOptionalRefType(element, "IMPLEMENTED-ENTRY-REF", entity.implementedEntryRef)
|
|
1297
1467
|
self.writeBswModuleEntityManagedModeGroup(element, entity)
|
|
1298
1468
|
|
|
1299
1469
|
def setBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
|
|
@@ -1319,7 +1489,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1319
1489
|
self._raiseError("Unsupported BswModuleEntity <%s>" % type(entity))
|
|
1320
1490
|
|
|
1321
1491
|
def setBswEvent(self, element: ET.Element, event: BswEvent):
|
|
1322
|
-
self.
|
|
1492
|
+
self.setIdentifiable(element, event)
|
|
1323
1493
|
self.setChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF", event.startsOnEventRef)
|
|
1324
1494
|
|
|
1325
1495
|
def setBswScheduleEvent(self, element: ET.Element, event: BswScheduleEvent):
|
|
@@ -1356,12 +1526,23 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1356
1526
|
else:
|
|
1357
1527
|
self._raiseError("Unsupported ModeSenderPolicy type <%s>." % type(policy))
|
|
1358
1528
|
|
|
1529
|
+
def setIncludedModeDeclarationGroupSet(self, element: ET.Element, group_set: IncludedModeDeclarationGroupSet):
|
|
1530
|
+
child_element = ET.SubElement(element, "INCLUDED-MODE-DECLARATION-GROUP-SET")
|
|
1531
|
+
|
|
1532
|
+
def writeBswInternalBehaviorIncludedModeDeclarationGroupSets(self, element: ET.Element, behavior: BswInternalBehavior):
|
|
1533
|
+
group_sets = behavior.getIncludedModeDeclarationGroupSets()
|
|
1534
|
+
if len(group_sets) > 0:
|
|
1535
|
+
child_element = ET.SubElement(element, "INCLUDED-MODE-DECLARATION-GROUP-SETS")
|
|
1536
|
+
for group_set in group_sets:
|
|
1537
|
+
self.setIncludedModeDeclarationGroupSet(child_element, group_set)
|
|
1538
|
+
|
|
1359
1539
|
def setBswInternalBehavior(self, element: ET.Element, behavior: BswInternalBehavior):
|
|
1360
1540
|
child_element = ET.SubElement(element, "BSW-INTERNAL-BEHAVIOR")
|
|
1361
1541
|
self.writeInternalBehavior(child_element, behavior)
|
|
1362
1542
|
self.writeBswInternalBehaviorBswModuleEntities(child_element, behavior)
|
|
1363
1543
|
self.writeBswInternalBehaviorBswEvents(child_element, behavior)
|
|
1364
1544
|
self.writeBswInternalBehaviorModeSenderPolicy(child_element, behavior)
|
|
1545
|
+
self.writeBswInternalBehaviorIncludedModeDeclarationGroupSets(child_element, behavior)
|
|
1365
1546
|
|
|
1366
1547
|
def writeBswModuleDescriptionInternalBehaviors(self, element: ET.Element, behaviors: List[InternalBehavior]):
|
|
1367
1548
|
if len(behaviors) > 0:
|
|
@@ -1375,7 +1556,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1375
1556
|
def writeBswModuleDescription(self, element: ET.Element, desc: BswModuleDescription):
|
|
1376
1557
|
self.logger.debug("writeBswModuleDescription %s" % desc.short_name)
|
|
1377
1558
|
child_element = ET.SubElement(element, "BSW-MODULE-DESCRIPTION")
|
|
1378
|
-
self.
|
|
1559
|
+
self.setIdentifiable(child_element, desc)
|
|
1379
1560
|
self.setChildElementOptionalNumericalValue(child_element, "MODULE-ID", desc.module_id)
|
|
1380
1561
|
self.writerBswModuleDescriptionImplementedEntry(child_element, desc)
|
|
1381
1562
|
self.writeProvidedModeGroup(child_element, desc)
|
|
@@ -1393,7 +1574,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1393
1574
|
def writeBswModuleEntry(self, element: ET.Element, entry: BswModuleEntry):
|
|
1394
1575
|
self.logger.debug("writeBswModuleDescription %s" % entry.short_name)
|
|
1395
1576
|
child_element = ET.SubElement(element, "BSW-MODULE-ENTRY")
|
|
1396
|
-
self.
|
|
1577
|
+
self.setIdentifiable(child_element, entry)
|
|
1397
1578
|
self.setChildElementOptionalNumericalValue(child_element, "SERVICE-ID", entry.service_id)
|
|
1398
1579
|
self.setChildElementOptionalBooleanValue(child_element, "IS-REENTRANT", entry.is_reentrant)
|
|
1399
1580
|
self.setChildElementOptionalBooleanValue(child_element, "IS-SYNCHRONOUS", entry.is_synchronous)
|
|
@@ -1420,7 +1601,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1420
1601
|
def setSwcBswMapping(self, element: ET.Element, mapping: SwcBswMapping):
|
|
1421
1602
|
self.logger.debug("writeBswModuleDescription %s" % mapping.short_name)
|
|
1422
1603
|
child_element = ET.SubElement(element, "SWC-BSW-MAPPING")
|
|
1423
|
-
self.
|
|
1604
|
+
self.setIdentifiable(child_element, mapping)
|
|
1424
1605
|
self.setChildElementOptionalRefType(child_element, "BSW-BEHAVIOR-REF", mapping.bswBehaviorRef)
|
|
1425
1606
|
self.writeSwcBswRunnableMappings(child_element, mapping)
|
|
1426
1607
|
self.setChildElementOptionalRefType(child_element, "SWC-BEHAVIOR-REF", mapping.swcBehaviorRef)
|
|
@@ -1467,15 +1648,17 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1467
1648
|
sub_elements_tag = ET.SubElement(element, "SUB-ELEMENTS")
|
|
1468
1649
|
for type_element in sub_elements:
|
|
1469
1650
|
child_element = ET.SubElement(sub_elements_tag, "IMPLEMENTATION-DATA-TYPE-ELEMENT")
|
|
1470
|
-
self.
|
|
1471
|
-
self.
|
|
1651
|
+
self.setIdentifiable(child_element, type_element)
|
|
1652
|
+
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE", type_element.getArraySize())
|
|
1653
|
+
self.setChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS", type_element.getArraySizeSemantics())
|
|
1654
|
+
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", type_element.swDataDefProps)
|
|
1472
1655
|
|
|
1473
1656
|
def writeImplementationDataType(self, element: ET.Element, data_type: ImplementationDataType):
|
|
1474
1657
|
self.logger.debug("writeImplementationDataType %s" % data_type.short_name)
|
|
1475
1658
|
child_element = ET.SubElement(element, "IMPLEMENTATION-DATA-TYPE")
|
|
1476
1659
|
self.writeAutosarDataType(child_element, data_type)
|
|
1477
|
-
self.setChildElementOptionalLiteral(child_element, "TYPE-EMITTER", data_type.getTypeEmitter())
|
|
1478
1660
|
self.writeImplementationDataTypeElements(child_element, data_type)
|
|
1661
|
+
self.setChildElementOptionalLiteral(child_element, "TYPE-EMITTER", data_type.getTypeEmitter())
|
|
1479
1662
|
|
|
1480
1663
|
def writeArgumentDataPrototypes(self, element: ET.Element, parent: ClientServerOperation):
|
|
1481
1664
|
arguments = parent.getArgumentDataPrototypes()
|
|
@@ -1483,8 +1666,9 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1483
1666
|
arguments_tag = ET.SubElement(element, "ARGUMENTS")
|
|
1484
1667
|
for prototype in arguments:
|
|
1485
1668
|
child_element = ET.SubElement(arguments_tag, "ARGUMENT-DATA-PROTOTYPE")
|
|
1486
|
-
self.
|
|
1487
|
-
self.
|
|
1669
|
+
self.setIdentifiable(child_element, prototype)
|
|
1670
|
+
self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", prototype.swDataDefProps)
|
|
1671
|
+
self.setChildElementOptionalRefType(child_element, "TYPE-TREF", prototype.typeTRef)
|
|
1488
1672
|
self.setChildElementOptionalLiteral(child_element, "DIRECTION", prototype.direction)
|
|
1489
1673
|
|
|
1490
1674
|
def writePossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
|
|
@@ -1497,7 +1681,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1497
1681
|
def writeClientServerOperation(self, element: ET.Element, operation: ClientServerOperation):
|
|
1498
1682
|
self.logger.debug("writeClientServerOperation %s" % operation.short_name)
|
|
1499
1683
|
child_element = ET.SubElement(element, "CLIENT-SERVER-OPERATION")
|
|
1500
|
-
self.
|
|
1684
|
+
self.setIdentifiable(child_element, operation)
|
|
1501
1685
|
self.writeArgumentDataPrototypes(child_element, operation)
|
|
1502
1686
|
self.writePossibleErrorRefs(child_element, operation)
|
|
1503
1687
|
|
|
@@ -1514,7 +1698,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1514
1698
|
def writeApplicationError(self, element: ET.Element, error: ApplicationError):
|
|
1515
1699
|
self.logger.debug("writeApplicationError %s" % error.short_name)
|
|
1516
1700
|
child_element = ET.SubElement(element, "APPLICATION-ERROR")
|
|
1517
|
-
self.
|
|
1701
|
+
self.setIdentifiable(child_element, error)
|
|
1518
1702
|
self.setChildElementOptionalNumericalValue(child_element, "ERROR-CODE", error.error_code)
|
|
1519
1703
|
|
|
1520
1704
|
def writePossibleErrors(self, element: ET.Element, parent: ClientServerInterface):
|
|
@@ -1528,8 +1712,8 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1528
1712
|
self._raiseError("Unsupported PossibleError %s" % type(error))
|
|
1529
1713
|
|
|
1530
1714
|
def setPortInterface(self, element: ET.Element, port_interface: PortInterface):
|
|
1531
|
-
self.
|
|
1532
|
-
self.setChildElementOptionalBooleanValue(element, "IS-SERVICE", port_interface.
|
|
1715
|
+
self.setIdentifiable(element, port_interface)
|
|
1716
|
+
self.setChildElementOptionalBooleanValue(element, "IS-SERVICE", port_interface.isService)
|
|
1533
1717
|
self.setChildElementOptionalLiteral(element, "SERVICE-KIND", port_interface.serviceKind)
|
|
1534
1718
|
|
|
1535
1719
|
def writeClientServerInterface(self, element: ET.Element, cs_interface: ClientServerInterface):
|
|
@@ -1587,7 +1771,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1587
1771
|
def writeSwRecordLayout(self, element: ET.Element, layout: SwRecordLayout):
|
|
1588
1772
|
self.logger.debug("writeSwRecordLayout %s" % layout.short_name)
|
|
1589
1773
|
child_element = ET.SubElement(element, "SW-RECORD-LAYOUT")
|
|
1590
|
-
self.
|
|
1774
|
+
self.setIdentifiable(child_element, layout)
|
|
1591
1775
|
self.setSwRecordLayoutGroup(child_element, "SW-RECORD-LAYOUT-GROUP", layout.swRecordLayoutGroup)
|
|
1592
1776
|
|
|
1593
1777
|
def writeSwAddrMethod(self, element: ET.Element, method: SwAddrMethod):
|
|
@@ -1619,19 +1803,20 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1619
1803
|
maps_tag = ET.SubElement(element, "MODE-REQUEST-TYPE-MAPS")
|
|
1620
1804
|
for map in maps:
|
|
1621
1805
|
child_element = ET.SubElement(maps_tag, "MODE-REQUEST-TYPE-MAP")
|
|
1806
|
+
self.setARObjectAttributes(child_element, map)
|
|
1622
1807
|
self.setChildElementOptionalRefType(child_element, "IMPLEMENTATION-DATA-TYPE-REF", map.implementation_data_type_ref)
|
|
1623
1808
|
self.setChildElementOptionalRefType(child_element, "MODE-GROUP-REF", map.mode_group_ref)
|
|
1624
1809
|
|
|
1625
1810
|
def writeDataTypeMappingSet(self, element: ET.Element, mapping_set: DataTypeMappingSet):
|
|
1626
1811
|
self.logger.debug("writeDataTypeMappingSet %s" % mapping_set.short_name)
|
|
1627
1812
|
child_element = ET.SubElement(element, "DATA-TYPE-MAPPING-SET")
|
|
1628
|
-
self.
|
|
1813
|
+
self.setIdentifiable(child_element, mapping_set)
|
|
1629
1814
|
self.writeDataTypeMaps(child_element, mapping_set)
|
|
1630
1815
|
self.writeModeRequestTypeMaps(child_element, mapping_set)
|
|
1631
1816
|
|
|
1632
1817
|
def setModeDeclaration(self, element: ET.Element, mode_declaration: ModeDeclaration):
|
|
1633
1818
|
child_element = ET.SubElement(element, "MODE-DECLARATION")
|
|
1634
|
-
self.
|
|
1819
|
+
self.setIdentifiable(child_element, mode_declaration)
|
|
1635
1820
|
self.setChildElementOptionalNumericalValue(child_element, "VALUE", mode_declaration.getValue())
|
|
1636
1821
|
|
|
1637
1822
|
def writeModeDeclarationGroupModeDeclaration(self, element: ET.Element, parent: ModeDeclarationGroup):
|
|
@@ -1644,7 +1829,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1644
1829
|
def writeModeDeclarationGroup(self, element: ET.Element, group: ModeDeclarationGroup):
|
|
1645
1830
|
self.logger.debug("writeModeDeclarationGroup %s" % group.short_name)
|
|
1646
1831
|
child_element = ET.SubElement(element, "MODE-DECLARATION-GROUP")
|
|
1647
|
-
self.
|
|
1832
|
+
self.setIdentifiable(child_element, group)
|
|
1648
1833
|
self.setChildElementOptionalRefType(child_element, "INITIAL-MODE-REF", group._initial_mode_ref)
|
|
1649
1834
|
self.writeModeDeclarationGroupModeDeclaration(child_element, group)
|
|
1650
1835
|
self.setChildElementOptionalNumericalValue(child_element, "ON-TRANSITION-VALUE", group.getOnTransitionValue())
|
|
@@ -1654,7 +1839,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1654
1839
|
if len(mode_groups) > 0:
|
|
1655
1840
|
mode_group = mode_groups[0]
|
|
1656
1841
|
child_element = ET.SubElement(element, "MODE-GROUP")
|
|
1657
|
-
self.
|
|
1842
|
+
self.setIdentifiable(child_element, mode_group)
|
|
1658
1843
|
self.setChildElementOptionalRefType(child_element, "TYPE-TREF", mode_group.type_tref)
|
|
1659
1844
|
|
|
1660
1845
|
def writeModeSwitchInterface(self, element: ET.Element, mode_interface: ModeSwitchInterface):
|
|
@@ -1663,6 +1848,640 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1663
1848
|
self.setPortInterface(child_element, mode_interface)
|
|
1664
1849
|
self.writeModeSwitchInterfaceModeGroup(child_element, mode_interface)
|
|
1665
1850
|
|
|
1851
|
+
def setEOCExecutableEntityRefSuccessorRefs(self, element: ET.Element, successor_refs: List[RefType]):
|
|
1852
|
+
if len(successor_refs) > 0:
|
|
1853
|
+
child_element = ET.SubElement(element, "SUCCESSOR-REFS")
|
|
1854
|
+
for successor_ref in successor_refs:
|
|
1855
|
+
self.setChildElementOptionalRefType(child_element, "SUCCESSOR-REF", successor_ref)
|
|
1856
|
+
|
|
1857
|
+
def writeEOCExecutableEntityRef(self, element: ET.Element, entity_ref: EOCExecutableEntityRef):
|
|
1858
|
+
child_element = ET.SubElement(element, "EOC-EXECUTABLE-ENTITY-REF")
|
|
1859
|
+
self.setIdentifiable(child_element, entity_ref)
|
|
1860
|
+
self.setEOCExecutableEntityRefSuccessorRefs(child_element, entity_ref.getSuccessorRefs())
|
|
1861
|
+
|
|
1862
|
+
def writeExecutionOrderConstraintOrderedElement(self, element: ET.Element, constraint: ExecutionOrderConstraint):
|
|
1863
|
+
order_elements = constraint.getOrderedElements()
|
|
1864
|
+
if len(order_elements) > 0:
|
|
1865
|
+
child_element = ET.SubElement(element, "ORDERED-ELEMENTS")
|
|
1866
|
+
for order_element in order_elements:
|
|
1867
|
+
if isinstance(order_element, EOCExecutableEntityRef):
|
|
1868
|
+
self.writeEOCExecutableEntityRef(child_element, order_element)
|
|
1869
|
+
else:
|
|
1870
|
+
self._raiseError("Unsupported order element <%s>" % type(order_element))
|
|
1871
|
+
|
|
1872
|
+
def writeExecutionOrderConstraint(self, element: ET.Element, constraint: ExecutionOrderConstraint):
|
|
1873
|
+
self.logger.debug("writeExecutionOrderConstraint %s" % constraint.short_name)
|
|
1874
|
+
child_element = ET.SubElement(element, "EXECUTION-ORDER-CONSTRAINT")
|
|
1875
|
+
self.setIdentifiable(child_element, constraint)
|
|
1876
|
+
self.writeExecutionOrderConstraintOrderedElement(child_element, constraint)
|
|
1877
|
+
|
|
1878
|
+
def writeTimingRequirements(self, element: ET.Element, extension: TimingExtension):
|
|
1879
|
+
requirements = extension.getTimingRequirements()
|
|
1880
|
+
if len(requirements) > 0:
|
|
1881
|
+
child_element = ET.SubElement(element, "TIMING-REQUIREMENTS")
|
|
1882
|
+
for requirement in requirements:
|
|
1883
|
+
if isinstance(requirement, ExecutionOrderConstraint):
|
|
1884
|
+
self.writeExecutionOrderConstraint(child_element, requirement)
|
|
1885
|
+
else:
|
|
1886
|
+
self._raiseError("Unsupported timing requirement <%s>" % type(requirement))
|
|
1887
|
+
|
|
1888
|
+
def writeTimingExtension(self, element: ET.Element, extension: TimingExtension):
|
|
1889
|
+
self.writeTimingRequirements(element, extension)
|
|
1890
|
+
|
|
1891
|
+
def writeSwcTiming(self, element: ET.Element, timing: SwcTiming):
|
|
1892
|
+
self.logger.debug("writeSWcTiming %s" % timing.short_name)
|
|
1893
|
+
child_element = ET.SubElement(element, "SWC-TIMING")
|
|
1894
|
+
self.setIdentifiable(child_element, timing)
|
|
1895
|
+
self.writeTimingExtension(child_element, timing)
|
|
1896
|
+
|
|
1897
|
+
def writePduToFrameMappings(self, element: ET.Element, parent: Frame):
|
|
1898
|
+
mappings = parent.getPduToFrameMappings()
|
|
1899
|
+
if len(mappings) > 0:
|
|
1900
|
+
mappings_tags = ET.SubElement(element, "PDU-TO-FRAME-MAPPINGS")
|
|
1901
|
+
for mapping in mappings:
|
|
1902
|
+
child_element = ET.SubElement(mappings_tags, "PDU-TO-FRAME-MAPPING")
|
|
1903
|
+
self.setIdentifiable(child_element, mapping)
|
|
1904
|
+
self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.packingByteOrder)
|
|
1905
|
+
self.setChildElementOptionalRefType(child_element, "PDU-REF", mapping.pduRef)
|
|
1906
|
+
self.setChildElementOptionalNumericalValue(child_element, "START-POSITION", mapping.startPosition)
|
|
1907
|
+
|
|
1908
|
+
def writeFrame(self, element: ET.Element, frame: Frame):
|
|
1909
|
+
self.setIdentifiable(element, frame)
|
|
1910
|
+
self.setChildElementOptionalNumericalValue(element, "FRAME-LENGTH", frame.frameLength)
|
|
1911
|
+
self.writePduToFrameMappings(element, frame)
|
|
1912
|
+
|
|
1913
|
+
def writeLinUnconditionalFrame(self, element: ET.Element, frame: LinUnconditionalFrame):
|
|
1914
|
+
self.logger.debug("LinUnconditionalFrame %s" % frame.short_name)
|
|
1915
|
+
child_element = ET.SubElement(element, "LIN-UNCONDITIONAL-FRAME")
|
|
1916
|
+
self.writeFrame(child_element, frame)
|
|
1917
|
+
|
|
1918
|
+
def writeNmNode(self, element: ET.Element, nm_node: NmNode):
|
|
1919
|
+
self.setChildElementOptionalRefType(element, "CONTROLLER-REF", nm_node.getControllerRef())
|
|
1920
|
+
self.setChildElementOptionalRefType(element, "NM-IF-ECU-REF", nm_node.getNmIfEcuRef())
|
|
1921
|
+
self.setChildElementOptionalNumericalValue(element, "NM-NODE-ID", nm_node.getNmNodeId())
|
|
1922
|
+
|
|
1923
|
+
refs = nm_node.getRxNmPduRefs()
|
|
1924
|
+
if len(refs) > 0:
|
|
1925
|
+
refs_tag = ET.SubElement(element, "RX-NM-PDU-REFS")
|
|
1926
|
+
for ref in refs:
|
|
1927
|
+
self.setChildElementOptionalRefType(refs_tag, "RX-NM-PDU-REF", ref)
|
|
1928
|
+
|
|
1929
|
+
refs = nm_node.getTxNmPduRefs()
|
|
1930
|
+
if len(refs) > 0:
|
|
1931
|
+
refs_tag = ET.SubElement(element, "TX-NM-PDU-REFS")
|
|
1932
|
+
for ref in refs:
|
|
1933
|
+
self.setChildElementOptionalRefType(refs_tag, "TX-NM-PDU-REF", ref)
|
|
1934
|
+
|
|
1935
|
+
def writeCanNmNode(self, element: ET.Element, nm_node: CanNmNode):
|
|
1936
|
+
self.logger.debug("writeCanNmNode %s" % nm_node.short_name)
|
|
1937
|
+
child_element = ET.SubElement(element, "CAN-NM-NODE")
|
|
1938
|
+
self.setIdentifiable(child_element, nm_node)
|
|
1939
|
+
self.writeNmNode(child_element, nm_node)
|
|
1940
|
+
|
|
1941
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-CYCLE-OFFSET", nm_node.getNmMsgCycleOffset())
|
|
1942
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-REDUCED-TIME", nm_node.getNmMsgReducedTime())
|
|
1943
|
+
self.setChildElementRxIdentifierRange(child_element, "NM-RANGE-CONFIG", nm_node.getNmRangeConfig())
|
|
1944
|
+
|
|
1945
|
+
def writeNmClusterNmNodes(self, element: ET.Element, parent: NmCluster):
|
|
1946
|
+
nodes = parent.getNmNodes()
|
|
1947
|
+
if len(nodes) > 0:
|
|
1948
|
+
child_element = ET.SubElement(element, "NM-NODES")
|
|
1949
|
+
for node in nodes:
|
|
1950
|
+
if isinstance(node, CanNmNode):
|
|
1951
|
+
self.writeCanNmNode(child_element, node)
|
|
1952
|
+
else:
|
|
1953
|
+
self._raiseError("Unsupported Nm Node <%s>" % type(node))
|
|
1954
|
+
|
|
1955
|
+
def setCanNmClusterCoupling(self, element: ET.Element, coupling: CanNmClusterCoupling):
|
|
1956
|
+
child_element = ET.SubElement(element, "CAN-NM-CLUSTER-COUPLING")
|
|
1957
|
+
refs = coupling.getCoupledClusterRefs()
|
|
1958
|
+
if len(refs) > 0:
|
|
1959
|
+
refs_tag = ET.SubElement(child_element, "COUPLED-CLUSTER-REFS")
|
|
1960
|
+
for ref in refs:
|
|
1961
|
+
self.setChildElementOptionalRefType(refs_tag, "COUPLED-CLUSTER-REF", ref)
|
|
1962
|
+
|
|
1963
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ENABLED", coupling.getNmBusloadReductionEnabled())
|
|
1964
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-IMMEDIATE-RESTART-ENABLED", coupling.getNmImmediateRestartEnabled())
|
|
1965
|
+
|
|
1966
|
+
def writeNmConfigNmClusterCouplings(self, element: ET.Element, config: NmConfig):
|
|
1967
|
+
self.logger.debug("writeNmConfigNmClusterCouplings %s" % config.getShortName())
|
|
1968
|
+
couplings = config.getNmClusterCouplings()
|
|
1969
|
+
if len(couplings) > 0:
|
|
1970
|
+
child_element= ET.SubElement(element, "NM-CLUSTER-COUPLINGS")
|
|
1971
|
+
for coupling in couplings:
|
|
1972
|
+
if isinstance(coupling, CanNmClusterCoupling):
|
|
1973
|
+
self.setCanNmClusterCoupling(child_element, coupling)
|
|
1974
|
+
else:
|
|
1975
|
+
self._raiseError("Unsupported Nm Cluster Coupling <%s>" % type(coupling))
|
|
1976
|
+
|
|
1977
|
+
def writeNmCluster(self, element: ET.Element, cluster: NmCluster):
|
|
1978
|
+
self.setChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF", cluster.communicationClusterRef)
|
|
1979
|
+
self.setChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID", cluster.nmChannelId)
|
|
1980
|
+
self.setChildElementOptionalBooleanValue(element, "NM-CHANNEL-SLEEP-MASTER", cluster.nmChannelSleepMaster)
|
|
1981
|
+
self.writeNmClusterNmNodes(element, cluster)
|
|
1982
|
+
self.setChildElementOptionalBooleanValue(element, "NM-SYNCHRONIZING-NETWORK", cluster.getNmSynchronizingNetwork())
|
|
1983
|
+
|
|
1984
|
+
def writeCanNmCluster(self, element: ET.Element, cluster: CanNmCluster):
|
|
1985
|
+
self.logger.debug("WriteCanNmCluster %s" % cluster.short_name)
|
|
1986
|
+
child_element = ET.SubElement(element, "CAN-NM-CLUSTER")
|
|
1987
|
+
self.setIdentifiable(child_element, cluster)
|
|
1988
|
+
self.writeNmCluster(child_element, cluster)
|
|
1989
|
+
|
|
1990
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-BUSLOAD-REDUCTION-ACTIVE", cluster.getNmBusloadReductionActive())
|
|
1991
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-CAR-WAKE-UP-RX-ENABLED", cluster.getNmCarWakeUpRxEnabled())
|
|
1992
|
+
self.setChildElementOptionalNumericalValue(child_element, "NM-CBV-POSITION", cluster.getNmCbvPosition())
|
|
1993
|
+
self.setChildElementOptionalBooleanValue(child_element, "NM-CHANNEL-ACTIVE", cluster.getNmChannelActive())
|
|
1994
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-IMMEDIATE-NM-CYCLE-TIME", cluster.getNmImmediateNmCycleTime())
|
|
1995
|
+
self.setChildElementOptionalNumericalValue(child_element, "NM-IMMEDIATE-NM-TRANSMISSIONS", cluster.getNmImmediateNmTransmissions())
|
|
1996
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-MESSAGE-TIMEOUT-TIME", cluster.getNmMessageTimeoutTime())
|
|
1997
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-MSG-CYCLE-TIME", cluster.getNmMsgCycleTime())
|
|
1998
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-NETWORK-TIMEOUT", cluster.getNmNetworkTimeout())
|
|
1999
|
+
self.setChildElementOptionalNumericalValue(child_element, "NM-NID-POSITION", cluster.getNmNidPosition())
|
|
2000
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-REMOTE-SLEEP-INDICATION-TIME", cluster.getNmRemoteSleepIndicationTime())
|
|
2001
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-REPEAT-MESSAGE-TIME", cluster.getNmRepeatMessageTime())
|
|
2002
|
+
self.setChildElementOptionalNumericalValue(child_element, "NM-USER-DATA-LENGTH", cluster.getNmUserDataLength())
|
|
2003
|
+
self.setChildElementOptionalFloatValue(child_element, "NM-WAIT-BUS-SLEEP-TIME", cluster.getNmWaitBusSleepTime())
|
|
2004
|
+
|
|
2005
|
+
def writeNmConfigNmClusters(self, element: ET.Element, parent: NmConfig):
|
|
2006
|
+
clusters = parent.getNmClusters()
|
|
2007
|
+
if len(clusters) > 0:
|
|
2008
|
+
child_element = ET.SubElement(element, "NM-CLUSTERS")
|
|
2009
|
+
for cluster in clusters:
|
|
2010
|
+
if isinstance(cluster, CanNmCluster):
|
|
2011
|
+
self.writeCanNmCluster(child_element, cluster)
|
|
2012
|
+
else:
|
|
2013
|
+
self._raiseError("Unsupported Nm Cluster <%s>" % type(cluster))
|
|
2014
|
+
|
|
2015
|
+
def writeNmConfig(self, element: ET.Element, config: NmConfig):
|
|
2016
|
+
self.logger.debug("WriteNmConfig %s" % config.short_name)
|
|
2017
|
+
child_element = ET.SubElement(element, "NM-CONFIG")
|
|
2018
|
+
self.setIdentifiable(child_element, config)
|
|
2019
|
+
self.writeNmConfigNmClusters(child_element, config)
|
|
2020
|
+
self.writeNmConfigNmClusterCouplings(child_element, config)
|
|
2021
|
+
|
|
2022
|
+
def writeNmPdu(self, element: ET.Element, pdu: NmPdu):
|
|
2023
|
+
self.logger.debug("NmPdu %s" % pdu.short_name)
|
|
2024
|
+
child_element = ET.SubElement(element, "NM-PDU")
|
|
2025
|
+
self.setIdentifiable(child_element, pdu)
|
|
2026
|
+
self.writeIPdu(child_element, pdu)
|
|
2027
|
+
|
|
2028
|
+
def writeNPdu(self, element: ET.Element, pdu: NPdu):
|
|
2029
|
+
self.logger.debug("NPdu %s" % pdu.short_name)
|
|
2030
|
+
child_element = ET.SubElement(element, "N-PDU")
|
|
2031
|
+
self.setIdentifiable(child_element, pdu)
|
|
2032
|
+
self.writeIPdu(child_element, pdu)
|
|
2033
|
+
|
|
2034
|
+
def writeIPdu(self, element: ET.Element, pdu: IPdu):
|
|
2035
|
+
self.setChildElementOptionalLiteral(element, "LENGTH", pdu.getLength())
|
|
2036
|
+
|
|
2037
|
+
def writeDcmIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
2038
|
+
self.logger.debug("DcmIPdu %s" % pdu.short_name)
|
|
2039
|
+
child_element = ET.SubElement(element, "DCM-I-PDU")
|
|
2040
|
+
self.setIdentifiable(child_element, pdu)
|
|
2041
|
+
self.writeIPdu(child_element, pdu)
|
|
2042
|
+
self.setChildElementOptionalLiteral(child_element, "DIAG-PDU-TYPE", pdu.getDiagPduType())
|
|
2043
|
+
|
|
2044
|
+
def writeSecuredIPdu(self, element: ET.Element, pdu: DcmIPdu):
|
|
2045
|
+
self.logger.debug("SecuredIPdu %s" % pdu.short_name)
|
|
2046
|
+
child_element = ET.SubElement(element, "SECURED-I-PDU")
|
|
2047
|
+
self.setIdentifiable(child_element, pdu)
|
|
2048
|
+
self.writeIPdu(child_element, pdu)
|
|
2049
|
+
|
|
2050
|
+
def writeCanTpConfig(self, element: ET.Element, config: CanTpConfig):
|
|
2051
|
+
self.logger.debug("CanTpConfig %s" % config.short_name)
|
|
2052
|
+
child_element = ET.SubElement(element, "CAN-TP-CONFIG")
|
|
2053
|
+
self.setIdentifiable(child_element, config)
|
|
2054
|
+
|
|
2055
|
+
def writeFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
|
|
2056
|
+
ref_list = triggering.getFramePortRefs()
|
|
2057
|
+
if len(ref_list) > 0:
|
|
2058
|
+
frame_port_refs_tag = ET.SubElement(element, "FRAME-PORT-REFS")
|
|
2059
|
+
for ref in ref_list:
|
|
2060
|
+
self.setChildElementOptionalRefType(frame_port_refs_tag, "FRAME-PORT-REF", ref)
|
|
2061
|
+
self.setChildElementOptionalRefType(element, "FRAME-REF", triggering.getFrameRef())
|
|
2062
|
+
|
|
2063
|
+
refs = triggering.getPduTriggeringRefs()
|
|
2064
|
+
if len(refs) > 0:
|
|
2065
|
+
triggerings_tag = ET.SubElement(element, "PDU-TRIGGERINGS")
|
|
2066
|
+
for ref in refs:
|
|
2067
|
+
child_element = ET.SubElement(triggerings_tag, 'PDU-TRIGGERING-REF-CONDITIONAL')
|
|
2068
|
+
self.setChildElementOptionalRefType(child_element, "PDU-TRIGGERING-REF", ref)
|
|
2069
|
+
|
|
2070
|
+
def writeCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
|
|
2071
|
+
self.logger.debug("WRite CanFrameTriggering %s" % triggering.getShortName())
|
|
2072
|
+
child_element = ET.SubElement(element, "CAN-FRAME-TRIGGERING")
|
|
2073
|
+
self.setIdentifiable(child_element, triggering)
|
|
2074
|
+
self.writeFrameTriggering(child_element, triggering)
|
|
2075
|
+
self.setChildElementOptionalLiteral(child_element, "CAN-ADDRESSING-MODE", triggering.getCanAddressingMode())
|
|
2076
|
+
self.setChildElementOptionalBooleanValue(child_element, "CAN-FD-FRAME-SUPPORT", triggering.getCanFdFrameSupport())
|
|
2077
|
+
self.setChildElementOptionalLiteral(child_element, "CAN-FRAME-RX-BEHAVIOR", triggering.getCanFrameRxBehavior())
|
|
2078
|
+
self.setChildElementOptionalLiteral(child_element, "CAN-FRAME-TX-BEHAVIOR", triggering.getCanFrameTxBehavior())
|
|
2079
|
+
self.setChildElementOptionalNumericalValue(child_element, "IDENTIFIER", triggering.getIdentifier())
|
|
2080
|
+
self.setChildElementRxIdentifierRange(child_element, "RX-IDENTIFIER-RANGE", triggering.getRxIdentifierRange())
|
|
2081
|
+
|
|
2082
|
+
def writeLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
|
|
2083
|
+
self.logger.debug("Write LinFrameTriggering %s" % triggering.getShortName())
|
|
2084
|
+
child_element = ET.SubElement(element, "LIN-FRAME-TRIGGERING")
|
|
2085
|
+
self.setIdentifiable(child_element, triggering)
|
|
2086
|
+
self.writeFrameTriggering(child_element, triggering)
|
|
2087
|
+
self.setChildElementOptionalNumericalValue(child_element, "IDENTIFIER", triggering.getIdentifier())
|
|
2088
|
+
self.setChildElementOptionalLiteral(child_element, "LIN-CHECKSUM", triggering.getLinChecksum())
|
|
2089
|
+
|
|
2090
|
+
def writeISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
|
|
2091
|
+
self.logger.debug("Write ISignalTriggering %s" % triggering.getShortName())
|
|
2092
|
+
child_element = ET.SubElement(element, "I-SIGNAL-TRIGGERING")
|
|
2093
|
+
self.setIdentifiable(child_element, triggering)
|
|
2094
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", triggering.getISignalGroupRef())
|
|
2095
|
+
ref_list = triggering.getISignalPortRefs()
|
|
2096
|
+
if len(ref_list) > 0:
|
|
2097
|
+
i_signal_port_refs_tag = ET.SubElement(child_element, "I-SIGNAL-PORT-REFS")
|
|
2098
|
+
for ref in ref_list:
|
|
2099
|
+
self.setChildElementOptionalRefType(i_signal_port_refs_tag, "I-SIGNAL-PORT-REF", ref)
|
|
2100
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-REF", triggering.getISignalRef())
|
|
2101
|
+
|
|
2102
|
+
def writePduTriggering(self, element: ET.Element, triggering: PduTriggering):
|
|
2103
|
+
self.logger.debug("Write PduTriggering %s" % triggering.getShortName())
|
|
2104
|
+
child_element = ET.SubElement(element, "PDU-TRIGGERING")
|
|
2105
|
+
self.setIdentifiable(child_element, triggering)
|
|
2106
|
+
ref_list = triggering.getIPduPortRefs()
|
|
2107
|
+
if len(ref_list) > 0:
|
|
2108
|
+
i_signal_port_refs_tag = ET.SubElement(child_element, "I-PDU-PORT-REFS")
|
|
2109
|
+
for ref in ref_list:
|
|
2110
|
+
self.setChildElementOptionalRefType(i_signal_port_refs_tag, "I-PDU-PORT-REF", ref)
|
|
2111
|
+
self.setChildElementOptionalRefType(child_element, "I-PDU-REF", triggering.getIPduRef())
|
|
2112
|
+
|
|
2113
|
+
refs = triggering.getISignalTriggeringRefs()
|
|
2114
|
+
if len(refs) > 0:
|
|
2115
|
+
triggerings_tag = ET.SubElement(child_element, "I-SIGNAL-TRIGGERINGS")
|
|
2116
|
+
for ref in refs:
|
|
2117
|
+
child_element = ET.SubElement(triggerings_tag, 'I-SIGNAL-TRIGGERING-REF-CONDITIONAL')
|
|
2118
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-TRIGGERING-REF", ref)
|
|
2119
|
+
|
|
2120
|
+
def writePhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
|
|
2121
|
+
connectors = channel.getCommConnectorRefs()
|
|
2122
|
+
if len(connectors) > 0:
|
|
2123
|
+
connectors_tag = ET.SubElement(element, "COMM-CONNECTORS")
|
|
2124
|
+
for connector in connectors:
|
|
2125
|
+
child_element = ET.SubElement(connectors_tag, 'COMMUNICATION-CONNECTOR-REF-CONDITIONAL')
|
|
2126
|
+
self.setChildElementOptionalRefType(child_element, "COMMUNICATION-CONNECTOR-REF", connector)
|
|
2127
|
+
|
|
2128
|
+
triggerings = channel.getFrameTriggerings()
|
|
2129
|
+
if len(triggerings) > 0:
|
|
2130
|
+
triggerings_tag = ET.SubElement(element, "FRAME-TRIGGERINGS")
|
|
2131
|
+
for triggering in triggerings:
|
|
2132
|
+
if isinstance(triggering, CanFrameTriggering):
|
|
2133
|
+
self.writeCanFrameTriggering(triggerings_tag, triggering)
|
|
2134
|
+
elif isinstance(triggering, LinFrameTriggering):
|
|
2135
|
+
self.writeLinFrameTriggering(triggerings_tag, triggering)
|
|
2136
|
+
else:
|
|
2137
|
+
raise NotImplementedError("Unsupported Frame Triggering <%s>" % type(triggering))
|
|
2138
|
+
|
|
2139
|
+
triggerings = channel.getISignalTriggerings()
|
|
2140
|
+
if len(triggerings) > 0:
|
|
2141
|
+
triggerings_tag = ET.SubElement(element, "I-SIGNAL-TRIGGERINGS")
|
|
2142
|
+
for triggering in triggerings:
|
|
2143
|
+
if isinstance(triggering, ISignalTriggering):
|
|
2144
|
+
self.writeISignalTriggering(triggerings_tag, triggering)
|
|
2145
|
+
else:
|
|
2146
|
+
raise NotImplementedError("Unsupported ISignalTriggering <%s>" % type(triggering))
|
|
2147
|
+
|
|
2148
|
+
triggerings = channel.getPduTriggerings()
|
|
2149
|
+
if len(triggerings) > 0:
|
|
2150
|
+
triggerings_tag = ET.SubElement(element, "PDU-TRIGGERINGS")
|
|
2151
|
+
for triggering in triggerings:
|
|
2152
|
+
if isinstance(triggering, PduTriggering):
|
|
2153
|
+
self.writePduTriggering(triggerings_tag, triggering)
|
|
2154
|
+
else:
|
|
2155
|
+
raise NotImplementedError("Unsupported PduTriggering <%s>" % type(triggering))
|
|
2156
|
+
|
|
2157
|
+
def writeCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
|
|
2158
|
+
self.logger.debug("CanPhysicalChannel %s" % channel.short_name)
|
|
2159
|
+
child_element = ET.SubElement(element, "CAN-PHYSICAL-CHANNEL")
|
|
2160
|
+
self.setIdentifiable(child_element, channel)
|
|
2161
|
+
self.writePhysicalChannel(child_element, channel)
|
|
2162
|
+
|
|
2163
|
+
def writeLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2164
|
+
self.logger.debug("LinPhysicalChannel %s" % channel.short_name)
|
|
2165
|
+
child_element = ET.SubElement(element, "LIN-PHYSICAL-CHANNEL")
|
|
2166
|
+
self.setIdentifiable(child_element, channel)
|
|
2167
|
+
self.writePhysicalChannel(child_element, channel)
|
|
2168
|
+
|
|
2169
|
+
def writeCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2170
|
+
channels = cluster.getPhysicalChannels()
|
|
2171
|
+
if len(channels) > 0:
|
|
2172
|
+
child_element = ET.SubElement(element, "PHYSICAL-CHANNELS")
|
|
2173
|
+
for channel in channels:
|
|
2174
|
+
if isinstance(channel, CanPhysicalChannel):
|
|
2175
|
+
self.writeCanPhysicalChannel(child_element, channel)
|
|
2176
|
+
elif isinstance(channel, LinPhysicalChannel):
|
|
2177
|
+
self.writeLinPhysicalChannel(child_element, channel)
|
|
2178
|
+
else:
|
|
2179
|
+
raise NotImplementedError("Unsupported Physical Channel <%s>" % type(channel))
|
|
2180
|
+
|
|
2181
|
+
def writeCommunicationCluster(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2182
|
+
self.setChildElementOptionalNumericalValue(element, "BAUDRATE", cluster.getBaudrate())
|
|
2183
|
+
self.writeCommunicationClusterPhysicalChannels(element, cluster)
|
|
2184
|
+
self.setChildElementOptionalLiteral(element, "PROTOCOL-NAME", cluster.getProtocolName())
|
|
2185
|
+
self.setChildElementOptionalLiteral(element, "PROTOCOL-VERSION", cluster.getProtocolVersion())
|
|
2186
|
+
|
|
2187
|
+
def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
|
|
2188
|
+
self.setChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE", cluster.getCanFdBaudrate())
|
|
2189
|
+
|
|
2190
|
+
def writeLinCluster(self, element: ET.Element, cluster: LinCluster):
|
|
2191
|
+
self.logger.debug("LinCluster %s" % cluster.short_name)
|
|
2192
|
+
child_element = ET.SubElement(element, "LIN-CLUSTER")
|
|
2193
|
+
self.setIdentifiable(child_element, cluster)
|
|
2194
|
+
child_element = ET.SubElement(child_element, "LIN-CLUSTER-VARIANTS")
|
|
2195
|
+
child_element = ET.SubElement(child_element, "LIN-CLUSTER-CONDITIONAL")
|
|
2196
|
+
self.writeCommunicationCluster(child_element, cluster)
|
|
2197
|
+
|
|
2198
|
+
def writeCanCluster(self, element: ET.Element, cluster: CanCluster):
|
|
2199
|
+
self.logger.debug("CanCluster %s" % cluster.short_name)
|
|
2200
|
+
child_element = ET.SubElement(element, "CAN-CLUSTER")
|
|
2201
|
+
self.setIdentifiable(child_element, cluster)
|
|
2202
|
+
|
|
2203
|
+
child_element = ET.SubElement(child_element, "CAN-CLUSTER-VARIANTS")
|
|
2204
|
+
child_element = ET.SubElement(child_element, "CAN-CLUSTER-CONDITIONAL")
|
|
2205
|
+
self.writeCommunicationCluster(child_element, cluster)
|
|
2206
|
+
self.readAbstractCanCluster(child_element, cluster)
|
|
2207
|
+
|
|
2208
|
+
def writeCanFrame(self, element: ET.Element, frame: CanFrame):
|
|
2209
|
+
self.logger.debug("CanFrame %s" % frame.short_name)
|
|
2210
|
+
child_element = ET.SubElement(element, "CAN-FRAME")
|
|
2211
|
+
self.writeFrame(child_element, frame)
|
|
2212
|
+
|
|
2213
|
+
def writeEcuInstance(self, element: ET.Element, instance: EcuInstance):
|
|
2214
|
+
self.logger.debug("EcuInstance %s" % instance.short_name)
|
|
2215
|
+
child_element = ET.SubElement(element, "ECU-INSTANCE")
|
|
2216
|
+
self.setIdentifiable(child_element, instance)
|
|
2217
|
+
|
|
2218
|
+
def writeSystemSignalGroup(self, element: ET.Element, group: SystemSignalGroup):
|
|
2219
|
+
self.logger.debug("Write SystemSignalGroup %s" % group.short_name)
|
|
2220
|
+
child_element = ET.SubElement(element, "SYSTEM-SIGNAL-GROUP")
|
|
2221
|
+
self.setIdentifiable(child_element, group)
|
|
2222
|
+
signal_refs = group.getSystemSignalRefs()
|
|
2223
|
+
if len(signal_refs) > 0:
|
|
2224
|
+
signal_refs_tag = ET.SubElement(child_element, "SYSTEM-SIGNAL-REFS")
|
|
2225
|
+
for signal_ref in signal_refs:
|
|
2226
|
+
self.setChildElementOptionalRefType(signal_refs_tag, "SYSTEM-SIGNAL-REF", signal_ref)
|
|
2227
|
+
|
|
2228
|
+
def setSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
|
|
2229
|
+
child_element = ET.SubElement(element, "SENDER-RECEIVER-TO-SIGNAL-MAPPING")
|
|
2230
|
+
self.setVariableDataPrototypeInSystemInstanceRef(child_element, "DATA-ELEMENT-IREF", mapping.getDataElementIRef())
|
|
2231
|
+
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", mapping.getSystemSignalRef())
|
|
2232
|
+
|
|
2233
|
+
def setSenderReceiverToSignalGroupMapping(self, element: ET.Element, mapping: SenderReceiverToSignalGroupMapping):
|
|
2234
|
+
child_element = ET.SubElement(element, "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING")
|
|
2235
|
+
self.setVariableDataPrototypeInSystemInstanceRef(child_element, "DATA-ELEMENT-IREF", mapping.getDataElementIRef())
|
|
2236
|
+
self.setChildElementOptionalRefType(child_element, "SIGNAL-GROUP-REF", mapping.getSignalGroupRef())
|
|
2237
|
+
|
|
2238
|
+
def writeSystemMappingDataMappings(self, element: ET.Element, system_mapping: SystemMapping):
|
|
2239
|
+
data_mappings = system_mapping.getDataMappings()
|
|
2240
|
+
if len(data_mappings) > 0:
|
|
2241
|
+
child_element = ET.SubElement(element, "DATA-MAPPINGS")
|
|
2242
|
+
for data_mapping in data_mappings:
|
|
2243
|
+
if isinstance(data_mapping, SenderReceiverToSignalMapping):
|
|
2244
|
+
self.setSenderReceiverToSignalMapping(child_element, data_mapping)
|
|
2245
|
+
elif isinstance(data_mapping, SenderReceiverToSignalGroupMapping):
|
|
2246
|
+
self.setSenderReceiverToSignalGroupMapping(child_element, data_mapping)
|
|
2247
|
+
else:
|
|
2248
|
+
raise NotImplementedError("Unsupported Data Mapping %s" % type(data_mapping))
|
|
2249
|
+
|
|
2250
|
+
def writeSystemMapping(self, element: ET.Element, mapping: SystemMapping):
|
|
2251
|
+
self.logger.debug("Write SystemMapping %s" % mapping.short_name)
|
|
2252
|
+
child_element = ET.SubElement(element, "SYSTEM-MAPPING")
|
|
2253
|
+
self.setIdentifiable(child_element, mapping)
|
|
2254
|
+
self.writeSystemMappingDataMappings(child_element, mapping)
|
|
2255
|
+
|
|
2256
|
+
def writeSystemMappings(self, element: ET.Element, system: System):
|
|
2257
|
+
mappings = system.getMappings()
|
|
2258
|
+
if len(mappings) > 0:
|
|
2259
|
+
mappings_tag = ET.SubElement(element, "MAPPINGS")
|
|
2260
|
+
for mapping in mappings:
|
|
2261
|
+
if isinstance(mapping, SystemMapping):
|
|
2262
|
+
self.writeSystemMapping(mappings_tag, mapping)
|
|
2263
|
+
else:
|
|
2264
|
+
raise NotImplementedError("Unsupported Mapping %s" % type(mapping))
|
|
2265
|
+
|
|
2266
|
+
def writeSystem(self, element: ET.Element, system: System):
|
|
2267
|
+
self.logger.debug("Write System %s" % system.short_name)
|
|
2268
|
+
child_element = ET.SubElement(element, "SYSTEM")
|
|
2269
|
+
self.setARElement(child_element, system)
|
|
2270
|
+
|
|
2271
|
+
self.setChildElementOptionalLiteral(child_element, "ECU-EXTRACT-VERSION", system.getEcuExtractVersion())
|
|
2272
|
+
refs = system.getFibexElementRefs()
|
|
2273
|
+
if len(refs) > 0:
|
|
2274
|
+
fibex_elements_tag = ET.SubElement(child_element, "FIBEX-ELEMENTS")
|
|
2275
|
+
for ref in refs:
|
|
2276
|
+
fibex_element_ref_conditional_tag = ET.SubElement(fibex_elements_tag, "FIBEX-ELEMENT-REF-CONDITIONAL")
|
|
2277
|
+
self.setChildElementOptionalRefType(fibex_element_ref_conditional_tag, "FIBEX-ELEMENT-REF", ref)
|
|
2278
|
+
|
|
2279
|
+
self.writeSystemMappings(child_element, system)
|
|
2280
|
+
|
|
2281
|
+
def writePhysicalDimension(self, element: ET.Element, dimension: PhysicalDimension):
|
|
2282
|
+
self.logger.debug("Write PhysicalDimension %s" % dimension.short_name)
|
|
2283
|
+
child_element = ET.SubElement(element, "PHYSICAL-DIMENSION")
|
|
2284
|
+
self.setARElement(child_element, dimension)
|
|
2285
|
+
self.setChildElementOptionalNumericalValue(child_element, "CURRENT-EXP", dimension.getCurrentExp())
|
|
2286
|
+
self.setChildElementOptionalNumericalValue(child_element, "LENGTH-EXP", dimension.getLengthExp())
|
|
2287
|
+
|
|
2288
|
+
def setISignalMappings(self, element: ET.Element, mappings: List[ISignalMapping]):
|
|
2289
|
+
if len(mappings) > 0:
|
|
2290
|
+
mappings_tag = ET.SubElement(element, "SIGNAL-MAPPINGS")
|
|
2291
|
+
for mapping in mappings:
|
|
2292
|
+
child_element = ET.SubElement(mappings_tag, "I-SIGNAL-MAPPING")
|
|
2293
|
+
self.setChildElementOptionalRefType(child_element, "SOURCE-SIGNAL-REF", mapping.sourceSignalRef)
|
|
2294
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-SIGNAL-REF", mapping.targetSignalRef)
|
|
2295
|
+
|
|
2296
|
+
def writeGateway(self, element: ET.Element, gateway: Gateway):
|
|
2297
|
+
self.logger.debug("Gateway %s" % gateway.short_name)
|
|
2298
|
+
child_element = ET.SubElement(element, "GATEWAY")
|
|
2299
|
+
self.setIdentifiable(child_element, gateway)
|
|
2300
|
+
self.setChildElementOptionalRefType(child_element, "ECU-REF", gateway.ecuRef)
|
|
2301
|
+
self.setISignalMappings(child_element, gateway.getSignalMappings())
|
|
2302
|
+
|
|
2303
|
+
def writeISignal(self, element: ET.Element, signal: ISignal):
|
|
2304
|
+
self.logger.debug("ISignal %s" % signal.short_name)
|
|
2305
|
+
child_element = ET.SubElement(element, "I-SIGNAL")
|
|
2306
|
+
self.setIdentifiable(child_element, signal)
|
|
2307
|
+
self.setChildElementOptionalLiteral(child_element, "DATA-TYPE-POLICY", signal.dataTypePolicy)
|
|
2308
|
+
self.setInitValue(child_element, signal.initValue)
|
|
2309
|
+
self.setChildElementOptionalNumericalValue(child_element, "LENGTH", signal.length)
|
|
2310
|
+
self.setSwDataDefProps(child_element, "NETWORK-REPRESENTATION-PROPS", signal.networkRepresentationProps)
|
|
2311
|
+
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-REF", signal.systemSignalRef)
|
|
2312
|
+
|
|
2313
|
+
def writeEcucValueCollectionEcucValues(self, element: ET.Element, collection: EcucValueCollection):
|
|
2314
|
+
value_refs = collection.getEcucValueRefs()
|
|
2315
|
+
if len(value_refs) > 0:
|
|
2316
|
+
ecuc_values_tag = ET.SubElement(element, "ECUC-VALUES")
|
|
2317
|
+
for value_ref in value_refs:
|
|
2318
|
+
child_element = ET.SubElement(ecuc_values_tag, "ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL")
|
|
2319
|
+
self.setChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF", value_ref)
|
|
2320
|
+
|
|
2321
|
+
def writeEcucValueCollection(self, element: ET.Element, collection: EcucValueCollection):
|
|
2322
|
+
self.logger.debug("EcucValueCollection %s" % collection.short_name)
|
|
2323
|
+
child_element = ET.SubElement(element, "ECUC-VALUE-COLLECTION")
|
|
2324
|
+
self.setIdentifiable(child_element, collection)
|
|
2325
|
+
self.setChildElementOptionalRefType(child_element, "ECU-EXTRACT-REF", collection.getEcuExtractRef())
|
|
2326
|
+
self.writeEcucValueCollectionEcucValues(child_element, collection)
|
|
2327
|
+
|
|
2328
|
+
def writeEcucContainerValueSubContainers(self, element: ET.Element, container: EcucContainerValue):
|
|
2329
|
+
sub_containers = container.getSubContainers()
|
|
2330
|
+
if len(sub_containers) > 0:
|
|
2331
|
+
sub_containers_tag = ET.SubElement(element, "SUB-CONTAINERS")
|
|
2332
|
+
for sub_container in sub_containers:
|
|
2333
|
+
if isinstance(sub_container, EcucContainerValue):
|
|
2334
|
+
self.writeEcucContainValue(sub_containers_tag, sub_container)
|
|
2335
|
+
else:
|
|
2336
|
+
raise NotImplementedError("Unsupported Sub Container %s" % type(container))
|
|
2337
|
+
|
|
2338
|
+
def writeEcucParameterValue(self, element: ET.Element, param_value: EcucParameterValue):
|
|
2339
|
+
self.setChildElementOptionalRefType(element, "DEFINITION-REF", param_value.getDefinitionRef())
|
|
2340
|
+
self.setAnnotations(element, param_value.getAnnotations())
|
|
2341
|
+
|
|
2342
|
+
def setEcucTextualParamValue(self, element: ET.Element, param_value: EcucTextualParamValue):
|
|
2343
|
+
child_element = ET.SubElement(element, "ECUC-TEXTUAL-PARAM-VALUE")
|
|
2344
|
+
self.writeEcucParameterValue(child_element, param_value)
|
|
2345
|
+
self.setChildElementOptionalLiteral(child_element, "VALUE", param_value.getValue())
|
|
2346
|
+
|
|
2347
|
+
def setEcucNumericalParamValue(self, element: ET.Element, param_value: EcucNumericalParamValue):
|
|
2348
|
+
child_element = ET.SubElement(element, "ECUC-NUMERICAL-PARAM-VALUE")
|
|
2349
|
+
self.writeEcucParameterValue(child_element, param_value)
|
|
2350
|
+
self.setChildElementOptionalNumericalValue(child_element, "VALUE", param_value.getValue())
|
|
2351
|
+
|
|
2352
|
+
def writeEcucContainerValueParameterValues(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2353
|
+
param_values = container_value.getParameterValues()
|
|
2354
|
+
if len(param_values) > 0:
|
|
2355
|
+
child_element = ET.SubElement(element, "PARAMETER-VALUES")
|
|
2356
|
+
for param_value in param_values:
|
|
2357
|
+
if isinstance(param_value, EcucTextualParamValue):
|
|
2358
|
+
self.setEcucTextualParamValue(child_element, param_value)
|
|
2359
|
+
elif isinstance(param_value, EcucNumericalParamValue):
|
|
2360
|
+
self.setEcucNumericalParamValue(child_element, param_value)
|
|
2361
|
+
else:
|
|
2362
|
+
raise NotImplementedError("Unsupported EcucParameterValue <%s>" % type(param_value))
|
|
2363
|
+
|
|
2364
|
+
def writeEcucAbstractReferenceValue(self, element: ET.Element, value: EcucAbstractReferenceValue):
|
|
2365
|
+
self.setChildElementOptionalRefType(element, "DEFINITION-REF", value.getDefinitionRef())
|
|
2366
|
+
self.setAnnotations(element, value.getAnnotations())
|
|
2367
|
+
|
|
2368
|
+
def setEcucReferenceValue(self, element: ET.Element, value = EcucReferenceValue()):
|
|
2369
|
+
child_element = ET.SubElement(element, "ECUC-REFERENCE-VALUE")
|
|
2370
|
+
self.writeEcucAbstractReferenceValue(child_element, value)
|
|
2371
|
+
self.setChildElementOptionalRefType(child_element, "VALUE-REF", value.getValueRef())
|
|
2372
|
+
return value
|
|
2373
|
+
|
|
2374
|
+
def setAnyInstanceRef(self, element: ET.Element, key, instance_ref: AnyInstanceRef):
|
|
2375
|
+
if instance_ref is not None:
|
|
2376
|
+
child_element = ET.SubElement(element, key)
|
|
2377
|
+
self.setChildElementOptionalRefType(child_element, "BASE-REF", instance_ref.getBaseRef())
|
|
2378
|
+
self.setChildElementOptionalRefType(child_element, "CONTEXT-ELEMENT-REF", instance_ref.getContextElementRef())
|
|
2379
|
+
self.setChildElementOptionalRefType(child_element, "TARGET-REF", instance_ref.getTargetRef())
|
|
2380
|
+
return instance_ref
|
|
2381
|
+
|
|
2382
|
+
def setEcucInstanceReferenceValue(self, element: ET.Element, value : EcucInstanceReferenceValue):
|
|
2383
|
+
child_element = ET.SubElement(element, "ECUC-INSTANCE-REFERENCE-VALUE")
|
|
2384
|
+
self.writeEcucAbstractReferenceValue(child_element, value)
|
|
2385
|
+
self.setAnyInstanceRef(child_element, "VALUE-IREF", value.getValueIRef())
|
|
2386
|
+
return value
|
|
2387
|
+
|
|
2388
|
+
def writeEcucContainerValueReferenceValues(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2389
|
+
reference_values = container_value.getReferenceValues()
|
|
2390
|
+
if len(reference_values) > 0:
|
|
2391
|
+
child_element = ET.SubElement(element, "REFERENCE-VALUES")
|
|
2392
|
+
for reference_value in reference_values:
|
|
2393
|
+
if isinstance(reference_value, EcucReferenceValue):
|
|
2394
|
+
self.setEcucReferenceValue(child_element, reference_value)
|
|
2395
|
+
elif isinstance(reference_value, EcucInstanceReferenceValue):
|
|
2396
|
+
self.setEcucInstanceReferenceValue(child_element, reference_value)
|
|
2397
|
+
else:
|
|
2398
|
+
raise NotImplementedError("Unsupported EcucParameterValue <%s>" % type(reference_value))
|
|
2399
|
+
|
|
2400
|
+
def writeEcucContainValue(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2401
|
+
self.logger.debug("EcucContainerValue %s" % container_value.short_name)
|
|
2402
|
+
child_element = ET.SubElement(element, "ECUC-CONTAINER-VALUE")
|
|
2403
|
+
self.setIdentifiable(child_element, container_value)
|
|
2404
|
+
self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", container_value.getDefinitionRef())
|
|
2405
|
+
self.writeEcucContainerValueParameterValues(child_element, container_value)
|
|
2406
|
+
self.writeEcucContainerValueReferenceValues(child_element, container_value)
|
|
2407
|
+
self.writeEcucContainerValueSubContainers(child_element, container_value)
|
|
2408
|
+
|
|
2409
|
+
def writeEcucModuleConfigurationValuesContainers(self, element: ET.Element, value: EcucModuleConfigurationValues):
|
|
2410
|
+
containers = value.getContainers()
|
|
2411
|
+
if len(containers) > 0:
|
|
2412
|
+
containers_tag = ET.SubElement(element, "CONTAINERS")
|
|
2413
|
+
for container in containers:
|
|
2414
|
+
if isinstance(container, EcucContainerValue):
|
|
2415
|
+
self.writeEcucContainValue(containers_tag, container)
|
|
2416
|
+
else:
|
|
2417
|
+
raise NotImplementedError("Unsupported Container %s" % type(container))
|
|
2418
|
+
|
|
2419
|
+
def writeEcucModuleConfigurationValues(self, element: ET.Element, values: EcucModuleConfigurationValues):
|
|
2420
|
+
self.logger.debug("EcucModuleConfigurationValues %s" % values.short_name)
|
|
2421
|
+
child_element = ET.SubElement(element, "ECUC-MODULE-CONFIGURATION-VALUES")
|
|
2422
|
+
self.setIdentifiable(child_element, values)
|
|
2423
|
+
self.setChildElementOptionalRefType(child_element, "DEFINITION-REF", values.getDefinitionRef())
|
|
2424
|
+
self.setChildElementOptionalLiteral(child_element, "IMPLEMENTATION-CONFIG-VARIANT", values.getImplementationConfigVariant())
|
|
2425
|
+
self.setChildElementOptionalRefType(child_element, "MODULE-DESCRIPTION-REF", values.getModuleDescriptionRef())
|
|
2426
|
+
self.writeEcucModuleConfigurationValuesContainers(child_element, values)
|
|
2427
|
+
|
|
2428
|
+
def writeISignalGroup(self, element: ET.Element, group: ISignalGroup):
|
|
2429
|
+
self.logger.debug("ISignalGroup %s" % group.short_name)
|
|
2430
|
+
child_element = ET.SubElement(element, "I-SIGNAL-GROUP")
|
|
2431
|
+
self.setIdentifiable(child_element, group)
|
|
2432
|
+
signal_refs = group.getISignalRefs()
|
|
2433
|
+
if len(signal_refs) > 0:
|
|
2434
|
+
signal_refs_tag = ET.SubElement(child_element, "I-SIGNAL-REFS")
|
|
2435
|
+
for signal_ref in signal_refs:
|
|
2436
|
+
self.setChildElementOptionalRefType(signal_refs_tag, "I-SIGNAL-REF", signal_ref)
|
|
2437
|
+
self.setChildElementOptionalRefType(child_element, "SYSTEM-SIGNAL-GROUP-REF", group.getSystemSignalGroupRef())
|
|
2438
|
+
|
|
2439
|
+
def writeISignalIPduGroup(self, element: ET.Element, group: ISignalIPduGroup):
|
|
2440
|
+
self.logger.debug("ISignalIPduGroup %s" % group.short_name)
|
|
2441
|
+
child_element = ET.SubElement(element, "I-SIGNAL-I-PDU-GROUP")
|
|
2442
|
+
self.setIdentifiable(child_element, group)
|
|
2443
|
+
self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-DIRECTION", group.getCommunicationDirection())
|
|
2444
|
+
self.setChildElementOptionalLiteral(child_element, "COMMUNICATION-MODE", group.getCommunicationMode())
|
|
2445
|
+
group_refs = group.getContainedISignalIPduGroupRefs()
|
|
2446
|
+
if len(group_refs) > 0:
|
|
2447
|
+
pdu_refs_tag = ET.SubElement(child_element, "CONTAINED-I-SIGNAL-I-PDU-GROUP-REFS")
|
|
2448
|
+
for pdu_ref in group_refs:
|
|
2449
|
+
self.setChildElementOptionalRefType(pdu_refs_tag, "CONTAINED-I-SIGNAL-I-PDU-GROUP-REF", pdu_ref)
|
|
2450
|
+
pdu_refs = group.getISignalIPduRefs()
|
|
2451
|
+
if len(pdu_refs) > 0:
|
|
2452
|
+
pdu_refs_tag = ET.SubElement(child_element, "I-SIGNAL-I-PDUS")
|
|
2453
|
+
for pdu_ref in pdu_refs:
|
|
2454
|
+
ref_conditional_tag = ET.SubElement(pdu_refs_tag, "I-SIGNAL-I-PDU-REF-CONDITIONAL")
|
|
2455
|
+
self.setChildElementOptionalRefType(ref_conditional_tag, "I-SIGNAL-I-PDU-REF", pdu_ref)
|
|
2456
|
+
|
|
2457
|
+
def writeSystemSignal(self, element: ET.Element, signal: SystemSignal):
|
|
2458
|
+
self.logger.debug("SystemSignal %s" % signal.short_name)
|
|
2459
|
+
child_element = ET.SubElement(element, "SYSTEM-SIGNAL")
|
|
2460
|
+
self.setIdentifiable(child_element, signal)
|
|
2461
|
+
self.setChildElementOptionalBooleanValue(child_element, "DYNAMIC-LENGTH", signal.getDynamicLength())
|
|
2462
|
+
|
|
2463
|
+
def writeISignalToPduMappings(self, element: ET.Element, parent: ISignalIPdu):
|
|
2464
|
+
mappings = parent.getISignalToPduMappings()
|
|
2465
|
+
if len(mappings) > 0:
|
|
2466
|
+
mappings_tag = ET.SubElement(element, "I-SIGNAL-TO-PDU-MAPPINGS")
|
|
2467
|
+
for mapping in mappings:
|
|
2468
|
+
child_element = ET.SubElement(mappings_tag, "I-SIGNAL-TO-I-PDU-MAPPING")
|
|
2469
|
+
self.setIdentifiable(child_element, mapping)
|
|
2470
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-REF", mapping.getISignalRef())
|
|
2471
|
+
self.setChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF", mapping.getISignalGroupRef())
|
|
2472
|
+
self.setChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER", mapping.getPackingByteOrder())
|
|
2473
|
+
self.setChildElementOptionalNumericalValue(child_element, "START-POSITION", mapping.getStartPosition())
|
|
2474
|
+
self.setChildElementOptionalLiteral(child_element, "TRANSFER-PROPERTY", mapping.getTransferProperty())
|
|
2475
|
+
self.setChildElementOptionalNumericalValue(child_element, "UPDATE-INDICATION-BIT-POSITION", mapping.getUpdateIndicationBitPosition())
|
|
2476
|
+
|
|
2477
|
+
def writeISignalIPdu(self, element: ET.Element, i_pdu: ISignalIPdu):
|
|
2478
|
+
self.logger.debug("ISignalIPdu %s" % i_pdu.short_name)
|
|
2479
|
+
child_element = ET.SubElement(element, "I-SIGNAL-I-PDU")
|
|
2480
|
+
self.setIdentifiable(child_element, i_pdu)
|
|
2481
|
+
self.setChildElementOptionalNumericalValue(child_element, "LENGTH", i_pdu.getLength())
|
|
2482
|
+
self.writeISignalToPduMappings(child_element, i_pdu)
|
|
2483
|
+
self.setChildElementOptionalLiteral(child_element, "UNUSED-BIT-PATTERN", i_pdu.getUnusedBitPattern())
|
|
2484
|
+
|
|
1666
2485
|
def writeARPackageElement(self, element: ET.Element, ar_element: ARElement):
|
|
1667
2486
|
if isinstance(ar_element, ComplexDeviceDriverSwComponentType):
|
|
1668
2487
|
self.writeComplexDeviceDriverSwComponentType(element, ar_element)
|
|
@@ -1720,6 +2539,52 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1720
2539
|
self.writeModeDeclarationGroup(element, ar_element)
|
|
1721
2540
|
elif isinstance(ar_element, ModeSwitchInterface):
|
|
1722
2541
|
self.writeModeSwitchInterface(element, ar_element)
|
|
2542
|
+
elif isinstance(ar_element, SwcTiming):
|
|
2543
|
+
self.writeSwcTiming(element, ar_element)
|
|
2544
|
+
elif isinstance(ar_element, LinUnconditionalFrame):
|
|
2545
|
+
self.writeLinUnconditionalFrame(element, ar_element)
|
|
2546
|
+
elif isinstance(ar_element, NmConfig):
|
|
2547
|
+
self.writeNmConfig(element, ar_element)
|
|
2548
|
+
elif isinstance(ar_element, NmPdu):
|
|
2549
|
+
self.writeNmPdu(element, ar_element)
|
|
2550
|
+
elif isinstance(ar_element, NPdu):
|
|
2551
|
+
self.writeNPdu(element, ar_element)
|
|
2552
|
+
elif isinstance(ar_element, DcmIPdu):
|
|
2553
|
+
self.writeDcmIPdu(element, ar_element)
|
|
2554
|
+
elif isinstance(ar_element, SecuredIPdu):
|
|
2555
|
+
self.writeSecuredIPdu(element, ar_element)
|
|
2556
|
+
elif isinstance(ar_element, CanTpConfig):
|
|
2557
|
+
self.writeCanTpConfig(element, ar_element)
|
|
2558
|
+
elif isinstance(ar_element, LinCluster):
|
|
2559
|
+
self.writeLinCluster(element, ar_element)
|
|
2560
|
+
elif isinstance(ar_element, CanCluster):
|
|
2561
|
+
self.writeCanCluster(element, ar_element)
|
|
2562
|
+
elif isinstance(ar_element, CanFrame):
|
|
2563
|
+
self.writeCanFrame(element, ar_element)
|
|
2564
|
+
elif isinstance(ar_element, Gateway):
|
|
2565
|
+
self.writeGateway(element, ar_element)
|
|
2566
|
+
elif isinstance(ar_element, ISignal):
|
|
2567
|
+
self.writeISignal(element, ar_element)
|
|
2568
|
+
elif isinstance(ar_element, EcucValueCollection):
|
|
2569
|
+
self.writeEcucValueCollection(element, ar_element)
|
|
2570
|
+
elif isinstance(ar_element, EcucModuleConfigurationValues):
|
|
2571
|
+
self.writeEcucModuleConfigurationValues(element, ar_element)
|
|
2572
|
+
elif isinstance(ar_element, ISignalGroup):
|
|
2573
|
+
self.writeISignalGroup(element, ar_element)
|
|
2574
|
+
elif isinstance(ar_element, ISignalIPduGroup):
|
|
2575
|
+
self.writeISignalIPduGroup(element, ar_element)
|
|
2576
|
+
elif isinstance(ar_element, SystemSignal):
|
|
2577
|
+
self.writeSystemSignal(element, ar_element)
|
|
2578
|
+
elif isinstance(ar_element, ISignalIPdu):
|
|
2579
|
+
self.writeISignalIPdu(element, ar_element)
|
|
2580
|
+
elif isinstance(ar_element, EcuInstance):
|
|
2581
|
+
self.writeEcuInstance(element, ar_element)
|
|
2582
|
+
elif isinstance(ar_element, SystemSignalGroup):
|
|
2583
|
+
self.writeSystemSignalGroup(element, ar_element)
|
|
2584
|
+
elif isinstance(ar_element, System):
|
|
2585
|
+
self.writeSystem(element, ar_element)
|
|
2586
|
+
elif isinstance(ar_element, PhysicalDimension):
|
|
2587
|
+
self.writePhysicalDimension(element, ar_element)
|
|
1723
2588
|
else:
|
|
1724
2589
|
raise NotImplementedError("Unsupported Elements of ARPackage <%s>" % type(ar_element))
|
|
1725
2590
|
|
|
@@ -1730,7 +2595,7 @@ class ARXMLWriter(AbstractARXMLWriter):
|
|
|
1730
2595
|
for pkg in pkgs:
|
|
1731
2596
|
pkg_tag = ET.SubElement(pkgs_tag, "AR-PACKAGE")
|
|
1732
2597
|
|
|
1733
|
-
self.
|
|
2598
|
+
self.setIdentifiable(pkg_tag, pkg)
|
|
1734
2599
|
self.logger.debug("writeARPackage %s" % pkg.full_name)
|
|
1735
2600
|
|
|
1736
2601
|
if pkg.getTotalElement() > 0:
|