armodel 1.7.1__py3-none-any.whl → 1.7.3__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 +3 -3
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +3 -3
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +81 -36
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +104 -30
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +12 -16
- armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +70 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +12 -9
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +22 -11
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +29 -22
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +26 -9
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HardwareConfiguration.py +33 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HeapUsage.py +10 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +8 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/SoftwareContext.py +23 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/StackUsage.py +93 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +39 -5
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +735 -27
- armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcBswMapping.py +48 -6
- armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +5 -5
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +20 -3
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +3 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +55 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +41 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -15
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +8 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +239 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +56 -6
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +91 -55
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +10 -1
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +186 -24
- armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +34 -3
- armodel/models/M2/MSR/DataDictionary/AuxillaryObjects.py +4 -4
- armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +7 -0
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +130 -37
- armodel/models/M2/MSR/DataDictionary/ServiceProcessTask.py +33 -0
- armodel/models/__init__.py +4 -0
- armodel/parser/abstract_arxml_parser.py +30 -27
- armodel/parser/arxml_parser.py +683 -371
- armodel/tests/test_armodel/models/test_ar_object.py +6 -2
- armodel/tests/test_armodel/models/test_datatype.py +4 -4
- armodel/tests/test_armodel/models/test_m2_msr.py +5 -5
- armodel/tests/test_armodel/models/test_port_interface.py +4 -4
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +48 -48
- armodel/tests/test_armodel/parser/test_sw_components.py +1 -1
- armodel/tests/test_armodel/parser/test_system.py +0 -1
- armodel/writer/abstract_arxml_writer.py +10 -0
- armodel/writer/arxml_writer.py +668 -358
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/METADATA +34 -1
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/RECORD +54 -48
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/LICENSE +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/WHEEL +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/top_level.txt +0 -0
|
@@ -23,17 +23,18 @@ class ExecutableEntity(Identifiable, metaclass=ABCMeta):
|
|
|
23
23
|
|
|
24
24
|
super().__init__(parent, short_name)
|
|
25
25
|
|
|
26
|
-
self.
|
|
26
|
+
self.activationReasons = [] # type: List[ExecutableEntityActivationReason]
|
|
27
|
+
self.canEnterExclusiveAreaRefs = [] # type: List[RefType]
|
|
27
28
|
self.minimumStartInterval = None # type: ARFloat
|
|
28
29
|
self.reentrancyLevel = None #
|
|
29
|
-
|
|
30
|
+
|
|
30
31
|
self.swAddrMethodRef = None # type: RefType
|
|
31
32
|
|
|
32
|
-
def
|
|
33
|
-
return self.
|
|
33
|
+
def getActivationReasons(self):
|
|
34
|
+
return self.activationReasons
|
|
34
35
|
|
|
35
|
-
def
|
|
36
|
-
self.
|
|
36
|
+
def addActivationReason(self, value):
|
|
37
|
+
self.activationReasons.append(value)
|
|
37
38
|
return self
|
|
38
39
|
|
|
39
40
|
def getMinimumStartInterval(self):
|
|
@@ -76,33 +77,39 @@ class InternalBehavior(Identifiable, metaclass=ABCMeta):
|
|
|
76
77
|
raise NotImplementedError("InternalBehavior is an abstract class.")
|
|
77
78
|
super().__init__(parent, short_name)
|
|
78
79
|
|
|
79
|
-
self.
|
|
80
|
-
self.
|
|
80
|
+
self.constantMemories = [] # type: List[ParameterDataPrototype]
|
|
81
|
+
self.constantValueMappingRefs = [] # type: List[RefType]
|
|
82
|
+
self.dataTypeMappingRefs = [] # type: List[RefType]
|
|
83
|
+
self.exclusiveAreas = [] # type: List[ExclusiveArea]
|
|
84
|
+
self.exclusiveAreaNestingOrders = [] # type: List[ExclusiveAreaNestingOrder]
|
|
85
|
+
self.staticMemories = [] # type: List[VariableDataPrototype]
|
|
86
|
+
|
|
87
|
+
def createConstantMemory(self, short_name: str) -> ParameterDataPrototype:
|
|
88
|
+
if (short_name not in self.elements):
|
|
89
|
+
prototype = ParameterDataPrototype(self, short_name)
|
|
90
|
+
self.addElement(prototype)
|
|
91
|
+
self.constantMemories.append(prototype)
|
|
92
|
+
return self.getElement(short_name)
|
|
93
|
+
|
|
94
|
+
def getConstantMemorys(self) -> List[ParameterDataPrototype]:
|
|
95
|
+
return self.constantMemories
|
|
81
96
|
|
|
82
97
|
def addDataTypeMappingRef(self, ref: RefType):
|
|
83
|
-
self.
|
|
98
|
+
self.dataTypeMappingRefs.append(ref)
|
|
84
99
|
|
|
85
100
|
def getDataTypeMappingRefs(self) -> List[RefType]:
|
|
86
|
-
return self.
|
|
101
|
+
return self.dataTypeMappingRefs
|
|
87
102
|
|
|
88
103
|
def createExclusiveArea(self, short_name: str) -> ExclusiveArea:
|
|
89
104
|
if (short_name not in self.elements):
|
|
90
|
-
|
|
91
|
-
self.
|
|
92
|
-
|
|
105
|
+
area = ExclusiveArea(self, short_name)
|
|
106
|
+
self.addElement(area)
|
|
107
|
+
self.exclusiveAreas.append(area)
|
|
108
|
+
return self.getElement(short_name)
|
|
93
109
|
|
|
94
110
|
def getExclusiveAreas(self) -> List[ExclusiveArea]:
|
|
95
111
|
return list(filter(lambda c: isinstance(c, ExclusiveArea), self.elements.values()))
|
|
96
112
|
|
|
97
|
-
def createConstantMemory(self, short_name: str) -> ParameterDataPrototype:
|
|
98
|
-
if (short_name not in self.elements):
|
|
99
|
-
prototype = ParameterDataPrototype(self, short_name)
|
|
100
|
-
self.elements[short_name] = prototype
|
|
101
|
-
self.constant_memories.append(prototype)
|
|
102
|
-
return self.elements[short_name]
|
|
103
|
-
|
|
104
|
-
def getConstantMemorys(self) -> List[ParameterDataPrototype]:
|
|
105
|
-
return self.constant_memories
|
|
106
113
|
|
|
107
114
|
class AbstractEvent(Identifiable):
|
|
108
115
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from typing import List
|
|
2
2
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
3
3
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
4
|
-
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARNumerical, RefType, TRefType
|
|
4
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARNumerical, PositiveInteger, RefType, TRefType
|
|
5
5
|
|
|
6
6
|
class ModeDeclaration(Identifiable):
|
|
7
7
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -21,16 +21,33 @@ class ModeRequestTypeMap(ARObject):
|
|
|
21
21
|
def __init__(self):
|
|
22
22
|
super().__init__()
|
|
23
23
|
|
|
24
|
-
self.
|
|
25
|
-
self.
|
|
24
|
+
self.implementationDataTypeRef = None # type: RefType
|
|
25
|
+
self.modeGroupRef = None # type: RefType
|
|
26
26
|
|
|
27
|
+
def getImplementationDataTypeRef(self):
|
|
28
|
+
return self.implementationDataTypeRef
|
|
29
|
+
|
|
30
|
+
def setImplementationDataTypeRef(self, value):
|
|
31
|
+
self.implementationDataTypeRef = value
|
|
32
|
+
return self
|
|
33
|
+
|
|
34
|
+
def getModeGroupRef(self):
|
|
35
|
+
return self.modeGroupRef
|
|
36
|
+
|
|
37
|
+
def setModeGroupRef(self, value):
|
|
38
|
+
self.modeGroupRef = value
|
|
39
|
+
return self
|
|
27
40
|
|
|
28
41
|
class ModeDeclarationGroup(Identifiable):
|
|
29
42
|
def __init__(self, parent: ARObject, short_name: str):
|
|
30
43
|
super().__init__(parent, short_name)
|
|
31
44
|
|
|
32
|
-
self.
|
|
33
|
-
self.
|
|
45
|
+
self.initialModeRef = None # type: RefType
|
|
46
|
+
self.modeDeclarations = [] # type: ModeDeclaration
|
|
47
|
+
self.modeManagerErrorBehavior = None # type: ModeErrorBehavior
|
|
48
|
+
self.modeTransition = None # type: ModeTransition
|
|
49
|
+
self.modeUserErrorBehavior = None # type: ModeErrorBehavior
|
|
50
|
+
self.onTransitionValue = None # type: PositiveInteger
|
|
34
51
|
|
|
35
52
|
def createModeDeclaration(self, short_name: str) -> ModeDeclaration:
|
|
36
53
|
if (short_name not in self.elements):
|
|
@@ -42,21 +59,21 @@ class ModeDeclarationGroup(Identifiable):
|
|
|
42
59
|
return list(sorted(filter(lambda a: isinstance(a, ModeDeclaration), self.elements.values()), key= lambda o:o.short_name))
|
|
43
60
|
|
|
44
61
|
def setInitialModeRef(self, ref: RefType):
|
|
45
|
-
self.
|
|
62
|
+
self.initialModeRef = ref
|
|
46
63
|
return self
|
|
47
64
|
|
|
48
65
|
def getInitialModeRef(self) -> RefType:
|
|
49
|
-
return self.
|
|
66
|
+
return self.initialModeRef
|
|
50
67
|
|
|
51
68
|
def setOnTransitionValue(self, value):
|
|
52
69
|
if isinstance(value, int):
|
|
53
70
|
value = ARNumerical()
|
|
54
71
|
value.setValue(value)
|
|
55
|
-
self.
|
|
72
|
+
self.onTransitionValue = value
|
|
56
73
|
return self
|
|
57
74
|
|
|
58
75
|
def getOnTransitionValue(self) -> ARNumerical:
|
|
59
|
-
return self.
|
|
76
|
+
return self.onTransitionValue
|
|
60
77
|
|
|
61
78
|
|
|
62
79
|
class ModeDeclarationGroupPrototype(Identifiable):
|
armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HardwareConfiguration.py
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import String
|
|
2
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
3
|
+
|
|
4
|
+
class HardwareConfiguration(ARObject):
|
|
5
|
+
def __init__(self):
|
|
6
|
+
super().__init__()
|
|
7
|
+
|
|
8
|
+
self.additionalInformation = None # type: String
|
|
9
|
+
self.processorMode = None # type: String
|
|
10
|
+
self.processorSpeed = None # type: String
|
|
11
|
+
|
|
12
|
+
def getAdditionalInformation(self):
|
|
13
|
+
return self.additionalInformation
|
|
14
|
+
|
|
15
|
+
def setAdditionalInformation(self, value):
|
|
16
|
+
self.additionalInformation = value
|
|
17
|
+
return self
|
|
18
|
+
|
|
19
|
+
def getProcessorMode(self):
|
|
20
|
+
return self.processorMode
|
|
21
|
+
|
|
22
|
+
def setProcessorMode(self, value):
|
|
23
|
+
self.processorMode = value
|
|
24
|
+
return self
|
|
25
|
+
|
|
26
|
+
def getProcessorSpeed(self):
|
|
27
|
+
return self.processorSpeed
|
|
28
|
+
|
|
29
|
+
def setProcessorSpeed(self, value):
|
|
30
|
+
self.processorSpeed = value
|
|
31
|
+
return self
|
|
32
|
+
|
|
33
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from abc import ABCMeta
|
|
2
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
3
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
4
|
+
|
|
5
|
+
class HeapUsage(Identifiable, metaclass = ABCMeta):
|
|
6
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
7
|
+
if type(self) == HeapUsage:
|
|
8
|
+
raise NotImplementedError("HeapUsage is an abstract class.")
|
|
9
|
+
|
|
10
|
+
super().__init__(parent, short_name)
|
armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py
CHANGED
|
@@ -9,6 +9,7 @@ class MemorySection(Identifiable):
|
|
|
9
9
|
super().__init__(parent, short_name)
|
|
10
10
|
|
|
11
11
|
self._alignment = None # type: ARLiteral
|
|
12
|
+
self.memClassSymbol = None # type: ARLiteral
|
|
12
13
|
self.size = None
|
|
13
14
|
self.options = [] # type: List[ARLiteral]
|
|
14
15
|
self.swAddrMethodRef = None # type: RefType
|
|
@@ -20,6 +21,13 @@ class MemorySection(Identifiable):
|
|
|
20
21
|
def setAlignment(self, value):
|
|
21
22
|
self.alignment = value
|
|
22
23
|
return self
|
|
24
|
+
|
|
25
|
+
def getMemClassSymbol(self):
|
|
26
|
+
return self.memClassSymbol
|
|
27
|
+
|
|
28
|
+
def setMemClassSymbol(self, value):
|
|
29
|
+
self.memClassSymbol = value
|
|
30
|
+
return self
|
|
23
31
|
|
|
24
32
|
def getSize(self):
|
|
25
33
|
return self.size
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from armodel.models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import String
|
|
2
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
3
|
+
|
|
4
|
+
class SoftwareContext(ARObject):
|
|
5
|
+
def __init__(self):
|
|
6
|
+
super().__init__()
|
|
7
|
+
|
|
8
|
+
self.input = None # type: String
|
|
9
|
+
self.state = None # type: String
|
|
10
|
+
|
|
11
|
+
def getInput(self):
|
|
12
|
+
return self.input
|
|
13
|
+
|
|
14
|
+
def setInput(self, value):
|
|
15
|
+
self.input = value
|
|
16
|
+
return self
|
|
17
|
+
|
|
18
|
+
def getState(self):
|
|
19
|
+
return self.state
|
|
20
|
+
|
|
21
|
+
def setState(self, value):
|
|
22
|
+
self.state = value
|
|
23
|
+
return self
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
from abc import ABCMeta
|
|
2
|
+
from .....M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import SoftwareContext
|
|
3
|
+
from .....M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.HardwareConfiguration import HardwareConfiguration
|
|
4
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import PositiveInteger, RefType
|
|
5
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
6
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
7
|
+
|
|
8
|
+
class StackUsage(Identifiable, metaclass = ABCMeta):
|
|
9
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
10
|
+
if type(self) == StackUsage:
|
|
11
|
+
raise NotImplementedError("StackUsage is an abstract class.")
|
|
12
|
+
|
|
13
|
+
super().__init__(parent, short_name)
|
|
14
|
+
|
|
15
|
+
self.executableEntityRef = None # type: RefType
|
|
16
|
+
self.hardwareConfiguration = None # type: HardwareConfiguration
|
|
17
|
+
self.hwElementRef = None # type: RefType
|
|
18
|
+
self.softwareContext = None # type: SoftwareContext
|
|
19
|
+
|
|
20
|
+
def getExecutableEntityRef(self):
|
|
21
|
+
return self.executableEntityRef
|
|
22
|
+
|
|
23
|
+
def setExecutableEntityRef(self, value):
|
|
24
|
+
self.executableEntityRef = value
|
|
25
|
+
return self
|
|
26
|
+
|
|
27
|
+
def getHardwareConfiguration(self):
|
|
28
|
+
return self.hardwareConfiguration
|
|
29
|
+
|
|
30
|
+
def setHardwareConfiguration(self, value):
|
|
31
|
+
self.hardwareConfiguration = value
|
|
32
|
+
return self
|
|
33
|
+
|
|
34
|
+
def getHwElementRef(self):
|
|
35
|
+
return self.hwElementRef
|
|
36
|
+
|
|
37
|
+
def setHwElementRef(self, value):
|
|
38
|
+
self.hwElementRef = value
|
|
39
|
+
return self
|
|
40
|
+
|
|
41
|
+
def getSoftwareContext(self):
|
|
42
|
+
return self.softwareContext
|
|
43
|
+
|
|
44
|
+
def setSoftwareContext(self, value):
|
|
45
|
+
self.softwareContext = value
|
|
46
|
+
return self
|
|
47
|
+
|
|
48
|
+
class MeasuredStackUsage(StackUsage):
|
|
49
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
50
|
+
super().__init__(parent, short_name)
|
|
51
|
+
|
|
52
|
+
self.averageMemoryConsumption = None # type: PositiveInteger
|
|
53
|
+
self.maximumMemoryConsumption = None # type: PositiveInteger
|
|
54
|
+
|
|
55
|
+
def getAverageMemoryConsumption(self):
|
|
56
|
+
return self.averageMemoryConsumption
|
|
57
|
+
|
|
58
|
+
def setAverageMemoryConsumption(self, value):
|
|
59
|
+
self.averageMemoryConsumption = value
|
|
60
|
+
return self
|
|
61
|
+
|
|
62
|
+
def getMaximumMemoryConsumption(self):
|
|
63
|
+
return self.maximumMemoryConsumption
|
|
64
|
+
|
|
65
|
+
def setMaximumMemoryConsumption(self, value):
|
|
66
|
+
self.maximumMemoryConsumption = value
|
|
67
|
+
return self
|
|
68
|
+
|
|
69
|
+
class RoughEstimateStackUsage(StackUsage):
|
|
70
|
+
def __init__(self, parent, short_name):
|
|
71
|
+
super().__init__(parent, short_name)
|
|
72
|
+
|
|
73
|
+
self.memoryConsumption = None # type: PositiveInteger
|
|
74
|
+
|
|
75
|
+
def getMemoryConsumption(self):
|
|
76
|
+
return self.memoryConsumption
|
|
77
|
+
|
|
78
|
+
def setMemoryConsumption(self, value):
|
|
79
|
+
self.memoryConsumption = value
|
|
80
|
+
return self
|
|
81
|
+
|
|
82
|
+
class WorstCaseStackUsage(StackUsage):
|
|
83
|
+
def __init__(self, parent, short_name):
|
|
84
|
+
super().__init__(parent, short_name)
|
|
85
|
+
|
|
86
|
+
self.memoryConsumption = None # type: PositiveInteger
|
|
87
|
+
|
|
88
|
+
def getMemoryConsumption(self):
|
|
89
|
+
return self.memoryConsumption
|
|
90
|
+
|
|
91
|
+
def setMemoryConsumption(self, value):
|
|
92
|
+
self.memoryConsumption = value
|
|
93
|
+
return self
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from .....M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import MeasuredStackUsage, RoughEstimateStackUsage, StackUsage, WorstCaseStackUsage
|
|
2
|
+
from .....M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.HeapUsage import HeapUsage
|
|
1
3
|
from .....M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import MemorySection
|
|
2
4
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
3
5
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
@@ -7,14 +9,46 @@ class ResourceConsumption(Identifiable):
|
|
|
7
9
|
def __init__(self, parent: ARObject, short_name: str):
|
|
8
10
|
super().__init__(parent, short_name)
|
|
9
11
|
|
|
12
|
+
self.accessCountSets = [] # type: List[AccessCountSet]
|
|
13
|
+
self.executionTimes = [] # type: List[ExecutionTime]
|
|
14
|
+
self.heapUsages = [] # type: List[HeapUsage]
|
|
15
|
+
self.memorySections = []
|
|
16
|
+
self.sectionNamePrefixs = [] # type: List[SectionNamePrefix]
|
|
17
|
+
self.stackUsages = [] # type: List[StackUsage]
|
|
18
|
+
|
|
10
19
|
def createMemorySection(self, short_name: str) -> MemorySection:
|
|
11
20
|
if (short_name not in self.elements):
|
|
12
|
-
|
|
13
|
-
self.
|
|
14
|
-
|
|
21
|
+
section = MemorySection(self, short_name)
|
|
22
|
+
self.addElement(section)
|
|
23
|
+
self.memorySections.append(section)
|
|
24
|
+
return self.getElement(short_name)
|
|
15
25
|
|
|
16
26
|
def getMemorySections(self) -> List[MemorySection]:
|
|
17
|
-
return list(filter(lambda a
|
|
27
|
+
return list(sorted(filter(lambda a: isinstance(a, MemorySection), self.elements.values()), key= lambda o:o.short_name))
|
|
18
28
|
|
|
19
29
|
def getMemorySection(self, short_name: str) -> MemorySection:
|
|
20
|
-
return next(filter(lambda o: isinstance(o, MemorySection) and (o.short_name == short_name), self.elements.values()), None)
|
|
30
|
+
return next(filter(lambda o: isinstance(o, MemorySection) and (o.short_name == short_name), self.elements.values()), None)
|
|
31
|
+
|
|
32
|
+
def createMeasuredStackUsage(self, short_name: str) -> MeasuredStackUsage:
|
|
33
|
+
if (short_name not in self.elements):
|
|
34
|
+
section = MeasuredStackUsage(self, short_name)
|
|
35
|
+
self.addElement(section)
|
|
36
|
+
self.stackUsages.append(section)
|
|
37
|
+
return self.getElement(short_name)
|
|
38
|
+
|
|
39
|
+
def createRoughEstimateStackUsage(self, short_name: str) -> RoughEstimateStackUsage:
|
|
40
|
+
if (short_name not in self.elements):
|
|
41
|
+
section = RoughEstimateStackUsage(self, short_name)
|
|
42
|
+
self.addElement(section)
|
|
43
|
+
self.stackUsages.append(section)
|
|
44
|
+
return self.getElement(short_name)
|
|
45
|
+
|
|
46
|
+
def createWorstCaseStackUsage(self, short_name: str) -> WorstCaseStackUsage:
|
|
47
|
+
if (short_name not in self.elements):
|
|
48
|
+
section = WorstCaseStackUsage(self, short_name)
|
|
49
|
+
self.addElement(section)
|
|
50
|
+
self.stackUsages.append(section)
|
|
51
|
+
return self.getElement(short_name)
|
|
52
|
+
|
|
53
|
+
def getStackUsages(self) -> List[StackUsage]:
|
|
54
|
+
return list(sorted(filter(lambda a: isinstance(a, StackUsage), self.elements.values()), key= lambda o:o.short_name))
|