armodel 1.4.0__py3-none-any.whl → 1.5.0__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 (72) hide show
  1. armodel/__init__.py +2 -1
  2. armodel/cli/arxml_dump_cli.py +9 -7
  3. armodel/cli/arxml_format_cli.py +72 -0
  4. armodel/cli/connector_update_cli.py +11 -4
  5. armodel/data_models/__init__.py +0 -0
  6. armodel/data_models/sw_connector.py +22 -0
  7. armodel/lib/data_analyzer.py +1 -1
  8. armodel/models/__init__.py +3 -2
  9. armodel/models/annotation.py +20 -0
  10. armodel/models/ar_object.py +163 -18
  11. armodel/models/ar_package.py +228 -24
  12. armodel/models/ar_ref.py +85 -6
  13. armodel/models/bsw_module_template.py +113 -27
  14. armodel/models/calibration.py +107 -4
  15. armodel/models/common_structure.py +142 -52
  16. armodel/models/communication.py +10 -1
  17. armodel/models/data_def_properties.py +16 -0
  18. armodel/models/data_dictionary.py +46 -9
  19. armodel/models/data_prototype.py +24 -5
  20. armodel/models/datatype.py +69 -20
  21. armodel/models/end_to_end_protection.py +67 -0
  22. armodel/models/fibex/__init__.py +0 -0
  23. armodel/models/fibex/can_communication.py +6 -0
  24. armodel/models/fibex/fibex_4_multiplatform.py +145 -0
  25. armodel/models/fibex/fibex_core.py +341 -0
  26. armodel/models/fibex/lin_communication.py +17 -0
  27. armodel/models/fibex/lin_topology.py +7 -0
  28. armodel/models/general_structure.py +44 -18
  29. armodel/models/global_constraints.py +4 -4
  30. armodel/models/implementation.py +79 -32
  31. armodel/models/internal_behavior.py +63 -0
  32. armodel/models/m2_msr.py +6 -4
  33. armodel/models/mode_declaration.py +8 -0
  34. armodel/models/multilanguage_data.py +42 -0
  35. armodel/models/per_instance_memory.py +14 -0
  36. armodel/models/port_interface.py +27 -4
  37. armodel/models/port_prototype.py +57 -19
  38. armodel/models/record_layout.py +118 -0
  39. armodel/models/rpt_scenario.py +20 -0
  40. armodel/models/service_mapping.py +11 -0
  41. armodel/models/service_needs.py +48 -0
  42. armodel/models/sw_component.py +293 -45
  43. armodel/models/system_template/__init__.py +0 -0
  44. armodel/models/system_template/network_management.py +7 -0
  45. armodel/models/system_template/transport_protocols.py +7 -0
  46. armodel/models/timing.py +91 -0
  47. armodel/parser/abstract_arxml_parser.py +248 -0
  48. armodel/parser/arxml_parser.py +1571 -844
  49. armodel/parser/connector_xlsx_parser.py +190 -0
  50. armodel/parser/excel_parser.py +18 -0
  51. armodel/tests/test_armodel/models/test_ar_object.py +152 -0
  52. armodel/tests/test_armodel/models/test_ar_package.py +1 -1
  53. armodel/tests/test_armodel/models/test_common_structure.py +2 -2
  54. armodel/tests/test_armodel/models/test_data_dictionary.py +7 -7
  55. armodel/tests/test_armodel/models/test_data_prototype.py +3 -3
  56. armodel/tests/test_armodel/models/test_datatype.py +11 -11
  57. armodel/tests/test_armodel/models/test_general_structure.py +1 -1
  58. armodel/tests/test_armodel/models/test_implementation.py +26 -0
  59. armodel/tests/test_armodel/models/test_m2_msr.py +4 -4
  60. armodel/tests/test_armodel/models/test_port_interface.py +5 -5
  61. armodel/tests/test_armodel/parser/test_arxml_parser.py +15 -0
  62. armodel/tests/test_armodel/parser/test_parse_bswmd.py +74 -42
  63. armodel/tests/test_armodel/parser/test_sw_components.py +93 -0
  64. armodel/writer/abstract_arxml_writer.py +123 -0
  65. armodel/writer/arxml_writer.py +1701 -358
  66. {armodel-1.4.0.dist-info → armodel-1.5.0.dist-info}/METADATA +114 -3
  67. armodel-1.5.0.dist-info/RECORD +91 -0
  68. {armodel-1.4.0.dist-info → armodel-1.5.0.dist-info}/WHEEL +1 -1
  69. {armodel-1.4.0.dist-info → armodel-1.5.0.dist-info}/entry_points.txt +2 -0
  70. armodel-1.4.0.dist-info/RECORD +0 -60
  71. {armodel-1.4.0.dist-info → armodel-1.5.0.dist-info}/LICENSE +0 -0
  72. {armodel-1.4.0.dist-info → armodel-1.5.0.dist-info}/top_level.txt +0 -0
