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
@@ -1,10 +1,11 @@
1
1
  from abc import ABCMeta
2
2
  from typing import List
3
3
 
4
+ from .....M2.AUTOSARTemplates.CommonStructure import TextValueSpecification
4
5
  from .....M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import Trigger
5
- from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
6
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable
6
7
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
7
- from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical
8
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, ArgumentDirectionEnum, PositiveInteger
8
9
  from .....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ParameterDataPrototype, VariableDataPrototype, AutosarDataPrototype
9
10
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean
10
11
  from .....M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroupPrototype
@@ -90,6 +91,48 @@ class InvalidationPolicy(ARObject):
90
91
  def setHandleInvalid(self, value):
91
92
  self.handleInvalid = value
92
93
  return self
94
+
95
+ class MetaDataItem(ARObject):
96
+ def __init__(self):
97
+ super().__init__()
98
+
99
+ self.length = None # type: PositiveInteger
100
+ self.metaDataItemType = None # type: TextValueSpecification
101
+
102
+ def getLength(self):
103
+ return self.length
104
+
105
+ def setLength(self, value):
106
+ self.length = value
107
+ return self
108
+
109
+ def getMetaDataItemType(self):
110
+ return self.metaDataItemType
111
+
112
+ def setMetaDataItemType(self, value):
113
+ self.metaDataItemType = value
114
+ return self
115
+
116
+ class MetaDataItemSet(ARObject):
117
+ def __init__(self):
118
+ super().__init__()
119
+
120
+ self.dataElementRefs = [] # type: List[RefType]
121
+ self.metaDataItems = [] # type: List[MetaDataItem]
122
+
123
+ def getDataElementRefs(self):
124
+ return self.dataElementRefs
125
+
126
+ def addDataElementRef(self, value):
127
+ self.dataElementRefs.append(value)
128
+ return self
129
+
130
+ def getMetaDataItems(self):
131
+ return self.metaDataItems
132
+
133
+ def addMetaDataItem(self, value):
134
+ self.metaDataItems.append(value)
135
+ return self
93
136
 
94
137
  class SenderReceiverInterface(DataInterface):
95
138
  def __init__(self, parent: ARObject, short_name: str):
@@ -140,8 +183,24 @@ class SenderReceiverInterface(DataInterface):
140
183
  class ArgumentDataPrototype(AutosarDataPrototype):
141
184
  def __init__(self, parent: ARObject, short_name: str):
142
185
  super().__init__(parent, short_name)
143
- self.direction = ""
144
- self.server_argument_impl_policy = ""
186
+
187
+ self.direction = None # type: ArgumentDirectionEnum
188
+ # type: ServerArgumentImplPolicyEnum
189
+ self.serverArgumentImplPolicy = None
190
+
191
+ def getDirection(self):
192
+ return self.direction
193
+
194
+ def setDirection(self, value):
195
+ self.direction = value
196
+ return self
197
+
198
+ def getServerArgumentImplPolicy(self):
199
+ return self.serverArgumentImplPolicy
200
+
201
+ def setServerArgumentImplPolicy(self, value):
202
+ self.serverArgumentImplPolicy = value
203
+ return self
145
204
 
146
205
  class ApplicationError(Identifiable):
147
206
  def __init__(self, parent: ARObject, short_name: str):
@@ -244,4 +303,179 @@ class ModeSwitchInterface(PortInterface):
244
303
  return self.elements[short_name]
245
304
 
246
305
  def getModeGroups(self) -> List[ModeDeclarationGroupPrototype]:
