armodel 1.8.1__py3-none-any.whl → 1.8.3__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/format_xml_cli.py +62 -0
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +1 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +17 -15
- armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +1 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/__init__.py +44 -28
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +5 -5
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +13 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +247 -45
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AutosarVariableRef.py +9 -6
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/DataElements.py +7 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +3 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/Trigger.py +43 -2
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +40 -43
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +13 -12
- armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +40 -9
- armodel/parser/abstract_arxml_parser.py +4 -0
- armodel/parser/arxml_parser.py +88 -56
- armodel/tests/test_armodel/models/test_common_structure.py +2 -2
- armodel/tests/test_armodel/parser/test_arxml_parser.py +38 -0
- armodel/tests/test_armodel/parser/test_implementation_data_type.py +247 -0
- armodel/tests/test_armodel/parser/test_rte_event.py +142 -0
- armodel/tests/test_armodel/parser/test_runnable_entity.py +135 -0
- armodel/writer/abstract_arxml_writer.py +2 -0
- armodel/writer/arxml_writer.py +89 -25
- {armodel-1.8.1.dist-info → armodel-1.8.3.dist-info}/METADATA +14 -1
- {armodel-1.8.1.dist-info → armodel-1.8.3.dist-info}/RECORD +30 -26
- {armodel-1.8.1.dist-info → armodel-1.8.3.dist-info}/entry_points.txt +1 -0
- {armodel-1.8.1.dist-info → armodel-1.8.3.dist-info}/LICENSE +0 -0
- {armodel-1.8.1.dist-info → armodel-1.8.3.dist-info}/WHEEL +0 -0
- {armodel-1.8.1.dist-info → armodel-1.8.3.dist-info}/top_level.txt +0 -0
|
@@ -7,6 +7,7 @@ from .....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import
|
|
|
7
7
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
|
|
8
8
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PerInstanceMemory import PerInstanceMemory
|
|
9
9
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, BackgroundEvent
|
|
10
|
+
from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataSendCompletedEvent
|
|
10
11
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent
|
|
11
12
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import ModeSwitchedAckEvent, OperationInvokedEvent, RTEEvent
|
|
12
13
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import SwcModeSwitchEvent, TimingEvent
|
|
@@ -16,7 +17,7 @@ from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.DataElemen
|
|
|
16
17
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
|
|
17
18
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
|
|
18
19
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import ModeSwitchPoint
|
|
19
|
-
from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.Trigger import InternalTriggeringPoint
|
|
20
|
+
from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.Trigger import ExternalTriggeringPoint, InternalTriggeringPoint
|
|
20
21
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
21
22
|
from .....M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
|
|
22
23
|
|
|
@@ -72,44 +73,32 @@ class RunnableEntity(ExecutableEntity):
|
|
|
72
73
|
def __init__(self, parent: ARObject, short_name: str):
|
|
73
74
|
super().__init__(parent, short_name)
|
|
74
75
|
|
|
75
|
-
|
|
76
|
-
self.
|
|
77
|
-
|
|
78
|
-
self.
|
|
79
|
-
self.
|
|
80
|
-
|
|
81
|
-
self.
|
|
82
|
-
|
|
83
|
-
self.
|
|
84
|
-
|
|
85
|
-
self.
|
|
86
|
-
|
|
87
|
-
self.
|
|
88
|
-
|
|
89
|
-
self.
|
|
90
|
-
|
|
91
|
-
self.externalTriggeringPoints = {}
|
|
92
|
-
# type: Dict[str, InternalTriggeringPoint]
|
|
93
|
-
self.internalTriggeringPoints = {}
|
|
94
|
-
self.modeAccessPoints = [] # type: List[ModeAccessPoint]
|
|
95
|
-
self.modeSwitchPoints = [] # type: List[ModeSwitchPoint]
|
|
96
|
-
# type: Dict[str, ParameterAccess]
|
|
97
|
-
self.parameterAccesses = {}
|
|
98
|
-
# type: Dict[str, VariableAccess]
|
|
99
|
-
self.readLocalVariables = {}
|
|
100
|
-
# type: Dict[str, ServerCallPoint]
|
|
101
|
-
self.serverCallPoints = {}
|
|
102
|
-
self.symbol = None # type: ARLiteral
|
|
76
|
+
self.arguments: List[RunnableEntityArgument] = []
|
|
77
|
+
self.asynchronousServerCallResultPoints: List[AsynchronousServerCallResultPoint] = []
|
|
78
|
+
self.canBeInvokedConcurrently: ARBoolean = None
|
|
79
|
+
self.dataReadAccesses: List[VariableAccess] = []
|
|
80
|
+
self.dataReceivePointByArguments: List[VariableAccess] = []
|
|
81
|
+
self.dataReceivePointByValues: List[VariableAccess] = []
|
|
82
|
+
self.dataSendPoints: List[VariableAccess] = []
|
|
83
|
+
self.dataWriteAccesses: List[VariableAccess] = []
|
|
84
|
+
self.externalTriggeringPoints: List[ExternalTriggeringPoint] = []
|
|
85
|
+
self.internalTriggeringPoints: List[InternalTriggeringPoint] = []
|
|
86
|
+
self.modeAccessPoints: List[ModeAccessPoint] = []
|
|
87
|
+
self.modeSwitchPoints: List[ModeSwitchPoint] = []
|
|
88
|
+
self.parameterAccesses: List[ParameterAccess] = []
|
|
89
|
+
self.readLocalVariables: List[VariableAccess] = []
|
|
90
|
+
self.serverCallPoints: List[ServerCallPoint] = []
|
|
91
|
+
self.symbol: ARLiteral = None
|
|
103
92
|
# type: Dict[str, WaitPoint]
|
|
104
93
|
self.waitPoints = {}
|
|
105
|
-
|
|
106
|
-
self.writtenLocalVariables = {}
|
|
94
|
+
self.writtenLocalVariables: List[VariableAccess] = []
|
|
107
95
|
|
|
108
|
-
def _createVariableAccess(self, short_name, variable_accesses:
|
|
96
|
+
def _createVariableAccess(self, short_name, variable_accesses: List[VariableAccess]):
|
|
109
97
|
if not self.IsElementExists(short_name):
|
|
110
98
|
variable_access = VariableAccess(self, short_name)
|
|
111
|
-
|
|
112
|
-
|
|
99
|
+
self.addElement(variable_access)
|
|
100
|
+
variable_accesses.append(variable_access)
|
|
101
|
+
return self.getElement(short_name, VariableAccess)
|
|
113
102
|
|
|
114
103
|
def getArguments(self):
|
|
115
104
|
return self.arguments
|
|
@@ -129,46 +118,45 @@ class RunnableEntity(ExecutableEntity):
|
|
|
129
118
|
return self._createVariableAccess(short_name, self.dataReadAccesses)
|
|
130
119
|
|
|
131
120
|
def getDataReadAccesses(self) -> List[VariableAccess]:
|
|
132
|
-
return sorted(self.dataReadAccesses
|
|
121
|
+
return sorted(self.dataReadAccesses, key=lambda v: v.short_name)
|
|
133
122
|
|
|
134
123
|
def createDataWriteAccess(self, short_name: str) -> VariableAccess:
|
|
135
124
|
return self._createVariableAccess(short_name, self.dataWriteAccesses)
|
|
136
125
|
|
|
137
126
|
def getDataWriteAccesses(self) -> List[VariableAccess]:
|
|
138
|
-
return sorted(self.dataWriteAccesses
|
|
127
|
+
return sorted(self.dataWriteAccesses, key=lambda v: v.short_name)
|
|
139
128
|
|
|
140
129
|
def createDataReceivePointByArgument(self, short_name: str) -> VariableAccess:
|
|
141
130
|
return self._createVariableAccess(short_name, self.dataReceivePointByArguments)
|
|
142
131
|
|
|
143
132
|
def getDataReceivePointByArguments(self) -> List[VariableAccess]:
|
|
144
|
-
return sorted(self.dataReceivePointByArguments
|
|
133
|
+
return sorted(self.dataReceivePointByArguments, key=lambda v: v.short_name)
|
|
145
134
|
|
|
146
135
|
def createDataReceivePointByValue(self, short_name: str) -> VariableAccess:
|
|
147
136
|
return self._createVariableAccess(short_name, self.dataReceivePointByValues)
|
|
148
137
|
|
|
149
138
|
def getDataReceivePointByValues(self) -> List[VariableAccess]:
|
|
150
|
-
return sorted(self.dataReceivePointByValues
|
|
139
|
+
return sorted(self.dataReceivePointByValues, key=lambda v: v.short_name)
|
|
151
140
|
|
|
152
141
|
def createDataSendPoint(self, short_name: str) -> VariableAccess:
|
|
153
142
|
return self._createVariableAccess(short_name, self.dataSendPoints)
|
|
154
143
|
|
|
155
144
|
def getDataSendPoints(self) -> List[VariableAccess]:
|
|
156
145
|
# return sorted(self.dataSendPoints.values(), key=lambda v: v.short_name)
|
|
157
|
-
return self.dataSendPoints
|
|
146
|
+
return self.dataSendPoints
|
|
158
147
|
|
|
159
148
|
def createReadLocalVariable(self, short_name: str) -> VariableAccess:
|
|
160
149
|
return self._createVariableAccess(short_name, self.readLocalVariables)
|
|
161
150
|
|
|
162
151
|
def getReadLocalVariables(self) -> List[VariableAccess]:
|
|
163
152
|
# return sorted(self.readLocalVariables.values(), key=lambda v: v.short_name)
|
|
164
|
-
return self.readLocalVariables
|
|
153
|
+
return self.readLocalVariables
|
|
165
154
|
|
|
166
155
|
def createWrittenLocalVariable(self, short_name: str) -> VariableAccess:
|
|
167
156
|
return self._createVariableAccess(short_name, self.writtenLocalVariables)
|
|
168
157
|
|
|
169
158
|
def getWrittenLocalVariables(self) -> List[VariableAccess]:
|
|
170
|
-
|
|
171
|
-
return self.writtenLocalVariables.values()
|
|
159
|
+
return self.writtenLocalVariables
|
|
172
160
|
|
|
173
161
|
def getParameterAccesses(self) -> List[ParameterAccess]:
|
|
174
162
|
return list(sorted(filter(lambda a: isinstance(a, ParameterAccess), self.elements), key=lambda o: o.short_name))
|
|
@@ -191,7 +179,7 @@ class RunnableEntity(ExecutableEntity):
|
|
|
191
179
|
if (short_name not in self.serverCallPoints):
|
|
192
180
|
point = AsynchronousServerCallPoint(self, short_name)
|
|
193
181
|
self.addElement(point)
|
|
194
|
-
return self.getElement(short_name)
|
|
182
|
+
return self.getElement(short_name, AsynchronousServerCallPoint)
|
|
195
183
|
# self.serverCallPoints[short_name] = server_call_point
|
|
196
184
|
# return self.serverCallPoints[short_name]
|
|
197
185
|
|
|
@@ -398,6 +386,12 @@ class SwcInternalBehavior(InternalBehavior):
|
|
|
398
386
|
event = BackgroundEvent(self, short_name)
|
|
399
387
|
self.addElement(event)
|
|
400
388
|
return self.getElement(short_name, BackgroundEvent)
|
|
389
|
+
|
|
390
|
+
def createDataSendCompletedEvent(self, short_name: str) -> DataSendCompletedEvent:
|
|
391
|
+
if not self.IsElementExists(short_name):
|
|
392
|
+
event = DataSendCompletedEvent(self, short_name)
|
|
393
|
+
self.addElement(event)
|
|
394
|
+
return self.getElement(short_name, DataSendCompletedEvent)
|
|
401
395
|
|
|
402
396
|
def getRteEvents(self) -> List[RTEEvent]:
|
|
403
397
|
return sorted(filter(lambda c: isinstance(c, RTEEvent), self.elements), key=lambda e: e.short_name)
|
|
@@ -425,6 +419,9 @@ class SwcInternalBehavior(InternalBehavior):
|
|
|
425
419
|
|
|
426
420
|
def getBackgroundEvents(self) -> List[BackgroundEvent]:
|
|
427
421
|
return sorted(filter(lambda c: isinstance(c, BackgroundEvent), self.elements), key=lambda e: e.short_name)
|
|
422
|
+
|
|
423
|
+
def getDataSendCompletedEvents(self) -> List[DataSendCompletedEvent]:
|
|
424
|
+
return sorted(filter(lambda c: isinstance(c, DataSendCompletedEvent), self.elements), key=lambda e: e.short_name)
|
|
428
425
|
|
|
429
426
|
def getSwcServiceDependencies(self) -> List[SwcServiceDependency]:
|
|
430
427
|
return sorted(filter(lambda c: isinstance(c, SwcServiceDependency), self.elements), key=lambda e: e.short_name)
|
|
@@ -202,15 +202,15 @@ class CompuScale(Compu):
|
|
|
202
202
|
def __init__(self):
|
|
203
203
|
super().__init__()
|
|
204
204
|
|
|
205
|
-
self.a2lDisplayText = None
|
|
206
|
-
self.compuInverseValue = None
|
|
207
|
-
self.compuScaleContents = None
|
|
208
|
-
self.desc = None
|
|
209
|
-
self.lowerLimit = None
|
|
210
|
-
self.mask = None
|
|
211
|
-
self.shortLabel = None
|
|
212
|
-
self.symbol = None
|
|
213
|
-
self.upperLimit = None
|
|
205
|
+
self.a2lDisplayText: String = None
|
|
206
|
+
self.compuInverseValue: CompuConst = None
|
|
207
|
+
self.compuScaleContents: CompuScaleContents = None
|
|
208
|
+
self.desc: MultiLanguageOverviewParagraph = None
|
|
209
|
+
self.lowerLimit: Limit = None
|
|
210
|
+
self.mask: PositiveUnlimitedInteger = None
|
|
211
|
+
self.shortLabel: Identifier = None
|
|
212
|
+
self.symbol: CIdentifier = None
|
|
213
|
+
self.upperLimit: Limit = None
|
|
214
214
|
|
|
215
215
|
def getA2lDisplayText(self):
|
|
216
216
|
return self.a2lDisplayText
|
|
@@ -247,11 +247,12 @@ class CompuScale(Compu):
|
|
|
247
247
|
self.lowerLimit = value
|
|
248
248
|
return self
|
|
249
249
|
|
|
250
|
-
def getMask(self):
|
|
250
|
+
def getMask(self) -> PositiveUnlimitedInteger:
|
|
251
251
|
return self.mask
|
|
252
252
|
|
|
253
|
-
def setMask(self, value):
|
|
254
|
-
|
|
253
|
+
def setMask(self, value: PositiveUnlimitedInteger):
|
|
254
|
+
if value is not None:
|
|
255
|
+
self.mask = value
|
|
255
256
|
return self
|
|
256
257
|
|
|
257
258
|
def getShortLabel(self):
|
|
@@ -6,6 +6,44 @@ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTy
|
|
|
6
6
|
from ....M2.AUTOSARTemplates.CommonStructure import ValueSpecification
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
class SwImplPolicyEnum(AREnum):
|
|
10
|
+
"""
|
|
11
|
+
Enumeration for software implementation policy.
|
|
12
|
+
* const
|
|
13
|
+
forced implementation such that the running software within the ECU shall not modify it. For example
|
|
14
|
+
implemented with the "const" modifier in C. This can be applied for parameters (not for those in
|
|
15
|
+
NVRAM) as well as argument data prototypes.
|
|
16
|
+
* fixed
|
|
17
|
+
This data element is fixed. In particular this indicates, that it might also be implemented e.g. as in
|
|
18
|
+
place data, (#DEFINE).
|
|
19
|
+
* measurementPoint
|
|
20
|
+
The data element is created for measurement purposes only. The data element is never read directly
|
|
21
|
+
within the ECU software. In contrast to a "standard" data element in an unconnected provide port is,
|
|
22
|
+
this unconnection is guaranteed for measurementPoint data elements.
|
|
23
|
+
* queued
|
|
24
|
+
The content of the data element is queued and the data element has 'event' semantics, i.e. data
|
|
25
|
+
elements are stored in a queue and all data elements are processed in 'first in first out' order. The
|
|
26
|
+
queuing is intended to be implemented by RTE Generator. This value is not applicable for parameters.
|
|
27
|
+
* standard
|
|
28
|
+
This is applicable for all kinds of data elements. For variable data prototypes the 'last is best'
|
|
29
|
+
semantics applies. For parameter there is no specific implementation directive.
|
|
30
|
+
"""
|
|
31
|
+
CONST = "const"
|
|
32
|
+
FIXED = "fixed"
|
|
33
|
+
MEASUREMENT_POINT = "measurementPoint"
|
|
34
|
+
QUEUED = "queued"
|
|
35
|
+
STANDARD = "standard"
|
|
36
|
+
|
|
37
|
+
def __init__(self):
|
|
38
|
+
super().__init__([
|
|
39
|
+
SwImplPolicyEnum.CONST,
|
|
40
|
+
SwImplPolicyEnum.FIXED,
|
|
41
|
+
SwImplPolicyEnum.MEASUREMENT_POINT,
|
|
42
|
+
SwImplPolicyEnum.QUEUED,
|
|
43
|
+
SwImplPolicyEnum.STANDARD
|
|
44
|
+
])
|
|
45
|
+
|
|
46
|
+
|
|
9
47
|
class SwDataDefPropsConditional(ARObject):
|
|
10
48
|
'''
|
|
11
49
|
Patch for the time-stamp
|
|
@@ -14,18 +52,11 @@ class SwDataDefPropsConditional(ARObject):
|
|
|
14
52
|
super().__init__()
|
|
15
53
|
|
|
16
54
|
|
|
17
|
-
class SwImplPolicyEnum(AREnum):
|
|
18
|
-
def __init__(self, enum_values):
|
|
19
|
-
super().__init__([
|
|
20
|
-
|
|
21
|
-
])
|
|
22
|
-
|
|
23
|
-
|
|
24
55
|
class SwDataDefProps(ARObject):
|
|
25
56
|
def __init__(self):
|
|
26
57
|
super().__init__()
|
|
27
58
|
|
|
28
|
-
self.additionalNativeTypeQualifier = None
|
|
59
|
+
self.additionalNativeTypeQualifier = None
|
|
29
60
|
self.annotations = [] # type: List[Annotation]
|
|
30
61
|
self.baseTypeRef = None # type: RefType
|
|
31
62
|
self.compuMethodRef = None # type: RefType
|
|
@@ -268,6 +299,7 @@ class SwDataDefProps(ARObject):
|
|
|
268
299
|
self.valueAxisDataTypeRef = value
|
|
269
300
|
return self
|
|
270
301
|
|
|
302
|
+
|
|
271
303
|
class SwPointerTargetProps(ARObject):
|
|
272
304
|
def __init__(self):
|
|
273
305
|
super().__init__()
|
|
@@ -317,4 +349,3 @@ class ValueList(ARObject):
|
|
|
317
349
|
|
|
318
350
|
def getVfs(self) -> List[ARLiteral]:
|
|
319
351
|
return sorted(self._vf)
|
|
320
|
-
|
|
@@ -190,6 +190,8 @@ class AbstractARXMLParser:
|
|
|
190
190
|
return None
|
|
191
191
|
numerical = ARNumerical()
|
|
192
192
|
self.readARObjectAttributes(child_element, numerical)
|
|
193
|
+
if "SHORT-LABEL" in child_element.attrib:
|
|
194
|
+
numerical.setShortLabel(child_element.attrib["SHORT-LABEL"])
|
|
193
195
|
numerical.setValue(child_element.text)
|
|
194
196
|
return numerical
|
|
195
197
|
|
|
@@ -206,6 +208,8 @@ class AbstractARXMLParser:
|
|
|
206
208
|
child_element = self.find(element, key)
|
|
207
209
|
if child_element is None:
|
|
208
210
|
return None
|
|
211
|
+
if child_element.text is None:
|
|
212
|
+
return None
|
|
209
213
|
numerical = PositiveInteger()
|
|
210
214
|
self.readARObjectAttributes(child_element, numerical)
|
|
211
215
|
numerical.setValue(child_element.text)
|
armodel/parser/arxml_parser.py
CHANGED
|
@@ -62,7 +62,7 @@ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import RoleBasedD
|
|
|
62
62
|
from ..models.M2.AUTOSARTemplates.CommonStructure.StandardizationTemplate.BlueprintDedicated.PortPrototypeBlueprint import PortPrototypeBlueprint
|
|
63
63
|
from ..models.M2.AUTOSARTemplates.CommonStructure.StandardizationTemplate.Keyword import Keyword, KeywordSet
|
|
64
64
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
|
|
65
|
-
from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
65
|
+
from ..models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType, ImplementationDataTypeElement
|
|
66
66
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.ExecutionOrderConstraint import ExecutionOrderConstraint
|
|
67
67
|
from ..models.M2.AUTOSARTemplates.CommonStructure.Timing.TimingConstraint.TimingExtensions import SwcTiming, TimingExtension
|
|
68
68
|
from ..models.M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import Trigger
|
|
@@ -101,6 +101,7 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs i
|
|
|
101
101
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
102
102
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
103
103
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest
|
|
104
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import TransformationComSpecProps, UserDefinedTransformationComSpecProps
|
|
104
105
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import TransmissionAcknowledgementRequest
|
|
105
106
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec
|
|
106
107
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import NonqueuedReceiverComSpec, NonqueuedSenderComSpec, ParameterRequireComSpec
|
|
@@ -140,6 +141,7 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDe
|
|
|
140
141
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import ModeAccessPoint, ModeSwitchPoint
|
|
141
142
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption, PortDefinedArgumentValue
|
|
142
143
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, BackgroundEvent
|
|
144
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataSendCompletedEvent
|
|
143
145
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent
|
|
144
146
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import ModeSwitchedAckEvent, OperationInvokedEvent, RTEEvent
|
|
145
147
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import SwcModeSwitchEvent, TimingEvent
|
|
@@ -236,6 +238,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
236
238
|
def readSd(self, element: ET.Element, sdg: Sdg):
|
|
237
239
|
for child_element in self.findall(element, "./SD"):
|
|
238
240
|
sd = Sd()
|
|
241
|
+
self.readARObjectAttributes(child_element, sd)
|
|
239
242
|
if 'GID' in child_element.attrib:
|
|
240
243
|
sd.setGID(child_element.attrib['GID'])
|
|
241
244
|
sd.setValue(child_element.text)
|
|
@@ -252,6 +255,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
252
255
|
|
|
253
256
|
def getSdg(self, element: ET.Element) -> Sdg:
|
|
254
257
|
sdg = Sdg()
|
|
258
|
+
self.readARObjectAttributes(element, sdg)
|
|
255
259
|
if 'GID' in element.attrib:
|
|
256
260
|
sdg.setGID(element.attrib["GID"])
|
|
257
261
|
self.readSdgCaption(element, sdg)
|
|
@@ -307,8 +311,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
307
311
|
if child_element is not None:
|
|
308
312
|
# self.logger.debug("Read AdminData")
|
|
309
313
|
admin_data = AdminData()
|
|
310
|
-
|
|
311
|
-
|
|
314
|
+
self.readARObjectAttributes(child_element, admin_data)
|
|
315
|
+
admin_data.setLanguage(self.getChildElementOptionalLiteral(child_element, "LANGUAGE"))
|
|
316
|
+
admin_data.setUsedLanguages(self.getMultiLanguagePlainText(child_element, "USED-LANGUAGES"))
|
|
312
317
|
|
|
313
318
|
self.readAdminDataSdgs(child_element, admin_data)
|
|
314
319
|
self.readAdminDataDocRevisions(child_element, admin_data)
|
|
@@ -396,19 +401,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
396
401
|
instance_ref = None
|
|
397
402
|
if (child_element is not None):
|
|
398
403
|
instance_ref = AutosarVariableRef()
|
|
399
|
-
|
|
400
|
-
instance_ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF")))
|
|
401
|
-
|
|
404
|
+
self.readARObjectAttributes(child_element, instance_ref)
|
|
405
|
+
instance_ref.setAutosarVariableIRef(self.getVariableInAtomicSWCTypeInstanceRef(self.find(child_element, "AUTOSAR-VARIABLE-IREF")))
|
|
406
|
+
instance_ref.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
|
|
402
407
|
return instance_ref
|
|
403
408
|
|
|
404
|
-
def getLocalVariableRef(self, element: ET.Element, key: str) -> AutosarVariableRef:
|
|
405
|
-
child_element = self.find(element, key)
|
|
406
|
-
ref = None
|
|
407
|
-
if (child_element is not None):
|
|
408
|
-
ref = AutosarVariableRef()
|
|
409
|
-
ref.setLocalVariableRef(self.getChildElementOptionalRefType(child_element, "LOCAL-VARIABLE-REF"))
|
|
410
|
-
return ref
|
|
411
|
-
|
|
412
409
|
def _readVariableAccesses(self, element: ET.Element, parent: RunnableEntity, key: str):
|
|
413
410
|
for child_element in self.findall(element, "%s/VARIABLE-ACCESS" % key):
|
|
414
411
|
short_name = self.getShortName(child_element)
|
|
@@ -432,10 +429,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
432
429
|
variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
433
430
|
elif (key == "WRITTEN-LOCAL-VARIABLES"):
|
|
434
431
|
variable_access = parent.createWrittenLocalVariable(short_name)
|
|
435
|
-
variable_access.setAccessedVariableRef(self.
|
|
432
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
436
433
|
elif (key == "READ-LOCAL-VARIABLES"):
|
|
437
434
|
variable_access = parent.createReadLocalVariable(short_name)
|
|
438
|
-
variable_access.setAccessedVariableRef(self.
|
|
435
|
+
variable_access.setAccessedVariableRef(self.getAutosarVariableRef(child_element, "ACCESSED-VARIABLE"))
|
|
439
436
|
else:
|
|
440
437
|
self.notImplemented("Unsupported Variable Accesss <%s>" % key)
|
|
441
438
|
|
|
@@ -577,6 +574,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
577
574
|
|
|
578
575
|
def getRoleBasedPortAssignment(self, element: ET.Element) -> RoleBasedPortAssignment:
|
|
579
576
|
assignment = RoleBasedPortAssignment()
|
|
577
|
+
self.readARObjectAttributes(element, assignment)
|
|
580
578
|
assignment.portPrototypeRef = self.getChildElementOptionalRefType(element, "PORT-PROTOTYPE-REF")
|
|
581
579
|
assignment.role = self.getChildElementOptionalLiteral(element, "ROLE")
|
|
582
580
|
return assignment
|
|
@@ -1539,6 +1537,11 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1539
1537
|
# self.logger.debug("Read BackgroundEvent <%s>" % event.getShortName())
|
|
1540
1538
|
self.readRTEEvent(element, event)
|
|
1541
1539
|
|
|
1540
|
+
def readDataSendCompletedEvent(self, element, event: DataSendCompletedEvent):
|
|
1541
|
+
# self.logger.debug("Read DataSendCompletedEvent <%s>" % event.getShortName())
|
|
1542
|
+
self.readRTEEvent(element, event)
|
|
1543
|
+
event.setEventSourceRef(self.getChildElementOptionalRefType(element, "EVENT-SOURCE-REF"))
|
|
1544
|
+
|
|
1542
1545
|
def readSwcInternalBehaviorEvents(self, element: ET.Element, parent: SwcInternalBehavior):
|
|
1543
1546
|
for child_element in self.findall(element, "EVENTS/*"):
|
|
1544
1547
|
tag_name = self.getTagName(child_element)
|
|
@@ -1569,6 +1572,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1569
1572
|
elif tag_name == "BACKGROUND-EVENT":
|
|
1570
1573
|
event = parent.createBackgroundEvent(self.getShortName(child_element))
|
|
1571
1574
|
self.readBackgroundEvent(child_element, event)
|
|
1575
|
+
elif tag_name == "DATA-SEND-COMPLETED-EVENT":
|
|
1576
|
+
event = parent.createDataSendCompletedEvent(self.getShortName(child_element))
|
|
1577
|
+
self.readDataSendCompletedEvent(child_element, event)
|
|
1572
1578
|
else:
|
|
1573
1579
|
self.notImplemented("Unsupported SwcInternalBehavior Event <%s>" % tag_name)
|
|
1574
1580
|
|
|
@@ -1821,21 +1827,27 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1821
1827
|
data_type.setSwDataDefProps(self.getSwDataDefProps(element, "SW-DATA-DEF-PROPS"))
|
|
1822
1828
|
self.readApplicationRecordDataTypeElements(element, data_type)
|
|
1823
1829
|
|
|
1824
|
-
def
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1830
|
+
def readImplementationDataTypeElement(self, element: ET.Element, impl_data_type_element: ImplementationDataTypeElement):
|
|
1831
|
+
self.readAutosarDataType(element, impl_data_type_element)
|
|
1832
|
+
impl_data_type_element.setArraySize(self.getChildElementOptionalPositiveInteger(element, "ARRAY-SIZE"))
|
|
1833
|
+
impl_data_type_element.setArraySizeHandling(self.getChildElementOptionalLiteral(element, "ARRAY-SIZE-HANDLING"))
|
|
1834
|
+
impl_data_type_element.setArraySizeSemantics(self.getChildElementOptionalLiteral(element, "ARRAY-SIZE-SEMANTICS"))
|
|
1835
|
+
self.readImplementationDataTypeSubElements(element, impl_data_type_element)
|
|
1836
|
+
|
|
1837
|
+
def readImplementationDataTypeSubElements(self, element: ET.Element, parent: ImplementationDataType):
|
|
1838
|
+
for child_element in self.findall(element, "SUB-ELEMENTS/*"):
|
|
1839
|
+
tag_name = self.getTagName(child_element)
|
|
1840
|
+
if tag_name == "IMPLEMENTATION-DATA-TYPE-ELEMENT":
|
|
1841
|
+
impl_data_type_element = parent.createImplementationDataTypeElement(self.getShortName(child_element))
|
|
1842
|
+
self.readImplementationDataTypeElement(child_element, impl_data_type_element)
|
|
1843
|
+
else:
|
|
1844
|
+
self.notImplemented("Unsupported ImplementationDataType SubElement <%s>" % tag_name)
|
|
1833
1845
|
|
|
1834
1846
|
def readImplementationDataType(self, element: ET.Element, data_type: ImplementationDataType):
|
|
1835
1847
|
self.logger.debug("Read ImplementationDataType <%s>" % data_type.getShortName())
|
|
1836
1848
|
self.readAutosarDataType(element, data_type)
|
|
1837
1849
|
data_type.setDynamicArraySizeProfile(self.getChildElementOptionalLiteral(element, "DYNAMIC-ARRAY-SIZE-PROFILE"))
|
|
1838
|
-
self.
|
|
1850
|
+
self.readImplementationDataTypeSubElements(element, data_type)
|
|
1839
1851
|
self.readImplementationDataTypeSymbolProps(element, data_type)
|
|
1840
1852
|
data_type.setTypeEmitter(self.getChildElementOptionalLiteral(element, "TYPE-EMITTER"))
|
|
1841
1853
|
|
|
@@ -1872,11 +1884,13 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1872
1884
|
self.readARObjectAttributes(element, com_spec)
|
|
1873
1885
|
for child_element in self.findall(element, "COMPOSITE-NETWORK-REPRESENTATIONS/COMPOSITE-NETWORK-REPRESENTATION"):
|
|
1874
1886
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
1875
|
-
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF"))
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1887
|
+
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF"))
|
|
1888
|
+
com_spec.setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION"))
|
|
1889
|
+
com_spec.setHandleOutOfRange(self.getChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE"))
|
|
1890
|
+
com_spec.setHandleOutOfRangeStatus(self.getChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE-STATUS"))
|
|
1891
|
+
com_spec.setMaxDeltaCounterInit(self.getChildElementOptionalPositiveInteger(element, "MAX-DELTA-COUNTER-INIT"))
|
|
1892
|
+
com_spec.setMaxNoNewOrRepeatedData(self.getChildElementOptionalPositiveInteger(element, "MAX-NO-NEW-OR-REPEATED-DATA"))
|
|
1893
|
+
com_spec.setUsesEndToEndProtection(self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION"))
|
|
1880
1894
|
|
|
1881
1895
|
def getSwValues(self, element: ET.Element, key: str) -> SwValues:
|
|
1882
1896
|
child_element = self.find(element, key)
|
|
@@ -1948,21 +1962,21 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1948
1962
|
def getModeSwitchReceiverComSpec(self, element: ET.Element) -> ModeSwitchReceiverComSpec:
|
|
1949
1963
|
com_spec = ModeSwitchReceiverComSpec()
|
|
1950
1964
|
self.readARObjectAttributes(element, com_spec)
|
|
1951
|
-
com_spec.setEnhancedModeApi(self.getChildElementOptionalBooleanValue(element, "ENHANCED-MODE-API"))
|
|
1952
|
-
|
|
1953
|
-
|
|
1965
|
+
com_spec.setEnhancedModeApi(self.getChildElementOptionalBooleanValue(element, "ENHANCED-MODE-API"))
|
|
1966
|
+
com_spec.setModeGroupRef(self.getChildElementOptionalRefType(element, "MODE-GROUP-REF"))
|
|
1967
|
+
com_spec.setSupportsAsynchronousModeSwitch(self.getChildElementOptionalBooleanValue(element, "SUPPORTS-ASYNCHRONOUS-MODE-SWITCH"))
|
|
1954
1968
|
return com_spec
|
|
1955
1969
|
|
|
1956
1970
|
def getNonqueuedReceiverComSpec(self, element: ET.Element) -> NonqueuedReceiverComSpec:
|
|
1957
1971
|
com_spec = NonqueuedReceiverComSpec()
|
|
1958
1972
|
self.readARObjectAttributes(element, com_spec)
|
|
1959
1973
|
self.readReceiverComSpec(element, com_spec)
|
|
1960
|
-
com_spec.setAliveTimeout(self.getChildElementOptionalFloatValue(element, "ALIVE-TIMEOUT"))
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1974
|
+
com_spec.setAliveTimeout(self.getChildElementOptionalFloatValue(element, "ALIVE-TIMEOUT"))
|
|
1975
|
+
com_spec.setEnableUpdated(self.getChildElementOptionalBooleanValue(element, "ENABLE-UPDATE"))
|
|
1976
|
+
com_spec.setHandleNeverReceived(self.getChildElementOptionalBooleanValue(element, "HANDLE-NEVER-RECEIVED"))
|
|
1977
|
+
com_spec.setFilter(self.getDataFilter(element, "FILTER"))
|
|
1978
|
+
com_spec.setHandleTimeoutType(self.getChildElementOptionalLiteral(element, "HANDLE-TIMEOUT-TYPE"))
|
|
1979
|
+
com_spec.setInitValue(self.getInitValue(element))
|
|
1966
1980
|
return com_spec
|
|
1967
1981
|
|
|
1968
1982
|
def readRequiredComSpec(self, element: ET.Element, parent: RPortPrototype):
|
|
@@ -2034,23 +2048,40 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2034
2048
|
self.readARObjectAttributes(element, com_spec)
|
|
2035
2049
|
for child_element in self.findall(element, "COMPOSITE-NETWORK-REPRESENTATIONS/COMPOSITE-NETWORK-REPRESENTATION"):
|
|
2036
2050
|
com_spec.addCompositeNetworkRepresentation(self.getCompositeNetworkRepresentation(child_element))
|
|
2037
|
-
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF"))
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2051
|
+
com_spec.setDataElementRef(self.getChildElementOptionalRefType(element, "DATA-ELEMENT-REF"))
|
|
2052
|
+
com_spec.setNetworkRepresentation(self.getSwDataDefProps(element, "NETWORK-REPRESENTATION"))
|
|
2053
|
+
com_spec.setHandleOutOfRange(self.getChildElementOptionalLiteral(element, "HANDLE-OUT-OF-RANGE"))
|
|
2054
|
+
com_spec.setTransmissionAcknowledge(self.readTransmissionAcknowledgementRequest(element))
|
|
2055
|
+
com_spec.setUsesEndToEndProtection(self.getChildElementOptionalBooleanValue(element, "USES-END-TO-END-PROTECTION"))
|
|
2042
2056
|
|
|
2043
2057
|
def getNonqueuedSenderComSpec(self, element: ET.Element) -> NonqueuedSenderComSpec:
|
|
2044
2058
|
com_spec = NonqueuedSenderComSpec()
|
|
2045
2059
|
self.readSenderComSpec(element, com_spec)
|
|
2046
2060
|
com_spec.setInitValue(self.getInitValue(element))
|
|
2047
2061
|
return com_spec
|
|
2062
|
+
|
|
2063
|
+
def readTransformationComSpecProps(self, element: ET.Element, props: TransformationComSpecProps):
|
|
2064
|
+
self.readARObjectAttributes(element, props)
|
|
2065
|
+
|
|
2066
|
+
def readUserDefinedTransformationComSpecProps(self, element: ET.Element, props: UserDefinedTransformationComSpecProps):
|
|
2067
|
+
self.readTransformationComSpecProps(element, props)
|
|
2068
|
+
|
|
2069
|
+
def readServerComSpecTransformationComSpecProps(self, element: ET.Element, com_spec: ServerComSpec):
|
|
2070
|
+
for child_element in self.findall(element, "TRANSFORMATION-COM-SPEC-PROPSS/*"):
|
|
2071
|
+
tag_name = self.getTagName(child_element)
|
|
2072
|
+
if tag_name == "USER-DEFINED-TRANSFORMATION-COM-SPEC-PROPS":
|
|
2073
|
+
props = UserDefinedTransformationComSpecProps()
|
|
2074
|
+
self.readUserDefinedTransformationComSpecProps(child_element, props)
|
|
2075
|
+
com_spec.addTransformationComSpecProps(props)
|
|
2076
|
+
else:
|
|
2077
|
+
self.notImplemented("Unsupported TransformationComSpecProps <%s>" % tag_name)
|
|
2048
2078
|
|
|
2049
2079
|
def getServerComSpec(self, element: ET.Element) -> ServerComSpec:
|
|
2050
2080
|
com_spec = ServerComSpec()
|
|
2051
2081
|
self.readARObjectAttributes(element, com_spec)
|
|
2052
|
-
com_spec.setOperationRef(self.getChildElementOptionalRefType(element, "OPERATION-REF"))
|
|
2053
|
-
|
|
2082
|
+
com_spec.setOperationRef(self.getChildElementOptionalRefType(element, "OPERATION-REF"))
|
|
2083
|
+
com_spec.setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
|
|
2084
|
+
self.readServerComSpecTransformationComSpecProps(element, com_spec)
|
|
2054
2085
|
return com_spec
|
|
2055
2086
|
|
|
2056
2087
|
def getQueuedSenderComSpec(self, element: ET.Element) -> QueuedSenderComSpec:
|
|
@@ -2068,9 +2099,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2068
2099
|
|
|
2069
2100
|
def getModeSwitchSenderComSpec(self, element) -> ModeSwitchSenderComSpec:
|
|
2070
2101
|
com_spec = ModeSwitchSenderComSpec()
|
|
2071
|
-
com_spec.setModeGroupRef(self.getChildElementOptionalRefType(element, "MODE-GROUP-REF"))
|
|
2072
|
-
|
|
2073
|
-
|
|
2102
|
+
com_spec.setModeGroupRef(self.getChildElementOptionalRefType(element, "MODE-GROUP-REF"))
|
|
2103
|
+
com_spec.setModeSwitchedAck(self.getModeSwitchedAckRequest(element, "MODE-SWITCHED-ACK"))
|
|
2104
|
+
com_spec.setQueueLength(self.getChildElementOptionalNumericalValue(element, "QUEUE-LENGTH"))
|
|
2074
2105
|
return com_spec
|
|
2075
2106
|
|
|
2076
2107
|
def readProvidedComSpec(self, element: ET.Element, parent: PPortPrototype):
|
|
@@ -2454,11 +2485,12 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2454
2485
|
|
|
2455
2486
|
def readCompuScale(self, element: ET.Element, compu_scale: CompuScale):
|
|
2456
2487
|
self.readARObjectAttributes(element, compu_scale)
|
|
2457
|
-
compu_scale.
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2488
|
+
compu_scale.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL"))
|
|
2489
|
+
compu_scale.setSymbol(self.getChildElementOptionalLiteral(element, "SYMBOL"))
|
|
2490
|
+
compu_scale.setDesc(self.getMultiLanguageOverviewParagraph(element, "DESC"))
|
|
2491
|
+
compu_scale.setMask(self.getChildElementOptionalPositiveInteger(element, "MASK"))
|
|
2492
|
+
compu_scale.setLowerLimit(self.getChildLimitElement(element, "LOWER-LIMIT"))
|
|
2493
|
+
compu_scale.setUpperLimit(self.getChildLimitElement(element, "UPPER-LIMIT"))
|
|
2462
2494
|
self.readCompuScaleContents(element, compu_scale)
|
|
2463
2495
|
|
|
2464
2496
|
def getCompuScales(self, element: ET.Element) -> CompuScales:
|
|
@@ -2520,7 +2552,7 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2520
2552
|
value_spec = NumericalValueSpecification()
|
|
2521
2553
|
self.readValueSpecification(element, value_spec)
|
|
2522
2554
|
value_spec.setShortLabel(self.getChildElementOptionalLiteral(element, "SHORT-LABEL")) \
|
|
2523
|
-
.setValue(self.
|
|
2555
|
+
.setValue(self.getChildElementOptionalNumericalValue(element, "VALUE"))
|
|
2524
2556
|
return value_spec
|
|
2525
2557
|
|
|
2526
2558
|
def getTextValueSpecification(self, element: ET.Element) -> TextValueSpecification:
|
|
@@ -77,6 +77,6 @@ class Test_M2_AUTOSARTemplates_CommonStructure_ImplementationDataTypes:
|
|
|
77
77
|
assert (sub_type.getShortName() == "sub_type")
|
|
78
78
|
assert (isinstance(sub_type, ImplementationDataTypeElement))
|
|
79
79
|
|
|
80
|
-
assert (len(data_type.
|
|
81
|
-
sub_type2 = data_type.
|
|
80
|
+
assert (len(data_type.getSubElements()) == 1)
|
|
81
|
+
sub_type2 = data_type.getSubElements()[0]
|
|
82
82
|
assert (sub_type == sub_type2)
|