armodel 1.7.2__py3-none-any.whl → 1.7.4__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 +1 -1
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +44 -20
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +104 -30
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +12 -16
- armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +70 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +12 -9
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +29 -22
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HardwareConfiguration.py +33 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HeapUsage.py +10 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/SoftwareContext.py +23 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/StackUsage.py +93 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +39 -5
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +28 -5
- armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcBswMapping.py +48 -6
- armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +5 -5
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +27 -1
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +39 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +17 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +8 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +196 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AutosarVariableRef.py +31 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/DataElements.py +4 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/InstanceRefsUsage.py +17 -32
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +4 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +17 -2
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +81 -34
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +10 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetCommunication.py +229 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +167 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/NetworkEndpoint.py +225 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +96 -7
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +47 -4
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +18 -5
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +7 -12
- armodel/models/M2/MSR/AsamHdo/BaseTypes.py +0 -1
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +16 -1
- armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +34 -3
- armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +7 -0
- armodel/models/M2/MSR/DataDictionary/ServiceProcessTask.py +33 -0
- armodel/models/__init__.py +6 -0
- armodel/parser/abstract_arxml_parser.py +4 -14
- armodel/parser/arxml_parser.py +567 -224
- armodel/tests/test_armodel/models/test_ar_object.py +6 -2
- armodel/tests/test_armodel/models/test_ar_ref.py +2 -2
- armodel/tests/test_armodel/models/test_port_interface.py +4 -4
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +48 -48
- armodel/writer/abstract_arxml_writer.py +2 -3
- armodel/writer/arxml_writer.py +566 -288
- {armodel-1.7.2.dist-info → armodel-1.7.4.dist-info}/METADATA +30 -2
- {armodel-1.7.2.dist-info → armodel-1.7.4.dist-info}/RECORD +54 -44
- {armodel-1.7.2.dist-info → armodel-1.7.4.dist-info}/LICENSE +0 -0
- {armodel-1.7.2.dist-info → armodel-1.7.4.dist-info}/WHEEL +0 -0
- {armodel-1.7.2.dist-info → armodel-1.7.4.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.2.dist-info → armodel-1.7.4.dist-info}/top_level.txt +0 -0
armodel/parser/arxml_parser.py
CHANGED
|
@@ -2,13 +2,10 @@ from typing import List
|
|
|
2
2
|
import xml.etree.ElementTree as ET
|
|
3
3
|
import os
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
5
|
from ..models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
9
6
|
from ..models.M2.MSR.AsamHdo.BaseTypes import BaseTypeDirectDefinition
|
|
10
7
|
from ..models.M2.MSR.AsamHdo.Constraints.GlobalConstraints import DataConstrRule, InternalConstrs, PhysConstrs, DataConstr
|
|
11
|
-
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuMethod, Compu, CompuConst, CompuConstTextContent, CompuNominatorDenominator, CompuRationalCoeffs, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
|
|
8
|
+
from ..models.M2.MSR.AsamHdo.ComputationMethod import CompuConstContent, CompuConstFormulaContent, CompuConstNumericContent, CompuMethod, Compu, CompuConst, CompuConstTextContent, CompuNominatorDenominator, CompuRationalCoeffs, CompuScale, CompuScaleConstantContents, CompuScaleRationalFormula, CompuScales
|
|
12
9
|
from ..models.M2.MSR.AsamHdo.SpecialData import Sdg, Sd
|
|
13
10
|
from ..models.M2.MSR.CalibrationData.CalibrationValue import SwValueCont, SwValues
|
|
14
11
|
from ..models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, SwPointerTargetProps
|
|
@@ -18,6 +15,7 @@ from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroupConte
|
|
|
18
15
|
from ..models.M2.MSR.DataDictionary.DataDefProperties import ValueList
|
|
19
16
|
from ..models.M2.MSR.DataDictionary.RecordLayout import SwRecordLayoutGroup
|
|
20
17
|
from ..models.M2.MSR.DataDictionary.CalibrationParameter import SwCalprmAxisSet
|
|
18
|
+
from ..models.M2.MSR.DataDictionary.ServiceProcessTask import SwServiceArg
|
|
21
19
|
from ..models.M2.MSR.Documentation.Annotation import Annotation, GeneralAnnotation
|
|
22
20
|
from ..models.M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
|
|
23
21
|
from ..models.M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
|
|
@@ -25,15 +23,18 @@ from ..models.M2.MSR.Documentation.TextModel.LanguageDataModel import LLongName,
|
|
|
25
23
|
from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguageParagraph, MultiLanguagePlainText, MultilanguageLongName
|
|
26
24
|
|
|
27
25
|
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
28
|
-
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalBehavior, BswModuleEntity, BswScheduleEvent, BswModeSenderPolicy
|
|
26
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswDataReceivedEvent, BswInternalBehavior, BswInternalTriggerOccurredEvent, BswInterruptEntity, BswModeSwitchEvent, BswModuleEntity, BswSchedulableEntity, BswScheduleEvent, BswModeSenderPolicy, BswTimingEvent
|
|
27
|
+
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
|
|
29
28
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import BswImplementation
|
|
30
29
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import BswModuleDescription
|
|
31
30
|
from ..models.M2.AUTOSARTemplates.CommonStructure import ApplicationValueSpecification, ArrayValueSpecification, ConstantReference, NumericalValueSpecification, RecordValueSpecification, TextValueSpecification, ValueSpecification
|
|
32
31
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Filter import DataFilter
|
|
32
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.FlatMap import FlatInstanceDescriptor, FlatMap
|
|
33
33
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import ImplementationProps, Code
|
|
34
34
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroup, ModeRequestTypeMap, ModeDeclarationGroupPrototype
|
|
35
35
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
|
|
36
36
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import MemorySection
|
|
37
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
|
|
37
38
|
from ..models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity, InternalBehavior
|
|
38
39
|
from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
|
|
39
40
|
from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceAlgorithm, DiagEventDebounceMonitorInternal, DiagnosticEventNeeds, RoleBasedDataAssignment, RoleBasedDataTypeAssignment, ServiceDependency
|
|
@@ -46,25 +47,26 @@ from ..models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyI
|
|
|
46
47
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable
|
|
47
48
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject, EngineeringObject
|
|
48
49
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage, ReferenceBase
|
|
49
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, ARLiteral
|
|
50
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Ip6AddressString, RefType, ARLiteral
|
|
50
51
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
|
|
51
52
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent
|
|
52
53
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationRecordDataType, ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, AutosarDataType, DataTypeMap, DataTypeMappingSet
|
|
53
54
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import EndToEndProtectionSet, EndToEndDescription, EndToEndProtection, EndToEndProtectionVariablePrototype
|
|
54
55
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef, ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
55
56
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
56
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef,
|
|
57
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.InstanceRefsUsage import AutosarParameterRef, VariableInAtomicSWCTypeInstanceRef
|
|
57
58
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, TransmissionAcknowledgementRequest
|
|
58
59
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
|
|
60
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, CompositionSwComponentType, PortGroup, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
|
|
59
61
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components.InstanceRefs import InnerPortGroupInCompositionInstanceRef, PModeGroupInAtomicSwcInstanceRef, RModeGroupInAtomicSWCInstanceRef, RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
60
62
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, RunnableEntityArgument, SwcInternalBehavior
|
|
63
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AutosarVariableRef import AutosarVariableRef
|
|
61
64
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import RoleBasedPortAssignment, SwcServiceDependency
|
|
62
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AbstractProvidedPortPrototype, AbstractRequiredPortPrototype, CompositionSwComponentType, PortGroup, SwComponentType, SymbolProps, PPortPrototype, RPortPrototype
|
|
63
65
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition import AssemblySwConnector, DelegationSwConnector
|
|
64
66
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
|
|
65
67
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
66
68
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, ReceiverComSpec, SenderComSpec, ServerComSpec
|
|
67
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, SenderReceiverInterface
|
|
69
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, DataPrototypeMapping, InvalidationPolicy, ModeSwitchInterface, ParameterInterface, PortInterface, PortInterfaceMappingSet, SenderReceiverInterface, VariableAndParameterInterfaceMapping
|
|
68
70
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
|
|
69
71
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype, AutosarDataPrototype, DataPrototype, ParameterDataPrototype, VariableDataPrototype
|
|
70
72
|
|
|
@@ -73,12 +75,16 @@ from ..models.M2.AUTOSARTemplates.SystemTemplate.DataMapping import SenderReceiv
|
|
|
73
75
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import CanNmCluster, CanNmClusterCoupling, CanNmNode, NmCluster, NmConfig, NmNode
|
|
74
76
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef, VariableDataPrototypeInSystemInstanceRef
|
|
75
77
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import LinFrameTriggering
|
|
76
|
-
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, FramePort, IPduPort, ISignalPort, LinPhysicalChannel, PhysicalChannel
|
|
78
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import AbstractCanCluster, CanPhysicalChannel, CommConnectorPort, CommunicationCluster, CommunicationConnector, EthernetPhysicalChannel, FramePort, IPduPort, ISignalPort, LinPhysicalChannel, PhysicalChannel
|
|
77
79
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import Frame, FrameTriggering, IPdu, IPduTiming, ISignalIPdu, ISignalTriggering, PduTriggering
|
|
78
80
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import CyclicTiming, EventControlledTiming, TimeRangeType, TransmissionModeCondition, TransmissionModeDeclaration, TransmissionModeTiming
|
|
79
81
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import EcuInstance
|
|
80
82
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import CanFrameTriggering, RxIdentifierRange
|
|
81
83
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import CanCommunicationConnector, CanCommunicationController
|
|
84
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology import EthernetCommunicationController
|
|
85
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import SocketConnection, SocketConnectionBundle, SocketConnectionIpduIdentifier
|
|
86
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import Ipv6Configuration, NetworkEndpoint
|
|
87
|
+
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import SoAdConfig, SocketAddress
|
|
82
88
|
from ..models.M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import ISignalMapping
|
|
83
89
|
|
|
84
90
|
from .abstract_arxml_parser import AbstractARXMLParser
|
|
@@ -114,7 +120,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
114
120
|
return sdg
|
|
115
121
|
|
|
116
122
|
def readSdgs(self, element: ET.Element, admin_data: AdminData):
|
|
117
|
-
for child_element in self.findall(element, "
|
|
123
|
+
for child_element in self.findall(element, "SDGS/SDG"):
|
|
118
124
|
admin_data.addSdg(self.getSdg(child_element))
|
|
119
125
|
|
|
120
126
|
def getAdminData(self, element: ET.Element, key: str) -> AdminData:
|
|
@@ -146,7 +152,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
146
152
|
identifiable.setAdminData(self.getAdminData(element, "ADMIN-DATA"))
|
|
147
153
|
|
|
148
154
|
def readLLongName(self, element: ET.Element, long_name: MultilanguageLongName):
|
|
149
|
-
for child_element in self.findall(element, "
|
|
155
|
+
for child_element in self.findall(element, "L-4"):
|
|
150
156
|
l4 = LLongName()
|
|
151
157
|
self.readARObjectAttributes(child_element, l4)
|
|
152
158
|
l4.value = child_element.text
|
|
@@ -156,7 +162,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
156
162
|
|
|
157
163
|
def getMultilanguageLongName(self, element: ET.Element, key: str) -> MultilanguageLongName:
|
|
158
164
|
long_name = None
|
|
159
|
-
child_element = self.find(element, "
|
|
165
|
+
child_element = self.find(element, "%s" % key)
|
|
160
166
|
if child_element is not None:
|
|
161
167
|
long_name = MultilanguageLongName()
|
|
162
168
|
self.readARObjectAttributes(child_element, long_name)
|
|
@@ -164,7 +170,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
164
170
|
return long_name
|
|
165
171
|
|
|
166
172
|
def readLOverviewParagraph(self, element: ET.Element, paragraph: MultiLanguageOverviewParagraph):
|
|
167
|
-
for child_element in self.findall(element, "
|
|
173
|
+
for child_element in self.findall(element, "L-2"):
|
|
168
174
|
l2 = LOverviewParagraph()
|
|
169
175
|
self.readARObjectAttributes(child_element, l2)
|
|
170
176
|
l2.value = child_element.text
|
|
@@ -174,7 +180,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
174
180
|
|
|
175
181
|
def getMultiLanguageOverviewParagraph(self, element: ET.Element, key: str) -> MultiLanguageOverviewParagraph:
|
|
176
182
|
paragraph = None
|
|
177
|
-
child_element =
|
|
183
|
+
child_element = self.find(element, key)
|
|
178
184
|
if child_element is not None:
|
|
179
185
|
paragraph = MultiLanguageOverviewParagraph()
|
|
180
186
|
self.readARObjectAttributes(child_element, paragraph)
|
|
@@ -200,16 +206,18 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
200
206
|
iref.setTargetComponentRef(self.getChildElementOptionalRefType(element, "TARGET-COMPONENT-REF"))
|
|
201
207
|
return iref
|
|
202
208
|
|
|
203
|
-
def
|
|
204
|
-
child_element = self.find(element,
|
|
209
|
+
def getAutosarVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
|
|
210
|
+
child_element = self.find(element, key)
|
|
205
211
|
ref = None
|
|
206
212
|
if (child_element is not None):
|
|
207
213
|
ref = AutosarVariableRef()
|
|
208
|
-
|
|
214
|
+
#self.readARObjectAttributes(child_element, ref)
|
|
215
|
+
ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF"))) \
|
|
216
|
+
.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
|
|
209
217
|
return ref
|
|
210
218
|
|
|
211
|
-
def getLocalVariableRef(self, element: ET.Element) -> AutosarVariableRef:
|
|
212
|
-
child_element = self.find(element,
|
|
219
|
+
def getLocalVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
|
|
220
|
+
child_element = self.find(element, key)
|
|
213
221
|
ref = None
|
|
214
222
|
if (child_element is not None):
|
|
215
223
|
ref = AutosarVariableRef()
|
|
@@ -217,34 +225,34 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
217
225
|
return ref
|
|
218
226
|
|
|
219
227
|
def _readVariableAccesses(self, element: ET.Element, parent: RunnableEntity, key: str):
|
|
220
|
-
for child_element in
|
|
228
|
+
for child_element in self.findall(element, "%s/VARIABLE-ACCESS" % key):
|
|
221
229
|
short_name = self.getShortName(child_element)
|
|
222
230
|
|
|
223
231
|
self.logger.debug("readVariableAccesses %s" % short_name)
|
|
224
232
|
|
|
225
233
|
if (key == "DATA-RECEIVE-POINT-BY-ARGUMENTS"):
|
|
226
234
|
variable_access = parent.createDataReceivePointByArgument(short_name)
|
|
227
|
-
variable_access.setAccessedVariableRef(self.
|
|
235
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
228
236
|
elif (key == "DATA-RECEIVE-POINT-BY-VALUES"):
|
|
229
237
|
variable_access = parent.createDataReceivePointByValue(short_name)
|
|
230
|
-
variable_access.setAccessedVariableRef(self.
|
|
238
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
231
239
|
elif (key == "DATA-READ-ACCESSS"):
|
|
232
240
|
variable_access = parent.createDataReadAccess(short_name)
|
|
233
|
-
variable_access.setAccessedVariableRef(self.
|
|
241
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
234
242
|
elif (key == "DATA-WRITE-ACCESSS"):
|
|
235
243
|
variable_access = parent.createDataWriteAccess(short_name)
|
|
236
|
-
variable_access.setAccessedVariableRef(self.
|
|
244
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
237
245
|
elif (key == "DATA-SEND-POINTS"):
|
|
238
246
|
variable_access = parent.createDataSendPoint(short_name)
|
|
239
|
-
variable_access.setAccessedVariableRef(self.
|
|
247
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
240
248
|
elif (key == "WRITTEN-LOCAL-VARIABLES"):
|
|
241
249
|
variable_access = parent.createWrittenLocalVariable(short_name)
|
|
242
|
-
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element))
|
|
250
|
+
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
243
251
|
elif (key == "READ-LOCAL-VARIABLES"):
|
|
244
252
|
variable_access = parent.createReadLocalVariable(short_name)
|
|
245
|
-
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element))
|
|
253
|
+
variable_access.setAccessedVariableRef(self.getLocalVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
246
254
|
else:
|
|
247
|
-
self.
|
|
255
|
+
self.notImplemented("Unsupported Variable Accesss <%s>" % key)
|
|
248
256
|
|
|
249
257
|
self.readIdentifiable(child_element, variable_access)
|
|
250
258
|
|
|
@@ -286,71 +294,45 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
286
294
|
.setSwAddrMethodRef(self.getChildElementOptionalRefType(element, "SW-ADDR-METHOD-REF"))
|
|
287
295
|
|
|
288
296
|
def readBswModuleEntityManagedModeGroup(self, element: ET.Element, entity: BswModuleEntity):
|
|
289
|
-
for child_element in self.findall(element, "
|
|
297
|
+
for child_element in self.findall(element, "sMANAGED-MODE-GROUPS/MODE-DECLARATION-GROUP-PROTOTYPE-REF-CONDITIONAL"):
|
|
290
298
|
ref_type = self.getChildElementOptionalRefType(child_element, "MODE-DECLARATION-GROUP-PROTOTYPE-REF")
|
|
291
299
|
if ref_type is not None:
|
|
292
300
|
entity.addManagedModeGroupRef(ref_type)
|
|
293
301
|
|
|
294
|
-
|
|
295
|
-
self.readExecutableEntity(element, entity)
|
|
296
|
-
entity.setImplementedEntryRef(self.getChildElementRefType(entity.getShortName(), element, "IMPLEMENTED-ENTRY-REF"))
|
|
297
|
-
self.readBswModuleEntityManagedModeGroup(element, entity)
|
|
298
|
-
|
|
299
|
-
def readBswCalledEntity(self, element: ET.Element, parent: BswInternalBehavior):
|
|
300
|
-
for child_element in element.findall("./xmlns:ENTITYS/xmlns:BSW-CALLED-ENTITY", self.nsmap):
|
|
301
|
-
short_name = self.getShortName(child_element)
|
|
302
|
-
self.logger.debug("readBswCalledEntity %s" % short_name)
|
|
303
|
-
entity = parent.createBswCalledEntity(short_name)
|
|
304
|
-
|
|
305
|
-
self.readBswModuleEntity(child_element, entity)
|
|
306
|
-
|
|
307
|
-
def readBswSchedulableEntity(self, element: ET.Element, parent: BswInternalBehavior):
|
|
308
|
-
for child_element in element.findall("./xmlns:ENTITYS/xmlns:BSW-SCHEDULABLE-ENTITY", self.nsmap):
|
|
309
|
-
short_name = self.getShortName(child_element)
|
|
310
|
-
self.logger.debug("readBswSchedulableEntity %s" % short_name)
|
|
311
|
-
entity = parent.createBswSchedulableEntity(short_name)
|
|
312
|
-
self.readBswModuleEntity(child_element, entity)
|
|
302
|
+
|
|
313
303
|
|
|
314
304
|
def readBswEvent(self, element: ET.Element, event: BswScheduleEvent):
|
|
315
|
-
event.startsOnEventRef = self.
|
|
305
|
+
event.startsOnEventRef = self.getChildElementOptionalRefType(element, "STARTS-ON-EVENT-REF")
|
|
316
306
|
|
|
317
307
|
def readBswScheduleEvent(self, element, event: BswScheduleEvent):
|
|
318
308
|
self.readBswEvent(element, event)
|
|
319
309
|
|
|
320
|
-
def readBswModeSwitchEvent(self, element: ET.Element,
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
self.logger.
|
|
332
|
-
|
|
333
|
-
event.
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
def readBswInternalTriggerOccurredEvent(self, element: ET.Element, parent: BswInternalBehavior):
|
|
347
|
-
for child_element in self.findall(element, "EVENTS/BSW-INTERNAL-TRIGGER-OCCURRED-EVENT"):
|
|
348
|
-
short_name = self.getShortName(child_element)
|
|
349
|
-
self.logger.debug("readBswInternalTriggerOccurredEvent %s" % short_name)
|
|
350
|
-
event = parent.createBswInternalTriggerOccurredEvent(short_name)
|
|
351
|
-
event.eventSourceRef = self.getChildElementRefType(parent.getShortName(), child_element, "EVENT-SOURCE-REF")
|
|
352
|
-
# Read the Inherit BswScheduleEvent
|
|
353
|
-
self.readBswScheduleEvent(child_element, event)
|
|
310
|
+
def readBswModeSwitchEvent(self, element: ET.Element, event: BswModeSwitchEvent):
|
|
311
|
+
self.logger.debug("read BswModeSwitchEvent %s" % event.getShortName())
|
|
312
|
+
# Read the Inherit BswScheduleEvent
|
|
313
|
+
self.readBswScheduleEvent(element, event)
|
|
314
|
+
|
|
315
|
+
def readBswTimingEvent(self, element: ET.Element, event: BswTimingEvent):
|
|
316
|
+
self.logger.debug("read BswTimingEvent %s" % event.getShortName())
|
|
317
|
+
# Read the Inherit BswScheduleEvent
|
|
318
|
+
self.readBswScheduleEvent(element, event)
|
|
319
|
+
event.setPeriod(self.getChildElementOptionalTimeValue(element, "PERIOD"))
|
|
320
|
+
if event.getPeriod() is None:
|
|
321
|
+
self.logger.warning("Period of BswTimingEvent <%s> is invalid." % event.getShortName())
|
|
322
|
+
else:
|
|
323
|
+
self.logger.debug(" Period: <%f, %s>" % (event.getPeriod().getValue(), event.getPeriod().getText()))
|
|
324
|
+
|
|
325
|
+
def readBswDataReceivedEvent(self, element: ET.Element, event: BswDataReceivedEvent):
|
|
326
|
+
self.logger.debug("read BswTimingEvent %s" % event.getShortName())
|
|
327
|
+
# Read the Inherit BswScheduleEvent
|
|
328
|
+
self.readBswScheduleEvent(element, event)
|
|
329
|
+
event.setDataRef(self.getChildElementOptionalRefType(element, "DATA-REF"))
|
|
330
|
+
|
|
331
|
+
def readBswInternalTriggerOccurredEvent(self, element: ET.Element, event: BswInternalTriggerOccurredEvent):
|
|
332
|
+
self.logger.debug("read BswTimingEvent %s" % event.getShortName())
|
|
333
|
+
# Read the Inherit BswScheduleEvent
|
|
334
|
+
self.readBswScheduleEvent(element, event)
|
|
335
|
+
event.setEventSourceRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
|
|
354
336
|
|
|
355
337
|
def getBswModeSenderPolicy(self, element: ET.Element) -> BswModeSenderPolicy:
|
|
356
338
|
policy = BswModeSenderPolicy()
|
|
@@ -367,13 +349,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
367
349
|
self._raiseError("Unsupported ModeSenderPolicy type <%s>." % tag_name)
|
|
368
350
|
|
|
369
351
|
def readDataTypeMappingRefs(self, element: ET.Element, behavior: InternalBehavior):
|
|
370
|
-
child_element =
|
|
352
|
+
child_element = self.find(element, "DATA-TYPE-MAPPING-REFS")
|
|
371
353
|
if child_element is not None:
|
|
372
|
-
for ref in self.getChildElementRefTypeList(child_element, "
|
|
354
|
+
for ref in self.getChildElementRefTypeList(child_element, "DATA-TYPE-MAPPING-REF"):
|
|
373
355
|
behavior.addDataTypeMappingRef(ref)
|
|
374
356
|
|
|
375
357
|
def readInternalBehaviorConstantMemories(self, element: ET.Element, behavior: InternalBehavior):
|
|
376
|
-
for child_element in
|
|
358
|
+
for child_element in self.findall(element, "CONSTANT-MEMORYS/PARAMETER-DATA-PROTOTYPE"):
|
|
377
359
|
short_name = self.getShortName(child_element)
|
|
378
360
|
prototype = behavior.createConstantMemory(short_name)
|
|
379
361
|
self.readParameterDataPrototype(child_element, prototype)
|
|
@@ -381,7 +363,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
381
363
|
def readInternalBehavior(self, element: ET.Element, behavior: InternalBehavior):
|
|
382
364
|
self.readIdentifiable(element, behavior)
|
|
383
365
|
self.readInternalBehaviorConstantMemories(element, behavior)
|
|
384
|
-
for child_element in
|
|
366
|
+
for child_element in self.findall(element, "EXCLUSIVE-AREAS/EXCLUSIVE-AREA"):
|
|
385
367
|
short_name = self.getShortName(child_element)
|
|
386
368
|
behavior.createExclusiveArea(short_name)
|
|
387
369
|
self.readDataTypeMappingRefs(element, behavior)
|
|
@@ -389,6 +371,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
389
371
|
def getRoleBasedDataAssignment(self, element: ET.Element) -> RoleBasedDataAssignment:
|
|
390
372
|
assignment = RoleBasedDataAssignment()
|
|
391
373
|
assignment.setRole(self.getChildElementOptionalLiteral(element, "ROLE")) \
|
|
374
|
+
.setUsedDataElement(self.getAutosarVariableRef(element, "USED-DATA-ELEMENT")) \
|
|
392
375
|
.setUsedParameterElement(self.getAutosarParameterRef(element, "USED-PARAMETER-ELEMENT")) \
|
|
393
376
|
.setUsedPimRef(self.getChildElementOptionalRefType(element, "USED-PIM-REF"))
|
|
394
377
|
return assignment
|
|
@@ -423,7 +406,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
423
406
|
self._raiseError("Unsupported assigned data <%s>" % tag_name)
|
|
424
407
|
|
|
425
408
|
def readSwcServiceDependencyAssignedPorts(self, element: ET.Element, dependency: SwcServiceDependency):
|
|
426
|
-
for child_element in
|
|
409
|
+
for child_element in self.findall(element, "ASSIGNED-PORTS/*"):
|
|
427
410
|
tag_name = self.getTagName(child_element.tag)
|
|
428
411
|
if (tag_name == "ROLE-BASED-PORT-ASSIGNMENT"):
|
|
429
412
|
dependency.AddAssignedPort(self.getRoleBasedPortAssignment(child_element))
|
|
@@ -434,6 +417,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
434
417
|
short_name = self.getShortName(element)
|
|
435
418
|
needs = parent.createNvBlockNeeds(short_name)
|
|
436
419
|
self.logger.debug("read NvBlockNeeds %s" % short_name)
|
|
420
|
+
self.readIdentifiable(element, needs)
|
|
437
421
|
needs.setCalcRamBlockCrc(self.getChildElementOptionalBooleanValue(element, "CALC-RAM-BLOCK-CRC")) \
|
|
438
422
|
.setCheckStaticBlockId(self.getChildElementOptionalBooleanValue(element, "CHECK-STATIC-BLOCK-ID")) \
|
|
439
423
|
.setNDataSets(self.getChildElementOptionalNumericalValue(element, "N-DATA-SETS")) \
|
|
@@ -451,18 +435,21 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
451
435
|
.setUseCRCCompMechanism(self.getChildElementOptionalBooleanValue(element, "USE-CRC-COMP-MECHANISM")) \
|
|
452
436
|
.setWriteOnlyOnce(self.getChildElementOptionalBooleanValue(element, "WRITE-ONLY-ONCE")) \
|
|
453
437
|
.setWriteVerification(self.getChildElementOptionalBooleanValue(element, "WRITE-VERIFICATION")) \
|
|
438
|
+
.setWritingFrequency(self.getChildElementOptionalPositiveInteger(element, "WRITING-FREQUENCY")) \
|
|
454
439
|
.setWritingPriority(self.getChildElementOptionalLiteral(element, "WRITING-PRIORITY"))
|
|
455
440
|
|
|
456
441
|
def reaDiagnosticCommunicationManagerNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
457
442
|
short_name = self.getShortName(element)
|
|
458
443
|
needs = parent.createDiagnosticCommunicationManagerNeeds(short_name)
|
|
459
444
|
self.logger.debug("read DiagnosticCommunicationManagerNeeds %s" % short_name)
|
|
445
|
+
self.readIdentifiable(element, needs)
|
|
460
446
|
needs.setServiceRequestCallbackType(self.getChildElementOptionalLiteral(element, "SERVICE-REQUEST-CALLBACK-TYPE"))
|
|
461
447
|
|
|
462
448
|
def readDiagnosticRoutineNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
463
449
|
short_name = self.getShortName(element)
|
|
464
450
|
needs = parent.createDiagnosticRoutineNeeds(short_name)
|
|
465
451
|
self.logger.debug("read DiagnosticRoutineNeeds %s" % short_name)
|
|
452
|
+
self.readIdentifiable(element, needs)
|
|
466
453
|
needs.setDiagRoutineType(self.getChildElementOptionalLiteral(element, "DIAG-ROUTINE-TYPE")) \
|
|
467
454
|
.setRidNumber(self.getChildElementOptionalIntegerValue(element, "RID-NUMBER"))
|
|
468
455
|
|
|
@@ -470,6 +457,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
470
457
|
short_name = self.getShortName(element)
|
|
471
458
|
needs = parent.createDiagnosticValueNeeds(short_name)
|
|
472
459
|
self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
|
|
460
|
+
self.readIdentifiable(element, needs)
|
|
473
461
|
needs.setDataLength(self.getChildElementOptionalPositiveInteger(element, "DATA-LENGTH")) \
|
|
474
462
|
.setDiagnosticValueAccess(self.getChildElementOptionalLiteral(element, "DIAGNOSTIC-VALUE-ACCESS")) \
|
|
475
463
|
.setDidNumber(self.getChildElementOptionalIntegerValue(element, "DID-NUMBER")) \
|
|
@@ -491,20 +479,34 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
491
479
|
def readDiagnosticEventNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
492
480
|
short_name = self.getShortName(element)
|
|
493
481
|
needs = parent.createDiagnosticEventNeeds(short_name)
|
|
494
|
-
self.logger.debug("
|
|
495
|
-
|
|
482
|
+
self.logger.debug("Read DiagnosticEventNeeds %s" % short_name)
|
|
483
|
+
self.readIdentifiable(element, needs)
|
|
496
484
|
self.readDiagEventDebounceAlgorithm(element, needs)
|
|
497
485
|
needs.setDtcKind(self.getChildElementOptionalLiteral(element, "DTC-KIND")) \
|
|
498
|
-
.setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
|
|
486
|
+
.setUdsDtcNumber(self.getChildElementOptionalIntegerValue(element, "UDS-DTC-NUMBER"))
|
|
487
|
+
|
|
488
|
+
def readDiagnosticEventInfoNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
489
|
+
short_name = self.getShortName(element)
|
|
490
|
+
needs = parent.createDiagnosticEventInfoNeeds(short_name)
|
|
491
|
+
self.logger.debug("Read DiagnosticEventInfoNeeds %s" % short_name)
|
|
492
|
+
self.readIdentifiable(element, needs)
|
|
493
|
+
needs.setUdsDtcNumber(self.getChildElementOptionalPositiveInteger(element, "UDS-DTC-NUMBER"))
|
|
499
494
|
|
|
500
495
|
def readCryptoServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
501
496
|
short_name = self.getShortName(element)
|
|
502
497
|
needs = parent.createCryptoServiceNeeds(short_name)
|
|
503
|
-
self.logger.debug("
|
|
498
|
+
self.logger.debug("Read DiagnosticValueNeeds %s" % short_name)
|
|
499
|
+
self.readIdentifiable(element, needs)
|
|
504
500
|
needs.setMaximumKeyLength(self.getChildElementOptionalPositiveInteger(element, "MAXIMUM-KEY-LENGTH"))
|
|
505
501
|
|
|
502
|
+
def readEcuStateMgrUserNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
503
|
+
short_name = self.getShortName(element)
|
|
504
|
+
needs = parent.createEcuStateMgrUserNeeds(short_name)
|
|
505
|
+
self.logger.debug("read DiagnosticValueNeeds %s" % short_name)
|
|
506
|
+
self.readIdentifiable(element, needs)
|
|
507
|
+
|
|
506
508
|
def readSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
|
|
507
|
-
for child_element in
|
|
509
|
+
for child_element in self.findall(element, "SERVICE-NEEDS/*"):
|
|
508
510
|
tag_name = self.getTagName(child_element.tag)
|
|
509
511
|
if tag_name == "NV-BLOCK-NEEDS":
|
|
510
512
|
self.readNvBlockNeeds(child_element, parent)
|
|
@@ -516,40 +518,56 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
516
518
|
self.readDiagnosticValueNeeds(child_element, parent)
|
|
517
519
|
elif tag_name == "DIAGNOSTIC-EVENT-NEEDS":
|
|
518
520
|
self.readDiagnosticEventNeeds(child_element, parent)
|
|
521
|
+
elif tag_name == "DIAGNOSTIC-EVENT-INFO-NEEDS":
|
|
522
|
+
self.readDiagnosticEventInfoNeeds(child_element, parent)
|
|
519
523
|
elif tag_name == "CRYPTO-SERVICE-NEEDS":
|
|
520
524
|
self.readCryptoServiceNeeds(child_element, parent)
|
|
525
|
+
elif tag_name == "ECU-STATE-MGR-USER-NEEDS":
|
|
526
|
+
self.readEcuStateMgrUserNeeds(child_element, parent)
|
|
521
527
|
else:
|
|
522
528
|
self.notImplemented("Unsupported service needs <%s>" % tag_name)
|
|
523
529
|
|
|
524
530
|
def readSwcServiceDependency(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
525
531
|
short_name = self.getShortName(element)
|
|
526
532
|
dependency = parent.createSwcServiceDependency(short_name)
|
|
527
|
-
self.logger.debug("
|
|
533
|
+
self.logger.debug("read SwcServiceDependency %s" % short_name)
|
|
528
534
|
self.readServiceDependency(element, dependency)
|
|
529
535
|
self.readSwcServiceDependencyAssignedData(element, dependency)
|
|
530
536
|
self.readSwcServiceDependencyAssignedPorts(element, dependency)
|
|
531
537
|
self.readSwcServiceDependencyServiceNeeds(element, dependency)
|
|
532
538
|
|
|
533
539
|
def readSwcInternalBehaviorServiceDependencies(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
534
|
-
for child_element in
|
|
540
|
+
for child_element in self.findall(element, "SERVICE-DEPENDENCYS/*"):
|
|
535
541
|
tag_name = self.getTagName(child_element.tag)
|
|
536
542
|
if (tag_name == "SWC-SERVICE-DEPENDENCY"):
|
|
537
543
|
self.readSwcServiceDependency(child_element, parent)
|
|
538
544
|
else:
|
|
539
|
-
self.
|
|
545
|
+
self.notImplemented("Unsupported Service Dependencies <%s>" % tag_name)
|
|
540
546
|
|
|
541
547
|
def getIncludedDataTypeSets(self, element: ET.Element) -> List[IncludedDataTypeSet]:
|
|
542
548
|
include_data_type_sets = []
|
|
543
|
-
for child_element in self.findall(element, "
|
|
549
|
+
for child_element in self.findall(element, "INCLUDED-DATA-TYPE-SETS/INCLUDED-DATA-TYPE-SET"):
|
|
544
550
|
include_data_type_set = IncludedDataTypeSet()
|
|
545
551
|
self.readARObjectAttributes(child_element, include_data_type_set)
|
|
546
|
-
for ref_type in self.getChildElementRefTypeList(child_element, "
|
|
552
|
+
for ref_type in self.getChildElementRefTypeList(child_element, "DATA-TYPE-REFS/DATA-TYPE-REF"):
|
|
547
553
|
include_data_type_set.addDataTypeRef(ref_type)
|
|
548
554
|
include_data_type_sets.append(include_data_type_set)
|
|
549
555
|
return include_data_type_sets
|
|
556
|
+
|
|
557
|
+
def readSwcInternalBehaviorArTypedPerInstanceMemories(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
558
|
+
for child_element in self.findall(element, "AR-TYPED-PER-INSTANCE-MEMORYS/VARIABLE-DATA-PROTOTYPE"):
|
|
559
|
+
short_name = self.getShortName(child_element)
|
|
560
|
+
prototype = parent.createArTypedPerInstanceMemory(short_name)
|
|
561
|
+
self.readVariableDataPrototype(child_element, prototype)
|
|
562
|
+
|
|
563
|
+
def readSwcInternalBehaviorSharedParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
564
|
+
for child_element in self.findall(element, "SHARED-PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
565
|
+
short_name = self.getShortName(child_element)
|
|
566
|
+
prototype = behavior.createSharedParameter(short_name)
|
|
567
|
+
self.readParameterDataPrototype(child_element, prototype)
|
|
550
568
|
|
|
551
569
|
def readSwcInternalBehavior(self, element: ET.Element, parent: AtomicSwComponentType):
|
|
552
|
-
for child_element in self.findall(element, "
|
|
570
|
+
for child_element in self.findall(element, "INTERNAL-BEHAVIORS/SWC-INTERNAL-BEHAVIOR"):
|
|
553
571
|
short_name = self.getShortName(child_element)
|
|
554
572
|
behavior = parent.createSwcInternalBehavior(short_name)
|
|
555
573
|
self.logger.debug("readSwcInternalBehavior %s" % behavior.full_name)
|
|
@@ -558,41 +576,90 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
558
576
|
self.readInternalBehavior(child_element, behavior)
|
|
559
577
|
|
|
560
578
|
# read the extra SwcInternalBehavior
|
|
579
|
+
self.readSwcInternalBehaviorArTypedPerInstanceMemories(child_element, behavior)
|
|
561
580
|
self.readSwcInternalBehaviorRunnables(child_element, behavior)
|
|
562
581
|
self.readSwcInternalBehaviorEvents(child_element, behavior)
|
|
563
582
|
self.readSwcInternalBehaviorServiceDependencies(child_element, behavior)
|
|
564
583
|
self.readExplicitInterRunnableVariables(child_element, behavior)
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
behavior.handle_termination_and_restart = self.getChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART")
|
|
584
|
+
|
|
585
|
+
behavior.setHandleTerminationAndRestart(self.getChildElementOptionalLiteral(child_element, "HANDLE-TERMINATION-AND-RESTART"))
|
|
568
586
|
self.readPerInstanceMemories(child_element, behavior)
|
|
569
587
|
self.readPerInstanceParameters(child_element, behavior)
|
|
570
588
|
self.readPortAPIOptions(child_element, behavior)
|
|
571
|
-
|
|
589
|
+
self.readSwcInternalBehaviorSharedParameters(child_element, behavior)
|
|
590
|
+
behavior.setSupportsMultipleInstantiation(self.getChildElementOptionalBooleanValue(child_element, "SUPPORTS-MULTIPLE-INSTANTIATION"))
|
|
572
591
|
|
|
573
592
|
def getIncludedModeDeclarationGroupSets(self, element: ET.Element) -> List[IncludedModeDeclarationGroupSet]:
|
|
574
593
|
group_sets = []
|
|
575
594
|
for child_element in self.findall(element, "INCLUDED-MODE-DECLARATION-GROUP-SETS/INCLUDED-MODE-DECLARATION-GROUP-SET"):
|
|
576
595
|
group_set = IncludedModeDeclarationGroupSet()
|
|
577
|
-
for ref_type in self.getChildElementRefTypeList(child_element, "
|
|
596
|
+
for ref_type in self.getChildElementRefTypeList(child_element, "MODE-DECLARATION-GROUP-REFS/MODE-DECLARATION-GROUP-REF"):
|
|
578
597
|
group_set.addModeDeclarationGroupRef(ref_type)
|
|
579
598
|
group_sets.append(group_set)
|
|
580
599
|
return group_sets
|
|
600
|
+
|
|
601
|
+
def readBswModuleEntity(self, element: ET.Element, entity: BswModuleEntity):
|
|
602
|
+
self.readExecutableEntity(element, entity)
|
|
603
|
+
entity.setImplementedEntryRef(self.getChildElementRefType(entity.getShortName(), element, "IMPLEMENTED-ENTRY-REF"))
|
|
604
|
+
self.readBswModuleEntityManagedModeGroup(element, entity)
|
|
605
|
+
|
|
606
|
+
def readBswCalledEntity(self, element: ET.Element, entity: BswCalledEntity):
|
|
607
|
+
self.logger.debug("read BswCalledEntity %s" % entity.getShortName())
|
|
608
|
+
self.readBswModuleEntity(element, entity)
|
|
609
|
+
|
|
610
|
+
def readBswSchedulableEntity(self, element: ET.Element, entity: BswSchedulableEntity):
|
|
611
|
+
self.logger.debug("read BswSchedulableEntity %s" % entity.getShortName())
|
|
612
|
+
self.readBswModuleEntity(element, entity)
|
|
613
|
+
|
|
614
|
+
def readBswInterruptEntity(self, element: ET.Element, entity: BswInterruptEntity):
|
|
615
|
+
self.logger.debug("read BswSchedulableEntity %s" % entity.getShortName())
|
|
616
|
+
self.readBswModuleEntity(element, entity)
|
|
617
|
+
entity.setInterruptCategory(self.getChildElementOptionalLiteral(element, "INTERRUPT-CATEGORY")) \
|
|
618
|
+
.setInterruptSource(self.getChildElementOptionalLiteral(element, "INTERRUPT-SOURCE"))
|
|
619
|
+
|
|
620
|
+
def readBswInternalBehaviorEntities(self, element: ET.Element, behavior: BswInternalBehavior):
|
|
621
|
+
for child_element in self.findall(element, "ENTITYS/*"):
|
|
622
|
+
tag_name = self.getTagName(child_element)
|
|
623
|
+
if tag_name == "BSW-CALLED-ENTITY":
|
|
624
|
+
entity = behavior.createBswCalledEntity(self.getShortName(child_element))
|
|
625
|
+
self.readBswCalledEntity(child_element, entity)
|
|
626
|
+
elif tag_name == "BSW-SCHEDULABLE-ENTITY":
|
|
627
|
+
entity = behavior.createBswSchedulableEntity(self.getShortName(child_element))
|
|
628
|
+
self.readBswSchedulableEntity(child_element, entity)
|
|
629
|
+
elif tag_name == "BSW-INTERRUPT-ENTITY":
|
|
630
|
+
entity = behavior.createBswInterruptEntity(self.getShortName(child_element))
|
|
631
|
+
self.readBswInterruptEntity(child_element, entity)
|
|
632
|
+
else:
|
|
633
|
+
self.notImplemented("Unsupported BswModuleEntity <%s>" % tag_name)
|
|
634
|
+
|
|
635
|
+
def readBswInternalBehaviorEvents(self, element: ET.Element, behavior: BswInternalBehavior):
|
|
636
|
+
for child_element in self.findall(element, "EVENTS/*"):
|
|
637
|
+
tag_name = self.getTagName(child_element)
|
|
638
|
+
if tag_name == "BSW-MODE-SWITCH-EVENT":
|
|
639
|
+
event = behavior.createBswModeSwitchEvent(self.getShortName(child_element))
|
|
640
|
+
self.readBswModeSwitchEvent(child_element, event)
|
|
641
|
+
elif tag_name == "BSW-TIMING-EVENT":
|
|
642
|
+
event = behavior.createBswTimingEvent(self.getShortName(child_element))
|
|
643
|
+
self.readBswTimingEvent(child_element, event)
|
|
644
|
+
elif tag_name == "BSW-DATA-RECEIVED-EVENT":
|
|
645
|
+
event = behavior.createBswDataReceivedEvent(self.getShortName(child_element))
|
|
646
|
+
self.readBswDataReceivedEvent(child_element, event)
|
|
647
|
+
elif tag_name == "BSW-INTERNAL-TRIGGER-OCCURRED-EVENT":
|
|
648
|
+
event = behavior.createBswInternalTriggerOccurredEvent(self.getShortName(child_element))
|
|
649
|
+
self.readBswInternalTriggerOccurredEvent(child_element, event)
|
|
650
|
+
else:
|
|
651
|
+
self.notImplemented("Unsupported BswModuleEntity <%s>" % tag_name)
|
|
581
652
|
|
|
582
653
|
def readBswInternalBehavior(self, element: ET.Element, parent: BswModuleDescription):
|
|
583
|
-
for child_element in
|
|
654
|
+
for child_element in self.findall(element, "INTERNAL-BEHAVIORS/BSW-INTERNAL-BEHAVIOR"):
|
|
584
655
|
short_name = self.getShortName(child_element)
|
|
585
656
|
behavior = parent.createBswInternalBehavior(short_name)
|
|
586
|
-
self.logger.debug("
|
|
657
|
+
self.logger.debug("read BswInternalBehavior %s" % behavior.full_name)
|
|
587
658
|
|
|
588
659
|
# read the internal behavior
|
|
589
660
|
self.readInternalBehavior(child_element, behavior)
|
|
590
|
-
self.
|
|
591
|
-
self.
|
|
592
|
-
self.readBswModeSwitchEvent(child_element, behavior)
|
|
593
|
-
self.readBswTimingEvent(child_element, behavior)
|
|
594
|
-
self.readBswDataReceivedEvent(child_element, behavior)
|
|
595
|
-
self.readBswInternalTriggerOccurredEvent(child_element, behavior)
|
|
661
|
+
self.readBswInternalBehaviorEntities(child_element, behavior)
|
|
662
|
+
self.readBswInternalBehaviorEvents(child_element, behavior)
|
|
596
663
|
self.readBswInternalBehaviorModeSenderPolicy(child_element, behavior)
|
|
597
664
|
for group_set in self.getIncludedModeDeclarationGroupSets(child_element):
|
|
598
665
|
behavior.addIncludedModeDeclarationGroupSet(group_set)
|
|
@@ -600,27 +667,42 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
600
667
|
def readBswModuleDescription(self, element: ET.Element, parent: ARPackage):
|
|
601
668
|
short_name = self.getShortName(element)
|
|
602
669
|
bsw_module_description = parent.createBswModuleDescription(short_name)
|
|
603
|
-
bsw_module_description.
|
|
670
|
+
bsw_module_description.moduleId = self.getChildElementOptionalNumericalValue(element, "MODULE-ID")
|
|
604
671
|
|
|
605
|
-
self.logger.debug("
|
|
672
|
+
self.logger.debug("read BswModuleDescription %s" % bsw_module_description.full_name)
|
|
606
673
|
|
|
607
674
|
self.readBswModuleDescriptionImplementedEntry(element, bsw_module_description)
|
|
608
675
|
self.readProvidedModeGroup(element, bsw_module_description)
|
|
609
676
|
self.readRequiredModeGroup(element, bsw_module_description)
|
|
610
677
|
self.readBswInternalBehavior(element, bsw_module_description)
|
|
611
678
|
|
|
679
|
+
def readSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
|
|
680
|
+
self.logger.debug("Read SwServiceArg <%s>" % arg.getShortName())
|
|
681
|
+
arg.setDirection(self.getChildElementOptionalLiteral(element, "DIRECTION")) \
|
|
682
|
+
.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
683
|
+
|
|
684
|
+
def readBswModuleEntryArguments(self, element: ET.Element, entry: BswModuleEntry):
|
|
685
|
+
for child_element in self.findall(element, "ARGUMENTS/*"):
|
|
686
|
+
tag_name = self.getTagName(child_element)
|
|
687
|
+
if tag_name == "SW-SERVICE-ARG":
|
|
688
|
+
arg = entry.createArgument(self.getShortName(child_element))
|
|
689
|
+
self.readSwServiceArg(child_element, arg)
|
|
690
|
+
else:
|
|
691
|
+
self.notImplemented("Unsupported Argument <%s>" % tag_name)
|
|
692
|
+
|
|
612
693
|
def readBswModuleEntry(self, element: ET.Element, parent: ARPackage):
|
|
613
694
|
short_name = self.getShortName(element)
|
|
614
695
|
entry = parent.createBswModuleEntry(short_name)
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
entry.
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
696
|
+
self.readIdentifiable(element, entry)
|
|
697
|
+
self.readBswModuleEntryArguments(element, entry)
|
|
698
|
+
entry.setIsReentrant(self.getChildElementOptionalBooleanValue(element, "IS-REENTRANT")) \
|
|
699
|
+
.setIsSynchronous(self.getChildElementOptionalBooleanValue(element, "IS-SYNCHRONOUS")) \
|
|
700
|
+
.setServiceId(self.getChildElementOptionalNumericalValue(element, "SERVICE-ID")) \
|
|
701
|
+
.setCallType(self.getChildElementOptionalLiteral(element, "CALL-TYPE")) \
|
|
702
|
+
.setExecutionContext(self.getChildElementOptionalLiteral(element, "EXECUTION-CONTEXT")) \
|
|
703
|
+
.setSwServiceImplPolicy(self.getChildElementOptionalLiteral(element, "SW-SERVICE-IMPL-POLICY"))
|
|
621
704
|
|
|
622
|
-
|
|
623
|
-
self.logger.debug("readBswModuleEntry %s" % entry.getShortName())
|
|
705
|
+
self.logger.debug("read BswModuleEntry %s" % entry.getShortName())
|
|
624
706
|
|
|
625
707
|
def readEngineeringObject(self, element: ET.Element, engineering_obj: EngineeringObject):
|
|
626
708
|
self.readARObjectAttributes(element, engineering_obj)
|
|
@@ -634,7 +716,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
634
716
|
return obj
|
|
635
717
|
|
|
636
718
|
def readArtifactDescriptor(self, element: ET.Element, code_desc: Code):
|
|
637
|
-
for child_element in
|
|
719
|
+
for child_element in self.findall(element, "ARTIFACT-DESCRIPTORS/*"):
|
|
638
720
|
tag_name = self.getTagName(child_element.tag)
|
|
639
721
|
if tag_name == "AUTOSAR-ENGINEERING-OBJECT":
|
|
640
722
|
code_desc.addArtifactDescriptor(self.getAutosarEngineeringObject(child_element))
|
|
@@ -642,7 +724,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
642
724
|
self._raiseError("Unsupported Artifact Descriptor <%s>" % tag_name)
|
|
643
725
|
|
|
644
726
|
def readCodeDescriptor(self, element: ET.Element, impl: Implementation):
|
|
645
|
-
for child_element in
|
|
727
|
+
for child_element in self.findall(element, "CODE-DESCRIPTORS/CODE"):
|
|
646
728
|
short_name = self.getShortName(child_element)
|
|
647
729
|
self.logger.debug("readCodeDescriptor %s" % short_name)
|
|
648
730
|
code_desc = impl.createCodeDescriptor(short_name)
|
|
@@ -650,13 +732,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
650
732
|
self.readArtifactDescriptor(child_element, code_desc)
|
|
651
733
|
|
|
652
734
|
def readMemorySectionOptions(self, element: ET.Element, section: MemorySection):
|
|
653
|
-
child_element =
|
|
735
|
+
child_element = self.find(element, "OPTIONS")
|
|
654
736
|
if child_element is not None:
|
|
655
737
|
for value in self.getChildElementLiteralValueList(child_element, "OPTION"):
|
|
656
738
|
section.addOption(value)
|
|
657
739
|
|
|
658
740
|
def readMemorySections(self, element: ET.Element, consumption: ResourceConsumption):
|
|
659
|
-
for child_element in
|
|
741
|
+
for child_element in self.findall(element, "MEMORY-SECTIONS/MEMORY-SECTION"):
|
|
660
742
|
memory_section = consumption.createMemorySection(self.getShortName(child_element))
|
|
661
743
|
self.readIdentifiable(child_element, memory_section)
|
|
662
744
|
memory_section.setAlignment(self.getChildElementOptionalLiteral(child_element, "ALIGNMENT")) \
|
|
@@ -665,32 +747,48 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
665
747
|
memory_section.setSize(self.getChildElementOptionalNumericalValue(child_element, "SIZE")) \
|
|
666
748
|
.setSwAddrMethodRef(self.getChildElementOptionalRefType(child_element, "SW-ADDRMETHOD-REF")) \
|
|
667
749
|
.setSymbol(self.getChildElementOptionalLiteral(child_element, "SYMBOL"))
|
|
668
|
-
self.logger.debug("
|
|
750
|
+
self.logger.debug("read MemorySections %s" % memory_section.getShortName())
|
|
751
|
+
|
|
752
|
+
def readStackUsage(self, element: ET.Element, usage: StackUsage):
|
|
753
|
+
self.logger.debug("read StackUsage %s" % usage.getShortName())
|
|
754
|
+
self.readIdentifiable(element, usage)
|
|
755
|
+
|
|
756
|
+
def readRoughEstimateStackUsage(self, element: ET.Element, usage: RoughEstimateStackUsage):
|
|
757
|
+
self.readStackUsage(element, usage)
|
|
758
|
+
usage.setMemoryConsumption(self.getChildElementOptionalPositiveInteger(element, "MEMORY-CONSUMPTION"))
|
|
759
|
+
|
|
760
|
+
def readStackUsages(self, element: ET.Element, consumption: ResourceConsumption):
|
|
761
|
+
for child_element in self.findall(element, "STACK-USAGES/*"):
|
|
762
|
+
tag_name = self.getTagName(child_element)
|
|
763
|
+
if tag_name == "ROUGH-ESTIMATE-STACK-USAGE":
|
|
764
|
+
usage = consumption.createRoughEstimateStackUsage(self.getShortName(child_element))
|
|
765
|
+
self.readRoughEstimateStackUsage(child_element, usage)
|
|
766
|
+
else:
|
|
767
|
+
self.notImplemented("Unsupported Stack Usages: <%s>" % tag_name)
|
|
669
768
|
|
|
670
769
|
def readResourceConsumption(self, element: ET.Element, impl: Implementation):
|
|
671
|
-
child_element =
|
|
770
|
+
child_element = self.find(element, "RESOURCE-CONSUMPTION")
|
|
672
771
|
if (child_element is not None):
|
|
673
|
-
|
|
674
|
-
consumption = ResourceConsumption(impl, short_name)
|
|
772
|
+
consumption = impl.createResourceConsumption(self.getShortName(child_element))
|
|
675
773
|
self.readIdentifiable(child_element, consumption)
|
|
676
774
|
self.readMemorySections(child_element, consumption)
|
|
677
|
-
|
|
775
|
+
self.readStackUsages(child_element, consumption)
|
|
678
776
|
|
|
679
777
|
def readImplementation(self, element: ET.Element, impl: Implementation):
|
|
680
778
|
self.readIdentifiable(element, impl)
|
|
681
779
|
self.readCodeDescriptor(element, impl)
|
|
682
|
-
impl.
|
|
780
|
+
impl.setProgrammingLanguage(self.getChildElementOptionalLiteral(element, "PROGRAMMING-LANGUAGE"))
|
|
683
781
|
self.readResourceConsumption(element, impl)
|
|
684
|
-
impl.
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
782
|
+
impl.setSwVersion(self.getChildElementOptionalLiteral(element, "SW-VERSION")) \
|
|
783
|
+
.setSwcBswMappingRef(self.getChildElementOptionalRefType(element, "SWC-BSW-MAPPING-REF")) \
|
|
784
|
+
.setUsedCodeGenerator(self.getChildElementOptionalLiteral(element, "USED-CODE-GENERATOR")) \
|
|
785
|
+
.setVendorId(self.getChildElementOptionalNumericalValue(element, "VENDOR-ID"))
|
|
688
786
|
|
|
689
|
-
def readBswImplementationVendorSpecificModuleDefRefs(self, element: ET.Element,
|
|
690
|
-
child_element =
|
|
787
|
+
def readBswImplementationVendorSpecificModuleDefRefs(self, element: ET.Element, impl: BswImplementation):
|
|
788
|
+
child_element = self.find(element, "VENDOR-SPECIFIC-MODULE-DEF-REFS")
|
|
691
789
|
if child_element is not None:
|
|
692
|
-
for ref in self.getChildElementRefTypeList(child_element, "
|
|
693
|
-
|
|
790
|
+
for ref in self.getChildElementRefTypeList(child_element, "VENDOR-SPECIFIC-MODULE-DEF-REF"):
|
|
791
|
+
impl.addVendorSpecificModuleDefRef(ref)
|
|
694
792
|
|
|
695
793
|
def readBswImplementation(self, element: ET.Element, parent: ARPackage):
|
|
696
794
|
short_name = self.getShortName(element)
|
|
@@ -727,21 +825,21 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
727
825
|
argument = RunnableEntityArgument()
|
|
728
826
|
argument.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
729
827
|
return argument
|
|
730
|
-
|
|
828
|
+
|
|
731
829
|
def getAutosarParameterRef(self, element: ET.Element, key: str) -> AutosarParameterRef:
|
|
732
|
-
|
|
733
|
-
child_element =
|
|
830
|
+
parameter = None
|
|
831
|
+
child_element = self.find(element, key)
|
|
734
832
|
if child_element is not None:
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
return
|
|
833
|
+
parameter = AutosarParameterRef()
|
|
834
|
+
parameter.setLocalParameterRef(self.getChildElementOptionalRefType(child_element, "LOCAL-PARAMETER-REF"))
|
|
835
|
+
return parameter
|
|
738
836
|
|
|
739
837
|
def readParameterAccesses(self, element: ET.Element, parent: RunnableEntity):
|
|
740
|
-
for child_element in
|
|
838
|
+
for child_element in self.findall(element, "PARAMETER-ACCESSS/PARAMETER-ACCESS"):
|
|
741
839
|
short_name = self.getShortName(child_element)
|
|
742
840
|
self.logger.debug("readParameterAccesses %s" % short_name)
|
|
743
841
|
parameter_access = parent.createParameterAccess(short_name)
|
|
744
|
-
parameter_access.
|
|
842
|
+
parameter_access.setAccessedParameter(self.getAutosarParameterRef(child_element, "ACCESSED-PARAMETER"))
|
|
745
843
|
|
|
746
844
|
def readWrittenLocalVariables(self, element: ET.Element, parent: RunnableEntity):
|
|
747
845
|
self._readVariableAccesses(element, parent, "WRITTEN-LOCAL-VARIABLES")
|
|
@@ -897,7 +995,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
897
995
|
def readRTEEvent(self, element: ET.Element, event: RTEEvent):
|
|
898
996
|
self.readIdentifiable(element, event)
|
|
899
997
|
event.startOnEventRef = self.getChildElementOptionalRefType(element, "START-ON-EVENT-REF")
|
|
900
|
-
for child_element in
|
|
998
|
+
for child_element in self.findall(element, "DISABLED-MODE-IREFS/DISABLED-MODE-IREF"):
|
|
901
999
|
iref = self.getRModeInAtomicSwcInstanceRef(child_element)
|
|
902
1000
|
event.addDisabledModeIRef(iref)
|
|
903
1001
|
|
|
@@ -919,7 +1017,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
919
1017
|
def readVariableDataPrototype(self, element: ET.Element, prototype: VariableDataPrototype):
|
|
920
1018
|
self.readAutosarDataPrototype(element, prototype)
|
|
921
1019
|
prototype.setInitValue(self.getInitValue(element))
|
|
922
|
-
|
|
1020
|
+
|
|
923
1021
|
def readExplicitInterRunnableVariables(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
924
1022
|
for child_element in self.findall(element, "EXPLICIT-INTER-RUNNABLE-VARIABLES/VARIABLE-DATA-PROTOTYPE"):
|
|
925
1023
|
short_name = self.getShortName(child_element)
|
|
@@ -944,7 +1042,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
944
1042
|
self.readIdentifiable(element, prototype)
|
|
945
1043
|
self.readAutosarDataPrototype(element, prototype)
|
|
946
1044
|
prototype.setInitValue(self.getInitValue(element))
|
|
947
|
-
|
|
1045
|
+
|
|
948
1046
|
def readPerInstanceParameters(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
949
1047
|
for child_element in self.findall(element, "PER-INSTANCE-PARAMETERS/PARAMETER-DATA-PROTOTYPE"):
|
|
950
1048
|
short_name = self.getShortName(child_element)
|
|
@@ -955,16 +1053,17 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
955
1053
|
argument_value = PortDefinedArgumentValue()
|
|
956
1054
|
child_element = self.find(element, "VALUE/*")
|
|
957
1055
|
if child_element is not None:
|
|
958
|
-
argument_value.
|
|
959
|
-
argument_value.
|
|
1056
|
+
argument_value.setValue(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1057
|
+
argument_value.setValueTypeTRef(self.getChildElementOptionalRefType(element, "VALUE-TYPE-TREF"))
|
|
960
1058
|
return argument_value
|
|
961
1059
|
|
|
962
1060
|
def readPortAPIOptions(self, element: ET.Element, behavior: SwcInternalBehavior):
|
|
963
1061
|
for child_element in self.findall(element, "PORT-API-OPTIONS/PORT-API-OPTION"):
|
|
964
1062
|
option = PortAPIOption()
|
|
965
|
-
option.
|
|
966
|
-
|
|
967
|
-
|
|
1063
|
+
option.setEnableTakeAddress(self.getChildElementOptionalBooleanValue(child_element, "ENABLE-TAKE-ADDRESS")) \
|
|
1064
|
+
.setErrorHandling(self.getChildElementOptionalLiteral(child_element, "ERROR-HANDLING")) \
|
|
1065
|
+
.setIndirectAPI(self.getChildElementOptionalBooleanValue(child_element, "INDIRECT-API")) \
|
|
1066
|
+
.setPortRef(self.getChildElementOptionalRefType(child_element, "PORT-REF"))
|
|
968
1067
|
for argument_value_tag in self.findall(child_element, "PORT-ARG-VALUES/PORT-DEFINED-ARGUMENT-VALUE"):
|
|
969
1068
|
option.addPortArgValue(self.readPortDefinedArgumentValue(argument_value_tag))
|
|
970
1069
|
behavior.addPortAPIOption(option)
|
|
@@ -1026,6 +1125,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1026
1125
|
else:
|
|
1027
1126
|
self.notImplemented("Unsupported SwcInternalBehavior Event <%s>" % tag_name)
|
|
1028
1127
|
|
|
1128
|
+
def getSwPointerTargetProps(self, element: ET.Element, key: str) -> SwPointerTargetProps:
|
|
1129
|
+
child_element = self.find(element, key)
|
|
1130
|
+
props = None
|
|
1131
|
+
if child_element is not None:
|
|
1132
|
+
props = SwPointerTargetProps()
|
|
1133
|
+
props.setTargetCategory(self.getChildElementOptionalLiteral(child_element, "TARGET-CATEGORY")) \
|
|
1134
|
+
.setSwDataDefProps(self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS"))
|
|
1135
|
+
return props
|
|
1136
|
+
|
|
1029
1137
|
def readSwPointerTargetProps(self, element: ET.Element, parent: SwDataDefProps):
|
|
1030
1138
|
child_element = self.find(element, "SW-POINTER-TARGET-PROPS")
|
|
1031
1139
|
if child_element is not None:
|
|
@@ -1165,7 +1273,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1165
1273
|
def readSwDataDefProsInvalidValue(self, element: ET.Element, props: SwDataDefProps):
|
|
1166
1274
|
child_element = self.find(element, "INVALID-VALUE/*")
|
|
1167
1275
|
if child_element is not None:
|
|
1168
|
-
props.setInvalidValue(self.getValueSpecification(child_element))
|
|
1276
|
+
props.setInvalidValue(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1169
1277
|
|
|
1170
1278
|
def getSwDataDefProps(self, element: ET.Element, key: str) -> SwDataDefProps:
|
|
1171
1279
|
child_element = self.find(element, key)
|
|
@@ -1186,13 +1294,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1186
1294
|
.setSwImplPolicy(self.getChildElementOptionalLiteral(conditional_tag, "SW-IMPL-POLICY")) \
|
|
1187
1295
|
.setSwIntendedResolution(self.getChildElementOptionalNumericalValue(conditional_tag, "SW-INTENDED-RESOLUTION")) \
|
|
1188
1296
|
.setImplementationDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "IMPLEMENTATION-DATA-TYPE-REF")) \
|
|
1297
|
+
.setStepSize(self.getChildElementOptionalFloatValue(conditional_tag, "STEP-SIZE")) \
|
|
1189
1298
|
.setSwCalibrationAccess(self.getChildElementOptionalLiteral(conditional_tag, "SW-CALIBRATION-ACCESS")) \
|
|
1190
1299
|
.setSwCalprmAxisSet(self.getSwCalprmAxisSet(conditional_tag, "SW-CALPRM-AXIS-SET")) \
|
|
1300
|
+
.setSwPointerTargetProps(self.getSwPointerTargetProps(conditional_tag, "SW-POINTER-TARGET-PROPS")) \
|
|
1191
1301
|
.setSwRecordLayoutRef(self.getChildElementOptionalRefType(conditional_tag, "SW-RECORD-LAYOUT-REF")) \
|
|
1192
1302
|
.setValueAxisDataTypeRef(self.getChildElementOptionalRefType(conditional_tag, "VALUE-AXIS-DATA-TYPE-REF")) \
|
|
1193
|
-
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1303
|
+
.setUnitRef(self.getChildElementOptionalRefType(conditional_tag, "UNIT-REF"))
|
|
1194
1304
|
self.readSwDataDefProsInvalidValue(conditional_tag, sw_data_def_props)
|
|
1195
|
-
self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
1305
|
+
#self.readSwPointerTargetProps(conditional_tag, sw_data_def_props)
|
|
1196
1306
|
self.readARObjectAttributes(conditional_tag, sw_data_def_props.conditional)
|
|
1197
1307
|
return sw_data_def_props
|
|
1198
1308
|
|
|
@@ -1272,16 +1382,17 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1272
1382
|
'''
|
|
1273
1383
|
|
|
1274
1384
|
def readBaseTypeDirectDefinition(self, element: ET.Element, definition: BaseTypeDirectDefinition):
|
|
1275
|
-
definition.
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1385
|
+
definition.setBaseTypeSize(self.getChildElementOptionalNumericalValue(element, "BASE-TYPE-SIZE")) \
|
|
1386
|
+
.setBaseTypeEncoding(self.getChildElementOptionalLiteral(element, "BASE-TYPE-ENCODING")) \
|
|
1387
|
+
.setByteOrder(self.getChildElementOptionalLiteral(element, "BYTE-ORDER")) \
|
|
1388
|
+
.setMemAlignment(self.getChildElementOptionalNumericalValue(element, "MEM-ALIGNMENT")) \
|
|
1389
|
+
.setNativeDeclaration(self.getChildElementOptionalLiteral(element, "NATIVE-DECLARATION"))
|
|
1279
1390
|
|
|
1280
1391
|
def readSwBaseType(self, element: ET.Element, parent: ARPackage):
|
|
1281
1392
|
short_name = self.getShortName(element)
|
|
1282
1393
|
data_type = parent.createSwBaseType(short_name)
|
|
1283
1394
|
self.readIdentifiable(element, data_type)
|
|
1284
|
-
self.readBaseTypeDirectDefinition(element, data_type.
|
|
1395
|
+
self.readBaseTypeDirectDefinition(element, data_type.getBaseTypeDefinition())
|
|
1285
1396
|
|
|
1286
1397
|
def getApplicationCompositeElementInPortInterfaceInstanceRef(self, element: ET.Element, key:str) -> ApplicationCompositeElementInPortInterfaceInstanceRef:
|
|
1287
1398
|
child_element = self.find(element, key)
|
|
@@ -1310,7 +1421,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1310
1421
|
.setUsesEndToEndProtection(self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION"))
|
|
1311
1422
|
|
|
1312
1423
|
def getSwValues(self, element: ET.Element, key: str) -> SwValues:
|
|
1313
|
-
child_element =
|
|
1424
|
+
child_element = self.find(element, key)
|
|
1314
1425
|
if child_element is None:
|
|
1315
1426
|
return None
|
|
1316
1427
|
sw_values = SwValues()
|
|
@@ -1322,30 +1433,30 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1322
1433
|
|
|
1323
1434
|
def getValueList(self, element: ET.Element, key: str) -> ValueList:
|
|
1324
1435
|
value_list = None
|
|
1325
|
-
child_element =
|
|
1436
|
+
child_element = self.find(element, key)
|
|
1326
1437
|
if child_element is not None:
|
|
1327
1438
|
self.logger.debug("getValueList %s" % key)
|
|
1328
1439
|
value_list = ValueList()
|
|
1329
1440
|
self.readARObjectAttributes(child_element, value_list)
|
|
1330
|
-
value_list.
|
|
1441
|
+
value_list.setV(self.getChildElementOptionalFloatValue(child_element, "V"))
|
|
1331
1442
|
return value_list
|
|
1332
1443
|
|
|
1333
1444
|
def getSwValueCont(self, element: ET.Element) -> SwValueCont:
|
|
1334
1445
|
cont = None
|
|
1335
|
-
child_element =
|
|
1446
|
+
child_element = self.find(element, "SW-VALUE-CONT")
|
|
1336
1447
|
if child_element is not None:
|
|
1337
1448
|
self.logger.debug("getSwValueCont")
|
|
1338
1449
|
cont = SwValueCont()
|
|
1339
1450
|
self.readARObjectAttributes(child_element, cont)
|
|
1340
|
-
cont.
|
|
1341
|
-
|
|
1342
|
-
|
|
1451
|
+
cont.setUnitRef(self.getChildElementOptionalRefType(child_element, "UNIT-REF")) \
|
|
1452
|
+
.setSwArraysize(self.getValueList(child_element, "SW-ARRAYSIZE")) \
|
|
1453
|
+
.setSwValuesPhys(self.getSwValues(child_element, "SW-VALUES-PHYS"))
|
|
1343
1454
|
return cont
|
|
1344
1455
|
|
|
1345
1456
|
def readApplicationValueSpecification(self, element: ET.Element, value_spec: ApplicationValueSpecification):
|
|
1346
1457
|
self.readValueSpecification(element, value_spec)
|
|
1347
|
-
value_spec.
|
|
1348
|
-
|
|
1458
|
+
value_spec.setCategory(self.getChildElementOptionalLiteral(element, "CATEGORY")) \
|
|
1459
|
+
.setSwValueCont(self.getSwValueCont(element))
|
|
1349
1460
|
|
|
1350
1461
|
self.logger.debug("readApplicationValueSpecification Category %s" % value_spec.category)
|
|
1351
1462
|
|
|
@@ -1354,7 +1465,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1354
1465
|
child_element = self.find(element, "INIT-VALUE/*")
|
|
1355
1466
|
if child_element is not None:
|
|
1356
1467
|
self.logger.debug("getInitValue")
|
|
1357
|
-
value_spec = self.getValueSpecification(child_element)
|
|
1468
|
+
value_spec = self.getValueSpecification(child_element, self.getTagName(child_element))
|
|
1358
1469
|
return value_spec
|
|
1359
1470
|
|
|
1360
1471
|
def getClientComSpec(self, element: ET.Element) -> ClientComSpec:
|
|
@@ -1380,7 +1491,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1380
1491
|
def getModeSwitchReceiverComSpec(self, element: ET.Element) -> ModeSwitchReceiverComSpec:
|
|
1381
1492
|
com_spec = ModeSwitchReceiverComSpec()
|
|
1382
1493
|
self.readARObjectAttributes(element, com_spec)
|
|
1383
|
-
com_spec.
|
|
1494
|
+
com_spec.setEnhancedModeApi(self.getChildElementOptionalBooleanValue(element, "ENHANCED-MODE-API")) \
|
|
1495
|
+
.setModeGroupRef(self.getChildElementOptionalRefType(element, "MODE-GROUP-REF")) \
|
|
1496
|
+
.setSupportsAsynchronousModeSwitch(self.getChildElementOptionalBooleanValue(element, "SUPPORTS-ASYNCHRONOUS-MODE-SWITCH"))
|
|
1384
1497
|
return com_spec
|
|
1385
1498
|
|
|
1386
1499
|
def getNonqueuedReceiverComSpec(self, element: ET.Element) -> NonqueuedReceiverComSpec:
|
|
@@ -1390,6 +1503,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1390
1503
|
com_spec.setAliveTimeout(self.getChildElementOptionalFloatValue(element, "ALIVE-TIMEOUT")) \
|
|
1391
1504
|
.setEnableUpdated(self.getChildElementOptionalBooleanValue(element, "ENABLE-UPDATE")) \
|
|
1392
1505
|
.setHandleNeverReceived(self.getChildElementOptionalBooleanValue(element, "HANDLE-NEVER-RECEIVED")) \
|
|
1506
|
+
.setFilter(self.getDataFilter(element, "FILTER")) \
|
|
1393
1507
|
.setHandleTimeoutType(self.getChildElementOptionalLiteral(element, "HANDLE-TIMEOUT-TYPE")) \
|
|
1394
1508
|
.setInitValue(self.getInitValue(element))
|
|
1395
1509
|
return com_spec
|
|
@@ -1454,7 +1568,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1454
1568
|
self._raiseError("Unsupported Port Prototype <%s>" % tag_name)
|
|
1455
1569
|
|
|
1456
1570
|
def readTransmissionAcknowledgementRequest(self, element: ET.Element) -> TransmissionAcknowledgementRequest:
|
|
1457
|
-
child_element =
|
|
1571
|
+
child_element = self.find(element, "TRANSMISSION-ACKNOWLEDGE")
|
|
1458
1572
|
if (child_element is not None):
|
|
1459
1573
|
acknowledge = TransmissionAcknowledgementRequest()
|
|
1460
1574
|
self.readARObjectAttributes(child_element, acknowledge)
|
|
@@ -1464,7 +1578,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1464
1578
|
|
|
1465
1579
|
def readSenderComSpec(self, element:ET.Element, com_spec: SenderComSpec):
|
|
1466
1580
|
self.readARObjectAttributes(element, com_spec)
|
|
1467
|
-
for child_element in
|
|
1581
|
+
for child_element in self.findall(element, "COMPOSITE-NETWORK-REPRESENTATIONS/COMPOSITE-NETWORK-REPRESENTATION"):
|
|
1468
1582
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
1469
1583
|
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF")) \
|
|
1470
1584
|
.setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION")) \
|
|
@@ -1497,7 +1611,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1497
1611
|
return com_spec
|
|
1498
1612
|
|
|
1499
1613
|
def readProvidedComSpec(self, element: ET.Element, parent: PPortPrototype):
|
|
1500
|
-
for child_element in
|
|
1614
|
+
for child_element in self.findall(element, "PROVIDED-COM-SPECS/*"):
|
|
1501
1615
|
tag_name = self.getTagName(child_element.tag)
|
|
1502
1616
|
if tag_name == "NONQUEUED-SENDER-COM-SPEC":
|
|
1503
1617
|
parent.addProvidedComSpec(self.getNonqueuedSenderComSpec(child_element))
|
|
@@ -1530,7 +1644,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1530
1644
|
self.readPortGroupOuterPortRefs(element, port_group)
|
|
1531
1645
|
|
|
1532
1646
|
def readSwComponentTypePortGroups(self, element: ET.Element, parent: SwComponentType):
|
|
1533
|
-
for child_element in
|
|
1647
|
+
for child_element in self.findall(element, "PORT-GROUPS/*"):
|
|
1534
1648
|
tag_name = self.getTagName(child_element.tag)
|
|
1535
1649
|
if tag_name == "PORT-GROUP":
|
|
1536
1650
|
self.readPortGroup(child_element, parent)
|
|
@@ -1611,12 +1725,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1611
1725
|
parent.setRequesterIRef(requester_iref)
|
|
1612
1726
|
|
|
1613
1727
|
def readAssemblySwConnectors(self, element: ET.Element, parent: CompositionSwComponentType):
|
|
1614
|
-
for child_element in
|
|
1728
|
+
for child_element in self.findall(element, "CONNECTORS/ASSEMBLY-SW-CONNECTOR"):
|
|
1615
1729
|
short_name = self.getShortName(child_element)
|
|
1616
1730
|
self.logger.debug("readAssemblySwConnectors %s" % short_name)
|
|
1617
1731
|
|
|
1618
1732
|
connector = parent.createAssemblySwConnector(short_name)
|
|
1619
1733
|
self.readIdentifiable(child_element, connector)
|
|
1734
|
+
connector.setMappingRef(self.getChildElementOptionalRefType(child_element, "MAPPING-REF"))
|
|
1620
1735
|
self.readAssemblySwConnectorProviderIRef(child_element, connector)
|
|
1621
1736
|
self.readAssemblySwConnectorRequesterIRef(child_element, connector)
|
|
1622
1737
|
|
|
@@ -1749,7 +1864,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1749
1864
|
prototype.swDataDefProps = self.getSwDataDefProps(child_element, "SW-DATA-DEF-PROPS")
|
|
1750
1865
|
prototype.typeTRef = self.getChildElementOptionalRefType(child_element, "TYPE-TREF")
|
|
1751
1866
|
prototype.direction = self.getChildElementOptionalLiteral(child_element, "DIRECTION")
|
|
1752
|
-
prototype.
|
|
1867
|
+
prototype.serverArgumentImplPolicy = self.getChildElementOptionalLiteral(child_element, "SERVER-ARGUMENT-IMPL-POLICY")
|
|
1753
1868
|
parent.addArgumentDataPrototype(prototype)
|
|
1754
1869
|
|
|
1755
1870
|
def readPossibleErrorRefs(self, element: ET.Element, parent: ClientServerOperation):
|
|
@@ -1798,6 +1913,33 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1798
1913
|
self.readOperations(element, cs_interface)
|
|
1799
1914
|
self.readPossibleErrors(element, cs_interface)
|
|
1800
1915
|
|
|
1916
|
+
def getCompuConstContent(self, element: ET.Element) -> CompuConstContent:
|
|
1917
|
+
child_element = self.find(element, "*")
|
|
1918
|
+
content = None
|
|
1919
|
+
if child_element is not None:
|
|
1920
|
+
tag_name = self.getTagName(child_element)
|
|
1921
|
+
if tag_name == "VF":
|
|
1922
|
+
content = CompuConstFormulaContent()
|
|
1923
|
+
content.setVf(self.getChildElementOptionalLiteral(element, "VF"))
|
|
1924
|
+
elif tag_name == "V":
|
|
1925
|
+
content = CompuConstNumericContent()
|
|
1926
|
+
content.setV(self.getChildElementOptionalNumericalValue(element, "V"))
|
|
1927
|
+
elif tag_name == "VT":
|
|
1928
|
+
content = CompuConstTextContent()
|
|
1929
|
+
content.setVt(self.getChildElementOptionalLiteral(element, "VT"))
|
|
1930
|
+
else:
|
|
1931
|
+
self.notImplemented("Unsupported CompuConstContent <%s>" % tag_name)
|
|
1932
|
+
return content
|
|
1933
|
+
|
|
1934
|
+
def getCompuConst(self, element: ET.Element, key: str) -> CompuConst:
|
|
1935
|
+
compu_const = None
|
|
1936
|
+
child_element = self.find(element, key)
|
|
1937
|
+
if (child_element is not None):
|
|
1938
|
+
compu_const = CompuConst()
|
|
1939
|
+
self.readARObjectAttributes(child_element, compu_const)
|
|
1940
|
+
compu_const.setCompuConstContentType(self.getCompuConstContent(child_element))
|
|
1941
|
+
return compu_const
|
|
1942
|
+
|
|
1801
1943
|
def readCompuConst(self, element: ET.Element, parent: CompuScale):
|
|
1802
1944
|
child_element = self.find(element, "COMPU-CONST/VT")
|
|
1803
1945
|
if (child_element is not None):
|
|
@@ -1845,46 +1987,40 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1845
1987
|
self.readCompuScaleContents(child_element, compu_scale)
|
|
1846
1988
|
compu_scales.addCompuScale(compu_scale)
|
|
1847
1989
|
return compu_scales
|
|
1848
|
-
|
|
1849
|
-
def
|
|
1850
|
-
child_element = self.find(element,
|
|
1851
|
-
|
|
1852
|
-
compu = Compu()
|
|
1853
|
-
self.readARObjectAttributes(child_element, compu)
|
|
1854
|
-
compu.setCompuContent(self.getCompuScales(child_element))
|
|
1855
|
-
compu_method.setCompuInternalToPhys(compu)
|
|
1856
|
-
|
|
1857
|
-
def readCompuPhysToInternal(self, element: ET.Element, compu_method: CompuMethod):
|
|
1858
|
-
child_element = self.find(element, "COMPU-PHYS-TO-INTERNAL")
|
|
1990
|
+
|
|
1991
|
+
def getCompu(self, element: ET.Element, key: str) -> Compu:
|
|
1992
|
+
child_element = self.find(element, key)
|
|
1993
|
+
compu = None
|
|
1859
1994
|
if (child_element is not None):
|
|
1860
1995
|
compu = Compu()
|
|
1861
1996
|
self.readARObjectAttributes(child_element, compu)
|
|
1862
|
-
compu.setCompuContent(self.getCompuScales(child_element))
|
|
1863
|
-
|
|
1997
|
+
compu.setCompuContent(self.getCompuScales(child_element))
|
|
1998
|
+
compu.setCompuDefaultValue(self.getCompuConst(child_element, "COMPU-DEFAULT-VALUE"))
|
|
1999
|
+
return compu
|
|
1864
2000
|
|
|
1865
2001
|
def readCompuMethod(self, element: ET.Element, parent: ARPackage):
|
|
1866
2002
|
short_name = self.getShortName(element)
|
|
1867
2003
|
self.logger.debug("readCompuMethods %s" % short_name)
|
|
1868
2004
|
compu_method = parent.createCompuMethod(short_name)
|
|
1869
2005
|
self.readIdentifiable(element, compu_method)
|
|
1870
|
-
compu_method.setUnitRef(self.getChildElementOptionalRefType(element, "UNIT-REF"))
|
|
1871
|
-
|
|
1872
|
-
|
|
2006
|
+
compu_method.setUnitRef(self.getChildElementOptionalRefType(element, "UNIT-REF")) \
|
|
2007
|
+
.setCompuInternalToPhys(self.getCompu(element, "COMPU-INTERNAL-TO-PHYS")) \
|
|
2008
|
+
.setCompuPhysToInternal(self.getCompu(element, "COMPU-PHYS-TO-INTERNAL"))
|
|
1873
2009
|
|
|
1874
2010
|
def readSwcBswRunnableMappings(self, element: ET.Element, parent: SwcBswMapping):
|
|
1875
|
-
for child_element in
|
|
2011
|
+
for child_element in self.findall(element, "RUNNABLE-MAPPINGS/SWC-BSW-RUNNABLE-MAPPING"):
|
|
1876
2012
|
mapping = SwcBswRunnableMapping()
|
|
1877
|
-
mapping.
|
|
1878
|
-
|
|
2013
|
+
mapping.setBswEntityRef(self.getChildElementOptionalRefType(child_element, "BSW-ENTITY-REF")) \
|
|
2014
|
+
.setSwcRunnableRef(self.getChildElementOptionalRefType(child_element, "SWC-RUNNABLE-REF"))
|
|
1879
2015
|
parent.addRunnableMapping(mapping)
|
|
1880
2016
|
|
|
1881
2017
|
def readSwcBswMappings(self, element: ET.Element, parent: ARPackage):
|
|
1882
2018
|
short_name = self.getShortName(element)
|
|
1883
|
-
self.logger.debug("
|
|
2019
|
+
self.logger.debug("read SwcBswMappings %s" % short_name)
|
|
1884
2020
|
swc_bsw_mapping = parent.createSwcBswMapping(short_name)
|
|
1885
|
-
swc_bsw_mapping.
|
|
2021
|
+
swc_bsw_mapping.setBswBehaviorRef(self.getChildElementOptionalRefType(element, "BSW-BEHAVIOR-REF"))
|
|
1886
2022
|
self.readSwcBswRunnableMappings(element, swc_bsw_mapping)
|
|
1887
|
-
swc_bsw_mapping.
|
|
2023
|
+
swc_bsw_mapping.setSwcBehaviorRef(self.getChildElementOptionalRefType(element, "SWC-BEHAVIOR-REF"))
|
|
1888
2024
|
|
|
1889
2025
|
def readValueSpecification(self, element: ET.Element, value_spec: ValueSpecification):
|
|
1890
2026
|
self.readARObjectAttributes(element, value_spec)
|
|
@@ -1922,7 +2058,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1922
2058
|
self.readValueSpecification(element, value_spec)
|
|
1923
2059
|
child_elements = element.findall("./xmlns:ELEMENTS/*", self.nsmap)
|
|
1924
2060
|
for child_element in child_elements:
|
|
1925
|
-
value_spec.addElement(self.getValueSpecification(child_element))
|
|
2061
|
+
value_spec.addElement(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1926
2062
|
return value_spec
|
|
1927
2063
|
|
|
1928
2064
|
def getConstantReference(self, element: ET.Element) -> ConstantReference:
|
|
@@ -1932,8 +2068,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1932
2068
|
value_spec.setConstantRef(self.getChildElementOptionalRefType(element, "CONSTANT-REF"))
|
|
1933
2069
|
return value_spec
|
|
1934
2070
|
|
|
1935
|
-
def getValueSpecification(self, element: ET.Element) -> ValueSpecification:
|
|
1936
|
-
tag_name = self.getTagName(element.tag)
|
|
2071
|
+
def getValueSpecification(self, element: ET.Element, tag_name: str) -> ValueSpecification:
|
|
1937
2072
|
if tag_name == "APPLICATION-VALUE-SPECIFICATION":
|
|
1938
2073
|
value_spec = self.getApplicationValueSpecification(element)
|
|
1939
2074
|
elif tag_name == "RECORD-VALUE-SPECIFICATION":
|
|
@@ -1952,7 +2087,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1952
2087
|
|
|
1953
2088
|
def readRecordValueSpecificationFields(self, element: ET.Element, spec: RecordValueSpecification):
|
|
1954
2089
|
for child_element in element.findall("./xmlns:FIELDS/*", self.nsmap):
|
|
1955
|
-
spec.addField(self.getValueSpecification(child_element))
|
|
2090
|
+
spec.addField(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1956
2091
|
|
|
1957
2092
|
def getRecordValueSpecification(self, element: ET.Element) -> RecordValueSpecification:
|
|
1958
2093
|
value_spec = RecordValueSpecification()
|
|
@@ -1965,8 +2100,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1965
2100
|
self.logger.debug("readConstantSpecification %s" % short_name)
|
|
1966
2101
|
spec = parent.createConstantSpecification(short_name)
|
|
1967
2102
|
self.readIdentifiable(element, spec)
|
|
1968
|
-
for
|
|
1969
|
-
spec.setValueSpec(self.getValueSpecification(
|
|
2103
|
+
for child_element in self.findall(element, "VALUE-SPEC/*"):
|
|
2104
|
+
spec.setValueSpec(self.getValueSpecification(child_element, self.getTagName(child_element)))
|
|
1970
2105
|
|
|
1971
2106
|
def readInternalConstrs(self, element: ET.Element, parent: DataConstrRule):
|
|
1972
2107
|
child_element = element.find("./xmlns:INTERNAL-CONSTRS", self.nsmap)
|
|
@@ -2340,6 +2475,119 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2340
2475
|
self.readIdentifiable(element, channel)
|
|
2341
2476
|
self.readPhysicalChannel(element, channel)
|
|
2342
2477
|
|
|
2478
|
+
def getIpv6Configuration(self, element: ET.Element) -> Ipv6Configuration:
|
|
2479
|
+
configuration = None
|
|
2480
|
+
if element is not None:
|
|
2481
|
+
configuration = Ipv6Configuration()
|
|
2482
|
+
configuration.setAssignmentPriority(self.getChildElementOptionalPositiveInteger(element, "ASSIGNMENT-PRIORITY")) \
|
|
2483
|
+
.setDefaultRouter(self.getChildElementOptionalLiteral(element, "DEFAULT-ROUTER")) \
|
|
2484
|
+
.setEnableAnycast(self.getChildElementOptionalBooleanValue(element, "ENABLE-ANYCAST")) \
|
|
2485
|
+
.setHopCount(self.getChildElementOptionalPositiveInteger(element, "HOP-COUNT")) \
|
|
2486
|
+
.setIpAddressPrefixLength(self.getChildElementOptionalPositiveInteger(element, "IP-ADDRESS-PREFIX-LENGTH")) \
|
|
2487
|
+
.setIpv6Address(self.getChildElementOptionalLiteral(element, "IPV-6-ADDRESS")) \
|
|
2488
|
+
.setIpv6AddressSource(self.getChildElementOptionalLiteral(element, "IPV-6-ADDRESS-SOURCE"))
|
|
2489
|
+
return configuration
|
|
2490
|
+
|
|
2491
|
+
def readNetworkEndPointNetworkEndPointAddress(self, element: ET.Element, end_point: NetworkEndpoint):
|
|
2492
|
+
for child_element in self.findall(element, "NETWORK-ENDPOINT-ADDRESSES/*"):
|
|
2493
|
+
tag_name = self.getTagName(child_element)
|
|
2494
|
+
if tag_name == "IPV-6-CONFIGURATION":
|
|
2495
|
+
end_point.addNetworkEndpointAddress(self.getIpv6Configuration(child_element))
|
|
2496
|
+
else:
|
|
2497
|
+
self.notImplemented("Unsupported Network EndPoint Address <%s>" % tag_name)
|
|
2498
|
+
|
|
2499
|
+
def readNetworkEndPoint(self, element: ET.Element, end_point: NetworkEndpoint):
|
|
2500
|
+
self.readIdentifiable(element, end_point)
|
|
2501
|
+
self.readNetworkEndPointNetworkEndPointAddress(element, end_point)
|
|
2502
|
+
end_point.setPriority(self.getChildElementOptionalPositiveInteger(element, "PRIORITY"))
|
|
2503
|
+
|
|
2504
|
+
def readEthernetPhysicalChannelNetworkEndPoints(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2505
|
+
for child_element in self.findall(element, "NETWORK-ENDPOINTS/NETWORK-ENDPOINT"):
|
|
2506
|
+
end_point = channel.createNetworkEndPoint(self.getShortName(child_element))
|
|
2507
|
+
self.readNetworkEndPoint(child_element, end_point)
|
|
2508
|
+
|
|
2509
|
+
def getSocketConnectionIpduIdentifier(self, element: ET.Element) -> SocketConnectionIpduIdentifier:
|
|
2510
|
+
identifier = None
|
|
2511
|
+
if element is not None:
|
|
2512
|
+
identifier = SocketConnectionIpduIdentifier()
|
|
2513
|
+
identifier.setHeaderId(self.getChildElementOptionalPositiveInteger(element, "HEADER-ID")) \
|
|
2514
|
+
.setPduCollectionSemantics(self.getChildElementOptionalLiteral(element, "PDU-COLLECTION-SEMANTICS")) \
|
|
2515
|
+
.setPduCollectionTrigger(self.getChildElementOptionalLiteral(element, "PDU-COLLECTION-TRIGGER")) \
|
|
2516
|
+
.setPduRef(self.getChildElementOptionalRefType(element, "PDU-REF")) \
|
|
2517
|
+
.setPduTriggeringRef(self.getChildElementOptionalRefType(element, "PDU-TRIGGERING-REF"))
|
|
2518
|
+
return identifier
|
|
2519
|
+
|
|
2520
|
+
def getSocketConnectionPdus(self, element: ET.Element) -> List[SocketConnectionIpduIdentifier]:
|
|
2521
|
+
pdus = []
|
|
2522
|
+
for child_element in self.findall(element, "PDUS/*"):
|
|
2523
|
+
tag_name = self.getTagName(child_element)
|
|
2524
|
+
if tag_name == "SOCKET-CONNECTION-IPDU-IDENTIFIER":
|
|
2525
|
+
pdus.append(self.getSocketConnectionIpduIdentifier(child_element))
|
|
2526
|
+
else:
|
|
2527
|
+
self.notImplemented("Unsupported Pdu <%s>" % tag_name)
|
|
2528
|
+
return pdus
|
|
2529
|
+
|
|
2530
|
+
def getSocketConnection(self, element: ET.Element) -> SocketConnection:
|
|
2531
|
+
connection = None
|
|
2532
|
+
if element is not None:
|
|
2533
|
+
connection = SocketConnection()
|
|
2534
|
+
connection.setClientPortRef(self.getChildElementOptionalRefType(element, "CLIENT-PORT-REF"))
|
|
2535
|
+
for pdu in self.getSocketConnectionPdus(element):
|
|
2536
|
+
connection.addPdu(pdu)
|
|
2537
|
+
connection.setPduCollectionMaxBufferSize(self.getChildElementOptionalPositiveInteger(element, "PDU-COLLECTION-MAX-BUFFER-SIZE")) \
|
|
2538
|
+
.setPduCollectionTimeout(self.getChildElementOptionalTimeValue(element, "PDU-COLLECTION-TIMEOUT")) \
|
|
2539
|
+
.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
|
|
2540
|
+
return connection
|
|
2541
|
+
|
|
2542
|
+
def readSocketConnectionBundleConnections(self, element: ET.Element, bundle: SocketConnectionBundle):
|
|
2543
|
+
for child_element in self.findall(element, "BUNDLED-CONNECTIONS/*"):
|
|
2544
|
+
tag_name = self.getTagName(child_element)
|
|
2545
|
+
if tag_name == "SOCKET-CONNECTION":
|
|
2546
|
+
bundle.addBundledConnection(self.getSocketConnection(child_element))
|
|
2547
|
+
else:
|
|
2548
|
+
self.notImplemented("Unsupported Bundled Connection <%s>" % tag_name)
|
|
2549
|
+
|
|
2550
|
+
def readSocketConnectionBundle(self, element: ET.Element, bundle: SocketConnectionBundle):
|
|
2551
|
+
self.readSocketConnectionBundleConnections(element, bundle)
|
|
2552
|
+
bundle.setServerPortRef(self.getChildElementOptionalRefType(element, "SERVER-PORT-REF"))
|
|
2553
|
+
|
|
2554
|
+
def readSoAdConfigConnectionBundles(self, element: ET.Element, config: SoAdConfig):
|
|
2555
|
+
for child_element in self.findall(element, "CONNECTION-BUNDLES/*"):
|
|
2556
|
+
tag_name = self.getTagName(child_element)
|
|
2557
|
+
if tag_name == "SOCKET-CONNECTION-BUNDLE":
|
|
2558
|
+
bundle = config.createSocketConnectionBundle(self.getShortName(child_element))
|
|
2559
|
+
self.readSocketConnectionBundle(child_element, bundle)
|
|
2560
|
+
else:
|
|
2561
|
+
self.notImplemented("Unsupported Connection Bundle <%s>" % tag_name)
|
|
2562
|
+
|
|
2563
|
+
def readSocketAddress(self, element: ET.Element, address: SocketAddress):
|
|
2564
|
+
self.readSocketConnectionBundleConnections(element, address)
|
|
2565
|
+
address.setConnectorRef(self.getChildElementOptionalRefType(element, "CONNECTOR-REF"))
|
|
2566
|
+
|
|
2567
|
+
def readSoAdConfigSocketAddresses(self, element: ET.Element, config: SoAdConfig):
|
|
2568
|
+
for child_element in self.findall(element, "SOCKET-ADDRESSS/*"):
|
|
2569
|
+
tag_name = self.getTagName(child_element)
|
|
2570
|
+
if tag_name == "SOCKET-ADDRESS":
|
|
2571
|
+
bundle = config.createSocketAddress(self.getShortName(child_element))
|
|
2572
|
+
self.readSocketAddress(child_element, bundle)
|
|
2573
|
+
else:
|
|
2574
|
+
self.notImplemented("Unsupported Connection Bundle <%s>" % tag_name)
|
|
2575
|
+
|
|
2576
|
+
def getSoAdConfig(self, element: ET.Element, key: str) -> SoAdConfig:
|
|
2577
|
+
child_element = self.find(element, key)
|
|
2578
|
+
config = None
|
|
2579
|
+
if child_element is not None:
|
|
2580
|
+
config = SoAdConfig()
|
|
2581
|
+
self.readSoAdConfigConnectionBundles(child_element, config)
|
|
2582
|
+
self.readSoAdConfigSocketAddresses(child_element, config)
|
|
2583
|
+
return config
|
|
2584
|
+
|
|
2585
|
+
def readEthernetPhysicalChannel(self, element: ET.Element, channel: EthernetPhysicalChannel):
|
|
2586
|
+
self.readIdentifiable(element, channel)
|
|
2587
|
+
self.readPhysicalChannel(element, channel)
|
|
2588
|
+
self.readEthernetPhysicalChannelNetworkEndPoints(element, channel)
|
|
2589
|
+
channel.setSoAdConfig(self.getSoAdConfig(element, "SO-AD-CONFIG"))
|
|
2590
|
+
|
|
2343
2591
|
def readCommunicationClusterPhysicalChannels(self, element: ET.Element, cluster: CommunicationCluster):
|
|
2344
2592
|
for child_element in self.findall(element, "PHYSICAL-CHANNELS/*"):
|
|
2345
2593
|
tag_name = self.getTagName(child_element)
|
|
@@ -2349,6 +2597,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2349
2597
|
elif tag_name == "LIN-PHYSICAL-CHANNEL":
|
|
2350
2598
|
channel = cluster.createLinPhysicalChannel(self.getShortName(child_element))
|
|
2351
2599
|
self.readLinPhysicalChannel(child_element, channel)
|
|
2600
|
+
elif tag_name == "ETHERNET-PHYSICAL-CHANNEL":
|
|
2601
|
+
channel = cluster.createEthernetPhysicalChannel(self.getShortName(child_element))
|
|
2602
|
+
self.readEthernetPhysicalChannel(child_element, channel)
|
|
2352
2603
|
else:
|
|
2353
2604
|
self.notImplemented("Unsupported Physical Channel <%s>" % tag_name)
|
|
2354
2605
|
|
|
@@ -2382,6 +2633,15 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2382
2633
|
self.readCommunicationCluster(child_element, cluster)
|
|
2383
2634
|
self.readAbstractCanCluster(child_element, cluster)
|
|
2384
2635
|
|
|
2636
|
+
def readEthernetCluster(self, element: ET.Element, parent: ARPackage):
|
|
2637
|
+
short_name = self.getShortName(element)
|
|
2638
|
+
self.logger.debug("Read EthernetCluster %s" % short_name)
|
|
2639
|
+
cluster = parent.createEthernetCluster(short_name)
|
|
2640
|
+
self.readIdentifiable(element, cluster)
|
|
2641
|
+
child_element = self.find(element, "ETHERNET-CLUSTER-VARIANTS/ETHERNET-CLUSTER-CONDITIONAL")
|
|
2642
|
+
if child_element is not None:
|
|
2643
|
+
self.readCommunicationCluster(child_element, cluster)
|
|
2644
|
+
|
|
2385
2645
|
def readPduToFrameMappings(self, element: ET.Element, parent: Frame):
|
|
2386
2646
|
for child_element in self.findall(element, "PDU-TO-FRAME-MAPPINGS/PDU-TO-FRAME-MAPPING"):
|
|
2387
2647
|
short_name = self.getShortName(child_element)
|
|
@@ -2542,7 +2802,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2542
2802
|
self.readFrame(element, frame)
|
|
2543
2803
|
|
|
2544
2804
|
def readCanCommunicationController(self, element: ET.Element, controller: CanCommunicationController):
|
|
2545
|
-
self.logger.debug("
|
|
2805
|
+
self.logger.debug("Read CanCommunicationController %s" % controller.getShortName())
|
|
2806
|
+
self.readIdentifiable(element, controller)
|
|
2807
|
+
|
|
2808
|
+
def readEthernetCommunicationController(self, element: ET.Element, controller: EthernetCommunicationController):
|
|
2809
|
+
self.logger.debug("Read CanCommunicationController %s" % controller.getShortName())
|
|
2546
2810
|
self.readIdentifiable(element, controller)
|
|
2547
2811
|
|
|
2548
2812
|
def readEcuInstanceCommControllers(self, element: ET.Element, instance: EcuInstance):
|
|
@@ -2552,6 +2816,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2552
2816
|
if tag_name == "CAN-COMMUNICATION-CONTROLLER":
|
|
2553
2817
|
controller = instance.createCanCommunicationController(self.getShortName(child_element))
|
|
2554
2818
|
self.readCanCommunicationController(child_element, controller)
|
|
2819
|
+
elif tag_name == "ETHERNET-COMMUNICATION-CONTROLLER":
|
|
2820
|
+
controller = instance.createEthernetCommunicationController(self.getShortName(child_element))
|
|
2821
|
+
self.readEthernetCommunicationController(child_element, controller)
|
|
2555
2822
|
else:
|
|
2556
2823
|
self._raiseError("Unsupported Communication Controller <%s>" % tag_name)
|
|
2557
2824
|
|
|
@@ -2592,6 +2859,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2592
2859
|
def readCanCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
|
|
2593
2860
|
self.readCommunicationConnector(element, connector)
|
|
2594
2861
|
|
|
2862
|
+
def readEthernetCommunicationConnector(self, element: ET.Element, connector: CanCommunicationConnector):
|
|
2863
|
+
self.readCommunicationConnector(element, connector)
|
|
2864
|
+
|
|
2595
2865
|
def readEcuInstanceConnectors(self, element: ET.Element, instance: EcuInstance):
|
|
2596
2866
|
self.logger.debug("readEcuInstanceCommControllers %s" % instance.getShortName())
|
|
2597
2867
|
for child_element in self.findall(element, "CONNECTORS/*"):
|
|
@@ -2599,8 +2869,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2599
2869
|
if tag_name == "CAN-COMMUNICATION-CONNECTOR":
|
|
2600
2870
|
connector = instance.createCanCommunicationConnector(self.getShortName(child_element))
|
|
2601
2871
|
self.readCanCommunicationConnector(child_element, connector)
|
|
2872
|
+
elif tag_name == "ETHERNET-COMMUNICATION-CONNECTOR":
|
|
2873
|
+
connector = instance.createEthernetCommunicationConnector(self.getShortName(child_element))
|
|
2874
|
+
self.readEthernetCommunicationConnector(child_element, connector)
|
|
2602
2875
|
else:
|
|
2603
|
-
self._raiseError("Unsupported Communication
|
|
2876
|
+
self._raiseError("Unsupported Communication Connector <%s>" % tag_name)
|
|
2604
2877
|
|
|
2605
2878
|
def readEcuInstance(self, element: ET.Element, parent: ARPackage):
|
|
2606
2879
|
short_name = self.getShortName(element)
|
|
@@ -2662,6 +2935,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2662
2935
|
signal = parent.createISignal(short_name)
|
|
2663
2936
|
self.readIdentifiable(element, signal)
|
|
2664
2937
|
signal.setDataTypePolicy(self.getChildElementOptionalLiteral(element, "DATA-TYPE-POLICY")) \
|
|
2938
|
+
.setISignalType(self.getChildElementOptionalLiteral(element, "I-SIGNAL-TYPE")) \
|
|
2665
2939
|
.setInitValue(self.getInitValue(element)) \
|
|
2666
2940
|
.setLength(self.getChildElementOptionalNumericalValue(element, "LENGTH")) \
|
|
2667
2941
|
.setNetworkRepresentationProps(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION-PROPS")) \
|
|
@@ -2725,9 +2999,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2725
2999
|
child_element = self.find(element, key)
|
|
2726
3000
|
if child_element is not None:
|
|
2727
3001
|
instance_ref = AnyInstanceRef()
|
|
2728
|
-
instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF"))
|
|
2729
|
-
|
|
2730
|
-
|
|
3002
|
+
instance_ref.setBaseRef(self.getChildElementOptionalRefType(child_element, "BASE-REF"))
|
|
3003
|
+
for ref in self.getChildElementRefTypeList(child_element, "CONTEXT-ELEMENT-REF"):
|
|
3004
|
+
instance_ref.addContextElementRef(ref)
|
|
3005
|
+
instance_ref.setTargetRef(self.getChildElementOptionalRefType(child_element, "TARGET-REF"))
|
|
2731
3006
|
return instance_ref
|
|
2732
3007
|
|
|
2733
3008
|
def getEcucInstanceReferenceValue(self, element: ET.Element) -> EcucInstanceReferenceValue:
|
|
@@ -2825,7 +3100,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2825
3100
|
self.logger.debug("SystemSignal %s" % short_name)
|
|
2826
3101
|
signal = parent.createSystemSignal(short_name)
|
|
2827
3102
|
self.readIdentifiable(element, signal)
|
|
2828
|
-
signal.setDynamicLength(self.getChildElementOptionalBooleanValue(element, "DYNAMIC-LENGTH"))
|
|
3103
|
+
signal.setDynamicLength(self.getChildElementOptionalBooleanValue(element, "DYNAMIC-LENGTH")) \
|
|
3104
|
+
.setPhysicalProps(self.getSwDataDefProps(element, "PHYSICAL-PROPS"))
|
|
2829
3105
|
|
|
2830
3106
|
def readSystemSignalGroup(self, element: ET.Element, parent: ARPackage):
|
|
2831
3107
|
short_name = self.getShortName(element)
|
|
@@ -2878,6 +3154,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2878
3154
|
child_element = self.find(element, key)
|
|
2879
3155
|
if child_element is not None:
|
|
2880
3156
|
timing = CyclicTiming()
|
|
3157
|
+
timing.setTimeOffset(self.getTimeRangeType(child_element, "TIME-OFFSET")) \
|
|
3158
|
+
.setTimePeriod(self.getTimeRangeType(child_element, "TIME-PERIOD"))
|
|
2881
3159
|
return timing
|
|
2882
3160
|
|
|
2883
3161
|
def getEventControlledTiming(self, element: ET.Element, key: str) -> EventControlledTiming:
|
|
@@ -2895,8 +3173,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2895
3173
|
if child_element is not None:
|
|
2896
3174
|
self.logger.debug("Get TransmissionModeTiming of <%s>" % key)
|
|
2897
3175
|
timing = TransmissionModeTiming()
|
|
2898
|
-
|
|
2899
|
-
|
|
3176
|
+
timing.setCyclicTiming(self.getCyclicTiming(child_element, "CYCLIC-TIMING")) \
|
|
3177
|
+
.setEventControlledTiming(self.getEventControlledTiming(child_element, "EVENT-CONTROLLED-TIMING"))
|
|
2900
3178
|
return timing
|
|
2901
3179
|
|
|
2902
3180
|
def getTransmissionModeDeclaration(self, element: ET.Element, key: str) -> TransmissionModeDeclaration:
|
|
@@ -2914,7 +3192,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2914
3192
|
child_element = self.find(element, "I-PDU-TIMING-SPECIFICATIONS/I-PDU-TIMING")
|
|
2915
3193
|
if child_element is not None:
|
|
2916
3194
|
timing = IPduTiming()
|
|
2917
|
-
timing.
|
|
3195
|
+
timing.setMinimumDelay(self.getChildElementOptionalTimeValue(child_element, "MINIMUM-DELAY")) \
|
|
3196
|
+
.setTransmissionModeDeclaration(self.getTransmissionModeDeclaration(child_element, "TRANSMISSION-MODE-DECLARATION"))
|
|
2918
3197
|
return timing
|
|
2919
3198
|
|
|
2920
3199
|
def readISignalIPdu(self, element: ET.Element, parent: ARPackage):
|
|
@@ -2947,8 +3226,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2947
3226
|
|
|
2948
3227
|
def getSenderReceiverToSignalMapping(self, element: ET.Element) -> SenderReceiverToSignalMapping:
|
|
2949
3228
|
mapping = SenderReceiverToSignalMapping()
|
|
2950
|
-
mapping.
|
|
2951
|
-
|
|
3229
|
+
mapping.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")) \
|
|
3230
|
+
.setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF"))) \
|
|
3231
|
+
.setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
|
|
2952
3232
|
return mapping
|
|
2953
3233
|
|
|
2954
3234
|
def getSenderReceiverToSignalGroupMapping(self, element: ET.Element) -> SenderReceiverToSignalGroupMapping:
|
|
@@ -3005,7 +3285,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3005
3285
|
self.logger.debug("Read RootSwCompositionPrototype %s" % short_name)
|
|
3006
3286
|
prototype = system.createRootSoftwareComposition(short_name)
|
|
3007
3287
|
self.readIdentifiable(child_element, prototype)
|
|
3008
|
-
prototype.
|
|
3288
|
+
prototype.setFlatMapRef(self.getChildElementOptionalRefType(child_element, "FLAT-MAP-REF")) \
|
|
3289
|
+
.setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
|
|
3290
|
+
|
|
3009
3291
|
|
|
3010
3292
|
def readSystem(self, element: ET.Element, parent: ARPackage):
|
|
3011
3293
|
short_name = self.getShortName(element)
|
|
@@ -3032,8 +3314,63 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3032
3314
|
frame = parent.createLifeCycleInfoSet(short_name)
|
|
3033
3315
|
self.readIdentifiable(element, frame)
|
|
3034
3316
|
|
|
3317
|
+
def readFlatInstanceDescriptor(self, element: ET.Element, desc: FlatInstanceDescriptor):
|
|
3318
|
+
self.logger.debug("Read LifeCycleInfoSet %s" % desc.getShortName())
|
|
3319
|
+
self.readIdentifiable(element, desc)
|
|
3320
|
+
desc.setUpstreamReferenceIRef(self.getAnyInstanceRef(element, "UPSTREAM-REFERENCE-IREF")) \
|
|
3321
|
+
.setEcuExtractReferenceIRef(self.getAnyInstanceRef(element, "ECU-EXTRACT-REFERENCE-IREF"))
|
|
3322
|
+
|
|
3323
|
+
def readFlatMapInstances(self, element: ET.Element, map: FlatMap):
|
|
3324
|
+
for child_element in self.findall(element, "INSTANCES/*"):
|
|
3325
|
+
tag_name = self.getTagName(child_element)
|
|
3326
|
+
if tag_name == "FLAT-INSTANCE-DESCRIPTOR":
|
|
3327
|
+
desc = map.createFlatInstanceDescriptor(self.getShortName(child_element))
|
|
3328
|
+
self.readFlatInstanceDescriptor(child_element, desc)
|
|
3329
|
+
else:
|
|
3330
|
+
self.notImplemented("Unsupported Flat Map Instances <%s>" % tag_name)
|
|
3331
|
+
|
|
3332
|
+
def readFlatMap(self, element: ET.Element, parent: ARPackage):
|
|
3333
|
+
short_name = self.getShortName(element)
|
|
3334
|
+
self.logger.debug("Read FlatMap %s" % short_name)
|
|
3335
|
+
map = parent.createFlatMap(short_name)
|
|
3336
|
+
self.readIdentifiable(element, map)
|
|
3337
|
+
self.readFlatMapInstances(element, map)
|
|
3338
|
+
|
|
3339
|
+
def getDataPrototypeMappings(self, element: ET.Element, key: str) -> List[DataPrototypeMapping]:
|
|
3340
|
+
mappings = []
|
|
3341
|
+
for child_element in self.findall(element, "%s/DATA-PROTOTYPE-MAPPING" % key):
|
|
3342
|
+
mapping = DataPrototypeMapping()
|
|
3343
|
+
mapping.setFirstDataPrototypeRef(self.getChildElementOptionalRefType(child_element, "FIRST-DATA-PROTOTYPE-REF")) \
|
|
3344
|
+
.setSecondDataPrototypeRef(self.getChildElementOptionalRefType(child_element, "SECOND-DATA-PROTOTYPE-REF"))
|
|
3345
|
+
mappings.append(mapping)
|
|
3346
|
+
return mappings
|
|
3347
|
+
|
|
3348
|
+
def getVariableAndParameterInterfaceMapping(self, element: ET.Element, mapping: VariableAndParameterInterfaceMapping):
|
|
3349
|
+
self.logger.debug("get VariableAndParameterInterfaceMapping %s" % mapping.getShortName())
|
|
3350
|
+
self.readIdentifiable(element, mapping)
|
|
3351
|
+
for item in self.getDataPrototypeMappings(element, "DATA-MAPPINGS"):
|
|
3352
|
+
mapping.addDataMapping(item)
|
|
3353
|
+
|
|
3354
|
+
def readPortInterfaceMappings(self, element: ET.Element, mapping_set: PortInterfaceMappingSet):
|
|
3355
|
+
for child_element in self.findall(element, "PORT-INTERFACE-MAPPINGS/*"):
|
|
3356
|
+
tag_name = self.getTagName(child_element)
|
|
3357
|
+
if tag_name == "VARIABLE-AND-PARAMETER-INTERFACE-MAPPING":
|
|
3358
|
+
mapping = mapping_set.createVariableAndParameterInterfaceMapping(self.getShortName(child_element))
|
|
3359
|
+
self.getVariableAndParameterInterfaceMapping(child_element, mapping)
|
|
3360
|
+
else:
|
|
3361
|
+
self.notImplemented("Unsupported PortInterfaceMapping <%s>" % tag_name)
|
|
3362
|
+
|
|
3363
|
+
def readPortInterfaceMappingSet(self, element: ET.Element, parent: ARPackage):
|
|
3364
|
+
short_name = self.getShortName(element)
|
|
3365
|
+
self.logger.debug("Read PortInterfaceMappingSet %s" % short_name)
|
|
3366
|
+
mapping_set = parent.createPortInterfaceMappingSet(short_name)
|
|
3367
|
+
self.readIdentifiable(element, mapping_set)
|
|
3368
|
+
self.readPortInterfaceMappings(element, mapping_set)
|
|
3369
|
+
|
|
3370
|
+
|
|
3371
|
+
|
|
3035
3372
|
def readARPackageElements(self, element: ET.Element, parent: ARPackage):
|
|
3036
|
-
for child_element in self.findall(element, "
|
|
3373
|
+
for child_element in self.findall(element, "ELEMENTS/*"):
|
|
3037
3374
|
tag_name = self.getTagName(child_element.tag)
|
|
3038
3375
|
if tag_name == "COMPOSITION-SW-COMPONENT-TYPE":
|
|
3039
3376
|
self.readCompositionSwComponentType(child_element, parent)
|
|
@@ -3147,8 +3484,14 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
3147
3484
|
self.readGenericEthernetFrame(child_element, parent)
|
|
3148
3485
|
elif tag_name == "LIFE-CYCLE-INFO-SET":
|
|
3149
3486
|
self.readLifeCycleInfoSet(child_element, parent)
|
|
3487
|
+
elif tag_name == "FLAT-MAP":
|
|
3488
|
+
self.readFlatMap(child_element, parent)
|
|
3489
|
+
elif tag_name == "PORT-INTERFACE-MAPPING-SET":
|
|
3490
|
+
self.readPortInterfaceMappingSet(child_element, parent)
|
|
3491
|
+
elif tag_name == "ETHERNET-CLUSTER":
|
|
3492
|
+
self.readEthernetCluster(child_element, parent)
|
|
3150
3493
|
else:
|
|
3151
|
-
self.
|
|
3494
|
+
self.notImplemented("Unsupported element type of ARPackage <%s>" % tag_name)
|
|
3152
3495
|
|
|
3153
3496
|
def readReferenceBases(self, element: ET.Element, parent: ARPackage):
|
|
3154
3497
|
self.logger.debug("Read ReferenceBases")
|