armodel 1.6.2__py3-none-any.whl → 1.6.4__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 (170) hide show
  1. armodel/cli/arxml_dump_cli.py +13 -10
  2. armodel/cli/arxml_format_cli.py +1 -2
  3. armodel/cli/connector2xlsx_cli.py +2 -3
  4. armodel/cli/connector_update_cli.py +2 -5
  5. armodel/cli/memory_section_cli.py +2 -2
  6. armodel/cli/swc_list_cli.py +2 -3
  7. armodel/cli/system_signal_cli.py +2 -2
  8. armodel/lib/sw_component.py +3 -3
  9. armodel/lib/system_signal.py +3 -5
  10. armodel/models/{m2/autosar_templates/autosar_top_level_structure.py → M2/AUTOSARTemplates/AutosarTopLevelStructure.py} +5 -7
  11. armodel/models/{bsw_module_template.py → M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py} +113 -140
  12. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswImplementation.py +60 -0
  13. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +52 -0
  14. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +77 -0
  15. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/__init__.py +4 -0
  16. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +238 -0
  17. armodel/models/{m2/autosar_templates/common_structure/implementation_data_types.py → M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py} +7 -6
  18. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +119 -0
  19. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +96 -0
  20. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +69 -0
  21. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +20 -0
  22. armodel/models/{service_needs.py → M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py} +13 -9
  23. armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcBswMapping.py +35 -0
  24. armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcInternalBehavior/ModeDeclarationGroup.py +24 -0
  25. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/ExecutionOrderConstraint.py +45 -0
  26. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/TimingConstraint.py +24 -0
  27. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/TimingExtensions.py +33 -0
  28. armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +9 -0
  29. armodel/models/{m2/autosar_templates/common_structure → M2/AUTOSARTemplates/CommonStructure}/__init__.py +4 -3
  30. armodel/models/{m2/autosar_templates/ecuc_description_template.py → M2/AUTOSARTemplates/ECUCDescriptionTemplate.py} +6 -7
  31. armodel/models/{m2/autosar_templates/generic_structure/abstract_structure.py → M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py} +25 -5
  32. armodel/models/{m2/autosar_templates/generic_structure/ar_package.py → M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py} +41 -29
  33. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ArObject.py +16 -0
  34. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ElementCollection.py +1 -0
  35. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/EngineeringObject.py +52 -0
  36. armodel/models/{general_structure.py → M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py} +42 -159
  37. armodel/models/{ar_object.py → M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py} +179 -71
  38. armodel/models/M2/AUTOSARTemplates/GenericStructure/__init__.py +1 -0
  39. armodel/models/{m2/autosar_templates/sw_component_template/communication.py → M2/AUTOSARTemplates/SWComponentTemplate/Communication.py} +22 -5
  40. armodel/models/{m2/autosar_templates/sw_component_template/components/instance_refs.py → M2/AUTOSARTemplates/SWComponentTemplate/Components/InstanceRefs.py} +2 -4
  41. armodel/models/{m2/autosar_templates/sw_component_template/components → M2/AUTOSARTemplates/SWComponentTemplate/Components}/__init__.py +114 -10
  42. armodel/models/{m2/autosar_templates/sw_component_template/composition/instance_refs.py → M2/AUTOSARTemplates/SWComponentTemplate/Composition/InstanceRefs.py} +2 -5
  43. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +96 -0
  44. armodel/models/{m2/autosar_templates/sw_component_template/data_type/data_prototypes.py → M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py} +24 -8
  45. armodel/models/{datatype.py → M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py} +16 -73
  46. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +177 -0
  47. armodel/models/{m2/autosar_templates/sw_component_template/port_interface/instance_refs.py → M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/InstanceRefs.py} +2 -2
  48. armodel/models/{m2/autosar_templates/sw_component_template/port_interface → M2/AUTOSARTemplates/SWComponentTemplate/PortInterface}/__init__.py +10 -6
  49. armodel/models/{rpt_scenario.py → M2/AUTOSARTemplates/SWComponentTemplate/RPTScenario.py} +4 -6
  50. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcImplementation.py +34 -0
  51. armodel/models/{m2/autosar_templates/sw_component_template/swc_internal_behavior/access_count.py → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py} +2 -2
  52. armodel/models/{m2/autosar_templates/sw_component_template/swc_internal_behavior/data_elements.py → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/DataElements.py} +7 -5
  53. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/IncludedDataTypes.py +24 -0
  54. armodel/models/{m2/autosar_templates/sw_component_template/swc_internal_behavior/instance_refs_usage.py → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/InstanceRefsUsage.py} +3 -3
  55. armodel/models/{m2/autosar_templates/sw_component_template/swc_internal_behavior/mode_declaration_group.py → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py} +4 -4
  56. armodel/models/{per_instance_memory.py → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/PerInstanceMemory.py} +5 -6
  57. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/PortAPIOptions.py +86 -0
  58. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +174 -0
  59. armodel/models/{m2/autosar_templates/sw_component_template/swc_internal_behavior/server_call.py → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServerCall.py} +3 -4
  60. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +57 -0
  61. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/Trigger.py +8 -0
  62. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +358 -0
  63. armodel/models/{m2/autosar_templates/system_template/data_mapping.py → M2/AUTOSARTemplates/SystemTemplate/DataMapping.py} +2 -3
  64. armodel/models/{fibex/can_communication.py → M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanCommunication.py} +3 -3
  65. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +14 -0
  66. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/ServiceInstances.py +116 -0
  67. armodel/models/{fibex/lin_communication.py → M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin/LinCommunication.py} +5 -2
  68. armodel/models/{fibex/fibex_4_multiplatform.py → M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py} +5 -4
  69. armodel/models/{fibex/fibex_core/core_communication.py → M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py} +4 -6
  70. armodel/models/{fibex/fibex_core/core_topology.py → M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py} +6 -7
  71. armodel/models/{m2/autosar_templates/system_template/instance_refs.py → M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py} +2 -2
  72. armodel/models/{m2/autosar_templates/system_template/network_management.py → M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py} +5 -6
  73. armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +6 -0
  74. armodel/models/{m2/autosar_templates/system_template → M2/AUTOSARTemplates/SystemTemplate}/__init__.py +3 -4
  75. armodel/models/M2/MSR/AsamHdo/AdminData.py +18 -0
  76. armodel/models/M2/MSR/AsamHdo/BaseTypes.py +77 -0
  77. armodel/models/{m2_msr.py → M2/MSR/AsamHdo/ComputationMethod.py} +43 -28
  78. armodel/models/{global_constraints.py → M2/MSR/AsamHdo/Constraints/GlobalConstraints.py} +6 -4
  79. armodel/models/M2/MSR/AsamHdo/SpecialData.py +60 -0
  80. armodel/models/{m2/msr/asam_hdo/units.py → M2/MSR/AsamHdo/Units.py} +3 -3
  81. armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +26 -0
  82. armodel/models/{m2/msr/data_dictionary/auxillary_objects.py → M2/MSR/DataDictionary/AuxillaryObjects.py} +3 -4
  83. armodel/models/M2/MSR/DataDictionary/Axis.py +145 -0
  84. armodel/models/M2/MSR/DataDictionary/CalibrationParameter.py +37 -0
  85. armodel/models/{m2/msr/data_dictionary/data_def_properties.py → M2/MSR/DataDictionary/DataDefProperties.py} +19 -10
  86. armodel/models/{record_layout.py → M2/MSR/DataDictionary/RecordLayout.py} +26 -25
  87. armodel/models/{annotation.py → M2/MSR/Documentation/Annotation.py} +8 -10
  88. armodel/models/{m2/msr/documentation/block_elements.py → M2/MSR/Documentation/BlockElements.py} +2 -2
  89. armodel/models/M2/MSR/Documentation/TextModel/LanguageDataModel.py +16 -0
  90. armodel/models/{multilanguage_data.py → M2/MSR/Documentation/TextModel/MultilanguageData.py} +20 -32
  91. armodel/models/M2/MSR/Documentation/TextModel/__init__.py +0 -0
  92. armodel/models/M2/MSR/Documentation/__init__.py +3 -0
  93. armodel/models/M2/MSR/__init__.py +1 -0
  94. armodel/models/M2/__init__.py +0 -0
  95. armodel/models/__init__.py +50 -24
  96. armodel/parser/abstract_arxml_parser.py +8 -4
  97. armodel/parser/arxml_parser.py +117 -90
  98. armodel/parser/connector_xlsx_parser.py +5 -3
  99. armodel/parser/file_parser.py +2 -1
  100. armodel/report/connector_xls_report.py +3 -2
  101. armodel/tests/test_armodel/models/test_ar_object.py +2 -3
  102. armodel/tests/test_armodel/models/test_ar_package.py +21 -9
  103. armodel/tests/test_armodel/models/test_ar_ref.py +7 -5
  104. armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -1
  105. armodel/tests/test_armodel/models/test_common_structure.py +11 -5
  106. armodel/tests/test_armodel/models/test_data_dictionary.py +2 -2
  107. armodel/tests/test_armodel/models/test_data_prototype.py +8 -4
  108. armodel/tests/test_armodel/models/test_datatype.py +28 -14
  109. armodel/tests/test_armodel/models/test_general_structure.py +12 -2
  110. armodel/tests/test_armodel/models/test_implementation.py +3 -2
  111. armodel/tests/test_armodel/models/test_m2_msr.py +4 -2
  112. armodel/tests/test_armodel/models/test_port_interface.py +21 -11
  113. armodel/tests/test_armodel/models/test_port_prototype.py +1 -1
  114. armodel/tests/test_armodel/parser/test_parse_bswmd.py +13 -13
  115. armodel/tests/test_armodel/parser/test_sw_components.py +2 -2
  116. armodel/tests/test_armodel/parser/test_system.py +30 -0
  117. armodel/writer/abstract_arxml_writer.py +5 -2
  118. armodel/writer/arxml_writer.py +136 -91
  119. {armodel-1.6.2.dist-info → armodel-1.6.4.dist-info}/METADATA +16 -1
  120. armodel-1.6.4.dist-info/RECORD +156 -0
  121. armodel/lib/data_analyzer.py +0 -34
  122. armodel/models/ar_package.py +0 -641
  123. armodel/models/ar_ref.py +0 -25
  124. armodel/models/calibration.py +0 -119
  125. armodel/models/common_structure.py +0 -272
  126. armodel/models/communication.py +0 -17
  127. armodel/models/data_def_properties.py +0 -16
  128. armodel/models/data_dictionary.py +0 -59
  129. armodel/models/data_prototype.py +0 -103
  130. armodel/models/end_to_end_protection.py +0 -67
  131. armodel/models/fibex/fibex_core.py +0 -341
  132. armodel/models/fibex/lin_topology.py +0 -7
  133. armodel/models/implementation.py +0 -135
  134. armodel/models/internal_behavior.py +0 -63
  135. armodel/models/m2/autosar_templates/common_structure/implementation.py +0 -21
  136. armodel/models/m2/autosar_templates/sw_component_template/composition/__init__.py +0 -154
  137. armodel/models/m2/autosar_templates/sw_component_template/port_interface.py +0 -236
  138. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/__init__.py +0 -203
  139. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/trigger.py +0 -10
  140. armodel/models/m2/autosar_templates/system_template/transport_protocols.py +0 -7
  141. armodel/models/mode_declaration.py +0 -8
  142. armodel/models/port_interface.py +0 -165
  143. armodel/models/port_prototype.py +0 -6
  144. armodel/models/service_mapping.py +0 -11
  145. armodel/models/sw_component.py +0 -385
  146. armodel/models/system_template/network_management.py +0 -7
  147. armodel/models/system_template/transport_protocols.py +0 -7
  148. armodel/models/timing.py +0 -91
  149. armodel/models/unit.py +0 -14
  150. armodel-1.6.2.dist-info/RECORD +0 -142
  151. /armodel/models/{fibex → M2/AUTOSARTemplates/CommonStructure/SwcInternalBehavior}/__init__.py +0 -0
  152. /armodel/models/{fibex/fibex_4_can → M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint}/__init__.py +0 -0
  153. /armodel/models/{fibex/fibex_4_lin → M2/AUTOSARTemplates/CommonStructure/Timing}/__init__.py +0 -0
  154. /armodel/models/{fibex/fibex_core → M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses}/__init__.py +0 -0
  155. /armodel/models/{m2 → M2/AUTOSARTemplates/SWComponentTemplate/Datatype}/__init__.py +0 -0
  156. /armodel/models/{m2/autosar_templates → M2/AUTOSARTemplates/SWComponentTemplate}/__init__.py +0 -0
  157. /armodel/models/{m2/autosar_templates/generic_structure → M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can}/__init__.py +0 -0
  158. /armodel/models/{m2/autosar_templates/sw_component_template → M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet}/__init__.py +0 -0
  159. /armodel/models/{m2/autosar_templates/sw_component_template/data_type → M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Lin}/__init__.py +0 -0
  160. /armodel/models/{m2/msr → M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore}/__init__.py +0 -0
  161. /armodel/models/{m2/msr/asam_hdo → M2/AUTOSARTemplates/SystemTemplate/Fibex}/__init__.py +0 -0
  162. /armodel/models/{m2/msr/data_dictionary → M2/AUTOSARTemplates}/__init__.py +0 -0
  163. /armodel/models/{m2/msr/documentation → M2/MSR/AsamHdo/Constraints}/__init__.py +0 -0
  164. /armodel/models/{system_template → M2/MSR/AsamHdo}/__init__.py +0 -0
  165. /armodel/models/{ecuc_parameter_def_template.py → M2/MSR/CalibrationData/__init__.py} +0 -0
  166. /armodel/models/{m2/autosar_templates/common_structure/constants.py → M2/MSR/DataDictionary/__init__.py} +0 -0
  167. {armodel-1.6.2.dist-info → armodel-1.6.4.dist-info}/LICENSE +0 -0
  168. {armodel-1.6.2.dist-info → armodel-1.6.4.dist-info}/WHEEL +0 -0
  169. {armodel-1.6.2.dist-info → armodel-1.6.4.dist-info}/entry_points.txt +0 -0
  170. {armodel-1.6.2.dist-info → armodel-1.6.4.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,52 @@
1
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
2
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
3
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean, ARLiteral, ARNumerical
4
+
5
+ class BswModuleEntry(ARElement):
6
+ def __init__(self, parent: ARObject, short_name: str):
7
+ super().__init__(parent, short_name)
8
+
9
+ self.service_id = None # type: ARNumerical
10
+ self.is_reentrant = None # type: ARBoolean
11
+ self.is_synchronous = None # type: ARBoolean
12
+ self.call_type = None # type: ARLiteral
13
+ self._execution_context = None # type: ARLiteral
14
+ self._sw_service_impl_policy = None # type: ARLiteral
15
+
16
+ @property
17
+ def execution_context(self):
18
+ return self._execution_context
19
+
20
+ @execution_context.setter
21
+ def execution_context(self, value):
22
+ if value.upper() not in ("HOOK", "INTERRUPT-CAT-1", "INTERRUPT-CAT-2", "TASK", "UNSPECIFIED"):
23
+ raise ValueError("Invalid execution context <%s> of BswModuleEntry <%s>" % (value, self.short_name))
24
+ self._execution_context = value
25
+
26
+ @property
27
+ def sw_service_impl_policy(self):
28
+ return self._sw_service_impl_policy
29
+
30
+ @sw_service_impl_policy.setter
31
+ def sw_service_impl_policy(self, value):
32
+ if value.upper() not in ("INLINE", "INLINE-CONDITIONAL", "MACRO", "STANDARD"):
33
+ raise ValueError("Invalid SwServiceImplPolicy <%s> of BswModuleEntry <%s>" % (value, self.short_name))
34
+ self._sw_service_impl_policy = value
35
+
36
+ def __str__(self) -> str:
37
+ result = []
38
+ result.append("short_name : %s" % self.short_name)
39
+ if self.service_id != None:
40
+ result.append("service_id : %d" % self.service_id)
41
+ if self.is_reentrant != None:
42
+ result.append("is_reentrant : %s" % self.is_reentrant)
43
+ if self.is_synchronous != None:
44
+ result.append("is_synchronous : %s" % self.is_synchronous)
45
+ if self.call_type != None:
46
+ result.append("call_type : %s" % self.call_type)
47
+ if self.execution_context != None:
48
+ result.append("execution_context : %s" % self.execution_context)
49
+ if self.sw_service_impl_policy != None:
50
+ result.append("sw_service_impl_policy : %s" % self.sw_service_impl_policy)
51
+
52
+ return "\n".join(result)
@@ -0,0 +1,77 @@
1
+ from ....M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalBehavior
2
+ from ....M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDeclarationGroupPrototype
3
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
4
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
5
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARPositiveInteger, RefType
6
+ from typing import Dict, List
7
+
8
+ class BswModuleDescription(ARElement):
9
+ '''
10
+ Root element for the description of a single BSW module or BSW cluster. In case it
11
+ describes a BSW module, the short name of this element equals the name of the
12
+ BSW module.
13
+
14
+ **attributes**:
15
+ module_id : MODULE-ID
16
+ implemented_entry_refs : PROVIDED-ENTRYS
17
+ '''
18
+ def __init__(self, parent: ARObject, short_name: str):
19
+ super().__init__(parent, short_name)
20
+
21
+ # MODULE-ID
22
+ self.module_id = None # type: ARPositiveInteger
23
+ # PROVIDED-ENTRYS
24
+ self._implementedEntryRefs = [] # type: List[RefType]
25
+
26
+ self.providedModeGroups = {} # type: Dict[str, ModeDeclarationGroupPrototype]
27
+ self.requiredModeGroups = {} # type: Dict[str, ModeDeclarationGroupPrototype]
28
+
29
+ def addImplementedEntry(self, entry_ref: RefType):
30
+ self._implementedEntryRefs.append(entry_ref)
31
+
32
+ def getImplementedEntries(self) -> List[RefType]:
33
+ return self._implementedEntryRefs
34
+
35
+ #@property
36
+ #def category(self) -> str:
37
+ # return ARElement.getCategory(self)
38
+
39
+ #@category.setter
40
+ #def category(self, value:str):
41
+ # if value is None:
42
+ # return
43
+ # if value not in ("BSW_MODULE", "BSW_CLUSTER", "LIBRARY"):
44
+ # raise ValueError("Invalid category <%s> of BswModuleDescription <%s>" % (value, self.short_name))
45
+ # ARElement.setCategory(self, value)
46
+
47
+ def createProvidedModeGroup(self, short_name: str) -> ModeDeclarationGroupPrototype:
48
+ if (short_name not in self.elements):
49
+ prototype = ModeDeclarationGroupPrototype(self, short_name)
50
+ self.elements[short_name] = prototype
51
+ self.providedModeGroups[short_name] = prototype
52
+ return self.elements[short_name]
53
+
54
+ def getProvidedModeGroups(self) -> List[ModeDeclarationGroupPrototype]:
55
+ return sorted(self.providedModeGroups.values(), key=lambda v: v.short_name)
56
+
57
+ def createRequiredModeGroup(self, short_name: str) -> ModeDeclarationGroupPrototype:
58
+ if (short_name not in self.elements):
59
+ prototype = ModeDeclarationGroupPrototype(self, short_name)
60
+ self.elements[short_name] = prototype
61
+ self.requiredModeGroups[short_name] = property
62
+ return self.elements[short_name]
63
+
64
+ def getRequiredModeGroups(self) -> List[ModeDeclarationGroupPrototype]:
65
+ return sorted(self.requiredModeGroups.values(), key=lambda v: v.short_name)
66
+
67
+ def createBswInternalBehavior(self, short_name: str) -> BswInternalBehavior:
68
+ '''
69
+ Create the INTERNAL-BEHAVIORS tag
70
+ '''
71
+ if (short_name not in self.elements):
72
+ prototype = BswInternalBehavior(self, short_name)
73
+ self.elements[short_name] = prototype
74
+ return self.elements[short_name]
75
+
76
+ def getBswInternalBehaviors(self) -> List[BswInternalBehavior]:
77
+ return list(filter(lambda a: isinstance(a, BswInternalBehavior), self.elements.values()))
@@ -0,0 +1,4 @@
1
+ from .BswBehavior import *
2
+ from .BswImplementation import *
3
+ from .BswInterfaces import *
4
+ from .BswOverview import *
@@ -0,0 +1,238 @@
1
+ from abc import ABCMeta
2
+ from typing import List
3
+ from ....M2.AUTOSARTemplates.CommonStructure import ResourceConsumption
4
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import AutosarEngineeringObject
5
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, PackageableElement, Referrable
6
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import PositiveInteger, RefType, ARLiteral, String
7
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
8
+
9
+
10
+ class ImplementationProps(Referrable, metaclass = ABCMeta):
11
+ def __init__(self, parent: ARObject, short_name: str):
12
+ if type(self) == ImplementationProps:
13
+ raise NotImplementedError("ImplementationProps is an abstract class.")
14
+
15
+ super().__init__(parent, short_name)
16
+
17
+ self.symbol = None # type: ARLiteral
18
+
19
+ def getSymbol(self):
20
+ return self.symbol
21
+
22
+ def setSymbol(self, value):
23
+ self.symbol = value
24
+ return self
25
+
26
+
27
+ class Code(Identifiable):
28
+ def __init__(self, parent: ARObject, short_name: str):
29
+ super().__init__(parent, short_name)
30
+
31
+ self._artifactDescriptors = [] # type: List[AutosarEngineeringObject]
32
+ self.callbackHeaderRefs = [] # type: List[RefType]
33
+
34
+ def addArtifactDescriptor(self, desc: AutosarEngineeringObject):
35
+ self._artifactDescriptors.append(desc)
36
+
37
+ def getArtifactDescriptors(self, category:str = "") -> List[AutosarEngineeringObject]:
38
+ if (category == ""):
39
+ return self._artifactDescriptors
40
+ else:
41
+ return list(filter(lambda a: a.getCategory().getText() == category, self._artifactDescriptors))
42
+
43
+ class Compiler(Identifiable):
44
+ def __init__(self, parent: ARObject, short_name: str):
45
+ super().__init__(parent, short_name)
46
+
47
+ self.name = None # type: String
48
+ self.options = None # type: String
49
+ self.vendor = None # type: String
50
+ self.version = None # type: String
51
+
52
+ def getName(self):
53
+ return self.name
54
+
55
+ def setName(self, value):
56
+ self.name = value
57
+ return self
58
+
59
+ def getOptions(self):
60
+ return self.options
61
+
62
+ def setOptions(self, value):
63
+ self.options = value
64
+ return self
65
+
66
+ def getVendor(self):
67
+ return self.vendor
68
+
69
+ def setVendor(self, value):
70
+ self.vendor = value
71
+ return self
72
+
73
+ def getVersion(self):
74
+ return self.version
75
+
76
+ def setVersion(self, value):
77
+ self.version = value
78
+ return self
79
+
80
+ class DependencyOnArtifact(Identifiable):
81
+ def __init__(self, parent: ARObject, short_name: str):
82
+ super().__init__(parent, short_name)
83
+
84
+ # type: AutosarEngineeringObject
85
+ self.artifactDescriptor = None
86
+ self.usage = None # type: DependencyUsageEnum
87
+
88
+ def getArtifactDescriptor(self):
89
+ return self.artifactDescriptor
90
+
91
+ def setArtifactDescriptor(self, value):
92
+ self.artifactDescriptor = value
93
+ return self
94
+
95
+ def getUsage(self):
96
+ return self.usage
97
+
98
+ def setUsage(self, value):
99
+ self.usage = value
100
+ return self
101
+
102
+
103
+ class Implementation(PackageableElement, metaclass = ABCMeta):
104
+ def __init__(self, parent: ARObject, short_name: str):
105
+ if type(self) == Implementation:
106
+ raise NotImplementedError("Implementation is an abstract class.")
107
+
108
+ super().__init__(parent, short_name)
109
+
110
+ self.buildActionManifestRef = None # type: RefType
111
+ self.codeDescriptors = [] # type: List[Code]
112
+ self.compilers = [] # type: List[Compiler]
113
+ self.generatedArtifacts = [] # type: List[DependencyOnArtifact]
114
+ self.hwElementRefs = [] # type: List[RefType]
115
+ self.linkers = [] # type: List[Linker]
116
+ self.mcSupport = None
117
+ self.programmingLanguage = None # type: ProgramminglanguageEnum
118
+ self.requiredArtifacts = [] # type: List[DependencyOnArtifact]
119
+ self.requiredGeneratorTools = [] # type: List[DependencyOnArtifact]
120
+ self.resourceConsumption = None # type: ResourceConsumption
121
+ self.swcBswMappingRef = None # type: RefType
122
+ self.swVersion = [] # type: RevisionLabelString
123
+ self.usedCodeGenerator = None # type: String
124
+ self.vendorId = 0 # type: PositiveInteger
125
+
126
+ def getBuildActionManifestRef(self):
127
+ return self.buildActionManifestRef
128
+
129
+ def setBuildActionManifestRef(self, value):
130
+ self.buildActionManifestRef = value
131
+ return self
132
+
133
+ def getCodeDescriptors(self)-> List[Code]:
134
+ return list(filter(lambda a : isinstance(a, Code), self.elements.values()))
135
+
136
+ def createCodeDescriptor(self, short_name: str) -> Code:
137
+ if (short_name not in self.elements):
138
+ code_descriptor = Code(self, short_name)
139
+ self.addElement(code_descriptor)
140
+ self.codeDescriptors.append(code_descriptor)
141
+ return self.getElement(short_name)
142
+
143
+ def getCompilers(self):
144
+ return self.compilers
145
+
146
+ def setCompilers(self, value):
147
+ self.compilers = value
148
+ return self
149
+
150
+ def getGeneratedArtifacts(self):
151
+ return self.generatedArtifacts
152
+
153
+ def setGeneratedArtifacts(self, value):
154
+ self.generatedArtifacts = value
155
+ return self
156
+
157
+ def getHwElementRefs(self):
158
+ return self.hwElementRefs
159
+
160
+ def setHwElementRefs(self, value):
161
+ self.hwElementRefs = value
162
+ return self
163
+
164
+ def getLinkers(self):
165
+ return self.linkers
166
+
167
+ def setLinkers(self, value):
168
+ self.linkers = value
169
+ return self
170
+
171
+ def getMcSupport(self):
172
+ return self.mcSupport
173
+
174
+ def setMcSupport(self, value):
175
+ self.mcSupport = value
176
+ return self
177
+
178
+ def getProgrammingLanguage(self):
179
+ return self.programmingLanguage
180
+
181
+ def setProgrammingLanguage(self, value):
182
+ self.programmingLanguage = value
183
+ return self
184
+
185
+ def getRequiredArtifacts(self):
186
+ return self.requiredArtifacts
187
+
188
+ def setRequiredArtifacts(self, value):
189
+ self.requiredArtifacts = value
190
+ return self
191
+
192
+ def getRequiredGeneratorTools(self):
193
+ return self.requiredGeneratorTools
194
+
195
+ def setRequiredGeneratorTools(self, value):
196
+ self.requiredGeneratorTools = value
197
+ return self
198
+
199
+ def getResourceConsumption(self):
200
+ return self.resourceConsumption
201
+
202
+ def setResourceConsumption(self, consumption: ResourceConsumption):
203
+ self.elements[consumption.short_name] = consumption
204
+ self.resourceConsumption = consumption
205
+ return self
206
+
207
+ def getSwcBswMappingRef(self):
208
+ return self.swcBswMappingRef
209
+
210
+ def setSwcBswMappingRef(self, value):
211
+ self.swcBswMappingRef = value
212
+ return self
213
+
214
+ def getSwVersion(self):
215
+ return self.swVersion
216
+
217
+ def setSwVersion(self, value):
218
+ self.swVersion = value
219
+ return self
220
+
221
+ def getUsedCodeGenerator(self):
222
+ return self.usedCodeGenerator
223
+
224
+ def setUsedCodeGenerator(self, value):
225
+ self.usedCodeGenerator = value
226
+ return self
227
+
228
+ def getVendorId(self):
229
+ return self.vendorId
230
+
231
+ def setVendorId(self, value):
232
+ self.vendorId = value
233
+ return self
234
+
235
+
236
+
237
+
238
+
@@ -1,11 +1,12 @@
1
1
  from abc import ABCMeta
2
2
  from typing import List
3
-
4
- from ...msr.data_dictionary.data_def_properties import SwDataDefProps
5
- from ....general_structure import Identifiable
6
- from ....ar_object import ARBoolean, ARLiteral, ARNumerical, ARObject
7
- from ....datatype import AutosarDataType
8
- from ..sw_component_template.components import SymbolProps
3
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
4
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical
5
+ from ....M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps
6
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
7
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean
8
+ from ....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import AutosarDataType
9
+ from ....M2.AUTOSARTemplates.SWComponentTemplate.Components import SymbolProps
9
10
 
10
11
  class AbstractImplementationDataTypeElement(Identifiable):
11
12
  def __init__(self, parent, short_name: str):
@@ -0,0 +1,119 @@
1
+ from abc import ABCMeta
2
+ from enum import Enum
3
+ from typing import List
4
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
6
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, RefType
7
+ from ....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ParameterDataPrototype
8
+
9
+ class ReentrancyLevelEnum(Enum):
10
+ multicoreReentrant = "multicoreReentrant"
11
+ nonReentrant = "nonReentrant"
12
+ singleCoreReentrant = "singleCoreReentrant"
13
+
14
+
15
+ class ExclusiveArea(Identifiable):
16
+ def __init__(self, parent: ARObject, short_name: str):
17
+ super().__init__(parent, short_name)
18
+
19
+
20
+ class ExecutableEntity(Identifiable, metaclass=ABCMeta):
21
+ def __init__(self, parent: ARObject, short_name: str):
22
+ if type(self) == ExecutableEntity:
23
+ raise NotImplementedError("ExecutableEntity is an abstract class.")
24
+
25
+ super().__init__(parent, short_name)
26
+
27
+ self.activationReason = None # *
28
+ self.minimumStartInterval = None # type: ARFloat
29
+ self.reentrancyLevel = None #
30
+ self.canEnterExclusiveAreaRefs = [] # type: List[RefType]
31
+ self.swAddrMethodRef = None # type: RefType
32
+
33
+ def getActivationReason(self):
34
+ return self.activationReason
35
+
36
+ def setActivationReason(self, value):
37
+ self.activationReason = value
38
+ return self
39
+
40
+ def getMinimumStartInterval(self):
41
+ return self.minimumStartInterval
42
+
43
+ def setMinimumStartInterval(self, value):
44
+ self.minimumStartInterval = value
45
+ return self
46
+
47
+ def getReentrancyLevel(self):
48
+ return self.reentrancyLevel
49
+
50
+ def setReentrancyLevel(self, value):
51
+ self.reentrancyLevel = value
52
+ return self
53
+
54
+ def getSwAddrMethodRef(self):
55
+ return self.swAddrMethodRef
56
+
57
+ def setSwAddrMethodRef(self, value):
58
+ self.swAddrMethodRef = value
59
+ return self
60
+
61
+ @property
62
+ def minimumStartIntervalMs(self) -> int:
63
+ if self.minimumStartInterval is not None:
64
+ return int(self.minimumStartInterval.getValue() * 1000)
65
+ return None
66
+
67
+ def addCanEnterExclusiveAreaRef(self, ref: RefType):
68
+ self.canEnterExclusiveAreaRefs.append(ref)
69
+
70
+ def getCanEnterExclusiveAreaRefs(self):
71
+ return self.canEnterExclusiveAreaRefs
72
+
73
+
74
+ class InternalBehavior(Identifiable, metaclass=ABCMeta):
75
+ def __init__(self, parent: ARObject, short_name: str):
76
+ if type(self) == InternalBehavior:
77
+ raise NotImplementedError("InternalBehavior is an abstract class.")
78
+ super().__init__(parent, short_name)
79
+
80
+ self.data_type_mapping_refs = [] # type: List[RefType]
81
+ self.constant_memories = [] # type: List[ParameterDataPrototype]
82
+
83
+ def addDataTypeMappingRef(self, ref: RefType):
84
+ self.data_type_mapping_refs.append(ref)
85
+
86
+ def getDataTypeMappingRefs(self) -> List[RefType]:
87
+ return self.data_type_mapping_refs
88
+
89
+ def createExclusiveArea(self, short_name: str) -> ExclusiveArea:
90
+ if (short_name not in self.elements):
91
+ event = ExclusiveArea(self, short_name)
92
+ self.elements[short_name] = event
93
+ return self.elements[short_name]
94
+
95
+ def getExclusiveAreas(self) -> List[ExclusiveArea]:
96
+ return list(filter(lambda c: isinstance(c, ExclusiveArea), self.elements.values()))
97
+
98
+ def createConstantMemory(self, short_name: str) -> ParameterDataPrototype:
99
+ if (short_name not in self.elements):
100
+ prototype = ParameterDataPrototype(self, short_name)
101
+ self.elements[short_name] = prototype
102
+ self.constant_memories.append(prototype)
103
+ return self.elements[short_name]
104
+
105
+ def getConstantMemorys(self) -> List[ParameterDataPrototype]:
106
+ return self.constant_memories
107
+
108
+ class AbstractEvent(Identifiable):
109
+ def __init__(self, parent: ARObject, short_name: str):
110
+ super().__init__(parent, short_name)
111
+
112
+ self.activationReasonRepresentationRef = None # type: RefType
113
+
114
+ def getActivationReasonRepresentationRef(self):
115
+ return self.activationReasonRepresentationRef
116
+
117
+ def setActivationReasonRepresentationRef(self, value):
118
+ self.activationReasonRepresentationRef = value
119
+ return self
@@ -0,0 +1,96 @@
1
+ from typing import List
2
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
3
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
4
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARNumerical, RefType, TRefType
5
+
6
+ class ModeDeclaration(Identifiable):
7
+ def __init__(self, parent: ARObject, short_name: str):
8
+ super().__init__(parent, short_name)
9
+
10
+ self.value = None # type: ARNumerical
11
+
12
+ def setValue(self, value):
13
+ self.value = value
14
+ return self
15
+
16
+ def getValue(self) -> ARNumerical:
17
+ return self.value
18
+
19
+
20
+ class ModeRequestTypeMap(ARObject):
21
+ def __init__(self):
22
+ super().__init__()
23
+
24
+ self.implementation_data_type_ref = None # type: RefType
25
+ self.mode_group_ref = None # type: RefType
26
+
27
+
28
+ class ModeDeclarationGroup(Identifiable):
29
+ def __init__(self, parent: ARObject, short_name: str):
30
+ super().__init__(parent, short_name)
31
+
32
+ self._initial_mode_ref = None # type: RefType
33
+ self._on_transition_value = None # type: ARNumerical
34
+
35
+ def createModeDeclaration(self, short_name: str) -> ModeDeclaration:
36
+ if (short_name not in self.elements):
37
+ spec = ModeDeclaration(self, short_name)
38
+ self.elements[short_name] = spec
39
+ return self.elements[short_name]
40
+
41
+ def getModeDeclarations(self) -> List[ModeDeclaration]:
42
+ return list(sorted(filter(lambda a: isinstance(a, ModeDeclaration), self.elements.values()), key= lambda o:o.short_name))
43
+
44
+ def setInitialModeRef(self, ref: RefType):
45
+ self._initial_mode_ref = ref
46
+ return self
47
+
48
+ def getInitialModeRef(self) -> RefType:
49
+ return self._initial_mode_ref
50
+
51
+ def setOnTransitionValue(self, value):
52
+ if isinstance(value, int):
53
+ value = ARNumerical()
54
+ value.setValue(value)
55
+ self._on_transition_value = value
56
+ return self
57
+
58
+ def getOnTransitionValue(self) -> ARNumerical:
59
+ return self._on_transition_value
60
+
61
+
62
+ class ModeDeclarationGroupPrototype(Identifiable):
63
+
64
+ """
65
+ The ModeDeclarationGroupPrototype specifies a set of Modes (ModeDeclarationGroup) which is provided or required in the given context.
66
+ """
67
+
68
+ def __init__(self, parent: ARObject, short_name: str):
69
+ super().__init__(parent, short_name)
70
+
71
+ self._swCalibrationAccess = None # type: str
72
+ self.typeTRef = None # type: TRefType
73
+
74
+ @property
75
+ def sw_calibration_access(self):
76
+ return self._swCalibrationAccess
77
+
78
+ @sw_calibration_access.setter
79
+ def sw_calibration_access(self, value):
80
+ if (value not in ("notAccessible", "readOnly", "readWrite")):
81
+ raise ValueError("Invalid SwCalibrationAccess <%s> of ModeDeclarationGroupPrototype <%s>" % (value, self.short_name))
82
+ self._swCalibrationAccess = value
83
+
84
+ def getSwCalibrationAccess(self):
85
+ return self.swCalibrationAccess
86
+
87
+ def setSwCalibrationAccess(self, value):
88
+ self.swCalibrationAccess = value
89
+ return self
90
+
91
+ def getTypeTRef(self):
92
+ return self.typeTRef
93
+
94
+ def setTypeTRef(self, value):
95
+ self.typeTRef = value
96
+ return self
@@ -0,0 +1,69 @@
1
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
2
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
3
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, RefType
4
+ import re
5
+ from typing import List
6
+
7
+ class MemorySection(Identifiable):
8
+ def __init__(self, parent: ARObject, short_name: str):
9
+ super().__init__(parent, short_name)
10
+
11
+ self._alignment = None # type: ARLiteral
12
+ self.size = None
13
+ self.options = [] # type: List[ARLiteral]
14
+ self.swAddrMethodRef = None # type: RefType
15
+ self.symbol = None # type: ARLiteral
16
+
17
+ def getAlignment(self):
18
+ return self.alignment
19
+
20
+ def setAlignment(self, value):
21
+ self.alignment = value
22
+ return self
23
+
24
+ def getSize(self):
25
+ return self.size
26
+
27
+ def setSize(self, value):
28
+ self.size = value
29
+ return self
30
+
31
+ def getSwAddrMethodRef(self):
32
+ return self.swAddrMethodRef
33
+
34
+ def setSwAddrMethodRef(self, value):
35
+ self.swAddrMethodRef = value
36
+ return self
37
+
38
+ def getSymbol(self):
39
+ return self.symbol
40
+
41
+ def setSymbol(self, value):
42
+ self.symbol = value
43
+ return self
44
+
45
+ @property
46
+ def alignment(self) -> ARLiteral:
47
+ return self._alignment
48
+
49
+ @alignment.setter
50
+ def alignment(self, value: ARLiteral):
51
+ if value is not None and value.getValue() != "":
52
+ match = False
53
+ if value.getValue() in ("UNKNOWN", "UNSPECIFIED", "BOOLEAN", "PTR"):
54
+ self._alignment = value
55
+ match = True
56
+ else:
57
+ m = re.match(r'^\d+', value.value)
58
+ if m:
59
+ self._alignment = value
60
+ match = True
61
+
62
+ if not match:
63
+ raise ValueError("Invalid alignment <%s> of memory section <%s>" % (value, self.getShortName()))
64
+
65
+ def addOption(self, option: ARLiteral):
66
+ self.options.append(option)
67
+
68
+ def getOptions(self) -> List[ARLiteral]:
69
+ return self.options