247
- return list(sorted(filter(lambda c: isinstance(c, ModeDeclarationGroupPrototype), self.elements.values()), key= lambda o: o.short_name))
306
+ return list(sorted(filter(lambda c: isinstance(c, ModeDeclarationGroupPrototype), self.elements.values()), key= lambda o: o.short_name))
307
+
308
+ class PortInterfaceMapping(Identifiable, metaclass = ABCMeta):
309
+ def __init__(self, parent: ARObject, short_name: str):
310
+ if type(self) == PortInterface:
311
+ raise NotImplementedError("PortInterfaceMapping is an abstract class.")
312
+ super().__init__(parent, short_name)
313
+
314
+ class ClientServerApplicationErrorMapping(ARObject):
315
+ def __init__(self):
316
+ super().__init__()
317
+
318
+ self.firstApplicationErrorRef = None # type: RefType
319
+ self.secondApplicationErrorRef = None # type: RefType
320
+
321
+ def getFirstApplicationErrorRef(self):
322
+ return self.firstApplicationErrorRef
323
+
324
+ def setFirstApplicationErrorRef(self, value):
325
+ self.firstApplicationErrorRef = value
326
+ return self
327
+
328
+ def getSecondApplicationErrorRef(self):
329
+ return self.secondApplicationErrorRef
330
+
331
+ def setSecondApplicationErrorRef(self, value):
332
+ self.secondApplicationErrorRef = value
333
+ return self
334
+
335
+ class ClientServerOperationMapping(ARObject):
336
+ def __init__(self):
337
+ super().__init__()
338
+
339
+
340
+ self.argumentMappings = [] # type: List[DataPrototypeMapping]
341
+ self.firstOperationRef = None # type: RefType
342
+ self.firstToSecondDataTransformationRef = None # type: RefType
343
+ self.secondOperationRef = None # type: RefType
344
+
345
+ def getArgumentMappings(self):
346
+ return self.argumentMappings
347
+
348
+ def addArgumentMapping(self, value):
349
+ self.argumentMappings.append(value)
350
+ return self
351
+
352
+ def getFirstOperationRef(self):
353
+ return self.firstOperationRef
354
+
355
+ def setFirstOperationRef(self, value):
356
+ self.firstOperationRef = value
357
+ return self
358
+
359
+ def getFirstToSecondDataTransformationRef(self):
360
+ return self.firstToSecondDataTransformationRef
361
+
362
+ def setFirstToSecondDataTransformationRef(self, value):
363
+ self.firstToSecondDataTransformationRef = value
364
+ return self
365
+
366
+ def getSecondOperationRef(self):
367
+ return self.secondOperationRef
368
+
369
+ def setSecondOperationRef(self, value):
370
+ self.secondOperationRef = value
371
+ return self
372
+
373
+
374
+ class DataPrototypeMapping(ARObject):
375
+ def __init__(self):
376
+ super().__init__()
377
+
378
+ self.firstDataPrototypeRef = None # type: RefType
379
+ self.firstToSecondDataTransformationRef = None # type: RefType
380
+ self.secondDataPrototypeRef = None # type: RefType
381
+ self.secondToFirstDataTransformationRef = None # type: RefType
382
+ self.subElementMappings = [] # type: List[SubElementMapping]
383
+ self.textTableMappings = [] # type: List[TextTableMapping]
384
+
385
+ def getFirstDataPrototypeRef(self):
386
+ return self.firstDataPrototypeRef
387
+
388
+ def setFirstDataPrototypeRef(self, value):
389
+ self.firstDataPrototypeRef = value
390
+ return self
391
+
392
+ def getFirstToSecondDataTransformationRef(self):
393
+ return self.firstToSecondDataTransformationRef
394
+
395
+ def setFirstToSecondDataTransformationRef(self, value):
396
+ self.firstToSecondDataTransformationRef = value
397
+ return self
398
+
399
+ def getSecondDataPrototypeRef(self):
400
+ return self.secondDataPrototypeRef
401
+
402
+ def setSecondDataPrototypeRef(self, value):
403
+ self.secondDataPrototypeRef = value
404
+ return self
405
+
406
+ def getSecondToFirstDataTransformationRef(self):
407
+ return self.secondToFirstDataTransformationRef
408
+
409
+ def setSecondToFirstDataTransformationRef(self, value):
410
+ self.secondToFirstDataTransformationRef = value
411
+ return self
412
+
413
+ def getSubElementMappings(self):
414
+ return self.subElementMappings
415
+
416
+ def setSubElementMappings(self, value):
417
+ self.subElementMappings = value
418
+ return self
419
+
420
+ def getTextTableMappings(self):
421
+ return self.textTableMappings
422
+
423
+ def setTextTableMappings(self, value):
424
+ self.textTableMappings = value
425
+ return self
426
+
427
+
428
+
429
+ class ClientServerInterfaceMapping(PortInterfaceMapping):
430
+ def __init__(self, parent: ARObject, short_name: str):
431
+ super().__init__(parent, short_name)
432
+
433
+ # type: ClientServerApplicationErrorMapping
434
+ self.errorMappings = []
435
+ # type: ClientServerOperationMapping
436
+ self.operationMappings = []
437
+
438
+ def getErrorMappings(self):
439
+ return self.errorMappings
440
+
441
+ def setErrorMappings(self, value):
442
+ self.errorMappings = value
443
+ return self
444
+
445
+ def getOperationMappings(self):
446
+ return self.operationMappings
447
+
448
+ def setOperationMappings(self, value):
449
+ self.operationMappings = value
450
+ return self
451
+
452
+
453
+ class VariableAndParameterInterfaceMapping(PortInterfaceMapping):
454
+ def __init__(self, parent: ARObject, short_name: str):
455
+ super().__init__(parent, short_name)
456
+
457
+ self.dataMappings = [] # type: List[DataPrototypeMapping]
458
+
459
+ def getDataMappings(self):
460
+ return self.dataMappings
461
+
462
+ def addDataMapping(self, value):
463
+ self.dataMappings.append(value)
464
+ return self
465
+
466
+
467
+ class PortInterfaceMappingSet(ARElement):
468
+ def __init__(self, parent: ARObject, short_name: str):
469
+ super().__init__(parent, short_name)
470
+
471
+ self.portInterfaceMappings = [] # type: List[PortInterfaceMapping]
472
+
473
+ def getPortInterfaceMappings(self):
474
+ return self.portInterfaceMappings
475
+
476
+ def createVariableAndParameterInterfaceMapping(self, short_name):
477
+ if (short_name not in self.elements):
478
+ mapping = VariableAndParameterInterfaceMapping(self, short_name)
479
+ self.addElement(mapping)
480
+ self.portInterfaceMappings.append(mapping)
481
+ return self.getElement(short_name)
@@ -1,5 +1,5 @@
1
1
  from typing import List