@@ -1,12 +1,25 @@
1
- from typing import List
2
-
1
+ from typing import Dict, List
2
+
3
+ from armodel.models.fibex.can_communication import CanFrame
4
+ from armodel.models.fibex.fibex_4_multiplatform import Gateway
5
+
6
+ from .system_template.transport_protocols import CanTpConfig
7
+ from .system_template.network_management import NmConfig
8
+ from .fibex.fibex_core import DcmIPdu, ISignal, NPdu, NmPdu
9
+ from .fibex.lin_communication import LinUnconditionalFrame
10
+ from .fibex.lin_topology import LinCluster
11
+ from .timing import SwcTiming
12
+ from .data_dictionary import SwAddrMethod
13
+ from .record_layout import SwRecordLayout
14
+ from .end_to_end_protection import EndToEndProtectionSet
3
15
  from .unit import Unit
4
16
  from .general_structure import Identifiable, ARObject, Referrable, CollectableElement, SwcBswMapping
5
- from .port_interface import SenderReceiverInterface, ClientServerInterface
6
- from .sw_component import SwComponentType, EcuAbstractionSwComponentType, AtomicSwComponentType, ApplicationSwComponentType, ServiceSwComponentType, CompositionSwComponentType, SensorActuatorSwComponentType
7
- from .datatype import ImplementationDataType, ApplicationDataType, DataTypeMappingSet, DataTypeMap, SwBaseType, ApplicationPrimitiveDataType, ApplicationRecordDataType
17
+ from .port_interface import ModeSwitchInterface, SenderReceiverInterface, ClientServerInterface, TriggerInterface
18
+ from .sw_component import SwComponentType, EcuAbstractionSwComponentType, AtomicSwComponentType, ApplicationSwComponentType
19
+ from .sw_component import ServiceSwComponentType, CompositionSwComponentType, SensorActuatorSwComponentType, ComplexDeviceDriverSwComponentType
20
+ from .datatype import ApplicationArrayDataType, ImplementationDataType, ApplicationDataType, DataTypeMappingSet, DataTypeMap, SwBaseType, ApplicationPrimitiveDataType, ApplicationRecordDataType
8
21
  from .m2_msr import CompuMethod
9
- from .common_structure import ConstantSpecification
22
+ from .common_structure import ConstantSpecification, ModeDeclarationGroup
10
23
  from .implementation import BswImplementation, SwcImplementation, Implementation
11
24
  from .bsw_module_template import BswModuleDescription, BswModuleEntry
12
25
  from .global_constraints import DataConstr
@@ -16,14 +29,28 @@ class ARPackage(Identifiable, CollectableElement):
16
29
  Identifiable.__init__(self, parent, short_name)
17
30
  CollectableElement.__init__(self)
18
31
 
