armodel 1.5.0__py3-none-any.whl → 1.6.1__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 +13 -13
- armodel/cli/memory_section_cli.py +76 -0
- armodel/cli/system_signal_cli.py +74 -0
- armodel/data_models/sw_connector.py +3 -3
- armodel/lib/__init__.py +2 -1
- armodel/lib/system_signal.py +37 -0
- armodel/models/__init__.py +9 -4
- armodel/models/annotation.py +27 -3
- armodel/models/ar_object.py +18 -6
- armodel/models/ar_package.py +271 -127
- armodel/models/ar_ref.py +11 -166
- armodel/models/bsw_module_template.py +37 -14
- armodel/models/common_structure.py +91 -174
- armodel/models/communication.py +2 -2
- armodel/models/data_prototype.py +41 -6
- armodel/models/datatype.py +16 -74
- armodel/models/end_to_end_protection.py +1 -1
- armodel/models/fibex/can_communication.py +119 -3
- armodel/models/fibex/fibex_4_can/__init__.py +0 -0
- armodel/models/fibex/fibex_4_lin/__init__.py +0 -0
- armodel/models/fibex/fibex_4_multiplatform.py +81 -88
- armodel/models/fibex/fibex_core/__init__.py +0 -0
- armodel/models/fibex/fibex_core/core_communication.py +627 -0
- armodel/models/fibex/fibex_core/core_topology.py +180 -0
- armodel/models/fibex/lin_communication.py +24 -3
- armodel/models/general_structure.py +110 -11
- armodel/models/internal_behavior.py +1 -1
- armodel/models/m2/__init__.py +0 -0
- armodel/models/m2/autosar_templates/__init__.py +0 -0
- armodel/models/m2/autosar_templates/common_structure/__init__.py +188 -0
- armodel/models/m2/autosar_templates/common_structure/constants.py +0 -0
- armodel/models/m2/autosar_templates/common_structure/implementation.py +21 -0
- armodel/models/m2/autosar_templates/common_structure/implementation_data_types.py +148 -0
- armodel/models/m2/autosar_templates/ecuc_description_template.py +269 -0
- armodel/models/m2/autosar_templates/generic_structure/__init__.py +0 -0
- armodel/models/m2/autosar_templates/generic_structure/abstract_structure.py +69 -0
- armodel/models/m2/autosar_templates/sw_component_template/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/communication.py +360 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/__init__.py +246 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/instance_refs.py +181 -0
- armodel/models/m2/autosar_templates/sw_component_template/composition/__init__.py +154 -0
- armodel/models/m2/autosar_templates/sw_component_template/composition/instance_refs.py +157 -0
- armodel/models/m2/autosar_templates/sw_component_template/data_type/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/data_type/data_prototypes.py +104 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface/__init__.py +243 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface/instance_refs.py +39 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface.py +236 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/__init__.py +203 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/access_count.py +13 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/data_elements.py +46 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/instance_refs_usage.py +169 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/mode_declaration_group.py +38 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/server_call.py +27 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/trigger.py +10 -0
- armodel/models/m2/autosar_templates/system_template/__init__.py +321 -0
- armodel/models/m2/autosar_templates/system_template/data_mapping.py +88 -0
- armodel/models/m2/autosar_templates/system_template/instance_refs.py +48 -0
- armodel/models/m2/autosar_templates/system_template/network_management.py +554 -0
- armodel/models/m2/autosar_templates/system_template/transport_protocols.py +7 -0
- armodel/models/m2/msr/__init__.py +0 -0
- armodel/models/m2/msr/asam_hdo/__init__.py +0 -0
- armodel/models/m2/msr/asam_hdo/units.py +105 -0
- armodel/models/m2/msr/data_dictionary/__init__.py +0 -0
- armodel/models/m2/msr/data_dictionary/auxillary_objects.py +42 -0
- armodel/models/m2/msr/data_dictionary/data_def_properties.py +295 -0
- armodel/models/m2/msr/documentation/__init__.py +0 -0
- armodel/models/m2/msr/documentation/block_elements.py +18 -0
- armodel/models/m2_msr.py +1 -0
- armodel/models/multilanguage_data.py +15 -0
- armodel/models/per_instance_memory.py +34 -6
- armodel/models/port_prototype.py +2 -253
- armodel/models/service_needs.py +3 -1
- armodel/models/sw_component.py +19 -358
- armodel/parser/__init__.py +2 -1
- armodel/parser/abstract_arxml_parser.py +10 -1
- armodel/parser/arxml_parser.py +912 -229
- armodel/parser/file_parser.py +43 -0
- armodel/tests/test_armodel/models/test_ar_package.py +6 -3
- armodel/tests/test_armodel/models/test_ar_ref.py +18 -16
- armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -5
- armodel/tests/test_armodel/models/test_common_structure.py +8 -7
- armodel/tests/test_armodel/models/test_data_dictionary.py +5 -5
- armodel/tests/test_armodel/models/test_data_prototype.py +2 -2
- armodel/tests/test_armodel/models/test_datatype.py +9 -9
- armodel/tests/test_armodel/models/test_port_interface.py +2 -2
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +3 -3
- armodel/tests/test_armodel/parser/test_sw_components.py +3 -3
- armodel/writer/abstract_arxml_writer.py +5 -1
- armodel/writer/arxml_writer.py +870 -224
- {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/METADATA +28 -1
- armodel-1.6.1.dist-info/RECORD +140 -0
- {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/entry_points.txt +3 -1
- armodel-1.5.0.dist-info/RECORD +0 -91
- {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/LICENSE +0 -0
- {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/WHEEL +0 -0
- {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/top_level.txt +0 -0
armodel/models/ar_package.py
CHANGED
|
@@ -1,25 +1,33 @@
|
|
|
1
1
|
from typing import Dict, List
|
|
2
2
|
|
|
3
|
-
from
|
|
4
|
-
from
|
|
5
|
-
|
|
6
|
-
from .
|
|
7
|
-
from .system_template.network_management import NmConfig
|
|
8
|
-
from .fibex.fibex_core import DcmIPdu, ISignal, NPdu, NmPdu
|
|
3
|
+
from .fibex.fibex_core.core_topology import EcuInstance, CanCluster, LinCluster
|
|
4
|
+
from .fibex.fibex_core.core_communication import ISignalGroup, ISignalIPdu, ISignalIPduGroup, SecuredIPdu, SystemSignal, DcmIPdu, ISignal, NPdu, NmPdu, SystemSignalGroup
|
|
5
|
+
from .fibex.can_communication import CanFrame
|
|
6
|
+
from .fibex.fibex_4_multiplatform import Gateway
|
|
9
7
|
from .fibex.lin_communication import LinUnconditionalFrame
|
|
10
|
-
|
|
8
|
+
|
|
9
|
+
from .m2.msr.asam_hdo.units import PhysicalDimension, Unit
|
|
10
|
+
from .m2.msr.data_dictionary.auxillary_objects import SwAddrMethod
|
|
11
|
+
from .m2.autosar_templates.common_structure import ConstantSpecification
|
|
12
|
+
from .m2.autosar_templates.common_structure.implementation_data_types import ImplementationDataType
|
|
13
|
+
from .m2.autosar_templates.ecuc_description_template import EcucModuleConfigurationValues, EcucValueCollection
|
|
14
|
+
from .m2.autosar_templates.system_template import System
|
|
15
|
+
from .m2.autosar_templates.system_template.transport_protocols import CanTpConfig
|
|
16
|
+
from .m2.autosar_templates.system_template.network_management import NmConfig
|
|
17
|
+
from .m2.autosar_templates.sw_component_template.composition import CompositionSwComponentType
|
|
18
|
+
from .m2.autosar_templates.sw_component_template.port_interface import ClientServerInterface, ModeSwitchInterface, ParameterInterface, SenderReceiverInterface, TriggerInterface
|
|
19
|
+
from .m2.autosar_templates.sw_component_template.components import SwComponentType
|
|
20
|
+
|
|
11
21
|
from .timing import SwcTiming
|
|
12
|
-
from .data_dictionary import SwAddrMethod
|
|
13
22
|
from .record_layout import SwRecordLayout
|
|
14
23
|
from .end_to_end_protection import EndToEndProtectionSet
|
|
15
|
-
from .unit import Unit
|
|
16
24
|
from .general_structure import Identifiable, ARObject, Referrable, CollectableElement, SwcBswMapping
|
|
17
|
-
|
|
18
|
-
from .sw_component import
|
|
19
|
-
from .sw_component import ServiceSwComponentType,
|
|
20
|
-
from .datatype import ApplicationArrayDataType,
|
|
25
|
+
|
|
26
|
+
from .sw_component import EcuAbstractionSwComponentType, AtomicSwComponentType, ApplicationSwComponentType
|
|
27
|
+
from .sw_component import ServiceSwComponentType, SensorActuatorSwComponentType, ComplexDeviceDriverSwComponentType
|
|
28
|
+
from .datatype import ApplicationArrayDataType, ApplicationDataType, DataTypeMappingSet, DataTypeMap, SwBaseType, ApplicationPrimitiveDataType, ApplicationRecordDataType
|
|
21
29
|
from .m2_msr import CompuMethod
|
|
22
|
-
from .common_structure import
|
|
30
|
+
from .common_structure import ModeDeclarationGroup
|
|
23
31
|
from .implementation import BswImplementation, SwcImplementation, Implementation
|
|
24
32
|
from .bsw_module_template import BswModuleDescription, BswModuleEntry
|
|
25
33
|
from .global_constraints import DataConstr
|
|
@@ -51,246 +59,324 @@ class ARPackage(Identifiable, CollectableElement):
|
|
|
51
59
|
if (short_name in self._ar_packages):
|
|
52
60
|
return self._ar_packages[short_name]
|
|
53
61
|
return CollectableElement.getElement(self, short_name)
|
|
54
|
-
|
|
62
|
+
|
|
55
63
|
def createEcuAbstractionSwComponentType(self, short_name: str) -> EcuAbstractionSwComponentType:
|
|
56
64
|
if (short_name not in self.elements):
|
|
57
65
|
sw_component = EcuAbstractionSwComponentType(self, short_name)
|
|
58
|
-
self.
|
|
59
|
-
return self.
|
|
66
|
+
self.addElement(sw_component)
|
|
67
|
+
return self.getElement(short_name)
|
|
60
68
|
|
|
61
69
|
def createApplicationSwComponentType(self, short_name: str) -> ApplicationSwComponentType:
|
|
62
70
|
if short_name not in self.elements:
|
|
63
71
|
sw_component = ApplicationSwComponentType(self, short_name)
|
|
64
|
-
self.
|
|
65
|
-
return self.
|
|
72
|
+
self.addElement(sw_component)
|
|
73
|
+
return self.getElement(short_name)
|
|
66
74
|
|
|
67
75
|
def createComplexDeviceDriverSwComponentType(self, short_name: str) -> ComplexDeviceDriverSwComponentType:
|
|
68
76
|
if short_name not in self.elements:
|
|
69
77
|
sw_component = ComplexDeviceDriverSwComponentType(self, short_name)
|
|
70
|
-
self.
|
|
71
|
-
return self.
|
|
78
|
+
self.addElement(sw_component)
|
|
79
|
+
return self.getElement(short_name)
|
|
72
80
|
|
|
73
81
|
def createServiceSwComponentType(self, short_name: str) -> ServiceSwComponentType:
|
|
74
82
|
if (short_name not in self.elements):
|
|
75
83
|
sw_component = ServiceSwComponentType(self, short_name)
|
|
76
|
-
self.
|
|
77
|
-
return self.
|
|
84
|
+
self.addElement(sw_component)
|
|
85
|
+
return self.getElement(short_name)
|
|
78
86
|
|
|
79
87
|
def createSensorActuatorSwComponentType(self, short_name: str) -> SensorActuatorSwComponentType:
|
|
80
88
|
if (short_name not in self.elements):
|
|
81
89
|
sw_component = SensorActuatorSwComponentType(self, short_name)
|
|
82
|
-
self.
|
|
83
|
-
return self.
|
|
90
|
+
self.addElement(sw_component)
|
|
91
|
+
return self.getElement(short_name)
|
|
84
92
|
|
|
85
93
|
def createCompositionSwComponentType(self, short_name: str) -> CompositionSwComponentType:
|
|
86
94
|
if (short_name not in self.elements):
|
|
87
95
|
sw_component = CompositionSwComponentType(self, short_name)
|
|
88
|
-
self.
|
|
89
|
-
return self.
|
|
96
|
+
self.addElement(sw_component)
|
|
97
|
+
return self.getElement(short_name)
|
|
90
98
|
|
|
91
99
|
def createSenderReceiverInterface(self, short_name: str) -> SenderReceiverInterface:
|
|
92
100
|
if (short_name not in self.elements):
|
|
93
101
|
sr_interface = SenderReceiverInterface(self, short_name)
|
|
94
|
-
self.
|
|
95
|
-
return self.
|
|
102
|
+
self.addElement(sr_interface)
|
|
103
|
+
return self.getElement(short_name)
|
|
104
|
+
|
|
105
|
+
def createParameterInterface(self, short_name: str) -> ParameterInterface:
|
|
106
|
+
if (short_name not in self.elements):
|
|
107
|
+
sr_interface = ParameterInterface(self, short_name)
|
|
108
|
+
self.addElement(sr_interface)
|
|
109
|
+
return self.getElement(short_name)
|
|
96
110
|
|
|
97
111
|
def createClientServerInterface(self, short_name: str) -> ClientServerInterface:
|
|
98
112
|
if (short_name not in self.elements):
|
|
99
|
-
|
|
100
|
-
self.
|
|
101
|
-
return self.
|
|
113
|
+
cs_interface = ClientServerInterface(self, short_name)
|
|
114
|
+
self.addElement(cs_interface)
|
|
115
|
+
return self.getElement(short_name)
|
|
102
116
|
|
|
103
117
|
def createApplicationPrimitiveDataType(self, short_name: str) -> ApplicationPrimitiveDataType:
|
|
104
118
|
if (short_name not in self.elements):
|
|
105
119
|
data_type = ApplicationPrimitiveDataType(self, short_name)
|
|
106
|
-
self.
|
|
107
|
-
return self.
|
|
120
|
+
self.addElement(data_type)
|
|
121
|
+
return self.getElement(short_name)
|
|
108
122
|
|
|
109
123
|
def createApplicationRecordDataType(self, short_name: str) -> ApplicationPrimitiveDataType:
|
|
110
124
|
if (short_name not in self.elements):
|
|
111
125
|
data_type = ApplicationRecordDataType(self, short_name)
|
|
112
|
-
self.
|
|
113
|
-
return self.
|
|
126
|
+
self.addElement(data_type)
|
|
127
|
+
return self.getElement(short_name)
|
|
114
128
|
|
|
115
129
|
def createImplementationDataType(self, short_name: str) -> ImplementationDataType:
|
|
116
130
|
if (short_name not in self.elements):
|
|
117
131
|
data_type = ImplementationDataType(self, short_name)
|
|
118
|
-
self.
|
|
119
|
-
return self.
|
|
132
|
+
self.addElement(data_type)
|
|
133
|
+
return self.getElement(short_name)
|
|
120
134
|
|
|
121
135
|
def createSwBaseType(self, short_name: str) -> SwBaseType:
|
|
122
136
|
if (short_name not in self.elements):
|
|
123
137
|
base_type = SwBaseType(self, short_name)
|
|
124
|
-
self.
|
|
125
|
-
return self.
|
|
138
|
+
self.addElement(base_type)
|
|
139
|
+
return self.getElement(short_name)
|
|
126
140
|
|
|
127
141
|
def createDataTypeMappingSet(self, short_name: str) -> DataTypeMappingSet:
|
|
128
142
|
if (short_name not in self.elements):
|
|
129
143
|
mapping_set = DataTypeMappingSet(self, short_name)
|
|
130
|
-
self.
|
|
131
|
-
return self.
|
|
144
|
+
self.addElement(mapping_set)
|
|
145
|
+
return self.getElement(short_name)
|
|
132
146
|
|
|
133
147
|
def createCompuMethod(self, short_name: str) -> CompuMethod:
|
|
134
148
|
if (short_name not in self.elements):
|
|
135
149
|
compu_method = CompuMethod(self, short_name)
|
|
136
|
-
self.
|
|
137
|
-
return self.
|
|
150
|
+
self.addElement(compu_method)
|
|
151
|
+
return self.getElement(short_name)
|
|
138
152
|
|
|
139
153
|
def createBswModuleDescription(self, short_name: str) -> BswModuleDescription:
|
|
140
154
|
if (short_name not in self.elements):
|
|
141
|
-
|
|
142
|
-
self.
|
|
143
|
-
return self.
|
|
155
|
+
desc = BswModuleDescription(self, short_name)
|
|
156
|
+
self.addElement(desc)
|
|
157
|
+
return self.getElement(short_name)
|
|
144
158
|
|
|
145
159
|
def createBswModuleEntry(self, short_name: str) -> BswModuleEntry:
|
|
146
160
|
if (short_name not in self.elements):
|
|
147
161
|
entry = BswModuleEntry(self, short_name)
|
|
148
|
-
self.
|
|
149
|
-
return self.
|
|
162
|
+
self.addElement(entry)
|
|
163
|
+
return self.getElement(short_name)
|
|
150
164
|
|
|
151
165
|
def createBswImplementation(self, short_name: str) -> BswImplementation:
|
|
152
166
|
if (short_name not in self.elements):
|
|
153
|
-
|
|
154
|
-
self.
|
|
155
|
-
return self.
|
|
167
|
+
impl = BswImplementation(self, short_name)
|
|
168
|
+
self.addElement(impl)
|
|
169
|
+
return self.getElement(short_name)
|
|
156
170
|
|
|
157
171
|
def createSwcImplementation(self, short_name: str) -> SwcImplementation:
|
|
158
172
|
if (short_name not in self.elements):
|
|
159
|
-
|
|
160
|
-
self.
|
|
161
|
-
return self.
|
|
173
|
+
impl = SwcImplementation(self, short_name)
|
|
174
|
+
self.addElement(impl)
|
|
175
|
+
return self.getElement(short_name)
|
|
162
176
|
|
|
163
177
|
def createSwcBswMapping(self, short_name: str) -> SwcBswMapping:
|
|
164
178
|
if (short_name not in self.elements):
|
|
165
179
|
mapping = SwcBswMapping(self, short_name)
|
|
166
|
-
self.
|
|
167
|
-
return self.
|
|
180
|
+
self.addElement(mapping)
|
|
181
|
+
return self.getElement(short_name)
|
|
168
182
|
|
|
169
183
|
def createConstantSpecification(self, short_name: str) -> ConstantSpecification:
|
|
170
184
|
if (short_name not in self.elements):
|
|
171
185
|
spec = ConstantSpecification(self, short_name)
|
|
172
|
-
self.
|
|
173
|
-
return self.
|
|
186
|
+
self.addElement(spec)
|
|
187
|
+
return self.getElement(short_name)
|
|
174
188
|
|
|
175
189
|
def createDataConstr(self, short_name: str) -> DataConstr:
|
|
176
190
|
if (short_name not in self.elements):
|
|
177
191
|
constr = DataConstr(self, short_name)
|
|
178
|
-
self.
|
|
179
|
-
return self.
|
|
192
|
+
self.addElement(constr)
|
|
193
|
+
return self.getElement(short_name)
|
|
180
194
|
|
|
181
195
|
def createUnit(self, short_name: str) -> Unit:
|
|
182
196
|
if (short_name not in self.elements):
|
|
183
197
|
unit = Unit(self, short_name)
|
|
184
|
-
self.
|
|
185
|
-
return self.
|
|
198
|
+
self.addElement(unit)
|
|
199
|
+
return self.getElement(short_name)
|
|
186
200
|
|
|
187
201
|
def createEndToEndProtectionSet(self, short_name: str) -> EndToEndProtectionSet:
|
|
188
202
|
if (short_name not in self.elements):
|
|
189
|
-
|
|
190
|
-
self.
|
|
191
|
-
return self.
|
|
203
|
+
e2d_set = EndToEndProtectionSet(self, short_name)
|
|
204
|
+
self.addElement(e2d_set)
|
|
205
|
+
return self.getElement(short_name)
|
|
192
206
|
|
|
193
207
|
def createApplicationArrayDataType(self, short_name: str) -> ApplicationArrayDataType:
|
|
194
208
|
if (short_name not in self.elements):
|
|
195
209
|
data_type = ApplicationArrayDataType(self, short_name)
|
|
196
|
-
self.
|
|
197
|
-
return self.
|
|
210
|
+
self.addElement(data_type)
|
|
211
|
+
return self.getElement(short_name)
|
|
198
212
|
|
|
199
213
|
def createSwRecordLayout(self, short_name: str) -> SwRecordLayout:
|
|
200
214
|
if (short_name not in self.elements):
|
|
201
215
|
layout = SwRecordLayout(self, short_name)
|
|
202
|
-
self.
|
|
203
|
-
return self.
|
|
216
|
+
self.addElement(layout)
|
|
217
|
+
return self.getElement(short_name)
|
|
204
218
|
|
|
205
219
|
def createSwAddrMethod(self, short_name: str) -> SwAddrMethod:
|
|
206
220
|
if (short_name not in self.elements):
|
|
207
221
|
method = SwAddrMethod(self, short_name)
|
|
208
|
-
self.
|
|
209
|
-
return self.
|
|
222
|
+
self.addElement(method)
|
|
223
|
+
return self.getElement(short_name)
|
|
210
224
|
|
|
211
225
|
def createTriggerInterface(self, short_name: str) -> TriggerInterface:
|
|
212
226
|
if (short_name not in self.elements):
|
|
213
227
|
trigger_interface = TriggerInterface(self, short_name)
|
|
214
|
-
self.
|
|
215
|
-
return
|
|
228
|
+
self.addElement(trigger_interface)
|
|
229
|
+
return trigger_interface
|
|
216
230
|
|
|
217
231
|
def createModeDeclarationGroup(self, short_name: str) -> ModeDeclarationGroup:
|
|
218
232
|
if (short_name not in self.elements):
|
|
219
233
|
group = ModeDeclarationGroup(self, short_name)
|
|
220
|
-
self.
|
|
221
|
-
return self.
|
|
234
|
+
self.addElement(group)
|
|
235
|
+
return self.getElement(short_name)
|
|
222
236
|
|
|
223
237
|
def createModeSwitchInterface(self, short_name: str) -> ModeSwitchInterface:
|
|
224
238
|
if (short_name not in self.elements):
|
|
225
239
|
switch_interface = ModeSwitchInterface(self, short_name)
|
|
226
|
-
self.
|
|
227
|
-
return self.
|
|
240
|
+
self.addElement(switch_interface)
|
|
241
|
+
return self.getElement(short_name)
|
|
228
242
|
|
|
229
243
|
def createSwcTiming(self, short_name: str) -> SwcTiming:
|
|
230
244
|
if (short_name not in self.elements):
|
|
231
245
|
timing = SwcTiming(self, short_name)
|
|
232
|
-
self.
|
|
233
|
-
return self.
|
|
246
|
+
self.addElement(timing)
|
|
247
|
+
return self.getElement(short_name)
|
|
234
248
|
|
|
235
249
|
def createLinCluster(self, short_name: str) -> LinCluster:
|
|
236
250
|
if (short_name not in self.elements):
|
|
237
251
|
cluster = LinCluster(self, short_name)
|
|
238
|
-
self.
|
|
239
|
-
return self.
|
|
252
|
+
self.addElement(cluster)
|
|
253
|
+
return self.getElement(short_name)
|
|
254
|
+
|
|
255
|
+
def createCanCluster(self, short_name: str) -> CanCluster:
|
|
256
|
+
if (short_name not in self.elements):
|
|
257
|
+
cluster = CanCluster(self, short_name)
|
|
258
|
+
self.addElement(cluster)
|
|
259
|
+
return self.getElement(short_name)
|
|
240
260
|
|
|
241
261
|
def createLinUnconditionalFrame(self, short_name: str) -> LinUnconditionalFrame:
|
|
242
262
|
if (short_name not in self.elements):
|
|
243
263
|
frame = LinUnconditionalFrame(self, short_name)
|
|
244
|
-
self.
|
|
245
|
-
return self.
|
|
264
|
+
self.addElement(frame)
|
|
265
|
+
return self.getElement(short_name)
|
|
246
266
|
|
|
247
267
|
def createNmPdu(self, short_name: str) -> NmPdu:
|
|
248
268
|
if (short_name not in self.elements):
|
|
249
|
-
|
|
250
|
-
self.
|
|
251
|
-
return self.
|
|
269
|
+
element = NmPdu(self, short_name)
|
|
270
|
+
self.addElement(element)
|
|
271
|
+
return self.getElement(short_name)
|
|
252
272
|
|
|
253
273
|
def createNPdu(self, short_name: str) -> NPdu:
|
|
254
274
|
if (short_name not in self.elements):
|
|
255
|
-
|
|
256
|
-
self.
|
|
257
|
-
return self.
|
|
275
|
+
element = NPdu(self, short_name)
|
|
276
|
+
self.addElement(element)
|
|
277
|
+
return self.getElement(short_name)
|
|
258
278
|
|
|
259
279
|
def createDcmIPdu(self, short_name: str) -> DcmIPdu:
|
|
260
280
|
if (short_name not in self.elements):
|
|
261
|
-
|
|
262
|
-
self.
|
|
263
|
-
return self.
|
|
281
|
+
element = DcmIPdu(self, short_name)
|
|
282
|
+
self.addElement(element)
|
|
283
|
+
return self.getElement(short_name)
|
|
284
|
+
|
|
285
|
+
def createSecuredIPdu(self, short_name: str) -> SecuredIPdu:
|
|
286
|
+
if (short_name not in self.elements):
|
|
287
|
+
element = SecuredIPdu(self, short_name)
|
|
288
|
+
self.addElement(element)
|
|
289
|
+
return self.getElement(short_name)
|
|
264
290
|
|
|
265
291
|
def createNmConfig(self, short_name: str) -> NmConfig:
|
|
266
292
|
if (short_name not in self.elements):
|
|
267
|
-
|
|
268
|
-
self.
|
|
269
|
-
return self.
|
|
293
|
+
element = NmConfig(self, short_name)
|
|
294
|
+
self.addElement(element)
|
|
295
|
+
return self.getElement(short_name)
|
|
270
296
|
|
|
271
297
|
def createCanTpConfig(self, short_name: str) -> CanTpConfig:
|
|
272
298
|
if (short_name not in self.elements):
|
|
273
|
-
|
|
274
|
-
self.
|
|
275
|
-
return self.
|
|
299
|
+
element = CanTpConfig(self, short_name)
|
|
300
|
+
self.addElement(element)
|
|
301
|
+
return self.getElement(short_name)
|
|
276
302
|
|
|
277
303
|
def createCanFrame(self, short_name: str) -> CanFrame:
|
|
278
304
|
if (short_name not in self.elements):
|
|
279
|
-
|
|
280
|
-
self.
|
|
281
|
-
return self.
|
|
305
|
+
element = CanFrame(self, short_name)
|
|
306
|
+
self.addElement(element)
|
|
307
|
+
return self.getElement(short_name)
|
|
308
|
+
|
|
309
|
+
def createEcuInstance(self, short_name: str) -> EcuInstance:
|
|
310
|
+
if (short_name not in self.elements):
|
|
311
|
+
element = EcuInstance(self, short_name)
|
|
312
|
+
self.addElement(element)
|
|
313
|
+
return self.getElement(short_name)
|
|
282
314
|
|
|
283
315
|
def createGateway(self, short_name: str) -> Gateway:
|
|
284
316
|
if (short_name not in self.elements):
|
|
285
|
-
|
|
286
|
-
self.
|
|
287
|
-
return self.
|
|
317
|
+
element = Gateway(self, short_name)
|
|
318
|
+
self.addElement(element)
|
|
319
|
+
return self.getElement(short_name)
|
|
288
320
|
|
|
289
321
|
def createISignal(self, short_name: str) -> ISignal:
|
|
290
322
|
if (short_name not in self.elements):
|
|
291
|
-
|
|
292
|
-
self.
|
|
293
|
-
return self.
|
|
323
|
+
element = ISignal(self, short_name)
|
|
324
|
+
self.addElement(element)
|
|
325
|
+
return self.getElement(short_name)
|
|
326
|
+
|
|
327
|
+
def createSystemSignal(self, short_name: str) -> SystemSignal:
|
|
328
|
+
if (short_name not in self.elements):
|
|
329
|
+
element = SystemSignal(self, short_name)
|
|
330
|
+
self.addElement(element)
|
|
331
|
+
return self.getElement(short_name)
|
|
332
|
+
|
|
333
|
+
def createSystemSignalGroup(self, short_name: str) -> SystemSignalGroup:
|
|
334
|
+
if (short_name not in self.elements):
|
|
335
|
+
element = SystemSignalGroup(self, short_name)
|
|
336
|
+
self.addElement(element)
|
|
337
|
+
return self.getElement(short_name)
|
|
338
|
+
|
|
339
|
+
def createISignalIPdu(self, short_name: str) -> ISignalIPdu:
|
|
340
|
+
if (short_name not in self.elements):
|
|
341
|
+
element = ISignalIPdu(self, short_name)
|
|
342
|
+
self.addElement(element)
|
|
343
|
+
return self.getElement(short_name)
|
|
344
|
+
|
|
345
|
+
def createEcucValueCollection(self, short_name: str) -> EcucValueCollection:
|
|
346
|
+
if (short_name not in self.elements):
|
|
347
|
+
element = EcucValueCollection(self, short_name)
|
|
348
|
+
self.addElement(element)
|
|
349
|
+
return self.getElement(short_name)
|
|
350
|
+
|
|
351
|
+
def createEcucModuleConfigurationValues(self, short_name: str) -> EcucModuleConfigurationValues:
|
|
352
|
+
if (short_name not in self.elements):
|
|
353
|
+
element = EcucModuleConfigurationValues(self, short_name)
|
|
354
|
+
self.addElement(element)
|
|
355
|
+
return self.getElement(short_name)
|
|
356
|
+
|
|
357
|
+
def createPhysicalDimension(self, short_name: str) -> PhysicalDimension:
|
|
358
|
+
if (short_name not in self.elements):
|
|
359
|
+
element = PhysicalDimension(self, short_name)
|
|
360
|
+
self.addElement(element)
|
|
361
|
+
return self.getElement(short_name)
|
|
362
|
+
|
|
363
|
+
def createISignalGroup(self, short_name: str) -> ISignalGroup:
|
|
364
|
+
if (short_name not in self.elements):
|
|
365
|
+
element = ISignalGroup(self, short_name)
|
|
366
|
+
self.addElement(element)
|
|
367
|
+
return self.getElement(short_name)
|
|
368
|
+
|
|
369
|
+
def createISignalIPduGroup(self, short_name: str) -> ISignalIPduGroup:
|
|
370
|
+
if (short_name not in self.elements):
|
|
371
|
+
element = ISignalIPduGroup(self, short_name)
|
|
372
|
+
self.addElement(element)
|
|
373
|
+
return self.getElement(short_name)
|
|
374
|
+
|
|
375
|
+
def createSystem(self, short_name: str) -> System:
|
|
376
|
+
if (short_name not in self.elements):
|
|
377
|
+
element = System(self, short_name)
|
|
378
|
+
self.addElement(element)
|
|
379
|
+
return self.getElement(short_name)
|
|
294
380
|
|
|
295
381
|
def getApplicationPrimitiveDataTypes(self) -> List[ApplicationPrimitiveDataType]:
|
|
296
382
|
return list(sorted(filter(lambda a: isinstance(a, ApplicationPrimitiveDataType), self.elements.values()), key= lambda o:o.short_name))
|
|
@@ -320,13 +406,16 @@ class ARPackage(Identifiable, CollectableElement):
|
|
|
320
406
|
return list(sorted(filter(lambda a : isinstance(a, ComplexDeviceDriverSwComponentType), self.elements.values()), key = lambda a: a.short_name))
|
|
321
407
|
|
|
322
408
|
def getSenderReceiverInterfaces(self) -> List[SenderReceiverInterface]:
|
|
323
|
-
return list(filter(lambda a : isinstance(a, SenderReceiverInterface), self.elements.values()))
|
|
409
|
+
return list(sorted(filter(lambda a : isinstance(a, SenderReceiverInterface), self.elements.values()), key = lambda a: a.short_name))
|
|
410
|
+
|
|
411
|
+
def getParameterInterfaces(self) -> List[ParameterInterface]:
|
|
412
|
+
return list(sorted(filter(lambda a : isinstance(a, ParameterInterface), self.elements.values()), key = lambda a: a.short_name))
|
|
324
413
|
|
|
325
414
|
def getClientServerInterfaces(self) -> List[ClientServerInterface]:
|
|
326
|
-
return list(filter(lambda a : isinstance(a, ClientServerInterface), self.elements.values()))
|
|
415
|
+
return list(sorted(filter(lambda a : isinstance(a, ClientServerInterface), self.elements.values()), key = lambda a: a.short_name))
|
|
327
416
|
|
|
328
417
|
def getDataTypeMappingSets(self) -> List[DataTypeMappingSet]:
|
|
329
|
-
return list(filter(lambda a: isinstance(a, DataTypeMappingSet), self.elements.values()))
|
|
418
|
+
return list(sorted(filter(lambda a : isinstance(a, DataTypeMappingSet), self.elements.values()), key = lambda a: a.short_name))
|
|
330
419
|
|
|
331
420
|
def getCompuMethods(self) -> List[CompuMethod]:
|
|
332
421
|
return list(filter(lambda a: isinstance(a, CompuMethod), self.elements.values()))
|
|
@@ -382,6 +471,9 @@ class ARPackage(Identifiable, CollectableElement):
|
|
|
382
471
|
def getLinClusters(self) -> List[LinCluster]:
|
|
383
472
|
return list(sorted(filter(lambda a : isinstance(a, LinCluster), self.elements.values()), key = lambda a: a.short_name))
|
|
384
473
|
|
|
474
|
+
def getCanClusters(self) -> List[CanCluster]:
|
|
475
|
+
return list(sorted(filter(lambda a : isinstance(a, CanCluster), self.elements.values()), key = lambda a: a.short_name))
|
|
476
|
+
|
|
385
477
|
def getLinUnconditionalFrames(self) -> List[LinUnconditionalFrame]:
|
|
386
478
|
return list(sorted(filter(lambda a : isinstance(a, LinUnconditionalFrame), self.elements.values()), key = lambda a: a.short_name))
|
|
387
479
|
|
|
@@ -394,6 +486,9 @@ class ARPackage(Identifiable, CollectableElement):
|
|
|
394
486
|
def getDcmIPdus(self) -> List[DcmIPdu]:
|
|
395
487
|
return list(sorted(filter(lambda a : isinstance(a, DcmIPdu), self.elements.values()), key = lambda a: a.short_name))
|
|
396
488
|
|
|
489
|
+
def getSecuredIPdus(self) -> List[SecuredIPdu]:
|
|
490
|
+
return list(sorted(filter(lambda a : isinstance(a, SecuredIPdu), self.elements.values()), key = lambda a: a.short_name))
|
|
491
|
+
|
|
397
492
|
def getNmConfigs(self) -> List[NmConfig]:
|
|
398
493
|
return list(sorted(filter(lambda a : isinstance(a, NmConfig), self.elements.values()), key = lambda a: a.short_name))
|
|
399
494
|
|
|
@@ -403,32 +498,55 @@ class ARPackage(Identifiable, CollectableElement):
|
|
|
403
498
|
def getCanFrames(self) -> List[CanFrame]:
|
|
404
499
|
return list(sorted(filter(lambda a : isinstance(a, CanFrame), self.elements.values()), key = lambda a: a.short_name))
|
|
405
500
|
|
|
501
|
+
def getEcuInstances(self) -> List[EcuInstance]:
|
|
502
|
+
return list(sorted(filter(lambda a : isinstance(a, EcuInstance), self.elements.values()), key = lambda a: a.short_name))
|
|
503
|
+
|
|
406
504
|
def getGateways(self) -> List[Gateway]:
|
|
407
505
|
return list(sorted(filter(lambda a : isinstance(a, Gateway), self.elements.values()), key = lambda a: a.short_name))
|
|
408
506
|
|
|
409
507
|
def getISignals(self) -> List[ISignal]:
|
|
410
508
|
return list(sorted(filter(lambda a : isinstance(a, ISignal), self.elements.values()), key = lambda a: a.short_name))
|
|
411
509
|
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
return
|
|
420
|
-
|
|
510
|
+
def getEcucValueCollections(self) -> List[EcucValueCollection]:
|
|
511
|
+
return list(sorted(filter(lambda a : isinstance(a, EcucValueCollection), self.elements.values()), key = lambda a: a.short_name))
|
|
512
|
+
|
|
513
|
+
def getEcucModuleConfigurationValues(self) -> List[EcucModuleConfigurationValues]:
|
|
514
|
+
return list(sorted(filter(lambda a : isinstance(a, EcucModuleConfigurationValues), self.elements.values()), key = lambda a: a.short_name))
|
|
515
|
+
|
|
516
|
+
def getEcucModuleConfigurationValues(self) -> List[PhysicalDimension]:
|
|
517
|
+
return list(sorted(filter(lambda a : isinstance(a, PhysicalDimension), self.elements.values()), key = lambda a: a.short_name))
|
|
518
|
+
|
|
519
|
+
def getISignalGroups(self) -> List[ISignalGroup]:
|
|
520
|
+
return list(sorted(filter(lambda a : isinstance(a, ISignalGroup), self.elements.values()), key = lambda a: a.short_name))
|
|
521
|
+
|
|
522
|
+
def getSystemSignals(self) -> List[SystemSignal]:
|
|
523
|
+
return list(sorted(filter(lambda a : isinstance(a, SystemSignal), self.elements.values()), key = lambda a: a.short_name))
|
|
524
|
+
|
|
525
|
+
def getSystemSignalGroups(self) -> List[SystemSignalGroup]:
|
|
526
|
+
return list(sorted(filter(lambda a : isinstance(a, SystemSignalGroup), self.elements.values()), key = lambda a: a.short_name))
|
|
527
|
+
|
|
528
|
+
def getISignalIPdus(self) -> List[ISignalIPdu]:
|
|
529
|
+
return list(sorted(filter(lambda a : isinstance(a, ISignalIPdu), self.elements.values()), key = lambda a: a.short_name))
|
|
530
|
+
|
|
531
|
+
def getSystems(self) -> List[System]:
|
|
532
|
+
return list(sorted(filter(lambda a : isinstance(a, System), self.elements.values()), key = lambda a: a.short_name))
|
|
533
|
+
|
|
534
|
+
class AbstractAUTOSAR(CollectableElement):
|
|
421
535
|
def __init__(self):
|
|
422
|
-
|
|
423
|
-
|
|
536
|
+
super().__init__()
|
|
537
|
+
|
|
424
538
|
CollectableElement.__init__(self)
|
|
425
539
|
|
|
426
540
|
self.schema_location = ""
|
|
427
541
|
self._appl_impl_type_maps = {}
|
|
428
542
|
self._impl_appl_type_maps = {}
|
|
429
|
-
|
|
543
|
+
|
|
430
544
|
|
|
431
|
-
self._ar_packages = {}
|
|
545
|
+
self._ar_packages = {} # type: Dict[str, ARPackage]
|
|
546
|
+
self.short_name_mappings = {} # type: Dict[str, str]
|
|
547
|
+
|
|
548
|
+
def reload(self):
|
|
549
|
+
pass
|
|
432
550
|
|
|
433
551
|
@property
|
|
434
552
|
def full_name(self):
|
|
@@ -464,15 +582,18 @@ class AUTOSAR (CollectableElement):
|
|
|
464
582
|
return element
|
|
465
583
|
# raise ValueError("The %s of reference <%s> does not exist." % (short_name, referred_name))
|
|
466
584
|
return element
|
|
585
|
+
|
|
586
|
+
def findByShortName(self, short_name: str) -> Referrable:
|
|
587
|
+
pass
|
|
467
588
|
|
|
468
589
|
def getDataType(self, data_type: ImplementationDataType) -> ImplementationDataType:
|
|
469
590
|
if (isinstance(data_type, ImplementationDataType) or isinstance(data_type, SwBaseType)):
|
|
470
591
|
if (data_type.category == ImplementationDataType.CATEGORY_TYPE_REFERENCE):
|
|
471
|
-
referred_type = self.find(data_type.
|
|
592
|
+
referred_type = self.find(data_type.swDataDefProps.implementationDataTypeRef.value)
|
|
472
593
|
return self.getDataType(referred_type)
|
|
473
594
|
if (data_type.category == ImplementationDataType.CATEGORY_DATA_REFERENCE):
|
|
474
|
-
if (data_type.
|
|
475
|
-
referred_type = self.find(data_type.
|
|
595
|
+
if (data_type.swDataDefProps.swPointerTargetProps.target_category == "VALUE"):
|
|
596
|
+
referred_type = self.find(data_type.swDataDefProps.swPointerTargetProps.sw_data_def_props.baseTypeRef.value)
|
|
476
597
|
return self.getDataType(referred_type)
|
|
477
598
|
return data_type
|
|
478
599
|
else:
|
|
@@ -495,3 +616,26 @@ class AUTOSAR (CollectableElement):
|
|
|
495
616
|
raise IndexError("Invalid Implementation data type <%s>" % impl_data_type)
|
|
496
617
|
|
|
497
618
|
return self.find(self._impl_appl_type_maps[impl_data_type])
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
class AUTOSAR (AbstractAUTOSAR):
|
|
622
|
+
__instance = None
|
|
623
|
+
|
|
624
|
+
@staticmethod
|
|
625
|
+
def getInstance():
|
|
626
|
+
if (AUTOSAR.__instance == None):
|
|
627
|
+
AUTOSAR()
|
|
628
|
+
return AUTOSAR.__instance
|
|
629
|
+
|
|
630
|
+
def __init__(self):
|
|
631
|
+
if (AUTOSAR.__instance != None):
|
|
632
|
+
raise Exception("The AUTOSAR is singleton!")
|
|
633
|
+
|
|
634
|
+
AUTOSAR.__instance = self
|
|
635
|
+
|
|
636
|
+
super().__init__()
|
|
637
|
+
|
|
638
|
+
class AUTOSARDoc(AbstractAUTOSAR):
|
|
639
|
+
def __init__(self):
|
|
640
|
+
super().__init__()
|
|
641
|
+
|