2
- from .....M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import NvBlockNeeds, RoleBasedDataAssignment, ServiceNeeds
2
+ from .....M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagnosticCommunicationManagerNeeds, DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds, EcuStateMgrUserNeeds, NvBlockNeeds, RoleBasedDataAssignment, ServiceNeeds
3
3
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
4
4
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Identifier, RefType
5
5
  from .....M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import ServiceDependency
@@ -24,7 +24,6 @@ class RoleBasedPortAssignment(ARObject):
24
24
  self.role = value
25
25
  return self
26
26
 
27
-
28
27
  class SwcServiceDependency(ServiceDependency):
29
28
  def __init__(self, parent: ARObject, short_name: str):
30
29
  super().__init__(parent, short_name)
@@ -46,12 +45,63 @@ class SwcServiceDependency(ServiceDependency):
46
45
 
47
46
  def createNvBlockNeeds(self, short_name: str) -> NvBlockNeeds:
48
47
  if (short_name not in self.elements):
49
- event = NvBlockNeeds(self, short_name)
50
- self.elements[short_name] = event
51
- return self.elements[short_name]
52
-
48
+ needs = NvBlockNeeds(self, short_name)
49
+ self.addElement(needs)
50
+ return self.getElement(short_name)
51
+
52
+ def createDiagnosticCommunicationManagerNeeds(self, short_name: str) -> DiagnosticCommunicationManagerNeeds:
53
+ if (short_name not in self.elements):
54
+ needs = DiagnosticCommunicationManagerNeeds(self, short_name)
55
+ self.addElement(needs)
56
+ return self.getElement(short_name)
57
+
58
+ def createDiagnosticRoutineNeeds(self, short_name: str) -> DiagnosticRoutineNeeds:
59
+ if (short_name not in self.elements):
60
+ needs = DiagnosticRoutineNeeds(self, short_name)
61
+ self.addElement(needs)
62
+ return self.getElement(short_name)
63
+
64
+ def createDiagnosticValueNeeds(self, short_name: str) -> DiagnosticValueNeeds:
65
+ if (short_name not in self.elements):
66
+ needs = DiagnosticValueNeeds(self, short_name)
67
+ self.addElement(needs)
68
+ return self.getElement(short_name)
69
+
70
+ def createDiagnosticEventNeeds(self, short_name: str) -> DiagnosticEventNeeds:
71
+ if (short_name not in self.elements):
72
+ needs = DiagnosticEventNeeds(self, short_name)
73
+ self.addElement(needs)
74
+ return self.getElement(short_name)
75
+
76
+ def createCryptoServiceNeeds(self, short_name: str) -> CryptoServiceNeeds:
77
+ if (short_name not in self.elements):
78
+ needs = CryptoServiceNeeds(self, short_name)
79
+ self.addElement(needs)
80
+ return self.getElement(short_name)
81
+
82
+ def createEcuStateMgrUserNeeds(self, short_name: str) -> EcuStateMgrUserNeeds:
83
+ if (short_name not in self.elements):
84
+ needs = EcuStateMgrUserNeeds(self, short_name)
85
+ self.addElement(needs)
86
+ return self.getElement(short_name)
87
+
53
88
  def getNvBlockNeeds(self) -> List[NvBlockNeeds]:
54
89
  return sorted(filter(lambda c: isinstance(c, NvBlockNeeds), self.elements.values()), key=lambda e: e.short_name)
90
+
91
+ def getDiagnosticCommunicationManagerNeeds(self) -> List[DiagnosticCommunicationManagerNeeds]:
92
+ return sorted(filter(lambda c: isinstance(c, DiagnosticCommunicationManagerNeeds), self.elements.values()), key=lambda e: e.short_name)
93
+
94
+ def getDiagnosticRoutineNeeds(self) -> List[DiagnosticRoutineNeeds]:
95
+ return sorted(filter(lambda c: isinstance(c, DiagnosticRoutineNeeds), self.elements.values()), key=lambda e: e.short_name)
96
+
97
+ def getDiagnosticEventNeeds(self) -> List[DiagnosticEventNeeds]:
98
+ return sorted(filter(lambda c: isinstance(c, DiagnosticEventNeeds), self.elements.values()), key=lambda e: e.short_name)
99
+
100
+ def getCryptoServiceNeeds(self) -> List[CryptoServiceNeeds]:
101
+ return sorted(filter(lambda c: isinstance(c, CryptoServiceNeeds), self.elements.values()), key=lambda e: e.short_name)
102
+
103
+ def getEcuStateMgrUserNeeds(self) -> List[EcuStateMgrUserNeeds]:
104
+ return sorted(filter(lambda c: isinstance(c, EcuStateMgrUserNeeds), self.elements.values()), key=lambda e: e.short_name)
55
105
 
56
106
  def getServiceNeeds(self) -> List[ServiceNeeds]:
57
107
  return sorted(filter(lambda c: isinstance(c, ServiceNeeds), self.elements.values()), key=lambda e: e.short_name)
@@ -1,13 +1,14 @@
1
1
  from typing import Dict, List
2
2
 
3
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.AccessCount import AbstractAccessPoint
3
4
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PortAPIOptions import PortAPIOption
4
5
  from .....M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
5
6
  from .....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ParameterDataPrototype, VariableDataPrototype
6
7
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
7
8
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PerInstanceMemory import PerInstanceMemory
8
- from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
9
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
9
10
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import SwcServiceDependency
10
- from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, RefType, ARBoolean
11
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, Boolean, RefType, ARBoolean
11
12
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.DataElements import ParameterAccess, VariableAccess
12
13
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
13
14
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import ModeAccessPoint, ModeSwitchPoint
@@ -27,12 +28,8 @@ class RunnableEntityArgument(ARObject):
27
28
  def setSymbol(self, value):
