armodel 1.5.0__py3-none-any.whl → 1.6.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/cli/arxml_dump_cli.py +13 -13
- armodel/cli/memory_section_cli.py +76 -0
- armodel/cli/system_signal_cli.py +74 -0
- armodel/data_models/sw_connector.py +3 -3
- armodel/lib/__init__.py +2 -1
- armodel/lib/system_signal.py +37 -0
- armodel/models/__init__.py +9 -4
- armodel/models/annotation.py +27 -3
- armodel/models/ar_object.py +18 -6
- armodel/models/ar_package.py +271 -127
- armodel/models/ar_ref.py +11 -166
- armodel/models/bsw_module_template.py +37 -14
- armodel/models/common_structure.py +91 -174
- armodel/models/communication.py +2 -2
- armodel/models/data_prototype.py +41 -6
- armodel/models/datatype.py +16 -74
- armodel/models/end_to_end_protection.py +1 -1
- armodel/models/fibex/can_communication.py +119 -3
- armodel/models/fibex/fibex_4_can/__init__.py +0 -0
- armodel/models/fibex/fibex_4_lin/__init__.py +0 -0
- armodel/models/fibex/fibex_4_multiplatform.py +81 -88
- armodel/models/fibex/fibex_core/__init__.py +0 -0
- armodel/models/fibex/fibex_core/core_communication.py +627 -0
- armodel/models/fibex/fibex_core/core_topology.py +180 -0
- armodel/models/fibex/lin_communication.py +24 -3
- armodel/models/general_structure.py +110 -11
- armodel/models/internal_behavior.py +1 -1
- armodel/models/m2/__init__.py +0 -0
- armodel/models/m2/autosar_templates/__init__.py +0 -0
- armodel/models/m2/autosar_templates/common_structure/__init__.py +188 -0
- armodel/models/m2/autosar_templates/common_structure/constants.py +0 -0
- armodel/models/m2/autosar_templates/common_structure/implementation.py +21 -0
- armodel/models/m2/autosar_templates/common_structure/implementation_data_types.py +148 -0
- armodel/models/m2/autosar_templates/ecuc_description_template.py +269 -0
- armodel/models/m2/autosar_templates/generic_structure/__init__.py +0 -0
- armodel/models/m2/autosar_templates/generic_structure/abstract_structure.py +69 -0
- armodel/models/m2/autosar_templates/sw_component_template/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/communication.py +360 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/__init__.py +246 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/instance_refs.py +181 -0
- armodel/models/m2/autosar_templates/sw_component_template/composition/__init__.py +154 -0
- armodel/models/m2/autosar_templates/sw_component_template/composition/instance_refs.py +157 -0
- armodel/models/m2/autosar_templates/sw_component_template/data_type/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/data_type/data_prototypes.py +104 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface/__init__.py +243 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface/instance_refs.py +39 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface.py +236 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/__init__.py +203 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/access_count.py +13 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/data_elements.py +46 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/instance_refs_usage.py +169 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/mode_declaration_group.py +38 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/server_call.py +27 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/trigger.py +10 -0
- armodel/models/m2/autosar_templates/system_template/__init__.py +321 -0
- armodel/models/m2/autosar_templates/system_template/data_mapping.py +88 -0
- armodel/models/m2/autosar_templates/system_template/instance_refs.py +48 -0
- armodel/models/m2/autosar_templates/system_template/network_management.py +554 -0
- armodel/models/m2/autosar_templates/system_template/transport_protocols.py +7 -0
- armodel/models/m2/msr/__init__.py +0 -0
- armodel/models/m2/msr/asam_hdo/__init__.py +0 -0
- armodel/models/m2/msr/asam_hdo/units.py +105 -0
- armodel/models/m2/msr/data_dictionary/__init__.py +0 -0
- armodel/models/m2/msr/data_dictionary/auxillary_objects.py +42 -0
- armodel/models/m2/msr/data_dictionary/data_def_properties.py +295 -0
- armodel/models/m2/msr/documentation/__init__.py +0 -0
- armodel/models/m2/msr/documentation/block_elements.py +18 -0
- armodel/models/m2_msr.py +1 -0
- armodel/models/multilanguage_data.py +15 -0
- armodel/models/per_instance_memory.py +34 -6
- armodel/models/port_prototype.py +2 -253
- armodel/models/service_needs.py +3 -1
- armodel/models/sw_component.py +19 -358
- armodel/parser/__init__.py +2 -1
- armodel/parser/abstract_arxml_parser.py +10 -1
- armodel/parser/arxml_parser.py +912 -229
- armodel/parser/file_parser.py +43 -0
- armodel/tests/test_armodel/models/test_ar_package.py +6 -3
- armodel/tests/test_armodel/models/test_ar_ref.py +18 -16
- armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -5
- armodel/tests/test_armodel/models/test_common_structure.py +8 -7
- armodel/tests/test_armodel/models/test_data_dictionary.py +5 -5
- armodel/tests/test_armodel/models/test_data_prototype.py +2 -2
- armodel/tests/test_armodel/models/test_datatype.py +9 -9
- armodel/tests/test_armodel/models/test_port_interface.py +2 -2
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +3 -3
- armodel/tests/test_armodel/parser/test_sw_components.py +3 -3
- armodel/writer/abstract_arxml_writer.py +5 -1
- armodel/writer/arxml_writer.py +870 -224
- {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/METADATA +28 -1
- armodel-1.6.1.dist-info/RECORD +140 -0
- {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/entry_points.txt +3 -1
- armodel-1.5.0.dist-info/RECORD +0 -91
- {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/LICENSE +0 -0
- {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/WHEEL +0 -0
- {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/top_level.txt +0 -0
armodel/parser/arxml_parser.py
CHANGED
|
@@ -1,17 +1,42 @@
|
|
|
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.ar_ref import RefType
|
|
6
|
+
from ..models.m2.autosar_templates.common_structure.implementation import ImplementationProps
|
|
7
|
+
from ..models.m2.autosar_templates.common_structure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
|
|
8
|
+
from ..models.m2.autosar_templates.generic_structure.abstract_structure import AnyInstanceRef
|
|
9
|
+
from ..models.m2.autosar_templates.sw_component_template.composition.instance_refs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
10
|
+
from ..models.m2.autosar_templates.sw_component_template.port_interface.instance_refs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
11
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior.instance_refs_usage import AutosarParameterRef, AutosarVariableRef, VariableInAtomicSWCTypeInstanceRef
|
|
12
|
+
from ..models.m2.autosar_templates.system_template.instance_refs import VariableDataPrototypeInSystemInstanceRef
|
|
13
|
+
from ..models.m2.autosar_templates.sw_component_template.components.instance_refs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef
|
|
14
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior import RunnableEntityArgument
|
|
15
|
+
from ..models.m2.autosar_templates.sw_component_template.components import PortGroup, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
|
|
16
|
+
from ..models.m2.autosar_templates.sw_component_template.composition import AssemblySwConnector, CompositionSwComponentType, DelegationSwConnector
|
|
17
|
+
|
|
18
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior.mode_declaration_group import ModeAccessPoint, ModeSwitchPoint
|
|
19
|
+
from ..models.m2.autosar_templates.sw_component_template.swc_internal_behavior.server_call import ServerCallPoint
|
|
20
|
+
from ..models.m2.autosar_templates.sw_component_template.communication import ClientComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
21
|
+
from ..models.fibex.lin_communication import LinFrameTriggering
|
|
22
|
+
from ..models.fibex.fibex_core.core_topology import AbstractCanCluster, CanPhysicalChannel, CommunicationCluster, LinPhysicalChannel, PhysicalChannel
|
|
23
|
+
from ..models.m2.msr.data_dictionary.data_def_properties import SwDataDefProps
|
|
24
|
+
from ..models.m2.msr.documentation.block_elements import DocumentationBlock
|
|
25
|
+
from ..models.m2.autosar_templates.system_template import System, SystemMapping
|
|
26
|
+
from ..models.m2.autosar_templates.system_template.data_mapping import SenderReceiverToSignalGroupMapping, SenderReceiverToSignalMapping
|
|
27
|
+
from ..models.m2.autosar_templates.system_template.network_management import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
|
|
28
|
+
from ..models.fibex.can_communication import CanFrameTriggering, RxIdentifierRange
|
|
29
|
+
from ..models.m2.autosar_templates.ecuc_description_template import EcucAbstractReferenceValue, EcucContainerValue, EcucInstanceReferenceValue, EcucModuleConfigurationValues, EcucNumericalParamValue, EcucParameterValue, EcucReferenceValue, EcucTextualParamValue, EcucValueCollection
|
|
30
|
+
from ..models.fibex.fibex_4_multiplatform import ISignalMapping
|
|
31
|
+
from ..models.fibex.fibex_core.core_communication import Frame, FrameTriggering, IPdu, ISignalIPdu, ISignalTriggering, PduTriggering
|
|
7
32
|
from ..models.internal_behavior import IncludedDataTypeSet
|
|
8
33
|
from ..models.timing import ExecutionOrderConstraint, TimingExtension
|
|
9
34
|
from ..models.bsw_module_template import BswModeSenderPolicy
|
|
10
|
-
from ..models.port_interface import ModeSwitchInterface, PortInterface
|
|
35
|
+
from ..models.m2.autosar_templates.sw_component_template.port_interface import InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface
|
|
11
36
|
from ..models.common_structure import IncludedModeDeclarationGroupSet, MemorySection, ModeDeclarationGroup, ModeDeclarationGroupPrototype, ModeRequestTypeMap
|
|
12
37
|
from ..models.implementation import BswImplementation, EngineeringObject
|
|
13
38
|
from ..models.general_structure import MultilanguageReferrable
|
|
14
|
-
from ..models.multilanguage_data import LOverviewParagraph, MultiLanguageOverviewParagraph, LLongName, MultilanguageLongName
|
|
39
|
+
from ..models.multilanguage_data import LOverviewParagraph, MultiLanguageOverviewParagraph, LLongName, MultiLanguageParagraph, MultilanguageLongName
|
|
15
40
|
from ..models.data_def_properties import ValueList
|
|
16
41
|
from ..models.record_layout import SwRecordLayoutGroup, SwRecordLayoutGroupContent, SwRecordLayoutV
|
|
17
42
|
from ..models.datatype import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, AutosarDataType, BaseTypeDirectDefinition
|
|
@@ -22,31 +47,23 @@ from ..models.service_mapping import RoleBasedPortAssignment
|
|
|
22
47
|
from ..models.ar_package import AUTOSAR, ARPackage
|
|
23
48
|
from ..models.ar_object import ARLiteral
|
|
24
49
|
from ..models.service_needs import RoleBasedDataAssignment
|
|
25
|
-
from ..models.
|
|
26
|
-
from ..models.
|
|
27
|
-
from ..models.data_prototype import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype
|
|
50
|
+
from ..models.sw_component import AtomicSwComponentType, PortAPIOption, PortDefinedArgumentValue, ServiceDependency, SwcServiceDependency
|
|
51
|
+
from ..models.m2.autosar_templates.sw_component_template.data_type.data_prototypes import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
28
52
|
from ..models.port_prototype import ModeSwitchReceiverComSpec, QueuedReceiverComSpec
|
|
29
53
|
from ..models.annotation import Annotation, GeneralAnnotation
|
|
30
54
|
from ..models.global_constraints import InternalConstrs, DataConstr, DataConstrRule, PhysConstrs
|
|
31
55
|
|
|
32
|
-
from ..models import SwcInternalBehavior, RunnableEntity, RTEEvent,
|
|
56
|
+
from ..models import SwcInternalBehavior, RunnableEntity, RTEEvent, OperationInvokedEvent, DataReceivedEvent, RVariableInAtomicSwcInstanceRef
|
|
33
57
|
from ..models import SwcModeSwitchEvent, RModeInAtomicSwcInstanceRef
|
|
34
|
-
|
|
35
|
-
from ..models import ImplementationDataType,
|
|
36
|
-
from ..models import RPortPrototype, PPortPrototype
|
|
37
|
-
from ..models import ReceiverComSpec, ClientComSpec, NonqueuedReceiverComSpec
|
|
38
|
-
from ..models import SenderComSpec, NonqueuedSenderComSpec, ServerComSpec
|
|
58
|
+
|
|
59
|
+
from ..models import ImplementationDataType, SwPointerTargetProps, DataTypeMappingSet, DataTypeMap
|
|
39
60
|
from ..models import SenderReceiverInterface, ClientServerInterface, ClientServerOperation, ArgumentDataPrototype
|
|
40
61
|
from ..models import Identifiable, AdminData, Sdg, Sd
|
|
41
|
-
from ..models import AssemblySwConnector, PPortInCompositionInstanceRef, RPortInCompositionInstanceRef
|
|
42
|
-
from ..models import DelegationSwConnector
|
|
43
62
|
from ..models import CompuMethod, CompuScale, CompuScales, Compu, CompuConst, CompuConstTextContent, CompuScaleConstantContents, CompuScaleRationalFormula, CompuRationalCoeffs, CompuNominatorDenominator
|
|
44
63
|
from ..models import InternalBehavior, ExecutableEntity
|
|
45
64
|
from ..models import Implementation, Code, AutosarEngineeringObject, ResourceConsumption
|
|
46
65
|
from ..models import TransmissionAcknowledgementRequest
|
|
47
66
|
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
67
|
from ..models import ApplicationRecordDataType
|
|
51
68
|
from ..models import SwValueCont, SwValues
|
|
52
69
|
|
|
@@ -55,29 +72,31 @@ from .abstract_arxml_parser import AbstractARXMLParser
|
|
|
55
72
|
class ARXMLParser(AbstractARXMLParser):
|
|
56
73
|
def __init__(self, options=None) -> None:
|
|
57
74
|
super().__init__(options)
|
|
75
|
+
|
|
76
|
+
def getChildElementRxIdentifierRange(self, element: ET.Element, key: str) -> RxIdentifierRange:
|
|
77
|
+
child_element = self.find(element, key)
|
|
78
|
+
range = None
|
|
79
|
+
if child_element is not None:
|
|
80
|
+
range = RxIdentifierRange()
|
|
81
|
+
range.setLowerCanId(self.getChildElementOptionalNumericalValue(child_element, "LOWER-CAN-ID")) \
|
|
82
|
+
.setUpperCanId(self.getChildElementOptionalNumericalValue(child_element, "UPPER-CAN-ID"))
|
|
83
|
+
return range
|
|
58
84
|
|
|
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
85
|
def readSd(self, element: ET.Element, sdg: Sdg):
|
|
66
86
|
for child_element in self.findall(element, "./SD"):
|
|
67
87
|
sd = Sd()
|
|
68
88
|
if 'GID' in child_element.attrib:
|
|
69
|
-
sd.
|
|
70
|
-
sd.
|
|
89
|
+
sd.setGID(child_element.attrib['GID'])
|
|
90
|
+
sd.setValue(child_element.text)
|
|
71
91
|
sdg.addSd(sd)
|
|
72
92
|
|
|
73
93
|
def getSdg(self, element: ET.Element) -> Sdg:
|
|
74
94
|
sdg = Sdg()
|
|
75
95
|
if 'GID' in element.attrib:
|
|
76
|
-
sdg.
|
|
96
|
+
sdg.setGID(element.attrib["GID"])
|
|
77
97
|
self.readSd(element, sdg)
|
|
78
|
-
child_element
|
|
79
|
-
|
|
80
|
-
sdg.sdg_contents_type = self.getSdg(child_element)
|
|
98
|
+
for child_element in self.findall(element, "SDG"):
|
|
99
|
+
sdg.addSdgContentsType(self.getSdg(child_element))
|
|
81
100
|
return sdg
|
|
82
101
|
|
|
83
102
|
def readSdgs(self, element: ET.Element, admin_data: AdminData):
|
|
@@ -90,16 +109,21 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
90
109
|
self.logger.debug("readAdminData")
|
|
91
110
|
admin_data = AdminData()
|
|
92
111
|
self.readSdgs(child_element, admin_data)
|
|
93
|
-
identifiable.admin_data
|
|
112
|
+
identifiable.setAdminData(admin_data)
|
|
94
113
|
|
|
95
114
|
def readMultilanguageReferrable(self, element: ET.Element, referrable: MultilanguageReferrable):
|
|
96
115
|
self.readElementAttributes(element, referrable)
|
|
97
|
-
referrable.
|
|
116
|
+
referrable.setLongName(self.getMultilanguageLongName(element, "LONG-NAME"))
|
|
98
117
|
|
|
99
118
|
def readIdentifiable(self, element: ET.Element, identifiable: Identifiable):
|
|
100
119
|
self.readMultilanguageReferrable(element, identifiable)
|
|
101
|
-
|
|
102
|
-
|
|
120
|
+
|
|
121
|
+
for annotation in self.getAnnotations(element):
|
|
122
|
+
identifiable.addAnnotation(annotation)
|
|
123
|
+
|
|
124
|
+
identifiable.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
125
|
+
.setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC"))
|
|
126
|
+
|
|
103
127
|
self.readAdminData(element, identifiable)
|
|
104
128
|
|
|
105
129
|
def readLLongName(self, element: ET.Element, long_name: MultilanguageLongName):
|
|
@@ -137,24 +161,31 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
137
161
|
self.readElementAttributes(child_element, paragraph)
|
|
138
162
|
self.readLOverviewParagraph(child_element, paragraph)
|
|
139
163
|
return paragraph
|
|
140
|
-
|
|
141
|
-
def
|
|
142
|
-
|
|
143
|
-
if
|
|
164
|
+
|
|
165
|
+
def getVariableInAtomicSWCTypeInstanceRef(self, element: ET.Element) -> VariableInAtomicSWCTypeInstanceRef:
|
|
166
|
+
autosar_variable_iref = None
|
|
167
|
+
if element is not None:
|
|
144
168
|
autosar_variable_iref = VariableInAtomicSWCTypeInstanceRef()
|
|
145
|
-
self.readElementAttributes(
|
|
146
|
-
autosar_variable_iref.
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
169
|
+
self.readElementAttributes(element, autosar_variable_iref)
|
|
170
|
+
autosar_variable_iref.setPortPrototypeRef(self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF"))
|
|
171
|
+
autosar_variable_iref.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
|
|
172
|
+
return autosar_variable_iref
|
|
173
|
+
|
|
174
|
+
def getAutosarVariableInImplDatatype(self, element: ET.Element) -> AutosarVariableRef:
|
|
175
|
+
child_element = self.find(element, "ACCESSED-VARIABLE")
|
|
176
|
+
accessed_variable_ref = None
|
|
177
|
+
if (child_element is not None):
|
|
178
|
+
accessed_variable_ref = AutosarVariableRef()
|
|
179
|
+
accessed_variable_ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF")))
|
|
180
|
+
return accessed_variable_ref
|
|
181
|
+
|
|
182
|
+
def getLocalVariableRef(self, element: ET.Element) -> AutosarVariableRef:
|
|
183
|
+
child_element = self.find(element, "ACCESSED-VARIABLE")
|
|
184
|
+
accessed_variable_ref = None
|
|
156
185
|
if (child_element is not None):
|
|
157
|
-
accessed_variable_ref
|
|
186
|
+
accessed_variable_ref = AutosarVariableRef()
|
|
187
|
+
accessed_variable_ref.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
|
|
188
|
+
return accessed_variable_ref
|
|
158
189
|
|
|
159
190
|
def _readVariableAccesses(self, element: ET.Element, parent: RunnableEntity, key: str):
|
|
160
191
|
for child_element in element.findall("./xmlns:%s/xmlns:VARIABLE-ACCESS" % key, self.nsmap):
|
|
@@ -164,25 +195,25 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
164
195
|
|
|
165
196
|
if (key == "DATA-RECEIVE-POINT-BY-ARGUMENTS"):
|
|
166
197
|
variable_access = parent.createDataReceivePointByArgument(short_name)
|
|
167
|
-
self.
|
|
198
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
|
|
168
199
|
elif (key == "DATA-RECEIVE-POINT-BY-VALUES"):
|
|
169
200
|
variable_access = parent.createDataReceivePointByValue(short_name)
|
|
170
|
-
self.
|
|
201
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
|
|
171
202
|
elif (key == "DATA-READ-ACCESSS"):
|
|
172
203
|
variable_access = parent.createDataReadAccess(short_name)
|
|
173
|
-
self.
|
|
204
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
|
|
174
205
|
elif (key == "DATA-WRITE-ACCESSS"):
|
|
175
206
|
variable_access = parent.createDataWriteAccess(short_name)
|
|
176
|
-
self.
|
|
207
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
|
|
177
208
|
elif (key == "DATA-SEND-POINTS"):
|
|
178
209
|
variable_access = parent.createDataSendPoint(short_name)
|
|
179
|
-
self.
|
|
210
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableInImplDatatype(child_element))
|
|
180
211
|
elif (key == "WRITTEN-LOCAL-VARIABLES"):
|
|
181
212
|
variable_access = parent.createWrittenLocalVariable(short_name)
|
|
182
|
-
self.
|
|
213
|
+
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element))
|
|
183
214
|
elif (key == "READ-LOCAL-VARIABLES"):
|
|
184
215
|
variable_access = parent.createReadLocalVariable(short_name)
|
|
185
|
-
self.
|
|
216
|
+
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element))
|
|
186
217
|
else:
|
|
187
218
|
self._raiseError("Invalid key type <%s>" % key)
|
|
188
219
|
|
|
@@ -215,16 +246,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
215
246
|
mode_group.type_tref = self.getChildElementRefType(parent.short_name, child_element, "TYPE-TREF")
|
|
216
247
|
|
|
217
248
|
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)
|
|
249
|
+
for ref in self.getChildElementRefTypeList(element, "CAN-ENTER-EXCLUSIVE-AREA-REFS/CAN-ENTER-EXCLUSIVE-AREA-REF"):
|
|
250
|
+
entity.addCanEnterExclusiveAreaRef(ref)
|
|
222
251
|
|
|
223
252
|
def readExecutableEntity(self, element: ET.Element, entity: ExecutableEntity):
|
|
224
253
|
self.logger.debug("readExecutableEntity %s" % entity.short_name)
|
|
225
254
|
self.readIdentifiable(element, entity)
|
|
226
255
|
self.readCanEnterExclusiveAreaRefs(element, entity)
|
|
227
|
-
entity.
|
|
256
|
+
entity.setMinimumStartInterval(self.getChildElementOptionalFloatValue(element, "MINIMUM-START-INTERVAL")) \
|
|
257
|
+
.setSwAddrMethodRef(self.getChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF"))
|
|
228
258
|
|
|
229
259
|
def readBswModuleEntityManagedModeGroup(self, element: ET.Element, entity: BswModuleEntity):
|
|
230
260
|
for child_element in self.findall(element, "./MANAGED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL"):
|
|
@@ -234,7 +264,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
234
264
|
|
|
235
265
|
def readBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
|
|
236
266
|
self.readExecutableEntity(element, entity)
|
|
237
|
-
entity.
|
|
267
|
+
entity.setImplementedEntryRef(self.getChildElementRefType(entity.short_name, element, "IMPLEMENTED-ENTRY-REF"))
|
|
238
268
|
self.readBswModuleEntityManagedModeGroup(element, entity)
|
|
239
269
|
|
|
240
270
|
def readBswCalledEntity(self, element: ET.Element, parent: BswInternalBehavior):
|
|
@@ -523,7 +553,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
523
553
|
short_name = self.getShortName(child_element)
|
|
524
554
|
memory_section = consumption.createMemorySection(short_name)
|
|
525
555
|
self.readIdentifiable(child_element, memory_section)
|
|
526
|
-
memory_section.
|
|
556
|
+
memory_section.setAlignment(self.getChildElementOptionalLiteral(child_element, "ALIGNMENT"))
|
|
527
557
|
self.readMemorySectionOptions(child_element, memory_section)
|
|
528
558
|
memory_section.size = self.getChildElementOptionalNumericalValue(child_element, "SIZE")
|
|
529
559
|
memory_section.swAddrMethodRef = self.getChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF")
|
|
@@ -586,6 +616,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
586
616
|
def readDataSendPoints(self, element: ET.Element, parent: RunnableEntity):
|
|
587
617
|
self._readVariableAccesses(element, parent, "DATA-SEND-POINTS")
|
|
588
618
|
|
|
619
|
+
def getRunnableEntityArgument(self, element: ET.Element) -> RunnableEntityArgument:
|
|
620
|
+
argument = RunnableEntityArgument()
|
|
621
|
+
argument.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
622
|
+
return argument
|
|
623
|
+
|
|
589
624
|
def getAutosarParameterRef(self, element: ET.Element, key: str) -> AutosarParameterRef:
|
|
590
625
|
accessed_parameter = None
|
|
591
626
|
child_element = element.find("./xmlns:%s" % key, self.nsmap)
|
|
@@ -613,22 +648,22 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
613
648
|
operation_iref = ROperationInAtomicSwcInstanceRef()
|
|
614
649
|
operation_iref.context_r_port_ref = self.getChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF")
|
|
615
650
|
operation_iref.target_required_operation_ref = self.getChildElementOptionalRefType(child_element, "TARGET-REQUIRED-OPERATION-REF")
|
|
616
|
-
parent.operation_iref
|
|
651
|
+
parent.setOperationIRef(operation_iref)
|
|
617
652
|
|
|
618
653
|
def readRVariableInAtomicSwcInstanceRef(self, element: ET.Element, parent: DataReceivedEvent):
|
|
619
654
|
child_element = self.find(element, "DATA-IREF")
|
|
620
655
|
if (child_element is not None):
|
|
621
656
|
data_iref = RVariableInAtomicSwcInstanceRef()
|
|
622
|
-
data_iref.
|
|
623
|
-
|
|
624
|
-
parent.data_iref
|
|
657
|
+
data_iref.setContextRPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF")) \
|
|
658
|
+
.setTargetDataElementRef(self.getChildElementOptionalRefType(child_element, "TARGET-DATA-ELEMENT-REF"))
|
|
659
|
+
parent.setDataIRef(data_iref)
|
|
625
660
|
|
|
626
661
|
def readRModeInAtomicSwcInstanceRef(self, element: ET.Element, parent: SwcModeSwitchEvent):
|
|
627
662
|
for child_element in element.findall("./xmlns:MODE-IREFS/xmlns:MODE-IREF", self.nsmap):
|
|
628
663
|
mode_iref = RModeInAtomicSwcInstanceRef()
|
|
629
|
-
mode_iref.
|
|
630
|
-
|
|
631
|
-
|
|
664
|
+
mode_iref.setContextPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-PORT-REF")) \
|
|
665
|
+
.setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
|
|
666
|
+
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-DECLARATION-REF"))
|
|
632
667
|
parent.addModeIRef(mode_iref)
|
|
633
668
|
|
|
634
669
|
def readSynchronousServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
|
|
@@ -636,7 +671,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
636
671
|
self.logger.debug("readSynchronousServerCallPoint %s" % short_name)
|
|
637
672
|
server_call_point = parent.createSynchronousServerCallPoint(short_name)
|
|
638
673
|
self.readIdentifiable(element, server_call_point)
|
|
639
|
-
server_call_point.
|
|
674
|
+
server_call_point.setTimeout(self.getChildElementOptionalFloatValue(element, "TIMEOUT"))
|
|
640
675
|
self.readROperationIRef(element, "OPERATION-IREF", server_call_point)
|
|
641
676
|
|
|
642
677
|
def readAsynchronousServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
|
|
@@ -644,11 +679,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
644
679
|
self.logger.debug("readAsynchronousServerCallPoint %s" % short_name)
|
|
645
680
|
server_call_point = parent.createAsynchronousServerCallPoint(short_name)
|
|
646
681
|
self.readIdentifiable(element, server_call_point)
|
|
647
|
-
server_call_point.
|
|
682
|
+
server_call_point.setTimeout(self.getChildElementOptionalFloatValue(element, "TIMEOUT"))
|
|
648
683
|
self.readROperationIRef(element, "OPERATION-IREF", server_call_point)
|
|
649
684
|
|
|
650
685
|
def readInternalBehaviorServerCallPoint(self, element: ET.Element, parent: RunnableEntity):
|
|
651
|
-
for child_element in
|
|
686
|
+
for child_element in self.findall(element, "SERVER-CALL-POINTS/*"):
|
|
652
687
|
tag_name = self.getTagName(child_element.tag)
|
|
653
688
|
if tag_name == "SYNCHRONOUS-SERVER-CALL-POINT":
|
|
654
689
|
self.readSynchronousServerCallPoint(child_element, parent)
|
|
@@ -665,10 +700,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
665
700
|
|
|
666
701
|
def getRModeInAtomicSwcInstanceRef(self, element: ET.Element) -> RModeInAtomicSwcInstanceRef:
|
|
667
702
|
iref = RModeInAtomicSwcInstanceRef()
|
|
668
|
-
iref.
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
703
|
+
iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
|
|
704
|
+
.setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
|
|
705
|
+
.setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
|
|
706
|
+
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-DECLARATION-REF"))
|
|
672
707
|
return iref
|
|
673
708
|
|
|
674
709
|
def getRModeGroupInAtomicSWCInstanceRef(self, element: ET.Element) -> RModeGroupInAtomicSWCInstanceRef:
|
|
@@ -676,45 +711,72 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
676
711
|
iref = None
|
|
677
712
|
if child_element is not None:
|
|
678
713
|
iref = RModeGroupInAtomicSWCInstanceRef()
|
|
679
|
-
iref.
|
|
680
|
-
|
|
714
|
+
iref.setContextRPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-R-PORT-REF")) \
|
|
715
|
+
.setTargetModeGroupRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF"))
|
|
716
|
+
return iref
|
|
717
|
+
|
|
718
|
+
def getPModeGroupInAtomicSWCInstanceRef(self, element: ET.Element) -> PModeGroupInAtomicSwcInstanceRef:
|
|
719
|
+
child_element = self.find(element, "MODE-GROUP-IREF")
|
|
720
|
+
iref = None
|
|
721
|
+
if child_element is not None:
|
|
722
|
+
iref = PModeGroupInAtomicSwcInstanceRef()
|
|
723
|
+
iref.setContextPPortRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-P-PORT-REF")) \
|
|
724
|
+
.setTargetModeGroupRef(self.getChildElementOptionalRefType(child_element, "TARGET-MODE-GROUP-REF"))
|
|
681
725
|
return iref
|
|
682
726
|
|
|
683
727
|
def readModeAccessPoints(self, element: ET.Element, parent: RunnableEntity):
|
|
684
728
|
for child_element in self.findall(element, "MODE-ACCESS-POINTS/MODE-ACCESS-POINT"):
|
|
685
729
|
point = ModeAccessPoint()
|
|
686
|
-
point.
|
|
730
|
+
point.setModeGroupIRef(self.getRModeGroupInAtomicSWCInstanceRef(child_element))
|
|
687
731
|
parent.addModeAccessPoint(point)
|
|
688
732
|
|
|
733
|
+
def readModeSwitchPoints(self, element: ET.Element, parent: RunnableEntity):
|
|
734
|
+
for child_element in self.findall(element, "MODE-SWITCH-POINTS/MODE-SWITCH-POINT"):
|
|
735
|
+
point = parent.createModeSwitchPoint(self.getShortName(child_element))
|
|
736
|
+
point.setModeGroupIRef(self.getPModeGroupInAtomicSWCInstanceRef(child_element))
|
|
737
|
+
|
|
738
|
+
def readRunnableEntityArguments(self, element: ET.Element, entity: RunnableEntity):
|
|
739
|
+
for child_element in self.findall(element, "ARGUMENTS/*"):
|
|
740
|
+
tag_name = self.getTagName(child_element)
|
|
741
|
+
if tag_name == "RUNNABLE-ENTITY-ARGUMENT":
|
|
742
|
+
entity.addArgument(self.getRunnableEntityArgument(child_element))
|
|
743
|
+
else:
|
|
744
|
+
raise NotImplementedError("Unsupported Arguments of runnable entity <%s>" % tag_name)
|
|
745
|
+
|
|
746
|
+
def readRunnableEntity(self, element: ET.Element, entity: RunnableEntity):
|
|
747
|
+
self.readExecutableEntity(element, entity)
|
|
748
|
+
self.readRunnableEntityArguments(element, entity)
|
|
749
|
+
|
|
750
|
+
entity.setCanBeInvokedConcurrently(self.getChildElementOptionalBooleanValue(element, "CAN-BE-INVOKED-CONCURRENTLY"))
|
|
751
|
+
entity.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
752
|
+
|
|
753
|
+
self.readDataReceivePointByArguments(element, entity)
|
|
754
|
+
self.readDataReceivePointByValues(element, entity)
|
|
755
|
+
self.readDataReadAccesses(element, entity)
|
|
756
|
+
self.readDataWriteAccesses(element, entity)
|
|
757
|
+
self.readDataSendPoints(element, entity)
|
|
758
|
+
self.readInternalBehaviorServerCallPoint(element, entity)
|
|
759
|
+
self.readInternalTriggeringPoints(element, entity)
|
|
760
|
+
self.readModeAccessPoints(element, entity)
|
|
761
|
+
self.readModeSwitchPoints(element, entity)
|
|
762
|
+
self.readParameterAccesses(element, entity)
|
|
763
|
+
self.readReadLocalVariables(element, entity)
|
|
764
|
+
self.readWrittenLocalVariables(element, entity)
|
|
765
|
+
|
|
689
766
|
def readSwcInternalBehaviorRunnables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
690
767
|
for child_element in self.findall(element, "RUNNABLES/RUNNABLE-ENTITY"):
|
|
691
768
|
short_name = self.getShortName(child_element)
|
|
692
769
|
entity = parent.createRunnableEntity(short_name)
|
|
693
770
|
self.logger.debug("readRunnableEntities %s" % short_name)
|
|
694
771
|
|
|
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)
|
|
772
|
+
self.readRunnableEntity(child_element, entity)
|
|
711
773
|
|
|
712
774
|
def getRModeInAtomicSwcInstanceRef(self, element: ET.Element) -> RModeInAtomicSwcInstanceRef:
|
|
713
775
|
iref = RModeInAtomicSwcInstanceRef()
|
|
714
|
-
iref.
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
776
|
+
iref.setBaseRef(self.getChildElementOptionalRefType(element, "BASE-REF")) \
|
|
777
|
+
.setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
|
|
778
|
+
.setContextModeDeclarationGroupPrototypeRef(self.getChildElementOptionalRefType(element, "CONTEXT-MODE-DECLARATION-GROUP-PROTOTYPE-REF")) \
|
|
779
|
+
.setTargetModeDeclarationRef(self.getChildElementOptionalRefType(element, "TARGET-MODE-DECLARATION-REF"))
|
|
718
780
|
return iref
|
|
719
781
|
|
|
720
782
|
def readRTEEvent(self, element: ET.Element, event: RTEEvent):
|
|
@@ -736,32 +798,35 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
736
798
|
event = parent.createOperationInvokedEvent(short_name)
|
|
737
799
|
self.readOperationIRef(element, event)
|
|
738
800
|
self.readRTEEvent(element, event)
|
|
739
|
-
|
|
801
|
+
|
|
802
|
+
def readVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
|
|
803
|
+
self.readAutosarDataPrototype(element, prototype)
|
|
804
|
+
prototype.setInitValue(self.getInitValue(element))
|
|
805
|
+
|
|
740
806
|
def readExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
741
807
|
for child_element in element.findall("./xmlns:EXPLICIT-INTER-RUNNABLE-VARIABLES/xmlns:VARIABLE-DATA-PROTOTYPE", self.nsmap):
|
|
742
808
|
short_name = self.getShortName(child_element)
|
|
743
809
|
prototype = parent.createExplicitInterRunnableVariable(short_name)
|
|
744
|
-
|
|
745
|
-
prototype.type_tref = self.getChildElementOptionalRefType(child_element, "TYPE-TREF")
|
|
746
|
-
prototype.init_value = self.getInitValue(child_element)
|
|
810
|
+
self.readVariableDataPrototype(child_element, prototype)
|
|
747
811
|
|
|
748
812
|
def readPerInstanceMemories(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
749
813
|
for child_element in element.findall("./xmlns:PER-INSTANCE-MEMORYS/xmlns:PER-INSTANCE-MEMORY", self.nsmap):
|
|
750
814
|
short_name = self.getShortName(child_element)
|
|
751
815
|
memory = behavior.createPerInstanceMemory(short_name)
|
|
752
816
|
self.readIdentifiable(child_element, memory)
|
|
753
|
-
memory.
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
817
|
+
memory.setInitValue(self.getChildElementOptionalLiteral(child_element, "INIT-VALUE")) \
|
|
818
|
+
.setSwDataDefProps(self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")) \
|
|
819
|
+
.setType(self.getChildElementOptionalLiteral(child_element, "TYPE")) \
|
|
820
|
+
.setTypeDefinition(self.getChildElementOptionalLiteral(child_element, "TYPE-DEFINITION"))
|
|
757
821
|
|
|
758
822
|
def readAutosarDataPrototype(self, element: ET.Element, prototype: AutosarDataPrototype):
|
|
759
|
-
|
|
823
|
+
self.readDataPrototype(element, prototype)
|
|
824
|
+
prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
|
|
760
825
|
|
|
761
826
|
def readParameterDataPrototype(self, element: ET.Element, prototype: ParameterDataPrototype):
|
|
762
827
|
self.readIdentifiable(element, prototype)
|
|
763
828
|
self.readAutosarDataPrototype(element, prototype)
|
|
764
|
-
prototype.
|
|
829
|
+
prototype.setInitValue(self.getInitValue(element))
|
|
765
830
|
|
|
766
831
|
def readPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
767
832
|
for child_element in element.findall("./xmlns:PER-INSTANCE-PARAMETERS/xmlns:PARAMETER-DATA-PROTOTYPE", self.nsmap):
|
|
@@ -837,21 +902,53 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
837
902
|
self._raiseError("Unsupported SwcInternalBehavior Event <%s>" % tag_name)
|
|
838
903
|
|
|
839
904
|
def readSwPointerTargetProps(self, element: ET.Element, parent: SwDataDefProps):
|
|
840
|
-
child_element =
|
|
841
|
-
if
|
|
905
|
+
child_element = self.find(element, "SW-POINTER-TARGET-PROPS")
|
|
906
|
+
if child_element is not None:
|
|
842
907
|
sw_pointer_target_props = SwPointerTargetProps()
|
|
843
908
|
sw_pointer_target_props.target_category = self.getChildElementOptionalLiteral(child_element, "TARGET-CATEGORY")
|
|
844
909
|
sw_pointer_target_props.sw_data_def_props = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
|
|
845
|
-
parent.
|
|
910
|
+
parent.swPointerTargetProps = sw_pointer_target_props
|
|
911
|
+
|
|
912
|
+
def readLParagraph(self, element: ET.Element, paragraph: MultiLanguageParagraph):
|
|
913
|
+
for child_element in self.findall(element, "./L-1"):
|
|
914
|
+
l1 = LOverviewParagraph()
|
|
915
|
+
self.readElementAttributes(child_element, l1)
|
|
916
|
+
l1.value = child_element.text
|
|
917
|
+
if 'L' in child_element.attrib:
|
|
918
|
+
l1.l = child_element.attrib['L']
|
|
919
|
+
paragraph.addL1(l1)
|
|
920
|
+
|
|
921
|
+
def getMultiLanguageParagraphs(self, element: ET.Element, key: str) -> List[MultiLanguageParagraph]:
|
|
922
|
+
paragraphs = []
|
|
923
|
+
for child_element in self.findall(element, key):
|
|
924
|
+
paragraph = MultiLanguageParagraph()
|
|
925
|
+
self.readElementAttributes(child_element, paragraph)
|
|
926
|
+
self.readLParagraph(child_element, paragraph)
|
|
927
|
+
paragraphs.append(paragraph)
|
|
928
|
+
return paragraphs
|
|
929
|
+
|
|
930
|
+
def getDocumentationBlock(self, element: ET.Element, key: str) -> DocumentationBlock:
|
|
931
|
+
block = None
|
|
932
|
+
child_element = self.find(element, key)
|
|
933
|
+
if child_element is not None:
|
|
934
|
+
block = DocumentationBlock()
|
|
935
|
+
self.readElementAttributes(child_element, block)
|
|
936
|
+
for paragraph in self.getMultiLanguageParagraphs(child_element, "P"):
|
|
937
|
+
block.addP(paragraph)
|
|
938
|
+
return block
|
|
846
939
|
|
|
847
940
|
def readGeneralAnnotation(self, element: ET.Element, annotation: GeneralAnnotation):
|
|
848
|
-
annotation.
|
|
941
|
+
annotation.setAnnotationOrigin(self.getChildElementOptionalLiteral(element, 'ANNOTATION-ORIGIN')) \
|
|
942
|
+
.setAnnotationText(self.getDocumentationBlock(element, "ANNOTATION-TEXT")) \
|
|
943
|
+
.setLabel(self.getMultilanguageLongName(element, "LABEL"))
|
|
849
944
|
|
|
850
|
-
def
|
|
945
|
+
def getAnnotations(self, element: ET.Element) -> List[Annotation]:
|
|
946
|
+
annotations = []
|
|
851
947
|
for child_element in element.findall("./xmlns:ANNOTATIONS/xmlns:ANNOTATION", self.nsmap):
|
|
852
948
|
annotation = Annotation()
|
|
853
949
|
self.readGeneralAnnotation(child_element, annotation)
|
|
854
|
-
|
|
950
|
+
annotations.append(annotation)
|
|
951
|
+
return annotations
|
|
855
952
|
|
|
856
953
|
def getSwAxisIndividual(self, element: ET.Element) -> SwAxisIndividual:
|
|
857
954
|
props = SwAxisIndividual()
|
|
@@ -888,6 +985,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
888
985
|
if tag_name == "SW-CALPRM-AXIS":
|
|
889
986
|
set.addSwCalprmAxis(self.getSwCalprmAxis(child_element))
|
|
890
987
|
return set
|
|
988
|
+
|
|
989
|
+
def readSwDataDefProsInvalidValue(self, element: ET.Element, props: SwDataDefProps):
|
|
990
|
+
child_element = self.find(element, "INVALID-VALUE/*")
|
|
991
|
+
if child_element is not None:
|
|
992
|
+
props.setInvalidValue(self.getValueSpecification(child_element))
|
|
891
993
|
|
|
892
994
|
def getSwDataDefProps(self, element: ET.Element, key: str) -> SwDataDefProps:
|
|
893
995
|
child_element = element.find("./xmlns:%s" % key, self.nsmap)
|
|
@@ -898,30 +1000,36 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
898
1000
|
sw_data_def_props = SwDataDefProps()
|
|
899
1001
|
self.readElementAttributes(child_element, sw_data_def_props)
|
|
900
1002
|
|
|
901
|
-
self.
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
sw_data_def_props.
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
1003
|
+
for annotation in self.getAnnotations(conditional_tag):
|
|
1004
|
+
sw_data_def_props.addAnnotation(annotation)
|
|
1005
|
+
|
|
1006
|
+
sw_data_def_props.setBaseTypeRef(self.getChildElementOptionalRefType(conditional_tag, "BASE-TYPE-REF")) \
|
|
1007
|
+
.setDataConstrRef(self.getChildElementOptionalRefType(conditional_tag, "DATA-CONSTR-REF")) \
|
|
1008
|
+
.setCompuMethodRef(self.getChildElementOptionalRefType(conditional_tag, "COMPU-METHOD-REF")) \
|
|
1009
|
+
.setSwImplPolicy(self.getChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY")) \
|
|
1010
|
+
.setImplementationDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF")) \
|
|
1011
|
+
.setSwCalibrationAccess(self.getChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS")) \
|
|
1012
|
+
.setSwCalprmAxisSet(self.getSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET")) \
|
|
1013
|
+
.setSwRecordLayoutRef(self.getChildElementOptionalRefType(conditional_tag, "SW-RECORD-LAYOUT-REF")) \
|
|
1014
|
+
.setValueAxisDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "VALUE-AXIS-DATA-TYPE-REF")) \
|
|
1015
|
+
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1016
|
+
self.readSwDataDefProsInvalidValue(conditional_tag, sw_data_def_props)
|
|
912
1017
|
self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
913
1018
|
self.readElementAttributes(conditional_tag, sw_data_def_props.conditional)
|
|
914
1019
|
return sw_data_def_props
|
|
1020
|
+
|
|
1021
|
+
def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
1022
|
+
self.readIdentifiable(element, data_type)
|
|
1023
|
+
data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
915
1024
|
|
|
916
1025
|
def readApplicationPrimitiveDataType(self, element: ET.Element, parent: ARPackage):
|
|
917
1026
|
short_name = self.getShortName(element)
|
|
918
1027
|
data_type = parent.createApplicationPrimitiveDataType(short_name)
|
|
919
1028
|
self.logger.debug("readApplicationPrimitiveDataTypes %s" % short_name)
|
|
920
|
-
self.
|
|
921
|
-
data_type.sw_data_def_props = self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS")
|
|
1029
|
+
self.readAutosarDataType(element, data_type)
|
|
922
1030
|
|
|
923
1031
|
def readApplicationCompositeElementDataPrototype(self, element: ET.Element, prototype: ApplicationCompositeElementDataPrototype):
|
|
924
|
-
prototype.
|
|
1032
|
+
prototype.setTypeTRef(self.getChildElementOptionalRefType(element, "TYPE-TREF"))
|
|
925
1033
|
|
|
926
1034
|
def readApplicationRecordElements(self, element: ET.Element, parent: ApplicationRecordDataType):
|
|
927
1035
|
for child_element in element.findall("./xmlns:ELEMENTS/xmlns:APPLICATION-RECORD-ELEMENT", self.nsmap):
|
|
@@ -936,7 +1044,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
936
1044
|
data_type = parent.createApplicationRecordDataType(short_name)
|
|
937
1045
|
self.logger.debug("readApplicationRecordDataTypes %s" % short_name)
|
|
938
1046
|
self.readIdentifiable(element, data_type)
|
|
939
|
-
data_type.
|
|
1047
|
+
data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
940
1048
|
self.readApplicationRecordElements(element, data_type)
|
|
941
1049
|
|
|
942
1050
|
def readImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
|
|
@@ -944,10 +1052,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
944
1052
|
short_name = self.getShortName(child_element)
|
|
945
1053
|
type_element = parent.createImplementationDataTypeElement(short_name) # type: ImplementationDataTypeElement
|
|
946
1054
|
self.readIdentifiable(child_element, type_element)
|
|
947
|
-
type_element.
|
|
948
|
-
|
|
1055
|
+
type_element.setArraySize(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE")) \
|
|
1056
|
+
.setArraySizeSemantics(self.getChildElementOptionalLiteral(child_element, "ARRAY-SIZE-SEMANTICS"))
|
|
949
1057
|
self.readImplementationDataTypeElements(child_element, type_element)
|
|
950
|
-
type_element.
|
|
1058
|
+
type_element.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
|
|
951
1059
|
|
|
952
1060
|
def readImplementationDataType(self, element: ET.Element, parent: ARPackage):
|
|
953
1061
|
short_name = self.getShortName(element)
|
|
@@ -955,16 +1063,26 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
955
1063
|
self.readAutosarDataType(element, data_type)
|
|
956
1064
|
self.readImplementationDataTypeElements(element, data_type)
|
|
957
1065
|
data_type.setTypeEmitter(self.getChildElementOptionalLiteral(element, "TYPE-EMITTER"))
|
|
958
|
-
if (data_type.
|
|
1066
|
+
if (data_type.getCategory().getValue() == ImplementationDataType.CATEGORY_ARRAY):
|
|
959
1067
|
if (len(data_type.getImplementationDataTypeElements()) < 1):
|
|
960
1068
|
self._raiseError("Array Sub-Element of <%s> do not defined." % data_type.short_name)
|
|
1069
|
+
|
|
961
1070
|
array_sub_element = data_type.getImplementationDataTypeElements()[0]
|
|
962
|
-
if (array_sub_element.category == ImplementationDataType.CATEGORY_TYPE_REFERENCE):
|
|
963
|
-
data_type.setArrayElementType(array_sub_element.
|
|
964
|
-
elif (array_sub_element.category == ImplementationDataType.CATEGORY_TYPE_VALUE): # TODO: fix
|
|
1071
|
+
if (array_sub_element.category.getValue() == ImplementationDataType.CATEGORY_TYPE_REFERENCE):
|
|
1072
|
+
data_type.setArrayElementType(array_sub_element.swDataDefProps.implementationDataTypeRef.value)
|
|
1073
|
+
elif (array_sub_element.category.getValue() == ImplementationDataType.CATEGORY_TYPE_VALUE): # TODO: fix
|
|
965
1074
|
return
|
|
966
1075
|
else:
|
|
967
|
-
self._raiseError("The category <%s> of array sub-element <%s> does not support." % (array_sub_element.category, data_type.short_name))
|
|
1076
|
+
self._raiseError("The category <%s> of array sub-element <%s> does not support." % (array_sub_element.category.value, data_type.short_name))
|
|
1077
|
+
elif (data_type.getCategory().getValue() == ImplementationDataType.CATEGORY_TYPE_STRUCTURE):
|
|
1078
|
+
if (len(data_type.getImplementationDataTypeElements()) < 1):
|
|
1079
|
+
self._raiseError("Structure Sub-Element of <%s> do not defined." % data_type.short_name)
|
|
1080
|
+
self.readImplementationDataTypeSymbolProps(element, data_type)
|
|
1081
|
+
struct_sub_element = data_type.getImplementationDataTypeElements()[0]
|
|
1082
|
+
if (struct_sub_element.getCategory().getValue() == ImplementationDataType.CATEGORY_TYPE_REFERENCE):
|
|
1083
|
+
data_type.setStructElementType(struct_sub_element.getSwDataDefProps().getImplementationDataTypeRef().getValue())
|
|
1084
|
+
else:
|
|
1085
|
+
self._raiseError("The category <%s> of structure sub-element <%s> does not support." % (struct_sub_element.category.value, data_type.short_name))
|
|
968
1086
|
|
|
969
1087
|
def readBaseTypeDirectDefinition(self, element: ET.Element, definition: BaseTypeDirectDefinition):
|
|
970
1088
|
definition.base_type_size = self.getChildElementOptionalNumericalValue(element, "BASE-TYPE-SIZE")
|
|
@@ -983,8 +1101,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
983
1101
|
iref = None
|
|
984
1102
|
if child_element is not None:
|
|
985
1103
|
iref = ApplicationCompositeElementInPortInterfaceInstanceRef()
|
|
986
|
-
iref.
|
|
987
|
-
|
|
1104
|
+
iref.setRootDataPrototypeRef(self.getChildElementOptionalRefType(child_element, "ROOT-DATA-PROTOTYPE-REF"))\
|
|
1105
|
+
.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(child_element, "TARGET-DATA-PROTOTYPE-REF"))
|
|
988
1106
|
return iref
|
|
989
1107
|
|
|
990
1108
|
def getCompositeNetworkRepresentation(self, element: ET.Element) -> CompositeNetworkRepresentation:
|
|
@@ -994,14 +1112,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
994
1112
|
representation.network_representation = self.getSwDataDefProps(element, "NETWORK-REPRESENTATION")
|
|
995
1113
|
return representation
|
|
996
1114
|
|
|
997
|
-
def readReceiverComSpec(self, element, com_spec: ReceiverComSpec):
|
|
1115
|
+
def readReceiverComSpec(self, element: ET.Element, com_spec: ReceiverComSpec):
|
|
998
1116
|
self.readElementAttributes(element, com_spec)
|
|
999
|
-
for child_element in
|
|
1117
|
+
for child_element in self.findall(element, "COMPOSITE-NETWORK-REPRESENTATIONS/COMPOSITE-NETWORK-REPRESENTATION"):
|
|
1000
1118
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
1001
|
-
com_spec.
|
|
1002
|
-
com_spec.
|
|
1003
|
-
com_spec.
|
|
1004
|
-
com_spec.
|
|
1119
|
+
com_spec.dataElementRef = self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF")
|
|
1120
|
+
com_spec.networkRepresentation = self.getSwDataDefProps(element, "NETWORK-REPRESENTATION")
|
|
1121
|
+
com_spec.handleOutOfRange = self.getChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE")
|
|
1122
|
+
com_spec.usesEndToEndProtection = self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION")
|
|
1005
1123
|
|
|
1006
1124
|
def getSwValues(self, element: ET.Element, key: str) -> SwValues:
|
|
1007
1125
|
child_element = element.find("./xmlns:%s" % key, self.nsmap) # type: ET.Element
|
|
@@ -1045,7 +1163,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1045
1163
|
|
|
1046
1164
|
def getInitValue(self, element: ET.Element) -> ValueSpecification:
|
|
1047
1165
|
value_spec = None
|
|
1048
|
-
child_element =
|
|
1166
|
+
child_element = self.find(element, "INIT-VALUE/*")
|
|
1049
1167
|
if child_element is not None:
|
|
1050
1168
|
self.logger.debug("getInitValue")
|
|
1051
1169
|
value_spec = self.getValueSpecification(child_element)
|
|
@@ -1057,11 +1175,18 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1057
1175
|
com_spec.operationRef = self.getChildElementOptionalRefType(element, "OPERATION-REF")
|
|
1058
1176
|
return com_spec
|
|
1059
1177
|
|
|
1178
|
+
def getParameterRequireComSpec(self, element: ET.Element) -> ParameterRequireComSpec:
|
|
1179
|
+
com_spec = ParameterRequireComSpec()
|
|
1180
|
+
self.readElementAttributes(element, com_spec)
|
|
1181
|
+
com_spec.setInitValue(self.getInitValue(element)) \
|
|
1182
|
+
.setParameterRef(self.getChildElementOptionalRefType(element, "PARAMETER-REF"))
|
|
1183
|
+
return com_spec
|
|
1184
|
+
|
|
1060
1185
|
def getQueuedReceiverComSpec(self, element: ET.Element) -> QueuedReceiverComSpec:
|
|
1061
1186
|
com_spec = QueuedReceiverComSpec()
|
|
1062
1187
|
self.readElementAttributes(element, com_spec)
|
|
1063
1188
|
self.readReceiverComSpec(element, com_spec)
|
|
1064
|
-
com_spec.
|
|
1189
|
+
com_spec.queueLength = self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH")
|
|
1065
1190
|
return com_spec
|
|
1066
1191
|
|
|
1067
1192
|
def getModeSwitchReceiverComSpec(self, element: ET.Element) -> ModeSwitchReceiverComSpec:
|
|
@@ -1074,11 +1199,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1074
1199
|
com_spec = NonqueuedReceiverComSpec()
|
|
1075
1200
|
self.readElementAttributes(element, com_spec)
|
|
1076
1201
|
self.readReceiverComSpec(element, com_spec)
|
|
1077
|
-
com_spec.
|
|
1078
|
-
com_spec.
|
|
1079
|
-
com_spec.
|
|
1080
|
-
com_spec.
|
|
1081
|
-
com_spec.
|
|
1202
|
+
com_spec.aliveTimeout = self.getChildElementOptionalFloatValue(element, "ALIVE-TIMEOUT")
|
|
1203
|
+
com_spec.enableUpdated = self.getChildElementOptionalBooleanValue(element, "ENABLE-UPDATE")
|
|
1204
|
+
com_spec.handleNeverReceived = self.getChildElementOptionalBooleanValue(element, "HANDLE-NEVER-RECEIVED")
|
|
1205
|
+
com_spec.handleTimeoutType = self.getChildElementOptionalLiteral(element, "HANDLE-TIMEOUT-TYPE")
|
|
1206
|
+
com_spec.initValue = self.getInitValue(element)
|
|
1082
1207
|
return com_spec
|
|
1083
1208
|
|
|
1084
1209
|
def readRequiredComSpec(self, element: ET.Element, parent: RPortPrototype):
|
|
@@ -1092,6 +1217,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1092
1217
|
parent.addRequiredComSpec(self.getQueuedReceiverComSpec(child_element))
|
|
1093
1218
|
elif tag_name == "MODE-SWITCH-RECEIVER-COM-SPEC":
|
|
1094
1219
|
parent.addRequiredComSpec(self.getModeSwitchReceiverComSpec(child_element))
|
|
1220
|
+
elif tag_name == "PARAMETER-REQUIRE-COM-SPEC":
|
|
1221
|
+
parent.addRequiredComSpec(self.getParameterRequireComSpec(child_element))
|
|
1095
1222
|
else:
|
|
1096
1223
|
self._raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
|
|
1097
1224
|
|
|
@@ -1100,12 +1227,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1100
1227
|
self.logger.debug("readRPortPrototype %s" % short_name)
|
|
1101
1228
|
prototype = parent.createRPortPrototype(short_name)
|
|
1102
1229
|
self.readIdentifiable(element, prototype)
|
|
1103
|
-
prototype.
|
|
1230
|
+
prototype.setRequiredInterfaceTRef(self.getChildElementOptionalRefType(element, "REQUIRED-INTERFACE-TREF"))
|
|
1104
1231
|
|
|
1105
1232
|
self.readRequiredComSpec(element, prototype)
|
|
1106
1233
|
|
|
1107
1234
|
def readAtomicSwComponentTypePorts(self, element: ET.Element, sw_component: AtomicSwComponentType):
|
|
1108
|
-
for child_element in
|
|
1235
|
+
for child_element in self.findall(element, "PORTS/*"):
|
|
1109
1236
|
tag_name = self.getTagName(child_element)
|
|
1110
1237
|
if tag_name == "P-PORT-PROTOTYPE":
|
|
1111
1238
|
self.readPPortPrototype(child_element, sw_component)
|
|
@@ -1127,23 +1254,33 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1127
1254
|
self.readElementAttributes(element, com_spec)
|
|
1128
1255
|
for child_element in element.findall("./xmlns:COMPOSITE-NETWORK-REPRESENTATIONS/xmlns:COMPOSITE-NETWORK-REPRESENTATION", self.nsmap):
|
|
1129
1256
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
1130
|
-
com_spec.
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1257
|
+
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF")) \
|
|
1258
|
+
.setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION")) \
|
|
1259
|
+
.setHandleOutOfRange(self.getChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE")) \
|
|
1260
|
+
.setTransmissionAcknowledge(self.readTransmissionAcknowledgementRequest(element)) \
|
|
1261
|
+
.setUsesEndToEndProtection(self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION"))
|
|
1135
1262
|
|
|
1136
1263
|
def getNonqueuedSenderComSpec(self, element) -> NonqueuedSenderComSpec:
|
|
1137
1264
|
com_spec = NonqueuedSenderComSpec()
|
|
1138
1265
|
self.readSenderComSpec(element, com_spec)
|
|
1139
|
-
com_spec.
|
|
1266
|
+
com_spec.setInitValue(self.getInitValue(element))
|
|
1140
1267
|
return com_spec
|
|
1141
1268
|
|
|
1142
1269
|
def getServerComSpec(self, element) -> ServerComSpec:
|
|
1143
1270
|
com_spec = ServerComSpec()
|
|
1271
|
+
com_spec.setOperationRef(self.getChildElementOptionalRefType(element, "OPERATION-REF")) \
|
|
1272
|
+
.setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
|
|
1273
|
+
return com_spec
|
|
1274
|
+
|
|
1275
|
+
def getQueuedSenderComSpec(self, element) -> QueuedSenderComSpec:
|
|
1276
|
+
com_spec = QueuedSenderComSpec()
|
|
1144
1277
|
self.readSenderComSpec(element, com_spec)
|
|
1145
|
-
com_spec
|
|
1146
|
-
|
|
1278
|
+
return com_spec
|
|
1279
|
+
|
|
1280
|
+
def getModeSwitchSenderComSpec(self, element) -> ModeSwitchSenderComSpec:
|
|
1281
|
+
com_spec = ModeSwitchSenderComSpec()
|
|
1282
|
+
com_spec.setModeGroupRef(self.getChildElementOptionalRefType(element, "MODE-GROUP-REF")) \
|
|
1283
|
+
.setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
|
|
1147
1284
|
return com_spec
|
|
1148
1285
|
|
|
1149
1286
|
def readProvidedComSpec(self, element: ET.Element, parent: PPortPrototype):
|
|
@@ -1153,6 +1290,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1153
1290
|
parent.addProvidedComSpec(self.getNonqueuedSenderComSpec(child_element))
|
|
1154
1291
|
elif tag_name == "SERVER-COM-SPEC":
|
|
1155
1292
|
parent.addProvidedComSpec(self.getServerComSpec(child_element))
|
|
1293
|
+
elif tag_name == "QUEUED-SENDER-COM-SPEC":
|
|
1294
|
+
parent.addProvidedComSpec(self.getQueuedSenderComSpec(child_element))
|
|
1295
|
+
elif tag_name == "MODE-SWITCH-SENDER-COM-SPEC":
|
|
1296
|
+
parent.addProvidedComSpec(self.getModeSwitchSenderComSpec(child_element))
|
|
1156
1297
|
else:
|
|
1157
1298
|
self._raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
|
|
1158
1299
|
|
|
@@ -1161,19 +1302,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1161
1302
|
self.logger.debug("readPPortPrototype %s" % short_name)
|
|
1162
1303
|
prototype = parent.createPPortPrototype(short_name)
|
|
1163
1304
|
self.readIdentifiable(element, prototype)
|
|
1164
|
-
prototype.
|
|
1305
|
+
prototype.setProvidedInterfaceTRef(self.getChildElementOptionalRefType(element, "PROVIDED-INTERFACE-TREF"))
|
|
1165
1306
|
|
|
1166
1307
|
self.readProvidedComSpec(element, prototype)
|
|
1167
1308
|
|
|
1168
1309
|
def readPortGroupInnerGroupIRefs(self, element: ET.Element, parent: PortGroup):
|
|
1169
|
-
for child_element in
|
|
1310
|
+
for child_element in self.findall(element, "INNER-GROUP-IREFS/INNER-GROUP-IREF"):
|
|
1170
1311
|
inner_group_iref = InnerPortGroupInCompositionInstanceRef()
|
|
1171
|
-
inner_group_iref.contextRef = self.getChildElementOptionalRefType(child_element, "CONTEXT-REF")
|
|
1172
|
-
inner_group_iref.
|
|
1312
|
+
#inner_group_iref.contextRef = self.getChildElementOptionalRefType(child_element, "CONTEXT-REF")
|
|
1313
|
+
inner_group_iref.setTargetRef(self.getChildElementOptionalRefType(child_element, "TARGET-REF"))
|
|
1173
1314
|
parent.addInnerGroupIRef(inner_group_iref)
|
|
1174
1315
|
|
|
1175
1316
|
def readPortGroupOuterPortRefs(self, element: ET.Element, parent: PortGroup):
|
|
1176
|
-
for child_element in
|
|
1317
|
+
for child_element in self.findall(element, "OUTER-PORTS/PORT-PROTOTYPE-REF-CONDITIONAL"):
|
|
1177
1318
|
parent.addOuterPortRef(self.getChildElementOptionalRefType(child_element, "PORT-PROTOTYPE-REF"))
|
|
1178
1319
|
|
|
1179
1320
|
def readPortGroup(self, element: ET.Element, parent: SwComponentType):
|
|
@@ -1230,40 +1371,40 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1230
1371
|
self.readAtomicSwComponentType(element, sw_component)
|
|
1231
1372
|
|
|
1232
1373
|
def readPPortInCompositionInstanceRef(self, element: ET.Element, p_port_in_composition_instance_ref: PPortInCompositionInstanceRef):
|
|
1233
|
-
p_port_in_composition_instance_ref.
|
|
1234
|
-
|
|
1374
|
+
p_port_in_composition_instance_ref.setContextComponentRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPONENT-REF")) \
|
|
1375
|
+
.setTargetPPortRef(self.getChildElementOptionalRefType(element, "TARGET-P-PORT-REF"))
|
|
1235
1376
|
|
|
1236
1377
|
self.logger.debug("PPortInCompositionInstanceRef")
|
|
1237
1378
|
self.logger.debug(" CONTEXT-COMPONENT-REF DEST: %s, %s"
|
|
1238
|
-
% (p_port_in_composition_instance_ref.
|
|
1379
|
+
% (p_port_in_composition_instance_ref.getContextComponentRef().getDest(), p_port_in_composition_instance_ref.getContextComponentRef().getValue()))
|
|
1239
1380
|
self.logger.debug(" TARGET-P-PORT-REF DEST: %s, %s"
|
|
1240
|
-
% (p_port_in_composition_instance_ref.
|
|
1381
|
+
% (p_port_in_composition_instance_ref.getTargetPPortRef().getDest(), p_port_in_composition_instance_ref.getTargetPPortRef().getValue()))
|
|
1241
1382
|
|
|
1242
1383
|
def readRPortInCompositionInstanceRef(self, element, r_port_in_composition_instance_ref: RPortInCompositionInstanceRef):
|
|
1243
|
-
r_port_in_composition_instance_ref.
|
|
1244
|
-
|
|
1384
|
+
r_port_in_composition_instance_ref.setContextComponentRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPONENT-REF")) \
|
|
1385
|
+
.setTargetRPortRef(self.getChildElementOptionalRefType(element, "TARGET-R-PORT-REF"))
|
|
1245
1386
|
|
|
1246
1387
|
self.logger.debug("RPortInCompositionInstanceRef")
|
|
1247
1388
|
self.logger.debug(" CONTEXT-COMPONENT-REF DEST: %s, %s"
|
|
1248
|
-
% (r_port_in_composition_instance_ref.
|
|
1389
|
+
% (r_port_in_composition_instance_ref.getContextComponentRef().getDest(), r_port_in_composition_instance_ref.getContextComponentRef().getValue()))
|
|
1249
1390
|
self.logger.debug(" TARGET-P-PORT-REF DEST: %s, %s"
|
|
1250
|
-
% (r_port_in_composition_instance_ref.
|
|
1391
|
+
% (r_port_in_composition_instance_ref.getTargetRPortRef().getDest(), r_port_in_composition_instance_ref.getTargetRPortRef().getValue()))
|
|
1251
1392
|
|
|
1252
1393
|
def readAssemblySwConnectorProviderIRef(self, element: ET.Element, parent: AssemblySwConnector):
|
|
1253
|
-
child_element =
|
|
1394
|
+
child_element = self.find(element, "PROVIDER-IREF")
|
|
1254
1395
|
if (child_element is not None):
|
|
1255
1396
|
provide_iref = PPortInCompositionInstanceRef()
|
|
1256
1397
|
self.readElementAttributes(child_element, provide_iref)
|
|
1257
1398
|
self.readPPortInCompositionInstanceRef(child_element, provide_iref)
|
|
1258
|
-
parent.
|
|
1399
|
+
parent.setProviderIRef(provide_iref)
|
|
1259
1400
|
|
|
1260
1401
|
def readAssemblySwConnectorRequesterIRef(self, element: ET.Element, parent: AssemblySwConnector):
|
|
1261
|
-
child_element =
|
|
1402
|
+
child_element = self.find(element, "REQUESTER-IREF")
|
|
1262
1403
|
if (child_element is not None):
|
|
1263
1404
|
requester_iref = RPortInCompositionInstanceRef()
|
|
1264
1405
|
self.readElementAttributes(child_element, requester_iref)
|
|
1265
1406
|
self.readRPortInCompositionInstanceRef(child_element, requester_iref)
|
|
1266
|
-
parent.requester_iref
|
|
1407
|
+
parent.setRequesterIRef(requester_iref)
|
|
1267
1408
|
|
|
1268
1409
|
def readAssemblySwConnectors(self, element: ET.Element, parent: CompositionSwComponentType):
|
|
1269
1410
|
for child_element in element.findall("./xmlns:CONNECTORS/xmlns:ASSEMBLY-SW-CONNECTOR", self.nsmap):
|
|
@@ -1276,26 +1417,26 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1276
1417
|
self.readAssemblySwConnectorRequesterIRef(child_element, connector)
|
|
1277
1418
|
|
|
1278
1419
|
def readDelegationSwConnectorInnerPortIRef(self, element, parent: DelegationSwConnector):
|
|
1279
|
-
inner_port_iref_element =
|
|
1420
|
+
inner_port_iref_element = self.find(element, "INNER-PORT-IREF")
|
|
1280
1421
|
if (inner_port_iref_element is not None):
|
|
1281
|
-
child_element =
|
|
1422
|
+
child_element = self.find(inner_port_iref_element, "R-PORT-IN-COMPOSITION-INSTANCE-REF")
|
|
1282
1423
|
if (child_element is not None):
|
|
1283
1424
|
r_port_in_composition_instance_ref = RPortInCompositionInstanceRef()
|
|
1284
1425
|
self.readRPortInCompositionInstanceRef(child_element, r_port_in_composition_instance_ref)
|
|
1285
|
-
parent.
|
|
1426
|
+
parent.setInnerPortIRref(r_port_in_composition_instance_ref)
|
|
1286
1427
|
return
|
|
1287
1428
|
|
|
1288
|
-
child_element =
|
|
1429
|
+
child_element = self.find(inner_port_iref_element, "P-PORT-IN-COMPOSITION-INSTANCE-REF")
|
|
1289
1430
|
if (child_element is not None):
|
|
1290
1431
|
p_port_in_composition_instance_ref = PPortInCompositionInstanceRef()
|
|
1291
1432
|
self.readPPortInCompositionInstanceRef(child_element, p_port_in_composition_instance_ref)
|
|
1292
|
-
parent.
|
|
1433
|
+
parent.setInnerPortIRref(p_port_in_composition_instance_ref)
|
|
1293
1434
|
return
|
|
1294
1435
|
|
|
1295
1436
|
self._raiseError("Unsupported child element of INNER-PORT-IREF")
|
|
1296
1437
|
|
|
1297
1438
|
def readDelegationSwConnectors(self, element, parent: CompositionSwComponentType):
|
|
1298
|
-
for child_element in
|
|
1439
|
+
for child_element in self.findall(element, "CONNECTORS/DELEGATION-SW-CONNECTOR"):
|
|
1299
1440
|
short_name = self.getShortName(child_element)
|
|
1300
1441
|
self.logger.debug("readDelegationSwConnectors %s" % short_name)
|
|
1301
1442
|
|
|
@@ -1303,12 +1444,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1303
1444
|
self.readIdentifiable(child_element, connector)
|
|
1304
1445
|
self.readDelegationSwConnectorInnerPortIRef(child_element, connector)
|
|
1305
1446
|
|
|
1306
|
-
if connector.
|
|
1447
|
+
if connector.getInnerPortIRref() == None and connector.getOuterPortRef() == None:
|
|
1307
1448
|
self._raiseError("Invalid PortPrototype of DELEGATION-SW-CONNECTOR")
|
|
1308
1449
|
|
|
1309
|
-
connector.
|
|
1450
|
+
connector.setOuterPortRef(self.getChildElementOptionalRefType(child_element, "OUTER-PORT-REF"))
|
|
1310
1451
|
self.logger.debug("OUTER-PORT-REF DEST: %s, %s"
|
|
1311
|
-
% (connector.
|
|
1452
|
+
% (connector.getOuterPortRef().getDest(), connector.getOuterPortRef().getValue()))
|
|
1312
1453
|
|
|
1313
1454
|
def readSwComponentPrototypes(self, element: ET.Element, parent: CompositionSwComponentType):
|
|
1314
1455
|
for child_element in element.findall("./xmlns:COMPONENTS/xmlns:SW-COMPONENT-PROTOTYPE", self.nsmap):
|
|
@@ -1316,7 +1457,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1316
1457
|
self.logger.debug("readSwComponentPrototypes %s" % short_name)
|
|
1317
1458
|
prototype = parent.createSwComponentPrototype(short_name)
|
|
1318
1459
|
self.readIdentifiable(child_element, prototype)
|
|
1319
|
-
prototype.
|
|
1460
|
+
prototype.typeTRef = self.getChildElementOptionalRefType(child_element, "TYPE-TREF")
|
|
1320
1461
|
|
|
1321
1462
|
def readCompositionSwComponentTypeDataTypeMappingSet(self, element: ET.Element, parent: CompositionSwComponentType):
|
|
1322
1463
|
child_element = element.find("./xmlns:DATA-TYPE-MAPPING-REFS", self.nsmap)
|
|
@@ -1364,30 +1505,47 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1364
1505
|
self.readDataTypeMaps(element, mapping_set)
|
|
1365
1506
|
self.readModeRequestTypeMaps(element, mapping_set)
|
|
1366
1507
|
|
|
1367
|
-
def
|
|
1508
|
+
def readSenderReceiverInterfaceDataElements(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1368
1509
|
for child_element in element.findall("./xmlns:DATA-ELEMENTS/xmlns:VARIABLE-DATA-PROTOTYPE", self.nsmap):
|
|
1369
1510
|
short_name = self.getShortName(child_element)
|
|
1370
|
-
prototype =
|
|
1511
|
+
prototype = sr_interface.createDataElement(short_name)
|
|
1371
1512
|
self.readIdentifiable(child_element, prototype)
|
|
1372
|
-
prototype.
|
|
1513
|
+
prototype.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
|
|
1373
1514
|
self.readAutosarDataPrototype(child_element, prototype)
|
|
1374
|
-
prototype.
|
|
1515
|
+
prototype.initValue = self.getInitValue(child_element)
|
|
1516
|
+
|
|
1517
|
+
def readSenderReceiverInterfaceInvalidationPolicies(self, element: ET.Element, sr_interface: SenderReceiverInterface):
|
|
1518
|
+
for child_element in self.findall(element, "INVALIDATION-POLICYS/INVALIDATION-POLICY"):
|
|
1519
|
+
policy = InvalidationPolicy()
|
|
1520
|
+
policy.setDataElementRef(self.getChildElementOptionalRefType(child_element, "DATA-ELEMENT-REF")) \
|
|
1521
|
+
.setHandleInvalid(self.getChildElementOptionalLiteral(child_element, "HANDLE-INVALID"))
|
|
1522
|
+
sr_interface.addInvalidationPolicy(policy)
|
|
1523
|
+
|
|
1524
|
+
def readInvalidationPolicys(self, element: ET.Element, parent: SenderReceiverInterface):
|
|
1525
|
+
for child_element in element.findall("./xmlns:INVALIDATION-POLICYS/xmlns:INVALIDATION-POLICY", self.nsmap):
|
|
1526
|
+
# short_name = self.getShortName(child_element)
|
|
1527
|
+
policy = parent.createInvalidationPolicy()
|
|
1528
|
+
self.readIdentifiable(child_element, policy)
|
|
1529
|
+
policy.data_element_ref = self.getChildElementOptionalRefType(child_element, "DATA-ELEMENT-REF")
|
|
1530
|
+
policy.handle_invalid = self.getChildElementOptionalLiteral(child_element, "HANDLE-INVALID")
|
|
1375
1531
|
|
|
1376
1532
|
def readSenderReceiverInterfaces(self, element, parent: ARPackage):
|
|
1377
1533
|
short_name = self.getShortName(element)
|
|
1378
1534
|
sr_interface = parent.createSenderReceiverInterface(short_name)
|
|
1379
1535
|
self.readIdentifiable(element, sr_interface)
|
|
1380
|
-
sr_interface.
|
|
1381
|
-
self.
|
|
1536
|
+
sr_interface.isService = self.getChildElementOptionalBooleanValue(element, "IS-SERVICE")
|
|
1537
|
+
self.readSenderReceiverInterfaceDataElements(element, sr_interface)
|
|
1538
|
+
self.readSenderReceiverInterfaceInvalidationPolicies(element, sr_interface)
|
|
1382
1539
|
|
|
1383
1540
|
def readArgumentDataPrototypes(self, element: ET.Element, parent: ClientServerOperation):
|
|
1384
1541
|
for child_element in element.findall("./xmlns:ARGUMENTS/xmlns:ARGUMENT-DATA-PROTOTYPE", self.nsmap):
|
|
1385
1542
|
short_name = self.getShortName(child_element)
|
|
1386
1543
|
prototype = ArgumentDataPrototype(property, short_name)
|
|
1387
1544
|
self.readIdentifiable(child_element, prototype)
|
|
1388
|
-
prototype.
|
|
1389
|
-
prototype.
|
|
1545
|
+
prototype.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
|
|
1546
|
+
prototype.typeTRef = self.getChildElementOptionalRefType(child_element, "TYPE-TREF")
|
|
1390
1547
|
prototype.direction = self.getChildElementOptionalLiteral(child_element, "DIRECTION")
|
|
1548
|
+
prototype.server_argument_impl_policy = self.getChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY")
|
|
1391
1549
|
parent.addArgumentDataPrototype(prototype)
|
|
1392
1550
|
|
|
1393
1551
|
def readPossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
|
|
@@ -1408,10 +1566,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1408
1566
|
for child_element in element.findall("./xmlns:POSSIBLE-ERRORS/xmlns:APPLICATION-ERROR", self.nsmap):
|
|
1409
1567
|
short_name = self.getShortName(child_element)
|
|
1410
1568
|
error = parent.createApplicationError(short_name)
|
|
1569
|
+
self.readIdentifiable(child_element, error) # some errors has its uuid
|
|
1411
1570
|
error.error_code = self.getChildElementOptionalNumericalValue(child_element, "ERROR-CODE")
|
|
1412
1571
|
|
|
1413
1572
|
def readPortInterface(self, element: ET.Element, port_interface: PortInterface):
|
|
1414
|
-
port_interface.
|
|
1573
|
+
port_interface.isService = self.getChildElementOptionalBooleanValue(element, "IS-SERVICE")
|
|
1415
1574
|
port_interface.serviceKind = self.getChildElementOptionalLiteral(element, "SERVICE-KIND")
|
|
1416
1575
|
|
|
1417
1576
|
def readClientServerInterface(self, element: ET.Element, parent: ARPackage):
|
|
@@ -1458,6 +1617,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1458
1617
|
for child_element in element.findall('./xmlns:COMPU-SCALES/xmlns:COMPU-SCALE', self.nsmap):
|
|
1459
1618
|
compu_scale = CompuScale()
|
|
1460
1619
|
self.readElementAttributes(child_element, compu_scale)
|
|
1620
|
+
compu_scale.short_label = self.getChildElementOptionalLiteral(child_element, "SHORT-LABEL")
|
|
1461
1621
|
compu_scale.symbol = self.getChildElementOptionalLiteral(child_element, "SYMBOL")
|
|
1462
1622
|
compu_scale.lowerLimit = self.getChildLimitElement(child_element, "LOWER-LIMIT")
|
|
1463
1623
|
compu_scale.upperLimit = self.getChildLimitElement(child_element, "UPPER-LIMIT")
|
|
@@ -1528,14 +1688,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1528
1688
|
self.readValueSpecification(element, value_spec)
|
|
1529
1689
|
child_elements = element.findall("./xmlns:ELEMENTS/*", self.nsmap)
|
|
1530
1690
|
for child_element in child_elements:
|
|
1531
|
-
value_spec.
|
|
1691
|
+
value_spec.addElement(self.getValueSpecification(child_element))
|
|
1532
1692
|
return value_spec
|
|
1533
1693
|
|
|
1534
1694
|
def getConstantReference(self, element: ET.Element) -> ConstantReference:
|
|
1535
1695
|
self.logger.debug("getConstantReference")
|
|
1536
1696
|
value_spec = ConstantReference()
|
|
1537
1697
|
self.readValueSpecification(element, value_spec)
|
|
1538
|
-
value_spec.
|
|
1698
|
+
value_spec.setConstantRef(self.getChildElementOptionalRefType(element, "CONSTANT-REF"))
|
|
1539
1699
|
return value_spec
|
|
1540
1700
|
|
|
1541
1701
|
def getValueSpecification(self, element: ET.Element) -> ValueSpecification:
|
|
@@ -1558,7 +1718,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1558
1718
|
|
|
1559
1719
|
def readRecordValueSpecificationFields(self, element: ET.Element, spec: RecordValueSpecification):
|
|
1560
1720
|
for child_element in element.findall("./xmlns:FIELDS/*", self.nsmap):
|
|
1561
|
-
spec.
|
|
1721
|
+
spec.addField(self.getValueSpecification(child_element))
|
|
1562
1722
|
|
|
1563
1723
|
def getRecordValueSpecification(self, element: ET.Element) -> RecordValueSpecification:
|
|
1564
1724
|
value_spec = RecordValueSpecification()
|
|
@@ -1571,8 +1731,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1571
1731
|
self.logger.debug("readConstantSpecification %s" % short_name)
|
|
1572
1732
|
spec = parent.createConstantSpecification(short_name)
|
|
1573
1733
|
self.readIdentifiable(element, spec)
|
|
1574
|
-
for value_spec_tag in
|
|
1575
|
-
spec.
|
|
1734
|
+
for value_spec_tag in self.findall(element, "VALUE-SPEC/*"):
|
|
1735
|
+
spec.setValueSpec(self.getValueSpecification(value_spec_tag))
|
|
1576
1736
|
|
|
1577
1737
|
def readInternalConstrs(self, element: ET.Element, parent: DataConstrRule):
|
|
1578
1738
|
child_element = element.find("./xmlns:INTERNAL-CONSTRS", self.nsmap)
|
|
@@ -1615,7 +1775,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1615
1775
|
self.logger.debug("readUnit %s" % short_name)
|
|
1616
1776
|
unit = parent.createUnit(short_name)
|
|
1617
1777
|
self.readIdentifiable(element, unit)
|
|
1618
|
-
unit.
|
|
1778
|
+
unit.setDisplayName(self.getChildElementOptionalLiteral(element, "DISPLAY-NAME")) \
|
|
1779
|
+
.setFactorSiToUnit(self.getChildElementOptionalFloatValue(element, "FACTOR-SI-TO-UNIT")) \
|
|
1780
|
+
.setOffsetSiToUnit(self.getChildElementOptionalFloatValue(element, "OFFSET-SI-TO-UNIT")) \
|
|
1781
|
+
.setPhysicalDimensionRef(self.getChildElementOptionalRefType(element, "PHYSICAL-DIMENSION-REF"))
|
|
1782
|
+
|
|
1619
1783
|
|
|
1620
1784
|
def readEndToEndDescriptionDataId(self, element: ET.Element, parent: EndToEndDescription):
|
|
1621
1785
|
child_element = element.find("./xmlns:DATA-IDS", self.nsmap)
|
|
@@ -1637,11 +1801,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1637
1801
|
return desc
|
|
1638
1802
|
|
|
1639
1803
|
def getVariableDataPrototypeInSystemInstanceRef(self, element: ET.Element) -> VariableDataPrototypeInSystemInstanceRef:
|
|
1640
|
-
iref =
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1804
|
+
iref = None
|
|
1805
|
+
if element is not None:
|
|
1806
|
+
iref = VariableDataPrototypeInSystemInstanceRef()
|
|
1807
|
+
#iref.addContextComponentRef() = self.getChildElementOptionalRefType(element, "CONTEXT-COMPONENT-REF")
|
|
1808
|
+
iref.setContextCompositionRef(self.getChildElementOptionalRefType(element, "CONTEXT-COMPOSITION-REF")) \
|
|
1809
|
+
.setContextPortRef(self.getChildElementOptionalRefType(element, "CONTEXT-PORT-REF")) \
|
|
1810
|
+
.setTargetDataPrototypeRef(self.getChildElementOptionalRefType(element, "TARGET-DATA-PROTOTYPE-REF"))
|
|
1645
1811
|
return iref
|
|
1646
1812
|
|
|
1647
1813
|
def getEndToEndProtectionVariablePrototype(self, element: ET.Element) -> EndToEndProtectionVariablePrototype:
|
|
@@ -1683,7 +1849,21 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1683
1849
|
|
|
1684
1850
|
def readAutosarDataType(self, element: ET.Element, data_type: AutosarDataType):
|
|
1685
1851
|
self.readIdentifiable(element, data_type)
|
|
1686
|
-
data_type.
|
|
1852
|
+
data_type.swDataDefProps = self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS")
|
|
1853
|
+
|
|
1854
|
+
def readImplementationProps(self, element: ET.Element, props: ImplementationProps):
|
|
1855
|
+
props.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
1856
|
+
|
|
1857
|
+
def readSymbolProps(self, element: ET.Element, props: SymbolProps):
|
|
1858
|
+
self.readImplementationProps(element, props)
|
|
1859
|
+
|
|
1860
|
+
def readImplementationDataTypeSymbolProps(self, element: ET.Element, data_type: ImplementationDataType):
|
|
1861
|
+
child_element = element.find("./xmlns:SYMBOL-PROPS", self.nsmap)
|
|
1862
|
+
if child_element is not None:
|
|
1863
|
+
short_name = self.getShortName(child_element)
|
|
1864
|
+
self.logger.debug("readSymbolProps %s" % short_name)
|
|
1865
|
+
props = data_type.createSymbolProps(short_name)
|
|
1866
|
+
self.readSymbolProps(child_element, props)
|
|
1687
1867
|
|
|
1688
1868
|
def readApplicationDataType(self, element: ET.Element, data_type: ApplicationDataType):
|
|
1689
1869
|
self.readAutosarDataType(element, data_type)
|
|
@@ -1835,11 +2015,128 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1835
2015
|
self.readIdentifiable(element, timing)
|
|
1836
2016
|
self.readTimingExtension(element, timing)
|
|
1837
2017
|
|
|
2018
|
+
def readFrameTriggering(self, element: ET.Element, triggering: FrameTriggering):
|
|
2019
|
+
for ref in self.getChildElementRefTypeList(element, 'FRAME-PORT-REFS/FRAME-PORT-REF'):
|
|
2020
|
+
triggering.addFramePortRef(ref)
|
|
2021
|
+
triggering.setFrameRef(self.getChildElementOptionalRefType(element, "FRAME-REF"))
|
|
2022
|
+
for child_element in self.findall(element, 'PDU-TRIGGERINGS/PDU-TRIGGERING-REF-CONDITIONAL'):
|
|
2023
|
+
triggering.addPduTriggeringRef(self.getChildElementOptionalRefType(child_element, "PDU-TRIGGERING-REF"))
|
|
2024
|
+
|
|
2025
|
+
def readCanFrameTriggering(self, element: ET.Element, triggering: CanFrameTriggering):
|
|
2026
|
+
self.logger.debug("Read CanFrameTriggering %s" % triggering.getShortName())
|
|
2027
|
+
self.readIdentifiable(element, triggering)
|
|
2028
|
+
self.readFrameTriggering(element, triggering)
|
|
2029
|
+
triggering.setCanAddressingMode(self.getChildElementOptionalLiteral(element, "CAN-ADDRESSING-MODE")) \
|
|
2030
|
+
.setCanFdFrameSupport(self.getChildElementOptionalBooleanValue(element, "CAN-FD-FRAME-SUPPORT")) \
|
|
2031
|
+
.setCanFrameRxBehavior(self.getChildElementOptionalLiteral(element, "CAN-FRAME-RX-BEHAVIOR")) \
|
|
2032
|
+
.setCanFrameTxBehavior(self.getChildElementOptionalLiteral(element, "CAN-FRAME-TX-BEHAVIOR")) \
|
|
2033
|
+
.setIdentifier(self.getChildElementOptionalNumericalValue(element, "IDENTIFIER")) \
|
|
2034
|
+
.setRxIdentifierRange(self.getChildElementRxIdentifierRange(element, "RX-IDENTIFIER-RANGE"))
|
|
2035
|
+
|
|
2036
|
+
|
|
2037
|
+
def readLinFrameTriggering(self, element: ET.Element, triggering: LinFrameTriggering):
|
|
2038
|
+
self.logger.debug("Read LinFrameTriggering %s" % triggering.getShortName())
|
|
2039
|
+
self.readIdentifiable(element, triggering)
|
|
2040
|
+
self.readFrameTriggering(element, triggering)
|
|
2041
|
+
triggering.setIdentifier(self.getChildElementOptionalNumericalValue(element, "IDENTIFIER")) \
|
|
2042
|
+
.setLinChecksum(self.getChildElementOptionalLiteral(element, "LIN-CHECKSUM"))
|
|
2043
|
+
|
|
2044
|
+
def readISignalTriggering(self, element: ET.Element, triggering: ISignalTriggering):
|
|
2045
|
+
self.logger.debug("Read ISignalTriggering %s" % triggering.getShortName())
|
|
2046
|
+
self.readIdentifiable(element, triggering)
|
|
2047
|
+
triggering.setISignalGroupRef(self.getChildElementOptionalRefType(element, "I-SIGNAL-GROUP-REF"))
|
|
2048
|
+
for ref in self.getChildElementRefTypeList(element, 'I-SIGNAL-PORT-REFS/I-SIGNAL-PORT-REF'):
|
|
2049
|
+
triggering.addISignalPortRef(ref)
|
|
2050
|
+
triggering.setISignalRef(self.getChildElementOptionalRefType(element, "I-SIGNAL-REF"))
|
|
2051
|
+
|
|
2052
|
+
def readPduTriggering(self, element: ET.Element, triggering: PduTriggering):
|
|
2053
|
+
self.logger.debug("Read PduTriggering %s" % triggering.getShortName())
|
|
2054
|
+
self.readIdentifiable(element, triggering)
|
|
2055
|
+
for ref in self.getChildElementRefTypeList(element, 'I-PDU-PORT-REFS/I-PDU-PORT-REF'):
|
|
2056
|
+
triggering.addIPduPortRef(ref)
|
|
2057
|
+
triggering.setIPduRef(self.getChildElementOptionalRefType(element, "I-PDU-REF"))
|
|
2058
|
+
for child_element in self.findall(element, 'I-SIGNAL-TRIGGERINGS/I-SIGNAL-TRIGGERING-REF-CONDITIONAL'):
|
|
2059
|
+
triggering.addISignalTriggeringRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-TRIGGERING-REF"))
|
|
2060
|
+
|
|
2061
|
+
def readPhysicalChannel(self, element: ET.Element, channel: PhysicalChannel):
|
|
2062
|
+
for child_element in self.findall(element, 'COMM-CONNECTORS/COMMUNICATION-CONNECTOR-REF-CONDITIONAL'):
|
|
2063
|
+
channel.addCommConnectorRef(self.getChildElementOptionalRefType(child_element, "COMMUNICATION-CONNECTOR-REF"))
|
|
2064
|
+
|
|
2065
|
+
for child_element in self.findall(element, "FRAME-TRIGGERINGS/*"):
|
|
2066
|
+
tag_name = self.getTagName(child_element)
|
|
2067
|
+
if tag_name == "CAN-FRAME-TRIGGERING":
|
|
2068
|
+
triggering = channel.createCanFrameTriggering(self.getShortName(child_element))
|
|
2069
|
+
self.readCanFrameTriggering(child_element, triggering)
|
|
2070
|
+
elif tag_name == "LIN-FRAME-TRIGGERING":
|
|
2071
|
+
triggering = channel.createLinFrameTriggering(self.getShortName(child_element))
|
|
2072
|
+
self.readLinFrameTriggering(child_element, triggering)
|
|
2073
|
+
else:
|
|
2074
|
+
raise NotImplementedError("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2075
|
+
|
|
2076
|
+
for child_element in self.findall(element, "I-SIGNAL-TRIGGERINGS/*"):
|
|
2077
|
+
tag_name = self.getTagName(child_element)
|
|
2078
|
+
if tag_name == "I-SIGNAL-TRIGGERING":
|
|
2079
|
+
triggering = channel.createISignalTriggering(self.getShortName(child_element))
|
|
2080
|
+
self.readISignalTriggering(child_element, triggering)
|
|
2081
|
+
else:
|
|
2082
|
+
raise NotImplementedError("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2083
|
+
|
|
2084
|
+
for child_element in self.findall(element, "PDU-TRIGGERINGS/*"):
|
|
2085
|
+
tag_name = self.getTagName(child_element)
|
|
2086
|
+
if tag_name == "PDU-TRIGGERING":
|
|
2087
|
+
triggering = channel.createPduTriggering(self.getShortName(child_element))
|
|
2088
|
+
self.readPduTriggering(child_element, triggering)
|
|
2089
|
+
else:
|
|
2090
|
+
raise NotImplementedError("Unsupported Frame Triggering <%s>" % tag_name)
|
|
2091
|
+
|
|
2092
|
+
def readCanPhysicalChannel(self, element: ET.Element, channel: CanPhysicalChannel):
|
|
2093
|
+
self.readIdentifiable(element, channel)
|
|
2094
|
+
self.readPhysicalChannel(element, channel)
|
|
2095
|
+
|
|
2096
|
+
def readLinPhysicalChannel(self, element: ET.Element, channel: LinPhysicalChannel):
|
|
2097
|
+
self.readIdentifiable(element, channel)
|
|
2098
|
+
self.readPhysicalChannel(element, channel)
|
|
2099
|
+
|
|
2100
|
+
def readCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2101
|
+
for child_element in self.findall(element, "PHYSICAL-CHANNELS/*"):
|
|
2102
|
+
tag_name = self.getTagName(child_element)
|
|
2103
|
+
if tag_name == "CAN-PHYSICAL-CHANNEL":
|
|
2104
|
+
channel = cluster.createCanPhysicalChannel(self.getShortName(child_element))
|
|
2105
|
+
self.readCanPhysicalChannel(child_element, channel)
|
|
2106
|
+
elif tag_name == "LIN-PHYSICAL-CHANNEL":
|
|
2107
|
+
channel = cluster.createLinPhysicalChannel(self.getShortName(child_element))
|
|
2108
|
+
self.readLinPhysicalChannel(child_element, channel)
|
|
2109
|
+
else:
|
|
2110
|
+
raise NotImplementedError("Unsupported Physical Channel <%s>" % tag_name)
|
|
2111
|
+
|
|
2112
|
+
|
|
2113
|
+
def readCommunicationCluster(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2114
|
+
cluster.setBaudrate(self.getChildElementOptionalNumericalValue(element, "BAUDRATE"))
|
|
2115
|
+
self.readCommunicationClusterPhysicalChannels(element, cluster)
|
|
2116
|
+
cluster.setProtocolName(self.getChildElementOptionalLiteral(element, "PROTOCOL-NAME")) \
|
|
2117
|
+
.setProtocolVersion(self.getChildElementOptionalLiteral(element, "PROTOCOL-VERSION"))
|
|
2118
|
+
|
|
2119
|
+
def readAbstractCanCluster(self, element: ET.Element, cluster: AbstractCanCluster):
|
|
2120
|
+
cluster.setCanFdBaudrate(self.getChildElementOptionalNumericalValue(element, "CAN-FD-BAUDRATE"))
|
|
2121
|
+
|
|
1838
2122
|
def readLinCluster(self, element: ET.Element, parent: ARPackage):
|
|
1839
2123
|
short_name = self.getShortName(element)
|
|
1840
2124
|
self.logger.debug("readLinCluster %s" % short_name)
|
|
1841
2125
|
cluster = parent.createLinCluster(short_name)
|
|
1842
2126
|
self.readIdentifiable(element, cluster)
|
|
2127
|
+
child_element = self.find(element, "LIN-CLUSTER-VARIANTS/LIN-CLUSTER-CONDITIONAL")
|
|
2128
|
+
if child_element is not None:
|
|
2129
|
+
self.readCommunicationCluster(child_element, cluster)
|
|
2130
|
+
|
|
2131
|
+
def readCanCluster(self, element: ET.Element, parent: ARPackage):
|
|
2132
|
+
short_name = self.getShortName(element)
|
|
2133
|
+
self.logger.debug("readCanCluster %s" % short_name)
|
|
2134
|
+
cluster = parent.createCanCluster(short_name)
|
|
2135
|
+
self.readIdentifiable(element, cluster)
|
|
2136
|
+
child_element = self.find(element, "CAN-CLUSTER-VARIANTS/CAN-CLUSTER-CONDITIONAL")
|
|
2137
|
+
if child_element is not None:
|
|
2138
|
+
self.readCommunicationCluster(child_element, cluster)
|
|
2139
|
+
self.readAbstractCanCluster(child_element, cluster)
|
|
1843
2140
|
|
|
1844
2141
|
def readPduToFrameMappings(self, element: ET.Element, parent: Frame):
|
|
1845
2142
|
for child_element in self.findall(element, "PDU-TO-FRAME-MAPPINGS/PDU-TO-FRAME-MAPPING"):
|
|
@@ -1867,24 +2164,126 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1867
2164
|
self.logger.debug("readNmPdu %s" % short_name)
|
|
1868
2165
|
pdu = parent.createNmPdu(short_name)
|
|
1869
2166
|
self.readIdentifiable(element, pdu)
|
|
2167
|
+
self.readIPdu(element, pdu)
|
|
1870
2168
|
|
|
1871
2169
|
def readNPdu(self, element: ET.Element, parent: ARPackage):
|
|
1872
2170
|
short_name = self.getShortName(element)
|
|
1873
2171
|
self.logger.debug("readNPdu %s" % short_name)
|
|
1874
2172
|
pdu = parent.createNPdu(short_name)
|
|
1875
2173
|
self.readIdentifiable(element, pdu)
|
|
2174
|
+
self.readIPdu(element, pdu)
|
|
1876
2175
|
|
|
2176
|
+
def readIPdu(self, element: ET.Element, pdu: IPdu):
|
|
2177
|
+
pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH"))
|
|
2178
|
+
|
|
1877
2179
|
def readDcmIPdu(self, element: ET.Element, parent: ARPackage):
|
|
1878
2180
|
short_name = self.getShortName(element)
|
|
1879
2181
|
self.logger.debug("readDcmIPdu %s" % short_name)
|
|
1880
2182
|
pdu = parent.createDcmIPdu(short_name)
|
|
1881
2183
|
self.readIdentifiable(element, pdu)
|
|
2184
|
+
self.readIPdu(element, pdu)
|
|
2185
|
+
pdu.setDiagPduType(self.getChildElementOptionalLiteral(element, "DIAG-PDU-TYPE"))
|
|
2186
|
+
|
|
2187
|
+
def readSecuredIPdu(self, element: ET.Element, parent: ARPackage):
|
|
2188
|
+
short_name = self.getShortName(element)
|
|
2189
|
+
self.logger.debug("readSecuredIPdu %s" % short_name)
|
|
2190
|
+
pdu = parent.createSecuredIPdu(short_name)
|
|
2191
|
+
self.readIdentifiable(element, pdu)
|
|
2192
|
+
self.readIPdu(element, pdu)
|
|
2193
|
+
|
|
2194
|
+
def readNmNode(self, element: ET.Element, nm_node: NmNode):
|
|
2195
|
+
nm_node.setControllerRef(self.getChildElementOptionalRefType(element, "CONTROLLER-REF")) \
|
|
2196
|
+
.setNmIfEcuRef(self.getChildElementOptionalRefType(element, "NM-IF-ECU-REF")) \
|
|
2197
|
+
.setNmNodeId(self.getChildElementOptionalNumericalValue(element, "NM-NODE-ID"))
|
|
2198
|
+
for ref in self.getChildElementRefTypeList(element, "RX-NM-PDU-REFS/RX-NM-PDU-REF"):
|
|
2199
|
+
nm_node.addRxNmPduRef(ref)
|
|
2200
|
+
for ref in self.getChildElementRefTypeList(element, "TX-NM-PDU-REFS/TX-NM-PDU-REF"):
|
|
2201
|
+
nm_node.addTxNmPduRefs(ref)
|
|
2202
|
+
|
|
2203
|
+
def readCanNmNode(self, element: ET.Element, parent: NmCluster):
|
|
2204
|
+
short_name = self.getShortName(element)
|
|
2205
|
+
self.logger.debug("readCanNmNode %s" % short_name)
|
|
2206
|
+
nm_node = parent.createCanNmNode(short_name) # type: CanNmNode
|
|
2207
|
+
self.readIdentifiable(element, nm_node)
|
|
2208
|
+
self.readNmNode(element, nm_node)
|
|
2209
|
+
|
|
2210
|
+
nm_node.setNmMsgCycleOffset(self.getChildElementOptionalFloatValue(element, "NM-MSG-CYCLE-OFFSET")) \
|
|
2211
|
+
.setNmMsgReducedTime(self.getChildElementOptionalFloatValue(element, "NM-MSG-REDUCED-TIME")) \
|
|
2212
|
+
.setNmRangeConfig(self.getChildElementRxIdentifierRange(element, "NM-RANGE-CONFIG"))
|
|
2213
|
+
|
|
2214
|
+
def readNmClusterNmNodes(self, element: ET.Element, parent: NmCluster):
|
|
2215
|
+
self.logger.debug("readNmConfigNmNodes %s" % parent.short_name)
|
|
2216
|
+
for child_element in self.findall(element, "NM-NODES/*"):
|
|
2217
|
+
tag_name = self.getTagName(child_element)
|
|
2218
|
+
if tag_name == "CAN-NM-NODE":
|
|
2219
|
+
self.readCanNmNode(child_element, parent)
|
|
2220
|
+
else:
|
|
2221
|
+
self._raiseError("Unsupported Nm Node <%s>" % tag_name)
|
|
2222
|
+
|
|
2223
|
+
def getCanNmClusterCoupling(self, element: ET.Element) -> CanNmClusterCoupling:
|
|
2224
|
+
coupling = CanNmClusterCoupling()
|
|
2225
|
+
|
|
2226
|
+
for ref in self.getChildElementRefTypeList(element, "COUPLED-CLUSTER-REFS/COUPLED-CLUSTER-REF"):
|
|
2227
|
+
coupling.addCoupledClusterRef(ref)
|
|
1882
2228
|
|
|
2229
|
+
coupling.setNmBusloadReductionEnabled(self.getChildElementOptionalBooleanValue(element, "NM-BUSLOAD-REDUCTION-ENABLED")) \
|
|
2230
|
+
.setNmImmediateRestartEnabled(self.getChildElementOptionalBooleanValue(element, "NM-IMMEDIATE-RESTART-ENABLED"))
|
|
2231
|
+
|
|
2232
|
+
return coupling
|
|
2233
|
+
|
|
2234
|
+
def readNmConfigNmClusterCouplings(self, element: ET.Element, nm_config: NmConfig):
|
|
2235
|
+
self.logger.debug("readNmClusterNmClusterCouplings %s" % nm_config.getShortName())
|
|
2236
|
+
for child_element in self.findall(element, "NM-CLUSTER-COUPLINGS/*"):
|
|
2237
|
+
tag_name = self.getTagName(child_element)
|
|
2238
|
+
if tag_name == "CAN-NM-CLUSTER-COUPLING":
|
|
2239
|
+
nm_config.addNmClusterCouplings(self.getCanNmClusterCoupling(child_element))
|
|
2240
|
+
else:
|
|
2241
|
+
self._raiseError("Unsupported Nm Node <%s>" % tag_name)
|
|
2242
|
+
|
|
2243
|
+
def readNmCluster(self, element: ET.Element, cluster: NmCluster):
|
|
2244
|
+
cluster.setCommunicationClusterRef(self.getChildElementOptionalRefType(element, "COMMUNICATION-CLUSTER-REF")) \
|
|
2245
|
+
.setNmChannelId(self.getChildElementOptionalNumericalValue(element, "NM-CHANNEL-ID")) \
|
|
2246
|
+
.setNmChannelSleepMaster(self.getChildElementOptionalBooleanValue(element, "NM-CHANNEL-SLEEP-MASTER"))
|
|
2247
|
+
self.readNmClusterNmNodes(element, cluster)
|
|
2248
|
+
cluster.setNmSynchronizingNetwork(self.getChildElementOptionalBooleanValue(element, "NM-SYNCHRONIZING-NETWORK"))
|
|
2249
|
+
|
|
2250
|
+
def readCanNmCluster(self, element: ET.Element, parent: NmConfig):
|
|
2251
|
+
short_name = self.getShortName(element)
|
|
2252
|
+
self.logger.debug("readCanNmCluster %s" % short_name)
|
|
2253
|
+
cluster = parent.createCanNmCluster(short_name) # type: CanNmCluster
|
|
2254
|
+
self.readIdentifiable(element, cluster)
|
|
2255
|
+
self.readNmCluster(element, cluster)
|
|
2256
|
+
|
|
2257
|
+
cluster.setNmBusloadReductionActive(self.getChildElementOptionalBooleanValue(element, "NM-BUSLOAD-REDUCTION-ACTIVE")) \
|
|
2258
|
+
.setNmCarWakeUpRxEnabled(self.getChildElementOptionalBooleanValue(element, "NM-CAR-WAKE-UP-RX-ENABLED")) \
|
|
2259
|
+
.setNmCbvPosition(self.getChildElementOptionalNumericalValue(element, "NM-CBV-POSITION")) \
|
|
2260
|
+
.setNmChannelActive(self.getChildElementOptionalBooleanValue(element, "NM-CHANNEL-ACTIVE")) \
|
|
2261
|
+
.setNmImmediateNmCycleTime(self.getChildElementOptionalFloatValue(element, "NM-IMMEDIATE-NM-CYCLE-TIME")) \
|
|
2262
|
+
.setNmImmediateNmTransmissions(self. getChildElementOptionalNumericalValue(element, "NM-IMMEDIATE-NM-TRANSMISSIONS")) \
|
|
2263
|
+
.setNmMessageTimeoutTime(self.getChildElementOptionalFloatValue(element, "NM-MESSAGE-TIMEOUT-TIME")) \
|
|
2264
|
+
.setNmMsgCycleTime(self.getChildElementOptionalFloatValue(element, "NM-MSG-CYCLE-TIME")) \
|
|
2265
|
+
.setNmNetworkTimeout(self.getChildElementOptionalFloatValue(element, "NM-NETWORK-TIMEOUT")) \
|
|
2266
|
+
.setNmNidPosition(self. getChildElementOptionalNumericalValue(element, "NM-NID-POSITION")) \
|
|
2267
|
+
.setNmRemoteSleepIndicationTime(self.getChildElementOptionalFloatValue(element, "NM-REMOTE-SLEEP-INDICATION-TIME")) \
|
|
2268
|
+
.setNmRepeatMessageTime(self.getChildElementOptionalFloatValue(element, "NM-REPEAT-MESSAGE-TIME")) \
|
|
2269
|
+
.setNmUserDataLength(self. getChildElementOptionalNumericalValue(element, "NM-USER-DATA-LENGTH")) \
|
|
2270
|
+
.setNmWaitBusSleepTime(self.getChildElementOptionalFloatValue(element, "NM-WAIT-BUS-SLEEP-TIME"))
|
|
2271
|
+
|
|
2272
|
+
def readNmConfigNmClusters(self, element: ET.Element, parent: NmConfig):
|
|
2273
|
+
for child_element in self.findall(element, "NM-CLUSTERS/*"):
|
|
2274
|
+
tag_name = self.getTagName(child_element)
|
|
2275
|
+
if tag_name == "CAN-NM-CLUSTER":
|
|
2276
|
+
self.readCanNmCluster(child_element, parent)
|
|
2277
|
+
else:
|
|
2278
|
+
self._raiseError("Unsupported Nm Cluster <%s>" % tag_name)
|
|
2279
|
+
|
|
1883
2280
|
def readNmConfig(self, element: ET.Element, parent: ARPackage):
|
|
1884
2281
|
short_name = self.getShortName(element)
|
|
1885
2282
|
self.logger.debug("NmConfig %s" % short_name)
|
|
1886
|
-
|
|
1887
|
-
self.readIdentifiable(element,
|
|
2283
|
+
config = parent.createNmConfig(short_name) # type: NmConfig
|
|
2284
|
+
self.readIdentifiable(element, config)
|
|
2285
|
+
self.readNmConfigNmClusters(element, config)
|
|
2286
|
+
self.readNmConfigNmClusterCouplings(element, config)
|
|
1888
2287
|
|
|
1889
2288
|
def readCanTpConfig(self, element: ET.Element, parent: ARPackage):
|
|
1890
2289
|
short_name = self.getShortName(element)
|
|
@@ -1898,6 +2297,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1898
2297
|
frame = parent.createCanFrame(short_name)
|
|
1899
2298
|
self.readFrame(element, frame)
|
|
1900
2299
|
|
|
2300
|
+
def readEcuInstance(self, element: ET.Element, parent: ARPackage):
|
|
2301
|
+
short_name = self.getShortName(element)
|
|
2302
|
+
self.logger.debug("EcuInstance %s" % short_name)
|
|
2303
|
+
instance = parent.createEcuInstance(short_name)
|
|
2304
|
+
self.readIdentifiable(element, instance)
|
|
2305
|
+
|
|
1901
2306
|
'''
|
|
1902
2307
|
def getFrameMappings(self, element: ET.Element) -> List[FrameMapping]:
|
|
1903
2308
|
mappings = []
|
|
@@ -1949,6 +2354,274 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1949
2354
|
signal.networkRepresentationProps = self.getSwDataDefProps(element, "NETWORK-REPRESENTATION-PROPS")
|
|
1950
2355
|
signal.systemSignalRef = self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF")
|
|
1951
2356
|
|
|
2357
|
+
def readEcucValueCollectionEcucValues(self, element: ET.Element, parent: EcucValueCollection):
|
|
2358
|
+
for child_element in self.findall(element, "ECUC-VALUES/ECUC-MODULE-CONFIGURATION-VALUES-REF-CONDITIONAL"):
|
|
2359
|
+
ref = self.getChildElementOptionalRefType(child_element, "ECUC-MODULE-CONFIGURATION-VALUES-REF")
|
|
2360
|
+
if (ref is not None):
|
|
2361
|
+
parent.addEcucValueRef(ref)
|
|
2362
|
+
self.logger.debug("EcucValue <%s> of EcucValueCollection <%s> has been added", ref.value, parent.short_name)
|
|
2363
|
+
|
|
2364
|
+
def readEcucValueCollection(self, element: ET.Element, parent: ARPackage):
|
|
2365
|
+
short_name = self.getShortName(element)
|
|
2366
|
+
self.logger.debug("EcucValueCollection %s" % short_name)
|
|
2367
|
+
collection = parent.createEcucValueCollection(short_name)
|
|
2368
|
+
self.readIdentifiable(element, collection)
|
|
2369
|
+
collection.setEcuExtractRef(self.getChildElementOptionalRefType(element, "ECU-EXTRACT-REF"))
|
|
2370
|
+
self.readEcucValueCollectionEcucValues(element, collection)
|
|
2371
|
+
|
|
2372
|
+
def readEcucParameterValue(self, element: ET.Element, param_value: EcucParameterValue):
|
|
2373
|
+
param_value.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
|
|
2374
|
+
for annotation in self.getAnnotations(element):
|
|
2375
|
+
param_value.addAnnotation(annotation)
|
|
2376
|
+
|
|
2377
|
+
def getEcucTextualParamValue(self, element: ET.Element) -> EcucTextualParamValue:
|
|
2378
|
+
param_value = EcucTextualParamValue()
|
|
2379
|
+
self.readEcucParameterValue(element, param_value)
|
|
2380
|
+
param_value.setValue(self.getChildElementOptionalLiteral(element, "VALUE"))
|
|
2381
|
+
return param_value
|
|
2382
|
+
|
|
2383
|
+
def getEcucNumericalParamValue(self, element: ET.Element) -> EcucNumericalParamValue:
|
|
2384
|
+
param_value = EcucNumericalParamValue()
|
|
2385
|
+
self.readEcucParameterValue(element, param_value)
|
|
2386
|
+
param_value.setValue(self.getChildElementOptionalNumericalValue(element, "VALUE"))
|
|
2387
|
+
return param_value
|
|
2388
|
+
|
|
2389
|
+
def readEcucContainerValueParameterValues(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2390
|
+
for child_element in self.findall(element, "PARAMETER-VALUES/*"):
|
|
2391
|
+
tag_name = self.getTagName(child_element)
|
|
2392
|
+
if tag_name == "ECUC-TEXTUAL-PARAM-VALUE":
|
|
2393
|
+
container_value.addParameterValue(self.getEcucTextualParamValue(child_element))
|
|
2394
|
+
elif tag_name == "ECUC-NUMERICAL-PARAM-VALUE":
|
|
2395
|
+
container_value.addParameterValue(self.getEcucNumericalParamValue(child_element))
|
|
2396
|
+
else:
|
|
2397
|
+
raise NotImplementedError("Unsupported EcucParameterValue <%s>" % tag_name)
|
|
2398
|
+
|
|
2399
|
+
def readEcucAbstractReferenceValue(self, element: ET.Element, value: EcucAbstractReferenceValue):
|
|
2400
|
+
value.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
|
|
2401
|
+
for annotation in self.getAnnotations(element):
|
|
2402
|
+
value.addAnnotation(annotation)
|
|
2403
|
+
|
|
2404
|
+
def getEcucReferenceValue(self, element: ET.Element) -> EcucReferenceValue:
|
|
2405
|
+
value = EcucReferenceValue()
|
|
2406
|
+
self.readEcucAbstractReferenceValue(element, value)
|
|
2407
|
+
value.setValueRef(self.getChildElementOptionalRefType(element, "VALUE-REF"))
|
|
2408
|
+
return value
|
|
2409
|
+
|
|
2410
|
+
def getAnyInstanceRef(self, element: ET.Element, key) -> AnyInstanceRef:
|
|
2411
|
+
instance_ref = None
|
|
2412
|
+
child_element = self.find(element, key)
|
|
2413
|
+
if child_element is not None:
|
|
2414
|
+
instance_ref = AnyInstanceRef()
|
|
2415
|
+
instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF")) \
|
|
2416
|
+
.setContextElementRef(self.getChildElementOptionalRefType(child_element, "CONTEXT-ELEMENT-REF")) \
|
|
2417
|
+
.setTargetRef(self.getChildElementOptionalRefType(child_element, "TARGET-REF"))
|
|
2418
|
+
return instance_ref
|
|
2419
|
+
|
|
2420
|
+
def getEcucInstanceReferenceValue(self, element: ET.Element) -> EcucInstanceReferenceValue:
|
|
2421
|
+
value = EcucInstanceReferenceValue()
|
|
2422
|
+
self.readEcucAbstractReferenceValue(element, value)
|
|
2423
|
+
value.setValueIRef(self.getAnyInstanceRef(element, "VALUE-IREF"))
|
|
2424
|
+
return value
|
|
2425
|
+
|
|
2426
|
+
def readEcucContainerValueReferenceValues(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2427
|
+
for child_element in self.findall(element, "REFERENCE-VALUES/*"):
|
|
2428
|
+
tag_name = self.getTagName(child_element)
|
|
2429
|
+
if tag_name == "ECUC-REFERENCE-VALUE":
|
|
2430
|
+
container_value.addReferenceValue(self.getEcucReferenceValue(child_element))
|
|
2431
|
+
elif tag_name == "ECUC-INSTANCE-REFERENCE-VALUE":
|
|
2432
|
+
container_value.addReferenceValue(self.getEcucInstanceReferenceValue(child_element))
|
|
2433
|
+
else:
|
|
2434
|
+
raise NotImplementedError("Unsupported EcucParameterValue <%s>" % tag_name)
|
|
2435
|
+
|
|
2436
|
+
def readEcucContainerValue(self, element: ET.Element, container_value: EcucContainerValue):
|
|
2437
|
+
self.readIdentifiable(element, container_value)
|
|
2438
|
+
container_value.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
|
|
2439
|
+
self.readEcucContainerValueParameterValues(element, container_value)
|
|
2440
|
+
self.readEcucContainerValueReferenceValues(element, container_value)
|
|
2441
|
+
self.readEcucContainerValueSubContainers(element, container_value)
|
|
2442
|
+
|
|
2443
|
+
def readEcucContainerValueEcucContainerValue(self, element: ET.Element, parent: EcucContainerValue):
|
|
2444
|
+
short_name = self.getShortName(element)
|
|
2445
|
+
self.logger.debug("EcucContainerValue %s" % short_name)
|
|
2446
|
+
container_value = parent.createSubContainer(short_name)
|
|
2447
|
+
self.readEcucContainerValue(element, container_value)
|
|
2448
|
+
|
|
2449
|
+
def readEcucContainerValueSubContainers(self, element: ET.Element, parent: EcucContainerValue):
|
|
2450
|
+
for child_element in self.findall(element, "SUB-CONTAINERS/*"):
|
|
2451
|
+
tag_name = self.getTagName(child_element)
|
|
2452
|
+
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
2453
|
+
self.readEcucContainerValueEcucContainerValue(child_element, parent)
|
|
2454
|
+
else:
|
|
2455
|
+
raise NotImplementedError("Unsupported Sub Container %s" % tag_name)
|
|
2456
|
+
|
|
2457
|
+
def readEcucModuleConfigurationValuesEcucContainerValue(self, element: ET.Element, parent: EcucModuleConfigurationValues):
|
|
2458
|
+
short_name = self.getShortName(element)
|
|
2459
|
+
self.logger.debug("EcucContainerValue %s" % short_name)
|
|
2460
|
+
container_value = parent.createContainer(short_name)
|
|
2461
|
+
self.readEcucContainerValue(element, container_value)
|
|
2462
|
+
|
|
2463
|
+
def readEcucModuleConfigurationValuesContainers(self, element: ET.Element, values: EcucModuleConfigurationValues):
|
|
2464
|
+
for child_element in self.findall(element, "CONTAINERS/*"):
|
|
2465
|
+
tag_name = self.getTagName(child_element)
|
|
2466
|
+
if tag_name == "ECUC-CONTAINER-VALUE":
|
|
2467
|
+
self.readEcucModuleConfigurationValuesEcucContainerValue(child_element, values)
|
|
2468
|
+
else:
|
|
2469
|
+
raise NotImplementedError("Unsupported Container %s" % tag_name)
|
|
2470
|
+
|
|
2471
|
+
def readEcucModuleConfigurationValues(self, element: ET.Element, parent: ARPackage):
|
|
2472
|
+
short_name = self.getShortName(element)
|
|
2473
|
+
self.logger.debug("EcucModuleConfigurationValues %s" % short_name)
|
|
2474
|
+
values = parent.createEcucModuleConfigurationValues(short_name)
|
|
2475
|
+
self.readIdentifiable(element, values)
|
|
2476
|
+
values.setDefinitionRef(self.getChildElementOptionalRefType(element, "DEFINITION-REF"))
|
|
2477
|
+
values.setImplementationConfigVariant(self.getChildElementOptionalLiteral(element, "IMPLEMENTATION-CONFIG-VARIANT"))
|
|
2478
|
+
values.setModuleDescriptionRef(self.getChildElementOptionalRefType(element, "MODULE-DESCRIPTION-REF"))
|
|
2479
|
+
self.readEcucModuleConfigurationValuesContainers(element, values)
|
|
2480
|
+
|
|
2481
|
+
def readPhysicalDimensions(self, element: ET.Element, parent: ARPackage):
|
|
2482
|
+
short_name = self.getShortName(element)
|
|
2483
|
+
self.logger.debug("readPhysicalDimensions %s" % short_name)
|
|
2484
|
+
dimension = parent.createPhysicalDimension(short_name)
|
|
2485
|
+
self.readIdentifiable(element, dimension)
|
|
2486
|
+
dimension.setCurrentExp(self.getChildElementOptionalNumericalValue(element, "CURRENT-EXP")) \
|
|
2487
|
+
.setLengthExp(self.getChildElementOptionalNumericalValue(element, "LENGTH-EXP")) \
|
|
2488
|
+
|
|
2489
|
+
'''
|
|
2490
|
+
def getIPduMappings(self, element: ET.Element) -> List[IPduMapping]:
|
|
2491
|
+
mappings = []
|
|
2492
|
+
for child_element in self.findall(element, tag_name):
|
|
2493
|
+
mapping = IPduMapping()
|
|
2494
|
+
mapping.sourceIPduRef = self.getChildElementOptionalRefType(child_element, "SOURCE-IPDU-REF")
|
|
2495
|
+
mapping.targetIPduRef = self.getChildElementOptionalRefType(child_element, "TARGET-IPDU-REF")
|
|
2496
|
+
mappings.append(mapping)
|
|
2497
|
+
return mappings
|
|
2498
|
+
'''
|
|
2499
|
+
|
|
2500
|
+
def readISignalGroup(self, element: ET.Element, parent: ARPackage):
|
|
2501
|
+
short_name = self.getShortName(element)
|
|
2502
|
+
self.logger.debug("ISignalGroup %s" % short_name)
|
|
2503
|
+
group = parent.createISignalGroup(short_name)
|
|
2504
|
+
self.readIdentifiable(element, group)
|
|
2505
|
+
for ref_type in self.getChildElementRefTypeList(element, "I-SIGNAL-REFS/I-SIGNAL-REF"):
|
|
2506
|
+
group.addISignalRef(ref_type)
|
|
2507
|
+
group.systemSignalGroupRef = self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-GROUP-REF")
|
|
2508
|
+
|
|
2509
|
+
def readSystemSignal(self, element: ET.Element, parent: ARPackage):
|
|
2510
|
+
short_name = self.getShortName(element)
|
|
2511
|
+
self.logger.debug("SystemSignal %s" % short_name)
|
|
2512
|
+
signal = parent.createSystemSignal(short_name)
|
|
2513
|
+
self.readIdentifiable(element, signal)
|
|
2514
|
+
signal.setDynamicLength(self.getChildElementOptionalBooleanValue(element, "DYNAMIC-LENGTH"))
|
|
2515
|
+
|
|
2516
|
+
def readSystemSignalGroup(self, element: ET.Element, parent: ARPackage):
|
|
2517
|
+
short_name = self.getShortName(element)
|
|
2518
|
+
self.logger.debug("SystemSignalGroup %s" % short_name)
|
|
2519
|
+
group = parent.createSystemSignalGroup(short_name)
|
|
2520
|
+
self.readIdentifiable(element, group)
|
|
2521
|
+
for ref_type in self.getChildElementRefTypeList(element, "SYSTEM-SIGNAL-REFS/SYSTEM-SIGNAL-REF"):
|
|
2522
|
+
group.addSystemSignalRefs(ref_type)
|
|
2523
|
+
|
|
2524
|
+
def readISignalToPduMappings(self, element: ET.Element, parent: ISignalIPdu):
|
|
2525
|
+
for child_element in self.findall(element, "I-SIGNAL-TO-PDU-MAPPINGS/I-SIGNAL-TO-I-PDU-MAPPING"):
|
|
2526
|
+
short_name = self.getShortName(child_element)
|
|
2527
|
+
mapping = parent.createISignalToPduMappings(short_name)
|
|
2528
|
+
self.readIdentifiable(child_element, mapping)
|
|
2529
|
+
mapping.setISignalRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-REF")) \
|
|
2530
|
+
.setISignalGroupRef(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-GROUP-REF")) \
|
|
2531
|
+
.setPackingByteOrder(self.getChildElementOptionalLiteral(child_element, "PACKING-BYTE-ORDER")) \
|
|
2532
|
+
.setStartPosition(self.getChildElementOptionalNumericalValue(child_element, "START-POSITION")) \
|
|
2533
|
+
.setTransferProperty(self.getChildElementOptionalLiteral(child_element, "TRANSFER-PROPERTY")) \
|
|
2534
|
+
.setUpdateIndicationBitPosition(self.getChildElementOptionalNumericalValue(child_element, "UPDATE-INDICATION-BIT-POSITION"))
|
|
2535
|
+
|
|
2536
|
+
def readISignalIPdu(self, element: ET.Element, parent: ARPackage):
|
|
2537
|
+
short_name = self.getShortName(element)
|
|
2538
|
+
self.logger.debug("ISignalIPdu %s" % short_name)
|
|
2539
|
+
i_pdu = parent.createISignalIPdu(short_name)
|
|
2540
|
+
self.readIdentifiable(element, i_pdu)
|
|
2541
|
+
i_pdu.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH"))
|
|
2542
|
+
self.readISignalToPduMappings(element, i_pdu)
|
|
2543
|
+
i_pdu.setUnusedBitPattern(self.getChildElementOptionalLiteral(element, "UNUSED-BIT-PATTERN"))
|
|
2544
|
+
|
|
2545
|
+
def getISignalIPduRefs(self, element: ET.Element) -> List[RefType]:
|
|
2546
|
+
ref_types = []
|
|
2547
|
+
for child_element in self.findall(element, "I-SIGNAL-I-PDUS/I-SIGNAL-I-PDU-REF-CONDITIONAL"):
|
|
2548
|
+
ref_types.append(self.getChildElementOptionalRefType(child_element, "I-SIGNAL-I-PDU-REF"))
|
|
2549
|
+
return ref_types
|
|
2550
|
+
|
|
2551
|
+
def readISignalIPduGroup(self, element: ET.Element, parent: ARPackage):
|
|
2552
|
+
short_name = self.getShortName(element)
|
|
2553
|
+
self.logger.debug("ISignalIPduGroup %s" % short_name)
|
|
2554
|
+
group = parent.createISignalIPduGroup(short_name)
|
|
2555
|
+
self.readIdentifiable(element, group)
|
|
2556
|
+
group.communicationDirection = self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")
|
|
2557
|
+
group.communicationMode = self.getChildElementOptionalLiteral(element, "COMMUNICATION-MODE")
|
|
2558
|
+
for ref_type in self.getChildElementRefTypeList(element, "CONTAINED-I-SIGNAL-I-PDU-GROUP-REFS/CONTAINED-I-SIGNAL-I-PDU-GROUP-REF"):
|
|
2559
|
+
group.addContainedISignalIPduGroupRef(ref_type)
|
|
2560
|
+
for ref_type in self.getISignalIPduRefs(element):
|
|
2561
|
+
group.addISignalIPduRef(ref_type)
|
|
2562
|
+
|
|
2563
|
+
def getSenderReceiverToSignalMapping(self, element: ET.Element) -> SenderReceiverToSignalMapping:
|
|
2564
|
+
mapping = SenderReceiverToSignalMapping()
|
|
2565
|
+
mapping.setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF")))
|
|
2566
|
+
mapping.setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
|
|
2567
|
+
return mapping
|
|
2568
|
+
|
|
2569
|
+
def getSenderReceiverToSignalGroupMapping(self, element: ET.Element) -> SenderReceiverToSignalGroupMapping:
|
|
2570
|
+
mapping = SenderReceiverToSignalGroupMapping()
|
|
2571
|
+
mapping.setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF")))
|
|
2572
|
+
mapping.setSignalGroupRef(self.getChildElementOptionalRefType(element, "SIGNAL-GROUP-REF"))
|
|
2573
|
+
return mapping
|
|
2574
|
+
|
|
2575
|
+
def readSystemMappingDataMappings(self, element: ET.Element, mapping: SystemMapping):
|
|
2576
|
+
for child_element in self.findall(element, "DATA-MAPPINGS/*"):
|
|
2577
|
+
tag_name = self.getTagName(child_element)
|
|
2578
|
+
if tag_name == "SENDER-RECEIVER-TO-SIGNAL-MAPPING":
|
|
2579
|
+
mapping.addDataMapping(self.getSenderReceiverToSignalMapping(child_element))
|
|
2580
|
+
elif tag_name == "SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING":
|
|
2581
|
+
mapping.addDataMapping(self.getSenderReceiverToSignalGroupMapping(child_element))
|
|
2582
|
+
else:
|
|
2583
|
+
raise NotImplementedError("Unsupported Data Mapping %s" % tag_name)
|
|
2584
|
+
|
|
2585
|
+
def readSystemMapping(self, element: ET.Element, parent: System):
|
|
2586
|
+
short_name = self.getShortName(element)
|
|
2587
|
+
self.logger.debug("SystemMapping %s" % short_name)
|
|
2588
|
+
mapping = parent.createSystemMapping(short_name)
|
|
2589
|
+
self.readIdentifiable(element, mapping)
|
|
2590
|
+
self.readSystemMappingDataMappings(element, mapping)
|
|
2591
|
+
|
|
2592
|
+
def readSystemMappings(self, element: ET.Element, system: System):
|
|
2593
|
+
for child_element in self.findall(element, "MAPPINGS/*"):
|
|
2594
|
+
tag_name = self.getTagName(child_element)
|
|
2595
|
+
if tag_name == "SYSTEM-MAPPING":
|
|
2596
|
+
self.readSystemMapping(child_element, system)
|
|
2597
|
+
else:
|
|
2598
|
+
raise NotImplementedError("Unsupported Mapping %s" % tag_name)
|
|
2599
|
+
|
|
2600
|
+
def readSystem(self, element: ET.Element, parent: ARPackage):
|
|
2601
|
+
short_name = self.getShortName(element)
|
|
2602
|
+
self.logger.debug("System %s" % short_name)
|
|
2603
|
+
system = parent.createSystem(short_name)
|
|
2604
|
+
self.readIdentifiable(element, system)
|
|
2605
|
+
|
|
2606
|
+
system.setEcuExtractVersion(self.getChildElementOptionalLiteral(element, "ECU-EXTRACT-VERSION"))
|
|
2607
|
+
for child_element in self.findall(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL"):
|
|
2608
|
+
system.addFibexElementRef(self.getChildElementOptionalRefType(child_element, "FIBEX-ELEMENT-REF"))
|
|
2609
|
+
self.readSystemMappings(element, system)
|
|
2610
|
+
|
|
2611
|
+
def readParameterInterfaceParameters(self, element: ET.Element, parent: ParameterInterface):
|
|
2612
|
+
for child_element in element.findall("./xmlns:PARAMETERS/xmlns:PARAMETER-DATA-PROTOTYPE", self.nsmap):
|
|
2613
|
+
short_name = self.getShortName(child_element)
|
|
2614
|
+
prototype = parent.createParameter(short_name)
|
|
2615
|
+
self.readParameterDataPrototype(child_element, prototype)
|
|
2616
|
+
|
|
2617
|
+
def readParameterInterface(self, element: ET.Element, parent: ARPackage):
|
|
2618
|
+
short_name = self.getShortName(element)
|
|
2619
|
+
self.logger.debug("ParameterInterface %s" % short_name)
|
|
2620
|
+
pi_interface = parent.createParameterInterface(short_name)
|
|
2621
|
+
self.readIdentifiable(element, pi_interface)
|
|
2622
|
+
self.readParameterInterfaceParameters(element, pi_interface)
|
|
2623
|
+
|
|
2624
|
+
|
|
1952
2625
|
def readARPackageElements(self, element: ET.Element, parent: ARPackage):
|
|
1953
2626
|
for child_element in self.findall(element, "./ELEMENTS/*"):
|
|
1954
2627
|
tag_name = self.getTagName(child_element.tag)
|
|
@@ -2022,38 +2695,46 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2022
2695
|
self.readNPdu(child_element, parent)
|
|
2023
2696
|
elif tag_name == "DCM-I-PDU":
|
|
2024
2697
|
self.readDcmIPdu(child_element, parent)
|
|
2698
|
+
elif tag_name == "SECURED-I-PDU":
|
|
2699
|
+
self.readSecuredIPdu(child_element, parent)
|
|
2025
2700
|
elif tag_name == "NM-CONFIG":
|
|
2026
2701
|
self.readNmConfig(child_element, parent)
|
|
2027
2702
|
elif tag_name == "CAN-TP-CONFIG":
|
|
2028
2703
|
self.readCanTpConfig(child_element, parent)
|
|
2029
|
-
elif tag_name == "
|
|
2704
|
+
elif tag_name == "LIN-TP-CONFIG":
|
|
2030
2705
|
pass
|
|
2706
|
+
elif tag_name == "SYSTEM":
|
|
2707
|
+
self.readSystem(child_element, parent)
|
|
2031
2708
|
elif tag_name == "ECU-INSTANCE":
|
|
2032
|
-
|
|
2709
|
+
self.readEcuInstance(child_element, parent)
|
|
2033
2710
|
elif tag_name == "GATEWAY":
|
|
2034
2711
|
self.readGateway(child_element, parent)
|
|
2035
2712
|
elif tag_name == "I-SIGNAL-I-PDU-GROUP":
|
|
2036
|
-
|
|
2713
|
+
self.readISignalIPduGroup(child_element, parent)
|
|
2037
2714
|
elif tag_name == "CAN-CLUSTER":
|
|
2038
|
-
|
|
2715
|
+
self.readCanCluster(child_element, parent)
|
|
2039
2716
|
elif tag_name == "CAN-FRAME":
|
|
2040
2717
|
self.readCanFrame(child_element, parent)
|
|
2041
2718
|
elif tag_name == "I-SIGNAL":
|
|
2042
2719
|
self.readISignal(child_element, parent)
|
|
2043
|
-
pass
|
|
2044
2720
|
elif tag_name == "I-SIGNAL-GROUP":
|
|
2045
|
-
|
|
2721
|
+
self.readISignalGroup(child_element, parent)
|
|
2046
2722
|
elif tag_name == "I-SIGNAL-I-PDU":
|
|
2047
|
-
|
|
2723
|
+
self.readISignalIPdu(child_element, parent)
|
|
2048
2724
|
elif tag_name == "SYSTEM-SIGNAL":
|
|
2049
|
-
|
|
2725
|
+
self.readSystemSignal(child_element, parent)
|
|
2050
2726
|
elif tag_name == "SYSTEM-SIGNAL-GROUP":
|
|
2051
|
-
|
|
2727
|
+
self.readSystemSignalGroup(child_element, parent)
|
|
2728
|
+
elif tag_name == "ECUC-VALUE-COLLECTION":
|
|
2729
|
+
self.readEcucValueCollection(child_element, parent)
|
|
2730
|
+
elif tag_name == "ECUC-MODULE-CONFIGURATION-VALUES":
|
|
2731
|
+
self.readEcucModuleConfigurationValues(child_element, parent)
|
|
2732
|
+
elif tag_name == "PHYSICAL-DIMENSION":
|
|
2733
|
+
self.readPhysicalDimensions(child_element, parent)
|
|
2734
|
+
elif tag_name == "PARAMETER-INTERFACE":
|
|
2735
|
+
self.readParameterInterface(child_element, parent)
|
|
2052
2736
|
else:
|
|
2053
2737
|
self._raiseError("Unsupported element type of ARPackage <%s>" % tag_name)
|
|
2054
|
-
#pass
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
2738
|
|
|
2058
2739
|
def readARPackages(self, element: ET.Element, parent: ARPackage):
|
|
2059
2740
|
for child_element in element.findall("./xmlns:AR-PACKAGES/xmlns:AR-PACKAGE", self.nsmap):
|
|
@@ -2068,7 +2749,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2068
2749
|
|
|
2069
2750
|
|
|
2070
2751
|
def load(self, filename, document: AUTOSAR):
|
|
2071
|
-
self.logger.info("Load %s ..." % filename)
|
|
2752
|
+
self.logger.info("Load %s ..." % os.path.realpath(filename))
|
|
2072
2753
|
|
|
2073
2754
|
tree = ET.parse(filename)
|
|
2074
2755
|
root = tree.getroot()
|
|
@@ -2077,3 +2758,5 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2077
2758
|
|
|
2078
2759
|
self.getAUTOSARInfo(root, document)
|
|
2079
2760
|
self.readARPackages(root, document)
|
|
2761
|
+
|
|
2762
|
+
document.reload()
|