32
+ self._ar_packages = {} # type: Dict[str, ARPackage]
33
+
19
34
  def getARPackages(self): # type: (...) -> List[ARPackage]
20
- return list(filter(lambda e: isinstance(e, ARPackage), self.elements.values()))
35
+ return list(sorted(self._ar_packages.values(), key= lambda a: a.short_name))
36
+ #return list(filter(lambda e: isinstance(e, ARPackage), self.elements.values()))
21
37
 
22
38
  def createARPackage(self, short_name: str):
39
+ '''
23
40
  if (short_name not in self.elements):
24
41
  ar_package = ARPackage(self, short_name)
25
42
  self.elements[short_name] = ar_package
26
43
  return self.elements[short_name]
44
+ '''
45
+ if short_name not in self._ar_packages:
46
+ ar_package = ARPackage(self, short_name)
47
+ self._ar_packages[short_name] = ar_package
48
+ return self._ar_packages[short_name]
49
+
50
+ def getElement(self, short_name: str) -> Referrable:
51
+ if (short_name in self._ar_packages):
52
+ return self._ar_packages[short_name]
53
+ return CollectableElement.getElement(self, short_name)
27
54
 
28
55
  def createEcuAbstractionSwComponentType(self, short_name: str) -> EcuAbstractionSwComponentType:
29
56
  if (short_name not in self.elements):
@@ -32,10 +59,16 @@ class ARPackage(Identifiable, CollectableElement):
32
59
  return self.elements[short_name]
33
60
 
34
61
  def createApplicationSwComponentType(self, short_name: str) -> ApplicationSwComponentType:
35
- if (short_name not in self.elements):
62
+ if short_name not in self.elements:
36
63
  sw_component = ApplicationSwComponentType(self, short_name)
37
64
  self.elements[short_name] = sw_component
38
65
  return self.elements[short_name]
66
+
67
+ def createComplexDeviceDriverSwComponentType(self, short_name: str) -> ComplexDeviceDriverSwComponentType:
68
+ if short_name not in self.elements:
69
+ sw_component = ComplexDeviceDriverSwComponentType(self, short_name)
70
+ self.elements[short_name] = sw_component
71
+ return self.elements[short_name]
39
72
 
40
73
  def createServiceSwComponentType(self, short_name: str) -> ServiceSwComponentType:
41
74
  if (short_name not in self.elements):
@@ -129,8 +162,8 @@ class ARPackage(Identifiable, CollectableElement):
129
162
 
130
163
  def createSwcBswMapping(self, short_name: str) -> SwcBswMapping:
131
164
  if (short_name not in self.elements):
132
- sw_component = SwcBswMapping(self, short_name)
133
- self.elements[short_name] = sw_component
165
+ mapping = SwcBswMapping(self, short_name)
166
+ self.elements[short_name] = mapping
134
167
  return self.elements[short_name]
135
168
 
136
169
  def createConstantSpecification(self, short_name: str) -> ConstantSpecification:
@@ -141,24 +174,132 @@ class ARPackage(Identifiable, CollectableElement):
141
174
 
142
175
  def createDataConstr(self, short_name: str) -> DataConstr:
143
176
  if (short_name not in self.elements):
144
- spec = DataConstr(self, short_name)
145
- self.elements[short_name] = spec
177
+ constr = DataConstr(self, short_name)
178
+ self.elements[short_name] = constr
146
179
  return self.elements[short_name]
147
180
 
148
181
  def createUnit(self, short_name: str) -> Unit:
149
182
  if (short_name not in self.elements):
150
- spec = Unit(self, short_name)
183
+ unit = Unit(self, short_name)
184
+ self.elements[short_name] = unit
185
+ return self.elements[short_name]
186
+
187
+ def createEndToEndProtectionSet(self, short_name: str) -> EndToEndProtectionSet:
188
+ if (short_name not in self.elements):
189
+ spec = EndToEndProtectionSet(self, short_name)
151
190
  self.elements[short_name] = spec
