armodel 1.7.6__py3-none-any.whl → 1.7.8__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 +33 -22
- armodel/cli/arxml_format_cli.py +25 -13
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +95 -21
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +359 -59
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +134 -35
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +17 -7
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +10 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +18 -2
- armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +20 -19
- armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/HwElementCategory.py +59 -0
- armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py +145 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +215 -157
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +69 -35
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +17 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +19 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +113 -39
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +3 -2
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py +41 -16
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +10 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +13 -6
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +111 -38
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py +9 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +5 -4
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +26 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +28 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DoIp.py +29 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/EcuResourceMapping.py +45 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +31 -21
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +5 -3
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +9 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayCommunication.py +76 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayTopology.py +654 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/__init__.py +0 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +539 -77
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +28 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +245 -130
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +27 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/TransportProtocols.py +592 -17
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +33 -21
- armodel/models/M2/MSR/AsamHdo/AdminData.py +1 -2
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +3 -1
- armodel/models/M2/MSR/AsamHdo/SpecialData.py +35 -8
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +0 -3
- armodel/models/__init__.py +8 -0
- armodel/parser/abstract_arxml_parser.py +34 -27
- armodel/parser/arxml_parser.py +1778 -616
- armodel/parser/file_parser.py +5 -3
- armodel/tests/test_armodel/models/test_ar_package.py +6 -11
- armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -3
- armodel/tests/test_armodel/models/test_datatype.py +1 -1
- armodel/tests/test_armodel/models/test_port_interface.py +116 -117
- armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +218 -0
- armodel/tests/test_armodel/parser/test_sw_components.py +54 -22
- armodel/tests/test_armodel/parser/test_system.py +2 -8
- armodel/transformer/__init__.py +0 -0
- armodel/transformer/abstract.py +6 -0
- armodel/transformer/admin_data.py +31 -0
- armodel/writer/abstract_arxml_writer.py +27 -33
- armodel/writer/arxml_writer.py +1875 -599
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/METADATA +81 -3
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/RECORD +69 -56
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/LICENSE +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/WHEEL +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.6.dist-info → armodel-1.7.8.dist-info}/top_level.txt +0 -0
armodel/cli/arxml_dump_cli.py
CHANGED
|
@@ -15,15 +15,17 @@ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPack
|
|
|
15
15
|
from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
|
|
16
16
|
from ..parser import ARXMLParser
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
|
|
19
|
+
def show_variable_access(indent: int, variable_access: VariableAccess):
|
|
20
|
+
if (variable_access.getAccessedVariableRef() is not None):
|
|
20
21
|
accessed_variable_ref = variable_access.getAccessedVariableRef()
|
|
21
|
-
if (accessed_variable_ref.getAutosarVariableInImplDatatype()
|
|
22
|
+
if (accessed_variable_ref.getAutosarVariableInImplDatatype() is not None):
|
|
22
23
|
autosar_variable_in_impl_datatype = accessed_variable_ref.getAutosarVariableInImplDatatype()
|
|
23
24
|
print("%s: %s" % (" " * indent, autosar_variable_in_impl_datatype.getPortPrototypeRef().getValue()))
|
|
24
25
|
print("%s: %s" % (" " * indent, autosar_variable_in_impl_datatype.getTargetDataPrototypeRef().getValue()))
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
|
|
28
|
+
def show_port(indent: int, port_prototype: PortPrototype):
|
|
27
29
|
if (isinstance(port_prototype, RPortPrototype)):
|
|
28
30
|
print("%s-RPort: %s (%s)" % (" " * indent, port_prototype.short_name, port_prototype.getRequiredInterfaceTRef().getValue()))
|
|
29
31
|
for client_com_spec in port_prototype.getClientComSpecs():
|
|
@@ -37,25 +39,28 @@ def show_port(indent:int, port_prototype: PortPrototype):
|
|
|
37
39
|
else:
|
|
38
40
|
raise ValueError("Unsupported Port prototype")
|
|
39
41
|
|
|
42
|
+
|
|
40
43
|
def show_type(indent: int, data_type: ImplementationDataType):
|
|
41
44
|
print("%s-Implementation Type: %s (%s)" % (" " * indent, data_type.short_name, data_type.parent.full_name))
|
|
42
45
|
print("%s : %s" % (" " * indent, data_type.getCategory()))
|
|
43
|
-
if (data_type.getSwDataDefProps()
|
|
44
|
-
if (data_type.getSwDataDefProps().getBaseTypeRef()
|
|
46
|
+
if (data_type.getSwDataDefProps() is not None):
|
|
47
|
+
if (data_type.getSwDataDefProps().getBaseTypeRef() is not None):
|
|
45
48
|
base_type_ref = data_type.getSwDataDefProps().getBaseTypeRef()
|
|
46
49
|
print("%s : %s (%s)" % (" " * indent, base_type_ref.getValue(), base_type_ref.getDest()))
|
|
47
50
|
|
|
48
|
-
if (data_type.getSwDataDefProps().getImplementationDataTypeRef()
|
|
51
|
+
if (data_type.getSwDataDefProps().getImplementationDataTypeRef() is not None):
|
|
49
52
|
implementation_data_type_ref = data_type.getSwDataDefProps().getImplementationDataTypeRef()
|
|
50
53
|
print("%s : %s (%s)" % (" " * indent, implementation_data_type_ref.getValue(), implementation_data_type_ref.getDest()))
|
|
51
54
|
|
|
55
|
+
|
|
52
56
|
def show_data_type_mapping(indent: int, mapping_set: DataTypeMappingSet):
|
|
53
57
|
print("%s- Data Mapping Set <%s>:" % (" " * indent, mapping_set.short_name))
|
|
54
58
|
for mapping in mapping_set.getDataTypeMaps():
|
|
55
59
|
print("%s- appl: %s" % (" " * (indent + 2), mapping.applicationDataTypeRef.value))
|
|
56
60
|
print("%s- impl: %s" % (" " * (indent + 4), mapping.implementationDataTypeRef.value))
|
|
57
61
|
|
|
58
|
-
|
|
62
|
+
|
|
63
|
+
def show_behavior(indent: int, behavior: SwcInternalBehavior):
|
|
59
64
|
print("%s-Behavior: %s" % (" " * indent, behavior.short_name))
|
|
60
65
|
for runnable in behavior.getRunnableEntities():
|
|
61
66
|
print("%s-Runnable: %s" % (" " * (indent + 2), runnable.short_name))
|
|
@@ -68,7 +73,7 @@ def show_behavior(indent:int, behavior: SwcInternalBehavior):
|
|
|
68
73
|
show_variable_access(indent + 9, variable_access)
|
|
69
74
|
for server_call_point in runnable.getServerCallPoints():
|
|
70
75
|
print("%s-scp : %s" % (" " * (indent + 4), variable_access.short_name))
|
|
71
|
-
if (server_call_point.operation_iref
|
|
76
|
+
if (server_call_point.operation_iref is not None):
|
|
72
77
|
print("%s: %s" % (" " * (indent + 9), server_call_point.getOperationIRef().getContextRPortRef().getValue()))
|
|
73
78
|
print("%s: %s" % (" " * (indent + 9), server_call_point.getOperationIRef().getTargetRequiredOperationRef().getValue()))
|
|
74
79
|
for event in behavior.getOperationInvokedEvents():
|
|
@@ -79,26 +84,29 @@ def show_behavior(indent:int, behavior: SwcInternalBehavior):
|
|
|
79
84
|
print(" - TimingEvent : %s (%d ms)" % (event.short_name, event.period_ms))
|
|
80
85
|
print(" : %s" % (event.start_on_event_ref.value))
|
|
81
86
|
|
|
87
|
+
|
|
82
88
|
def show_sw_component(indent: int, sw_component: SwComponentType):
|
|
83
89
|
print("%s%s" % (" " * indent, sw_component.short_name))
|
|
84
90
|
for prototype in sw_component.getRPortPrototypes():
|
|
85
91
|
show_port(indent + 2, prototype)
|
|
86
92
|
for prototype in sw_component.getPPortPrototypes():
|
|
87
93
|
show_port(indent + 2, prototype)
|
|
88
|
-
show_behavior(indent + 2, sw_component.internal_behavior)
|
|
94
|
+
show_behavior(indent + 2, sw_component.internal_behavior)
|
|
95
|
+
|
|
89
96
|
|
|
90
97
|
def show_sender_receiver_interface(indent: int, sr_interface: SenderReceiverInterface):
|
|
91
98
|
print("%s%s" % (" " * indent, sr_interface.short_name))
|
|
92
99
|
for data_element in sr_interface.getDataElements():
|
|
93
100
|
print("%sData Element:%s (%s) " % (" " * (indent + 2), data_element.short_name, data_element.getTypeTRef().getValue()))
|
|
94
101
|
|
|
102
|
+
|
|
95
103
|
def show_client_server_interface(indent: int, cs_interface: ClientServerInterface):
|
|
96
104
|
print("%s%s" % (" " * indent, cs_interface.short_name))
|
|
97
105
|
for operation in cs_interface.getOperations():
|
|
98
106
|
print("%sOperation:%s" % (" " * (indent + 2), operation.short_name))
|
|
99
107
|
for argument in operation.getArgumentDataPrototypes():
|
|
100
|
-
print("%s :%s (%s: %s)" % (" " * (indent + 2), argument.short_name,
|
|
101
|
-
|
|
108
|
+
print("%s :%s (%s: %s)" % (" " * (indent + 2), argument.short_name, argument.direction, argument.typeTRef.value))
|
|
109
|
+
|
|
102
110
|
|
|
103
111
|
def show_bsw_internal_behavior(indent: int, behavior: BswInternalBehavior):
|
|
104
112
|
document = AUTOSAR.getInstance()
|
|
@@ -111,31 +119,33 @@ def show_bsw_internal_behavior(indent: int, behavior: BswInternalBehavior):
|
|
|
111
119
|
for event in behavior.getBswTimingEvents():
|
|
112
120
|
print("%s-%s" % (" " * (indent + 2), event.short_name))
|
|
113
121
|
print("%s-%s: %s" % (" " * (indent + 4), "StartsOnEventRef", event.startsOnEventRef.value))
|
|
114
|
-
starts_on_event = document.find(event.startsOnEventRef.value)
|
|
122
|
+
starts_on_event = document.find(event.startsOnEventRef.value) # type: BswModuleEntity
|
|
115
123
|
print("%s-%s: %s" % (" " * (indent + 4), "StartsOnEvent", starts_on_event.short_name))
|
|
116
124
|
print("%s-%s: %s" % (" " * (indent + 4), "ImplementedEntryRef", starts_on_event.implementedEntryRef.value))
|
|
117
|
-
implemented_entry = document.find(starts_on_event.implementedEntryRef.value)
|
|
125
|
+
implemented_entry = document.find(starts_on_event.implementedEntryRef.value) # type: BswModuleEntry
|
|
118
126
|
print("%s-%s: %s" % (" " * (indent + 4), "ImplementedEntry", implemented_entry.short_name))
|
|
119
127
|
print("%s-%s: %d" % (" " * (indent + 6), "Service Id", implemented_entry.serviceId))
|
|
120
128
|
|
|
129
|
+
|
|
121
130
|
def show_bsw_module_description(indent: int, description: BswModuleDescription):
|
|
122
131
|
print("%s-%s" % (" " * indent, description.short_name))
|
|
123
132
|
|
|
124
133
|
for behavior in description.getBswInternalBehaviors():
|
|
125
134
|
show_bsw_internal_behavior(indent + 2, behavior)
|
|
126
135
|
|
|
136
|
+
|
|
127
137
|
def show_ar_package(indent: int, ar_package: ARPackage):
|
|
128
138
|
print("%s-%s (Pkg)" % (" " * indent, ar_package.short_name))
|
|
129
139
|
|
|
130
140
|
for sub_package in ar_package.getARPackages():
|
|
131
141
|
show_ar_package(indent + 2, sub_package)
|
|
132
|
-
#for data_type in ar_package.getImplementationDataTypes():
|
|
142
|
+
# for data_type in ar_package.getImplementationDataTypes():
|
|
133
143
|
# show_type(indent + 2, data_type)
|
|
134
|
-
#for mapping_set in ar_package.getDataTypeMappingSets():
|
|
144
|
+
# for mapping_set in ar_package.getDataTypeMappingSets():
|
|
135
145
|
# show_data_type_mapping(indent + 2, mapping_set)
|
|
136
|
-
#for sw_component in ar_package.getAtomicSwComponents():
|
|
146
|
+
# for sw_component in ar_package.getAtomicSwComponents():
|
|
137
147
|
# show_sw_component(indent + 2, sw_component)
|
|
138
|
-
#for sr_interface in ar_package.getSenderReceiverInterfaces():
|
|
148
|
+
# for sr_interface in ar_package.getSenderReceiverInterfaces():
|
|
139
149
|
# show_sender_receiver_interface(indent + 2, sr_interface)
|
|
140
150
|
for cs_interface in ar_package.getClientServerInterfaces():
|
|
141
151
|
show_client_server_interface(indent + 2, cs_interface)
|
|
@@ -152,6 +162,7 @@ def _usage():
|
|
|
152
162
|
print(" -h : show the help information")
|
|
153
163
|
sys.exit(2)
|
|
154
164
|
|
|
165
|
+
|
|
155
166
|
def cli_main():
|
|
156
167
|
try:
|
|
157
168
|
opts, _ = getopt.getopt(sys.argv[1:], "h", ["arxml=", "help"])
|
|
@@ -160,7 +171,7 @@ def cli_main():
|
|
|
160
171
|
print(str(err)) # will print something like "option -a not recognized"
|
|
161
172
|
_usage()
|
|
162
173
|
|
|
163
|
-
logging.basicConfig(format='[%(levelname)s] : %(message)s', level
|
|
174
|
+
logging.basicConfig(format='[%(levelname)s] : %(message)s', level=logging.DEBUG)
|
|
164
175
|
|
|
165
176
|
arxml_files = []
|
|
166
177
|
for o, arg in opts:
|
|
@@ -180,7 +191,7 @@ def cli_main():
|
|
|
180
191
|
for arxml_file in arxml_files:
|
|
181
192
|
parser.load(arxml_file, document)
|
|
182
193
|
|
|
183
|
-
#obj = AUTOSAR.getInstance().find("/AUTOSAR_Platform/ImplementationDataTypes/uint8")
|
|
184
|
-
#print(obj)
|
|
194
|
+
# obj = AUTOSAR.getInstance().find("/AUTOSAR_Platform/ImplementationDataTypes/uint8")
|
|
195
|
+
# print(obj)
|
|
185
196
|
for pkg in document.getARPackages():
|
|
186
|
-
show_ar_package(0, pkg)
|
|
197
|
+
show_ar_package(0, pkg)
|
armodel/cli/arxml_format_cli.py
CHANGED
|
@@ -4,10 +4,12 @@ import logging
|
|
|
4
4
|
import sys
|
|
5
5
|
import os.path
|
|
6
6
|
|
|
7
|
+
from ..transformer.admin_data import AdminDataTransformer
|
|
7
8
|
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
8
9
|
from ..parser.arxml_parser import ARXMLParser
|
|
9
10
|
from ..writer import ARXMLWriter
|
|
10
11
|
|
|
12
|
+
|
|
11
13
|
def perform_format(args):
|
|
12
14
|
logger = logging.getLogger()
|
|
13
15
|
|
|
@@ -22,20 +24,21 @@ def perform_format(args):
|
|
|
22
24
|
if os.path.exists(log_file):
|
|
23
25
|
os.remove(log_file)
|
|
24
26
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
if args.verbose:
|
|
28
|
+
file_handler = logging.FileHandler(log_file)
|
|
29
|
+
file_handler.setFormatter(formatter)
|
|
30
|
+
file_handler.setLevel(logging.DEBUG)
|
|
27
31
|
|
|
28
32
|
logger.setLevel(logging.DEBUG)
|
|
29
|
-
file_handler.setLevel(logging.DEBUG)
|
|
30
33
|
|
|
31
34
|
if args.verbose:
|
|
32
35
|
stdout_handler.setLevel(logging.DEBUG)
|
|
33
|
-
|
|
34
36
|
else:
|
|
35
37
|
stdout_handler.setLevel(logging.INFO)
|
|
36
38
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
if args.verbose:
|
|
40
|
+
logger.addHandler(file_handler)
|
|
41
|
+
logger.addHandler(stdout_handler)
|
|
39
42
|
|
|
40
43
|
try:
|
|
41
44
|
options = {}
|
|
@@ -46,26 +49,35 @@ def perform_format(args):
|
|
|
46
49
|
parser = ARXMLParser(options)
|
|
47
50
|
parser.load(args.INPUT, document)
|
|
48
51
|
|
|
52
|
+
if args.remove_admin_data:
|
|
53
|
+
transform = AdminDataTransformer()
|
|
54
|
+
transform.remove(document)
|
|
55
|
+
|
|
49
56
|
writer = ARXMLWriter()
|
|
50
57
|
writer.save(args.OUTPUT, document)
|
|
51
58
|
|
|
52
59
|
except Exception as e:
|
|
53
|
-
#print(e)
|
|
60
|
+
# print(e)
|
|
54
61
|
logger.error(e)
|
|
55
|
-
|
|
62
|
+
if args.verbose:
|
|
63
|
+
raise e
|
|
64
|
+
|
|
56
65
|
|
|
57
66
|
def main():
|
|
58
67
|
version = pkg_resources.require("armodel")[0].version
|
|
59
68
|
|
|
60
69
|
ap = argparse.ArgumentParser()
|
|
61
|
-
ap.
|
|
62
|
-
ap.add_argument("-
|
|
63
|
-
ap.add_argument("
|
|
64
|
-
ap.add_argument("
|
|
70
|
+
ap.description = "arxml-format ver: %s" % version
|
|
71
|
+
ap.add_argument("-v", "--verbose", required=False, help="Print debug information", action="store_true")
|
|
72
|
+
ap.add_argument("-w", "--warning", required=False, help="Skip the error and report it as warning message", action="store_true")
|
|
73
|
+
ap.add_argument("--remove-admin-data", required=False, help="Remove all the AdminData", action="store_true")
|
|
74
|
+
ap.add_argument("INPUT", help="The path of AUTOSAR ARXML file")
|
|
75
|
+
ap.add_argument("OUTPUT", help="The path of output ARXML file")
|
|
65
76
|
|
|
66
77
|
args = ap.parse_args()
|
|
67
78
|
|
|
68
79
|
perform_format(args)
|
|
69
80
|
|
|
81
|
+
|
|
70
82
|
if __name__ == "__main__":
|
|
71
|
-
main()
|
|
83
|
+
main()
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
from typing import Dict, List
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
from ...M2.MSR.AsamHdo.SpecialData import Sdg
|
|
4
|
-
from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
5
5
|
from ...M2.MSR.AsamHdo import AdminData
|
|
6
6
|
from ...M2.MSR.AsamHdo.BaseTypes import SwBaseType
|
|
7
|
-
from
|
|
7
|
+
from ...M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
|
|
8
|
+
from ...M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
|
|
9
|
+
from ...M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
|
|
10
|
+
from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
8
11
|
from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement, Referrable
|
|
9
12
|
from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
|
|
10
13
|
from ...M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, DataTypeMap
|
|
14
|
+
from ...M2.AUTOSARTemplates.SWComponentTemplate.Components import CompositionSwComponentType
|
|
11
15
|
from ...M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
16
|
+
from ...M2.AUTOSARTemplates.SystemTemplate import RootSwCompositionPrototype, System
|
|
17
|
+
|
|
12
18
|
|
|
13
19
|
class FileInfoComment(ARObject):
|
|
14
20
|
def __init__(self):
|
|
@@ -23,27 +29,23 @@ class FileInfoComment(ARObject):
|
|
|
23
29
|
self.sdgs = value
|
|
24
30
|
return self
|
|
25
31
|
|
|
32
|
+
|
|
26
33
|
class AbstractAUTOSAR(CollectableElement):
|
|
27
34
|
def __init__(self):
|
|
28
35
|
super().__init__()
|
|
29
36
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
self.schema_location = ""
|
|
33
|
-
self._appl_impl_type_maps = {}
|
|
34
|
-
self._impl_appl_type_maps = {}
|
|
35
|
-
|
|
36
|
-
self.adminData = None # type: AdminData
|
|
37
|
-
self.arPackages = {} # type: Dict[str, ARPackage]
|
|
38
|
-
self.fileInfoComment = None # type: FileInfoComment
|
|
39
|
-
self.introduction = None # type: DocumentationBlock
|
|
37
|
+
self.clear()
|
|
40
38
|
|
|
41
39
|
def getAdminData(self):
|
|
42
40
|
return self.adminData
|
|
43
41
|
|
|
44
42
|
def setAdminData(self, value):
|
|
45
|
-
|
|
43
|
+
if value is not None:
|
|
44
|
+
self.adminData = value
|
|
46
45
|
return self
|
|
46
|
+
|
|
47
|
+
def removeAdminData(self):
|
|
48
|
+
self.adminData = None
|
|
47
49
|
|
|
48
50
|
def getFileInfoComment(self):
|
|
49
51
|
return self.fileInfoComment
|
|
@@ -67,8 +69,26 @@ class AbstractAUTOSAR(CollectableElement):
|
|
|
67
69
|
return ""
|
|
68
70
|
|
|
69
71
|
def clear(self):
|
|
70
|
-
self
|
|
71
|
-
|
|
72
|
+
CollectableElement.__init__(self)
|
|
73
|
+
|
|
74
|
+
self.schema_location = None
|
|
75
|
+
self._appl_impl_type_maps = {}
|
|
76
|
+
self._impl_appl_type_maps = {}
|
|
77
|
+
|
|
78
|
+
self._behavior_impl_maps = {} # type: Dict[str, str]
|
|
79
|
+
self._impl_behavior_maps = {} # type: Dict[str, str]
|
|
80
|
+
|
|
81
|
+
self.uuid_objects = {} # type: Dict[str, ARObject]
|
|
82
|
+
|
|
83
|
+
self.systems = {} # type: Dict[str, System]
|
|
84
|
+
self.compositionSwComponentTypes = {} # type: Dict[str, CompositionSwComponentType]
|
|
85
|
+
|
|
86
|
+
self.rootSwCompositionPrototype = None # type: RootSwCompositionPrototype
|
|
87
|
+
|
|
88
|
+
self.adminData = None # type: AdminData
|
|
89
|
+
self.arPackages = {} # type: Dict[str, ARPackage]
|
|
90
|
+
self.fileInfoComment = None # type: FileInfoComment
|
|
91
|
+
self.introduction = None # type: DocumentationBlock
|
|
72
92
|
|
|
73
93
|
def getElement(self, short_name: str) -> Referrable:
|
|
74
94
|
if (short_name in self.arPackages):
|
|
@@ -76,8 +96,8 @@ class AbstractAUTOSAR(CollectableElement):
|
|
|
76
96
|
return CollectableElement.getElement(self, short_name)
|
|
77
97
|
|
|
78
98
|
def getARPackages(self) -> List[ARPackage]:
|
|
79
|
-
#return list(filter(lambda e: isinstance(e, ARPackage), self.elements.values()))
|
|
80
|
-
return list(sorted(self.arPackages.values(), key=
|
|
99
|
+
# return list(filter(lambda e: isinstance(e, ARPackage), self.elements.values()))
|
|
100
|
+
return list(sorted(self.arPackages.values(), key=lambda a: a.short_name))
|
|
81
101
|
|
|
82
102
|
def createARPackage(self, short_name: str) -> ARPackage:
|
|
83
103
|
if (short_name not in self.arPackages):
|
|
@@ -92,7 +112,7 @@ class AbstractAUTOSAR(CollectableElement):
|
|
|
92
112
|
if (short_name == ""):
|
|
93
113
|
continue
|
|
94
114
|
element = element.getElement(short_name)
|
|
95
|
-
if (element
|
|
115
|
+
if (element is None):
|
|
96
116
|
return element
|
|
97
117
|
# raise ValueError("The %s of reference <%s> does not exist." % (short_name, referred_name))
|
|
98
118
|
return element
|
|
@@ -127,14 +147,67 @@ class AbstractAUTOSAR(CollectableElement):
|
|
|
127
147
|
raise IndexError("Invalid Implementation data type <%s>" % impl_data_type)
|
|
128
148
|
|
|
129
149
|
return self.find(self._impl_appl_type_maps[impl_data_type])
|
|
150
|
+
|
|
151
|
+
def getRootSwCompositionPrototype(self):
|
|
152
|
+
return self.rootSwCompositionPrototype
|
|
153
|
+
|
|
154
|
+
def setRootSwCompositionPrototype(self, value):
|
|
155
|
+
if value is not None:
|
|
156
|
+
self.rootSwCompositionPrototype = value
|
|
157
|
+
return self
|
|
158
|
+
|
|
159
|
+
def addImplementationBehaviorMap(self, impl: str, behavior: str) -> Implementation:
|
|
160
|
+
self._behavior_impl_maps[behavior] = impl
|
|
161
|
+
self._impl_behavior_maps[impl] = behavior
|
|
130
162
|
|
|
163
|
+
def getBehavior(self, impl_ref: str) -> InternalBehavior:
|
|
164
|
+
if impl_ref in self._impl_behavior_maps:
|
|
165
|
+
return self.find(self._impl_behavior_maps[impl_ref])
|
|
166
|
+
return None
|
|
167
|
+
|
|
168
|
+
def getImplementation(self, behavior_ref: str):
|
|
169
|
+
if behavior_ref in self._behavior_impl_maps:
|
|
170
|
+
return self.find(self._behavior_impl_maps[behavior_ref])
|
|
171
|
+
return None
|
|
172
|
+
|
|
173
|
+
def addSystem(self, system: System):
|
|
174
|
+
short_name = system.getShortName()
|
|
175
|
+
if short_name not in self.systems:
|
|
176
|
+
self.systems[short_name] = system
|
|
177
|
+
|
|
178
|
+
def getSystems(self) -> List[System]:
|
|
179
|
+
return list(sorted(self.systems.values(), key=lambda a: a.getShortName()))
|
|
180
|
+
|
|
181
|
+
def getCompositionSwComponentTypes(self):
|
|
182
|
+
return self.compositionSwComponentTypes
|
|
183
|
+
|
|
184
|
+
def getCompositionSwComponentType(self, short_name: str):
|
|
185
|
+
return self.compositionSwComponentTypes[short_name]
|
|
186
|
+
|
|
187
|
+
def addCompositionSwComponentType(self, sw_component_type: CompositionSwComponentType):
|
|
188
|
+
if sw_component_type is not None:
|
|
189
|
+
short_name = sw_component_type.getShortName()
|
|
190
|
+
if short_name not in self.compositionSwComponentTypes:
|
|
191
|
+
self.compositionSwComponentTypes[short_name] = sw_component_type
|
|
192
|
+
return self
|
|
131
193
|
|
|
132
|
-
|
|
194
|
+
def getARObjectByUUID(self, uuid: str):
|
|
195
|
+
if uuid in self.uuid_objects:
|
|
196
|
+
return self.uuid_objects[uuid]
|
|
197
|
+
return None
|
|
198
|
+
|
|
199
|
+
def addARObject(self, value: ARObject):
|
|
200
|
+
if value is not None:
|
|
201
|
+
self.uuid_objects[value.uuid] = value
|
|
202
|
+
return self
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
class AUTOSAR (AbstractAUTOSAR):
|
|
133
206
|
__instance = None
|
|
134
207
|
|
|
135
208
|
@staticmethod
|
|
136
209
|
def getInstance():
|
|
137
|
-
if (AUTOSAR.__instance
|
|
210
|
+
if (AUTOSAR.__instance is None):
|
|
138
211
|
AUTOSAR()
|
|
139
212
|
return AUTOSAR.__instance
|
|
140
213
|
|
|
@@ -142,13 +215,14 @@ class AUTOSAR (AbstractAUTOSAR):
|
|
|
142
215
|
self.clear()
|
|
143
216
|
|
|
144
217
|
def __init__(self):
|
|
145
|
-
if (AUTOSAR.__instance
|
|
218
|
+
if (AUTOSAR.__instance is not None):
|
|
146
219
|
raise Exception("The AUTOSAR is singleton!")
|
|
147
220
|
|
|
148
221
|
AUTOSAR.__instance = self
|
|
149
222
|
|
|
150
223
|
super().__init__()
|
|
151
224
|
|
|
225
|
+
|
|
152
226
|
class AUTOSARDoc(AbstractAUTOSAR):
|
|
153
227
|
def __init__(self):
|
|
154
228
|
super().__init__()
|