armodel 1.7.5__py3-none-any.whl → 1.7.7__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/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +41 -2
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +47 -6
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +17 -7
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +2 -2
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +4 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +8 -2
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +9 -3
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +30 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +19 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +2 -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/SwcInternalBehavior/RTEEvents.py +26 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +19 -5
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DoIp.py +29 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/ECUResourceMapping.py +44 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +165 -4
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +409 -17
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +356 -8
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinTopology.py +2 -4
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +76 -10
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +483 -54
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +45 -23
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +10 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +245 -130
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +27 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +633 -5
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +22 -11
- 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 +4 -0
- armodel/parser/abstract_arxml_parser.py +8 -5
- armodel/parser/arxml_parser.py +1229 -572
- 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/parser/test_bsw_module_descriiption.py +218 -0
- armodel/tests/test_armodel/parser/test_sw_components.py +22 -1
- armodel/writer/abstract_arxml_writer.py +7 -6
- armodel/writer/arxml_writer.py +1037 -187
- {armodel-1.7.5.dist-info → armodel-1.7.7.dist-info}/METADATA +62 -3
- {armodel-1.7.5.dist-info → armodel-1.7.7.dist-info}/RECORD +48 -44
- {armodel-1.7.5.dist-info → armodel-1.7.7.dist-info}/LICENSE +0 -0
- {armodel-1.7.5.dist-info → armodel-1.7.7.dist-info}/WHEEL +0 -0
- {armodel-1.7.5.dist-info → armodel-1.7.7.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.5.dist-info → armodel-1.7.7.dist-info}/top_level.txt +0 -0
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
from typing import Dict, List
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
from ...M2.MSR.AsamHdo.SpecialData import Sdg
|
|
4
|
-
from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
5
5
|
from ...M2.MSR.AsamHdo import AdminData
|
|
6
6
|
from ...M2.MSR.AsamHdo.BaseTypes import SwBaseType
|
|
7
|
-
from
|
|
7
|
+
from ...M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
|
|
8
|
+
from ...M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
|
|
9
|
+
from ...M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
|
|
10
|
+
from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
8
11
|
from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement, Referrable
|
|
9
12
|
from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
|
|
10
13
|
from ...M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, DataTypeMap
|
|
11
14
|
from ...M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
15
|
+
from ...M2.AUTOSARTemplates.SystemTemplate import RootSwCompositionPrototype, System
|
|
12
16
|
|
|
13
17
|
class FileInfoComment(ARObject):
|
|
14
18
|
def __init__(self):
|
|
@@ -33,6 +37,13 @@ class AbstractAUTOSAR(CollectableElement):
|
|
|
33
37
|
self._appl_impl_type_maps = {}
|
|
34
38
|
self._impl_appl_type_maps = {}
|
|
35
39
|
|
|
40
|
+
self._behavior_impl_maps = {} # type: Dict[str, str]
|
|
41
|
+
self._impl_behavior_maps = {} # type: Dict[str, str]
|
|
42
|
+
|
|
43
|
+
self.systems = {} # type: Dict[str, System]
|
|
44
|
+
|
|
45
|
+
self.rootSwCompositionPrototype = None # type: RootSwCompositionPrototype
|
|
46
|
+
|
|
36
47
|
self.adminData = None # type: AdminData
|
|
37
48
|
self.arPackages = {} # type: Dict[str, ARPackage]
|
|
38
49
|
self.fileInfoComment = None # type: FileInfoComment
|
|
@@ -127,8 +138,36 @@ class AbstractAUTOSAR(CollectableElement):
|
|
|
127
138
|
raise IndexError("Invalid Implementation data type <%s>" % impl_data_type)
|
|
128
139
|
|
|
129
140
|
return self.find(self._impl_appl_type_maps[impl_data_type])
|
|
141
|
+
|
|
142
|
+
def getRootSwCompositionPrototype(self):
|
|
143
|
+
return self.rootSwCompositionPrototype
|
|
144
|
+
|
|
145
|
+
def setRootSwCompositionPrototype(self, value):
|
|
146
|
+
if value is not None:
|
|
147
|
+
self.rootSwCompositionPrototype = value
|
|
148
|
+
return self
|
|
130
149
|
|
|
150
|
+
def addImplementationBehaviorMap(self, impl: str, behavior: str) -> Implementation:
|
|
151
|
+
self._behavior_impl_maps[behavior] = impl
|
|
152
|
+
self._impl_behavior_maps[impl] = behavior
|
|
153
|
+
|
|
154
|
+
def getBehavior(self, impl_ref: str) -> InternalBehavior:
|
|
155
|
+
if impl_ref in self._impl_behavior_maps:
|
|
156
|
+
return self.find(self._impl_behavior_maps[impl_ref])
|
|
157
|
+
return None
|
|
158
|
+
|
|
159
|
+
def getImplementation(self, behavior_ref:str):
|
|
160
|
+
if behavior_ref in self._behavior_impl_maps:
|
|
161
|
+
return self.find(self._behavior_impl_maps[behavior_ref])
|
|
162
|
+
return None
|
|
163
|
+
|
|
164
|
+
def addSystem(self, system: System):
|
|
165
|
+
short_name = system.getShortName()
|
|
166
|
+
if short_name not in self.systems:
|
|
167
|
+
self.systems[short_name] = system
|
|
131
168
|
|
|
169
|
+
def getSystems(self) -> List[System]:
|
|
170
|
+
return list(sorted(self.systems.values(), key = lambda a: a.getShortName()))
|
|
132
171
|
class AUTOSAR (AbstractAUTOSAR):
|
|
133
172
|
__instance = None
|
|
134
173
|
|
|
@@ -287,17 +287,38 @@ class BswModeSenderPolicy(ARObject):
|
|
|
287
287
|
|
|
288
288
|
def getQueueLength(self) -> ARNumerical:
|
|
289
289
|
return self._queue_length
|
|
290
|
+
|
|
291
|
+
class BswBackgroundEvent(BswScheduleEvent):
|
|
292
|
+
def __init__(self, parent, short_name):
|
|
293
|
+
super().__init__(parent, short_name)
|
|
294
|
+
|
|
295
|
+
class BswOsTaskExecutionEvent(BswScheduleEvent):
|
|
296
|
+
def __init__(self, parent, short_name):
|
|
297
|
+
super().__init__(parent, short_name)
|
|
298
|
+
|
|
299
|
+
class BswExternalTriggerOccurredEvent(BswScheduleEvent):
|
|
300
|
+
def __init__(self, parent, short_name):
|
|
301
|
+
super().__init__(parent, short_name)
|
|
290
302
|
|
|
303
|
+
self.triggerRef = None # type: RefType
|
|
304
|
+
|
|
305
|
+
def getTriggerRef(self):
|
|
306
|
+
return self.triggerRef
|
|
307
|
+
|
|
308
|
+
def setTriggerRef(self, value):
|
|
309
|
+
if value is not None:
|
|
310
|
+
self.triggerRef = value
|
|
311
|
+
return self
|
|
291
312
|
|
|
292
313
|
class BswInternalBehavior(InternalBehavior):
|
|
293
314
|
def __init__(self, parent: ARObject, short_name: str):
|
|
294
315
|
super().__init__(parent, short_name)
|
|
295
316
|
|
|
296
|
-
self.entities = []
|
|
297
|
-
self.events = []
|
|
298
|
-
self.mode_sender_policies = []
|
|
299
|
-
self.included_mode_declaration_group_sets = []
|
|
300
|
-
self.included_data_type_sets = []
|
|
317
|
+
self.entities = [] # type: List[BswModuleEntity]
|
|
318
|
+
self.events = [] # type: List[BswEvent]
|
|
319
|
+
self.mode_sender_policies = [] # type: List[BswModeSenderPolicy]
|
|
320
|
+
self.included_mode_declaration_group_sets = [] # type: List[IncludedModeDeclarationGroupSet]
|
|
321
|
+
self.included_data_type_sets = [] # type: List[IncludedDataTypeSet]
|
|
301
322
|
|
|
302
323
|
def addModeSenderPolicy(self, policy: BswModeSenderPolicy):
|
|
303
324
|
self.mode_sender_policies.append(policy)
|
|
@@ -374,9 +395,29 @@ class BswInternalBehavior(InternalBehavior):
|
|
|
374
395
|
self.elements[short_name] = event
|
|
375
396
|
self.events.append(event)
|
|
376
397
|
return self.elements[short_name]
|
|
377
|
-
|
|
398
|
+
|
|
378
399
|
def getBswInternalTriggerOccurredEvents(self) -> List[BswInternalTriggerOccurredEvent]:
|
|
379
400
|
return list(filter(lambda a: isinstance(a, BswInternalTriggerOccurredEvent), self.elements.values()))
|
|
401
|
+
|
|
402
|
+
def createBswExternalTriggerOccurredEvent(self, short_name: str) -> BswExternalTriggerOccurredEvent:
|
|
403
|
+
if (short_name not in self.elements):
|
|
404
|
+
event = BswExternalTriggerOccurredEvent(self, short_name)
|
|
405
|
+
self.elements[short_name] = event
|
|
406
|
+
self.events.append(event)
|
|
407
|
+
return self.elements[short_name]
|
|
408
|
+
|
|
409
|
+
def getBswExternalTriggerOccurredEvents(self) -> List[BswExternalTriggerOccurredEvent]:
|
|
410
|
+
return list(filter(lambda a: isinstance(a, BswExternalTriggerOccurredEvent), self.elements.values()))
|
|
411
|
+
|
|
412
|
+
def createBswBackgroundEvent(self, short_name: str) -> BswBackgroundEvent:
|
|
413
|
+
if (short_name not in self.elements):
|
|
414
|
+
event = BswBackgroundEvent(self, short_name)
|
|
415
|
+
self.elements[short_name] = event
|
|
416
|
+
self.events.append(event)
|
|
417
|
+
return self.elements[short_name]
|
|
418
|
+
|
|
419
|
+
def getBswBackgroundEvents(self) -> List[BswBackgroundEvent]:
|
|
420
|
+
return list(filter(lambda a: isinstance(a, BswBackgroundEvent), self.elements.values()))
|
|
380
421
|
|
|
381
422
|
def getBswEvents(self) -> List[BswEvent]:
|
|
382
423
|
return list(filter(lambda a: isinstance(a, BswEvent), self.elements.values()))
|
|
@@ -40,47 +40,57 @@ class DataFilter(ARObject):
|
|
|
40
40
|
return self.dataFilterType
|
|
41
41
|
|
|
42
42
|
def setDataFilterType(self, value):
|
|
43
|
-
|
|
43
|
+
if value is not None:
|
|
44
|
+
self.dataFilterType = value
|
|
44
45
|
return self
|
|
45
46
|
|
|
46
47
|
def getMask(self):
|
|
47
48
|
return self.mask
|
|
48
49
|
|
|
49
50
|
def setMask(self, value):
|
|
50
|
-
|
|
51
|
+
if value is not None:
|
|
52
|
+
self.mask = value
|
|
51
53
|
return self
|
|
52
54
|
|
|
53
55
|
def getMax(self):
|
|
54
56
|
return self.max
|
|
55
57
|
|
|
56
58
|
def setMax(self, value):
|
|
57
|
-
|
|
59
|
+
if value is not None:
|
|
60
|
+
self.max = value
|
|
58
61
|
return self
|
|
59
62
|
|
|
60
63
|
def getMin(self):
|
|
61
64
|
return self.min
|
|
62
65
|
|
|
63
66
|
def setMin(self, value):
|
|
64
|
-
|
|
67
|
+
if value is not None:
|
|
68
|
+
self.min = value
|
|
65
69
|
return self
|
|
66
70
|
|
|
67
71
|
def getOffset(self):
|
|
68
72
|
return self.offset
|
|
69
73
|
|
|
70
74
|
def setOffset(self, value):
|
|
71
|
-
|
|
75
|
+
if value is not None:
|
|
76
|
+
self.offset = value
|
|
72
77
|
return self
|
|
73
78
|
|
|
74
79
|
def getPeriod(self):
|
|
75
80
|
return self.period
|
|
76
81
|
|
|
77
82
|
def setPeriod(self, value):
|
|
78
|
-
|
|
83
|
+
if value is not None:
|
|
84
|
+
self.period = value
|
|
79
85
|
return self
|
|
80
86
|
|
|
81
87
|
def getX(self):
|
|
82
88
|
return self.x
|
|
83
89
|
|
|
84
90
|
def setX(self, value):
|
|
85
|
-
|
|
91
|
+
if value is not None:
|
|
92
|
+
self.x = value
|
|
86
93
|
return self
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
@@ -156,9 +156,9 @@ class ImplementationDataType(AbstractImplementationDataType):
|
|
|
156
156
|
return self._struct_type
|
|
157
157
|
|
|
158
158
|
def createSymbolProps(self, short_name: str) -> SymbolProps:
|
|
159
|
-
if short_name not in self.
|
|
159
|
+
if short_name not in self.elements:
|
|
160
160
|
symbol_props = SymbolProps(self, short_name)
|
|
161
|
-
self.
|
|
161
|
+
self.addElement(symbol_props)
|
|
162
162
|
self.symbolProps = symbol_props
|
|
163
163
|
return self.symbolProps
|
|
164
164
|
|
armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py
CHANGED
|
@@ -56,6 +56,7 @@ class MemorySection(Identifiable):
|
|
|
56
56
|
|
|
57
57
|
@alignment.setter
|
|
58
58
|
def alignment(self, value: ARLiteral):
|
|
59
|
+
'''
|
|
59
60
|
if value is not None and value.getValue() != "":
|
|
60
61
|
match = False
|
|
61
62
|
if value.getValue() in ("UNKNOWN", "UNSPECIFIED", "BOOLEAN", "PTR"):
|
|
@@ -69,6 +70,9 @@ class MemorySection(Identifiable):
|
|
|
69
70
|
|
|
70
71
|
if not match:
|
|
71
72
|
raise ValueError("Invalid alignment <%s> of memory section <%s>" % (value, self.getShortName()))
|
|
73
|
+
'''
|
|
74
|
+
if value is not None:
|
|
75
|
+
self._alignment = value
|
|
72
76
|
|
|
73
77
|
def addOption(self, option: ARLiteral):
|
|
74
78
|
self.options.append(option)
|
|
@@ -40,7 +40,7 @@ from .....M2.AUTOSARTemplates.ECUCDescriptionTemplate import EcucModuleConfigura
|
|
|
40
40
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ClientServerInterface, ModeSwitchInterface, ParameterInterface, PortInterfaceMappingSet, SenderReceiverInterface, TriggerInterface
|
|
41
41
|
from .....M2.AUTOSARTemplates.SystemTemplate import System
|
|
42
42
|
from .....M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import NmConfig
|
|
43
|
-
from .....M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig, DoIpTpConfig
|
|
43
|
+
from .....M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import CanTpConfig, DoIpTpConfig, LinTpConfig
|
|
44
44
|
|
|
45
45
|
class ReferenceBase(ARObject):
|
|
46
46
|
def __init__(self):
|
|
@@ -236,7 +236,7 @@ class ARPackage(Identifiable, CollectableElement):
|
|
|
236
236
|
return self.getElement(short_name)
|
|
237
237
|
|
|
238
238
|
def createCompuMethod(self, short_name: str) -> CompuMethod:
|
|
239
|
-
if (
|
|
239
|
+
if (not self.IsElementExists(short_name)):
|
|
240
240
|
compu_method = CompuMethod(self, short_name)
|
|
241
241
|
self.addElement(compu_method)
|
|
242
242
|
return self.getElement(short_name)
|
|
@@ -390,6 +390,12 @@ class ARPackage(Identifiable, CollectableElement):
|
|
|
390
390
|
element = CanTpConfig(self, short_name)
|
|
391
391
|
self.addElement(element)
|
|
392
392
|
return self.getElement(short_name)
|
|
393
|
+
|
|
394
|
+
def createLinTpConfig(self, short_name: str) -> LinTpConfig:
|
|
395
|
+
if (short_name not in self.elements):
|
|
396
|
+
element = LinTpConfig(self, short_name)
|
|
397
|
+
self.addElement(element)
|
|
398
|
+
return self.getElement(short_name)
|
|
393
399
|
|
|
394
400
|
def createCanFrame(self, short_name: str) -> CanFrame:
|
|
395
401
|
if (short_name not in self.elements):
|
|
@@ -4,7 +4,7 @@ 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
|
|
|
@@ -84,6 +84,9 @@ class CollectableElement(ARObject, metaclass = ABCMeta):
|
|
|
84
84
|
if (short_name not in self.elements):
|
|
85
85
|
return None
|
|
86
86
|
return self.elements[short_name]
|
|
87
|
+
|
|
88
|
+
def IsElementExists(self, short_name: str) -> bool:
|
|
89
|
+
return short_name in self.elements
|
|
87
90
|
|
|
88
91
|
class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCMeta):
|
|
89
92
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -95,7 +98,7 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
|
|
|
95
98
|
|
|
96
99
|
self.annotations = [] # type: List[Annotation]
|
|
97
100
|
self.adminData = None # type: AdminData
|
|
98
|
-
self.category = None # type:
|
|
101
|
+
self.category = None # type: CategoryString
|
|
99
102
|
self.introduction = None # type: DocumentationBlock
|
|
100
103
|
self.desc = None # type: MultiLanguageOverviewParagraph
|
|
101
104
|
|
|
@@ -117,7 +120,10 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
|
|
|
117
120
|
return self.category
|
|
118
121
|
|
|
119
122
|
def setCategory(self, value):
|
|
120
|
-
|
|
123
|
+
if isinstance(value, str):
|
|
124
|
+
self.category = CategoryString().setValue(value)
|
|
125
|
+
else:
|
|
126
|
+
self.category = value
|
|
121
127
|
return self
|
|
122
128
|
|
|
123
129
|
def getIntroduction(self):
|
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)
|
|
@@ -493,5 +495,32 @@ class Ip6AddressString(ARLiteral):
|
|
|
493
495
|
* xml.xsd.pattern=[0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7,7}|ANY
|
|
494
496
|
* xml.xsd.type=string
|
|
495
497
|
'''
|
|
498
|
+
def __init__(self):
|
|
499
|
+
super().__init__()
|
|
500
|
+
|
|
501
|
+
class MacAddressString(ARLiteral):
|
|
502
|
+
'''
|
|
503
|
+
This primitive specifies a Mac Address. Notation: FF:FF:FF:FF:FF:FF
|
|
504
|
+
Alternative notations, e.g. using dash instead of colon, or another grouping of numbers, is not allowed.
|
|
505
|
+
|
|
506
|
+
Tags:
|
|
507
|
+
* xml.xsd.customType=MAC-ADDRESS-STRING
|
|
508
|
+
* xml.xsd.pattern=([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}
|
|
509
|
+
* xml.xsd.type=string
|
|
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
|
+
'''
|
|
496
525
|
def __init__(self):
|
|
497
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
|
|
@@ -287,23 +287,49 @@ class AtomicSwComponentType(SwComponentType, metaclass = ABCMeta):
|
|
|
287
287
|
def __init__(self, parent: ARObject, short_name: str):
|
|
288
288
|
super().__init__(parent, short_name)
|
|
289
289
|
|
|
290
|
+
self.internalBehavior = None # type: SwcInternalBehavior
|
|
291
|
+
self.symbolProps = None # type: SymbolProps
|
|
292
|
+
|
|
293
|
+
def getInternalBehavior(self):
|
|
294
|
+
return self.internalBehavior
|
|
295
|
+
|
|
290
296
|
def createSwcInternalBehavior(self, short_name) -> SwcInternalBehavior:
|
|
291
297
|
if (short_name not in self.elements):
|
|
292
298
|
if (len(list(filter(lambda e: isinstance(e, SwcInternalBehavior), self.elements.values()))) >= 1):
|
|
293
299
|
raise ValueError("The internal behavior of <%s> can not more than 1" % self.short_name)
|
|
294
300
|
behavior = SwcInternalBehavior(self, short_name)
|
|
295
301
|
self.elements[short_name] = behavior
|
|
302
|
+
self.internalBehavior = behavior
|
|
296
303
|
return self.elements[short_name]
|
|
297
304
|
|
|
305
|
+
def getSymbolProps(self):
|
|
306
|
+
return self.symbolProps
|
|
307
|
+
|
|
308
|
+
def setSymbolProps(self, value):
|
|
309
|
+
if value is not None:
|
|
310
|
+
self.symbolProps = value
|
|
311
|
+
return self
|
|
312
|
+
|
|
313
|
+
'''
|
|
298
314
|
@property
|
|
299
315
|
def internal_behavior(self) -> SwcInternalBehavior:
|
|
300
316
|
return next(filter(lambda e: isinstance(e, SwcInternalBehavior), self.elements.values()))
|
|
317
|
+
'''
|
|
301
318
|
|
|
302
319
|
class EcuAbstractionSwComponentType(AtomicSwComponentType):
|
|
303
320
|
def __init__(self, parent:ARObject, short_name: str):
|
|
304
321
|
super().__init__(parent, short_name)
|
|
305
322
|
|
|
323
|
+
self.hardwareElementRefs = [] # List[RefType]
|
|
306
324
|
|
|
325
|
+
def getHardwareElementRefs(self):
|
|
326
|
+
return self.hardwareElementRefs
|
|
327
|
+
|
|
328
|
+
def addHardwareElementRefs(self, value):
|
|
329
|
+
if value is not None:
|
|
330
|
+
self.hardwareElementRefs.append(value)
|
|
331
|
+
return self
|
|
332
|
+
|
|
307
333
|
class ApplicationSwComponentType(AtomicSwComponentType):
|
|
308
334
|
def __init__(self, parent: ARObject, short_name: str):
|
|
309
335
|
super().__init__(parent, short_name)
|
|
@@ -313,12 +339,39 @@ class ComplexDeviceDriverSwComponentType(AtomicSwComponentType):
|
|
|
313
339
|
def __init__(self, parent: ARObject, short_name: str):
|
|
314
340
|
super().__init__(parent, short_name)
|
|
315
341
|
|
|
342
|
+
self.hardwareElementRefs = [] # List[RefType]
|
|
343
|
+
|
|
344
|
+
def getHardwareElementRefs(self):
|
|
345
|
+
return self.hardwareElementRefs
|
|
316
346
|
|
|
347
|
+
def addHardwareElementRefs(self, value):
|
|
348
|
+
if value is not None:
|
|
349
|
+
self.hardwareElementRefs.append(value)
|
|
350
|
+
return self
|
|
351
|
+
|
|
317
352
|
class NvBlockSwComponentType(AtomicSwComponentType):
|
|
318
353
|
def __init__(self, parent: ARObject, short_name: str):
|
|
319
354
|
super().__init__(parent, short_name)
|
|
320
355
|
|
|
356
|
+
self.bulkNvDataDescriptors = [] # type: List[BulkNvDataDescriptor]
|
|
357
|
+
self.nvBlockDescriptors = [] # type: List[NvBlockDescriptor]
|
|
358
|
+
|
|
359
|
+
def getBulkNvDataDescriptors(self):
|
|
360
|
+
return self.bulkNvDataDescriptors
|
|
361
|
+
|
|
362
|
+
def addBulkNvDataDescriptor(self, value):
|
|
363
|
+
if value is not None:
|
|
364
|
+
self.bulkNvDataDescriptors.append(value)
|
|
365
|
+
return self
|
|
366
|
+
|
|
367
|
+
def getNvBlockDescriptors(self):
|
|
368
|
+
return self.nvBlockDescriptors
|
|
321
369
|
|
|
370
|
+
def setNvBlockDescriptor(self, value):
|
|
371
|
+
if value is not None:
|
|
372
|
+
self.nvBlockDescriptors.append(value)
|
|
373
|
+
return self
|
|
374
|
+
|
|
322
375
|
class SensorActuatorSwComponentType(AtomicSwComponentType):
|
|
323
376
|
def __init__(self, parent: ARObject, short_name: str):
|
|
324
377
|
super().__init__(parent, short_name)
|
|
@@ -52,10 +52,10 @@ class AssemblySwConnector(SwConnector):
|
|
|
52
52
|
self.providerIRef = value
|
|
53
53
|
return self
|
|
54
54
|
|
|
55
|
-
def getRequesterIRef(self) ->
|
|
55
|
+
def getRequesterIRef(self) -> RPortInCompositionInstanceRef:
|
|
56
56
|
return self.requesterIRef
|
|
57
57
|
|
|
58
|
-
def setRequesterIRef(self, value:
|
|
58
|
+
def setRequesterIRef(self, value: RPortInCompositionInstanceRef):
|
|
59
59
|
self.requesterIRef = value
|
|
60
60
|
return self
|
|
61
61
|
|
|
@@ -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):
|
|
@@ -3,7 +3,7 @@ from .....M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeRequest
|
|
|
3
3
|
from .....M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AtpType
|
|
4
4
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
5
5
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
|
|
6
|
-
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, RefType
|
|
6
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, RefType, String
|
|
7
7
|
from .....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationArrayElement, ApplicationRecordElement
|
|
8
8
|
from .....M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps
|
|
9
9
|
from abc import ABCMeta
|
|
@@ -50,9 +50,17 @@ class ApplicationArrayDataType(ApplicationCompositeDataType):
|
|
|
50
50
|
def __init__(self, parent: ARObject, short_name: str):
|
|
51
51
|
super().__init__(parent, short_name)
|
|
52
52
|
|
|
53
|
-
self.
|
|
53
|
+
self.dynamicArraySizeProfile = None # type: String
|
|
54
54
|
self.element = None # type: ApplicationArrayElement
|
|
55
55
|
|
|
56
|
+
def getDynamicArraySizeProfile(self):
|
|
57
|
+
return self.dynamicArraySizeProfile
|
|
58
|
+
|
|
59
|
+
def setDynamicArraySizeProfile(self, value):
|
|
60
|
+
if value is not None:
|
|
61
|
+
self.dynamicArraySizeProfile = value
|
|
62
|
+
return self
|
|
63
|
+
|
|
56
64
|
def createApplicationArrayElement(self, short_name: str) -> ApplicationArrayElement:
|
|
57
65
|
if (short_name not in self.elements):
|
|
58
66
|
array_element = ApplicationArrayElement(self, short_name)
|
|
@@ -60,7 +68,6 @@ class ApplicationArrayDataType(ApplicationCompositeDataType):
|
|
|
60
68
|
self.element = self.elements[short_name]
|
|
61
69
|
return self.elements[short_name]
|
|
62
70
|
|
|
63
|
-
|
|
64
71
|
class ApplicationRecordDataType(ApplicationCompositeDataType):
|
|
65
72
|
def __init__(self, parent: ARObject, short_name: str):
|
|
66
73
|
super().__init__(parent, short_name)
|