152
191
  return self.elements[short_name]
153
-
192
+
193
+ def createApplicationArrayDataType(self, short_name: str) -> ApplicationArrayDataType:
194
+ if (short_name not in self.elements):
195
+ data_type = ApplicationArrayDataType(self, short_name)
196
+ self.elements[short_name] = data_type
197
+ return self.elements[short_name]
198
+
199
+ def createSwRecordLayout(self, short_name: str) -> SwRecordLayout:
200
+ if (short_name not in self.elements):
201
+ layout = SwRecordLayout(self, short_name)
202
+ self.elements[short_name] = layout
203
+ return self.elements[short_name]
204
+
205
+ def createSwAddrMethod(self, short_name: str) -> SwAddrMethod:
206
+ if (short_name not in self.elements):
207
+ method = SwAddrMethod(self, short_name)
208
+ self.elements[short_name] = method
209
+ return self.elements[short_name]
210
+
211
+ def createTriggerInterface(self, short_name: str) -> TriggerInterface:
212
+ if (short_name not in self.elements):
213
+ trigger_interface = TriggerInterface(self, short_name)
214
+ self.elements[short_name] = trigger_interface
215
+ return self.elements[short_name]
216
+
217
+ def createModeDeclarationGroup(self, short_name: str) -> ModeDeclarationGroup:
218
+ if (short_name not in self.elements):
219
+ group = ModeDeclarationGroup(self, short_name)
220
+ self.elements[short_name] = group
221
+ return self.elements[short_name]
222
+
223
+ def createModeSwitchInterface(self, short_name: str) -> ModeSwitchInterface:
224
+ if (short_name not in self.elements):
225
+ switch_interface = ModeSwitchInterface(self, short_name)
226
+ self.elements[short_name] = switch_interface
227
+ return self.elements[short_name]
228
+
229
+ def createSwcTiming(self, short_name: str) -> SwcTiming:
230
+ if (short_name not in self.elements):
231
+ timing = SwcTiming(self, short_name)
232
+ self.elements[short_name] = timing
233
+ return self.elements[short_name]
234
+
235
+ def createLinCluster(self, short_name: str) -> LinCluster:
236
+ if (short_name not in self.elements):
237
+ cluster = LinCluster(self, short_name)
238
+ self.elements[short_name] = cluster
239
+ return self.elements[short_name]
240
+
241
+ def createLinUnconditionalFrame(self, short_name: str) -> LinUnconditionalFrame:
242
+ if (short_name not in self.elements):
243
+ frame = LinUnconditionalFrame(self, short_name)
244
+ self.elements[short_name] = frame
245
+ return self.elements[short_name]
246
+
247
+ def createNmPdu(self, short_name: str) -> NmPdu:
248
+ if (short_name not in self.elements):
249
+ pdu = NmPdu(self, short_name)
250
+ self.elements[short_name] = pdu
251
+ return self.elements[short_name]
252
+
253
+ def createNPdu(self, short_name: str) -> NPdu:
254
+ if (short_name not in self.elements):
255
+ pdu = NPdu(self, short_name)
256
+ self.elements[short_name] = pdu
257
+ return self.elements[short_name]
258
+
259
+ def createDcmIPdu(self, short_name: str) -> DcmIPdu:
260
+ if (short_name not in self.elements):
261
+ pdu = DcmIPdu(self, short_name)
262
+ self.elements[short_name] = pdu
263
+ return self.elements[short_name]
264
+
265
+ def createNmConfig(self, short_name: str) -> NmConfig:
266
+ if (short_name not in self.elements):
267
+ config = NmConfig(self, short_name)
268
+ self.elements[short_name] = config
269
+ return self.elements[short_name]
270
+
271
+ def createCanTpConfig(self, short_name: str) -> CanTpConfig:
272
+ if (short_name not in self.elements):
273
+ config = CanTpConfig(self, short_name)
274
+ self.elements[short_name] = config
275
+ return self.elements[short_name]
276
+
277
+ def createCanFrame(self, short_name: str) -> CanFrame:
278
+ if (short_name not in self.elements):
279
+ frame = CanFrame(self, short_name)
280
+ self.elements[short_name] = frame
281
+ return self.elements[short_name]
282
+
283
+ def createGateway(self, short_name: str) -> Gateway:
284
+ if (short_name not in self.elements):
285
+ gateway = Gateway(self, short_name)
286
+ self.elements[short_name] = gateway
287
+ return self.elements[short_name]
288
+
289
+ def createISignal(self, short_name: str) -> ISignal:
290
+ if (short_name not in self.elements):
291
+ signal = ISignal(self, short_name)
292
+ self.elements[short_name] = signal
293
+ return self.elements[short_name]
294
+
154
295
  def getApplicationPrimitiveDataTypes(self) -> List[ApplicationPrimitiveDataType]:
