armodel 1.7.8__py3-none-any.whl → 1.8.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 (51) hide show
  1. armodel/cli/arxml_format_cli.py +1 -0
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +71 -11
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +102 -12
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +80 -9
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +17 -10
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +10 -8
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +30 -28
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +7 -5
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +38 -3
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +96 -18
  11. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/PortPrototypeBlueprint.py +73 -0
  12. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/__init__.py +0 -0
  13. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/Keyword.py +45 -0
  14. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/__init__.py +0 -0
  15. armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +27 -0
  16. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +33 -4
  17. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ElementCollection.py +73 -0
  18. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +40 -14
  19. armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +151 -1
  20. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +4 -1
  21. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +55 -12
  22. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SoftwareComponentDocumentation.py +80 -0
  23. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +11 -1
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +34 -10
  25. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +11 -10
  26. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +18 -6
  27. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +8 -2
  28. armodel/models/M2/AUTOSARTemplates/SystemTemplate/RteEventToOsTaskMapping.py +35 -0
  29. armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +25 -0
  30. armodel/models/M2/AUTOSARTemplates/SystemTemplate/SecureCommunication.py +83 -0
  31. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +84 -32
  32. armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +10 -1
  33. armodel/models/M2/MSR/Documentation/BlockElements/Figure.py +163 -0
  34. armodel/models/M2/MSR/Documentation/BlockElements/__init__.py +0 -0
  35. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +5 -3
  36. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +22 -1
  37. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +94 -9
  38. armodel/models/__init__.py +4 -0
  39. armodel/models/utils/__init__.py +0 -0
  40. armodel/models/utils/uuid_mgr.py +23 -0
  41. armodel/parser/abstract_arxml_parser.py +10 -2
  42. armodel/parser/arxml_parser.py +332 -104
  43. armodel/tests/test_armodel/models/test_datatype.py +136 -138
  44. armodel/tests/test_armodel/parser/test_sw_components.py +266 -4
  45. armodel/writer/arxml_writer.py +337 -74
  46. {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/METADATA +35 -1
  47. {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/RECORD +51 -40
  48. {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/LICENSE +0 -0
  49. {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/WHEEL +0 -0
  50. {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/entry_points.txt +0 -0
  51. {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/top_level.txt +0 -0
@@ -69,6 +69,7 @@ def main():
69
69
  ap = argparse.ArgumentParser()
70
70
  ap.description = "arxml-format ver: %s" % version
71
71
  ap.add_argument("-v", "--verbose", required=False, help="Print debug information", action="store_true")
72
+ ap.add_argument("--log", required=False, help="Log all information to file")
72
73
  ap.add_argument("-w", "--warning", required=False, help="Skip the error and report it as warning message", action="store_true")
73
74
  ap.add_argument("--remove-admin-data", required=False, help="Remove all the AdminData", action="store_true")
74
75
  ap.add_argument("INPUT", help="The path of AUTOSAR ARXML file")
@@ -1,19 +1,24 @@
1
1
  from typing import Dict, List
2
2
 
3
+ from armodel.models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
3
4
 
5
+ from ...utils.uuid_mgr import UUIDMgr
4
6
  from ...M2.MSR.AsamHdo.SpecialData import Sdg
5
7
  from ...M2.MSR.AsamHdo import AdminData
6
8
  from ...M2.MSR.AsamHdo.BaseTypes import SwBaseType
7
9
  from ...M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
10
+
8
11
  from ...M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
9
12
  from ...M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
10
13
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
11
14
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement, Referrable
12
15
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
13
16
  from ...M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, DataTypeMap
14
- from ...M2.AUTOSARTemplates.SWComponentTemplate.Components import CompositionSwComponentType
17
+ from ...M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType, CompositionSwComponentType, PortPrototype
18
+ from ...M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import VariableDataPrototype
15
19
  from ...M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
16
20
  from ...M2.AUTOSARTemplates.SystemTemplate import RootSwCompositionPrototype, System
21
+ from ...M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import SystemSignal, SystemSignalGroup
17
22
 
18
23
 
19
24
  class FileInfoComment(ARObject):
@@ -34,6 +39,21 @@ class AbstractAUTOSAR(CollectableElement):
34
39
  def __init__(self):
35
40
  super().__init__()
36
41
 
42
+ self.release_xsd_mappings = {
43
+ "4.0.3": "AUTOSAR_4-0-3.xsd",
44
+ "4.1.0": "AUTOSAR_4-1-0.xsd",
45
+ "4.2.1": "AUTOSAR_4-2-1.xsd",
46
+ "4.3.0": "AUTOSAR_00043.xsd",
47
+ "4.3.1": "AUTOSAR_00045.xsd",
48
+ "4.4.0": "AUTOSAR_00047.xsd",
49
+ "R19-11": "AUTOSAR_00048.xsd",
50
+ "R20-11": "AUTOSAR_00049.xsd",
51
+ "R21-11": "AUTOSAR_00050.xsd",
52
+ "R22-11": "AUTOSAR_00051.xsd",
53
+ "R23-11": "AUTOSAR_00052.xsd",
54
+ "R24-11": "AUTOSAR_00053.xsd",
55
+ }
56
+
37
57
  self.clear()
38
58
 
39
59
  def getAdminData(self):
@@ -78,7 +98,7 @@ class AbstractAUTOSAR(CollectableElement):
78
98
  self._behavior_impl_maps = {} # type: Dict[str, str]
79
99
  self._impl_behavior_maps = {} # type: Dict[str, str]
80
100
 
81
- self.uuid_objects = {} # type: Dict[str, ARObject]
101
+ self.uuid_mgr = UUIDMgr()
82
102
 
83
103
  self.systems = {} # type: Dict[str, System]
84
104
  self.compositionSwComponentTypes = {} # type: Dict[str, CompositionSwComponentType]
@@ -105,7 +125,14 @@ class AbstractAUTOSAR(CollectableElement):
105
125
  self.arPackages[short_name] = ar_package
106
126
  return self.arPackages[short_name]
107
127
 
108
- def find(self, referred_name: str) -> Referrable:
128
+ def find(self, referred) -> Referrable:
129
+ if isinstance(referred, RefType):
130
+ referred_name = referred.getValue()
131
+ referred_type = referred.getDest()
132
+ else:
133
+ referred_name = referred
134
+ referred_type = None
135
+
109
136
  short_name_list = referred_name.split("/")
110
137
  element = AUTOSAR.getInstance()
111
138
  for short_name in short_name_list:
@@ -114,17 +141,46 @@ class AbstractAUTOSAR(CollectableElement):
114
141
  element = element.getElement(short_name)
115
142
  if (element is None):
116
143
  return element
117
- # raise ValueError("The %s of reference <%s> does not exist." % (short_name, referred_name))
144
+
145
+ # validate the dest
146
+ if referred_type is not None and referred_type != "":
147
+ base_type = self.getDestType(element)
148
+ if base_type != referred_type:
149
+ raise ValueError("The type does not matched of <%s> (Dest: %s, Actual: %s)" % (referred_name, referred_type, base_type))
150
+
118
151
  return element
119
152
 
153
+ def getDestType(self, type) -> str:
154
+ if isinstance(type, ImplementationDataType):
155
+ return "IMPLEMENTATION-DATA-TYPE"
156
+ return ""
157
+
158
+ def findAtomicSwComponentType(self, referred) -> AtomicSwComponentType:
159
+ return self.find(referred)
160
+
161
+ def findSystemSignal(self, referred) -> SystemSignal:
162
+ return self.find(referred)
163
+
164
+ def findSystemSignalGroup(self, referred) -> SystemSignalGroup:
165
+ return self.find(referred)
166
+
167
+ def findPort(self, referred: str) -> PortPrototype:
168
+ return self.find(referred)
169
+
170
+ def findVariableDataPrototype(self, referred) -> VariableDataPrototype:
171
+ return self.find(referred)
172
+
173
+ def findImplementationDataType(self, referred) -> ImplementationDataType:
174
+ return self.find(referred)
175
+
120
176
  def getDataType(self, data_type: ImplementationDataType) -> ImplementationDataType:
121
177
  if (isinstance(data_type, ImplementationDataType) or isinstance(data_type, SwBaseType)):
122
178
  if (data_type.category == ImplementationDataType.CATEGORY_TYPE_REFERENCE):
123
179
  referred_type = self.find(data_type.swDataDefProps.implementationDataTypeRef.value)
124
180
  return self.getDataType(referred_type)
125
181
  if (data_type.category == ImplementationDataType.CATEGORY_DATA_REFERENCE):
126
- if (data_type.swDataDefProps.swPointerTargetProps.target_category == "VALUE"):
127
- referred_type = self.find(data_type.swDataDefProps.swPointerTargetProps.sw_data_def_props.baseTypeRef.value)
182
+ if (data_type.swDataDefProps.swPointerTargetProps.getTargetCategory() == "VALUE"):
183
+ referred_type = self.find(data_type.swDataDefProps.swPointerTargetProps.getSwDataDefProps().getBaseTypeRef())
128
184
  return self.getDataType(referred_type)
129
185
  return data_type
130
186
  else:
@@ -191,14 +247,18 @@ class AbstractAUTOSAR(CollectableElement):
191
247
  self.compositionSwComponentTypes[short_name] = sw_component_type
192
248
  return self
193
249
 
194
- def getARObjectByUUID(self, uuid: str):
195
- if uuid in self.uuid_objects:
196
- return self.uuid_objects[uuid]
197
- return None
250
+ def getARObjectByUUID(self, uuid: str) -> List[ARObject]:
251
+ return self.uuid_mgr.getObjects()
198
252
 
199
253
  def addARObject(self, value: ARObject):
200
254
  if value is not None:
201
- self.uuid_objects[value.uuid] = value
255
+ self.uuid_mgr.addObject(value)
256
+ return self
257
+
258
+ def setARRelease(self, release: str):
259
+ if release not in self.release_xsd_mappings:
260
+ raise "invalid AUTOSAR Release <%s>" % release
261
+ self.schema_location = self.release_xsd_mappings[release]
202
262
  return self
203
263
 
204
264
 
@@ -1,6 +1,7 @@
1
1
  from abc import ABCMeta
2
2
  from typing import List
3
3
 
4
+ from ....M2.MSR.DataDictionary.DataDefProperties import SwImplPolicyEnum
4
5
  from ....M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
5
6
  from ....M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
6
7
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
@@ -28,6 +29,76 @@ class BswModuleCallPoint(Referrable):
28
29
  return self
29
30
 
30
31
 
32
+ class BswAsynchronousServerCallPoint(BswModuleCallPoint):
33
+ def __init__(self, parent: ARObject, short_name: str):
34
+ super().__init__(parent, short_name)
35
+
36
+ self.calledEntryRef = None # type: RefType
37
+
38
+ def getCalledEntryRef(self):
39
+ return self.calledEntryRef
40
+
41
+ def setCalledEntryRef(self, value):
42
+ if value is not None:
43
+ self.calledEntryRef = value
44
+ return self
45
+
46
+
47
+ class BswDirectCallPoint(BswModuleCallPoint):
48
+ def __init__(self, parent: ARObject, short_name: str):
49
+ super().__init__(parent, short_name)
50
+
51
+ self.calledEntryRef = None # type: RefType
52
+ self.calledFromWithinExclusiveAreaRef = None # type: RefType
53
+
54
+ def getCalledEntryRef(self):
55
+ return self.calledEntryRef
56
+
57
+ def setCalledEntryRef(self, value):
58
+ if value is not None:
59
+ self.calledEntryRef = value
60
+ return self
61
+
62
+ def getCalledFromWithinExclusiveAreaRef(self):
63
+ return self.calledFromWithinExclusiveAreaRef
64
+
65
+ def setCalledFromWithinExclusiveAreaRef(self, value):
66
+ if value is not None:
67
+ self.calledFromWithinExclusiveAreaRef = value
68
+ return self
69
+
70
+
71
+ class BswSynchronousServerCallPoint(BswModuleCallPoint):
72
+ def __init__(self, parent: ARObject, short_name: str):
73
+ super().__init__(parent, short_name)
74
+
75
+ self.calledEntryRef = None # type: RefType
76
+ self.calledFromWithinExclusiveAreaRef = None # type: RefType
77
+
78
+ def getCalledEntryRef(self):
79
+ return self.calledEntryRef
80
+
81
+ def setCalledEntryRef(self, value):
82
+ if value is not None:
83
+ self.calledEntryRef = value
84
+ return self
85
+
86
+ def getCalledFromWithinExclusiveAreaRef(self):
87
+ return self.calledFromWithinExclusiveAreaRef
88
+
89
+ def setCalledFromWithinExclusiveAreaRef(self, value):
90
+ if value is not None:
91
+ self.calledFromWithinExclusiveAreaRef = value
92
+ return self
93
+
94
+
95
+ class BswAsynchronousServerCallResultPoint(BswModuleCallPoint):
96
+ def __init__(self, parent: ARObject, short_name: str):
97
+ super().__init__(parent, short_name)
98
+
99
+ self.asynchronousServerCallPointRef = None # type: RefType
100
+
101
+
31
102
  class BswVariableAccess(Referrable):
32
103
  def __init__(self, parent: ARObject, short_name: str):
33
104
  super().__init__(parent, short_name)
@@ -69,26 +140,28 @@ class BswModuleEntity(ExecutableEntity, metaclass=ABCMeta):
69
140
  def getAccessedModeGroupRefs(self):
70
141
  return self.accessedModeGroupRefs
71
142
 
72
- def setAccessedModeGroupRefs(self, value):
143
+ def addAccessedModeGroupRef(self, value):
73
144
  if value is not None:
74
- self.accessedModeGroupRefs = value
145
+ self.accessedModeGroupRefs.append(value)
75
146
  return self
76
147
 
77
148
  def getActivationPointRefs(self):
78
149
  return self.activationPointRefs
79
150
 
80
- def setActivationPointRefs(self, value):
151
+ def addActivationPointRef(self, value):
81
152
  if value is not None:
82
- self.activationPointRefs = value
153
+ self.activationPointRefs.append(value)
83
154
  return self
84
155
 
85
156
  def getCallPoints(self):
86
157
  return self.callPoints
87
158
 
88
- def setCallPoints(self, value):
89
- if value is not None:
90
- self.callPoints = value
91
- return self
159
+ def createBswAsynchronousServerCallPoint(self, short_name):
160
+ if (not self.IsElementExists(short_name)):
161
+ access = BswAsynchronousServerCallPoint(self, short_name)
162
+ self.addElement(access)
163
+ self.callPoints.append(access)
164
+ return self.getElement(short_name)
92
165
 
93
166
  def getDataReceivePoints(self):
94
167
  return self.dataReceivePoints
@@ -406,6 +479,21 @@ class BswQueuedDataReceptionPolicy(BswDataReceptionPolicy):
406
479
  return self
407
480
 
408
481
 
482
+ class BswInternalTriggeringPoint(Identifiable):
483
+ def __init__(self, parent: ARObject, short_name: str):
484
+ super().__init__(parent, short_name)
485
+
486
+ self.swImplPolicy = None # type: SwImplPolicyEnum
487
+
488
+ def getSwImplPolicy(self):
489
+ return self.swImplPolicy
490
+
491
+ def setSwImplPolicy(self, value):
492
+ if value is not None:
493
+ self.swImplPolicy = value
494
+ return self
495
+
496
+
409
497
  class BswInternalBehavior(InternalBehavior):
410
498
  def __init__(self, parent: ARObject, short_name: str):
411
499
  super().__init__(parent, short_name)
@@ -476,10 +564,12 @@ class BswInternalBehavior(InternalBehavior):
476
564
  def getInternalTriggeringPoints(self):
477
565
  return self.internalTriggeringPoints
478
566
 
479
- def setInternalTriggeringPoints(self, value):
480
- if value is not None:
481
- self.internalTriggeringPoints = value
482
- return self
567
+ def createBswInternalTriggeringPoint(self, short_name: str) -> BswInternalTriggeringPoint:
568
+ if not self.IsElementExists(short_name):
569
+ entity = BswInternalTriggeringPoint(self, short_name)
570
+ self.addElement(entity)
571
+ self.internalTriggeringPoints.append(entity)
572
+ return self.getElement(short_name)
483
573
 
484
574
  def getInternalTriggeringPointPolicies(self):
485
575
  return self.internalTriggeringPointPolicies
@@ -1,9 +1,45 @@
1
1
  from typing import List
2
2
 
3
3
  from ....M2.MSR.DataDictionary.ServiceProcessTask import SwServiceArg
4
+ from ....M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import ServiceNeeds
4
5
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
- from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
6
- from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, Boolean, Identifier, NameToken
6
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable, Referrable
7
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARNumerical, Boolean, Identifier, NameToken, RefType
8
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import PositiveInteger
9
+
10
+
11
+ class BswModuleDependency(Identifiable):
12
+ def __init__(self, parent: ARObject, short_name: str):
13
+ super().__init__(parent, short_name)
14
+
15
+ self.serviceItems = [] # type: List[ServiceNeeds]
16
+ self.targetModuleId = None # type: PositiveInteger
17
+ self.targetModuleRef = None # type: RefType
18
+
19
+ def getServiceItems(self):
20
+ return self.serviceItems
21
+
22
+ def setServiceItems(self, value):
23
+ if value is not None:
24
+ self.serviceItems = value
25
+ return self
26
+
27
+ def getTargetModuleId(self):
28
+ return self.targetModuleId
29
+
30
+ def setTargetModuleId(self, value):
31
+ if value is not None:
32
+ self.targetModuleId = value
33
+ return self
34
+
35
+ def getTargetModuleRef(self):
36
+ return self.targetModuleRef
37
+
38
+ def setTargetModuleRef(self, value):
39
+ if value is not None:
40
+ self.targetModuleRef = value
41
+ return self
42
+
7
43
 
8
44
  class BswModuleEntry(ARElement):
9
45
  def __init__(self, parent: ARObject, short_name: str):
@@ -109,18 +145,53 @@ class BswModuleEntry(ARElement):
109
145
  result = []
110
146
 
111
147
  result.append("short_name : %s" % self.short_name)
112
- if self.serviceId != None:
148
+ if self.serviceId is not None:
113
149
  result.append("service_id : %d" % self.serviceId)
114
- if self.isReentrant != None:
150
+ if self.isReentrant is not None:
115
151
  result.append("is_reentrant : %s" % self.isReentrant)
116
- if self.isSynchronous != None:
152
+ if self.isSynchronous is not None:
117
153
  result.append("is_synchronous : %s" % self.isSynchronous)
118
- if self.callType != None:
154
+ if self.callType is not None:
119
155
  result.append("call_type : %s" % self.callType)
120
- if self.execution_context != None:
156
+ if self.executionContext is not None:
121
157
  result.append("execution_context : %s" % self.executionContext)
122
- if self.sw_service_impl_policy != None:
158
+ if self.swServiceImplPolicy is not None:
123
159
  result.append("sw_service_impl_policy : %s" % self.swServiceImplPolicy)
124
160
 
125
161
  return "\n".join(result)
126
-
162
+
163
+
164
+ class BswModuleClientServerEntry(Referrable):
165
+ def __init__(self, parent: ARObject, short_name: str):
166
+ super().__init__(parent, short_name)
167
+
168
+ self.encapsulatedEntryRef = None # type: RefType
169
+ self.isReentrant = None # type: Boolean
170
+ self.isSynchronous = None # type: Boolean
171
+
172
+ def getEncapsulatedEntryRef(self):
173
+ return self.encapsulatedEntryRef
174
+
175
+ def setEncapsulatedEntryRef(self, value):
176
+ if value is not None:
177
+ self.encapsulatedEntryRef = value
178
+ return self
179
+
180
+ def getIsReentrant(self):
181
+ return self.isReentrant
182
+
183
+ def setIsReentrant(self, value):
184
+ if value is not None:
185
+ self.isReentrant = value
186
+ return self
187
+
188
+ def getIsSynchronous(self):
189
+ return self.isSynchronous
190
+
191
+ def setIsSynchronous(self, value):
192
+ if value is not None:
193
+ self.isSynchronous = value
194
+ return self
195
+
196
+
197
+
@@ -1,12 +1,15 @@
1
- from ....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import VariableDataPrototype
1
+ from armodel.models.M2.AUTOSARTemplates.SWComponentTemplate.SoftwareComponentDocumentation import SwComponentDocumentation
2
+ from ....M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleClientServerEntry, BswModuleDependency
2
3
  from ....M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalBehavior
3
4
  from ....M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroupPrototype
4
5
  from ....M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import Trigger
5
6
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
6
7
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
7
8
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import PositiveInteger, RefType
9
+ from ....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import VariableDataPrototype
8
10
  from typing import List
9
11
 
12
+
10
13
  class BswModuleDescription(ARElement):
11
14
  '''
12
15
  Root element for the description of a single BSW module or BSW cluster. In case it
@@ -28,7 +31,7 @@ class BswModuleDescription(ARElement):
28
31
  self.moduleId = None # type: PositiveInteger
29
32
  self.providedClientServerEntries = [] # type: List[BswModuleClientServerEntry]
30
33
  self.providedDatas = [] # type: List[VariableDataPrototype]
31
- self.providedModeGroups = [] # type: List[ModeDeclarationGroupPrototype]
34
+ self.providedModeGroups = [] # type: List[ModeDeclarationGroupPrototype]
32
35
  self.releasedTriggers = [] # type: List[Trigger]
33
36
  self.requiredClientServerEntries = [] # type: List[BswModuleClientServerEntry]
34
37
  self.requiredDatas = [] # type: List[VariableDataPrototype]
@@ -96,10 +99,12 @@ class BswModuleDescription(ARElement):
96
99
  def getProvidedClientServerEntries(self):
97
100
  return self.providedClientServerEntries
98
101
 
99
- def setProvidedClientServerEntries(self, value):
100
- if value is not None:
101
- self.providedClientServerEntries = value
102
- return self
102
+ def createProvidedClientServerEntry(self, short_name: str) -> BswModuleClientServerEntry:
103
+ if (not self.IsElementExists(short_name)):
104
+ entry = BswModuleClientServerEntry(self, short_name)
105
+ self.addElement(entry)
106
+ self.providedClientServerEntries.append(entry)
107
+ return self.getElement(short_name)
103
108
 
104
109
  def getProvidedDatas(self):
105
110
  return self.providedDatas
@@ -134,10 +139,12 @@ class BswModuleDescription(ARElement):
134
139
  def getRequiredClientServerEntries(self):
135
140
  return self.requiredClientServerEntries
136
141
 
137
- def setRequiredClientServerEntries(self, value):
138
- if value is not None:
139
- self.requiredClientServerEntries = value
140
- return self
142
+ def createRequiredClientServerEntry(self, short_name: str) -> BswModuleClientServerEntry:
143
+ if (not self.IsElementExists(short_name)):
144
+ entry = BswModuleClientServerEntry(self, short_name)
145
+ self.addElement(entry)
146
+ self.requiredClientServerEntries.append(entry)
147
+ return self.getElement(short_name)
141
148
 
142
149
  def getRequiredDatas(self):
143
150
  return self.requiredDatas
@@ -7,9 +7,9 @@ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTy
7
7
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
8
8
 
9
9
 
10
- class ImplementationProps(Referrable, metaclass = ABCMeta):
10
+ class ImplementationProps(Referrable, metaclass=ABCMeta):
11
11
  def __init__(self, parent: ARObject, short_name: str):
12
- if type(self) == ImplementationProps:
12
+ if type(self) is ImplementationProps:
13
13
  raise NotImplementedError("ImplementationProps is an abstract class.")
14
14
 
15
15
  super().__init__(parent, short_name)
@@ -35,12 +35,13 @@ class Code(Identifiable):
35
35
  self.artifactDescriptors.append(desc)
36
36
  return self
37
37
 
38
- def getArtifactDescriptors(self, category:str = "") -> List[AutosarEngineeringObject]:
38
+ def getArtifactDescriptors(self, category: str = "") -> List[AutosarEngineeringObject]:
39
39
  if (category == ""):
40
40
  return self.artifactDescriptors
41
41
  else:
42
42
  return list(filter(lambda a: a.getCategory().getText() == category, self.artifactDescriptors))
43
43
 
44
+
44
45
  class Compiler(Identifiable):
45
46
  def __init__(self, parent: ARObject, short_name: str):
46
47
  super().__init__(parent, short_name)
@@ -77,7 +78,8 @@ class Compiler(Identifiable):
77
78
  def setVersion(self, value):
78
79
  self.version = value
79
80
  return self
80
-
81
+
82
+
81
83
  class DependencyOnArtifact(Identifiable):
82
84
  def __init__(self, parent: ARObject, short_name: str):
83
85
  super().__init__(parent, short_name)
@@ -101,9 +103,9 @@ class DependencyOnArtifact(Identifiable):
101
103
  return self
102
104
 
103
105
 
104
- class Implementation(PackageableElement, metaclass = ABCMeta):
106
+ class Implementation(PackageableElement, metaclass=ABCMeta):
105
107
  def __init__(self, parent: ARObject, short_name: str):
106
- if type(self) == Implementation:
108
+ if type(self) is Implementation:
107
109
  raise NotImplementedError("Implementation is an abstract class.")
108
110
 
109
111
  super().__init__(parent, short_name)
@@ -131,8 +133,8 @@ class Implementation(PackageableElement, metaclass = ABCMeta):
131
133
  self.buildActionManifestRef = value
132
134
  return self
133
135
 
134
- def getCodeDescriptors(self)-> List[Code]:
135
- return list(filter(lambda a : isinstance(a, Code), self.elements.values()))
136
+ def getCodeDescriptors(self) -> List[Code]:
137
+ return list(filter(lambda a: isinstance(a, Code), self.elements.values()))
136
138
 
137
139
  def createCodeDescriptor(self, short_name: str) -> Code:
138
140
  if (short_name not in self.elements):