28
29
  self.symbol = value
29
30
  return self
30
-
31
- class AsynchronousServerCallPoint(ServerCallPoint):
32
- def __init__(self, parent: ARObject, short_name: str):
33
- super().__init__(parent, short_name)
34
-
35
- class AsynchronousServerCallResultPoint(ServerCallPoint):
31
+
32
+ class AsynchronousServerCallResultPoint(AbstractAccessPoint):
36
33
  def __init__(self, parent: ARObject, short_name: str):
37
34
  super().__init__(parent, short_name)
38
35
 
@@ -43,7 +40,11 @@ class AsynchronousServerCallResultPoint(ServerCallPoint):
43
40
 
44
41
  def setAsynchronousServerCallPointRef(self, value):
45
42
  self.asynchronousServerCallPointRef = value
46
- return self
43
+ return self
44
+
45
+ class AsynchronousServerCallPoint(ServerCallPoint):
46
+ def __init__(self, parent: ARObject, short_name: str):
47
+ super().__init__(parent, short_name)
47
48
 
48
49
  class SynchronousServerCallPoint(ServerCallPoint):
49
50
  def __init__(self, parent: ARObject, short_name: str):
@@ -63,6 +64,7 @@ class RunnableEntity(ExecutableEntity):
63
64
  super().__init__(parent, short_name)
64
65
 
65
66
  self.arguments = [] # type: List[RunnableEntityArgument]
67
+ self.asynchronousServerCallResultPoints = [] # type: List[AsynchronousServerCallResultPoint]
66
68
  self.canBeInvokedConcurrently = None # type: ARBoolean
67
69
  self.dataReadAccesses = {} # type: Dict[str, VariableAccess]
68
70
  self.dataReceivePointByArguments = {} # type: Dict[str, VariableAccess]
@@ -92,7 +94,7 @@ class RunnableEntity(ExecutableEntity):
92
94
  def addArgument(self, value):
93
95
  self.arguments.append(value)
94
96
  return self
95
-
97
+
96
98
  def getCanBeInvokedConcurrently(self):
97
99
  return self.canBeInvokedConcurrently
98
100
 
@@ -148,29 +150,42 @@ class RunnableEntity(ExecutableEntity):
148
150
  def createParameterAccess(self, short_name: str) -> ParameterAccess:
149
151
  if (short_name not in self.elements):
150
152
  access = ParameterAccess(self, short_name)
151
- self.elements[short_name] = access
152
- return self.elements[short_name]
153
+ self.addElement(access)
154
+ return self.getElement(short_name)
153
155
 
154
156
  def createSynchronousServerCallPoint(self, short_name: str) -> SynchronousServerCallPoint:
155
157
  if (short_name not in self.serverCallPoints):
156
- server_call_point = SynchronousServerCallPoint(self, short_name)
157
- self.serverCallPoints[short_name] = server_call_point
158
- return self.serverCallPoints[short_name]
158
+ point = SynchronousServerCallPoint(self, short_name)
159
+ self.addElement(point)
160
+ return self.getElement(short_name)
161
+ #self.serverCallPoints[short_name] = server_call_point
162
+ #return self.serverCallPoints[short_name]
159
163
 
160
164
  def createAsynchronousServerCallPoint(self, short_name: str) -> AsynchronousServerCallPoint:
161
165
  if (short_name not in self.serverCallPoints):
162
- server_call_point = AsynchronousServerCallPoint(self, short_name)
163
- self.serverCallPoints[short_name] = server_call_point
164
- return self.serverCallPoints[short_name]
166
+ point = AsynchronousServerCallPoint(self, short_name)
167
+ self.addElement(point)
168
+ return self.getElement(short_name)
169
+ #self.serverCallPoints[short_name] = server_call_point
170
+ #return self.serverCallPoints[short_name]
171
+
172
+ def createAsynchronousServerCallResultPoint(self, short_name: str) -> AsynchronousServerCallResultPoint:
173
+ if (short_name not in self.serverCallPoints):
174
+ point = AsynchronousServerCallResultPoint(self, short_name)
175
+ self.addElement(point)
176
+ return self.getElement(short_name)
165
177
 
