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.
- armodel/cli/arxml_format_cli.py +1 -0
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +71 -11
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +102 -12
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +80 -9
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +17 -10
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +10 -8
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +30 -28
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +7 -5
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +38 -3
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +96 -18
- armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/PortPrototypeBlueprint.py +73 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/__init__.py +0 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/Keyword.py +45 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/__init__.py +0 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +27 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +33 -4
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ElementCollection.py +73 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +40 -14
- armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +151 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +4 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +55 -12
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SoftwareComponentDocumentation.py +80 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +11 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +34 -10
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +11 -10
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +18 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +8 -2
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/RteEventToOsTaskMapping.py +35 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +25 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/SecureCommunication.py +83 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +84 -32
- armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +10 -1
- armodel/models/M2/MSR/Documentation/BlockElements/Figure.py +163 -0
- armodel/models/M2/MSR/Documentation/BlockElements/__init__.py +0 -0
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +5 -3
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +22 -1
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +94 -9
- armodel/models/__init__.py +4 -0
- armodel/models/utils/__init__.py +0 -0
- armodel/models/utils/uuid_mgr.py +23 -0
- armodel/parser/abstract_arxml_parser.py +10 -2
- armodel/parser/arxml_parser.py +332 -104
- armodel/tests/test_armodel/models/test_datatype.py +136 -138
- armodel/tests/test_armodel/parser/test_sw_components.py +266 -4
- armodel/writer/arxml_writer.py +337 -74
- {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/METADATA +35 -1
- {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/RECORD +51 -40
- {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/LICENSE +0 -0
- {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/WHEEL +0 -0
- {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.8.dist-info → armodel-1.8.0.dist-info}/top_level.txt +0 -0
armodel/cli/arxml_format_cli.py
CHANGED
|
@@ -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.
|
|
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,
|
|
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
|
-
|
|
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.
|
|
127
|
-
referred_type = self.find(data_type.swDataDefProps.swPointerTargetProps.
|
|
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
|
-
|
|
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.
|
|
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
|
|
143
|
+
def addAccessedModeGroupRef(self, value):
|
|
73
144
|
if value is not None:
|
|
74
|
-
self.accessedModeGroupRefs
|
|
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
|
|
151
|
+
def addActivationPointRef(self, value):
|
|
81
152
|
if value is not None:
|
|
82
|
-
self.activationPointRefs
|
|
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
|
|
89
|
-
if
|
|
90
|
-
|
|
91
|
-
|
|
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
|
|
480
|
-
if
|
|
481
|
-
|
|
482
|
-
|
|
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
|
|
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
|
|
148
|
+
if self.serviceId is not None:
|
|
113
149
|
result.append("service_id : %d" % self.serviceId)
|
|
114
|
-
if self.isReentrant
|
|
150
|
+
if self.isReentrant is not None:
|
|
115
151
|
result.append("is_reentrant : %s" % self.isReentrant)
|
|
116
|
-
if self.isSynchronous
|
|
152
|
+
if self.isSynchronous is not None:
|
|
117
153
|
result.append("is_synchronous : %s" % self.isSynchronous)
|
|
118
|
-
if self.callType
|
|
154
|
+
if self.callType is not None:
|
|
119
155
|
result.append("call_type : %s" % self.callType)
|
|
120
|
-
if self.
|
|
156
|
+
if self.executionContext is not None:
|
|
121
157
|
result.append("execution_context : %s" % self.executionContext)
|
|
122
|
-
if self.
|
|
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
|
|
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
|
|
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
|
|
100
|
-
if
|
|
101
|
-
|
|
102
|
-
|
|
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
|
|
138
|
-
if
|
|
139
|
-
|
|
140
|
-
|
|
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
|
|
10
|
+
class ImplementationProps(Referrable, metaclass=ABCMeta):
|
|
11
11
|
def __init__(self, parent: ARObject, short_name: str):
|
|
12
|
-
if type(self)
|
|
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
|
|
106
|
+
class Implementation(PackageableElement, metaclass=ABCMeta):
|
|
105
107
|
def __init__(self, parent: ARObject, short_name: str):
|
|
106
|
-
if type(self)
|
|
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
|
|
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):
|