155
- return list(filter(lambda a: isinstance(a, ApplicationPrimitiveDataType), self.elements.values()))
296
+ return list(sorted(filter(lambda a: isinstance(a, ApplicationPrimitiveDataType), self.elements.values()), key= lambda o:o.short_name))
156
297
 
157
298
  def getApplicationDataType(self) -> List[ApplicationDataType]:
158
299
  return list(sorted(filter(lambda a: isinstance(a, ApplicationDataType), self.elements.values()), key= lambda o:o.short_name))
159
300
 
160
301
  def getImplementationDataTypes(self) -> List[ImplementationDataType]:
161
- return list(filter(lambda a: isinstance(a, ImplementationDataType), self.elements.values()))
302
+ return list(sorted(filter(lambda a: isinstance(a, ImplementationDataType), self.elements.values()), key= lambda o:o.short_name))
162
303
 
163
304
  def getSwBaseTypes(self) -> List[SwBaseType]:
164
305
  return list(filter(lambda a: isinstance(a, SwBaseType), self.elements.values()))
@@ -174,6 +315,9 @@ class ARPackage(Identifiable, CollectableElement):
174
315
 
175
316
  def getCompositionSwComponentTypes(self) -> List[CompositionSwComponentType]:
176
317
  return list(filter(lambda a : isinstance(a, CompositionSwComponentType), self.elements.values()))
318
+
319
+ def getComplexDeviceDriverSwComponentTypes(self) -> List[ComplexDeviceDriverSwComponentType]:
320
+ return list(sorted(filter(lambda a : isinstance(a, ComplexDeviceDriverSwComponentType), self.elements.values()), key = lambda a: a.short_name))
177
321
 
178
322
  def getSenderReceiverInterfaces(self) -> List[SenderReceiverInterface]:
179
323
  return list(filter(lambda a : isinstance(a, SenderReceiverInterface), self.elements.values()))
@@ -213,8 +357,59 @@ class ARPackage(Identifiable, CollectableElement):
213
357
 
214
358
  def getUnits(self) -> List[Unit]:
215
359
  return list(filter(lambda a: isinstance(a, Unit), self.elements.values()))
360
+
361
+ def getApplicationArrayDataTypes(self) -> List[ApplicationArrayDataType]:
362
+ return list(sorted(filter(lambda a : isinstance(a, ApplicationArrayDataType), self.elements.values()), key = lambda a: a.short_name))
363
+
364
+ def getSwRecordLayouts(self) -> List[SwRecordLayout]:
365
+ return list(sorted(filter(lambda a : isinstance(a, SwRecordLayout), self.elements.values()), key = lambda a: a.short_name))
216
366
 
