armodel 1.7.7__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 +64 -29
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +322 -63
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +134 -35
- 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 +214 -156
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +60 -32
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +63 -42
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +1 -0
- 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/__init__.py +9 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/{ECUResourceMapping.py → EcuResourceMapping.py} +4 -3
- 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/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 +64 -31
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +19 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +15 -13
- armodel/models/__init__.py +5 -1
- armodel/parser/abstract_arxml_parser.py +34 -30
- armodel/parser/arxml_parser.py +1196 -525
- armodel/parser/file_parser.py +5 -3
- armodel/tests/test_armodel/models/test_ar_package.py +6 -11
- armodel/tests/test_armodel/models/test_port_interface.py +116 -117
- armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +109 -109
- armodel/tests/test_armodel/parser/test_sw_components.py +38 -27
- 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 +22 -29
- armodel/writer/arxml_writer.py +1198 -477
- {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/METADATA +41 -1
- {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/RECORD +52 -43
- {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/LICENSE +0 -0
- {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/WHEEL +0 -0
- {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.7.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()
|
|
@@ -11,9 +11,11 @@ from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject imp
|
|
|
11
11
|
from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement, Referrable
|
|
12
12
|
from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
|
|
13
13
|
from ...M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, DataTypeMap
|
|
14
|
+
from ...M2.AUTOSARTemplates.SWComponentTemplate.Components import CompositionSwComponentType
|
|
14
15
|
from ...M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
|
|
15
16
|
from ...M2.AUTOSARTemplates.SystemTemplate import RootSwCompositionPrototype, System
|
|
16
17
|
|
|
18
|
+
|
|
17
19
|
class FileInfoComment(ARObject):
|
|
18
20
|
def __init__(self):
|
|
19
21
|
super().__init__()
|
|
@@ -27,34 +29,23 @@ class FileInfoComment(ARObject):
|
|
|
27
29
|
self.sdgs = value
|
|
28
30
|
return self
|
|
29
31
|
|
|
32
|
+
|
|
30
33
|
class AbstractAUTOSAR(CollectableElement):
|
|
31
34
|
def __init__(self):
|
|
32
35
|
super().__init__()
|
|
33
36
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
self.schema_location = ""
|
|
37
|
-
self._appl_impl_type_maps = {}
|
|
38
|
-
self._impl_appl_type_maps = {}
|
|
39
|
-
|
|
40
|
-
self._behavior_impl_maps = {} # type: Dict[str, str]
|
|
41
|
-
self._impl_behavior_maps = {} # type: Dict[str, str]
|
|
42
|
-
|
|
43
|
-
self.systems = {} # type: Dict[str, System]
|
|
44
|
-
|
|
45
|
-
self.rootSwCompositionPrototype = None # type: RootSwCompositionPrototype
|
|
46
|
-
|
|
47
|
-
self.adminData = None # type: AdminData
|
|
48
|
-
self.arPackages = {} # type: Dict[str, ARPackage]
|
|
49
|
-
self.fileInfoComment = None # type: FileInfoComment
|
|
50
|
-
self.introduction = None # type: DocumentationBlock
|
|
37
|
+
self.clear()
|
|
51
38
|
|
|
52
39
|
def getAdminData(self):
|
|
53
40
|
return self.adminData
|
|
54
41
|
|
|
55
42
|
def setAdminData(self, value):
|
|
56
|
-
|
|
43
|
+
if value is not None:
|
|
44
|
+
self.adminData = value
|
|
57
45
|
return self
|
|
46
|
+
|
|
47
|
+
def removeAdminData(self):
|
|
48
|
+
self.adminData = None
|
|
58
49
|
|
|
59
50
|
def getFileInfoComment(self):
|
|
60
51
|
return self.fileInfoComment
|
|
@@ -78,8 +69,26 @@ class AbstractAUTOSAR(CollectableElement):
|
|
|
78
69
|
return ""
|
|
79
70
|
|
|
80
71
|
def clear(self):
|
|
81
|
-
self
|
|
82
|
-
|
|
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
|
|
83
92
|
|
|
84
93
|
def getElement(self, short_name: str) -> Referrable:
|
|
85
94
|
if (short_name in self.arPackages):
|
|
@@ -87,8 +96,8 @@ class AbstractAUTOSAR(CollectableElement):
|
|
|
87
96
|
return CollectableElement.getElement(self, short_name)
|
|
88
97
|
|
|
89
98
|
def getARPackages(self) -> List[ARPackage]:
|
|
90
|
-
#return list(filter(lambda e: isinstance(e, ARPackage), self.elements.values()))
|
|
91
|
-
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))
|
|
92
101
|
|
|
93
102
|
def createARPackage(self, short_name: str) -> ARPackage:
|
|
94
103
|
if (short_name not in self.arPackages):
|
|
@@ -103,7 +112,7 @@ class AbstractAUTOSAR(CollectableElement):
|
|
|
103
112
|
if (short_name == ""):
|
|
104
113
|
continue
|
|
105
114
|
element = element.getElement(short_name)
|
|
106
|
-
if (element
|
|
115
|
+
if (element is None):
|
|
107
116
|
return element
|
|
108
117
|
# raise ValueError("The %s of reference <%s> does not exist." % (short_name, referred_name))
|
|
109
118
|
return element
|
|
@@ -156,24 +165,49 @@ class AbstractAUTOSAR(CollectableElement):
|
|
|
156
165
|
return self.find(self._impl_behavior_maps[impl_ref])
|
|
157
166
|
return None
|
|
158
167
|
|
|
159
|
-
def getImplementation(self, behavior_ref:str):
|
|
168
|
+
def getImplementation(self, behavior_ref: str):
|
|
160
169
|
if behavior_ref in self._behavior_impl_maps:
|
|
161
170
|
return self.find(self._behavior_impl_maps[behavior_ref])
|
|
162
171
|
return None
|
|
163
172
|
|
|
164
173
|
def addSystem(self, system: System):
|
|
165
174
|
short_name = system.getShortName()
|
|
166
|
-
if
|
|
175
|
+
if short_name not in self.systems:
|
|
167
176
|
self.systems[short_name] = system
|
|
168
177
|
|
|
169
178
|
def getSystems(self) -> List[System]:
|
|
170
|
-
return list(sorted(self.systems.values(), key
|
|
171
|
-
|
|
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
|
|
193
|
+
|
|
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):
|
|
172
206
|
__instance = None
|
|
173
207
|
|
|
174
208
|
@staticmethod
|
|
175
209
|
def getInstance():
|
|
176
|
-
if (AUTOSAR.__instance
|
|
210
|
+
if (AUTOSAR.__instance is None):
|
|
177
211
|
AUTOSAR()
|
|
178
212
|
return AUTOSAR.__instance
|
|
179
213
|
|
|
@@ -181,13 +215,14 @@ class AUTOSAR (AbstractAUTOSAR):
|
|
|
181
215
|
self.clear()
|
|
182
216
|
|
|
183
217
|
def __init__(self):
|
|
184
|
-
if (AUTOSAR.__instance
|
|
218
|
+
if (AUTOSAR.__instance is not None):
|
|
185
219
|
raise Exception("The AUTOSAR is singleton!")
|
|
186
220
|
|
|
187
221
|
AUTOSAR.__instance = self
|
|
188
222
|
|
|
189
223
|
super().__init__()
|
|
190
224
|
|
|
225
|
+
|
|
191
226
|
class AUTOSARDoc(AbstractAUTOSAR):
|
|
192
227
|
def __init__(self):
|
|
193
228
|
super().__init__()
|