166
- def getSynchronousServerCallPoint(self) -> List[ServerCallPoint]:
167
- return filter(lambda o: isinstance(o, SynchronousServerCallPoint), self.getServerCallPoints())
178
+ def getSynchronousServerCallPoint(self) -> List[SynchronousServerCallPoint]:
179
+ return list(sorted(filter(lambda a: isinstance(a, SynchronousServerCallPoint), self.elements.values()), key= lambda o:o.getShortName()))
168
180
 
169
- def getAsynchronousServerCallPoint(self) -> List[ServerCallPoint]:
170
- return filter(lambda o: isinstance(o, AsynchronousServerCallPoint), self.getServerCallPoints())
181
+ def getAsynchronousServerCallPoint(self) -> List[AsynchronousServerCallPoint]:
182
+ return list(sorted(filter(lambda a: isinstance(a, AsynchronousServerCallPoint), self.elements.values()), key= lambda o:o.getShortName()))
183
+
184
+ def getAsynchronousServerCallResultPoints(self) -> List[AsynchronousServerCallResultPoint]:
185
+ return list(sorted(filter(lambda a: isinstance(a, AsynchronousServerCallResultPoint), self.elements.values()), key= lambda o:o.getShortName()))
171
186
 
172
187
  def getServerCallPoints(self) -> List[ServerCallPoint]:
173
- return sorted(self.serverCallPoints.values(), key=lambda v: v.short_name)
188
+ return list(sorted(filter(lambda a: isinstance(a, ServerCallPoint), self.elements.values()), key= lambda o:o.getShortName()))
174
189
 
175
190
  def createInternalTriggeringPoint(self, short_name: str) -> InternalTriggeringPoint:
176
191
  if (short_name not in self.elements):
@@ -209,74 +224,89 @@ class SwcInternalBehavior(InternalBehavior):
209
224
  def __init__(self, parent: ARObject, short_name: str):
210
225
  super().__init__(parent, short_name)
211
226
 
212
- self.handle_termination_and_restart = None # type: str
213
- self.supports_multiple_instantiation = None # type: ARBoolean
214
- self.explicit_inter_runnable_variables = [] # type: List[VariableDataPrototype]
215
- self.implicit_inter_runnable_variables = [] # type: List[VariableDataPrototype]
216
- self.per_instance_memories = [] # type: List[PerInstanceMemory]
217
- self.per_instance_parameters = [] # type: List[ParameterDataPrototype]
218
- self.port_api_options = [] # type: List[PortAPIOption]
219
- self.included_data_type_sets = [] # type: List[IncludedDataTypeSet]
227
+ self.arTypedPerInstanceMemories = [] # type: List[VariableDataPrototype]
228
+ self.events = [] # type: List[RTEEvent]
229
+ self.exclusiveAreaPolicies = [] # type: List[SwcExclusiveAreaPolicy]
230
+ self.explicitInterRunnableVariables = [] # type: List[VariableDataPrototype]
231
+ self.handleTerminationAndRestart = None # type: str
232
+ self.implicitInterRunnableVariables = [] # type: List[VariableDataPrototype]
233
+ self.includedDataTypeSets = [] # type: List[IncludedDataTypeSet]
234
+ self.includedModeDeclarationGroupSets = [] # type: List[IncludedModeDeclarationGroupSet]
235
+ self.instantiationDataDefProps = [] # type: List[InstantiationDataDefProps]
236
+ self.perInstanceMemories = [] # type: List[PerInstanceMemory]
237
+ self.perInstanceParameters = [] # type: List[ParameterDataPrototype]
238
+ self.portAPIOptions = [] # type: List[PortAPIOption]
239
+ self.runnables = [] # type: List[RunnableEntity]
240
+ self.serviceDependencies = [] # type: List[SwcServiceDependency]
241
+ self.sharedParameters = [] # type: List[ParameterDataPrototype]
242
+ self.supportsMultipleInstantiation = None # type: Boolean
243
+ self.variationPointProxies = [] # type: VariationPointProxy
220
244
 
