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.
Files changed (54) hide show
  1. armodel/cli/arxml_dump_cli.py +3 -3
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +3 -3
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +81 -36
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +104 -30
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +12 -16
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +70 -0
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +12 -9
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +22 -11
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +29 -22
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +26 -9
  11. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HardwareConfiguration.py +33 -0
  12. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HeapUsage.py +10 -0
  13. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +8 -0
  14. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/SoftwareContext.py +23 -0
  15. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/StackUsage.py +93 -0
  16. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +39 -5
  17. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +735 -27
  18. armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcBswMapping.py +48 -6
  19. armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +5 -5
  20. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +20 -3
  21. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +3 -0
  22. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +55 -1
  23. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +41 -3
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -15
  25. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +8 -0
  26. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -8
  27. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +239 -5
  28. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +56 -6
  29. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +91 -55
  30. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +10 -1
  31. armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +186 -24
  32. armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +34 -3
  33. armodel/models/M2/MSR/DataDictionary/AuxillaryObjects.py +4 -4
  34. armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +7 -0
  35. armodel/models/M2/MSR/DataDictionary/RecordLayout.py +130 -37
  36. armodel/models/M2/MSR/DataDictionary/ServiceProcessTask.py +33 -0
  37. armodel/models/__init__.py +4 -0
  38. armodel/parser/abstract_arxml_parser.py +30 -27
  39. armodel/parser/arxml_parser.py +683 -371
  40. armodel/tests/test_armodel/models/test_ar_object.py +6 -2
  41. armodel/tests/test_armodel/models/test_datatype.py +4 -4
  42. armodel/tests/test_armodel/models/test_m2_msr.py +5 -5
  43. armodel/tests/test_armodel/models/test_port_interface.py +4 -4
  44. armodel/tests/test_armodel/parser/test_parse_bswmd.py +48 -48
  45. armodel/tests/test_armodel/parser/test_sw_components.py +1 -1
  46. armodel/tests/test_armodel/parser/test_system.py +0 -1
  47. armodel/writer/abstract_arxml_writer.py +10 -0
  48. armodel/writer/arxml_writer.py +668 -358
  49. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/METADATA +34 -1
  50. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/RECORD +54 -48
  51. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/LICENSE +0 -0
  52. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/WHEEL +0 -0
  53. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/entry_points.txt +0 -0
  54. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/top_level.txt +0 -0
@@ -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.application_data_type_ref.value))
56
- print("%s- impl: %s" % (" " * (indent + 4), mapping.implementation_data_type_ref.value))
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.service_id))
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.application_data_type_ref is None) or (data_type_map.implementation_data_type_ref is None):
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.application_data_type_ref.value] = data_type_map.implementation_data_type_ref.value
117
- self._impl_appl_type_maps[data_type_map.implementation_data_type_ref.value] = data_type_map.application_data_type_ref.value
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._interrupt_category = ""
142
- self.interrupt_source = ""
149
+ self.interruptCategory = None # type: BswInterruptCategory
150
+ self.interruptSource = None # type: String
143
151
 
144
- @property
145
- def interrupt_category(self) -> str:
146
- return self._interrupt_category
152
+ def getInterruptCategory(self):
153
+ return self.interruptCategory
147
154
 
148
- @interrupt_category.setter
149
- def interrupt_category(self, value):
150
- if (value.upper() not in ("CAT1", "CAT2")):
151
- raise ValueError("Invalid interrupt category <%s> of %s" % (value, self.short_name))
152
- self._interrupt_category = value
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._activation = ""
195
+ self.activation = None
181
196
 
182
- @property
183
- def activation(self) -> str:
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: ARFloat
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.data_ref = None # type: RefType
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.event_source_ref = None # type: RefType
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
- event = BswCalledEntity(self, short_name)
275
- self.elements[short_name] = event
276
- self.entities.append(event)
277
- return self.elements[short_name]
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
- event = BswSchedulableEntity(self, short_name)
285
- self.elements[short_name] = event
286
- self.entities.append(event)
287
- return self.elements[short_name]
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 ARBoolean, ARLiteral, ARNumerical
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.service_id = None # type: ARNumerical
10
- self.is_reentrant = None # type: ARBoolean
11
- self.is_synchronous = None # type: ARBoolean
12
- self.call_type = None # type: ARLiteral
13
- self._execution_context = None # type: ARLiteral
14
- self._sw_service_impl_policy = None # type: ARLiteral
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
- @property
17
- def execution_context(self):
18
- return self._execution_context
41
+ def getCallType(self):
42
+ return self.callType
19
43
 
20
- @execution_context.setter
21
- def execution_context(self, value):
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._execution_context = value
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
- @property
27
- def sw_service_impl_policy(self):
28
- return self._sw_service_impl_policy
67
+ def setIsReentrant(self, value):
68
+ self.isReentrant = value
69
+ return self
29
70
 
30
- @sw_service_impl_policy.setter
31
- def sw_service_impl_policy(self, value):
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._sw_service_impl_policy = value
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.service_id != None:
40
- result.append("service_id : %d" % self.service_id)
41
- if self.is_reentrant != None:
42
- result.append("is_reentrant : %s" % self.is_reentrant)
43
- if self.is_synchronous != None:
44
- result.append("is_synchronous : %s" % self.is_synchronous)
45
- if self.call_type != None:
46
- result.append("call_type : %s" % self.call_type)
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.execution_context)
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.sw_service_impl_policy)
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.module_id = None # type: ARPositiveInteger
22
+ self.moduleId = None # type: ARPositiveInteger
23
+
23
24
  # PROVIDED-ENTRYS
24
- self._implementedEntryRefs = [] # type: List[RefType]
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._implementedEntryRefs.append(entry_ref)
38
+ self.implementedEntryRefs.append(entry_ref)
31
39
 
32
40
  def getImplementedEntries(self) -> List[RefType]:
33
- return self._implementedEntryRefs
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._artifactDescriptors = [] # type: List[AutosarEngineeringObject]
31
+ self.artifactDescriptors = [] # type: List[AutosarEngineeringObject]
32
32
  self.callbackHeaderRefs = [] # type: List[RefType]
33
33
 
34
34
  def addArtifactDescriptor(self, desc: AutosarEngineeringObject):
35
- self._artifactDescriptors.append(desc)
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._artifactDescriptors
40
+ return self.artifactDescriptors
40
41
  else:
41
- return list(filter(lambda a: a.getCategory().getText() == category, self._artifactDescriptors))
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 setResourceConsumption(self, consumption: ResourceConsumption):
203
- self.elements[consumption.short_name] = consumption
204
- self.resourceConsumption = consumption
205
- return self
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.arrayImplPolicy = None
100
- self.arraySize = None
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._type_emitter = None # type: ARLiteral
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._type_emitter = emitter
145
+ self.typeEmitter = emitter
135
146
  return self
136
147
 
137
148
  def getTypeEmitter(self) -> str:
138
- return self._type_emitter
149
+ return self.typeEmitter
139
150
 
140
151
  def setStructElementType(self, type: str):
141
152
  self._struct_type = type