armodel 1.7.6__py3-none-any.whl → 1.7.8__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_dump_cli.py +33 -22
- armodel/cli/arxml_format_cli.py +25 -13
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +95 -21
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +359 -59
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +134 -35
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +17 -7
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +10 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +18 -2
- armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +20 -19
- armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/HwElementCategory.py +59 -0
- armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py +145 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +215 -157
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +69 -35
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +17 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +19 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +113 -39
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +3 -2
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py +41 -16
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +10 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +13 -6
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +111 -38
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py +9 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +5 -4
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +26 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +28 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DoIp.py +29 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/EcuResourceMapping.py +45 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +31 -21
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +5 -3
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +9 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayCommunication.py +76 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayTopology.py +654 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/__init__.py +0 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +539 -77
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +28 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +245 -130
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +27 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +592 -17
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +33 -21
- armodel/models/M2/MSR/AsamHdo/AdminData.py +1 -2
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +3 -1
- armodel/models/M2/MSR/AsamHdo/SpecialData.py +35 -8
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +0 -3
- armodel/models/__init__.py +8 -0
- armodel/parser/abstract_arxml_parser.py +34 -27
- armodel/parser/arxml_parser.py +1778 -616
- armodel/parser/file_parser.py +5 -3
- armodel/tests/test_armodel/models/test_ar_package.py +6 -11
- armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -3
- armodel/tests/test_armodel/models/test_datatype.py +1 -1
- armodel/tests/test_armodel/models/test_port_interface.py +116 -117
- armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +218 -0
- armodel/tests/test_armodel/parser/test_sw_components.py +54 -22
- armodel/tests/test_armodel/parser/test_system.py +2 -8
- armodel/transformer/__init__.py +0 -0
- armodel/transformer/abstract.py +6 -0
- armodel/transformer/admin_data.py +31 -0
- armodel/writer/abstract_arxml_writer.py +27 -33
- armodel/writer/arxml_writer.py +1875 -599
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/METADATA +81 -3
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/RECORD +69 -56
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/LICENSE +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/WHEEL +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/top_level.txt +0 -0
|
@@ -4,14 +4,15 @@ from .....M2.MSR.Documentation.TextModel.MultilanguageData import MultilanguageL
|
|
|
4
4
|
from .....M2.MSR.Documentation.Annotation import Annotation
|
|
5
5
|
from .....M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph
|
|
6
6
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
7
|
-
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral
|
|
7
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, CategoryString
|
|
8
8
|
from abc import ABCMeta
|
|
9
9
|
from typing import List
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
|
|
12
|
+
class Referrable(ARObject, metaclass=ABCMeta):
|
|
12
13
|
def __init__(self, parent: ARObject, short_name: str):
|
|
13
14
|
|
|
14
|
-
if type(self)
|
|
15
|
+
if type(self) is Referrable:
|
|
15
16
|
raise NotImplementedError("Referrable is an abstract class.")
|
|
16
17
|
|
|
17
18
|
ARObject.__init__(self)
|
|
@@ -40,14 +41,15 @@ class Referrable(ARObject, metaclass = ABCMeta):
|
|
|
40
41
|
def getFullName(self) -> str:
|
|
41
42
|
return self.full_name
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
|
|
45
|
+
class MultilanguageReferrable(Referrable, metaclass=ABCMeta):
|
|
44
46
|
def __init__(self, parent: ARObject, short_name: str):
|
|
45
|
-
if type(self)
|
|
47
|
+
if type(self) is MultilanguageReferrable:
|
|
46
48
|
raise NotImplementedError("MultilanguageReferrable is an abstract class.")
|
|
47
49
|
|
|
48
50
|
super().__init__(parent, short_name)
|
|
49
51
|
|
|
50
|
-
#self._parent = parent
|
|
52
|
+
# self._parent = parent
|
|
51
53
|
self.longName = None # type: MultilanguageLongName
|
|
52
54
|
|
|
53
55
|
def getLongName(self) -> MultilanguageLongName:
|
|
@@ -58,15 +60,15 @@ class MultilanguageReferrable(Referrable, metaclass = ABCMeta):
|
|
|
58
60
|
return self
|
|
59
61
|
|
|
60
62
|
|
|
61
|
-
class CollectableElement(ARObject, metaclass
|
|
63
|
+
class CollectableElement(ARObject, metaclass=ABCMeta):
|
|
62
64
|
def __init__(self):
|
|
63
|
-
if type(self)
|
|
65
|
+
if type(self) is CollectableElement:
|
|
64
66
|
raise NotImplementedError("CollectableElement is an abstract class.")
|
|
65
67
|
|
|
66
68
|
self.elements = {} # type: dict[str, Referrable]
|
|
67
69
|
|
|
68
70
|
def getTotalElement(self) -> int:
|
|
69
|
-
#return len(list(filter(lambda a: not isinstance(a, ARPackage) , self.elements.values())))
|
|
71
|
+
# return len(list(filter(lambda a: not isinstance(a, ARPackage) , self.elements.values())))
|
|
70
72
|
return len(self.elements.values())
|
|
71
73
|
|
|
72
74
|
def removeElement(self, key):
|
|
@@ -78,16 +80,22 @@ class CollectableElement(ARObject, metaclass = ABCMeta):
|
|
|
78
80
|
return self.elements.values()
|
|
79
81
|
|
|
80
82
|
def addElement(self, element: Referrable):
|
|
81
|
-
|
|
83
|
+
short_name = element.getShortName()
|
|
84
|
+
if not self.IsElementExists(short_name):
|
|
85
|
+
self.elements[short_name] = element
|
|
82
86
|
|
|
83
87
|
def getElement(self, short_name: str) -> Referrable:
|
|
84
88
|
if (short_name not in self.elements):
|
|
85
89
|
return None
|
|
86
90
|
return self.elements[short_name]
|
|
91
|
+
|
|
92
|
+
def IsElementExists(self, short_name: str) -> bool:
|
|
93
|
+
return short_name in self.elements
|
|
94
|
+
|
|
87
95
|
|
|
88
|
-
class Identifiable(MultilanguageReferrable, CollectableElement, metaclass
|
|
96
|
+
class Identifiable(MultilanguageReferrable, CollectableElement, metaclass=ABCMeta):
|
|
89
97
|
def __init__(self, parent: ARObject, short_name: str):
|
|
90
|
-
if type(self)
|
|
98
|
+
if type(self) is Identifiable:
|
|
91
99
|
raise NotImplementedError("Identifiable is an abstract class.")
|
|
92
100
|
|
|
93
101
|
MultilanguageReferrable.__init__(self, parent, short_name)
|
|
@@ -95,7 +103,7 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
|
|
|
95
103
|
|
|
96
104
|
self.annotations = [] # type: List[Annotation]
|
|
97
105
|
self.adminData = None # type: AdminData
|
|
98
|
-
self.category = None # type:
|
|
106
|
+
self.category = None # type: CategoryString
|
|
99
107
|
self.introduction = None # type: DocumentationBlock
|
|
100
108
|
self.desc = None # type: MultiLanguageOverviewParagraph
|
|
101
109
|
|
|
@@ -103,8 +111,12 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
|
|
|
103
111
|
return self.adminData
|
|
104
112
|
|
|
105
113
|
def setAdminData(self, value):
|
|
106
|
-
|
|
114
|
+
if value is not None:
|
|
115
|
+
self.adminData = value
|
|
107
116
|
return self
|
|
117
|
+
|
|
118
|
+
def removeAdminData(self):
|
|
119
|
+
self.adminData = None
|
|
108
120
|
|
|
109
121
|
def getDesc(self):
|
|
110
122
|
return self.desc
|
|
@@ -117,7 +129,10 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
|
|
|
117
129
|
return self.category
|
|
118
130
|
|
|
119
131
|
def setCategory(self, value):
|
|
120
|
-
|
|
132
|
+
if isinstance(value, str):
|
|
133
|
+
self.category = CategoryString().setValue(value)
|
|
134
|
+
else:
|
|
135
|
+
self.category = value
|
|
121
136
|
return self
|
|
122
137
|
|
|
123
138
|
def getIntroduction(self):
|
|
@@ -127,7 +142,6 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
|
|
|
127
142
|
self.introduction = value
|
|
128
143
|
return self
|
|
129
144
|
|
|
130
|
-
|
|
131
145
|
def addAnnotation(self, annotation: Annotation):
|
|
132
146
|
self.annotations.append(annotation)
|
|
133
147
|
return self
|
|
@@ -138,44 +152,64 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
|
|
|
138
152
|
|
|
139
153
|
class PackageableElement(Identifiable, metaclass=ABCMeta):
|
|
140
154
|
def __init__(self, parent: ARObject, short_name: str):
|
|
141
|
-
if type(self)
|
|
155
|
+
if type(self) is PackageableElement:
|
|
142
156
|
raise NotImplementedError("PackageableElement is an abstract class.")
|
|
143
157
|
super().__init__(parent, short_name)
|
|
144
158
|
|
|
145
159
|
|
|
146
160
|
class ARElement(PackageableElement, metaclass=ABCMeta):
|
|
147
161
|
def __init__(self, parent: ARObject, short_name: str):
|
|
148
|
-
if type(self)
|
|
162
|
+
if type(self) is ARElement:
|
|
149
163
|
raise NotImplementedError("ARElement is an abstract class.")
|
|
150
164
|
super().__init__(parent, short_name)
|
|
151
165
|
|
|
152
166
|
|
|
153
167
|
class Describable(ARObject, metaclass=ABCMeta):
|
|
154
168
|
def __init__(self):
|
|
155
|
-
if type(self)
|
|
169
|
+
if type(self) is Describable:
|
|
156
170
|
raise NotImplementedError("Describable is an abstract class.")
|
|
157
171
|
|
|
158
172
|
super().__init__()
|
|
159
173
|
|
|
160
|
-
self.
|
|
161
|
-
self.
|
|
162
|
-
self.
|
|
163
|
-
self.
|
|
174
|
+
self.desc = None
|
|
175
|
+
self.category = None
|
|
176
|
+
self.adminData = None
|
|
177
|
+
self.introduction = None
|
|
164
178
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
return self._desc
|
|
179
|
+
def getDesc(self):
|
|
180
|
+
return self.desc
|
|
168
181
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
182
|
+
def setDesc(self, value):
|
|
183
|
+
if value is not None:
|
|
184
|
+
self.desc = value
|
|
185
|
+
return self
|
|
172
186
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
187
|
+
def getCategory(self):
|
|
188
|
+
return self.category
|
|
189
|
+
|
|
190
|
+
def setCategory(self, value):
|
|
191
|
+
if value is not None:
|
|
192
|
+
self.category = value
|
|
193
|
+
return self
|
|
176
194
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
self._category = value
|
|
195
|
+
def getAdminData(self):
|
|
196
|
+
return self.adminData
|
|
180
197
|
|
|
198
|
+
def setAdminData(self, value):
|
|
199
|
+
if value is not None:
|
|
200
|
+
self.adminData = value
|
|
201
|
+
return self
|
|
202
|
+
|
|
203
|
+
def removeAdminData(self):
|
|
204
|
+
self.adminData = None
|
|
181
205
|
|
|
206
|
+
def getIntroduction(self):
|
|
207
|
+
return self.introduction
|
|
208
|
+
|
|
209
|
+
def setIntroduction(self, value):
|
|
210
|
+
if value is not None:
|
|
211
|
+
self.introduction = value
|
|
212
|
+
return self
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py
CHANGED
|
@@ -21,7 +21,9 @@ class ARType(metaclass = ABCMeta):
|
|
|
21
21
|
return self.value
|
|
22
22
|
|
|
23
23
|
def setValue(self, val):
|
|
24
|
-
|
|
24
|
+
if val is not None:
|
|
25
|
+
self.value = val
|
|
26
|
+
return self
|
|
25
27
|
|
|
26
28
|
def getText(self) -> str:
|
|
27
29
|
return str(self)
|
|
@@ -506,5 +508,19 @@ class MacAddressString(ARLiteral):
|
|
|
506
508
|
* xml.xsd.pattern=([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}
|
|
507
509
|
* xml.xsd.type=string
|
|
508
510
|
'''
|
|
511
|
+
def __init__(self):
|
|
512
|
+
super().__init__()
|
|
513
|
+
|
|
514
|
+
class CategoryString(ARLiteral):
|
|
515
|
+
'''
|
|
516
|
+
This represents the pattern applicable to categories.
|
|
517
|
+
It is basically the same as Identifier but has a different semantics. Therefore it is modeled as a primitive
|
|
518
|
+
of its own.
|
|
519
|
+
|
|
520
|
+
Tags:
|
|
521
|
+
* xml.xsd.customType=CATEGORY-STRING
|
|
522
|
+
* xml.xsd.pattern=[a-zA-Z][a-zA-Z0-9_]*
|
|
523
|
+
* xml.xsd.type=string
|
|
524
|
+
'''
|
|
509
525
|
def __init__(self):
|
|
510
526
|
super().__init__()
|
|
@@ -3,7 +3,7 @@ from typing import List
|
|
|
3
3
|
from ....M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps
|
|
4
4
|
from ....M2.AUTOSARTemplates.CommonStructure import ValueSpecification
|
|
5
5
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
6
|
-
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import AREnum, ARLiteral, ARNumerical, ARPositiveInteger, Boolean
|
|
6
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import AREnum, ARLiteral, ARNumerical, ARPositiveInteger, Boolean, TimeValue
|
|
7
7
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean
|
|
8
8
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
|
|
9
9
|
from ....M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
@@ -295,15 +295,29 @@ class ReceiverComSpec(RPortComSpec):
|
|
|
295
295
|
|
|
296
296
|
def getCompositeNetworkRepresentations(self) -> List[CompositeNetworkRepresentation]:
|
|
297
297
|
return self.compositeNetworkRepresentations
|
|
298
|
+
|
|
299
|
+
class ModeSwitchedAckRequest(ARObject):
|
|
300
|
+
def __init__(self):
|
|
301
|
+
super().__init__()
|
|
302
|
+
|
|
303
|
+
self.timeout = None # type: TimeValue
|
|
304
|
+
|
|
305
|
+
def getTimeout(self):
|
|
306
|
+
return self.timeout
|
|
307
|
+
|
|
308
|
+
def setTimeout(self, value):
|
|
309
|
+
if value is not None:
|
|
310
|
+
self.timeout = value
|
|
311
|
+
return self
|
|
298
312
|
|
|
299
313
|
class ModeSwitchSenderComSpec(RPortComSpec):
|
|
300
314
|
def __init__(self):
|
|
301
315
|
super().__init__()
|
|
302
316
|
|
|
303
|
-
self.enhancedModeApi = None
|
|
304
|
-
self.modeGroupRef = None
|
|
305
|
-
self.modeSwitchedAck = None
|
|
306
|
-
self.queueLength = None
|
|
317
|
+
self.enhancedModeApi = None # type: ARBoolean
|
|
318
|
+
self.modeGroupRef = None # type: RefType
|
|
319
|
+
self.modeSwitchedAck = None # type: ModeSwitchedAckRequest
|
|
320
|
+
self.queueLength = None # type: ARPositiveInteger
|
|
307
321
|
|
|
308
322
|
def getEnhancedModeApi(self):
|
|
309
323
|
return self.enhancedModeApi
|
|
@@ -8,12 +8,17 @@ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiab
|
|
|
8
8
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
9
9
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import TRefType
|
|
10
10
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean, RefType
|
|
11
|
-
from .....M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec
|
|
11
|
+
from .....M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec
|
|
12
|
+
from .....M2.AUTOSARTemplates.SWComponentTemplate.Communication import NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec
|
|
13
|
+
from .....M2.AUTOSARTemplates.SWComponentTemplate.Communication import ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec
|
|
14
|
+
from .....M2.AUTOSARTemplates.SWComponentTemplate.Communication import RPortComSpec, ServerComSpec
|
|
15
|
+
|
|
12
16
|
|
|
13
17
|
class SymbolProps(ImplementationProps):
|
|
14
18
|
def __init__(self, parent: ARObject, short_name: str):
|
|
15
19
|
super().__init__(parent, short_name)
|
|
16
20
|
|
|
21
|
+
|
|
17
22
|
class PortPrototype(Identifiable):
|
|
18
23
|
def __init__(self, parent: ARObject, short_name: str):
|
|
19
24
|
super().__init__(parent, short_name)
|
|
@@ -83,6 +88,7 @@ class PortPrototype(Identifiable):
|
|
|
83
88
|
self.triggerPortAnnotations.append(value)
|
|
84
89
|
return self
|
|
85
90
|
|
|
91
|
+
|
|
86
92
|
class AbstractProvidedPortPrototype(PortPrototype):
|
|
87
93
|
def __init__(self, parent: ARObject, short_name: str):
|
|
88
94
|
super().__init__(parent, short_name)
|
|
@@ -91,7 +97,7 @@ class AbstractProvidedPortPrototype(PortPrototype):
|
|
|
91
97
|
|
|
92
98
|
def _validateRPortComSpec(self, com_spec: PPortComSpec):
|
|
93
99
|
if isinstance(com_spec, NonqueuedSenderComSpec):
|
|
94
|
-
if com_spec.dataElementRef
|
|
100
|
+
if com_spec.dataElementRef is None:
|
|
95
101
|
raise ValueError(
|
|
96
102
|
"operation of NonqueuedSenderComSpec is invalid")
|
|
97
103
|
if com_spec.dataElementRef.dest != "VARIABLE-DATA-PROTOTYPE":
|
|
@@ -170,6 +176,7 @@ class PPortPrototype(AbstractProvidedPortPrototype):
|
|
|
170
176
|
self.providedInterfaceTRef = value
|
|
171
177
|
return self
|
|
172
178
|
|
|
179
|
+
|
|
173
180
|
class RPortPrototype(AbstractRequiredPortPrototype):
|
|
174
181
|
def __init__(self, parent: ARObject, short_name: str):
|
|
175
182
|
super().__init__(parent, short_name)
|
|
@@ -191,6 +198,7 @@ class RPortPrototype(AbstractRequiredPortPrototype):
|
|
|
191
198
|
self.requiredInterfaceTRef = value
|
|
192
199
|
return self
|
|
193
200
|
|
|
201
|
+
|
|
194
202
|
class PRPortPrototype(PortPrototype):
|
|
195
203
|
def __init__(self, parent, short_name):
|
|
196
204
|
super().__init__(parent, short_name)
|
|
@@ -220,6 +228,7 @@ class PRPortPrototype(PortPrototype):
|
|
|
220
228
|
self.providedRequiredInterface = value
|
|
221
229
|
return self
|
|
222
230
|
|
|
231
|
+
|
|
223
232
|
class PortGroup(Identifiable):
|
|
224
233
|
def __init__(self, parent: ARObject, short_name: str):
|
|
225
234
|
super().__init__(parent, short_name)
|
|
@@ -239,70 +248,105 @@ class PortGroup(Identifiable):
|
|
|
239
248
|
def getOuterPortRefs(self) -> List[RefType]:
|
|
240
249
|
return self._outer_port_ref
|
|
241
250
|
|
|
242
|
-
|
|
251
|
+
|
|
252
|
+
class SwComponentType(ARElement, metaclass=ABCMeta):
|
|
243
253
|
def __init__(self, parent: ARObject, short_name: str):
|
|
244
254
|
super().__init__(parent, short_name)
|
|
245
255
|
|
|
256
|
+
self.ports = [] # type: List[PortPrototype]
|
|
257
|
+
self.portGroups = [] # type: List[PortGroup]
|
|
258
|
+
|
|
259
|
+
def getPorts(self):
|
|
260
|
+
return self.ports
|
|
261
|
+
|
|
246
262
|
def createPPortPrototype(self, short_name: str) -> PPortPrototype:
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
return
|
|
263
|
+
prototype = PPortPrototype(self, short_name)
|
|
264
|
+
self.addElement(prototype)
|
|
265
|
+
self.ports.append(prototype)
|
|
266
|
+
return prototype
|
|
251
267
|
|
|
252
268
|
def createRPortPrototype(self, short_name) -> RPortPrototype:
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
return
|
|
269
|
+
prototype = RPortPrototype(self, short_name)
|
|
270
|
+
self.addElement(prototype)
|
|
271
|
+
self.ports.append(prototype)
|
|
272
|
+
return prototype
|
|
257
273
|
|
|
258
274
|
def createPRPortPrototype(self, short_name) -> PRPortPrototype:
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
return
|
|
275
|
+
prototype = PRPortPrototype(self, short_name)
|
|
276
|
+
self.addElement(prototype)
|
|
277
|
+
self.ports.append(prototype)
|
|
278
|
+
return prototype
|
|
263
279
|
|
|
264
|
-
def createPortGroup(self, short_name) -> PortGroup:
|
|
265
|
-
port_group = PortGroup(self, short_name)
|
|
266
|
-
if (short_name not in self.elements):
|
|
267
|
-
self.elements[short_name] = port_group
|
|
268
|
-
return self.elements[short_name]
|
|
269
|
-
|
|
270
280
|
def getPPortPrototypes(self) -> List[PPortPrototype]:
|
|
271
|
-
return list(sorted(filter(lambda c: isinstance(c, PPortPrototype), self.
|
|
281
|
+
return list(sorted(filter(lambda c: isinstance(c, PPortPrototype), self.ports), key=lambda o: o.short_name))
|
|
272
282
|
|
|
273
283
|
def getRPortPrototypes(self) -> List[RPortPrototype]:
|
|
274
|
-
return list(sorted(filter(lambda c: isinstance(c, RPortPrototype), self.
|
|
284
|
+
return list(sorted(filter(lambda c: isinstance(c, RPortPrototype), self.ports), key=lambda o: o.short_name))
|
|
275
285
|
|
|
276
286
|
def getPRPortPrototypes(self) -> List[PRPortPrototype]:
|
|
277
|
-
return list(sorted(filter(lambda c: isinstance(c, PRPortPrototype), self.
|
|
287
|
+
return list(sorted(filter(lambda c: isinstance(c, PRPortPrototype), self.ports), key=lambda o: o.short_name))
|
|
278
288
|
|
|
279
289
|
def getPortPrototypes(self) -> List[PortPrototype]:
|
|
280
|
-
return list(sorted(filter(lambda c: isinstance(c, PortPrototype), self.
|
|
281
|
-
|
|
290
|
+
return list(sorted(filter(lambda c: isinstance(c, PortPrototype), self.ports), key=lambda o: o.short_name))
|
|
291
|
+
|
|
282
292
|
def getPortGroups(self) -> List[PortGroup]:
|
|
283
|
-
return
|
|
293
|
+
return self.portGroups
|
|
284
294
|
|
|
295
|
+
def createPortGroup(self, short_name) -> PortGroup:
|
|
296
|
+
port_group = PortGroup(self, short_name)
|
|
297
|
+
self.addElement(port_group)
|
|
298
|
+
self.portGroups.append(port_group)
|
|
299
|
+
return port_group
|
|
300
|
+
|
|
285
301
|
|
|
286
|
-
class AtomicSwComponentType(SwComponentType, metaclass
|
|
302
|
+
class AtomicSwComponentType(SwComponentType, metaclass=ABCMeta):
|
|
287
303
|
def __init__(self, parent: ARObject, short_name: str):
|
|
288
304
|
super().__init__(parent, short_name)
|
|
289
305
|
|
|
306
|
+
self.internalBehavior = None # type: SwcInternalBehavior
|
|
307
|
+
self.symbolProps = None # type: SymbolProps
|
|
308
|
+
|
|
309
|
+
def getInternalBehavior(self):
|
|
310
|
+
return self.internalBehavior
|
|
311
|
+
|
|
290
312
|
def createSwcInternalBehavior(self, short_name) -> SwcInternalBehavior:
|
|
291
313
|
if (short_name not in self.elements):
|
|
292
314
|
if (len(list(filter(lambda e: isinstance(e, SwcInternalBehavior), self.elements.values()))) >= 1):
|
|
293
315
|
raise ValueError("The internal behavior of <%s> can not more than 1" % self.short_name)
|
|
294
316
|
behavior = SwcInternalBehavior(self, short_name)
|
|
295
317
|
self.elements[short_name] = behavior
|
|
318
|
+
self.internalBehavior = behavior
|
|
296
319
|
return self.elements[short_name]
|
|
297
320
|
|
|
321
|
+
def getSymbolProps(self):
|
|
322
|
+
return self.symbolProps
|
|
323
|
+
|
|
324
|
+
def setSymbolProps(self, value):
|
|
325
|
+
if value is not None:
|
|
326
|
+
self.symbolProps = value
|
|
327
|
+
return self
|
|
328
|
+
|
|
329
|
+
'''
|
|
298
330
|
@property
|
|
299
331
|
def internal_behavior(self) -> SwcInternalBehavior:
|
|
300
332
|
return next(filter(lambda e: isinstance(e, SwcInternalBehavior), self.elements.values()))
|
|
333
|
+
'''
|
|
334
|
+
|
|
301
335
|
|
|
302
336
|
class EcuAbstractionSwComponentType(AtomicSwComponentType):
|
|
303
|
-
def __init__(self, parent:ARObject, short_name: str):
|
|
337
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
304
338
|
super().__init__(parent, short_name)
|
|
305
339
|
|
|
340
|
+
self.hardwareElementRefs = [] # List[RefType]
|
|
341
|
+
|
|
342
|
+
def getHardwareElementRefs(self):
|
|
343
|
+
return self.hardwareElementRefs
|
|
344
|
+
|
|
345
|
+
def addHardwareElementRefs(self, value):
|
|
346
|
+
if value is not None:
|
|
347
|
+
self.hardwareElementRefs.append(value)
|
|
348
|
+
return self
|
|
349
|
+
|
|
306
350
|
|
|
307
351
|
class ApplicationSwComponentType(AtomicSwComponentType):
|
|
308
352
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -313,11 +357,40 @@ class ComplexDeviceDriverSwComponentType(AtomicSwComponentType):
|
|
|
313
357
|
def __init__(self, parent: ARObject, short_name: str):
|
|
314
358
|
super().__init__(parent, short_name)
|
|
315
359
|
|
|
360
|
+
self.hardwareElementRefs = [] # List[RefType]
|
|
361
|
+
|
|
362
|
+
def getHardwareElementRefs(self):
|
|
363
|
+
return self.hardwareElementRefs
|
|
364
|
+
|
|
365
|
+
def addHardwareElementRefs(self, value):
|
|
366
|
+
if value is not None:
|
|
367
|
+
self.hardwareElementRefs.append(value)
|
|
368
|
+
return self
|
|
369
|
+
|
|
316
370
|
|
|
317
371
|
class NvBlockSwComponentType(AtomicSwComponentType):
|
|
318
372
|
def __init__(self, parent: ARObject, short_name: str):
|
|
319
373
|
super().__init__(parent, short_name)
|
|
320
374
|
|
|
375
|
+
self.bulkNvDataDescriptors = [] # type: List[BulkNvDataDescriptor]
|
|
376
|
+
self.nvBlockDescriptors = [] # type: List[NvBlockDescriptor]
|
|
377
|
+
|
|
378
|
+
def getBulkNvDataDescriptors(self):
|
|
379
|
+
return self.bulkNvDataDescriptors
|
|
380
|
+
|
|
381
|
+
def addBulkNvDataDescriptor(self, value):
|
|
382
|
+
if value is not None:
|
|
383
|
+
self.bulkNvDataDescriptors.append(value)
|
|
384
|
+
return self
|
|
385
|
+
|
|
386
|
+
def getNvBlockDescriptors(self):
|
|
387
|
+
return self.nvBlockDescriptors
|
|
388
|
+
|
|
389
|
+
def setNvBlockDescriptor(self, value):
|
|
390
|
+
if value is not None:
|
|
391
|
+
self.nvBlockDescriptors.append(value)
|
|
392
|
+
return self
|
|
393
|
+
|
|
321
394
|
|
|
322
395
|
class SensorActuatorSwComponentType(AtomicSwComponentType):
|
|
323
396
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -338,6 +411,7 @@ class CompositionSwComponentType(SwComponentType):
|
|
|
338
411
|
def __init__(self, parent: ARObject, short_name: str):
|
|
339
412
|
super().__init__(parent, short_name)
|
|
340
413
|
|
|
414
|
+
self.components = [] # type: List[SwComponentPrototype]
|
|
341
415
|
self.constantValueMappingRefs = [] # type: List[RefType]
|
|
342
416
|
self.dataTypeMappingRefs = [] # type: List[RefType]
|
|
343
417
|
self.instantiationRTEEventProps = [] # type: List[InstantiationRTEEventProps]
|
|
@@ -363,26 +437,26 @@ class CompositionSwComponentType(SwComponentType):
|
|
|
363
437
|
return self.elements[short_name]
|
|
364
438
|
|
|
365
439
|
def getAssemblySwConnectors(self) -> List[AssemblySwConnector]:
|
|
366
|
-
return list(sorted(filter(lambda e: isinstance(e, AssemblySwConnector), self.elements.values()), key
|
|
440
|
+
return list(sorted(filter(lambda e: isinstance(e, AssemblySwConnector), self.elements.values()), key=lambda c: c.short_name))
|
|
367
441
|
|
|
368
442
|
def getDelegationSwConnectors(self) -> List[DelegationSwConnector]:
|
|
369
|
-
return list(sorted(filter(lambda e: isinstance(e, DelegationSwConnector), self.elements.values()), key
|
|
443
|
+
return list(sorted(filter(lambda e: isinstance(e, DelegationSwConnector), self.elements.values()), key=lambda c: c.short_name))
|
|
370
444
|
|
|
371
445
|
def getSwConnectors(self) -> List[SwConnector]:
|
|
372
|
-
return list(sorted(filter(lambda e: isinstance(e, SwConnector), self.elements.values()), key
|
|
446
|
+
return list(sorted(filter(lambda e: isinstance(e, SwConnector), self.elements.values()), key=lambda c: c.short_name))
|
|
373
447
|
|
|
374
448
|
def createSwComponentPrototype(self, short_name: str) -> SwComponentPrototype:
|
|
375
|
-
if (
|
|
376
|
-
|
|
377
|
-
self.
|
|
378
|
-
|
|
449
|
+
if (not self.IsElementExists(short_name)):
|
|
450
|
+
prototype = SwComponentPrototype(self, short_name)
|
|
451
|
+
self.addElement(prototype)
|
|
452
|
+
self.components.append(prototype)
|
|
453
|
+
return self.getElement(short_name)
|
|
379
454
|
|
|
380
|
-
def
|
|
381
|
-
return
|
|
455
|
+
def getComponents(self) -> List[SwComponentPrototype]:
|
|
456
|
+
return self.components
|
|
382
457
|
|
|
383
458
|
def addDataTypeMapping(self, data_type_mapping_ref: RefType):
|
|
384
459
|
self.dataTypeMappingRefs.append(data_type_mapping_ref)
|
|
385
460
|
|
|
386
461
|
def getDataTypeMappings(self) -> List[RefType]:
|
|
387
462
|
return self.dataTypeMappingRefs
|
|
388
|
-
|
|
@@ -4,6 +4,7 @@ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveT
|
|
|
4
4
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
5
5
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
6
6
|
|
|
7
|
+
|
|
7
8
|
class SwComponentPrototype(Identifiable):
|
|
8
9
|
def __init__(self, parent: ARObject, short_name: str):
|
|
9
10
|
super().__init__(parent, short_name)
|
|
@@ -52,10 +53,10 @@ class AssemblySwConnector(SwConnector):
|
|
|
52
53
|
self.providerIRef = value
|
|
53
54
|
return self
|
|
54
55
|
|
|
55
|
-
def getRequesterIRef(self) ->
|
|
56
|
+
def getRequesterIRef(self) -> RPortInCompositionInstanceRef:
|
|
56
57
|
return self.requesterIRef
|
|
57
58
|
|
|
58
|
-
def setRequesterIRef(self, value:
|
|
59
|
+
def setRequesterIRef(self, value: RPortInCompositionInstanceRef):
|
|
59
60
|
self.requesterIRef = value
|
|
60
61
|
return self
|
|
61
62
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from abc import ABCMeta
|
|
2
2
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
3
|
-
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARNumerical, TRefType
|
|
3
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARNumerical, PositiveInteger, TRefType
|
|
4
4
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
|
|
5
5
|
from .....M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps
|
|
6
6
|
from .....M2.AUTOSARTemplates.CommonStructure import ValueSpecification
|
|
@@ -79,32 +79,57 @@ class ApplicationArrayElement(ApplicationCompositeElementDataPrototype):
|
|
|
79
79
|
def __init__(self, parent: ARObject, short_name: str):
|
|
80
80
|
super().__init__(parent, short_name)
|
|
81
81
|
|
|
82
|
-
self.arraySizeHandling = None # type:
|
|
83
|
-
self.arraySizeSemantics = None # type:
|
|
82
|
+
self.arraySizeHandling = None # type: ArraySizeHandlingEnum
|
|
83
|
+
self.arraySizeSemantics = None # type: ArraySizeSemanticsEnum
|
|
84
84
|
self.indexDataTypeRef = None # type: RefType
|
|
85
|
-
self.maxNumberOfElements = None # type:
|
|
85
|
+
self.maxNumberOfElements = None # type: PositiveInteger
|
|
86
86
|
|
|
87
|
-
def
|
|
88
|
-
self.arraySizeHandling
|
|
87
|
+
def getArraySizeHandling(self):
|
|
88
|
+
return self.arraySizeHandling
|
|
89
|
+
|
|
90
|
+
def setArraySizeHandling(self, value):
|
|
91
|
+
if value is not None:
|
|
92
|
+
self.arraySizeHandling = value
|
|
89
93
|
return self
|
|
90
|
-
|
|
91
|
-
def
|
|
92
|
-
self.arraySizeSemantics
|
|
94
|
+
|
|
95
|
+
def getArraySizeSemantics(self):
|
|
96
|
+
return self.arraySizeSemantics
|
|
97
|
+
|
|
98
|
+
def setArraySizeSemantics(self, value):
|
|
99
|
+
if value is not None:
|
|
100
|
+
self.arraySizeSemantics = value
|
|
93
101
|
return self
|
|
94
|
-
|
|
95
|
-
def
|
|
96
|
-
self.indexDataTypeRef
|
|
102
|
+
|
|
103
|
+
def getIndexDataTypeRef(self):
|
|
104
|
+
return self.indexDataTypeRef
|
|
105
|
+
|
|
106
|
+
def setIndexDataTypeRef(self, value):
|
|
107
|
+
if value is not None:
|
|
108
|
+
self.indexDataTypeRef = value
|
|
97
109
|
return self
|
|
98
|
-
|
|
99
|
-
def
|
|
100
|
-
self.maxNumberOfElements
|
|
110
|
+
|
|
111
|
+
def getMaxNumberOfElements(self):
|
|
112
|
+
return self.maxNumberOfElements
|
|
113
|
+
|
|
114
|
+
def setMaxNumberOfElements(self, value):
|
|
115
|
+
if value is not None:
|
|
116
|
+
self.maxNumberOfElements = value
|
|
101
117
|
return self
|
|
102
118
|
|
|
103
119
|
class ApplicationRecordElement(ApplicationCompositeElementDataPrototype):
|
|
104
120
|
def __init__(self, parent:ARObject, short_name: str):
|
|
105
121
|
super().__init__(parent, short_name)
|
|
106
122
|
|
|
107
|
-
self.isOptional = None
|
|
123
|
+
self.isOptional = None # type: Boolean
|
|
124
|
+
|
|
125
|
+
def getIsOptional(self):
|
|
126
|
+
return self.isOptional
|
|
127
|
+
|
|
128
|
+
def setIsOptional(self, value):
|
|
129
|
+
if value is not None:
|
|
130
|
+
self.isOptional = value
|
|
131
|
+
return self
|
|
132
|
+
|
|
108
133
|
|
|
109
134
|
class ParameterDataPrototype(AutosarDataPrototype):
|
|
110
135
|
def __init__(self, parent: ARObject, short_name: str):
|