armodel 1.4.3__py3-none-any.whl → 1.6.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. armodel/cli/arxml_dump_cli.py +14 -14
  2. armodel/cli/memory_section_cli.py +76 -0
  3. armodel/cli/system_signal_cli.py +74 -0
  4. armodel/lib/__init__.py +2 -1
  5. armodel/lib/system_signal.py +37 -0
  6. armodel/models/__init__.py +6 -3
  7. armodel/models/annotation.py +27 -3
  8. armodel/models/ar_object.py +18 -6
  9. armodel/models/ar_package.py +248 -30
  10. armodel/models/ar_ref.py +115 -45
  11. armodel/models/bsw_module_template.py +66 -28
  12. armodel/models/common_structure.py +150 -150
  13. armodel/models/communication.py +1 -1
  14. armodel/models/data_prototype.py +41 -6
  15. armodel/models/datatype.py +11 -5
  16. armodel/models/fibex/__init__.py +0 -0
  17. armodel/models/fibex/can_communication.py +122 -0
  18. armodel/models/fibex/fibex_4_can/__init__.py +0 -0
  19. armodel/models/fibex/fibex_4_lin/__init__.py +0 -0
  20. armodel/models/fibex/fibex_4_multiplatform.py +138 -0
  21. armodel/models/fibex/fibex_core/__init__.py +0 -0
  22. armodel/models/fibex/fibex_core/core_communication.py +627 -0
  23. armodel/models/fibex/fibex_core/core_topology.py +180 -0
  24. armodel/models/fibex/fibex_core.py +341 -0
  25. armodel/models/fibex/lin_communication.py +38 -0
  26. armodel/models/fibex/lin_topology.py +7 -0
  27. armodel/models/general_structure.py +119 -10
  28. armodel/models/implementation.py +4 -5
  29. armodel/models/internal_behavior.py +63 -0
  30. armodel/models/m2/__init__.py +0 -0
  31. armodel/models/m2/autosar_templates/__init__.py +0 -0
  32. armodel/models/m2/autosar_templates/common_structure/__init__.py +188 -0
  33. armodel/models/m2/autosar_templates/common_structure/constants.py +0 -0
  34. armodel/models/m2/autosar_templates/ecuc_description_template.py +268 -0
  35. armodel/models/m2/autosar_templates/sw_component_template/__init__.py +0 -0
  36. armodel/models/m2/autosar_templates/sw_component_template/communication.py +316 -0
  37. armodel/models/m2/autosar_templates/sw_component_template/components/__init__.py +0 -0
  38. armodel/models/m2/autosar_templates/sw_component_template/components/instance_refs.py +149 -0
  39. armodel/models/m2/autosar_templates/sw_component_template/port_interface.py +236 -0
  40. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/__init__.py +203 -0
  41. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/access_count.py +13 -0
  42. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/data_elements.py +54 -0
  43. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/mode_declaration_group.py +39 -0
  44. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/server_call.py +26 -0
  45. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/trigger.py +10 -0
  46. armodel/models/m2/autosar_templates/system_template/__init__.py +321 -0
  47. armodel/models/m2/autosar_templates/system_template/data_mapping.py +88 -0
  48. armodel/models/m2/autosar_templates/system_template/network_management.py +554 -0
  49. armodel/models/m2/autosar_templates/system_template/transport_protocols.py +7 -0
  50. armodel/models/m2/msr/__init__.py +0 -0
  51. armodel/models/m2/msr/asam_hdo/__init__.py +0 -0
  52. armodel/models/m2/msr/asam_hdo/units.py +105 -0
  53. armodel/models/m2/msr/data_dictionary/__init__.py +0 -0
  54. armodel/models/m2/msr/data_dictionary/auxillary_objects.py +42 -0
  55. armodel/models/m2/msr/data_dictionary/data_def_properties.py +295 -0
  56. armodel/models/m2/msr/documentation/__init__.py +0 -0
  57. armodel/models/m2/msr/documentation/block_elements.py +18 -0
  58. armodel/models/mode_declaration.py +8 -0
  59. armodel/models/multilanguage_data.py +15 -0
  60. armodel/models/per_instance_memory.py +34 -6
  61. armodel/models/port_prototype.py +15 -159
  62. armodel/models/rpt_scenario.py +20 -0
  63. armodel/models/sw_component.py +48 -187
  64. armodel/models/system_template/__init__.py +0 -0
  65. armodel/models/system_template/network_management.py +7 -0
  66. armodel/models/system_template/transport_protocols.py +7 -0
  67. armodel/models/timing.py +91 -0
  68. armodel/parser/abstract_arxml_parser.py +11 -2
  69. armodel/parser/arxml_parser.py +1101 -227
  70. armodel/tests/test_armodel/models/test_ar_package.py +1 -1
  71. armodel/tests/test_armodel/models/test_ar_ref.py +3 -3
  72. armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -5
  73. armodel/tests/test_armodel/models/test_common_structure.py +3 -3
  74. armodel/tests/test_armodel/models/test_data_dictionary.py +5 -5
  75. armodel/tests/test_armodel/models/test_data_prototype.py +2 -2
  76. armodel/tests/test_armodel/models/test_datatype.py +8 -8
  77. armodel/tests/test_armodel/models/test_port_interface.py +6 -6
  78. armodel/tests/test_armodel/parser/test_parse_bswmd.py +16 -8
  79. armodel/tests/test_armodel/parser/test_sw_components.py +6 -6
  80. armodel/writer/arxml_writer.py +1046 -181
  81. {armodel-1.4.3.dist-info → armodel-1.6.0.dist-info}/METADATA +48 -1
  82. armodel-1.6.0.dist-info/RECORD +127 -0
  83. {armodel-1.4.3.dist-info → armodel-1.6.0.dist-info}/entry_points.txt +3 -1
  84. armodel-1.4.3.dist-info/RECORD +0 -78
  85. {armodel-1.4.3.dist-info → armodel-1.6.0.dist-info}/LICENSE +0 -0
  86. {armodel-1.4.3.dist-info → armodel-1.6.0.dist-info}/WHEEL +0 -0
  87. {armodel-1.4.3.dist-info → armodel-1.6.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,7 @@
1
1
  from abc import ABCMeta
2
2
  from typing import List
3
3
 
4
+ from .annotation import Annotation
4
5
  from .ar_ref import RefType
5
6
  from .multilanguage_data import MultiLanguageOverviewParagraph, MultilanguageLongName
6
7
  from .ar_object import ARObject
@@ -12,21 +13,55 @@ class Sd(ARObject):
12
13
  self.gid = ""
13
14
  self.value = ""
14
15
 
16
+ def getGID(self):
17
+ return self.gid
18
+
19
+ def setGID(self, value):
20
+ self.gid = value
21
+ return self
22
+
23
+ def getValue(self):
24
+ return self.value
25
+
26
+ def setValue(self, value):
27
+ self.value = value
28
+ return self
15
29
  class Sdg(ARObject):
16
30
  def __init__(self):
17
31
  super().__init__()
18
32
 
19
33
  self.gid = ""
20
34
  self.sd = [] # type: List[Sd]
21
- self.sdg_caption = None
22
- self.sdg_contents_type = None
35
+ self.sdgCaption = None
36
+ self.sdgContentsTypes = [] # type: List[Sdg]
37
+
38
+ def getGID(self):
39
+ return self.gid
40
+
41
+ def setGID(self, value):
42
+ self.gid = value
43
+ return self
23
44
 
24
45
  def addSd(self, sd: Sd):
25
46
  self.sd.append(sd)
47
+ return self
26
48
 
27
49
  def getSds(self) -> List[Sd]:
28
50
  return self.sd
29
51
 
52
+ def getSdgCaption(self):
53
+ return self.sdgCaption
54
+
55
+ def setSdgCaption(self, value):
56
+ self.sdgCaption = value
57
+ return self
58
+
59
+ def addSdgContentsType(self, sdg):
60
+ self.sdgContentsTypes.append(sdg)
61
+
62
+ def getSdgContentsTypes(self):
63
+ return self.sdgContentsTypes
64
+
30
65
  class AdminData(ARObject):
31
66
  def __init__(self):
32
67
  super().__init__()
@@ -48,24 +83,49 @@ class Referrable(ARObject, metaclass=ABCMeta):
48
83
  raise NotImplementedError("Referrable is an abstract class.")
49
84
  ARObject.__init__(self)
50
85
 
51
- self.parent = parent
86
+ self._parent = parent
52
87
  self.short_name = short_name
53
88
 
89
+ @property
90
+ def parent(self):
91
+ return self._parent
92
+
93
+ @parent.setter
94
+ def parent(self, value):
95
+ self._parent = value
96
+
97
+ @property
98
+ def shortName(self):
99
+ return self.short_name
100
+
101
+ @shortName.setter
102
+ def shortName(self, value):
103
+ self.short_name = value
104
+
105
+ def getShortName(self) -> str:
106
+ return self.short_name
107
+
54
108
  @property
55
109
  def full_name(self) -> str:
56
- return self.parent.full_name + "/" + self.short_name
110
+ return self._parent.full_name + "/" + self.short_name
57
111
 
58
- class MultilanguageReferrable(Referrable, metaclass=ABCMeta):
112
+ class MultilanguageReferrable(Referrable, metaclass = ABCMeta):
59
113
  def __init__(self, parent: ARObject, short_name: str):
60
114
  if type(self) == MultilanguageReferrable:
61
115
  raise NotImplementedError("MultilanguageReferrable is an abstract class.")
62
116
 
63
117
  super().__init__(parent, short_name)
64
118
 
65
- self.parent = parent
66
- self.long_name = None # type: MultilanguageLongName
119
+ #self._parent = parent
120
+ self.longName = None # type: MultilanguageLongName
67
121
 
68
- class CollectableElement(ARObject, metaclass=ABCMeta):
122
+ def getLongName(self) -> MultilanguageLongName:
123
+ return self.longName
124
+
125
+ def setLongName(self, value: MultilanguageLongName):
126
+ self.longName = value
127
+ return self
128
+ class CollectableElement(ARObject, metaclass = ABCMeta):
69
129
  def __init__(self):
70
130
  if type(self) == CollectableElement:
71
131
  raise NotImplementedError("CollectableElement is an abstract class.")
@@ -95,10 +155,59 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass=ABCMet
95
155
  MultilanguageReferrable.__init__(self, parent, short_name)
96
156
  CollectableElement.__init__(self)
97
157
 
98
- self.admin_data = None # type: AdminData
99
- self._category = None
158
+ self.annotations = [] # type: List[Annotation]
159
+ self.adminData = None # type: AdminData
160
+ self.category = None
100
161
  self.desc = None # type: MultiLanguageOverviewParagraph
101
162
 
163
+ def getAdminData(self):
164
+ return self.adminData
165
+
166
+ def setAdminData(self, value):
167
+ self.adminData = value
168
+ return self
169
+
170
+ def getDesc(self):
171
+ return self.desc
172
+
173
+ def setDesc(self, value):
174
+ self.desc = value
175
+ return self
176
+
177
+ def getCategory(self):
178
+ return self.category
179
+
180
+ def setCategory(self, value):
181
+ self.category = value
182
+ return self
183
+
184
+ def addAnnotation(self, annotation: Annotation):
185
+ self.annotations.append(annotation)
186
+ return self
187
+
188
+ def getAnnotations(self) -> List[Annotation]:
189
+ return self.annotations
190
+
191
+ class Describable(ARObject, metaclass=ABCMeta):
192
+ def __init__(self):
193
+ if type(self) == Describable:
194
+ raise NotImplementedError("Describable is an abstract class.")
195
+
196
+ super().__init__()
197
+
198
+ self._desc = None
199
+ self._category = None
200
+ self._adminData = None
201
+ self._introduction = None
202
+
203
+ @property
204
+ def desc(self):
205
+ return self._desc
206
+
207
+ @desc.setter
208
+ def desc(self, value):
209
+ self._desc = value
210
+
102
211
  @property
103
212
  def category(self):
104
213
  return self._category
@@ -17,13 +17,12 @@ class EngineeringObject(ARObject, metaclass=ABCMeta):
17
17
  self.revision_label = None # type: ARLiteral
18
18
  self.short_label = None # type: ARLiteral
19
19
 
20
- def setCategory(self, category: ARLiteral):
20
+ def setCategory(self, category: any):
21
21
  if isinstance(category, ARLiteral):
22
22
  self.category = category
23
23
  else:
24
24
  self.category = ARLiteral()
25
25
  self.category.setValue(str(category))
26
-
27
26
  return self
28
27
 
29
28
  def getCategory(self) -> ARLiteral:
@@ -86,7 +85,7 @@ class Implementation(PackageableElement, metaclass=ABCMeta):
86
85
  self.programming_language = None # type: ARLiteral
87
86
  self.required_artifacts = []
88
87
  self.required_generator_tools = []
89
- self._resource_consumption = None # type: ResourceConsumption
88
+ self.resource_consumption = None # type: ResourceConsumption
90
89
  self.sw_version = "" # type: ARLiteral
91
90
  self.swc_bsw_mapping_ref = None # type: RefType
92
91
  self.used_code_generator = None # type: ARLiteral
@@ -103,11 +102,11 @@ class Implementation(PackageableElement, metaclass=ABCMeta):
103
102
 
104
103
  def setResourceConsumption(self, consumption: ResourceConsumption):
105
104
  self.elements[consumption.short_name] = consumption
106
- self._resource_consumption = consumption
105
+ self.resource_consumption = consumption
107
106
  return self
108
107
 
109
108
  def getResourceConsumption(self) -> ResourceConsumption:
110
- return self._resource_consumption
109
+ return self.resource_consumption
111
110
 
112
111
  class BswImplementation(Implementation):
113
112
  def __init__(self, parent: ARObject, short_name: str) -> None:
@@ -0,0 +1,63 @@
1
+ from abc import ABCMeta
2
+ from typing import List
3
+
4
+ from .ar_object import ARLiteral, ARObject
5
+ from .ar_ref import RefType
6
+ from .common_structure import ExclusiveArea
7
+ from .data_prototype import ParameterDataPrototype
8
+ from .general_structure import Identifiable
9
+
10
+ class IncludedDataTypeSet(ARObject):
11
+ def __init__(self):
12
+ super().__init__()
13
+
14
+ self.data_type_refs = [] # type: List[RefType]
15
+ self.literal_prefix = None # type: ARLiteral
16
+
17
+ def addDataTypeRef(self, ref_type: RefType):
18
+ self.data_type_refs.append(ref_type)
19
+
20
+ def getDataTypeRefs(self) -> List[RefType]:
21
+ return self.data_type_refs
22
+
23
+ @property
24
+ def literalPrefix(self) -> ARLiteral:
25
+ return self.literal_prefix
26
+
27
+ @literalPrefix.setter
28
+ def literalPrefix(self, value: ARLiteral):
29
+ self.literal_prefix = value
30
+
31
+ class InternalBehavior(Identifiable, metaclass=ABCMeta):
32
+ def __init__(self, parent: ARObject, short_name: str):
33
+ if type(self) == InternalBehavior:
34
+ raise NotImplementedError("InternalBehavior is an abstract class.")
35
+ super().__init__(parent, short_name)
36
+
37
+ self.data_type_mapping_refs = [] # type: List[RefType]
38
+ self.constant_memories = [] # type: List[ParameterDataPrototype]
39
+
40
+ def addDataTypeMappingRef(self, ref: RefType):
41
+ self.data_type_mapping_refs.append(ref)
42
+
43
+ def getDataTypeMappingRefs(self) -> List[RefType]:
44
+ return self.data_type_mapping_refs
45
+
46
+ def createExclusiveArea(self, short_name: str) -> ExclusiveArea:
47
+ if (short_name not in self.elements):
48
+ event = ExclusiveArea(self, short_name)
49
+ self.elements[short_name] = event
50
+ return self.elements[short_name]
51
+
52
+ def getExclusiveAreas(self) -> List[ExclusiveArea]:
53
+ return list(filter(lambda c: isinstance(c, ExclusiveArea), self.elements.values()))
54
+
55
+ def createConstantMemory(self, short_name: str) -> ParameterDataPrototype:
56
+ if (short_name not in self.elements):
57
+ prototype = ParameterDataPrototype(self, short_name)
58
+ self.elements[short_name] = prototype
59
+ self.constant_memories.append(prototype)
60
+ return self.elements[short_name]
61
+
62
+ def getConstantMemorys(self) -> List[ParameterDataPrototype]:
63
+ return self.constant_memories
File without changes
File without changes
@@ -0,0 +1,188 @@
1
+ from abc import ABCMeta
2
+ from typing import List
3
+
4
+ from armodel.models.general_structure import ARElement
5
+ from ....ar_object import ARLiteral, ARNumerical, ARObject
6
+
7
+ class ValueSpecification(ARObject, metaclass = ABCMeta):
8
+ '''
9
+ Base class for expressions leading to a value which can be used to initialize a data object.
10
+
11
+ Base : ARObject
12
+ Subclasses : AbstractRuleBasedValueSpecification, ApplicationValueSpecification, CompositeValueSpecification,
13
+ ConstantReference, NotAvailableValueSpecification, NumericalValueSpecification, ReferenceValueSpecification,
14
+ TextValueSpecification
15
+ '''
16
+ def __init__(self):
17
+ if type(self) == ValueSpecification:
18
+ raise NotImplementedError("ValueSpecification is an abstract class.")
19
+
20
+ super().__init__()
21
+
22
+ self.shortLabel = None
23
+
24
+ def getShortLabel(self):
25
+ return self.shortLabel
26
+
27
+ def setShortLabel(self, value):
28
+ self.shortLabel = value
29
+ return self
30
+
31
+ class CompositeValueSpecification(ValueSpecification, metaclass = ABCMeta):
32
+ '''
33
+ This abstract meta-class acts a base class for ValueSpecifications that have a composite form.
34
+
35
+ Base : ARObject, ValueSpecification
36
+ Subclasses : ArrayValueSpecification, RecordValueSpecification
37
+ '''
38
+ def __init__(self):
39
+ if type(self) == CompositeValueSpecification:
40
+ raise NotImplementedError("CompositeValueSpecification is an abstract class.")
41
+
42
+ super().__init__()
43
+
44
+ class CompositeRuleBasedValueArgument(ARObject, metaclass = ABCMeta):
45
+ '''
46
+ This meta-class has the ability to serve as the abstract base class for ValueSpecifications that can be
47
+ used for compound primitive data types.
48
+
49
+ Base : ARObject
50
+ Subclasses : ApplicationRuleBasedValueSpecification, ApplicationValueSpecification
51
+ '''
52
+ def __init__(self):
53
+ if type(self) == CompositeRuleBasedValueArgument:
54
+ raise NotImplementedError("CompositeRuleBasedValueArgument is an abstract class.")
55
+
56
+ super().__init__()
57
+
58
+ class ApplicationValueSpecification(CompositeRuleBasedValueArgument, ValueSpecification):
59
+ '''
60
+ This meta-class represents values for DataPrototypes typed by ApplicationDataTypes (this includes in
61
+ particular compound primitives).
62
+ For further details refer to ASAM CDF 2.0. This meta-class corresponds to some extent with
63
+ SW-INSTANCE in ASAM CDF 2.0.
64
+
65
+ Base ARObject, CompositeRuleBasedValueArgument, ValueSpecification
66
+ '''
67
+ def __init__(self):
68
+
69
+ CompositeRuleBasedValueArgument.__init__(self)
70
+ ValueSpecification.__init__(self)
71
+
72
+ self.category = None
73
+ self.swAxisCont = []
74
+ self.swValueCont = None
75
+
76
+ def getCategory(self):
77
+ return self.category
78
+
79
+ def setCategory(self, value):
80
+ self.category = value
81
+ return self
82
+
83
+ def getSwAxisCont(self):
84
+ return self.swAxisCont
85
+
86
+ def setSwAxisCont(self, value):
87
+ self.swAxisCont = value
88
+ return self
89
+
90
+ def getSwValueCont(self):
91
+ return self.swValueCont
92
+
93
+ def setSwValueCont(self, value):
94
+ self.swValueCont = value
95
+ return self
96
+
97
+
98
+ class RecordValueSpecification(CompositeValueSpecification):
99
+ '''
100
+ Specifies the values for a record.
101
+
102
+ Base : ARObject, CompositeValueSpecification, ValueSpecification
103
+ '''
104
+ def __init__(self):
105
+ super().__init__()
106
+
107
+ self.fields = []
108
+
109
+ def addField(self, field: ValueSpecification):
110
+ self.fields.append(field)
111
+
112
+ def getFields(self) -> List[ValueSpecification]:
113
+ return self.fields
114
+
115
+ class TextValueSpecification(ValueSpecification):
116
+ def __init__(self):
117
+ super().__init__()
118
+
119
+ self.value = None # type: ARLiteral
120
+
121
+ def getValue(self):
122
+ return self.value
123
+
124
+ def setValue(self, value):
125
+ self.value = value
126
+ return self
127
+
128
+
129
+ class NumericalValueSpecification(ValueSpecification):
130
+ def __init__(self):
131
+ super().__init__()
132
+
133
+ self.value = None # type: ARNumerical
134
+
135
+ def getValue(self):
136
+ return self.value
137
+
138
+ def setValue(self, value):
139
+ self.value = value
140
+ return self
141
+
142
+
143
+ class ArrayValueSpecification(ValueSpecification):
144
+ def __init__(self):
145
+ super().__init__()
146
+
147
+ self.element = [] # type: List[ValueSpecification]
148
+ self.intendedPartialInitializationCount = None
149
+
150
+ def getIntendedPartialInitializationCount(self):
151
+ return self.intendedPartialInitializationCount
152
+
153
+ def setIntendedPartialInitializationCount(self, value):
154
+ self.intendedPartialInitializationCount = value
155
+ return self
156
+
157
+ def addElement(self, element: ValueSpecification):
158
+ self.element.append(element)
159
+
160
+ def getElements(self) -> List[ValueSpecification]:
161
+ return self.element
162
+
163
+ class ConstantSpecification(ARElement):
164
+ def __init__(self, parent, short_name):
165
+ super().__init__(parent, short_name)
166
+
167
+ self.valueSpec = None # type: ValueSpecification
168
+
169
+ def getValueSpec(self):
170
+ return self.valueSpec
171
+
172
+ def setValueSpec(self, value):
173
+ self.valueSpec = value
174
+ return self
175
+
176
+
177
+ class ConstantReference(ValueSpecification):
178
+ def __init__(self):
179
+ super().__init__()
180
+
181
+ self.constantRef = None # type: RefType
182
+
183
+ def getConstantRef(self):
184
+ return self.constantRef
185
+
186
+ def setConstantRef(self, value):
187
+ self.constantRef = value
188
+ return self