217
- class AUTOSAR (CollectableElement):
367
+ def getSwAddrMethods(self) -> List[SwAddrMethod]:
368
+ return list(sorted(filter(lambda a : isinstance(a, SwAddrMethod), self.elements.values()), key = lambda a: a.short_name))
369
+
370
+ def getTriggerInterfaces(self) -> List[TriggerInterface]:
371
+ return list(sorted(filter(lambda a : isinstance(a, TriggerInterface), self.elements.values()), key = lambda a: a.short_name))
372
+
373
+ def getModeDeclarationGroups(self) -> List[ModeDeclarationGroup]:
374
+ return list(sorted(filter(lambda a : isinstance(a, ModeDeclarationGroup), self.elements.values()), key = lambda a: a.short_name))
375
+
376
+ def getModeSwitchInterfaces(self) -> List[ModeSwitchInterface]:
377
+ return list(sorted(filter(lambda a : isinstance(a, ModeSwitchInterface), self.elements.values()), key = lambda a: a.short_name))
378
+
379
+ def getSwcTimings(self) -> List[SwcTiming]:
380
+ return list(sorted(filter(lambda a : isinstance(a, SwcTiming), self.elements.values()), key = lambda a: a.short_name))
381
+
382
+ def getLinClusters(self) -> List[LinCluster]:
383
+ return list(sorted(filter(lambda a : isinstance(a, LinCluster), self.elements.values()), key = lambda a: a.short_name))
384
+
385
+ def getLinUnconditionalFrames(self) -> List[LinUnconditionalFrame]:
386
+ return list(sorted(filter(lambda a : isinstance(a, LinUnconditionalFrame), self.elements.values()), key = lambda a: a.short_name))
387
+
388
+ def getNmPdus(self) -> List[NmPdu]:
389
+ return list(sorted(filter(lambda a : isinstance(a, NmPdu), self.elements.values()), key = lambda a: a.short_name))
390
+
391
+ def getNPdus(self) -> List[NPdu]:
392
+ return list(sorted(filter(lambda a : isinstance(a, NPdu), self.elements.values()), key = lambda a: a.short_name))
393
+
394
+ def getDcmIPdus(self) -> List[DcmIPdu]:
395
+ return list(sorted(filter(lambda a : isinstance(a, DcmIPdu), self.elements.values()), key = lambda a: a.short_name))
396
+
397
+ def getNmConfigs(self) -> List[NmConfig]:
398
+ return list(sorted(filter(lambda a : isinstance(a, NmConfig), self.elements.values()), key = lambda a: a.short_name))
399
+
400
+ def getCanTpConfigs(self) -> List[CanTpConfig]:
401
+ return list(sorted(filter(lambda a : isinstance(a, CanTpConfig), self.elements.values()), key = lambda a: a.short_name))
402
+
403
+ def getCanFrames(self) -> List[CanFrame]:
404
+ return list(sorted(filter(lambda a : isinstance(a, CanFrame), self.elements.values()), key = lambda a: a.short_name))
405
+
406
+ def getGateways(self) -> List[Gateway]:
407
+ return list(sorted(filter(lambda a : isinstance(a, Gateway), self.elements.values()), key = lambda a: a.short_name))
408
+
409
+ def getISignals(self) -> List[ISignal]:
410
+ return list(sorted(filter(lambda a : isinstance(a, ISignal), self.elements.values()), key = lambda a: a.short_name))
411
+
412
+ class AUTOSAR (CollectableElement):
218
413
  __instance = None
219
414
 
220
415
  @staticmethod
@@ -228,26 +423,35 @@ class AUTOSAR (CollectableElement):
228
423
  raise Exception("The AUTOSAR is singleton!")
229
424
  CollectableElement.__init__(self)
230
425
 
231
- self.version = "4.3.0"
426
+ self.schema_location = ""
232
427
  self._appl_impl_type_maps = {}
233
428
  self._impl_appl_type_maps = {}
234
429
  AUTOSAR.__instance = self
235
430
 
431
+ self._ar_packages = {} # type: Dict[str, ARPackage]
432
+
236
433
  @property
237
434
  def full_name(self):