221
245
  def getExplicitInterRunnableVariables(self) -> List[VariableDataPrototype]:
222
- return self.explicit_inter_runnable_variables
246
+ return self.explicitInterRunnableVariables
223
247
 
224
248
  def getImplicitInterRunnableVariables(self) -> List[VariableDataPrototype]:
225
- return self.implicit_inter_runnable_variables
249
+ return self.implicitInterRunnableVariables
226
250
 
227
251
  def getPerInstanceMemories(self) -> List[PerInstanceMemory]:
228
- return self.per_instance_memories
252
+ return self.perInstanceMemories
229
253
 
230
254
  def getPerInstanceParameters(self) -> List[ParameterDataPrototype]:
231
- return self.per_instance_parameters
255
+ return self.perInstanceParameters
232
256
 
233
257
  def addPortAPIOption(self, option: PortAPIOption):
234
- self.port_api_options.append(option)
258
+ self.portAPIOptions.append(option)
235
259
 
236
260
  def getPortAPIOptions(self) -> List[PortAPIOption]:
237
- return self.port_api_options
261
+ return self.portAPIOptions
238
262
 
239
263
  def addIncludedDataTypeSet(self, set: IncludedDataTypeSet):
240
- self.included_data_type_sets.append(set)
264
+ self.includedDataTypeSets.append(set)
241
265
 
242
266
  def getIncludedDataTypeSets(self) -> List[IncludedDataTypeSet]:
243
- return self.included_data_type_sets
267
+ return self.includedDataTypeSets
244
268
 
245
269
  def createOperationInvokedEvent(self, short_name: str) -> OperationInvokedEvent:
246
270
  if (short_name not in self.elements):
247
271
  event = OperationInvokedEvent(self, short_name)
248
- self.elements[short_name] = event
249
- return self.elements[short_name]
272
+ self.addElement(event)
273
+ return self.getElement(short_name)
250
274
 
251
275
  def createTimingEvent(self, short_name: str) -> TimingEvent:
252
276
  if (short_name not in self.elements):
253
277
  event = TimingEvent(self, short_name)
254
- self.elements[short_name] = event
255
- return self.elements[short_name]
278
+ self.addElement(event)
279
+ return self.getElement(short_name)
256
280
 
257
281
  def createInitEvent(self, short_name: str) -> InitEvent:
258
282
  if (short_name not in self.elements):
259
283
  event = InitEvent(self, short_name)
260
- self.elements[short_name] = event
261
- return self.elements[short_name]
284
+ self.addElement(event)
285
+ return self.getElement(short_name)
286
+
287
+ def createAsynchronousServerCallReturnsEvent(self, short_name: str) -> AsynchronousServerCallReturnsEvent:
288
+ if (short_name not in self.elements):
289
+ event = AsynchronousServerCallReturnsEvent(self, short_name)
290
+ self.addElement(event)
291
+ return self.getElement(short_name)
262
292
 
263
293
  def createDataReceivedEvent(self, short_name: str) -> DataReceivedEvent:
264
294
  if (short_name not in self.elements):
265
295
  event = DataReceivedEvent(self, short_name)
266
- self.elements[short_name] = event
267
- return self.elements[short_name]
296
+ self.addElement(event)
297
+ return self.getElement(short_name)
268
298
 
269
299
  def createSwcModeSwitchEvent(self, short_name: str) -> SwcModeSwitchEvent:
270
300
  if (short_name not in self.elements):
271
301
  event = SwcModeSwitchEvent(self, short_name)
272
- self.elements[short_name] = event
273
- return self.elements[short_name]
302
+ self.addElement(event)
303
+ return self.getElement(short_name)
274
304
 
