armodel 1.7.7__py3-none-any.whl → 1.7.9__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 (73) hide show
  1. armodel/cli/arxml_dump_cli.py +33 -22
  2. armodel/cli/arxml_format_cli.py +25 -13
  3. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +84 -28
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +410 -61
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +80 -9
  6. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +141 -35
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +10 -8
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +17 -6
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +38 -3
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +91 -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 +45 -2
  16. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +20 -19
  17. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/HwElementCategory.py +59 -0
  18. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py +145 -0
  19. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +243 -156
  20. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ElementCollection.py +73 -0
  21. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +60 -32
  22. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +35 -14
  23. armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +151 -1
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +66 -42
  25. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +1 -0
  26. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +13 -6
  27. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +166 -50
  28. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SoftwareComponentDocumentation.py +80 -0
  29. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py +9 -1
  30. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +5 -4
  31. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +11 -1
  32. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +16 -2
  33. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +9 -1
  34. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
  35. armodel/models/M2/AUTOSARTemplates/SystemTemplate/{ECUResourceMapping.py → EcuResourceMapping.py} +4 -3
  36. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +31 -21
  37. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +5 -3
  38. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +18 -6
  39. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayCommunication.py +76 -0
  40. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayTopology.py +654 -0
  41. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/__init__.py +0 -0
  42. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +64 -31
  43. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
  44. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +19 -6
  45. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
  46. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
  47. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +15 -13
  48. armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +10 -1
  49. armodel/models/M2/MSR/Documentation/BlockElements/Figure.py +163 -0
  50. armodel/models/M2/MSR/Documentation/BlockElements/__init__.py +0 -0
  51. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +5 -3
  52. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +22 -1
  53. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +94 -9
  54. armodel/models/__init__.py +7 -1
  55. armodel/parser/abstract_arxml_parser.py +39 -32
  56. armodel/parser/arxml_parser.py +1439 -551
  57. armodel/parser/file_parser.py +5 -3
  58. armodel/tests/test_armodel/models/test_ar_package.py +6 -11
  59. armodel/tests/test_armodel/models/test_port_interface.py +116 -117
  60. armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +109 -109
  61. armodel/tests/test_armodel/parser/test_sw_components.py +301 -28
  62. armodel/tests/test_armodel/parser/test_system.py +2 -8
  63. armodel/transformer/__init__.py +0 -0
  64. armodel/transformer/abstract.py +6 -0
  65. armodel/transformer/admin_data.py +31 -0
  66. armodel/writer/abstract_arxml_writer.py +22 -29
  67. armodel/writer/arxml_writer.py +1500 -526
  68. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/METADATA +61 -1
  69. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/RECORD +73 -57
  70. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/LICENSE +0 -0
  71. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/WHEEL +0 -0
  72. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/entry_points.txt +0 -0
  73. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/top_level.txt +0 -0
@@ -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,9 +1,14 @@
1
+ from armodel.models.M2.AUTOSARTemplates.SWComponentTemplate.SoftwareComponentDocumentation import SwComponentDocumentation
2
+ from ....M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleClientServerEntry, BswModuleDependency
1
3
  from ....M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalBehavior
2
4
  from ....M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroupPrototype
5
+ from ....M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import Trigger
3
6
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
4
7
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
5
- from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARPositiveInteger, RefType
6
- from typing import Dict, List
8
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import PositiveInteger, RefType
9
+ from ....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import VariableDataPrototype
10
+ from typing import List
11
+
7
12
 
8
13
  class BswModuleDescription(ARElement):
