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
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
from typing import List
|
|
2
|
+
|
|
3
|
+
from ....M2.AUTOSARTemplates.SystemTemplate.EcuResourceMapping import ECUMapping
|
|
2
4
|
from ....M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import ComponentInSystemInstanceRef
|
|
5
|
+
from ....M2.AUTOSARTemplates.SystemTemplate.SWmapping import SwcToImplMapping
|
|
3
6
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
4
7
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, Identifiable
|
|
5
|
-
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import PositiveInteger, RefType, TRefType
|
|
8
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import PositiveInteger, RefType, RevisionLabelString, TRefType
|
|
9
|
+
|
|
6
10
|
|
|
7
11
|
class SwcToEcuMapping(Identifiable):
|
|
8
12
|
def __init__(self, parent: ARObject, short_name: str):
|
|
@@ -41,6 +45,7 @@ class SwcToEcuMapping(Identifiable):
|
|
|
41
45
|
self.processingUnitRef = value
|
|
42
46
|
return self
|
|
43
47
|
|
|
48
|
+
|
|
44
49
|
class SystemMapping(Identifiable):
|
|
45
50
|
def __init__(self, parent: ARObject, short_name: str):
|
|
46
51
|
super().__init__(parent, short_name)
|
|
@@ -51,7 +56,7 @@ class SystemMapping(Identifiable):
|
|
|
51
56
|
self.cryptoServiceMappings = []
|
|
52
57
|
self.dataMappings = []
|
|
53
58
|
self.ddsISignalToTopicMappings = []
|
|
54
|
-
self.ecuResourceMappings = []
|
|
59
|
+
self.ecuResourceMappings = [] # type: List[ECUMapping]
|
|
55
60
|
self.j1939ControllerApplicationToJ1939NmNodeMappings = []
|
|
56
61
|
self.mappingConstraints = []
|
|
57
62
|
self.pncMappings = []
|
|
@@ -65,8 +70,8 @@ class SystemMapping(Identifiable):
|
|
|
65
70
|
self.softwareClusterToResourceMappings = []
|
|
66
71
|
self.swClusterMappings = []
|
|
67
72
|
self.swcToApplicationPartitionMappings = []
|
|
68
|
-
self.swImplMappings = []
|
|
69
|
-
self.swMappings = []
|
|
73
|
+
self.swImplMappings = [] # type: List[SwcToImplMapping]
|
|
74
|
+
self.swMappings = [] # type: List[SwcToEcuMapping]
|
|
70
75
|
self.systemSignalGroupToComResourceMappings = []
|
|
71
76
|
self.systemSignalToComResourceMappings = []
|
|
72
77
|
|
|
@@ -115,9 +120,12 @@ class SystemMapping(Identifiable):
|
|
|
115
120
|
def getEcuResourceMappings(self):
|
|
116
121
|
return self.ecuResourceMappings
|
|
117
122
|
|
|
118
|
-
def
|
|
119
|
-
self.
|
|
120
|
-
|
|
123
|
+
def createECUMapping(self, short_name: str) -> ECUMapping:
|
|
124
|
+
if short_name not in self.elements:
|
|
125
|
+
mapping = ECUMapping(self, short_name)
|
|
126
|
+
self.addElement(mapping)
|
|
127
|
+
self.ecuResourceMappings.append(mapping)
|
|
128
|
+
return self.getElement(short_name)
|
|
121
129
|
|
|
122
130
|
def getJ1939ControllerApplicationToJ1939NmNodeMappings(self):
|
|
123
131
|
return self.j1939ControllerApplicationToJ1939NmNodeMappings
|
|
@@ -210,15 +218,21 @@ class SystemMapping(Identifiable):
|
|
|
210
218
|
self.swcToApplicationPartitionMappings.append(value)
|
|
211
219
|
return self
|
|
212
220
|
|
|
213
|
-
def
|
|
221
|
+
def getSwImplMappings(self):
|
|
214
222
|
return self.swImplMappings
|
|
215
223
|
|
|
216
|
-
def
|
|
217
|
-
self.
|
|
218
|
-
|
|
224
|
+
def createSwcToImplMapping(self, short_name: str) -> SwcToImplMapping:
|
|
225
|
+
if short_name not in self.elements:
|
|
226
|
+
mapping = SwcToImplMapping(self, short_name)
|
|
227
|
+
self.addElement(mapping)
|
|
228
|
+
self.swImplMappings.append(mapping)
|
|
229
|
+
return self.getElement(short_name)
|
|
219
230
|
|
|
220
231
|
def getSwMappings(self):
|
|
221
232
|
return self.swMappings
|
|
233
|
+
|
|
234
|
+
def getSwcToEcuMappings(self) -> List[SwcToEcuMapping]:
|
|
235
|
+
return list(sorted(filter(lambda a: isinstance(a, SwcToEcuMapping), self.elements.values()), key=lambda o: o.short_name))
|
|
222
236
|
|
|
223
237
|
def createSwcToEcuMapping(self, short_name: str) -> SwcToEcuMapping:
|
|
224
238
|
if short_name not in self.elements:
|
|
@@ -241,6 +255,7 @@ class SystemMapping(Identifiable):
|
|
|
241
255
|
self.systemSignalToComResourceMappings.append(value)
|
|
242
256
|
return self
|
|
243
257
|
|
|
258
|
+
|
|
244
259
|
class RootSwCompositionPrototype(Identifiable):
|
|
245
260
|
def __init__(self, parent: ARObject, short_name: str):
|
|
246
261
|
super().__init__(parent, short_name)
|
|
@@ -270,6 +285,7 @@ class RootSwCompositionPrototype(Identifiable):
|
|
|
270
285
|
self.softwareCompositionTRef = value
|
|
271
286
|
return self
|
|
272
287
|
|
|
288
|
+
|
|
273
289
|
class System(ARElement):
|
|
274
290
|
def __init__(self, parent: ARObject, short_name: str):
|
|
275
291
|
super().__init__(parent, short_name)
|
|
@@ -310,7 +326,7 @@ class System(ARElement):
|
|
|
310
326
|
return self
|
|
311
327
|
|
|
312
328
|
def getFibexElementRefs(self):
|
|
313
|
-
#return sorted(self.fibexElements, key= lambda i: i.getShortValue())
|
|
329
|
+
# return sorted(self.fibexElements, key= lambda i: i.getShortValue())
|
|
314
330
|
return self.fibexElements
|
|
315
331
|
|
|
316
332
|
def addFibexElementRef(self, value):
|
|
@@ -333,14 +349,17 @@ class System(ARElement):
|
|
|
333
349
|
return self
|
|
334
350
|
|
|
335
351
|
def getMappings(self) -> List[SystemMapping]:
|
|
336
|
-
return list(sorted(filter(lambda a: isinstance(a, SystemMapping), self.elements.values()), key=
|
|
352
|
+
return list(sorted(filter(lambda a: isinstance(a, SystemMapping), self.elements.values()), key=lambda o: o.short_name))
|
|
353
|
+
|
|
354
|
+
def getSystemMappings(self) -> List[SystemMapping]:
|
|
355
|
+
return list(sorted(filter(lambda a: isinstance(a, SystemMapping), self.elements.values()), key=lambda o: o.short_name))
|
|
337
356
|
|
|
338
357
|
def createSystemMapping(self, short_name) -> SystemMapping:
|
|
339
358
|
if (short_name not in self.elements):
|
|
340
359
|
mapping = SystemMapping(self, short_name)
|
|
341
360
|
self.elements[short_name] = mapping
|
|
342
361
|
return self.elements[short_name]
|
|
343
|
-
|
|
362
|
+
|
|
344
363
|
def getPncVectorLength(self):
|
|
345
364
|
return self.pncVectorLength
|
|
346
365
|
|
|
@@ -385,10 +404,3 @@ class System(ARElement):
|
|
|
385
404
|
def setSystemVersion(self, value):
|
|
386
405
|
self.systemVersion = value
|
|
387
406
|
return self
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from ....M2.MSR.Documentation.TextModel.LanguageDataModel import LEnum
|
|
2
2
|
from ....M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguagePlainText
|
|
3
3
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
4
|
-
from ....M2.MSR.AsamHdo.SpecialData import Sdg
|
|
5
4
|
from typing import List
|
|
6
5
|
|
|
7
6
|
class AdminData(ARObject):
|
|
@@ -10,7 +9,7 @@ class AdminData(ARObject):
|
|
|
10
9
|
|
|
11
10
|
self.DocRevisions = [] # type: List[DocRevision]
|
|
12
11
|
self.language = None # type: LEnum
|
|
13
|
-
self.sdgs = [] # type: List
|
|
12
|
+
self.sdgs = [] # type: List ## Sdg will cause the circular import
|
|
14
13
|
self.usedLanguages = None # type: MultiLanguagePlainText
|
|
15
14
|
|
|
16
15
|
def getDocRevisions(self):
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
from typing import List
|
|
2
2
|
from abc import ABCMeta
|
|
3
|
+
|
|
4
|
+
from ....M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph
|
|
3
5
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
|
|
4
|
-
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import
|
|
6
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import CIdentifier, Identifier, PositiveUnlimitedInteger, String
|
|
5
7
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
6
8
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
|
|
7
9
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Limit
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
|
|
2
|
+
from ....M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph
|
|
3
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import MultilanguageReferrable
|
|
1
4
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
2
5
|
from typing import List
|
|
3
6
|
|
|
@@ -22,15 +25,30 @@ class Sd(ARObject):
|
|
|
22
25
|
self.value = value
|
|
23
26
|
return self
|
|
24
27
|
|
|
28
|
+
class SdgCaption(MultilanguageReferrable):
|
|
29
|
+
def __init__(self, parent, short_name):
|
|
30
|
+
super().__init__(parent, short_name)
|
|
31
|
+
|
|
32
|
+
self.desc = None # type: MultiLanguageOverviewParagraph
|
|
33
|
+
|
|
34
|
+
def getDesc(self):
|
|
35
|
+
return self.desc
|
|
36
|
+
|
|
37
|
+
def setDesc(self, value):
|
|
38
|
+
if value is not None:
|
|
39
|
+
self.desc = value
|
|
40
|
+
return self
|
|
41
|
+
|
|
25
42
|
|
|
26
43
|
class Sdg(ARObject):
|
|
27
44
|
def __init__(self):
|
|
28
45
|
super().__init__()
|
|
29
46
|
|
|
30
47
|
self.gid = ""
|
|
31
|
-
self.sd = []
|
|
32
|
-
self.sdgCaption = None
|
|
33
|
-
self.sdgContentsTypes = []
|
|
48
|
+
self.sd = [] # type: List[Sd]
|
|
49
|
+
self.sdgCaption = None # type: SdgCaption
|
|
50
|
+
self.sdgContentsTypes = [] # type: List[Sdg]
|
|
51
|
+
self.sdxRefs = [] # type: List[RefType]
|
|
34
52
|
|
|
35
53
|
def getGID(self):
|
|
36
54
|
return self.gid
|
|
@@ -49,12 +67,21 @@ class Sdg(ARObject):
|
|
|
49
67
|
def getSdgCaption(self):
|
|
50
68
|
return self.sdgCaption
|
|
51
69
|
|
|
52
|
-
def
|
|
53
|
-
|
|
54
|
-
|
|
70
|
+
def createSdgCaption(self, short_name: str) -> SdgCaption:
|
|
71
|
+
caption = SdgCaption(self, short_name)
|
|
72
|
+
self.sdgCaption = caption
|
|
73
|
+
return caption
|
|
55
74
|
|
|
75
|
+
def getSdgContentsTypes(self):
|
|
76
|
+
return self.sdgContentsTypes
|
|
77
|
+
|
|
56
78
|
def addSdgContentsType(self, sdg):
|
|
57
79
|
self.sdgContentsTypes.append(sdg)
|
|
80
|
+
|
|
81
|
+
def getSdxRefs(self):
|
|
82
|
+
return self.sdxRefs
|
|
58
83
|
|
|
59
|
-
def
|
|
60
|
-
|
|
84
|
+
def addSdxRef(self, value):
|
|
85
|
+
if value is not None:
|
|
86
|
+
self.sdxRefs.append(value)
|
|
87
|
+
return self
|
armodel/models/__init__.py
CHANGED
|
@@ -15,6 +15,9 @@ from .M2.MSR.Documentation.TextModel.BlockElements.PaginationAndView import *
|
|
|
15
15
|
from .M2.MSR.Documentation.TextModel.LanguageDataModel import *
|
|
16
16
|
from .M2.MSR.Documentation.TextModel.MultilanguageData import *
|
|
17
17
|
from .M2.AUTOSARTemplates.AutosarTopLevelStructure import *
|
|
18
|
+
from .M2.AUTOSARTemplates.ECUCDescriptionTemplate import *
|
|
19
|
+
from .M2.AUTOSARTemplates.EcuResourceTemplate import *
|
|
20
|
+
from .M2.AUTOSARTemplates.EcuResourceTemplate.HwElementCategory import *
|
|
18
21
|
from .M2.AUTOSARTemplates.BswModuleTemplate import *
|
|
19
22
|
from .M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import *
|
|
20
23
|
from .M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import *
|
|
@@ -52,11 +55,15 @@ from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents impo
|
|
|
52
55
|
from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import *
|
|
53
56
|
from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import *
|
|
54
57
|
from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.Trigger import *
|
|
58
|
+
from .M2.AUTOSARTemplates.SystemTemplate import *
|
|
59
|
+
from .M2.AUTOSARTemplates.SystemTemplate.DoIp import *
|
|
55
60
|
from .M2.AUTOSARTemplates.SystemTemplate.DataMapping import *
|
|
56
61
|
from .M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import *
|
|
62
|
+
from .M2.AUTOSARTemplates.SystemTemplate.EcuResourceMapping import *
|
|
57
63
|
from .M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import *
|
|
58
64
|
from .M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import *
|
|
59
65
|
from .M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import *
|
|
66
|
+
from .M2.AUTOSARTemplates.SystemTemplate.SWmapping import *
|
|
60
67
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import *
|
|
61
68
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import *
|
|
62
69
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import *
|
|
@@ -67,6 +74,7 @@ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology i
|
|
|
67
74
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import *
|
|
68
75
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import *
|
|
69
76
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import *
|
|
77
|
+
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayCommunication import *
|
|
70
78
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import *
|
|
71
79
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import *
|
|
72
80
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import *
|
|
@@ -6,18 +6,19 @@ import re
|
|
|
6
6
|
import logging
|
|
7
7
|
import xml.etree.ElementTree as ET
|
|
8
8
|
|
|
9
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
10
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import AREnum, ARFloat, ARLiteral, ARNumerical, Boolean, Integer, PositiveInteger, TimeValue
|
|
11
9
|
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
12
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.
|
|
13
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.
|
|
14
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import
|
|
10
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
11
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
12
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, ARLiteral, ARNumerical, Boolean
|
|
13
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Integer, PositiveInteger, TimeValue
|
|
14
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, Limit
|
|
15
|
+
|
|
15
16
|
|
|
16
17
|
class AbstractARXMLParser:
|
|
17
18
|
__metaclass__ = ABCMeta
|
|
18
19
|
|
|
19
|
-
def __init__(self, options
|
|
20
|
-
if type(self)
|
|
20
|
+
def __init__(self, options=None) -> None:
|
|
21
|
+
if type(self) is AbstractARXMLParser:
|
|
21
22
|
raise NotImplementedError("AbstractArxmlParser is an abstract class.")
|
|
22
23
|
|
|
23
24
|
self.nsmap = {"xmlns": "http://autosar.org/schema/r4.0"}
|
|
@@ -40,13 +41,13 @@ class AbstractARXMLParser:
|
|
|
40
41
|
self.options['warning'] = options['warning']
|
|
41
42
|
|
|
42
43
|
def raiseError(self, error_msg):
|
|
43
|
-
if (self.options['warning']
|
|
44
|
+
if (self.options['warning'] is True):
|
|
44
45
|
self.logger.error(Fore.RED + error_msg + Fore.WHITE)
|
|
45
46
|
else:
|
|
46
47
|
raise ValueError(error_msg)
|
|
47
48
|
|
|
48
49
|
def notImplemented(self, error_msg):
|
|
49
|
-
if (self.options['warning']
|
|
50
|
+
if (self.options['warning'] is True):
|
|
50
51
|
self.logger.error(Fore.RED + error_msg + Fore.WHITE)
|
|
51
52
|
else:
|
|
52
53
|
raise NotImplementedError(error_msg)
|
|
@@ -96,11 +97,11 @@ class AbstractARXMLParser:
|
|
|
96
97
|
child_element = self.find(element, key)
|
|
97
98
|
literal = None
|
|
98
99
|
if (child_element is not None):
|
|
99
|
-
self.logger.debug("getChildElementOptionalLiteral : %s" % child_element.text)
|
|
100
|
+
# self.logger.debug("getChildElementOptionalLiteral : %s" % child_element.text)
|
|
100
101
|
literal = ARLiteral()
|
|
101
102
|
self.readARObjectAttributes(child_element, literal)
|
|
102
103
|
# Patch for empty element <USED-CODE-GENERATOR></USED-CODE-GENERATOR>
|
|
103
|
-
if child_element.text is None:
|
|
104
|
+
if child_element.text is None:
|
|
104
105
|
literal.setValue("")
|
|
105
106
|
else:
|
|
106
107
|
literal.setValue(child_element.text)
|
|
@@ -110,14 +111,14 @@ class AbstractARXMLParser:
|
|
|
110
111
|
child_element = self.find(element, key)
|
|
111
112
|
literal = None
|
|
112
113
|
if (child_element is not None) and (child_element.text is not None):
|
|
113
|
-
self.logger.debug("getChildElementOptionalRevisionLabelString : %s" % child_element.text)
|
|
114
|
+
# self.logger.debug("getChildElementOptionalRevisionLabelString : %s" % child_element.text)
|
|
114
115
|
m = re.match(r'[0-9]+\.[0-9]+\.[0-9]+([\._;].*)?', child_element.text)
|
|
115
116
|
if not m:
|
|
116
117
|
raise ValueError("Invalid RevisionLabelString <%s>" % child_element.text)
|
|
117
118
|
literal = ARLiteral()
|
|
118
119
|
self.readARObjectAttributes(child_element, literal)
|
|
119
120
|
# Patch for empty element <USED-CODE-GENERATOR></USED-CODE-GENERATOR>
|
|
120
|
-
if child_element.text is None:
|
|
121
|
+
if child_element.text is None:
|
|
121
122
|
literal.setValue("")
|
|
122
123
|
else:
|
|
123
124
|
literal.setValue(child_element.text)
|
|
@@ -165,7 +166,7 @@ class AbstractARXMLParser:
|
|
|
165
166
|
|
|
166
167
|
def getChildElementOptionalBooleanValue(self, element: ET.Element, key: str) -> Boolean:
|
|
167
168
|
literal = self.getChildElementOptionalLiteral(element, key)
|
|
168
|
-
if literal
|
|
169
|
+
if literal is None:
|
|
169
170
|
return None
|
|
170
171
|
if literal.getText() == "":
|
|
171
172
|
return None
|
|
@@ -182,7 +183,7 @@ class AbstractARXMLParser:
|
|
|
182
183
|
|
|
183
184
|
def getChildElementOptionalNumericalValue(self, element: ET.Element, key: str) -> ARNumerical:
|
|
184
185
|
child_element = self.find(element, key)
|
|
185
|
-
if child_element
|
|
186
|
+
if child_element is None:
|
|
186
187
|
return None
|
|
187
188
|
numerical = ARNumerical()
|
|
188
189
|
self.readARObjectAttributes(child_element, numerical)
|
|
@@ -191,7 +192,7 @@ class AbstractARXMLParser:
|
|
|
191
192
|
|
|
192
193
|
def getChildElementOptionalIntegerValue(self, element: ET.Element, key: str) -> Integer:
|
|
193
194
|
child_element = self.find(element, key)
|
|
194
|
-
if child_element
|
|
195
|
+
if child_element is None:
|
|
195
196
|
return None
|
|
196
197
|
numerical = Integer()
|
|
197
198
|
self.readARObjectAttributes(child_element, numerical)
|
|
@@ -200,7 +201,7 @@ class AbstractARXMLParser:
|
|
|
200
201
|
|
|
201
202
|
def getChildElementOptionalPositiveInteger(self, element: ET.Element, key: str) -> PositiveInteger:
|
|
202
203
|
child_element = self.find(element, key)
|
|
203
|
-
if child_element
|
|
204
|
+
if child_element is None:
|
|
204
205
|
return None
|
|
205
206
|
numerical = PositiveInteger()
|
|
206
207
|
self.readARObjectAttributes(child_element, numerical)
|
|
@@ -231,7 +232,7 @@ class AbstractARXMLParser:
|
|
|
231
232
|
return limit
|
|
232
233
|
return None
|
|
233
234
|
|
|
234
|
-
def _getChildElementRefTypeDestAndValue(self, element) -> RefType:
|
|
235
|
+
def _getChildElementRefTypeDestAndValue(self, element: ET.Element) -> RefType:
|
|
235
236
|
ref = RefType()
|
|
236
237
|
if 'BASE' in element.attrib:
|
|
237
238
|
ref.setBase(element.attrib['BASE'])
|
|
@@ -246,7 +247,7 @@ class AbstractARXMLParser:
|
|
|
246
247
|
return self._getChildElementRefTypeDestAndValue(child_element)
|
|
247
248
|
self.raiseError("The attribute %s of <%s> has not been defined" % (key, short_name))
|
|
248
249
|
|
|
249
|
-
def getChildElementOptionalRefType(self, element:ET.Element, key: str) -> RefType:
|
|
250
|
+
def getChildElementOptionalRefType(self, element: ET.Element, key: str) -> RefType:
|
|
250
251
|
child_element = self.find(element, key)
|
|
251
252
|
if (child_element is not None):
|
|
252
253
|
return self._getChildElementRefTypeDestAndValue(child_element)
|
|
@@ -268,13 +269,19 @@ class AbstractARXMLParser:
|
|
|
268
269
|
return None
|
|
269
270
|
|
|
270
271
|
def readARObjectAttributes(self, element: ET.Element, ar_object: ARObject):
|
|
271
|
-
ar_object.timestamp = self.readElementOptionalAttrib(element, "T")
|
|
272
|
-
ar_object.uuid
|
|
272
|
+
ar_object.timestamp = self.readElementOptionalAttrib(element, "T") # read the timestamp
|
|
273
|
+
ar_object.uuid = self.readElementOptionalAttrib(element, "UUID") # read the uuid
|
|
273
274
|
|
|
274
|
-
if ar_object.timestamp is not None:
|
|
275
|
-
|
|
275
|
+
# if ar_object.timestamp is not None:
|
|
276
|
+
# self.logger.debug("Timestamp: %s" % ar_object.timestamp)
|
|
276
277
|
if ar_object.uuid is not None:
|
|
277
|
-
|
|
278
|
+
instance = AUTOSAR.getInstance()
|
|
279
|
+
old_ar_object = instance.getARObjectByUUID(ar_object.uuid)
|
|
280
|
+
if old_ar_object is not None:
|
|
281
|
+
self.logger.warning(Fore.YELLOW + "Duplicate UUID <%s> / type <%s>" % (ar_object.uuid, type(old_ar_object)) + Fore.WHITE)
|
|
282
|
+
else:
|
|
283
|
+
instance.addARObject(ar_object)
|
|
284
|
+
# self.logger.debug("UUID: %s" % ar_object.uuid)
|
|
278
285
|
|
|
279
286
|
def getAUTOSARInfo(self, element: ET.Element, document: AUTOSAR):
|
|
280
287
|
key = "{http://www.w3.org/2001/XMLSchema-instance}schemaLocation"
|
|
@@ -295,9 +302,9 @@ class AbstractARXMLParser:
|
|
|
295
302
|
if item != "*" and item != ".":
|
|
296
303
|
keys[idx] = "xmlns:%s" % item
|
|
297
304
|
return "/".join(keys)
|
|
298
|
-
|
|
299
|
-
def find(self, parent:ET.Element, key: str) -> ET.Element:
|
|
305
|
+
|
|
306
|
+
def find(self, parent: ET.Element, key: str) -> ET.Element:
|
|
300
307
|
return parent.find(self.convert_find_key(key), self.nsmap)
|
|
301
308
|
|
|
302
309
|
def findall(self, parent: ET.Element, key: str) -> List[ET.Element]:
|
|
303
|
-
return parent.findall(self.convert_find_key(key), self.nsmap)
|
|
310
|
+
return parent.findall(self.convert_find_key(key), self.nsmap)
|