238
435
  return ""
239
436
 
240
437
  def clear(self):
438
+ self._ar_packages = {}
241
439
  self.elements = {}
242
440
 
441
+ def getElement(self, short_name: str) -> Referrable:
442
+ if (short_name in self._ar_packages):
443
+ return self._ar_packages[short_name]
444
+ return CollectableElement.getElement(self, short_name)
445
+
243
446
  def getARPackages(self) -> List[ARPackage]:
244
- return list(filter(lambda e: isinstance(e, ARPackage), self.elements.values()))
447
+ #return list(filter(lambda e: isinstance(e, ARPackage), self.elements.values()))
448
+ return list(sorted(self._ar_packages.values(), key= lambda a: a.short_name))
245
449
 
246
450
  def createARPackage(self, short_name: str) -> ARPackage:
247
- if (short_name not in self.elements):
451
+ if (short_name not in self._ar_packages):
248
452
  ar_package = ARPackage(self, short_name)
249
- self.elements[short_name] = ar_package
250
- return self.elements[short_name]
453
+ self._ar_packages[short_name] = ar_package
454
+ return self._ar_packages[short_name]
251
455
 
252
456
  def find(self, referred_name: str) -> Referrable:
253
457
  short_name_list = referred_name.split("/")
@@ -264,11 +468,11 @@ class AUTOSAR (CollectableElement):
264
468
  def getDataType(self, data_type: ImplementationDataType) -> ImplementationDataType:
265
469
  if (isinstance(data_type, ImplementationDataType) or isinstance(data_type, SwBaseType)):
266
470
  if (data_type.category == ImplementationDataType.CATEGORY_TYPE_REFERENCE):
267
- referred_type = self.find(data_type.sw_data_def_props.implementation_data_type_ref.value)
471
+ referred_type = self.find(data_type.sw_data_def_props.implementationDataTypeRef.value)
268
472
  return self.getDataType(referred_type)
269
473
  if (data_type.category == ImplementationDataType.CATEGORY_DATA_REFERENCE):
270
474
  if (data_type.sw_data_def_props.sw_pointer_target_props.target_category == "VALUE"):
271
- referred_type = self.find(data_type.sw_data_def_props.sw_pointer_target_props.sw_data_def_props.base_type_ref.value)
475
+ referred_type = self.find(data_type.sw_data_def_props.sw_pointer_target_props.sw_data_def_props.baseTypeRef.value)
272
476
  return self.getDataType(referred_type)
273
477
  return data_type
274
478
  else:
armodel/models/ar_ref.py CHANGED
@@ -1,4 +1,5 @@
1
1
  from abc import ABCMeta
2
+ from typing import List
2
3
  from .ar_object import ARObject
3
4
 
4
5
  class RefType(ARObject):
@@ -14,16 +15,34 @@ class TRefType(RefType):
14
15
  class AutosarVariableRef(ARObject):
15
16
  def __init__(self):
16
17
  super().__init__()
17
- self.autosar_variable_iref = None
18
- self.autosar_variable_in_impl_datatype = None # type: ArVariableInImplementationDataInstanceRef
18
+ self.autosar_variable_iref = None # type: VariableInAtomicSWCTypeInstanceRef
19
+ self.autosar_variable_in_impl_datatype = None # type: ArVariableInImplementationDataInstanceRef
19
20
  self.local_variable_ref = None
20
21
 
22
+ class AutosarParameterRef(ARObject):
23
+ def __init__(self):
24
+ super().__init__()
25
+
26
+ self.autosar_parameter_iref = None # type: ParameterInAtomicSWCTypeInstanceRef
27
+ self.local_parameter_ref = None # type: RefType
28
+
21
29
  class AtpInstanceRef(ARObject, metaclass=ABCMeta):
22
30
  def __init__(self):
23
31
  if type(self) == AtpInstanceRef:
24
32
  raise NotImplementedError("AtpInstanceRef is an abstract class.")