9
14
  '''
@@ -18,56 +23,157 @@ class BswModuleDescription(ARElement):
18
23
  def __init__(self, parent: ARObject, short_name: str):
19
24
  super().__init__(parent, short_name)
20
25
 
21
- # MODULE-ID
22
- self.moduleId = None # type: ARPositiveInteger
26
+ self.bswModuleDependencies = [] # type: List[BswModuleDependency]
27
+ self.bswModuleDocumentation = None # type: SwComponentDocumentation
28
+ self.expectedEntryRefs = [] # type: List[RefType]
29
+ self.implementedEntryRefs = [] # type: List[RefType]
30
+ self.internalBehaviors = [] # type: List[BswInternalBehavior]
31
+ self.moduleId = None # type: PositiveInteger
32
+ self.providedClientServerEntries = [] # type: List[BswModuleClientServerEntry]
33
+ self.providedDatas = [] # type: List[VariableDataPrototype]
34
+ self.providedModeGroups = [] # type: List[ModeDeclarationGroupPrototype]
35
+ self.releasedTriggers = [] # type: List[Trigger]
36
+ self.requiredClientServerEntries = [] # type: List[BswModuleClientServerEntry]
37
+ self.requiredDatas = [] # type: List[VariableDataPrototype]
38
+ self.requiredModeGroups = [] # type: List[ModeDeclarationGroupPrototype]
39
+ self.requiredTriggers = [] # typeL List[Trigger]
40
+
41
+ def getBswModuleDependencies(self):
42
+ return self.bswModuleDependencies
43
+
44
+ def setBswModuleDependencies(self, value):
45
+ if value is not None:
46
+ self.bswModuleDependencies = value
47
+ return self
48
+
49
+ def getBswModuleDocumentation(self):
50
+ return self.bswModuleDocumentation
23
51
 
24
- # PROVIDED-ENTRYS
25
- self.implementedEntryRefs = [] # type: List[RefType]
52
+ def setBswModuleDocumentation(self, value):
53
+ if value is not None:
54
+ self.bswModuleDocumentation = value
55
+ return self
56
+
57
+ def getExpectedEntryRefs(self):
58
+ return self.expectedEntryRefs
59
+
60
+ def setExpectedEntryRefs(self, value):
61
+ if value is not None:
62
+ self.expectedEntryRefs = value
63
+ return self
26
64
 
27
- self.providedModeGroups = {} # type: Dict[str, ModeDeclarationGroupPrototype]
28
- self.requiredModeGroups = {} # type: Dict[str, ModeDeclarationGroupPrototype]
65
+ def getImplementedEntryRefs(self):
66
+ return self.implementedEntryRefs
67
+
68
+ def addImplementedEntryRef(self, value):
69
+ if value is not None:
70
+ self.implementedEntryRefs.append(value)
71
+ return self
72
+
73
+ def getInternalBehaviors(self):
74
+ return self.internalBehaviors
75
+
76
+ def setInternalBehaviors(self, value):
77
+ if value is not None:
78
+ self.internalBehaviors = value
79
+ return self
29
80
 
81
+ def createBswInternalBehavior(self, short_name: str) -> BswInternalBehavior:
82
+ '''
83
+ Create the INTERNAL-BEHAVIORS tag
84
+ '''
85
+ if (not self.IsElementExists(short_name)):
86
+ behavior = BswInternalBehavior(self, short_name)
87
+ self.addElement(behavior)
88
+ self.internalBehaviors.append(behavior)
89
+ return self.getElement(short_name)
90
+
30
91
  def getModuleId(self):
31
92
  return self.moduleId
32
93
 
33
94
  def setModuleId(self, value):
34
- self.moduleId = value
95
+ if value is not None:
96
+ self.moduleId = value
35
97
  return self
36
98
 
37
- def addImplementedEntry(self, entry_ref: RefType):
38
- self.implementedEntryRefs.append(entry_ref)
99
+ def getProvidedClientServerEntries(self):
100
+ return self.providedClientServerEntries
39
101
 
40
- def getImplementedEntries(self) -> List[RefType]:
41
- return self.implementedEntryRefs
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)
108
+
109
+ def getProvidedDatas(self):
110
+ return self.providedDatas
42
111
 
112
+ def createProvidedData(self, short_name: str) -> VariableDataPrototype:
113
+ if (not self.IsElementExists(short_name)):
114
+ prototype = VariableDataPrototype(self, short_name)
115
+ self.addElement(prototype)
116
+ self.providedDatas.append(prototype)
117
+ return self.getElement(short_name)
118
+
119
+ def getProvidedModeGroups(self):
120
+ return self.providedModeGroups
121
+
43
122
  def createProvidedModeGroup(self, short_name: str) -> ModeDeclarationGroupPrototype:
44
- if (short_name not in self.elements):
123
+ if (not self.IsElementExists(short_name)):
45
124
  prototype = ModeDeclarationGroupPrototype(self, short_name)
46
- self.elements[short_name] = prototype
47
- self.providedModeGroups[short_name] = prototype
48
- return self.elements[short_name]
125
+ self.addElement(prototype)
126
+ self.providedModeGroups.append(prototype)
127
+ return self.getElement(short_name)
128
+
129
+ def getReleasedTriggers(self):
130
+ return self.releasedTriggers
131
+
132
+ def createReleasedTrigger(self, short_name: str) -> Trigger:
133
+ if (not self.IsElementExists(short_name)):
134
+ trigger = Trigger(self, short_name)
135
+ self.addElement(trigger)
136
+ self.releasedTriggers.append(trigger)
137
+ return self.getElement(short_name)
49
138
 
50
- def getProvidedModeGroups(self) -> List[ModeDeclarationGroupPrototype]:
51
- return sorted(self.providedModeGroups.values(), key=lambda v: v.short_name)
139
+ def getRequiredClientServerEntries(self):
140
+ return self.requiredClientServerEntries
141
+
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)
148
+
149
+ def getRequiredDatas(self):
150
+ return self.requiredDatas
151
+
152
+ def createRequiredData(self, short_name: str) -> VariableDataPrototype:
153
+ if (not self.IsElementExists(short_name)):
154
+ prototype = VariableDataPrototype(self, short_name)
155
+ self.addElement(prototype)
156
+ self.requiredDatas.append(prototype)
157
+ return self.getElement(short_name)
158
+
159
+ def getRequiredModeGroups(self):
160
+ return self.requiredModeGroups
52
161
 
53
162
  def createRequiredModeGroup(self, short_name: str) -> ModeDeclarationGroupPrototype:
54
- if (short_name not in self.elements):
163
+ if (not self.IsElementExists(short_name)):
55
164
  prototype = ModeDeclarationGroupPrototype(self, short_name)
56
- self.elements[short_name] = prototype
57
- self.requiredModeGroups[short_name] = property
58
- return self.elements[short_name]
165
+ self.addElement(prototype)
166
+ self.requiredModeGroups.append(prototype)
167
+ return self.getElement(short_name)
59
168
 
60
- def getRequiredModeGroups(self) -> List[ModeDeclarationGroupPrototype]:
61
- return sorted(self.requiredModeGroups.values(), key=lambda v: v.short_name)
169
+ def getRequiredTriggers(self):
170
+ return self.requiredTriggers
62
171
 
63
- def createBswInternalBehavior(self, short_name: str) -> BswInternalBehavior:
64
- '''
65
- Create the INTERNAL-BEHAVIORS tag
66
- '''
67
- if (short_name not in self.elements):
68
- prototype = BswInternalBehavior(self, short_name)
69
- self.elements[short_name] = prototype
70
- return self.elements[short_name]
172
+ def createRequiredTrigger(self, short_name: str) -> Trigger:
173
+ if (not self.IsElementExists(short_name)):
174
+ trigger = Trigger(self, short_name)
175
+ self.addElement(trigger)
176
+ self.requiredTriggers.append(trigger)
177
+ return self.getElement(short_name)
71
178
 
72
- def getBswInternalBehaviors(self) -> List[BswInternalBehavior]:
73
- return list(filter(lambda a: isinstance(a, BswInternalBehavior), self.elements.values()))
179
+
@@ -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):
@@ -4,13 +4,15 @@ from typing import List
4
4
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
5
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
6
6
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, RefType
7
- from ....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ParameterDataPrototype
7
+ from ....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ParameterDataPrototype, VariableDataPrototype
8
+
8
9
 
9
10
  class ReentrancyLevelEnum(Enum):
10
11
  ENUM_MULTICORE_REENTRANT = "multicoreReentrant"
11
12
  ENUM_NON_REENTRANT = "nonReentrant"
12
13
  ENUM_SINGLE_CORE_REENTRANT = "singleCoreReentrant"
13
14
 
15
+
14
16
  class ExclusiveArea(Identifiable):
15
17
  def __init__(self, parent: ARObject, short_name: str):
16
18
  super().__init__(parent, short_name)
@@ -18,16 +20,15 @@ class ExclusiveArea(Identifiable):
18
20
 
19
21
  class ExecutableEntity(Identifiable, metaclass=ABCMeta):
20
22
  def __init__(self, parent: ARObject, short_name: str):
21
- if type(self) == ExecutableEntity:
23
+ if type(self) is ExecutableEntity:
22
24
  raise NotImplementedError("ExecutableEntity is an abstract class.")
23
25
 
24
26
  super().__init__(parent, short_name)
25
27
 
26
28
  self.activationReasons = [] # type: List[ExecutableEntityActivationReason]
27
- self.canEnterExclusiveAreaRefs = [] # type: List[RefType]
29
+ self.canEnterExclusiveAreaRefs = [] # type: List[RefType]
28
30
  self.minimumStartInterval = None # type: ARFloat
29
- self.reentrancyLevel = None #
30
-
31
+ self.reentrancyLevel = None # type: ReentrancyLevelEnum
31
32
  self.swAddrMethodRef = None # type: RefType
32
33
 
33
34
  def getActivationReasons(self):
@@ -73,7 +74,7 @@ class ExecutableEntity(Identifiable, metaclass=ABCMeta):
73
74
 
74
75
  class InternalBehavior(Identifiable, metaclass=ABCMeta):
75
76
  def __init__(self, parent: ARObject, short_name: str):
76
- if type(self) == InternalBehavior:
77
+ if type(self) is InternalBehavior:
77
78
  raise NotImplementedError("InternalBehavior is an abstract class.")
78
79
  super().__init__(parent, short_name)
79
80
 
@@ -109,6 +110,16 @@ class InternalBehavior(Identifiable, metaclass=ABCMeta):
109
110
 
110
111
  def getExclusiveAreas(self) -> List[ExclusiveArea]:
111
112
  return list(filter(lambda c: isinstance(c, ExclusiveArea), self.elements.values()))
113
+
114
+ def getStaticMemories(self):
115
+ return self.staticMemories
116
+
117
+ def createStaticMemory(self, short_name: str) -> VariableDataPrototype:
118
+ if (short_name not in self.elements):
119
+ prototype = VariableDataPrototype(self, short_name)
120
+ self.addElement(prototype)
121
+ self.staticMemories.append(prototype)
122
+ return self.getElement(short_name)
112
123
 
113
124
 
114
125
  class AbstractEvent(Identifiable):
@@ -3,11 +3,45 @@ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject im
3
3
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
4
4
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARNumerical, PositiveInteger, RefType, TRefType
5
5
 
6
+
7
+ class ModeDeclarationGroupPrototypeMapping(ARObject):
8
+ def __init__(self):
9
+ super().__init__()
10
+
11
+ self.firstModeGroupRef = None # type: RefType
12
+ self.modeDeclarationMappingSetRef = None # type: RefType
13
+ self.secondModeGroupRef = None # type: RefType
14
+
15
+ def getFirstModeGroupRef(self):
16
+ return self.firstModeGroupRef
17
+
18
+ def setFirstModeGroupRef(self, value):
19
+ if value is not None:
20
+ self.firstModeGroupRef = value
21
+ return self
22
+
23
+ def getModeDeclarationMappingSetRef(self):
24
+ return self.modeDeclarationMappingSetRef
25
+
26
+ def setModeDeclarationMappingSetRef(self, value):
27
+ if value is not None:
28
+ self.modeDeclarationMappingSetRef = value
29
+ return self
30
+
31
+ def getSecondModeGroupRef(self):
32
+ return self.secondModeGroupRef
33
+
34
+ def setSecondModeGroupRef(self, value):
35
+ if value is not None:
36
+ self.secondModeGroupRef = value
37
+ return self
38
+
39
+
6
40
  class ModeDeclaration(Identifiable):
7
41
  def __init__(self, parent: ARObject, short_name: str):
8
42
  super().__init__(parent, short_name)
9
43
 
10
- self.value = None # type: ARNumerical
44
+ self.value = None # type: ARNumerical
11
45
 
12
46
  def setValue(self, value):
13
47
  self.value = value
@@ -38,6 +72,7 @@ class ModeRequestTypeMap(ARObject):
38
72
  self.modeGroupRef = value
39
73
  return self
40
74
 
75
+
41
76
  class ModeDeclarationGroup(Identifiable):
42
77
  def __init__(self, parent: ARObject, short_name: str):
43
78
  super().__init__(parent, short_name)
@@ -56,7 +91,7 @@ class ModeDeclarationGroup(Identifiable):
56
91
  return self.elements[short_name]
57
92
 
58
93
  def getModeDeclarations(self) -> List[ModeDeclaration]:
59
- return list(sorted(filter(lambda a: isinstance(a, ModeDeclaration), self.elements.values()), key= lambda o:o.short_name))
94
+ return list(sorted(filter(lambda a: isinstance(a, ModeDeclaration), self.elements.values()), key=lambda o: o.short_name))
60
95
 
61
96
  def setInitialModeRef(self, ref: RefType):
62
97
  self.initialModeRef = ref
@@ -110,4 +145,4 @@ class ModeDeclarationGroupPrototype(Identifiable):
110
145
 
111
146
  def setTypeTRef(self, value):
112
147
  self.typeTRef = value
113
- return self
148
+ return self