armodel 1.7.1__py3-none-any.whl → 1.7.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/arxml_dump_cli.py +3 -3
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +3 -3
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +81 -36
- 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/ImplementationDataTypes.py +22 -11
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +29 -22
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +26 -9
- 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/MemorySectionUsage.py +8 -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 +735 -27
- 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 +20 -3
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +3 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +55 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +41 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -15
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +8 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +239 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +56 -6
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +91 -55
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +10 -1
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +186 -24
- armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +34 -3
- armodel/models/M2/MSR/DataDictionary/AuxillaryObjects.py +4 -4
- armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +7 -0
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +130 -37
- armodel/models/M2/MSR/DataDictionary/ServiceProcessTask.py +33 -0
- armodel/models/__init__.py +4 -0
- armodel/parser/abstract_arxml_parser.py +30 -27
- armodel/parser/arxml_parser.py +683 -371
- armodel/tests/test_armodel/models/test_ar_object.py +6 -2
- armodel/tests/test_armodel/models/test_datatype.py +4 -4
- armodel/tests/test_armodel/models/test_m2_msr.py +5 -5
- armodel/tests/test_armodel/models/test_port_interface.py +4 -4
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +48 -48
- armodel/tests/test_armodel/parser/test_sw_components.py +1 -1
- armodel/tests/test_armodel/parser/test_system.py +0 -1
- armodel/writer/abstract_arxml_writer.py +10 -0
- armodel/writer/arxml_writer.py +668 -358
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/METADATA +34 -1
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/RECORD +54 -48
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/LICENSE +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/WHEEL +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/top_level.txt +0 -0
armodel/cli/arxml_dump_cli.py
CHANGED
|
@@ -52,8 +52,8 @@ def show_type(indent: int, data_type: ImplementationDataType):
|
|
|
52
52
|
def show_data_type_mapping(indent: int, mapping_set: DataTypeMappingSet):
|
|
53
53
|
print("%s- Data Mapping Set <%s>:" % (" " * indent, mapping_set.short_name))
|
|
54
54
|
for mapping in mapping_set.getDataTypeMaps():
|
|
55
|
-
print("%s- appl: %s" % (" " * (indent + 2), mapping.
|
|
56
|
-
print("%s- impl: %s" % (" " * (indent + 4), mapping.
|
|
55
|
+
print("%s- appl: %s" % (" " * (indent + 2), mapping.applicationDataTypeRef.value))
|
|
56
|
+
print("%s- impl: %s" % (" " * (indent + 4), mapping.implementationDataTypeRef.value))
|
|
57
57
|
|
|
58
58
|
def show_behavior(indent:int, behavior: SwcInternalBehavior):
|
|
59
59
|
print("%s-Behavior: %s" % (" " * indent, behavior.short_name))
|
|
@@ -116,7 +116,7 @@ def show_bsw_internal_behavior(indent: int, behavior: BswInternalBehavior):
|
|
|
116
116
|
print("%s-%s: %s" % (" " * (indent + 4), "ImplementedEntryRef", starts_on_event.implementedEntryRef.value))
|
|
117
117
|
implemented_entry = document.find(starts_on_event.implementedEntryRef.value) # type: BswModuleEntry
|
|
118
118
|
print("%s-%s: %s" % (" " * (indent + 4), "ImplementedEntry", implemented_entry.short_name))
|
|
119
|
-
print("%s-%s: %d" % (" " * (indent + 6), "Service Id", implemented_entry.
|
|
119
|
+
print("%s-%s: %d" % (" " * (indent + 6), "Service Id", implemented_entry.serviceId))
|
|
120
120
|
|
|
121
121
|
def show_bsw_module_description(indent: int, description: BswModuleDescription):
|
|
122
122
|
print("%s-%s" % (" " * indent, description.short_name))
|
|
@@ -111,10 +111,10 @@ class AbstractAUTOSAR(CollectableElement):
|
|
|
111
111
|
raise ValueError("%s is not ImplementationDataType." % data_type)
|
|
112
112
|
|
|
113
113
|
def addDataTypeMap(self, data_type_map: DataTypeMap):
|
|
114
|
-
if (data_type_map.
|
|
114
|
+
if (data_type_map.applicationDataTypeRef is None) or (data_type_map.implementationDataTypeRef is None):
|
|
115
115
|
return
|
|
116
|
-
self._appl_impl_type_maps[data_type_map.
|
|
117
|
-
self._impl_appl_type_maps[data_type_map.
|
|
116
|
+
self._appl_impl_type_maps[data_type_map.applicationDataTypeRef.value] = data_type_map.implementationDataTypeRef.value
|
|
117
|
+
self._impl_appl_type_maps[data_type_map.implementationDataTypeRef.value] = data_type_map.applicationDataTypeRef.value
|
|
118
118
|
|
|
119
119
|
def convertToImplementationDataType(self, appl_data_type: str) -> ImplementationDataType:
|
|
120
120
|
if (appl_data_type not in self._appl_impl_type_maps.keys()):
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from ....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
|
|
2
2
|
from ....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet
|
|
3
3
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
4
|
-
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean, ARFloat, ARNumerical
|
|
4
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean, AREnum, ARFloat, ARNumerical, String, TimeValue
|
|
5
5
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
6
6
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
|
|
7
7
|
from ....M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
|
|
@@ -128,29 +128,40 @@ class BswCalledEntity(BswModuleEntity):
|
|
|
128
128
|
def __init__(self, parent: ARObject, short_name: str):
|
|
129
129
|
super().__init__(parent, short_name)
|
|
130
130
|
|
|
131
|
-
|
|
132
131
|
class BswSchedulableEntity(BswModuleEntity):
|
|
133
132
|
def __init__(self, parent: ARObject, short_name: str):
|
|
134
133
|
super().__init__(parent, short_name)
|
|
135
134
|
|
|
135
|
+
class BswInterruptCategory(AREnum):
|
|
136
|
+
CAT1 = "cat1"
|
|
137
|
+
CAT2 = "cat2"
|
|
138
|
+
|
|
139
|
+
def __init__(self):
|
|
140
|
+
super().__init__((
|
|
141
|
+
BswInterruptCategory.CAT1,
|
|
142
|
+
BswInterruptCategory.CAT2,
|
|
143
|
+
))
|
|
136
144
|
|
|
137
145
|
class BswInterruptEntity(BswModuleEntity):
|
|
138
146
|
def __init__(self, parent: ARObject, short_name: str):
|
|
139
147
|
super().__init__(parent, short_name)
|
|
140
148
|
|
|
141
|
-
self.
|
|
142
|
-
self.
|
|
149
|
+
self.interruptCategory = None # type: BswInterruptCategory
|
|
150
|
+
self.interruptSource = None # type: String
|
|
143
151
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
return self._interrupt_category
|
|
152
|
+
def getInterruptCategory(self):
|
|
153
|
+
return self.interruptCategory
|
|
147
154
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
155
|
+
def setInterruptCategory(self, value):
|
|
156
|
+
self.interruptCategory = value
|
|
157
|
+
return self
|
|
158
|
+
|
|
159
|
+
def getInterruptSource(self):
|
|
160
|
+
return self.interruptSource
|
|
153
161
|
|
|
162
|
+
def setInterruptSource(self, value):
|
|
163
|
+
self.interruptSource = value
|
|
164
|
+
return self
|
|
154
165
|
|
|
155
166
|
class BswEvent(Identifiable, metaclass=ABCMeta):
|
|
156
167
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -158,43 +169,50 @@ class BswEvent(Identifiable, metaclass=ABCMeta):
|
|
|
158
169
|
raise NotImplementedError("BswEvent is an abstract class.")
|
|
159
170
|
super().__init__(parent, short_name)
|
|
160
171
|
|
|
161
|
-
self.startsOnEventRef = None # type: RefType
|
|
172
|
+
self.startsOnEventRef = None # type: RefType
|
|
162
173
|
|
|
174
|
+
def getStartsOnEventRef(self):
|
|
175
|
+
return self.startsOnEventRef
|
|
176
|
+
|
|
177
|
+
def setStartsOnEventRef(self, value):
|
|
178
|
+
self.startsOnEventRef = value
|
|
179
|
+
return self
|
|
163
180
|
|
|
164
181
|
class BswOperationInvokedEvent(BswEvent):
|
|
165
182
|
def __init__(self, parent: ARObject, short_name: str):
|
|
166
183
|
super().__init__(parent, short_name)
|
|
167
184
|
|
|
168
|
-
|
|
169
185
|
class BswScheduleEvent(BswEvent, metaclass=ABCMeta):
|
|
170
186
|
def __init__(self, parent: ARObject, short_name: str):
|
|
171
187
|
if type(self) == BswScheduleEvent:
|
|
172
188
|
raise NotImplementedError("BswScheduleEvent is an abstract class.")
|
|
173
189
|
super().__init__(parent, short_name)
|
|
174
190
|
|
|
175
|
-
|
|
176
191
|
class BswModeSwitchEvent(BswScheduleEvent):
|
|
177
192
|
def __init__(self, parent: ARObject, short_name: str):
|
|
178
193
|
super().__init__(parent, short_name)
|
|
179
194
|
|
|
180
|
-
self.
|
|
195
|
+
self.activation = None
|
|
181
196
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
return self._activation
|
|
185
|
-
|
|
186
|
-
@activation.setter
|
|
187
|
-
def activation(self, value: str):
|
|
188
|
-
if (value not in ()):
|
|
189
|
-
raise ValueError("Invalid activation <%s> of BswModeSwitchEvent <%s>" % (value, self.short_name))
|
|
190
|
-
self._activation = value
|
|
197
|
+
def getActivation(self):
|
|
198
|
+
return self.activation
|
|
191
199
|
|
|
200
|
+
def setActivation(self, value):
|
|
201
|
+
self.activation = value
|
|
202
|
+
return self
|
|
192
203
|
|
|
193
204
|
class BswTimingEvent(BswScheduleEvent):
|
|
194
205
|
def __init__(self, parent: ARObject, short_name: str):
|
|
195
206
|
super().__init__(parent, short_name)
|
|
196
207
|
|
|
197
|
-
self.period = None # type:
|
|
208
|
+
self.period = None # type: TimeValue
|
|
209
|
+
|
|
210
|
+
def getPeriod(self):
|
|
211
|
+
return self.period
|
|
212
|
+
|
|
213
|
+
def setPeriod(self, value):
|
|
214
|
+
self.period = value
|
|
215
|
+
return self
|
|
198
216
|
|
|
199
217
|
@property
|
|
200
218
|
def periodMs(self) -> int:
|
|
@@ -207,22 +225,39 @@ class BswDataReceivedEvent(BswScheduleEvent):
|
|
|
207
225
|
def __init__(self, parent: ARObject, short_name: str):
|
|
208
226
|
super().__init__(parent, short_name)
|
|
209
227
|
|
|
210
|
-
self.
|
|
228
|
+
self.dataRef = None # type: RefType
|
|
211
229
|
|
|
230
|
+
def getDataRef(self):
|
|
231
|
+
return self.dataRef
|
|
232
|
+
|
|
233
|
+
def setDataRef(self, value):
|
|
234
|
+
self.dataRef = value
|
|
235
|
+
return self
|
|
212
236
|
|
|
213
237
|
class BswInternalTriggerOccurredEvent(BswScheduleEvent):
|
|
214
238
|
def __init__(self, parent: ARObject, short_name: str):
|
|
215
239
|
super().__init__(parent, short_name)
|
|
216
240
|
|
|
217
|
-
self.
|
|
241
|
+
self.eventSourceRef = None # type: RefType
|
|
218
242
|
|
|
243
|
+
def getEventSourceRef(self):
|
|
244
|
+
return self.eventSourceRef
|
|
219
245
|
|
|
246
|
+
def setEventSourceRef(self, value):
|
|
247
|
+
self.eventSourceRef = value
|
|
248
|
+
return self
|
|
220
249
|
class BswModeSwitchAckRequest(ARObject):
|
|
221
250
|
def __init__(self):
|
|
222
251
|
super().__init__()
|
|
223
252
|
|
|
224
253
|
self.timeout = None # type: ARFloat
|
|
225
254
|
|
|
255
|
+
def getTimeout(self):
|
|
256
|
+
return self.timeout
|
|
257
|
+
|
|
258
|
+
def setTimeout(self, value):
|
|
259
|
+
self.timeout = value
|
|
260
|
+
return self
|
|
226
261
|
|
|
227
262
|
class BswModeSenderPolicy(ARObject):
|
|
228
263
|
def __init__(self):
|
|
@@ -271,23 +306,33 @@ class BswInternalBehavior(InternalBehavior):
|
|
|
271
306
|
|
|
272
307
|
def createBswCalledEntity(self, short_name: str) -> BswCalledEntity:
|
|
273
308
|
if (short_name not in self.elements):
|
|
274
|
-
|
|
275
|
-
self.
|
|
276
|
-
self.entities.append(
|
|
277
|
-
return self.
|
|
309
|
+
entity = BswCalledEntity(self, short_name)
|
|
310
|
+
self.addElement(entity)
|
|
311
|
+
self.entities.append(entity)
|
|
312
|
+
return self.getElement(short_name)
|
|
278
313
|
|
|
279
314
|
def getBswCalledEntities(self) -> List[BswCalledEntity]:
|
|
280
315
|
return list(filter(lambda a: isinstance(a, BswCalledEntity), self.elements.values()))
|
|
281
316
|
|
|
282
317
|
def createBswSchedulableEntity(self, short_name: str) -> BswSchedulableEntity:
|
|
283
318
|
if (short_name not in self.elements):
|
|
284
|
-
|
|
285
|
-
self.
|
|
286
|
-
self.entities.append(
|
|
287
|
-
return self.
|
|
319
|
+
entity = BswSchedulableEntity(self, short_name)
|
|
320
|
+
self.addElement(entity)
|
|
321
|
+
self.entities.append(entity)
|
|
322
|
+
return self.getElement(short_name)
|
|
288
323
|
|
|
289
324
|
def getBswSchedulableEntities(self) -> List[BswSchedulableEntity]:
|
|
290
325
|
return list(filter(lambda a: isinstance(a, BswSchedulableEntity), self.elements.values()))
|
|
326
|
+
|
|
327
|
+
def createBswInterruptEntity(self, short_name: str) -> BswInterruptEntity:
|
|
328
|
+
if (short_name not in self.elements):
|
|
329
|
+
entity = BswInterruptEntity(self, short_name)
|
|
330
|
+
self.addElement(entity)
|
|
331
|
+
self.entities.append(entity)
|
|
332
|
+
return self.getElement(short_name)
|
|
333
|
+
|
|
334
|
+
def getBswInterruptEntities(self) -> List[BswInterruptEntity]:
|
|
335
|
+
return list(filter(lambda a: isinstance(a, BswInterruptEntity), self.elements.values()))
|
|
291
336
|
|
|
292
337
|
def getBswModuleEntities(self) -> List[BswModuleEntity]:
|
|
293
338
|
return list(filter(lambda a: isinstance(a, BswModuleEntity), self.elements.values()))
|
|
@@ -1,52 +1,126 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from ....M2.MSR.DataDictionary.ServiceProcessTask import SwServiceArg
|
|
1
4
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
2
5
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
|
|
3
|
-
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import
|
|
6
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, Boolean, Identifier, NameToken
|
|
4
7
|
|
|
5
8
|
class BswModuleEntry(ARElement):
|
|
6
9
|
def __init__(self, parent: ARObject, short_name: str):
|
|
7
10
|
super().__init__(parent, short_name)
|
|
8
11
|
|
|
9
|
-
self.
|
|
10
|
-
self.
|
|
11
|
-
self.
|
|
12
|
-
self.
|
|
13
|
-
self.
|
|
14
|
-
self.
|
|
12
|
+
self.arguments = [] # type: List[SwServiceArg]
|
|
13
|
+
self.bswEntryKind = None # type: BswEntryKindEnum
|
|
14
|
+
self.callType = None # type: BswCallType
|
|
15
|
+
self.executionContext = None # type: BswExecutionContext
|
|
16
|
+
self.functionPrototypeEmitter = None # type: NameToken
|
|
17
|
+
self.isReentrant = None # type: Boolean
|
|
18
|
+
self.isSynchronous = None # type: Boolean
|
|
19
|
+
self.returnType = None # type: SwServiceArg
|
|
20
|
+
self.role = None # type: Identifier
|
|
21
|
+
self.serviceId = None # type: ARNumerical
|
|
22
|
+
self.swServiceImplPolicy = None # type: SwServiceImplPolicyEnum
|
|
23
|
+
|
|
24
|
+
def getArguments(self):
|
|
25
|
+
return self.arguments
|
|
26
|
+
|
|
27
|
+
def createArgument(self, short_name: str) -> SwServiceArg:
|
|
28
|
+
if (short_name not in self.elements):
|
|
29
|
+
arg = SwServiceArg(self, short_name)
|
|
30
|
+
self.addElement(arg)
|
|
31
|
+
self.arguments.append(arg)
|
|
32
|
+
return self.getElement(short_name)
|
|
33
|
+
|
|
34
|
+
def getBswEntryKind(self):
|
|
35
|
+
return self.bswEntryKind
|
|
36
|
+
|
|
37
|
+
def setBswEntryKind(self, value):
|
|
38
|
+
self.bswEntryKind = value
|
|
39
|
+
return self
|
|
15
40
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return self._execution_context
|
|
41
|
+
def getCallType(self):
|
|
42
|
+
return self.callType
|
|
19
43
|
|
|
20
|
-
|
|
21
|
-
|
|
44
|
+
def setCallType(self, value):
|
|
45
|
+
self.callType = value
|
|
46
|
+
return self
|
|
47
|
+
|
|
48
|
+
def getExecutionContext(self):
|
|
49
|
+
return self.executionContext
|
|
50
|
+
|
|
51
|
+
def setExecutionContext(self, value):
|
|
22
52
|
if value.upper() not in ("HOOK", "INTERRUPT-CAT-1", "INTERRUPT-CAT-2", "TASK", "UNSPECIFIED"):
|
|
23
53
|
raise ValueError("Invalid execution context <%s> of BswModuleEntry <%s>" % (value, self.short_name))
|
|
24
|
-
self.
|
|
54
|
+
self.executionContext = value
|
|
55
|
+
return self
|
|
56
|
+
|
|
57
|
+
def getFunctionPrototypeEmitter(self):
|
|
58
|
+
return self.functionPrototypeEmitter
|
|
59
|
+
|
|
60
|
+
def setFunctionPrototypeEmitter(self, value):
|
|
61
|
+
self.functionPrototypeEmitter = value
|
|
62
|
+
return self
|
|
63
|
+
|
|
64
|
+
def getIsReentrant(self):
|
|
65
|
+
return self.isReentrant
|
|
25
66
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return self
|
|
67
|
+
def setIsReentrant(self, value):
|
|
68
|
+
self.isReentrant = value
|
|
69
|
+
return self
|
|
29
70
|
|
|
30
|
-
|
|
31
|
-
|
|
71
|
+
def getIsSynchronous(self):
|
|
72
|
+
return self.isSynchronous
|
|
73
|
+
|
|
74
|
+
def setIsSynchronous(self, value):
|
|
75
|
+
self.isSynchronous = value
|
|
76
|
+
return self
|
|
77
|
+
|
|
78
|
+
def getReturnType(self):
|
|
79
|
+
return self.returnType
|
|
80
|
+
|
|
81
|
+
def setReturnType(self, value):
|
|
82
|
+
self.returnType = value
|
|
83
|
+
return self
|
|
84
|
+
|
|
85
|
+
def getRole(self):
|
|
86
|
+
return self.role
|
|
87
|
+
|
|
88
|
+
def setRole(self, value):
|
|
89
|
+
self.role = value
|
|
90
|
+
return self
|
|
91
|
+
|
|
92
|
+
def getServiceId(self):
|
|
93
|
+
return self.serviceId
|
|
94
|
+
|
|
95
|
+
def setServiceId(self, value):
|
|
96
|
+
self.serviceId = value
|
|
97
|
+
return self
|
|
98
|
+
|
|
99
|
+
def getSwServiceImplPolicy(self):
|
|
100
|
+
return self.swServiceImplPolicy
|
|
101
|
+
|
|
102
|
+
def setSwServiceImplPolicy(self, value):
|
|
32
103
|
if value.upper() not in ("INLINE", "INLINE-CONDITIONAL", "MACRO", "STANDARD"):
|
|
33
104
|
raise ValueError("Invalid SwServiceImplPolicy <%s> of BswModuleEntry <%s>" % (value, self.short_name))
|
|
34
|
-
self.
|
|
105
|
+
self.swServiceImplPolicy = value
|
|
106
|
+
return self
|
|
35
107
|
|
|
36
108
|
def __str__(self) -> str:
|
|
37
109
|
result = []
|
|
110
|
+
|
|
38
111
|
result.append("short_name : %s" % self.short_name)
|
|
39
|
-
if self.
|
|
40
|
-
result.append("service_id : %d" % self.
|
|
41
|
-
if self.
|
|
42
|
-
result.append("is_reentrant : %s" % self.
|
|
43
|
-
if self.
|
|
44
|
-
result.append("is_synchronous : %s" % self.
|
|
45
|
-
if self.
|
|
46
|
-
result.append("call_type : %s" % self.
|
|
112
|
+
if self.serviceId != None:
|
|
113
|
+
result.append("service_id : %d" % self.serviceId)
|
|
114
|
+
if self.isReentrant != None:
|
|
115
|
+
result.append("is_reentrant : %s" % self.isReentrant)
|
|
116
|
+
if self.isSynchronous != None:
|
|
117
|
+
result.append("is_synchronous : %s" % self.isSynchronous)
|
|
118
|
+
if self.callType != None:
|
|
119
|
+
result.append("call_type : %s" % self.callType)
|
|
47
120
|
if self.execution_context != None:
|
|
48
|
-
result.append("execution_context : %s" % self.
|
|
121
|
+
result.append("execution_context : %s" % self.executionContext)
|
|
49
122
|
if self.sw_service_impl_policy != None:
|
|
50
|
-
result.append("sw_service_impl_policy : %s" % self.
|
|
123
|
+
result.append("sw_service_impl_policy : %s" % self.swServiceImplPolicy)
|
|
51
124
|
|
|
52
|
-
return "\n".join(result)
|
|
125
|
+
return "\n".join(result)
|
|
126
|
+
|
|
@@ -19,30 +19,26 @@ class BswModuleDescription(ARElement):
|
|
|
19
19
|
super().__init__(parent, short_name)
|
|
20
20
|
|
|
21
21
|
# MODULE-ID
|
|
22
|
-
self.
|
|
22
|
+
self.moduleId = None # type: ARPositiveInteger
|
|
23
|
+
|
|
23
24
|
# PROVIDED-ENTRYS
|
|
24
|
-
self.
|
|
25
|
+
self.implementedEntryRefs = [] # type: List[RefType]
|
|
25
26
|
|
|
26
27
|
self.providedModeGroups = {} # type: Dict[str, ModeDeclarationGroupPrototype]
|
|
27
28
|
self.requiredModeGroups = {} # type: Dict[str, ModeDeclarationGroupPrototype]
|
|
29
|
+
|
|
30
|
+
def getModuleId(self):
|
|
31
|
+
return self.moduleId
|
|
32
|
+
|
|
33
|
+
def setModuleId(self, value):
|
|
34
|
+
self.moduleId = value
|
|
35
|
+
return self
|
|
28
36
|
|
|
29
37
|
def addImplementedEntry(self, entry_ref: RefType):
|
|
30
|
-
self.
|
|
38
|
+
self.implementedEntryRefs.append(entry_ref)
|
|
31
39
|
|
|
32
40
|
def getImplementedEntries(self) -> List[RefType]:
|
|
33
|
-
return self.
|
|
34
|
-
|
|
35
|
-
#@property
|
|
36
|
-
#def category(self) -> str:
|
|
37
|
-
# return ARElement.getCategory(self)
|
|
38
|
-
|
|
39
|
-
#@category.setter
|
|
40
|
-
#def category(self, value:str):
|
|
41
|
-
# if value is None:
|
|
42
|
-
# return
|
|
43
|
-
# if value not in ("BSW_MODULE", "BSW_CLUSTER", "LIBRARY"):
|
|
44
|
-
# raise ValueError("Invalid category <%s> of BswModuleDescription <%s>" % (value, self.short_name))
|
|
45
|
-
# ARElement.setCategory(self, value)
|
|
41
|
+
return self.implementedEntryRefs
|
|
46
42
|
|
|
47
43
|
def createProvidedModeGroup(self, short_name: str) -> ModeDeclarationGroupPrototype:
|
|
48
44
|
if (short_name not in self.elements):
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
from ....M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps
|
|
3
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Identifier
|
|
4
|
+
from ....M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
|
|
5
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
6
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable
|
|
7
|
+
|
|
8
|
+
class FlatInstanceDescriptor(Identifiable):
|
|
9
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
10
|
+
super().__init__(parent, short_name)
|
|
11
|
+
|
|
12
|
+
self.ecuExtractReferenceIRef = None # type: AnyInstanceRef
|
|
13
|
+
self.role = None # type: Identifier
|
|
14
|
+
self.rtePluginProps = None # type: RtePluginProps
|
|
15
|
+
self.swDataDefProps = None # type: SwDataDefProps
|
|
16
|
+
self.upstreamReferenceIRef = None # type: AnyInstanceRef
|
|
17
|
+
|
|
18
|
+
def getEcuExtractReferenceIRef(self):
|
|
19
|
+
return self.ecuExtractReferenceIRef
|
|
20
|
+
|
|
21
|
+
def setEcuExtractReferenceIRef(self, value):
|
|
22
|
+
self.ecuExtractReferenceIRef = value
|
|
23
|
+
return self
|
|
24
|
+
|
|
25
|
+
def getRole(self):
|
|
26
|
+
return self.role
|
|
27
|
+
|
|
28
|
+
def setRole(self, value):
|
|
29
|
+
self.role = value
|
|
30
|
+
return self
|
|
31
|
+
|
|
32
|
+
def getRtePluginProps(self):
|
|
33
|
+
return self.rtePluginProps
|
|
34
|
+
|
|
35
|
+
def setRtePluginProps(self, value):
|
|
36
|
+
self.rtePluginProps = value
|
|
37
|
+
return self
|
|
38
|
+
|
|
39
|
+
def getSwDataDefProps(self):
|
|
40
|
+
return self.swDataDefProps
|
|
41
|
+
|
|
42
|
+
def setSwDataDefProps(self, value):
|
|
43
|
+
self.swDataDefProps = value
|
|
44
|
+
return self
|
|
45
|
+
|
|
46
|
+
def getUpstreamReferenceIRef(self):
|
|
47
|
+
return self.upstreamReferenceIRef
|
|
48
|
+
|
|
49
|
+
def setUpstreamReferenceIRef(self, value):
|
|
50
|
+
self.upstreamReferenceIRef = value
|
|
51
|
+
return self
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class FlatMap(ARElement):
|
|
55
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
56
|
+
super().__init__(parent, short_name)
|
|
57
|
+
|
|
58
|
+
self.instances = [] # type: List[FlatInstanceDescriptor]
|
|
59
|
+
|
|
60
|
+
def getInstances(self):
|
|
61
|
+
return list(sorted(filter(lambda a: isinstance(a, FlatInstanceDescriptor), self.elements.values()), key= lambda o:o.short_name))
|
|
62
|
+
|
|
63
|
+
def createFlatInstanceDescriptor(self, short_name: str):
|
|
64
|
+
if (short_name not in self.elements):
|
|
65
|
+
element = FlatInstanceDescriptor(self, short_name)
|
|
66
|
+
self.addElement(element)
|
|
67
|
+
self.instances.append(element)
|
|
68
|
+
return self.getElement(short_name)
|
|
69
|
+
|
|
70
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from abc import ABCMeta
|
|
2
2
|
from typing import List
|
|
3
|
-
from ....M2.AUTOSARTemplates.CommonStructure import ResourceConsumption
|
|
3
|
+
from ....M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
|
|
4
4
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject
|
|
5
5
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, PackageableElement, Referrable
|
|
6
6
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import PositiveInteger, RefType, ARLiteral, String
|
|
@@ -28,17 +28,18 @@ class Code(Identifiable):
|
|
|
28
28
|
def __init__(self, parent: ARObject, short_name: str):
|
|
29
29
|
super().__init__(parent, short_name)
|
|
30
30
|
|
|
31
|
-
self.
|
|
31
|
+
self.artifactDescriptors = [] # type: List[AutosarEngineeringObject]
|
|
32
32
|
self.callbackHeaderRefs = [] # type: List[RefType]
|
|
33
33
|
|
|
34
34
|
def addArtifactDescriptor(self, desc: AutosarEngineeringObject):
|
|
35
|
-
self.
|
|
35
|
+
self.artifactDescriptors.append(desc)
|
|
36
|
+
return self
|
|
36
37
|
|
|
37
38
|
def getArtifactDescriptors(self, category:str = "") -> List[AutosarEngineeringObject]:
|
|
38
39
|
if (category == ""):
|
|
39
|
-
return self.
|
|
40
|
+
return self.artifactDescriptors
|
|
40
41
|
else:
|
|
41
|
-
return list(filter(lambda a: a.getCategory().getText() == category, self.
|
|
42
|
+
return list(filter(lambda a: a.getCategory().getText() == category, self.artifactDescriptors))
|
|
42
43
|
|
|
43
44
|
class Compiler(Identifiable):
|
|
44
45
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -199,10 +200,12 @@ class Implementation(PackageableElement, metaclass = ABCMeta):
|
|
|
199
200
|
def getResourceConsumption(self):
|
|
200
201
|
return self.resourceConsumption
|
|
201
202
|
|
|
202
|
-
def
|
|
203
|
-
self.elements
|
|
204
|
-
|
|
205
|
-
|
|
203
|
+
def createResourceConsumption(self, short_name: str) -> ResourceConsumption:
|
|
204
|
+
if (short_name not in self.elements):
|
|
205
|
+
consumption = ResourceConsumption(self, short_name)
|
|
206
|
+
self.addElement(consumption)
|
|
207
|
+
self.resourceConsumption = consumption
|
|
208
|
+
return self.getElement(short_name)
|
|
206
209
|
|
|
207
210
|
def getSwcBswMappingRef(self):
|
|
208
211
|
return self.swcBswMappingRef
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from abc import ABCMeta
|
|
2
2
|
from typing import List
|
|
3
3
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
4
|
-
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical
|
|
4
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, Boolean, String
|
|
5
5
|
from ....M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps
|
|
6
6
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
7
7
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean
|
|
@@ -96,19 +96,30 @@ class ImplementationDataType(AbstractImplementationDataType):
|
|
|
96
96
|
def __init__(self, parent: ARObject, short_name: str):
|
|
97
97
|
super().__init__(parent, short_name)
|
|
98
98
|
|
|
99
|
-
self.
|
|
100
|
-
self.
|
|
101
|
-
self.arraySizeHandling = None # type: ARLiteral
|
|
102
|
-
self.arraySizeSemantics = None # type: ARLiteral
|
|
99
|
+
self.dynamicArraySizeProfile = None # type: String
|
|
100
|
+
self.isStructWithOptionalElement = None # type: Boolean
|
|
103
101
|
|
|
104
102
|
self.subElements = [] # type: List[str]
|
|
105
103
|
self.symbolProps = None # type: SymbolProps
|
|
106
|
-
self.
|
|
104
|
+
self.typeEmitter = None # type: ARLiteral
|
|
107
105
|
|
|
108
|
-
self._array_type = None # ImplementationDataType
|
|
109
|
-
self._struct_type = None # ImplementationDataType
|
|
106
|
+
#self._array_type = None # ImplementationDataType
|
|
107
|
+
#self._struct_type = None # ImplementationDataType
|
|
108
|
+
|
|
109
|
+
def getDynamicArraySizeProfile(self):
|
|
110
|
+
return self.dynamicArraySizeProfile
|
|
111
|
+
|
|
112
|
+
def setDynamicArraySizeProfile(self, value):
|
|
113
|
+
self.dynamicArraySizeProfile = value
|
|
114
|
+
return self
|
|
115
|
+
|
|
116
|
+
def getIsStructWithOptionalElement(self):
|
|
117
|
+
return self.isStructWithOptionalElement
|
|
118
|
+
|
|
119
|
+
def setIsStructWithOptionalElement(self, value):
|
|
120
|
+
self.isStructWithOptionalElement = value
|
|
121
|
+
return self
|
|
110
122
|
|
|
111
|
-
|
|
112
123
|
def createImplementationDataTypeElement(self, short_name: str) -> ImplementationDataTypeElement:
|
|
113
124
|
self.subElements.append(short_name)
|
|
114
125
|
if (short_name not in self.elements):
|
|
@@ -131,11 +142,11 @@ class ImplementationDataType(AbstractImplementationDataType):
|
|
|
131
142
|
return self
|
|
132
143
|
|
|
133
144
|
def setTypeEmitter(self, emitter: str):
|
|
134
|
-
self.
|
|
145
|
+
self.typeEmitter = emitter
|
|
135
146
|
return self
|
|
136
147
|
|
|
137
148
|
def getTypeEmitter(self) -> str:
|
|
138
|
-
return self.
|
|
149
|
+
return self.typeEmitter
|
|
139
150
|
|
|
140
151
|
def setStructElementType(self, type: str):
|
|
141
152
|
self._struct_type = type
|