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.
Files changed (54) hide show
  1. armodel/cli/arxml_dump_cli.py +3 -3
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +3 -3
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +81 -36
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +104 -30
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +12 -16
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +70 -0
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +12 -9
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +22 -11
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +29 -22
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +26 -9
  11. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HardwareConfiguration.py +33 -0
  12. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HeapUsage.py +10 -0
  13. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +8 -0
  14. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/SoftwareContext.py +23 -0
  15. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/StackUsage.py +93 -0
  16. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +39 -5
  17. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +735 -27
  18. armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcBswMapping.py +48 -6
  19. armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +5 -5
  20. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +20 -3
  21. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +3 -0
  22. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +55 -1
  23. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +41 -3
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -15
  25. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +8 -0
  26. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -8
  27. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +239 -5
  28. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +56 -6
  29. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +91 -55
  30. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +10 -1
  31. armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +186 -24
  32. armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +34 -3
  33. armodel/models/M2/MSR/DataDictionary/AuxillaryObjects.py +4 -4
  34. armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +7 -0
  35. armodel/models/M2/MSR/DataDictionary/RecordLayout.py +130 -37
  36. armodel/models/M2/MSR/DataDictionary/ServiceProcessTask.py +33 -0
  37. armodel/models/__init__.py +4 -0
  38. armodel/parser/abstract_arxml_parser.py +30 -27
  39. armodel/parser/arxml_parser.py +683 -371
  40. armodel/tests/test_armodel/models/test_ar_object.py +6 -2
  41. armodel/tests/test_armodel/models/test_datatype.py +4 -4
  42. armodel/tests/test_armodel/models/test_m2_msr.py +5 -5
  43. armodel/tests/test_armodel/models/test_port_interface.py +4 -4
  44. armodel/tests/test_armodel/parser/test_parse_bswmd.py +48 -48
  45. armodel/tests/test_armodel/parser/test_sw_components.py +1 -1
  46. armodel/tests/test_armodel/parser/test_system.py +0 -1
  47. armodel/writer/abstract_arxml_writer.py +10 -0
  48. armodel/writer/arxml_writer.py +668 -358
  49. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/METADATA +34 -1
  50. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/RECORD +54 -48
  51. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/LICENSE +0 -0
  52. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/WHEEL +0 -0
  53. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/entry_points.txt +0 -0
  54. {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.activationReason = None # *
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
- self.canEnterExclusiveAreaRefs = [] # type: List[RefType]
30
+
30
31
  self.swAddrMethodRef = None # type: RefType
31
32
 
32
- def getActivationReason(self):
33
- return self.activationReason
33
+ def getActivationReasons(self):
34
+ return self.activationReasons
34
35
 
35
- def setActivationReason(self, value):
36
- self.activationReason = value
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.data_type_mapping_refs = [] # type: List[RefType]
80
- self.constant_memories = [] # type: List[ParameterDataPrototype]
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.data_type_mapping_refs.append(ref)
98
+ self.dataTypeMappingRefs.append(ref)
84
99
 
85
100
  def getDataTypeMappingRefs(self) -> List[RefType]:
86
- return self.data_type_mapping_refs
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
- event = ExclusiveArea(self, short_name)
91
- self.elements[short_name] = event
92
- return self.elements[short_name]
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.implementation_data_type_ref = None # type: RefType
25
- self.mode_group_ref = None # type: RefType
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._initial_mode_ref = None # type: RefType
33
- self._on_transition_value = None # type: ARNumerical
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._initial_mode_ref = ref
62
+ self.initialModeRef = ref
46
63
  return self
47
64
 
48
65
  def getInitialModeRef(self) -> RefType:
49
- return self._initial_mode_ref
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._on_transition_value = value
72
+ self.onTransitionValue = value
56
73
  return self
57
74
 
58
75
  def getOnTransitionValue(self) -> ARNumerical:
59
- return self._on_transition_value
76
+ return self.onTransitionValue
60
77
 
61
78
 
62
79
  class ModeDeclarationGroupPrototype(Identifiable):
@@ -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)
@@ -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
- entry = MemorySection(self, short_name)
13
- self.elements[short_name] = entry
14
- return self.elements[short_name]
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 : isinstance(a, MemorySection), self.elements.values()))
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))