275
305
  def createInternalTriggerOccurredEvent(self, short_name: str) -> InternalTriggerOccurredEvent:
276
306
  if (short_name not in self.elements):
277
307
  event = InternalTriggerOccurredEvent(self, short_name)
278
- self.elements[short_name] = event
279
- return self.elements[short_name]
308
+ self.addElement(event)
309
+ return self.getElement(short_name)
280
310
 
281
311
  def createSwcServiceDependency(self, short_name: str) -> SwcServiceDependency:
282
312
  if (short_name not in self.elements):
@@ -317,28 +347,28 @@ class SwcInternalBehavior(InternalBehavior):
317
347
  if (short_name not in self.elements):
318
348
  prototype = VariableDataPrototype(self, short_name)
319
349
  self.elements[short_name] = prototype
320
- self.explicit_inter_runnable_variables.append(prototype)
350
+ self.explicitInterRunnableVariables.append(prototype)
321
351
  return self.elements[short_name]
322
352
 
323
353
  def createImplicitInterRunnableVariable(self, short_name: str) -> VariableDataPrototype:
324
354
  if (short_name not in self.elements):
325
355
  prototype = VariableDataPrototype(self, short_name)
326
356
  self.elements[short_name] = prototype
327
- self.implicit_inter_runnable_variables.append(prototype)
357
+ self.implicitInterRunnableVariables.append(prototype)
328
358
  return self.elements[short_name]
329
359
 
330
360
  def createPerInstanceMemory(self, short_name: str) -> PerInstanceMemory:
331
361
  if (short_name not in self.elements):
332
362
  memory = PerInstanceMemory(self, short_name)
333
363
  self.elements[short_name] = memory
334
- self.per_instance_memories.append(memory)
364
+ self.perInstanceMemories.append(memory)
335
365
  return self.elements[short_name]
336
366
 
337
367
  def createPerInstanceParameter(self, short_name: str) -> ParameterDataPrototype:
338
368
  if (short_name not in self.elements):
339
369
  prototype = ParameterDataPrototype(self, short_name)
340
370
  self.elements[short_name] = prototype
341
- self.per_instance_parameters.append(prototype)
371
+ self.perInstanceParameters.append(prototype)
342
372
  return self.elements[short_name]
343
373
 
344
374
  def getVariableDataPrototypes(self) -> List[VariableDataPrototype]:
@@ -356,3 +386,9 @@ class SwcInternalBehavior(InternalBehavior):
356
386
  def getRunnableEntity(self, short_name) -> RunnableEntity:
357
387
  return self.elements[short_name]
358
388
 
389
+ def getSupportsMultipleInstantiation(self):
390
+ return self.supportsMultipleInstantiation
391
+
392
+ def setSupportsMultipleInstantiation(self, value):
393
+ self.supportsMultipleInstantiation = value
394
+ return self
@@ -1,6 +1,8 @@
1
1
  from abc import ABCMeta
2
+
2
3
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
3
4
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
+ from ....M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import CommunicationDirectionType
4
6
 
5
7
  class DataMapping(ARObject, metaclass = ABCMeta):
6
8
  def __init__(self):
@@ -18,16 +20,23 @@ class DataMapping(ARObject, metaclass = ABCMeta):
18
20
  self.introduction = value
19
21
  return self
20
22
 
21
-
22
23
  class SenderReceiverToSignalMapping(DataMapping):
23
24
  def __init__(self):
24
25
  super().__init__()
25
26
 
27
+ self.communicationDirection = None # type: CommunicationDirectionType
26
28
  self.dataElementIRef = None
27
29
  self.senderToSignalTextTableMapping = None
28
30
  self.signalToReceiverTextTableMapping = None
29
31
  self.systemSignalRef = None
30
32
 
33
+ def getCommunicationDirection(self):
34
+ return self.communicationDirection
35
+
36
+ def setCommunicationDirection(self, value):
37
+ self.communicationDirection = value
38
+ return self
39
+
31
40
  def getDataElementIRef(self):
32
41
  return self.dataElementIRef
33
42