33
+
34
+ super().__init__()
35
+
36
+ class VariableInAtomicSWCTypeInstanceRef(AtpInstanceRef):
37
+ def __init__(self):
25
38
  super().__init__()
26
39
 
40
+ self.base_ref = None # type: RefType
41
+ self.context_data_prototype_ref = None # type: RefType
42
+ self.port_prototype_ref = None # type: RefType
43
+ self.root_variable_data_prototype_ref = None # type: RefType
44
+ self.target_data_prototype_ref = None # type: RefType
45
+
27
46
  class PortInCompositionTypeInstanceRef(AtpInstanceRef, metaclass=ABCMeta):
28
47
  def __init__(self):
29
48
  if type(self) == PortInCompositionTypeInstanceRef:
@@ -95,7 +114,67 @@ class RModeInAtomicSwcInstanceRef(AtpInstanceRef):
95
114
  def __init__(self):
96
115
  super().__init__()
97
116
 
98
- self.base_ref = None # type: RefType
99
- self.context_mode_declaration_group_prototype = None # type: RefType
100
- self.context_port = None # type: RefType
101
- self.target_mode_declaration = None # type: RefType
117
+ self.base_ref = None # type: RefType
118
+ self.context_mode_declaration_group_prototype_ref = None # type: RefType
119
+ self.context_port_ref = None # type: RefType
120
+ self.target_mode_declaration_ref = None # type: RefType
121
+
122
+ class ParameterInAtomicSWCTypeInstanceRef(AtpInstanceRef):
123
+ def __init__(self):
124
+ super().__init__()
125
+
126
+ self.base_ref = None # type: RefType
127
+ self.context_data_prototype_ref = None # type: RefType
128
+ self.port_prototype_ref = None # type: RefType
129
+ self.root_parameter_data_prototype_ref = None # type: RefType
130
+ self.target_data_prototype_ref = None # type: RefType
131
+
132
+ class ApplicationCompositeElementInPortInterfaceInstanceRef(AtpInstanceRef):
133
+ def __init__(self):
134
+ super().__init__()
135
+
136
+ self.base_ref = None # type: RefType
137
+ self.context_data_prototype_ref = None # type: RefType
138
+ self.root_data_prototype_ref = None # type: RefType
139
+ self.target_data_prototype_ref = None # type: RefType
140
+
141
+ class InnerPortGroupInCompositionInstanceRef(AtpInstanceRef):
142
+ def __init__(self):
143
+ super().__init__()
144
+
145
+ self.baseRef = None # type: RefType
146
+ self.contextRef = None # type: RefType
147
+ self.targetRef = None # type: RefType
148
+
149
+ class VariableDataPrototypeInSystemInstanceRef(AtpInstanceRef):
150
+ def __init__(self):
151
+ super().__init__()
152
+
153
+ self.base_ref = None # type: RefType
154
+ self.context_component_refs = [] # type: List[RefType]
155
+ self.context_composition_ref = None # type: RefType
156
+ self.context_port_ref = None # type: RefType
157
+ self.target_data_prototype_ref = None # type: RefType
158
+
159
+ class RModeGroupInAtomicSWCInstanceRef(AtpInstanceRef):
160
+ def __init__(self):
161
+ super().__init__()
162
+
163
+ self.context_r_port = None # type: RefType
164
+ self.target_mode_group = None # type: RefType
165
+
166
+ @property
167
+ def contextRPort(self) -> RefType:
168
+ return self.context_r_port
169
+
170
+ @contextRPort.setter
171
+ def contextRPort(self, value: RefType):
172
+ self.context_r_port = value
173
+
174
+ @property
175
+ def targetModeGroup(self) -> RefType:
176
+ return self.target_mode_group
177
+
178
+ @targetModeGroup.setter
179
+ def targetModeGroup(self, value: RefType):
180
+ self.target_mode_group = value