armodel 1.5.0__py3-none-any.whl → 1.6.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/cli/arxml_dump_cli.py +13 -13
- armodel/cli/memory_section_cli.py +76 -0
- armodel/cli/system_signal_cli.py +74 -0
- armodel/lib/__init__.py +2 -1
- armodel/lib/system_signal.py +37 -0
- armodel/models/__init__.py +6 -3
- armodel/models/annotation.py +27 -3
- armodel/models/ar_object.py +18 -6
- armodel/models/ar_package.py +124 -14
- armodel/models/ar_ref.py +109 -62
- armodel/models/bsw_module_template.py +37 -14
- armodel/models/common_structure.py +132 -147
- armodel/models/communication.py +1 -1
- armodel/models/data_prototype.py +41 -6
- armodel/models/datatype.py +11 -5
- armodel/models/fibex/can_communication.py +119 -3
- armodel/models/fibex/fibex_4_can/__init__.py +0 -0
- armodel/models/fibex/fibex_4_lin/__init__.py +0 -0
- armodel/models/fibex/fibex_4_multiplatform.py +81 -88
- armodel/models/fibex/fibex_core/__init__.py +0 -0
- armodel/models/fibex/fibex_core/core_communication.py +627 -0
- armodel/models/fibex/fibex_core/core_topology.py +180 -0
- armodel/models/fibex/lin_communication.py +24 -3
- armodel/models/general_structure.py +101 -8
- armodel/models/m2/__init__.py +0 -0
- armodel/models/m2/autosar_templates/__init__.py +0 -0
- armodel/models/m2/autosar_templates/common_structure/__init__.py +188 -0
- armodel/models/m2/autosar_templates/common_structure/constants.py +0 -0
- armodel/models/m2/autosar_templates/ecuc_description_template.py +268 -0
- armodel/models/m2/autosar_templates/sw_component_template/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/communication.py +316 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/instance_refs.py +149 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface.py +236 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/__init__.py +203 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/access_count.py +13 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/data_elements.py +54 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/mode_declaration_group.py +39 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/server_call.py +26 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/trigger.py +10 -0
- armodel/models/m2/autosar_templates/system_template/__init__.py +321 -0
- armodel/models/m2/autosar_templates/system_template/data_mapping.py +88 -0
- armodel/models/m2/autosar_templates/system_template/network_management.py +554 -0
- armodel/models/m2/autosar_templates/system_template/transport_protocols.py +7 -0
- armodel/models/m2/msr/__init__.py +0 -0
- armodel/models/m2/msr/asam_hdo/__init__.py +0 -0
- armodel/models/m2/msr/asam_hdo/units.py +105 -0
- armodel/models/m2/msr/data_dictionary/__init__.py +0 -0
- armodel/models/m2/msr/data_dictionary/auxillary_objects.py +42 -0
- armodel/models/m2/msr/data_dictionary/data_def_properties.py +295 -0
- armodel/models/m2/msr/documentation/__init__.py +0 -0
- armodel/models/m2/msr/documentation/block_elements.py +18 -0
- armodel/models/multilanguage_data.py +15 -0
- armodel/models/per_instance_memory.py +34 -6
- armodel/models/port_prototype.py +12 -174
- armodel/models/sw_component.py +14 -216
- armodel/parser/abstract_arxml_parser.py +10 -1
- armodel/parser/arxml_parser.py +803 -186
- armodel/tests/test_armodel/models/test_ar_package.py +1 -1
- armodel/tests/test_armodel/models/test_ar_ref.py +3 -3
- armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -5
- armodel/tests/test_armodel/models/test_common_structure.py +3 -3
- armodel/tests/test_armodel/models/test_data_dictionary.py +5 -5
- armodel/tests/test_armodel/models/test_data_prototype.py +1 -1
- armodel/tests/test_armodel/models/test_datatype.py +1 -1
- armodel/tests/test_armodel/models/test_port_interface.py +1 -1
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +3 -3
- armodel/tests/test_armodel/parser/test_sw_components.py +2 -2
- armodel/writer/arxml_writer.py +832 -196
- {armodel-1.5.0.dist-info → armodel-1.6.0.dist-info}/METADATA +24 -1
- armodel-1.6.0.dist-info/RECORD +127 -0
- {armodel-1.5.0.dist-info → armodel-1.6.0.dist-info}/entry_points.txt +3 -1
- armodel-1.5.0.dist-info/RECORD +0 -91
- {armodel-1.5.0.dist-info → armodel-1.6.0.dist-info}/LICENSE +0 -0
- {armodel-1.5.0.dist-info → armodel-1.6.0.dist-info}/WHEEL +0 -0
- {armodel-1.5.0.dist-info → armodel-1.6.0.dist-info}/top_level.txt +0 -0
armodel/parser/arxml_parser.py
CHANGED
|
@@ -1,17 +1,32 @@
|
|
|
1
1
|
from typing import List
|
|
2
2
|
import xml.etree.ElementTree as ET
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
from ..models.
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
from ..models.m2.autosar_templates.common_structure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
|
|
6
|
+
from ..models.m2.autosar_templates.sw_component_template.components.instance_refs import PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef
|
|
7
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior import RunnableEntityArgument
|
|
8
|
+
from ..models.m2.msr.data_dictionary.data_def_properties import SwDataDefProps
|
|
9
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior.mode_declaration_group import ModeAccessPoint, ModeSwitchPoint
|
|
10
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior.server_call import ServerCallPoint
|
|
11
|
+
from ..models.m2.autosar_templates.sw_component_template.communication import ClientComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
12
|
+
from ..models.fibex.lin_communication import LinFrameTriggering
|
|
13
|
+
from ..models.fibex.fibex_core.core_topology import AbstractCanCluster, CanPhysicalChannel, CommunicationCluster, LinPhysicalChannel, PhysicalChannel
|
|
14
|
+
from ..models.m2.msr.documentation.block_elements import DocumentationBlock
|
|
15
|
+
from ..models.m2.autosar_templates.system_template import System, SystemMapping
|
|
16
|
+
from ..models.m2.autosar_templates.system_template.data_mapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
17
|
+
from ..models.m2.autosar_templates.system_template.network_management import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
|
|
18
|
+
from ..models.fibex.can_communication import CanFrameTriggering, RxIdentifierRange
|
|
19
|
+
from ..models.m2.autosar_templates.ecuc_description_template import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
|
|
20
|
+
from ..models.fibex.fibex_4_multiplatform import ISignalMapping
|
|
21
|
+
from ..models.fibex.fibex_core.core_communication import Frame, FrameTriggering, IPdu, ISignalIPdu, ISignalTriggering, PduTriggering
|
|
7
22
|
from ..models.internal_behavior import IncludedDataTypeSet
|
|
8
23
|
from ..models.timing import ExecutionOrderConstraint, TimingExtension
|
|
9
24
|
from ..models.bsw_module_template import BswModeSenderPolicy
|
|
10
|
-
from ..models.port_interface import ModeSwitchInterface, PortInterface
|
|
25
|
+
from ..models.m2.autosar_templates.sw_component_template.port_interface import InvalidationPolicy, ModeSwitchInterface, PortInterface
|
|
11
26
|
from ..models.common_structure import IncludedModeDeclarationGroupSet, MemorySection, ModeDeclarationGroup, ModeDeclarationGroupPrototype, ModeRequestTypeMap
|
|
12
27
|
from ..models.implementation import BswImplementation, EngineeringObject
|
|
13
28
|
from ..models.general_structure import MultilanguageReferrable
|
|
14
|
-
from ..models.multilanguage_data import LOverviewParagraph, MultiLanguageOverviewParagraph, LLongName, MultilanguageLongName
|
|
29
|
+
from ..models.multilanguage_data import LOverviewParagraph, MultiLanguageOverviewParagraph, LLongName, MultiLanguageParagraph, MultilanguageLongName
|
|
15
30
|
from ..models.data_def_properties import ValueList
|
|
16
31
|
from ..models.record_layout import SwRecordLayoutGroup, SwRecordLayoutGroupContent, SwRecordLayoutV
|
|
17
32
|
from ..models.datatype import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, AutosarDataType, BaseTypeDirectDefinition
|
|
@@ -22,20 +37,18 @@ from ..models.service_mapping import RoleBasedPortAssignment
|
|
|
22
37
|
from ..models.ar_package import AUTOSAR, ARPackage
|
|
23
38
|
from ..models.ar_object import ARLiteral
|
|
24
39
|
from ..models.service_needs import RoleBasedDataAssignment
|
|
25
|
-
from ..models.ar_ref import ApplicationCompositeElementInPortInterfaceInstanceRef, InnerPortGroupInCompositionInstanceRef,
|
|
26
|
-
from ..models.sw_component import AtomicSwComponentType, CompositionSwComponentType,
|
|
27
|
-
from ..models.data_prototype import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype
|
|
40
|
+
from ..models.ar_ref import AnyInstanceRef, ApplicationCompositeElementInPortInterfaceInstanceRef, InnerPortGroupInCompositionInstanceRef, RefType, VariableDataPrototypeInSystemInstanceRef, VariableInAtomicSWCTypeInstanceRef, AutosarParameterRef
|
|
41
|
+
from ..models.sw_component import AtomicSwComponentType, CompositionSwComponentType, PortAPIOption, PortDefinedArgumentValue, PortGroup, ServiceDependency, SwComponentType, SwcServiceDependency
|
|
42
|
+
from ..models.data_prototype import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
28
43
|
from ..models.port_prototype import ModeSwitchReceiverComSpec, QueuedReceiverComSpec
|
|
29
44
|
from ..models.annotation import Annotation, GeneralAnnotation
|
|
30
45
|
from ..models.global_constraints import InternalConstrs, DataConstr, DataConstrRule, PhysConstrs
|
|
31
46
|
|
|
32
|
-
from ..models import SwcInternalBehavior, RunnableEntity, RTEEvent,
|
|
47
|
+
from ..models import SwcInternalBehavior, RunnableEntity, RTEEvent, OperationInvokedEvent, DataReceivedEvent, RVariableInAtomicSwcInstanceRef
|
|
33
48
|
from ..models import SwcModeSwitchEvent, RModeInAtomicSwcInstanceRef
|
|
34
49
|
from ..models import AutosarVariableRef, POperationInAtomicSwcInstanceRef, ROperationInAtomicSwcInstanceRef
|
|
35
|
-
from ..models import ImplementationDataType,
|
|
50
|
+
from ..models import ImplementationDataType, SwPointerTargetProps, DataTypeMappingSet, DataTypeMap, ImplementationDataTypeElement
|
|
36
51
|
from ..models import RPortPrototype, PPortPrototype
|
|
37
|
-
from ..models import ReceiverComSpec, ClientComSpec, NonqueuedReceiverComSpec
|
|
38
|
-
from ..models import SenderComSpec, NonqueuedSenderComSpec, ServerComSpec
|
|
39
52
|
from ..models import SenderReceiverInterface, ClientServerInterface, ClientServerOperation, ArgumentDataPrototype
|
|
40
53
|
from ..models import Identifiable, AdminData, Sdg, Sd
|
|
41
54
|
from ..models import AssemblySwConnector, PPortInCompositionInstanceRef, RPortInCompositionInstanceRef
|
|
@@ -45,8 +58,6 @@ from ..models import InternalBehavior, ExecutableEntity
|
|
|
45
58
|
from ..models import Implementation, Code, AutosarEngineeringObject, ResourceConsumption
|
|
46
59
|
from ..models import TransmissionAcknowledgementRequest
|
|
47
60
|
from ..models import BswModuleDescription, BswInternalBehavior, BswModuleEntity, BswScheduleEvent, SwcBswMapping, SwcBswRunnableMapping
|
|
48
|
-
from ..models import ValueSpecification, ApplicationValueSpecification, TextValueSpecification, NumericalValueSpecification, ArrayValueSpecification, ConstantReference
|
|
49
|
-
from ..models import RecordValueSpecification
|
|
50
61
|
from ..models import ApplicationRecordDataType
|
|
51
62
|
from ..models import SwValueCont, SwValues
|
|
52
63
|
|
|
@@ -55,29 +66,31 @@ from .abstract_arxml_parser import AbstractARXMLParser
|
|
|
55
66
|
class ARXMLParser(AbstractARXMLParser):
|
|
56
67
|
def __init__(self, options=None) -> None:
|
|
57
68
|
super().__init__(options)
|
|
69
|
+
|
|
70
|
+
def getChildElementRxIdentifierRange(self, element: ET.Element, key: str) -> RxIdentifierRange:
|
|
71
|
+
child_element = self.find(element, key)
|
|
72
|
+
range = None
|
|
73
|
+
if child_element is not None:
|
|
74
|
+
range = RxIdentifierRange()
|
|
75
|
+
range.setLowerCanId(self.getChildElementOptionalNumericalValue(child_element, "LOWER-CAN-ID")) \
|
|
76
|
+
.setUpperCanId(self.getChildElementOptionalNumericalValue(child_element, "UPPER-CAN-ID"))
|
|
77
|
+
return range
|
|
58
78
|
|
|
59
|
-
def getShortName(self, element: ET.Element) -> str:
|
|
60
|
-
child_element = self.find(element, "SHORT-NAME")
|
|
61
|
-
if child_element is None:
|
|
62
|
-
raise ValueError("Short Name is required")
|
|
63
|
-
return child_element.text
|
|
64
|
-
|
|
65
79
|
def readSd(self, element: ET.Element, sdg: Sdg):
|
|
66
80
|
for child_element in self.findall(element, "./SD"):
|
|
67
81
|
sd = Sd()
|
|
68
82
|
if 'GID' in child_element.attrib:
|
|
69
|
-
sd.
|
|
70
|
-
sd.
|
|
83
|
+
sd.setGID(child_element.attrib['GID'])
|
|
84
|
+
sd.setValue(child_element.text)
|
|
71
85
|
sdg.addSd(sd)
|
|
72
86
|
|
|
73
87
|
def getSdg(self, element: ET.Element) -> Sdg:
|
|
74
88
|
sdg = Sdg()
|
|
75
89
|
if 'GID' in element.attrib:
|
|
76
|
-
sdg.
|
|
90
|
+
sdg.setGID(element.attrib["GID"])
|
|
77
91
|
self.readSd(element, sdg)
|
|
78
|
-
child_element
|
|
79
|
-
|
|
80
|
-
sdg.sdg_contents_type = self.getSdg(child_element)
|
|
92
|
+
for child_element in self.findall(element, "SDG"):
|
|
93
|
+
sdg.addSdgContentsType(self.getSdg(child_element))
|
|
81
94
|
return sdg
|
|
82
95
|
|
|
83
96
|
def readSdgs(self, element: ET.Element, admin_data: AdminData):
|
|
@@ -90,16 +103,21 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
90
103
|
self.logger.debug("readAdminData")
|
|
91
104
|
admin_data = AdminData()
|
|
92
105
|
self.readSdgs(child_element, admin_data)
|
|
93
|
-
identifiable.admin_data
|
|
106
|
+
identifiable.setAdminData(admin_data)
|
|
94
107
|
|
|
95
108
|
def readMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
|
|
96
109
|
self.readElementAttributes(element, referrable)
|
|
97
|
-
referrable.
|
|
110
|
+
referrable.setLongName(self.getMultilanguageLongName(element, "LONG-NAME"))
|
|
98
111
|
|
|
99
112
|
def readIdentifiable(self, element: ET.Element, identifiable: Identifiable):
|
|
100
113
|
self.readMultilanguageReferrable(element, identifiable)
|
|
101
|
-
|
|
102
|
-
|
|
114
|
+
|
|
115
|
+
for annotation in self.getAnnotations(element):
|
|
116
|
+
identifiable.addAnnotation(annotation)
|
|
117
|
+
|
|
118
|
+
identifiable.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
119
|
+
.setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC"))
|
|
120
|
+
|
|
103
121
|
self.readAdminData(element, identifiable)
|
|
104
122
|
|
|
105
123
|
def readLLongName(self, element: ET.Element, long_name: MultilanguageLongName):
|
|
@@ -137,24 +155,31 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
137
155
|
self.readElementAttributes(child_element, paragraph)
|
|
138
156
|
self.readLOverviewParagraph(child_element, paragraph)
|
|
139
157
|
return paragraph
|
|
140
|
-
|
|
141
|
-
def
|
|
142
|
-
|
|
143
|
-
if
|
|
158
|
+
|
|
159
|
+
def getVariableInAtomicSWCTypeInstanceRef(self, element: ET.Element) -> VariableInAtomicSWCTypeInstanceRef:
|
|
160
|
+
autosar_variable_iref = None
|
|
161
|
+
if element is not None:
|
|
144
162
|
autosar_variable_iref = VariableInAtomicSWCTypeInstanceRef()
|
|
145
|
-
self.readElementAttributes(
|
|
146
|
-
autosar_variable_iref.
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
163
|
+
self.readElementAttributes(element, autosar_variable_iref)
|
|
164
|
+
autosar_variable_iref.setPortPrototypeRef(self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF"))
|
|
165
|
+
autosar_variable_iref.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
|
|
166
|
+
return autosar_variable_iref
|
|
167
|
+
|
|
168
|
+
def getAutosarVariableInImplDatatype(self, element: ET.Element) -> AutosarVariableRef:
|
|
169
|
+
child_element = self.find(element, "ACCESSED-VARIABLE")
|
|
170
|
+
accessed_variable_ref = None
|
|
171
|
+
if (child_element is not None):
|
|
172
|
+
accessed_variable_ref = AutosarVariableRef()
|
|
173
|
+
accessed_variable_ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF")))
|
|
174
|
+
return accessed_variable_ref
|
|
175
|
+
|
|
176
|
+
def getLocalVariableRef(self, element: ET.Element) -> AutosarVariableRef:
|
|
177
|
+
child_element = self.find(element, "ACCESSED-VARIABLE")
|
|
178
|
+
accessed_variable_ref = None
|
|
156
179
|
if (child_element is not None):
|
|
157
|
-
accessed_variable_ref
|
|
180
|
+
accessed_variable_ref = AutosarVariableRef()
|
|
181
|
+
accessed_variable_ref.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
|
|
182
|
+
return accessed_variable_ref
|
|
158
183
|
|
|
159
184
|
def _readVariableAccesses(self, element: ET.Element, parent: RunnableEntity, key: str):
|
|
160
185
|
for child_element in element.findall("./xmlns:%s/xmlns:VARIABLE-ACCESS" % key, self.nsmap):
|
|
@@ -164,25 +189,25 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
164
189
|
|
|
165
190
|
if (key == "DATA-RECEIVE-POINT-BY-ARGUMENTS"):
|
|
166
191
|
variable_access = parent.createDataReceivePointByArgument(short_name)
|
|
167
|
-
self.
|
|
192
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
|
|
168
193
|
elif (key == "DATA-RECEIVE-POINT-BY-VALUES"):
|
|
169
194
|
variable_access = parent.createDataReceivePointByValue(short_name)
|
|
170
|
-
self.
|
|
195
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
|
|
171
196
|
elif (key == "DATA-READ-ACCESSS"):
|
|
172
197
|
variable_access = parent.createDataReadAccess(short_name)
|
|
173
|
-
self.
|
|
198
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
|
|
174
199
|
elif (key == "DATA-WRITE-ACCESSS"):
|
|
175
200
|
variable_access = parent.createDataWriteAccess(short_name)
|
|
176
|
-
self.
|
|
201
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
|
|
177
202
|
elif (key == "DATA-SEND-POINTS"):
|
|
178
203
|
variable_access = parent.createDataSendPoint(short_name)
|
|
179
|
-
self.
|
|
204
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
|
|
180
205
|
elif (key == "WRITTEN-LOCAL-VARIABLES"):
|
|
181
206
|
variable_access = parent.createWrittenLocalVariable(short_name)
|
|
182
|
-
self.
|
|
207
|
+
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element))
|
|
183
208
|
elif (key == "READ-LOCAL-VARIABLES"):
|
|
184
209
|
variable_access = parent.createReadLocalVariable(short_name)
|
|
185
|
-
self.
|
|
210
|
+
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element))
|
|
186
211
|
else:
|
|
187
212
|
self._raiseError("Invalid key type <%s>" % key)
|
|
188
213
|
|
|
@@ -215,16 +240,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
215
240
|
mode_group.type_tref = self.getChildElementRefType(parent.short_name, child_element, "TYPE-TREF")
|
|
216
241
|
|
|
217
242
|
def readCanEnterExclusiveAreaRefs(self, element: ET.Element, entity: ExecutableEntity):
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
for ref in self.getChildElementRefTypeList(child_element, "./CAN-ENTER-EXCLUSIVE-AREA-REF"):
|
|
221
|
-
entity.addCanEnterExclusiveAreaRef(ref)
|
|
243
|
+
for ref in self.getChildElementRefTypeList(element, "CAN-ENTER-EXCLUSIVE-AREA-REFS/CAN-ENTER-EXCLUSIVE-AREA-REF"):
|
|
244
|
+
entity.addCanEnterExclusiveAreaRef(ref)
|
|
222
245
|
|
|
223
246
|
def readExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
|
|
224
247
|
self.logger.debug("readExecutableEntity %s" % entity.short_name)
|
|
225
248
|
self.readIdentifiable(element, entity)
|
|
226
249
|
self.readCanEnterExclusiveAreaRefs(element, entity)
|
|
227
|
-
entity.
|
|
250
|
+
entity.setMinimumStartInterval(self.getChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL")) \
|
|
251
|
+
.setSwAddrMethodRef(self.getChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF"))
|
|
228
252
|
|
|
229
253
|
def readBswModuleEntityManagedModeGroup(self, element: ET.Element, entity: BswModuleEntity):
|
|
230
254
|
for child_element in self.findall(element, "./MANAGED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL"):
|
|
@@ -234,7 +258,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
234
258
|
|
|
235
259
|
def readBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
|
|
236
260
|
self.readExecutableEntity(element, entity)
|
|
237
|
-
entity.
|
|
261
|
+
entity.setImplementedEntryRef(self.getChildElementRefType(entity.short_name, element, "IMPLEMENTED-ENTRY-REF"))
|
|
238
262
|
self.readBswModuleEntityManagedModeGroup(element, entity)
|
|
239
263
|
|
|
240
264
|
def readBswCalledEntity(self, element: ET.Element, parent: BswInternalBehavior):
|
|
@@ -586,6 +610,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
586
610
|
def readDataSendPoints(self, element: ET.Element, parent: RunnableEntity):
|
|
587
611
|
self._readVariableAccesses(element, parent, "DATA-SEND-POINTS")
|
|
588
612
|
|
|
613
|
+
def getRunnableEntityArgument(self, element: ET.Element) -> RunnableEntityArgument:
|
|
614
|
+
argument = RunnableEntityArgument()
|
|
615
|
+
argument.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
616
|
+
return argument
|
|
617
|
+
|
|
589
618
|
def getAutosarParameterRef(self, element: ET.Element, key: str) -> AutosarParameterRef:
|
|
590
619
|
accessed_parameter = None
|
|
591
620
|
child_element = element.find("./xmlns:%s" % key, self.nsmap)
|
|
@@ -613,22 +642,22 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
613
642
|
operation_iref = ROperationInAtomicSwcInstanceRef()
|
|
614
643
|
operation_iref.context_r_port_ref = self.getChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF")
|
|
615
644
|
operation_iref.target_required_operation_ref = self.getChildElementOptionalRefType(child_element, "TARGET-REQUIRED-OPERATION-REF")
|
|
616
|
-
parent.operation_iref
|
|
645
|
+
parent.setOperationIRef(operation_iref)
|
|
617
646
|
|
|
618
647
|
def readRVariableInAtomicSwcInstanceRef(self, element: ET.Element, parent: DataReceivedEvent):
|
|
619
648
|
child_element = self.find(element, "DATA-IREF")
|
|
620
649
|
if (child_element is not None):
|
|
621
650
|
data_iref = RVariableInAtomicSwcInstanceRef()
|
|
622
|
-
data_iref.
|
|
623
|
-
|
|
624
|
-
parent.data_iref
|
|
651
|
+
data_iref.setContextRPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF")) \
|
|
652
|
+
.setTargetDataElementRef(self.getChildElementOptionalRefType(child_element, "TARGET-DATA-ELEMENT-REF"))
|
|
653
|
+
parent.setDataIRef(data_iref)
|
|
625
654
|
|
|
626
655
|
def readRModeInAtomicSwcInstanceRef(self, element: ET.Element, parent: SwcModeSwitchEvent):
|
|
627
656
|
for child_element in element.findall("./xmlns:MODE-IREFS/xmlns:MODE-IREF", self.nsmap):
|
|
628
657
|
mode_iref = RModeInAtomicSwcInstanceRef()
|
|
629
|
-
mode_iref.
|
|
630
|
-
|
|
631
|
-
|
|
658
|
+
mode_iref.setContextPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF")) \
|
|
659
|
+
.setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
|
|
660
|
+
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF"))
|
|
632
661
|
parent.addModeIRef(mode_iref)
|
|
633
662
|
|
|
634
663
|
def readSynchronousServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
|
|
@@ -636,7 +665,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
636
665
|
self.logger.debug("readSynchronousServerCallPoint %s" % short_name)
|
|
637
666
|
server_call_point = parent.createSynchronousServerCallPoint(short_name)
|
|
638
667
|
self.readIdentifiable(element, server_call_point)
|
|
639
|
-
server_call_point.
|
|
668
|
+
server_call_point.setTimeout(self.getChildElementOptionalFloatValue(element, "TIMEOUT"))
|
|
640
669
|
self.readROperationIRef(element, "OPERATION-IREF", server_call_point)
|
|
641
670
|
|
|
642
671
|
def readAsynchronousServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
|
|
@@ -644,11 +673,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
644
673
|
self.logger.debug("readAsynchronousServerCallPoint %s" % short_name)
|
|
645
674
|
server_call_point = parent.createAsynchronousServerCallPoint(short_name)
|
|
646
675
|
self.readIdentifiable(element, server_call_point)
|
|
647
|
-
server_call_point.
|
|
676
|
+
server_call_point.setTimeout(self.getChildElementOptionalFloatValue(element, "TIMEOUT"))
|
|
648
677
|
self.readROperationIRef(element, "OPERATION-IREF", server_call_point)
|
|
649
678
|
|
|
650
679
|
def readInternalBehaviorServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
|
|
651
|
-
for child_element in
|
|
680
|
+
for child_element in self.findall(element, "SERVER-CALL-POINTS/*"):
|
|
652
681
|
tag_name = self.getTagName(child_element.tag)
|
|
653
682
|
if tag_name == "SYNCHRONOUS-SERVER-CALL-POINT":
|
|
654
683
|
self.readSynchronousServerCallPoint(child_element, parent)
|
|
@@ -665,10 +694,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
665
694
|
|
|
666
695
|
def getRModeInAtomicSwcInstanceRef(self, element: ET.Element) -> RModeInAtomicSwcInstanceRef:
|
|
667
696
|
iref = RModeInAtomicSwcInstanceRef()
|
|
668
|
-
iref.
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
697
|
+
iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
|
|
698
|
+
.setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
|
|
699
|
+
.setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
|
|
700
|
+
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-DECLARATION-REF"))
|
|
672
701
|
return iref
|
|
673
702
|
|
|
674
703
|
def getRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element) -> RModeGroupInAtomicSWCInstanceRef:
|
|
@@ -676,45 +705,72 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
676
705
|
iref = None
|
|
677
706
|
if child_element is not None:
|
|
678
707
|
iref = RModeGroupInAtomicSWCInstanceRef()
|
|
679
|
-
iref.
|
|
680
|
-
|
|
708
|
+
iref.setContextRPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF")) \
|
|
709
|
+
.setTargetModeGroupRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF"))
|
|
710
|
+
return iref
|
|
711
|
+
|
|
712
|
+
def getPModeGroupInAtomicSWCInstanceRef(self, element: ET.Element) -> PModeGroupInAtomicSwcInstanceRef:
|
|
713
|
+
child_element = self.find(element, "MODE-GROUP-IREF")
|
|
714
|
+
iref = None
|
|
715
|
+
if child_element is not None:
|
|
716
|
+
iref = PModeGroupInAtomicSwcInstanceRef()
|
|
717
|
+
iref.setContextPPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF")) \
|
|
718
|
+
.setTargetModeGroupRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF"))
|
|
681
719
|
return iref
|
|
682
720
|
|
|
683
721
|
def readModeAccessPoints(self, element: ET.Element, parent: RunnableEntity):
|
|
684
722
|
for child_element in self.findall(element, "MODE-ACCESS-POINTS/MODE-ACCESS-POINT"):
|
|
685
723
|
point = ModeAccessPoint()
|
|
686
|
-
point.
|
|
724
|
+
point.setModeGroupIRef(self.getRModeGroupInAtomicSWCInstanceRef(child_element))
|
|
687
725
|
parent.addModeAccessPoint(point)
|
|
688
726
|
|
|
727
|
+
def readModeSwitchPoints(self, element: ET.Element, parent: RunnableEntity):
|
|
728
|
+
for child_element in self.findall(element, "MODE-SWITCH-POINTS/MODE-SWITCH-POINT"):
|
|
729
|
+
point = parent.createModeSwitchPoint(self.getShortName(child_element))
|
|
730
|
+
point.setModeGroupIRef(self.getPModeGroupInAtomicSWCInstanceRef(child_element))
|
|
731
|
+
|
|
732
|
+
def readRunnableEntityArguments(self, element: ET.Element, entity: RunnableEntity):
|
|
733
|
+
for child_element in self.findall(element, "ARGUMENTS/*"):
|
|
734
|
+
tag_name = self.getTagName(child_element)
|
|
735
|
+
if tag_name == "RUNNABLE-ENTITY-ARGUMENT":
|
|
736
|
+
entity.addArgument(self.getRunnableEntityArgument(child_element))
|
|
737
|
+
else:
|
|
738
|
+
raise NotImplementedError("Unsupported Arguments of runnable entity <%s>" % tag_name)
|
|
739
|
+
|
|
740
|
+
def readRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
|
|
741
|
+
self.readExecutableEntity(element, entity)
|
|
742
|
+
self.readRunnableEntityArguments(element, entity)
|
|
743
|
+
|
|
744
|
+
entity.setCanBeInvokedConcurrently(self.getChildElementOptionalBooleanValue(element, "CAN-BE-INVOKED-CONCURRENTLY"))
|
|
745
|
+
entity.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
746
|
+
|
|
747
|
+
self.readDataReceivePointByArguments(element, entity)
|
|
748
|
+
self.readDataReceivePointByValues(element, entity)
|
|
749
|
+
self.readDataReadAccesses(element, entity)
|
|
750
|
+
self.readDataWriteAccesses(element, entity)
|
|
751
|
+
self.readDataSendPoints(element, entity)
|
|
752
|
+
self.readInternalBehaviorServerCallPoint(element, entity)
|
|
753
|
+
self.readInternalTriggeringPoints(element, entity)
|
|
754
|
+
self.readModeAccessPoints(element, entity)
|
|
755
|
+
self.readModeSwitchPoints(element, entity)
|
|
756
|
+
self.readParameterAccesses(element, entity)
|
|
757
|
+
self.readReadLocalVariables(element, entity)
|
|
758
|
+
self.readWrittenLocalVariables(element, entity)
|
|
759
|
+
|
|
689
760
|
def readSwcInternalBehaviorRunnables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
690
761
|
for child_element in self.findall(element, "RUNNABLES/RUNNABLE-ENTITY"):
|
|
691
762
|
short_name = self.getShortName(child_element)
|
|
692
763
|
entity = parent.createRunnableEntity(short_name)
|
|
693
764
|
self.logger.debug("readRunnableEntities %s" % short_name)
|
|
694
765
|
|
|
695
|
-
self.
|
|
696
|
-
entity.canBeInvokedConcurrently = self.getChildElementOptionalBooleanValue(child_element, "CAN-BE-INVOKED-CONCURRENTLY")
|
|
697
|
-
entity.symbol = self.getChildElementOptionalLiteral(child_element, "SYMBOL")
|
|
698
|
-
entity.swAddrMethodRef = self.getChildElementOptionalRefType(child_element, "SW-ADDR-METHOD-REF")
|
|
699
|
-
|
|
700
|
-
self.readDataReceivePointByArguments(child_element, entity)
|
|
701
|
-
self.readDataReceivePointByValues(child_element, entity)
|
|
702
|
-
self.readDataReadAccesses(child_element, entity)
|
|
703
|
-
self.readDataWriteAccesses(child_element, entity)
|
|
704
|
-
self.readDataSendPoints(child_element, entity)
|
|
705
|
-
self.readParameterAccesses(child_element, entity)
|
|
706
|
-
self.readWrittenLocalVariables(child_element, entity)
|
|
707
|
-
self.readReadLocalVariables(child_element, entity)
|
|
708
|
-
self.readInternalBehaviorServerCallPoint(child_element, entity)
|
|
709
|
-
self.readInternalTriggeringPoints(child_element, entity)
|
|
710
|
-
self.readModeAccessPoints(child_element, entity)
|
|
766
|
+
self.readRunnableEntity(child_element, entity)
|
|
711
767
|
|
|
712
768
|
def getRModeInAtomicSwcInstanceRef(self, element: ET.Element) -> RModeInAtomicSwcInstanceRef:
|
|
713
769
|
iref = RModeInAtomicSwcInstanceRef()
|
|
714
|
-
iref.
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
770
|
+
iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
|
|
771
|
+
.setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
|
|
772
|
+
.setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
|
|
773
|
+
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-DECLARATION-REF"))
|
|
718
774
|
return iref
|
|
719
775
|
|
|
720
776
|
def readRTEEvent(self, element: ET.Element, event: RTEEvent):
|
|
@@ -736,32 +792,35 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
736
792
|
event = parent.createOperationInvokedEvent(short_name)
|
|
737
793
|
self.readOperationIRef(element, event)
|
|
738
794
|
self.readRTEEvent(element, event)
|
|
739
|
-
|
|
795
|
+
|
|
796
|
+
def readVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
|
|
797
|
+
self.readAutosarDataPrototype(element, prototype)
|
|
798
|
+
prototype.setInitValue(self.getInitValue(element))
|
|
799
|
+
|
|
740
800
|
def readExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
741
801
|
for child_element in element.findall("./xmlns:EXPLICIT-INTER-RUNNABLE-VARIABLES/xmlns:VARIABLE-DATA-PROTOTYPE", self.nsmap):
|
|
742
802
|
short_name = self.getShortName(child_element)
|
|
743
803
|
prototype = parent.createExplicitInterRunnableVariable(short_name)
|
|
744
|
-
|
|
745
|
-
prototype.type_tref = self.getChildElementOptionalRefType(child_element, "TYPE-TREF")
|
|
746
|
-
prototype.init_value = self.getInitValue(child_element)
|
|
804
|
+
self.readVariableDataPrototype(child_element, prototype)
|
|
747
805
|
|
|
748
806
|
def readPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
749
807
|
for child_element in element.findall("./xmlns:PER-INSTANCE-MEMORYS/xmlns:PER-INSTANCE-MEMORY", self.nsmap):
|
|
750
808
|
short_name = self.getShortName(child_element)
|
|
751
809
|
memory = behavior.createPerInstanceMemory(short_name)
|
|
752
810
|
self.readIdentifiable(child_element, memory)
|
|
753
|
-
memory.
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
811
|
+
memory.setInitValue(self.getChildElementOptionalLiteral(child_element, "INIT-VALUE")) \
|
|
812
|
+
.setSwDataDefProps(self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")) \
|
|
813
|
+
.setType(self.getChildElementOptionalLiteral(child_element, "TYPE")) \
|
|
814
|
+
.setTypeDefinition(self.getChildElementOptionalLiteral(child_element, "TYPE-DEFINITION"))
|
|
757
815
|
|
|
758
816
|
def readAutosarDataPrototype(self, element: ET.Element, prototype: AutosarDataPrototype):
|
|
759
|
-
|
|
817
|
+
self.readDataPrototype(element, prototype)
|
|
818
|
+
prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
|
|
760
819
|
|
|
761
820
|
def readParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
|
|
762
821
|
self.readIdentifiable(element, prototype)
|
|
763
822
|
self.readAutosarDataPrototype(element, prototype)
|
|
764
|
-
prototype.
|
|
823
|
+
prototype.setInitValue(self.getInitValue(element))
|
|
765
824
|
|
|
766
825
|
def readPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
767
826
|
for child_element in element.findall("./xmlns:PER-INSTANCE-PARAMETERS/xmlns:PARAMETER-DATA-PROTOTYPE", self.nsmap):
|
|
@@ -837,21 +896,53 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
837
896
|
self._raiseError("Unsupported SwcInternalBehavior Event <%s>" % tag_name)
|
|
838
897
|
|
|
839
898
|
def readSwPointerTargetProps(self, element: ET.Element, parent: SwDataDefProps):
|
|
840
|
-
child_element =
|
|
841
|
-
if
|
|
899
|
+
child_element = self.find(element, "SW-POINTER-TARGET-PROPS")
|
|
900
|
+
if child_element is not None:
|
|
842
901
|
sw_pointer_target_props = SwPointerTargetProps()
|
|
843
902
|
sw_pointer_target_props.target_category = self.getChildElementOptionalLiteral(child_element, "TARGET-CATEGORY")
|
|
844
903
|
sw_pointer_target_props.sw_data_def_props = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
|
|
845
|
-
parent.
|
|
904
|
+
parent.swPointerTargetProps = sw_pointer_target_props
|
|
905
|
+
|
|
906
|
+
def readLParagraph(self, element: ET.Element, paragraph: MultiLanguageParagraph):
|
|
907
|
+
for child_element in self.findall(element, "./L-1"):
|
|
908
|
+
l1 = LOverviewParagraph()
|
|
909
|
+
self.readElementAttributes(child_element, l1)
|
|
910
|
+
l1.value = child_element.text
|
|
911
|
+
if 'L' in child_element.attrib:
|
|
912
|
+
l1.l = child_element.attrib['L']
|
|
913
|
+
paragraph.addL1(l1)
|
|
914
|
+
|
|
915
|
+
def getMultiLanguageParagraphs(self, element: ET.Element, key: str) -> List[MultiLanguageParagraph]:
|
|
916
|
+
paragraphs = []
|
|
917
|
+
for child_element in self.findall(element, key):
|
|
918
|
+
paragraph = MultiLanguageParagraph()
|
|
919
|
+
self.readElementAttributes(child_element, paragraph)
|
|
920
|
+
self.readLParagraph(child_element, paragraph)
|
|
921
|
+
paragraphs.append(paragraph)
|
|
922
|
+
return paragraphs
|
|
923
|
+
|
|
924
|
+
def getDocumentationBlock(self, element: ET.Element, key: str) -> DocumentationBlock:
|
|
925
|
+
block = None
|
|
926
|
+
child_element = self.find(element, key)
|
|
927
|
+
if child_element is not None:
|
|
928
|
+
block = DocumentationBlock()
|
|
929
|
+
self.readElementAttributes(child_element, block)
|
|
930
|
+
for paragraph in self.getMultiLanguageParagraphs(child_element, "P"):
|
|
931
|
+
block.addP(paragraph)
|
|
932
|
+
return block
|
|
846
933
|
|
|
847
934
|
def readGeneralAnnotation(self, element: ET.Element, annotation: GeneralAnnotation):
|
|
848
|
-
annotation.
|
|
935
|
+
annotation.setAnnotationOrigin(self.getChildElementOptionalLiteral(element, 'ANNOTATION-ORIGIN')) \
|
|
936
|
+
.setAnnotationText(self.getDocumentationBlock(element, "ANNOTATION-TEXT")) \
|
|
937
|
+
.setLabel(self.getMultilanguageLongName(element, "LABEL"))
|
|
849
938
|
|
|
850
|
-
def
|
|
939
|
+
def getAnnotations(self, element: ET.Element) -> List[Annotation]:
|
|
940
|
+
annotations = []
|
|
851
941
|
for child_element in element.findall("./xmlns:ANNOTATIONS/xmlns:ANNOTATION", self.nsmap):
|
|
852
942
|
annotation = Annotation()
|
|
853
943
|
self.readGeneralAnnotation(child_element, annotation)
|
|
854
|
-
|
|
944
|
+
annotations.append(annotation)
|
|
945
|
+
return annotations
|
|
855
946
|
|
|
856
947
|
def getSwAxisIndividual(self, element: ET.Element) -> SwAxisIndividual:
|
|
857
948
|
props = SwAxisIndividual()
|
|
@@ -888,6 +979,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
888
979
|
if tag_name == "SW-CALPRM-AXIS":
|
|
889
980
|
set.addSwCalprmAxis(self.getSwCalprmAxis(child_element))
|
|
890
981
|
return set
|
|
982
|
+
|
|
983
|
+
def readSwDataDefProsInvalidValue(self, element: ET.Element, props: SwDataDefProps):
|
|
984
|
+
child_element = self.find(element, "INVALID-VALUE/*")
|
|
985
|
+
if child_element is not None:
|
|
986
|
+
props.setInvalidValue(self.getValueSpecification(child_element))
|
|
891
987
|
|
|
892
988
|
def getSwDataDefProps(self, element: ET.Element, key: str) -> SwDataDefProps:
|
|
893
989
|
child_element = element.find("./xmlns:%s" % key, self.nsmap)
|
|
@@ -898,30 +994,36 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
898
994
|
sw_data_def_props = SwDataDefProps()
|
|
899
995
|
self.readElementAttributes(child_element, sw_data_def_props)
|
|
900
996
|
|
|
901
|
-
self.
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
sw_data_def_props.
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
997
|
+
for annotation in self.getAnnotations(conditional_tag):
|
|
998
|
+
sw_data_def_props.addAnnotation(annotation)
|
|
999
|
+
|
|
1000
|
+
sw_data_def_props.setBaseTypeRef(self.getChildElementOptionalRefType(conditional_tag, "BASE-TYPE-REF")) \
|
|
1001
|
+
.setDataConstrRef(self.getChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF")) \
|
|
1002
|
+
.setCompuMethodRef(self.getChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF")) \
|
|
1003
|
+
.setSwImplPolicy(self.getChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY")) \
|
|
1004
|
+
.setImplementationDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF")) \
|
|
1005
|
+
.setSwCalibrationAccess(self.getChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS")) \
|
|
1006
|
+
.setSwCalprmAxisSet(self.getSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET")) \
|
|
1007
|
+
.setSwRecordLayoutRef(self.getChildElementOptionalRefType(conditional_tag, "SW-RECORD-LAYOUT-REF")) \
|
|
1008
|
+
.setValueAxisDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "VALUE-AXIS-DATA-TYPE-REF")) \
|
|
1009
|
+
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1010
|
+
self.readSwDataDefProsInvalidValue(conditional_tag, sw_data_def_props)
|
|
912
1011
|
self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
913
1012
|
self.readElementAttributes(conditional_tag, sw_data_def_props.conditional)
|
|
914
1013
|
return sw_data_def_props
|
|
1014
|
+
|
|
1015
|
+
def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
1016
|
+
self.readIdentifiable(element, data_type)
|
|
1017
|
+
data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
915
1018
|
|
|
916
1019
|
def readApplicationPrimitiveDataType(self, element: ET.Element, parent: ARPackage):
|
|
917
1020
|
short_name = self.getShortName(element)
|
|
918
1021
|
data_type = parent.createApplicationPrimitiveDataType(short_name)
|
|
919
1022
|
self.logger.debug("readApplicationPrimitiveDataTypes %s" % short_name)
|
|
920
|
-
self.
|
|
921
|
-
data_type.sw_data_def_props = self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS")
|
|
1023
|
+
self.readAutosarDataType(element, data_type)
|
|
922
1024
|
|
|
923
1025
|
def readApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
|
|
924
|
-
prototype.
|
|
1026
|
+
prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
|
|
925
1027
|
|
|
926
1028
|
def readApplicationRecordElements(self, element: ET.Element, parent: ApplicationRecordDataType):
|
|
927
1029
|
for child_element in element.findall("./xmlns:ELEMENTS/xmlns:APPLICATION-RECORD-ELEMENT", self.nsmap):
|
|
@@ -936,7 +1038,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
936
1038
|
data_type = parent.createApplicationRecordDataType(short_name)
|
|
937
1039
|
self.logger.debug("readApplicationRecordDataTypes %s" % short_name)
|
|
938
1040
|
self.readIdentifiable(element, data_type)
|
|
939
|
-
data_type.
|
|
1041
|
+
data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
940
1042
|
self.readApplicationRecordElements(element, data_type)
|
|
941
1043
|
|
|
942
1044
|
def readImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
|
|
@@ -944,10 +1046,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
944
1046
|
short_name = self.getShortName(child_element)
|
|
945
1047
|
type_element = parent.createImplementationDataTypeElement(short_name) # type: ImplementationDataTypeElement
|
|
946
1048
|
self.readIdentifiable(child_element, type_element)
|
|
947
|
-
type_element.
|
|
948
|
-
|
|
1049
|
+
type_element.setArraySize(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE")) \
|
|
1050
|
+
.setArraySizeSemantics(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS"))
|
|
949
1051
|
self.readImplementationDataTypeElements(child_element, type_element)
|
|
950
|
-
type_element.
|
|
1052
|
+
type_element.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
|
|
951
1053
|
|
|
952
1054
|
def readImplementationDataType(self, element: ET.Element, parent: ARPackage):
|
|
953
1055
|
short_name = self.getShortName(element)
|
|
@@ -960,7 +1062,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
960
1062
|
self._raiseError("Array Sub-Element of <%s> do not defined." % data_type.short_name)
|
|
961
1063
|
array_sub_element = data_type.getImplementationDataTypeElements()[0]
|
|
962
1064
|
if (array_sub_element.category == ImplementationDataType.CATEGORY_TYPE_REFERENCE):
|
|
963
|
-
data_type.setArrayElementType(array_sub_element.
|
|
1065
|
+
data_type.setArrayElementType(array_sub_element.swDataDefProps.implementationDataTypeRef.value)
|
|
964
1066
|
elif (array_sub_element.category == ImplementationDataType.CATEGORY_TYPE_VALUE): # TODO: fix
|
|
965
1067
|
return
|
|
966
1068
|
else:
|
|
@@ -998,10 +1100,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
998
1100
|
self.readElementAttributes(element, com_spec)
|
|
999
1101
|
for child_element in element.findall("./xmlns:COMPOSITE-NETWORK-REPRESENTATIONS/xmlns:COMPOSITE-NETWORK-REPRESENTATION", self.nsmap):
|
|
1000
1102
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
1001
|
-
com_spec.
|
|
1002
|
-
com_spec.
|
|
1003
|
-
com_spec.
|
|
1004
|
-
com_spec.
|
|
1103
|
+
com_spec.dataElementRef = self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF")
|
|
1104
|
+
com_spec.networkRepresentation = self.getSwDataDefProps(element, "NETWORK-REPRESENTATION")
|
|
1105
|
+
com_spec.handleOutOfRange = self.getChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE")
|
|
1106
|
+
com_spec.usesEndToEndProtection = self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION")
|
|
1005
1107
|
|
|
1006
1108
|
def getSwValues(self, element: ET.Element, key: str) -> SwValues:
|
|
1007
1109
|
child_element = element.find("./xmlns:%s" % key, self.nsmap) # type: ET.Element
|
|
@@ -1045,7 +1147,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1045
1147
|
|
|
1046
1148
|
def getInitValue(self, element: ET.Element) -> ValueSpecification:
|
|
1047
1149
|
value_spec = None
|
|
1048
|
-
child_element =
|
|
1150
|
+
child_element = self.find(element, "INIT-VALUE/*")
|
|
1049
1151
|
if child_element is not None:
|
|
1050
1152
|
self.logger.debug("getInitValue")
|
|
1051
1153
|
value_spec = self.getValueSpecification(child_element)
|
|
@@ -1061,7 +1163,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1061
1163
|
com_spec = QueuedReceiverComSpec()
|
|
1062
1164
|
self.readElementAttributes(element, com_spec)
|
|
1063
1165
|
self.readReceiverComSpec(element, com_spec)
|
|
1064
|
-
com_spec.
|
|
1166
|
+
com_spec.queueLength = self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH")
|
|
1065
1167
|
return com_spec
|
|
1066
1168
|
|
|
1067
1169
|
def getModeSwitchReceiverComSpec(self, element: ET.Element) -> ModeSwitchReceiverComSpec:
|
|
@@ -1074,11 +1176,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1074
1176
|
com_spec = NonqueuedReceiverComSpec()
|
|
1075
1177
|
self.readElementAttributes(element, com_spec)
|
|
1076
1178
|
self.readReceiverComSpec(element, com_spec)
|
|
1077
|
-
com_spec.
|
|
1078
|
-
com_spec.
|
|
1079
|
-
com_spec.
|
|
1080
|
-
com_spec.
|
|
1081
|
-
com_spec.
|
|
1179
|
+
com_spec.aliveTimeout = self.getChildElementOptionalFloatValue(element, "ALIVE-TIMEOUT")
|
|
1180
|
+
com_spec.enableUpdated = self.getChildElementOptionalBooleanValue(element, "ENABLE-UPDATE")
|
|
1181
|
+
com_spec.handleNeverReceived = self.getChildElementOptionalBooleanValue(element, "HANDLE-NEVER-RECEIVED")
|
|
1182
|
+
com_spec.handleTimeoutType = self.getChildElementOptionalLiteral(element, "HANDLE-TIMEOUT-TYPE")
|
|
1183
|
+
com_spec.initValue = self.getInitValue(element)
|
|
1082
1184
|
return com_spec
|
|
1083
1185
|
|
|
1084
1186
|
def readRequiredComSpec(self, element: ET.Element, parent: RPortPrototype):
|
|
@@ -1127,23 +1229,33 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1127
1229
|
self.readElementAttributes(element, com_spec)
|
|
1128
1230
|
for child_element in element.findall("./xmlns:COMPOSITE-NETWORK-REPRESENTATIONS/xmlns:COMPOSITE-NETWORK-REPRESENTATION", self.nsmap):
|
|
1129
1231
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
1130
|
-
com_spec.
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1232
|
+
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF")) \
|
|
1233
|
+
.setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION")) \
|
|
1234
|
+
.setHandleOutOfRange(self.getChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE")) \
|
|
1235
|
+
.setTransmissionAcknowledge(self.readTransmissionAcknowledgementRequest(element)) \
|
|
1236
|
+
.setUsesEndToEndProtection(self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION"))
|
|
1135
1237
|
|
|
1136
1238
|
def getNonqueuedSenderComSpec(self, element) -> NonqueuedSenderComSpec:
|
|
1137
1239
|
com_spec = NonqueuedSenderComSpec()
|
|
1138
1240
|
self.readSenderComSpec(element, com_spec)
|
|
1139
|
-
com_spec.
|
|
1241
|
+
com_spec.setInitValue(self.getInitValue(element))
|
|
1140
1242
|
return com_spec
|
|
1141
1243
|
|
|
1142
1244
|
def getServerComSpec(self, element) -> ServerComSpec:
|
|
1143
1245
|
com_spec = ServerComSpec()
|
|
1246
|
+
com_spec.setOperationRef(self.getChildElementOptionalRefType(element, "OPERATION-REF")) \
|
|
1247
|
+
.setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
|
|
1248
|
+
return com_spec
|
|
1249
|
+
|
|
1250
|
+
def getQueuedSenderComSpec(self, element) -> QueuedSenderComSpec:
|
|
1251
|
+
com_spec = QueuedSenderComSpec()
|
|
1144
1252
|
self.readSenderComSpec(element, com_spec)
|
|
1145
|
-
com_spec
|
|
1146
|
-
|
|
1253
|
+
return com_spec
|
|
1254
|
+
|
|
1255
|
+
def getModeSwitchSenderComSpec(self, element) -> ModeSwitchSenderComSpec:
|
|
1256
|
+
com_spec = ModeSwitchSenderComSpec()
|
|
1257
|
+
com_spec.setModeGroupRef(self.getChildElementOptionalRefType(element, "MODE-GROUP-REF")) \
|
|
1258
|
+
.setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
|
|
1147
1259
|
return com_spec
|
|
1148
1260
|
|
|
1149
1261
|
def readProvidedComSpec(self, element: ET.Element, parent: PPortPrototype):
|
|
@@ -1153,6 +1265,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1153
1265
|
parent.addProvidedComSpec(self.getNonqueuedSenderComSpec(child_element))
|
|
1154
1266
|
elif tag_name == "SERVER-COM-SPEC":
|
|
1155
1267
|
parent.addProvidedComSpec(self.getServerComSpec(child_element))
|
|
1268
|
+
elif tag_name == "QUEUED-SENDER-COM-SPEC":
|
|
1269
|
+
parent.addProvidedComSpec(self.getQueuedSenderComSpec(child_element))
|
|
1270
|
+
elif tag_name == "MODE-SWITCH-SENDER-COM-SPEC":
|
|
1271
|
+
parent.addProvidedComSpec(self.getModeSwitchSenderComSpec(child_element))
|
|
1156
1272
|
else:
|
|
1157
1273
|
self._raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
|
|
1158
1274
|
|
|
@@ -1364,29 +1480,37 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1364
1480
|
self.readDataTypeMaps(element, mapping_set)
|
|
1365
1481
|
self.readModeRequestTypeMaps(element, mapping_set)
|
|
1366
1482
|
|
|
1367
|
-
def
|
|
1483
|
+
def readSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1368
1484
|
for child_element in element.findall("./xmlns:DATA-ELEMENTS/xmlns:VARIABLE-DATA-PROTOTYPE", self.nsmap):
|
|
1369
1485
|
short_name = self.getShortName(child_element)
|
|
1370
|
-
prototype =
|
|
1486
|
+
prototype = sr_interface.createDataElement(short_name)
|
|
1371
1487
|
self.readIdentifiable(child_element, prototype)
|
|
1372
|
-
prototype.
|
|
1488
|
+
prototype.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
|
|
1373
1489
|
self.readAutosarDataPrototype(child_element, prototype)
|
|
1374
|
-
prototype.
|
|
1490
|
+
prototype.initValue = self.getInitValue(child_element)
|
|
1491
|
+
|
|
1492
|
+
def readSenderReceiverInterfaceInvalidationPolicies(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1493
|
+
for child_element in self.findall(element, "INVALIDATION-POLICYS/INVALIDATION-POLICY"):
|
|
1494
|
+
policy = InvalidationPolicy()
|
|
1495
|
+
policy.setDataElementRef(self.getChildElementOptionalRefType(child_element, "DATA-ELEMENT-REF")) \
|
|
1496
|
+
.setHandleInvalid(self.getChildElementOptionalLiteral(child_element, "HANDLE-INVALID"))
|
|
1497
|
+
sr_interface.addInvalidationPolicy(policy)
|
|
1375
1498
|
|
|
1376
1499
|
def readSenderReceiverInterfaces(self, element, parent: ARPackage):
|
|
1377
1500
|
short_name = self.getShortName(element)
|
|
1378
1501
|
sr_interface = parent.createSenderReceiverInterface(short_name)
|
|
1379
1502
|
self.readIdentifiable(element, sr_interface)
|
|
1380
|
-
sr_interface.
|
|
1381
|
-
self.
|
|
1503
|
+
sr_interface.isService = self.getChildElementOptionalBooleanValue(element, "IS-SERVICE")
|
|
1504
|
+
self.readSenderReceiverInterfaceDataElements(element, sr_interface)
|
|
1505
|
+
self.readSenderReceiverInterfaceInvalidationPolicies(element, sr_interface)
|
|
1382
1506
|
|
|
1383
1507
|
def readArgumentDataPrototypes(self, element: ET.Element, parent: ClientServerOperation):
|
|
1384
1508
|
for child_element in element.findall("./xmlns:ARGUMENTS/xmlns:ARGUMENT-DATA-PROTOTYPE", self.nsmap):
|
|
1385
1509
|
short_name = self.getShortName(child_element)
|
|
1386
1510
|
prototype = ArgumentDataPrototype(property, short_name)
|
|
1387
1511
|
self.readIdentifiable(child_element, prototype)
|
|
1388
|
-
prototype.
|
|
1389
|
-
prototype.
|
|
1512
|
+
prototype.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
|
|
1513
|
+
prototype.typeTRef = self.getChildElementOptionalRefType(child_element, "TYPE-TREF")
|
|
1390
1514
|
prototype.direction = self.getChildElementOptionalLiteral(child_element, "DIRECTION")
|
|
1391
1515
|
parent.addArgumentDataPrototype(prototype)
|
|
1392
1516
|
|
|
@@ -1411,7 +1535,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1411
1535
|
error.error_code = self.getChildElementOptionalNumericalValue(child_element, "ERROR-CODE")
|
|
1412
1536
|
|
|
1413
1537
|
def readPortInterface(self, element: ET.Element, port_interface: PortInterface):
|
|
1414
|
-
port_interface.
|
|
1538
|
+
port_interface.isService = self.getChildElementOptionalBooleanValue(element, "IS-SERVICE")
|
|
1415
1539
|
port_interface.serviceKind = self.getChildElementOptionalLiteral(element, "SERVICE-KIND")
|
|
1416
1540
|
|
|
1417
1541
|
def readClientServerInterface(self, element: ET.Element, parent: ARPackage):
|
|
@@ -1528,14 +1652,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1528
1652
|
self.readValueSpecification(element, value_spec)
|
|
1529
1653
|
child_elements = element.findall("./xmlns:ELEMENTS/*", self.nsmap)
|
|
1530
1654
|
for child_element in child_elements:
|
|
1531
|
-
value_spec.
|
|
1655
|
+
value_spec.addElement(self.getValueSpecification(child_element))
|
|
1532
1656
|
return value_spec
|
|
1533
1657
|
|
|
1534
1658
|
def getConstantReference(self, element: ET.Element) -> ConstantReference:
|
|
1535
1659
|
self.logger.debug("getConstantReference")
|
|
1536
1660
|
value_spec = ConstantReference()
|
|
1537
1661
|
self.readValueSpecification(element, value_spec)
|
|
1538
|
-
value_spec.
|
|
1662
|
+
value_spec.setConstantRef(self.getChildElementOptionalRefType(element, "CONSTANT-REF"))
|
|
1539
1663
|
return value_spec
|
|
1540
1664
|
|
|
1541
1665
|
def getValueSpecification(self, element: ET.Element) -> ValueSpecification:
|
|
@@ -1558,7 +1682,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1558
1682
|
|
|
1559
1683
|
def readRecordValueSpecificationFields(self, element: ET.Element, spec: RecordValueSpecification):
|
|
1560
1684
|
for child_element in element.findall("./xmlns:FIELDS/*", self.nsmap):
|
|
1561
|
-
spec.
|
|
1685
|
+
spec.addField(self.getValueSpecification(child_element))
|
|
1562
1686
|
|
|
1563
1687
|
def getRecordValueSpecification(self, element: ET.Element) -> RecordValueSpecification:
|
|
1564
1688
|
value_spec = RecordValueSpecification()
|
|
@@ -1571,8 +1695,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1571
1695
|
self.logger.debug("readConstantSpecification %s" % short_name)
|
|
1572
1696
|
spec = parent.createConstantSpecification(short_name)
|
|
1573
1697
|
self.readIdentifiable(element, spec)
|
|
1574
|
-
for value_spec_tag in
|
|
1575
|
-
spec.
|
|
1698
|
+
for value_spec_tag in self.findall(element, "VALUE-SPEC/*"):
|
|
1699
|
+
spec.setValueSpec(self.getValueSpecification(value_spec_tag))
|
|
1576
1700
|
|
|
1577
1701
|
def readInternalConstrs(self, element: ET.Element, parent: DataConstrRule):
|
|
1578
1702
|
child_element = element.find("./xmlns:INTERNAL-CONSTRS", self.nsmap)
|
|
@@ -1615,7 +1739,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1615
1739
|
self.logger.debug("readUnit %s" % short_name)
|
|
1616
1740
|
unit = parent.createUnit(short_name)
|
|
1617
1741
|
self.readIdentifiable(element, unit)
|
|
1618
|
-
unit.
|
|
1742
|
+
unit.setDisplayName(self.getChildElementOptionalLiteral(element, "DISPLAY-NAME")) \
|
|
1743
|
+
.setFactorSiToUnit(self.getChildElementOptionalFloatValue(element, "FACTOR-SI-TO-UNIT")) \
|
|
1744
|
+
.setOffsetSiToUnit(self.getChildElementOptionalFloatValue(element, "OFFSET-SI-TO-UNIT")) \
|
|
1745
|
+
.setPhysicalDimensionRef(self.getChildElementOptionalRefType(element, "PHYSICAL-DIMENSION-REF"))
|
|
1746
|
+
|
|
1619
1747
|
|
|
1620
1748
|
def readEndToEndDescriptionDataId(self, element: ET.Element, parent: EndToEndDescription):
|
|
1621
1749
|
child_element = element.find("./xmlns:DATA-IDS", self.nsmap)
|
|
@@ -1637,11 +1765,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1637
1765
|
return desc
|
|
1638
1766
|
|
|
1639
1767
|
def getVariableDataPrototypeInSystemInstanceRef(self, element: ET.Element) -> VariableDataPrototypeInSystemInstanceRef:
|
|
1640
|
-
iref =
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1768
|
+
iref = None
|
|
1769
|
+
if element is not None:
|
|
1770
|
+
iref = VariableDataPrototypeInSystemInstanceRef()
|
|
1771
|
+
iref.context_component_refs = self.getChildElementOptionalRefType(element, "CONTEXT-COMPONENT-REF")
|
|
1772
|
+
iref.context_composition_ref = self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF")
|
|
1773
|
+
iref.context_port_ref = self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")
|
|
1774
|
+
iref.target_data_prototype_ref = self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF")
|
|
1645
1775
|
return iref
|
|
1646
1776
|
|
|
1647
1777
|
def getEndToEndProtectionVariablePrototype(self, element: ET.Element) -> EndToEndProtectionVariablePrototype:
|
|
@@ -1683,7 +1813,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1683
1813
|
|
|
1684
1814
|
def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
1685
1815
|
self.readIdentifiable(element, data_type)
|
|
1686
|
-
data_type.
|
|
1816
|
+
data_type.swDataDefProps = self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS")
|
|
1687
1817
|
|
|
1688
1818
|
def readApplicationDataType(self, element: ET.Element, data_type: ApplicationDataType):
|
|
1689
1819
|
self.readAutosarDataType(element, data_type)
|
|
@@ -1835,11 +1965,128 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1835
1965
|
self.readIdentifiable(element, timing)
|
|
1836
1966
|
self.readTimingExtension(element, timing)
|
|
1837
1967
|
|
|
1968
|
+
def readFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
|
|
1969
|
+
for ref in self.getChildElementRefTypeList(element, 'FRAME-PORT-REFS/FRAME-PORT-REF'):
|
|
1970
|
+
triggering.addFramePortRef(ref)
|
|
1971
|
+
triggering.setFrameRef(self.getChildElementOptionalRefType(element, "FRAME-REF"))
|
|
1972
|
+
for child_element in self.findall(element, 'PDU-TRIGGERINGS/PDU-TRIGGERING-REF-CONDITIONAL'):
|
|
1973
|
+
triggering.addPduTriggeringRef(self.getChildElementOptionalRefType(child_element, "PDU-TRIGGERING-REF"))
|
|
1974
|
+
|
|
1975
|
+
def readCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
|
|
1976
|
+
self.logger.debug("Read CanFrameTriggering %s" % triggering.getShortName())
|
|
1977
|
+
self.readIdentifiable(element, triggering)
|
|
1978
|
+
self.readFrameTriggering(element, triggering)
|
|
1979
|
+
triggering.setCanAddressingMode(self.getChildElementOptionalLiteral(element, "CAN-ADDRESSING-MODE")) \
|
|
1980
|
+
.setCanFdFrameSupport(self.getChildElementOptionalBooleanValue(element, "CAN-FD-FRAME-SUPPORT")) \
|
|
1981
|
+
.setCanFrameRxBehavior(self.getChildElementOptionalLiteral(element, "CAN-FRAME-RX-BEHAVIOR")) \
|
|
1982
|
+
.setCanFrameTxBehavior(self.getChildElementOptionalLiteral(element, "CAN-FRAME-TX-BEHAVIOR")) \
|
|
1983
|
+
.setIdentifier(self.getChildElementOptionalNumericalValue(element, "IDENTIFIER")) \
|
|
1984
|
+
.setRxIdentifierRange(self.getChildElementRxIdentifierRange(element, "RX-IDENTIFIER-RANGE"))
|
|
1985
|
+
|
|
1986
|
+
|
|
1987
|
+
def readLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
|
|
1988
|
+
self.logger.debug("Read LinFrameTriggering %s" % triggering.getShortName())
|
|
1989
|
+
self.readIdentifiable(element, triggering)
|
|
1990
|
+
self.readFrameTriggering(element, triggering)
|
|
1991
|
+
triggering.setIdentifier(self.getChildElementOptionalNumericalValue(element, "IDENTIFIER")) \
|
|
1992
|
+
.setLinChecksum(self.getChildElementOptionalLiteral(element, "LIN-CHECKSUM"))
|
|
1993
|
+
|
|
1994
|
+
def readISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
|
|
1995
|
+
self.logger.debug("Read ISignalTriggering %s" % triggering.getShortName())
|
|
1996
|
+
self.readIdentifiable(element, triggering)
|
|
1997
|
+
triggering.setISignalGroupRef(self.getChildElementOptionalRefType(element, "I-SIGNAL-GROUP-REF"))
|
|
1998
|
+
for ref in self.getChildElementRefTypeList(element, 'I-SIGNAL-PORT-REFS/I-SIGNAL-PORT-REF'):
|
|
1999
|
+
triggering.addISignalPortRef(ref)
|
|
2000
|
+
triggering.setISignalRef(self.getChildElementOptionalRefType(element, "I-SIGNAL-REF"))
|
|
2001
|
+
|
|
2002
|
+
def readPduTriggering(self, element: ET.Element, triggering: PduTriggering):
|
|
2003
|
+
self.logger.debug("Read PduTriggering %s" % triggering.getShortName())
|
|
2004
|
+
self.readIdentifiable(element, triggering)
|
|
2005
|
+
for ref in self.getChildElementRefTypeList(element, 'I-PDU-PORT-REFS/I-PDU-PORT-REF'):
|
|
2006
|
+
triggering.addIPduPortRef(ref)
|
|
2007
|
+
triggering.setIPduRef(self.getChildElementOptionalRefType(element, "I-PDU-REF"))
|
|
2008
|
+
for child_element in self.findall(element, 'I-SIGNAL-TRIGGERINGS/I-SIGNAL-TRIGGERING-REF-CONDITIONAL'):
|
|
2009
|
+
triggering.addISignalTriggeringRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-TRIGGERING-REF"))
|
|
2010
|
+
|
|
2011
|
+
def readPhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
|
|
2012
|
+
for child_element in self.findall(element, 'COMM-CONNECTORS/COMMUNICATION-CONNECTOR-REF-CONDITIONAL'):
|
|
2013
|
+
channel.addCommConnectorRef(self.getChildElementOptionalRefType(child_element, "COMMUNICATION-CONNECTOR-REF"))
|
|
2014
|
+
|
|
2015
|
+
for child_element in self.findall(element, "FRAME-TRIGGERINGS/*"):
|
|
2016
|
+
tag_name = self.getTagName(child_element)
|
|
2017
|
+
if tag_name == "CAN-FRAME-TRIGGERING":
|
|
2018
|
+
triggering = channel.createCanFrameTriggering(self.getShortName(child_element))
|
|
2019
|
+
self.readCanFrameTriggering(child_element, triggering)
|
|
2020
|
+
elif tag_name == "LIN-FRAME-TRIGGERING":
|
|
2021
|
+
triggering = channel.createLinFrameTriggering(self.getShortName(child_element))
|
|
2022
|
+
self.readLinFrameTriggering(child_element, triggering)
|
|
2023
|
+
else:
|
|
2024
|
+
raise NotImplementedError("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2025
|
+
|
|
2026
|
+
for child_element in self.findall(element, "I-SIGNAL-TRIGGERINGS/*"):
|
|
2027
|
+
tag_name = self.getTagName(child_element)
|
|
2028
|
+
if tag_name == "I-SIGNAL-TRIGGERING":
|
|
2029
|
+
triggering = channel.createISignalTriggering(self.getShortName(child_element))
|
|
2030
|
+
self.readISignalTriggering(child_element, triggering)
|
|
2031
|
+
else:
|
|
2032
|
+
raise NotImplementedError("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2033
|
+
|
|
2034
|
+
for child_element in self.findall(element, "PDU-TRIGGERINGS/*"):
|
|
2035
|
+
tag_name = self.getTagName(child_element)
|
|
2036
|
+
if tag_name == "PDU-TRIGGERING":
|
|
2037
|
+
triggering = channel.createPduTriggering(self.getShortName(child_element))
|
|
2038
|
+
self.readPduTriggering(child_element, triggering)
|
|
2039
|
+
else:
|
|
2040
|
+
raise NotImplementedError("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2041
|
+
|
|
2042
|
+
def readCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
|
|
2043
|
+
self.readIdentifiable(element, channel)
|
|
2044
|
+
self.readPhysicalChannel(element, channel)
|
|
2045
|
+
|
|
2046
|
+
def readLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2047
|
+
self.readIdentifiable(element, channel)
|
|
2048
|
+
self.readPhysicalChannel(element, channel)
|
|
2049
|
+
|
|
2050
|
+
def readCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2051
|
+
for child_element in self.findall(element, "PHYSICAL-CHANNELS/*"):
|
|
2052
|
+
tag_name = self.getTagName(child_element)
|
|
2053
|
+
if tag_name == "CAN-PHYSICAL-CHANNEL":
|
|
2054
|
+
channel = cluster.createCanPhysicalChannel(self.getShortName(child_element))
|
|
2055
|
+
self.readCanPhysicalChannel(child_element, channel)
|
|
2056
|
+
elif tag_name == "LIN-PHYSICAL-CHANNEL":
|
|
2057
|
+
channel = cluster.createLinPhysicalChannel(self.getShortName(child_element))
|
|
2058
|
+
self.readLinPhysicalChannel(child_element, channel)
|
|
2059
|
+
else:
|
|
2060
|
+
raise NotImplementedError("Unsupported Physical Channel <%s>" % tag_name)
|
|
2061
|
+
|
|
2062
|
+
|
|
2063
|
+
def readCommunicationCluster(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2064
|
+
cluster.setBaudrate(self.getChildElementOptionalNumericalValue(element, "BAUDRATE"))
|
|
2065
|
+
self.readCommunicationClusterPhysicalChannels(element, cluster)
|
|
2066
|
+
cluster.setProtocolName(self.getChildElementOptionalLiteral(element, "PROTOCOL-NAME")) \
|
|
2067
|
+
.setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
|
|
2068
|
+
|
|
2069
|
+
def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
|
|
2070
|
+
cluster.setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE"))
|
|
2071
|
+
|
|
1838
2072
|
def readLinCluster(self, element: ET.Element, parent: ARPackage):
|
|
1839
2073
|
short_name = self.getShortName(element)
|
|
1840
2074
|
self.logger.debug("readLinCluster %s" % short_name)
|
|
1841
2075
|
cluster = parent.createLinCluster(short_name)
|
|
1842
2076
|
self.readIdentifiable(element, cluster)
|
|
2077
|
+
child_element = self.find(element, "LIN-CLUSTER-VARIANTS/LIN-CLUSTER-CONDITIONAL")
|
|
2078
|
+
if child_element is not None:
|
|
2079
|
+
self.readCommunicationCluster(child_element, cluster)
|
|
2080
|
+
|
|
2081
|
+
def readCanCluster(self, element: ET.Element, parent: ARPackage):
|
|
2082
|
+
short_name = self.getShortName(element)
|
|
2083
|
+
self.logger.debug("readCanCluster %s" % short_name)
|
|
2084
|
+
cluster = parent.createCanCluster(short_name)
|
|
2085
|
+
self.readIdentifiable(element, cluster)
|
|
2086
|
+
child_element = self.find(element, "CAN-CLUSTER-VARIANTS/CAN-CLUSTER-CONDITIONAL")
|
|
2087
|
+
if child_element is not None:
|
|
2088
|
+
self.readCommunicationCluster(child_element, cluster)
|
|
2089
|
+
self.readAbstractCanCluster(child_element, cluster)
|
|
1843
2090
|
|
|
1844
2091
|
def readPduToFrameMappings(self, element: ET.Element, parent: Frame):
|
|
1845
2092
|
for child_element in self.findall(element, "PDU-TO-FRAME-MAPPINGS/PDU-TO-FRAME-MAPPING"):
|
|
@@ -1867,24 +2114,126 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1867
2114
|
self.logger.debug("readNmPdu %s" % short_name)
|
|
1868
2115
|
pdu = parent.createNmPdu(short_name)
|
|
1869
2116
|
self.readIdentifiable(element, pdu)
|
|
2117
|
+
self.readIPdu(element, pdu)
|
|
1870
2118
|
|
|
1871
2119
|
def readNPdu(self, element: ET.Element, parent: ARPackage):
|
|
1872
2120
|
short_name = self.getShortName(element)
|
|
1873
2121
|
self.logger.debug("readNPdu %s" % short_name)
|
|
1874
2122
|
pdu = parent.createNPdu(short_name)
|
|
1875
2123
|
self.readIdentifiable(element, pdu)
|
|
2124
|
+
self.readIPdu(element, pdu)
|
|
1876
2125
|
|
|
2126
|
+
def readIPdu(self, element: ET.Element, pdu: IPdu):
|
|
2127
|
+
pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH"))
|
|
2128
|
+
|
|
1877
2129
|
def readDcmIPdu(self, element: ET.Element, parent: ARPackage):
|
|
1878
2130
|
short_name = self.getShortName(element)
|
|
1879
2131
|
self.logger.debug("readDcmIPdu %s" % short_name)
|
|
1880
2132
|
pdu = parent.createDcmIPdu(short_name)
|
|
1881
2133
|
self.readIdentifiable(element, pdu)
|
|
2134
|
+
self.readIPdu(element, pdu)
|
|
2135
|
+
pdu.setDiagPduType(self.getChildElementOptionalLiteral(element, "DIAG-PDU-TYPE"))
|
|
2136
|
+
|
|
2137
|
+
def readSecuredIPdu(self, element: ET.Element, parent: ARPackage):
|
|
2138
|
+
short_name = self.getShortName(element)
|
|
2139
|
+
self.logger.debug("readSecuredIPdu %s" % short_name)
|
|
2140
|
+
pdu = parent.createSecuredIPdu(short_name)
|
|
2141
|
+
self.readIdentifiable(element, pdu)
|
|
2142
|
+
self.readIPdu(element, pdu)
|
|
2143
|
+
|
|
2144
|
+
def readNmNode(self, element: ET.Element, nm_node: NmNode):
|
|
2145
|
+
nm_node.setControllerRef(self.getChildElementOptionalRefType(element, "CONTROLLER-REF")) \
|
|
2146
|
+
.setNmIfEcuRef(self.getChildElementOptionalRefType(element, "NM-IF-ECU-REF")) \
|
|
2147
|
+
.setNmNodeId(self.getChildElementOptionalNumericalValue(element, "NM-NODE-ID"))
|
|
2148
|
+
for ref in self.getChildElementRefTypeList(element, "RX-NM-PDU-REFS/RX-NM-PDU-REF"):
|
|
2149
|
+
nm_node.addRxNmPduRef(ref)
|
|
2150
|
+
for ref in self.getChildElementRefTypeList(element, "TX-NM-PDU-REFS/TX-NM-PDU-REF"):
|
|
2151
|
+
nm_node.addTxNmPduRefs(ref)
|
|
2152
|
+
|
|
2153
|
+
def readCanNmNode(self, element: ET.Element, parent: NmCluster):
|
|
2154
|
+
short_name = self.getShortName(element)
|
|
2155
|
+
self.logger.debug("readCanNmNode %s" % short_name)
|
|
2156
|
+
nm_node = parent.createCanNmNode(short_name) # type: CanNmNode
|
|
2157
|
+
self.readIdentifiable(element, nm_node)
|
|
2158
|
+
self.readNmNode(element, nm_node)
|
|
2159
|
+
|
|
2160
|
+
nm_node.setNmMsgCycleOffset(self.getChildElementOptionalFloatValue(element, "NM-MSG-CYCLE-OFFSET")) \
|
|
2161
|
+
.setNmMsgReducedTime(self.getChildElementOptionalFloatValue(element, "NM-MSG-REDUCED-TIME")) \
|
|
2162
|
+
.setNmRangeConfig(self.getChildElementRxIdentifierRange(element, "NM-RANGE-CONFIG"))
|
|
2163
|
+
|
|
2164
|
+
def readNmClusterNmNodes(self, element: ET.Element, parent: NmCluster):
|
|
2165
|
+
self.logger.debug("readNmConfigNmNodes %s" % parent.short_name)
|
|
2166
|
+
for child_element in self.findall(element, "NM-NODES/*"):
|
|
2167
|
+
tag_name = self.getTagName(child_element)
|
|
2168
|
+
if tag_name == "CAN-NM-NODE":
|
|
2169
|
+
self.readCanNmNode(child_element, parent)
|
|
2170
|
+
else:
|
|
2171
|
+
self._raiseError("Unsupported Nm Node <%s>" % tag_name)
|
|
2172
|
+
|
|
2173
|
+
def getCanNmClusterCoupling(self, element: ET.Element) -> CanNmClusterCoupling:
|
|
2174
|
+
coupling = CanNmClusterCoupling()
|
|
2175
|
+
|
|
2176
|
+
for ref in self.getChildElementRefTypeList(element, "COUPLED-CLUSTER-REFS/COUPLED-CLUSTER-REF"):
|
|
2177
|
+
coupling.addCoupledClusterRef(ref)
|
|
2178
|
+
|
|
2179
|
+
coupling.setNmBusloadReductionEnabled(self.getChildElementOptionalBooleanValue(element, "NM-BUSLOAD-REDUCTION-ENABLED")) \
|
|
2180
|
+
.setNmImmediateRestartEnabled(self.getChildElementOptionalBooleanValue(element, "NM-IMMEDIATE-RESTART-ENABLED"))
|
|
2181
|
+
|
|
2182
|
+
return coupling
|
|
1882
2183
|
|
|
2184
|
+
def readNmConfigNmClusterCouplings(self, element: ET.Element, nm_config: NmConfig):
|
|
2185
|
+
self.logger.debug("readNmClusterNmClusterCouplings %s" % nm_config.getShortName())
|
|
2186
|
+
for child_element in self.findall(element, "NM-CLUSTER-COUPLINGS/*"):
|
|
2187
|
+
tag_name = self.getTagName(child_element)
|
|
2188
|
+
if tag_name == "CAN-NM-CLUSTER-COUPLING":
|
|
2189
|
+
nm_config.addNmClusterCouplings(self.getCanNmClusterCoupling(child_element))
|
|
2190
|
+
else:
|
|
2191
|
+
self._raiseError("Unsupported Nm Node <%s>" % tag_name)
|
|
2192
|
+
|
|
2193
|
+
def readNmCluster(self, element: ET.Element, cluster: NmCluster):
|
|
2194
|
+
cluster.setCommunicationClusterRef(self.getChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF")) \
|
|
2195
|
+
.setNmChannelId(self.getChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID")) \
|
|
2196
|
+
.setNmChannelSleepMaster(self.getChildElementOptionalBooleanValue(element, "NM-CHANNEL-SLEEP-MASTER"))
|
|
2197
|
+
self.readNmClusterNmNodes(element, cluster)
|
|
2198
|
+
cluster.setNmSynchronizingNetwork(self.getChildElementOptionalBooleanValue(element, "NM-SYNCHRONIZING-NETWORK"))
|
|
2199
|
+
|
|
2200
|
+
def readCanNmCluster(self, element: ET.Element, parent: NmConfig):
|
|
2201
|
+
short_name = self.getShortName(element)
|
|
2202
|
+
self.logger.debug("readCanNmCluster %s" % short_name)
|
|
2203
|
+
cluster = parent.createCanNmCluster(short_name) # type: CanNmCluster
|
|
2204
|
+
self.readIdentifiable(element, cluster)
|
|
2205
|
+
self.readNmCluster(element, cluster)
|
|
2206
|
+
|
|
2207
|
+
cluster.setNmBusloadReductionActive(self.getChildElementOptionalBooleanValue(element, "NM-BUSLOAD-REDUCTION-ACTIVE")) \
|
|
2208
|
+
.setNmCarWakeUpRxEnabled(self.getChildElementOptionalBooleanValue(element, "NM-CAR-WAKE-UP-RX-ENABLED")) \
|
|
2209
|
+
.setNmCbvPosition(self.getChildElementOptionalNumericalValue(element, "NM-CBV-POSITION")) \
|
|
2210
|
+
.setNmChannelActive(self.getChildElementOptionalBooleanValue(element, "NM-CHANNEL-ACTIVE")) \
|
|
2211
|
+
.setNmImmediateNmCycleTime(self.getChildElementOptionalFloatValue(element, "NM-IMMEDIATE-NM-CYCLE-TIME")) \
|
|
2212
|
+
.setNmImmediateNmTransmissions(self. getChildElementOptionalNumericalValue(element, "NM-IMMEDIATE-NM-TRANSMISSIONS")) \
|
|
2213
|
+
.setNmMessageTimeoutTime(self.getChildElementOptionalFloatValue(element, "NM-MESSAGE-TIMEOUT-TIME")) \
|
|
2214
|
+
.setNmMsgCycleTime(self.getChildElementOptionalFloatValue(element, "NM-MSG-CYCLE-TIME")) \
|
|
2215
|
+
.setNmNetworkTimeout(self.getChildElementOptionalFloatValue(element, "NM-NETWORK-TIMEOUT")) \
|
|
2216
|
+
.setNmNidPosition(self. getChildElementOptionalNumericalValue(element, "NM-NID-POSITION")) \
|
|
2217
|
+
.setNmRemoteSleepIndicationTime(self.getChildElementOptionalFloatValue(element, "NM-REMOTE-SLEEP-INDICATION-TIME")) \
|
|
2218
|
+
.setNmRepeatMessageTime(self.getChildElementOptionalFloatValue(element, "NM-REPEAT-MESSAGE-TIME")) \
|
|
2219
|
+
.setNmUserDataLength(self. getChildElementOptionalNumericalValue(element, "NM-USER-DATA-LENGTH")) \
|
|
2220
|
+
.setNmWaitBusSleepTime(self.getChildElementOptionalFloatValue(element, "NM-WAIT-BUS-SLEEP-TIME"))
|
|
2221
|
+
|
|
2222
|
+
def readNmConfigNmClusters(self, element: ET.Element, parent: NmConfig):
|
|
2223
|
+
for child_element in self.findall(element, "NM-CLUSTERS/*"):
|
|
2224
|
+
tag_name = self.getTagName(child_element)
|
|
2225
|
+
if tag_name == "CAN-NM-CLUSTER":
|
|
2226
|
+
self.readCanNmCluster(child_element, parent)
|
|
2227
|
+
else:
|
|
2228
|
+
self._raiseError("Unsupported Nm Cluster <%s>" % tag_name)
|
|
2229
|
+
|
|
1883
2230
|
def readNmConfig(self, element: ET.Element, parent: ARPackage):
|
|
1884
2231
|
short_name = self.getShortName(element)
|
|
1885
2232
|
self.logger.debug("NmConfig %s" % short_name)
|
|
1886
|
-
|
|
1887
|
-
self.readIdentifiable(element,
|
|
2233
|
+
config = parent.createNmConfig(short_name) # type: NmConfig
|
|
2234
|
+
self.readIdentifiable(element, config)
|
|
2235
|
+
self.readNmConfigNmClusters(element, config)
|
|
2236
|
+
self.readNmConfigNmClusterCouplings(element, config)
|
|
1888
2237
|
|
|
1889
2238
|
def readCanTpConfig(self, element: ET.Element, parent: ARPackage):
|
|
1890
2239
|
short_name = self.getShortName(element)
|
|
@@ -1898,6 +2247,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1898
2247
|
frame = parent.createCanFrame(short_name)
|
|
1899
2248
|
self.readFrame(element, frame)
|
|
1900
2249
|
|
|
2250
|
+
def readEcuInstance(self, element: ET.Element, parent: ARPackage):
|
|
2251
|
+
short_name = self.getShortName(element)
|
|
2252
|
+
self.logger.debug("EcuInstance %s" % short_name)
|
|
2253
|
+
instance = parent.createEcuInstance(short_name)
|
|
2254
|
+
self.readIdentifiable(element, instance)
|
|
2255
|
+
|
|
1901
2256
|
'''
|
|
1902
2257
|
def getFrameMappings(self, element: ET.Element) -> List[FrameMapping]:
|
|
1903
2258
|
mappings = []
|
|
@@ -1949,6 +2304,261 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1949
2304
|
signal.networkRepresentationProps = self.getSwDataDefProps(element, "NETWORK-REPRESENTATION-PROPS")
|
|
1950
2305
|
signal.systemSignalRef = self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF")
|
|
1951
2306
|
|
|
2307
|
+
def readEcucValueCollectionEcucValues(self, element: ET.Element, parent: EcucValueCollection):
|
|
2308
|
+
for child_element in self.findall(element, "ECUC-VALUES/ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL"):
|
|
2309
|
+
ref = self.getChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF")
|
|
2310
|
+
if (ref is not None):
|
|
2311
|
+
parent.addEcucValueRef(ref)
|
|
2312
|
+
self.logger.debug("EcucValue <%s> of EcucValueCollection <%s> has been added", ref.value, parent.short_name)
|
|
2313
|
+
|
|
2314
|
+
def readEcucValueCollection(self, element: ET.Element, parent: ARPackage):
|
|
2315
|
+
short_name = self.getShortName(element)
|
|
2316
|
+
self.logger.debug("EcucValueCollection %s" % short_name)
|
|
2317
|
+
collection = parent.createEcucValueCollection(short_name)
|
|
2318
|
+
self.readIdentifiable(element, collection)
|
|
2319
|
+
collection.setEcuExtractRef(self.getChildElementOptionalRefType(element, "ECU-EXTRACT-REF"))
|
|
2320
|
+
self.readEcucValueCollectionEcucValues(element, collection)
|
|
2321
|
+
|
|
2322
|
+
def readEcucParameterValue(self, element: ET.Element, param_value: EcucParameterValue):
|
|
2323
|
+
param_value.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
|
|
2324
|
+
for annotation in self.getAnnotations(element):
|
|
2325
|
+
param_value.addAnnotation(annotation)
|
|
2326
|
+
|
|
2327
|
+
def getEcucTextualParamValue(self, element: ET.Element) -> EcucTextualParamValue:
|
|
2328
|
+
param_value = EcucTextualParamValue()
|
|
2329
|
+
self.readEcucParameterValue(element, param_value)
|
|
2330
|
+
param_value.setValue(self.getChildElementOptionalLiteral(element, "VALUE"))
|
|
2331
|
+
return param_value
|
|
2332
|
+
|
|
2333
|
+
def getEcucNumericalParamValue(self, element: ET.Element) -> EcucNumericalParamValue:
|
|
2334
|
+
param_value = EcucNumericalParamValue()
|
|
2335
|
+
self.readEcucParameterValue(element, param_value)
|
|
2336
|
+
param_value.setValue(self.getChildElementOptionalNumericalValue(element, "VALUE"))
|
|
2337
|
+
return param_value
|
|
2338
|
+
|
|
2339
|
+
def readEcucContainerValueParameterValues(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2340
|
+
for child_element in self.findall(element, "PARAMETER-VALUES/*"):
|
|
2341
|
+
tag_name = self.getTagName(child_element)
|
|
2342
|
+
if tag_name == "ECUC-TEXTUAL-PARAM-VALUE":
|
|
2343
|
+
container_value.addParameterValue(self.getEcucTextualParamValue(child_element))
|
|
2344
|
+
elif tag_name == "ECUC-NUMERICAL-PARAM-VALUE":
|
|
2345
|
+
container_value.addParameterValue(self.getEcucNumericalParamValue(child_element))
|
|
2346
|
+
else:
|
|
2347
|
+
raise NotImplementedError("Unsupported EcucParameterValue <%s>" % tag_name)
|
|
2348
|
+
|
|
2349
|
+
def readEcucAbstractReferenceValue(self, element: ET.Element, value: EcucAbstractReferenceValue):
|
|
2350
|
+
value.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
|
|
2351
|
+
for annotation in self.getAnnotations(element):
|
|
2352
|
+
value.addAnnotation(annotation)
|
|
2353
|
+
|
|
2354
|
+
def getEcucReferenceValue(self, element: ET.Element) -> EcucReferenceValue:
|
|
2355
|
+
value = EcucReferenceValue()
|
|
2356
|
+
self.readEcucAbstractReferenceValue(element, value)
|
|
2357
|
+
value.setValueRef(self.getChildElementOptionalRefType(element, "VALUE-REF"))
|
|
2358
|
+
return value
|
|
2359
|
+
|
|
2360
|
+
def getAnyInstanceRef(self, element: ET.Element, key) -> AnyInstanceRef:
|
|
2361
|
+
instance_ref = None
|
|
2362
|
+
child_element = self.find(element, key)
|
|
2363
|
+
if child_element is not None:
|
|
2364
|
+
instance_ref = AnyInstanceRef()
|
|
2365
|
+
instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF")) \
|
|
2366
|
+
.setContextElementRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-ELEMENT-REF")) \
|
|
2367
|
+
.setTargetRef(self.getChildElementOptionalRefType(child_element, "TARGET-REF"))
|
|
2368
|
+
return instance_ref
|
|
2369
|
+
|
|
2370
|
+
def getEcucInstanceReferenceValue(self, element: ET.Element) -> EcucInstanceReferenceValue:
|
|
2371
|
+
value = EcucInstanceReferenceValue()
|
|
2372
|
+
self.readEcucAbstractReferenceValue(element, value)
|
|
2373
|
+
value.setValueIRef(self.getAnyInstanceRef(element, "VALUE-IREF"))
|
|
2374
|
+
return value
|
|
2375
|
+
|
|
2376
|
+
def readEcucContainerValueReferenceValues(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2377
|
+
for child_element in self.findall(element, "REFERENCE-VALUES/*"):
|
|
2378
|
+
tag_name = self.getTagName(child_element)
|
|
2379
|
+
if tag_name == "ECUC-REFERENCE-VALUE":
|
|
2380
|
+
container_value.addReferenceValue(self.getEcucReferenceValue(child_element))
|
|
2381
|
+
elif tag_name == "ECUC-INSTANCE-REFERENCE-VALUE":
|
|
2382
|
+
container_value.addReferenceValue(self.getEcucInstanceReferenceValue(child_element))
|
|
2383
|
+
else:
|
|
2384
|
+
raise NotImplementedError("Unsupported EcucParameterValue <%s>" % tag_name)
|
|
2385
|
+
|
|
2386
|
+
def readEcucContainerValue(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2387
|
+
self.readIdentifiable(element, container_value)
|
|
2388
|
+
container_value.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
|
|
2389
|
+
self.readEcucContainerValueParameterValues(element, container_value)
|
|
2390
|
+
self.readEcucContainerValueReferenceValues(element, container_value)
|
|
2391
|
+
self.readEcucContainerValueSubContainers(element, container_value)
|
|
2392
|
+
|
|
2393
|
+
def readEcucContainerValueEcucContainerValue(self, element: ET.Element, parent: EcucContainerValue):
|
|
2394
|
+
short_name = self.getShortName(element)
|
|
2395
|
+
self.logger.debug("EcucContainerValue %s" % short_name)
|
|
2396
|
+
container_value = parent.createSubContainer(short_name)
|
|
2397
|
+
self.readEcucContainerValue(element, container_value)
|
|
2398
|
+
|
|
2399
|
+
def readEcucContainerValueSubContainers(self, element: ET.Element, parent: EcucContainerValue):
|
|
2400
|
+
for child_element in self.findall(element, "SUB-CONTAINERS/*"):
|
|
2401
|
+
tag_name = self.getTagName(child_element)
|
|
2402
|
+
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
2403
|
+
self.readEcucContainerValueEcucContainerValue(child_element, parent)
|
|
2404
|
+
else:
|
|
2405
|
+
raise NotImplementedError("Unsupported Sub Container %s" % tag_name)
|
|
2406
|
+
|
|
2407
|
+
def readEcucModuleConfigurationValuesEcucContainerValue(self, element: ET.Element, parent: EcucModuleConfigurationValues):
|
|
2408
|
+
short_name = self.getShortName(element)
|
|
2409
|
+
self.logger.debug("EcucContainerValue %s" % short_name)
|
|
2410
|
+
container_value = parent.createContainer(short_name)
|
|
2411
|
+
self.readEcucContainerValue(element, container_value)
|
|
2412
|
+
|
|
2413
|
+
def readEcucModuleConfigurationValuesContainers(self, element: ET.Element, values: EcucModuleConfigurationValues):
|
|
2414
|
+
for child_element in self.findall(element, "CONTAINERS/*"):
|
|
2415
|
+
tag_name = self.getTagName(child_element)
|
|
2416
|
+
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
2417
|
+
self.readEcucModuleConfigurationValuesEcucContainerValue(child_element, values)
|
|
2418
|
+
else:
|
|
2419
|
+
raise NotImplementedError("Unsupported Container %s" % tag_name)
|
|
2420
|
+
|
|
2421
|
+
def readEcucModuleConfigurationValues(self, element: ET.Element, parent: ARPackage):
|
|
2422
|
+
short_name = self.getShortName(element)
|
|
2423
|
+
self.logger.debug("EcucModuleConfigurationValues %s" % short_name)
|
|
2424
|
+
values = parent.createEcucModuleConfigurationValues(short_name)
|
|
2425
|
+
self.readIdentifiable(element, values)
|
|
2426
|
+
values.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
|
|
2427
|
+
values.setImplementationConfigVariant(self.getChildElementOptionalLiteral(element, "IMPLEMENTATION-CONFIG-VARIANT"))
|
|
2428
|
+
values.setModuleDescriptionRef(self.getChildElementOptionalRefType(element, "MODULE-DESCRIPTION-REF"))
|
|
2429
|
+
self.readEcucModuleConfigurationValuesContainers(element, values)
|
|
2430
|
+
|
|
2431
|
+
def readPhysicalDimensions(self, element: ET.Element, parent: ARPackage):
|
|
2432
|
+
short_name = self.getShortName(element)
|
|
2433
|
+
self.logger.debug("readPhysicalDimensions %s" % short_name)
|
|
2434
|
+
dimension = parent.createPhysicalDimension(short_name)
|
|
2435
|
+
self.readIdentifiable(element, dimension)
|
|
2436
|
+
dimension.setCurrentExp(self.getChildElementOptionalNumericalValue(element, "CURRENT-EXP")) \
|
|
2437
|
+
.setLengthExp(self.getChildElementOptionalNumericalValue(element, "LENGTH-EXP")) \
|
|
2438
|
+
|
|
2439
|
+
'''
|
|
2440
|
+
def getIPduMappings(self, element: ET.Element) -> List[IPduMapping]:
|
|
2441
|
+
mappings = []
|
|
2442
|
+
for child_element in self.findall(element, tag_name):
|
|
2443
|
+
mapping = IPduMapping()
|
|
2444
|
+
mapping.sourceIPduRef = self.getChildElementOptionalRefType(child_element, "SOURCE-IPDU-REF")
|
|
2445
|
+
mapping.targetIPduRef = self.getChildElementOptionalRefType(child_element, "TARGET-IPDU-REF")
|
|
2446
|
+
mappings.append(mapping)
|
|
2447
|
+
return mappings
|
|
2448
|
+
'''
|
|
2449
|
+
|
|
2450
|
+
def readISignalGroup(self, element: ET.Element, parent: ARPackage):
|
|
2451
|
+
short_name = self.getShortName(element)
|
|
2452
|
+
self.logger.debug("ISignalGroup %s" % short_name)
|
|
2453
|
+
group = parent.createISignalGroup(short_name)
|
|
2454
|
+
self.readIdentifiable(element, group)
|
|
2455
|
+
for ref_type in self.getChildElementRefTypeList(element, "I-SIGNAL-REFS/I-SIGNAL-REF"):
|
|
2456
|
+
group.addISignalRef(ref_type)
|
|
2457
|
+
group.systemSignalGroupRef = self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-GROUP-REF")
|
|
2458
|
+
|
|
2459
|
+
def readSystemSignal(self, element: ET.Element, parent: ARPackage):
|
|
2460
|
+
short_name = self.getShortName(element)
|
|
2461
|
+
self.logger.debug("SystemSignal %s" % short_name)
|
|
2462
|
+
signal = parent.createSystemSignal(short_name)
|
|
2463
|
+
self.readIdentifiable(element, signal)
|
|
2464
|
+
signal.setDynamicLength(self.getChildElementOptionalBooleanValue(element, "DYNAMIC-LENGTH"))
|
|
2465
|
+
|
|
2466
|
+
def readSystemSignalGroup(self, element: ET.Element, parent: ARPackage):
|
|
2467
|
+
short_name = self.getShortName(element)
|
|
2468
|
+
self.logger.debug("SystemSignalGroup %s" % short_name)
|
|
2469
|
+
group = parent.createSystemSignalGroup(short_name)
|
|
2470
|
+
self.readIdentifiable(element, group)
|
|
2471
|
+
for ref_type in self.getChildElementRefTypeList(element, "SYSTEM-SIGNAL-REFS/SYSTEM-SIGNAL-REF"):
|
|
2472
|
+
group.addSystemSignalRefs(ref_type)
|
|
2473
|
+
|
|
2474
|
+
def readISignalToPduMappings(self, element: ET.Element, parent: ISignalIPdu):
|
|
2475
|
+
for child_element in self.findall(element, "I-SIGNAL-TO-PDU-MAPPINGS/I-SIGNAL-TO-I-PDU-MAPPING"):
|
|
2476
|
+
short_name = self.getShortName(child_element)
|
|
2477
|
+
mapping = parent.createISignalToPduMappings(short_name)
|
|
2478
|
+
self.readIdentifiable(child_element, mapping)
|
|
2479
|
+
mapping.setISignalRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-REF")) \
|
|
2480
|
+
.setISignalGroupRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF")) \
|
|
2481
|
+
.setPackingByteOrder(self.getChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER")) \
|
|
2482
|
+
.setStartPosition(self.getChildElementOptionalNumericalValue(child_element, "START-POSITION")) \
|
|
2483
|
+
.setTransferProperty(self.getChildElementOptionalLiteral(child_element, "TRANSFER-PROPERTY")) \
|
|
2484
|
+
.setUpdateIndicationBitPosition(self.getChildElementOptionalNumericalValue(child_element, "UPDATE-INDICATION-BIT-POSITION"))
|
|
2485
|
+
|
|
2486
|
+
def readISignalIPdu(self, element: ET.Element, parent: ARPackage):
|
|
2487
|
+
short_name = self.getShortName(element)
|
|
2488
|
+
self.logger.debug("ISignalIPdu %s" % short_name)
|
|
2489
|
+
i_pdu = parent.createISignalIPdu(short_name)
|
|
2490
|
+
self.readIdentifiable(element, i_pdu)
|
|
2491
|
+
i_pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH"))
|
|
2492
|
+
self.readISignalToPduMappings(element, i_pdu)
|
|
2493
|
+
i_pdu.setUnusedBitPattern(self.getChildElementOptionalLiteral(element, "UNUSED-BIT-PATTERN"))
|
|
2494
|
+
|
|
2495
|
+
def getISignalIPduRefs(self, element: ET.Element) -> List[RefType]:
|
|
2496
|
+
ref_types = []
|
|
2497
|
+
for child_element in self.findall(element, "I-SIGNAL-I-PDUS/I-SIGNAL-I-PDU-REF-CONDITIONAL"):
|
|
2498
|
+
ref_types.append(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-I-PDU-REF"))
|
|
2499
|
+
return ref_types
|
|
2500
|
+
|
|
2501
|
+
def readISignalIPduGroup(self, element: ET.Element, parent: ARPackage):
|
|
2502
|
+
short_name = self.getShortName(element)
|
|
2503
|
+
self.logger.debug("ISignalIPduGroup %s" % short_name)
|
|
2504
|
+
group = parent.createISignalIPduGroup(short_name)
|
|
2505
|
+
self.readIdentifiable(element, group)
|
|
2506
|
+
group.communicationDirection = self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")
|
|
2507
|
+
group.communicationMode = self.getChildElementOptionalLiteral(element, "COMMUNICATION-MODE")
|
|
2508
|
+
for ref_type in self.getChildElementRefTypeList(element, "CONTAINED-I-SIGNAL-I-PDU-GROUP-REFS/CONTAINED-I-SIGNAL-I-PDU-GROUP-REF"):
|
|
2509
|
+
group.addContainedISignalIPduGroupRef(ref_type)
|
|
2510
|
+
for ref_type in self.getISignalIPduRefs(element):
|
|
2511
|
+
group.addISignalIPduRef(ref_type)
|
|
2512
|
+
|
|
2513
|
+
def getSenderReceiverToSignalMapping(self, element: ET.Element) -> SenderReceiverToSignalMapping:
|
|
2514
|
+
mapping = SenderReceiverToSignalMapping()
|
|
2515
|
+
mapping.setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF")))
|
|
2516
|
+
mapping.setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
|
|
2517
|
+
return mapping
|
|
2518
|
+
|
|
2519
|
+
def getSenderReceiverToSignalGroupMapping(self, element: ET.Element) -> SenderReceiverToSignalGroupMapping:
|
|
2520
|
+
mapping = SenderReceiverToSignalGroupMapping()
|
|
2521
|
+
mapping.setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF")))
|
|
2522
|
+
mapping.setSignalGroupRef(self.getChildElementOptionalRefType(element, "SIGNAL-GROUP-REF"))
|
|
2523
|
+
return mapping
|
|
2524
|
+
|
|
2525
|
+
def readSystemMappingDataMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
2526
|
+
for child_element in self.findall(element, "DATA-MAPPINGS/*"):
|
|
2527
|
+
tag_name = self.getTagName(child_element)
|
|
2528
|
+
if tag_name == "SENDER-RECEIVER-TO-SIGNAL-MAPPING":
|
|
2529
|
+
mapping.addDataMapping(self.getSenderReceiverToSignalMapping(child_element))
|
|
2530
|
+
elif tag_name == "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING":
|
|
2531
|
+
mapping.addDataMapping(self.getSenderReceiverToSignalGroupMapping(child_element))
|
|
2532
|
+
else:
|
|
2533
|
+
raise NotImplementedError("Unsupported Data Mapping %s" % tag_name)
|
|
2534
|
+
|
|
2535
|
+
def readSystemMapping(self, element: ET.Element, parent: System):
|
|
2536
|
+
short_name = self.getShortName(element)
|
|
2537
|
+
self.logger.debug("SystemMapping %s" % short_name)
|
|
2538
|
+
mapping = parent.createSystemMapping(short_name)
|
|
2539
|
+
self.readIdentifiable(element, mapping)
|
|
2540
|
+
self.readSystemMappingDataMappings(element, mapping)
|
|
2541
|
+
|
|
2542
|
+
def readSystemMappings(self, element: ET.Element, system: System):
|
|
2543
|
+
for child_element in self.findall(element, "MAPPINGS/*"):
|
|
2544
|
+
tag_name = self.getTagName(child_element)
|
|
2545
|
+
if tag_name == "SYSTEM-MAPPING":
|
|
2546
|
+
self.readSystemMapping(child_element, system)
|
|
2547
|
+
else:
|
|
2548
|
+
raise NotImplementedError("Unsupported Mapping %s" % tag_name)
|
|
2549
|
+
|
|
2550
|
+
def readSystem(self, element: ET.Element, parent: ARPackage):
|
|
2551
|
+
short_name = self.getShortName(element)
|
|
2552
|
+
self.logger.debug("System %s" % short_name)
|
|
2553
|
+
system = parent.createSystem(short_name)
|
|
2554
|
+
self.readIdentifiable(element, system)
|
|
2555
|
+
|
|
2556
|
+
system.setEcuExtractVersion(self.getChildElementOptionalLiteral(element, "ECU-EXTRACT-VERSION"))
|
|
2557
|
+
for child_element in self.findall(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL"):
|
|
2558
|
+
system.addFibexElementRef(self.getChildElementOptionalRefType(child_element, "FIBEX-ELEMENT-REF"))
|
|
2559
|
+
|
|
2560
|
+
self.readSystemMappings(element, system)
|
|
2561
|
+
|
|
1952
2562
|
def readARPackageElements(self, element: ET.Element, parent: ARPackage):
|
|
1953
2563
|
for child_element in self.findall(element, "./ELEMENTS/*"):
|
|
1954
2564
|
tag_name = self.getTagName(child_element.tag)
|
|
@@ -2022,39 +2632,46 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2022
2632
|
self.readNPdu(child_element, parent)
|
|
2023
2633
|
elif tag_name == "DCM-I-PDU":
|
|
2024
2634
|
self.readDcmIPdu(child_element, parent)
|
|
2635
|
+
elif tag_name == "SECURED-I-PDU":
|
|
2636
|
+
self.readSecuredIPdu(child_element, parent)
|
|
2025
2637
|
elif tag_name == "NM-CONFIG":
|
|
2026
2638
|
self.readNmConfig(child_element, parent)
|
|
2027
2639
|
elif tag_name == "CAN-TP-CONFIG":
|
|
2028
2640
|
self.readCanTpConfig(child_element, parent)
|
|
2029
|
-
elif tag_name == "
|
|
2641
|
+
elif tag_name == "LIN-TP-CONFIG":
|
|
2030
2642
|
pass
|
|
2643
|
+
elif tag_name == "SYSTEM":
|
|
2644
|
+
self.readSystem(child_element, parent)
|
|
2031
2645
|
elif tag_name == "ECU-INSTANCE":
|
|
2032
|
-
|
|
2646
|
+
self.readEcuInstance(child_element, parent)
|
|
2033
2647
|
elif tag_name == "GATEWAY":
|
|
2034
2648
|
self.readGateway(child_element, parent)
|
|
2035
2649
|
elif tag_name == "I-SIGNAL-I-PDU-GROUP":
|
|
2036
|
-
|
|
2650
|
+
self.readISignalIPduGroup(child_element, parent)
|
|
2037
2651
|
elif tag_name == "CAN-CLUSTER":
|
|
2038
|
-
|
|
2652
|
+
self.readCanCluster(child_element, parent)
|
|
2039
2653
|
elif tag_name == "CAN-FRAME":
|
|
2040
2654
|
self.readCanFrame(child_element, parent)
|
|
2041
2655
|
elif tag_name == "I-SIGNAL":
|
|
2042
2656
|
self.readISignal(child_element, parent)
|
|
2043
|
-
pass
|
|
2044
2657
|
elif tag_name == "I-SIGNAL-GROUP":
|
|
2045
|
-
|
|
2658
|
+
self.readISignalGroup(child_element, parent)
|
|
2046
2659
|
elif tag_name == "I-SIGNAL-I-PDU":
|
|
2047
|
-
|
|
2660
|
+
self.readISignalIPdu(child_element, parent)
|
|
2048
2661
|
elif tag_name == "SYSTEM-SIGNAL":
|
|
2049
|
-
|
|
2662
|
+
self.readSystemSignal(child_element, parent)
|
|
2050
2663
|
elif tag_name == "SYSTEM-SIGNAL-GROUP":
|
|
2051
|
-
|
|
2664
|
+
self.readSystemSignalGroup(child_element, parent)
|
|
2665
|
+
elif tag_name == "ECUC-VALUE-COLLECTION":
|
|
2666
|
+
self.readEcucValueCollection(child_element, parent)
|
|
2667
|
+
elif tag_name == "ECUC-MODULE-CONFIGURATION-VALUES":
|
|
2668
|
+
self.readEcucModuleConfigurationValues(child_element, parent)
|
|
2669
|
+
elif tag_name == "PHYSICAL-DIMENSION":
|
|
2670
|
+
self.readPhysicalDimensions(child_element, parent)
|
|
2052
2671
|
else:
|
|
2053
2672
|
self._raiseError("Unsupported element type of ARPackage <%s>" % tag_name)
|
|
2054
2673
|
#pass
|
|
2055
2674
|
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
2675
|
def readARPackages(self, element: ET.Element, parent: ARPackage):
|
|
2059
2676
|
for child_element in element.findall("./xmlns:AR-PACKAGES/xmlns:AR-PACKAGE", self.nsmap):
|
|
2060
2677
|
short_name = self.getShortName(child_element)
|
|
@@ -2068,7 +2685,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2068
2685
|
|
|
2069
2686
|
|
|
2070
2687
|
def load(self, filename, document: AUTOSAR):
|
|
2071
|
-
self.logger.info("Load %s ..." % filename)
|
|
2688
|
+
self.logger.info("Load %s ..." % os.path.realpath(filename))
|
|
2072
2689
|
|
|
2073
2690
|
tree = ET.parse(filename)
|
|
2074
2691
|
root = tree.getroot()
|