armodel 1.7.7__py3-none-any.whl → 1.7.9__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 +84 -28
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +410 -61
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +80 -9
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +141 -35
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +10 -8
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +17 -6
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +38 -3
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +91 -18
- armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/PortPrototypeBlueprint.py +73 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/__init__.py +0 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/Keyword.py +45 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/__init__.py +0 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +45 -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 +243 -156
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ElementCollection.py +73 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +60 -32
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +35 -14
- armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +151 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +66 -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 +166 -50
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SoftwareComponentDocumentation.py +80 -0
- 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 +11 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +16 -2
- 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/Fibex4Ethernet/EthernetTopology.py +18 -6
- 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/M2/MSR/DataDictionary/DataDefProperties.py +10 -1
- armodel/models/M2/MSR/Documentation/BlockElements/Figure.py +163 -0
- armodel/models/M2/MSR/Documentation/BlockElements/__init__.py +0 -0
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +5 -3
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +22 -1
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +94 -9
- armodel/models/__init__.py +7 -1
- armodel/parser/abstract_arxml_parser.py +39 -32
- armodel/parser/arxml_parser.py +1439 -551
- 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 +301 -28
- 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 +1500 -526
- {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/METADATA +61 -1
- {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/RECORD +73 -57
- {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/LICENSE +0 -0
- {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/WHEEL +0 -0
- {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from .....M2.MSR.Documentation.TextModel.LanguageDataModel import LanguageSpecific
|
|
4
|
+
from .....M2.MSR.Documentation.TextModel.BlockElements.PaginationAndView import Paginateable
|
|
5
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
6
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.EngineeringObject import EngineeringObject
|
|
7
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import AREnum, String
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class GraphicFitEnum(AREnum):
|
|
11
|
+
def __init__(self, enum_values):
|
|
12
|
+
super().__init__([
|
|
13
|
+
|
|
14
|
+
])
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Graphic(EngineeringObject):
|
|
18
|
+
def __init__(self):
|
|
19
|
+
super().__init__()
|
|
20
|
+
|
|
21
|
+
self.editfit = None # type: GraphicFitEnum
|
|
22
|
+
self.editHeight = None # type: String
|
|
23
|
+
self.editscale = None # type: String
|
|
24
|
+
self.editWidth = None # type: String
|
|
25
|
+
self.filename = None # type: String
|
|
26
|
+
self.fit = None # type: GraphicFitEnum
|
|
27
|
+
|
|
28
|
+
def getEditfit(self):
|
|
29
|
+
return self.editfit
|
|
30
|
+
|
|
31
|
+
def setEditfit(self, value):
|
|
32
|
+
if value is not None:
|
|
33
|
+
self.editfit = value
|
|
34
|
+
return self
|
|
35
|
+
|
|
36
|
+
def getEditHeight(self):
|
|
37
|
+
return self.editHeight
|
|
38
|
+
|
|
39
|
+
def setEditHeight(self, value):
|
|
40
|
+
if value is not None:
|
|
41
|
+
self.editHeight = value
|
|
42
|
+
return self
|
|
43
|
+
|
|
44
|
+
def getEditscale(self):
|
|
45
|
+
return self.editscale
|
|
46
|
+
|
|
47
|
+
def setEditscale(self, value):
|
|
48
|
+
if value is not None:
|
|
49
|
+
self.editscale = value
|
|
50
|
+
return self
|
|
51
|
+
|
|
52
|
+
def getEditWidth(self):
|
|
53
|
+
return self.editWidth
|
|
54
|
+
|
|
55
|
+
def setEditWidth(self, value):
|
|
56
|
+
if value is not None:
|
|
57
|
+
self.editWidth = value
|
|
58
|
+
return self
|
|
59
|
+
|
|
60
|
+
def getFilename(self):
|
|
61
|
+
return self.filename
|
|
62
|
+
|
|
63
|
+
def setFilename(self, value):
|
|
64
|
+
if value is not None:
|
|
65
|
+
self.filename = value
|
|
66
|
+
return self
|
|
67
|
+
|
|
68
|
+
def getFit(self):
|
|
69
|
+
return self.fit
|
|
70
|
+
|
|
71
|
+
def setFit(self, value):
|
|
72
|
+
if value is not None:
|
|
73
|
+
self.fit = value
|
|
74
|
+
return self
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class Map(ARObject):
|
|
78
|
+
def __init__(self):
|
|
79
|
+
super().__init__()
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class LGraphic(LanguageSpecific):
|
|
83
|
+
def __init__(self):
|
|
84
|
+
super().__init__()
|
|
85
|
+
|
|
86
|
+
self.l = None # type: str # noqa E741
|
|
87
|
+
self.graphic = None # type: Graphic
|
|
88
|
+
self.map = None # type: Map
|
|
89
|
+
|
|
90
|
+
def getL(self):
|
|
91
|
+
return self.l
|
|
92
|
+
|
|
93
|
+
def setL(self, value):
|
|
94
|
+
if value is not None:
|
|
95
|
+
self.l = value # noqa E741
|
|
96
|
+
return self
|
|
97
|
+
|
|
98
|
+
def getGraphic(self):
|
|
99
|
+
return self.graphic
|
|
100
|
+
|
|
101
|
+
def setGraphic(self, value):
|
|
102
|
+
if value is not None:
|
|
103
|
+
self.graphic = value
|
|
104
|
+
return self
|
|
105
|
+
|
|
106
|
+
def getMap(self):
|
|
107
|
+
return self.map
|
|
108
|
+
|
|
109
|
+
def setMap(self, value):
|
|
110
|
+
if value is not None:
|
|
111
|
+
self.map = value
|
|
112
|
+
return self
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
class MlFigure(Paginateable):
|
|
116
|
+
def __init__(self):
|
|
117
|
+
super().__init__()
|
|
118
|
+
|
|
119
|
+
self.figureCaption = None # type: Caption
|
|
120
|
+
self.helpEntry = None # type: String
|
|
121
|
+
self.lGraphics = [] # type: List[LGraphic]
|
|
122
|
+
self.pgwide = None # type: PgwideEnum
|
|
123
|
+
self.verbatim = None # type: MultiLanguageVerbatim
|
|
124
|
+
|
|
125
|
+
def getFigureCaption(self):
|
|
126
|
+
return self.figureCaption
|
|
127
|
+
|
|
128
|
+
def setFigureCaption(self, value):
|
|
129
|
+
if value is not None:
|
|
130
|
+
self.figureCaption = value
|
|
131
|
+
return self
|
|
132
|
+
|
|
133
|
+
def getHelpEntry(self):
|
|
134
|
+
return self.helpEntry
|
|
135
|
+
|
|
136
|
+
def setHelpEntry(self, value):
|
|
137
|
+
if value is not None:
|
|
138
|
+
self.helpEntry = value
|
|
139
|
+
return self
|
|
140
|
+
|
|
141
|
+
def getLGraphics(self):
|
|
142
|
+
return self.lGraphics
|
|
143
|
+
|
|
144
|
+
def addLGraphics(self, value):
|
|
145
|
+
if value is not None:
|
|
146
|
+
self.lGraphics.append(value)
|
|
147
|
+
return self
|
|
148
|
+
|
|
149
|
+
def getPgwide(self):
|
|
150
|
+
return self.pgwide
|
|
151
|
+
|
|
152
|
+
def setPgwide(self, value):
|
|
153
|
+
if value is not None:
|
|
154
|
+
self.pgwide = value
|
|
155
|
+
return self
|
|
156
|
+
|
|
157
|
+
def getVerbatim(self):
|
|
158
|
+
return self.verbatim
|
|
159
|
+
|
|
160
|
+
def setVerbatim(self, value):
|
|
161
|
+
if value is not None:
|
|
162
|
+
self.verbatim = value
|
|
163
|
+
return self
|
|
File without changes
|
|
@@ -3,6 +3,7 @@ from typing import List
|
|
|
3
3
|
from ......M2.MSR.Documentation.TextModel.BlockElements.PaginationAndView import Paginateable
|
|
4
4
|
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import AREnum
|
|
5
5
|
|
|
6
|
+
|
|
6
7
|
class ListEnum(AREnum):
|
|
7
8
|
|
|
8
9
|
NUMBER = 'number'
|
|
@@ -14,6 +15,7 @@ class ListEnum(AREnum):
|
|
|
14
15
|
ListEnum.UNNUMBER
|
|
15
16
|
))
|
|
16
17
|
|
|
18
|
+
|
|
17
19
|
class Item(Paginateable):
|
|
18
20
|
def __init__(self):
|
|
19
21
|
super().__init__()
|
|
@@ -27,10 +29,11 @@ class Item(Paginateable):
|
|
|
27
29
|
self.itemContents = value
|
|
28
30
|
return self
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
|
|
33
|
+
class ARList(Paginateable):
|
|
31
34
|
'''
|
|
32
35
|
This meta-class represents the ability to express a list. The kind of list is specified in the attribute.
|
|
33
|
-
In AUTOSAR standard class name shall be List, but it is conflict with Python List and renamed to
|
|
36
|
+
In AUTOSAR standard class name shall be List, but it is conflict with Python List and renamed to ARList
|
|
34
37
|
'''
|
|
35
38
|
def __init__(self):
|
|
36
39
|
super().__init__()
|
|
@@ -51,4 +54,3 @@ class ListElement(Paginateable):
|
|
|
51
54
|
def setType(self, value):
|
|
52
55
|
self.type = value
|
|
53
56
|
return self
|
|
54
|
-
|
|
@@ -1,9 +1,30 @@
|
|
|
1
1
|
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
class DocumentViewSelectable(ARObject):
|
|
4
5
|
def __init__(self):
|
|
5
6
|
super().__init__()
|
|
6
7
|
|
|
8
|
+
|
|
7
9
|
class Paginateable(DocumentViewSelectable):
|
|
8
10
|
def __init__(self):
|
|
9
|
-
super().__init__()
|
|
11
|
+
super().__init__()
|
|
12
|
+
|
|
13
|
+
self.chapterBreak = None # type: ChapterEnumBreak
|
|
14
|
+
self.keepWithPrevious = None # type: KeepWithPreviousEnum
|
|
15
|
+
|
|
16
|
+
def getBreak(self):
|
|
17
|
+
return self.chapterBreak
|
|
18
|
+
|
|
19
|
+
def setBreak(self, value):
|
|
20
|
+
if value is not None:
|
|
21
|
+
self.chapterBreak = value
|
|
22
|
+
return self
|
|
23
|
+
|
|
24
|
+
def getKeepWithPrevious(self):
|
|
25
|
+
return self.keepWithPrevious
|
|
26
|
+
|
|
27
|
+
def setKeepWithPrevious(self, value):
|
|
28
|
+
if value is not None:
|
|
29
|
+
self.keepWithPrevious = value
|
|
30
|
+
return self
|
|
@@ -1,25 +1,110 @@
|
|
|
1
|
-
from ......M2.
|
|
2
|
-
from ......M2.MSR.Documentation.TextModel.BlockElements.ListElements import
|
|
1
|
+
from ......M2.MSR.Documentation.BlockElements.Figure import MlFigure
|
|
2
|
+
from ......M2.MSR.Documentation.TextModel.BlockElements.ListElements import ARList
|
|
3
3
|
from ......M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageParagraph
|
|
4
|
+
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
4
5
|
from typing import List
|
|
5
6
|
|
|
7
|
+
|
|
6
8
|
class DocumentationBlock(ARObject):
|
|
7
9
|
def __init__(self):
|
|
8
10
|
super().__init__()
|
|
9
11
|
|
|
12
|
+
self.defList = None # type: DefList
|
|
13
|
+
self.figures = [] # type: List[MlFigure]
|
|
14
|
+
self.formula = None # type:MlFormula
|
|
15
|
+
self.labeledList = None # type: LabeledList
|
|
16
|
+
self.lists = [] # type: List[ARList]
|
|
17
|
+
self.msrQueryP2 = None # type: MsrQueryP2
|
|
18
|
+
self.note = None # type: Note
|
|
10
19
|
self.ps = [] # type: List[MultiLanguageParagraph]
|
|
11
|
-
self.
|
|
20
|
+
self.structuredReq = None # type: StructuredReq
|
|
21
|
+
self.trace = None # type: TraceableText
|
|
22
|
+
self.verbatim = None # type: MultiLanguageVerbatim
|
|
12
23
|
|
|
13
|
-
def
|
|
14
|
-
self.
|
|
24
|
+
def getDefList(self):
|
|
25
|
+
return self.defList
|
|
26
|
+
|
|
27
|
+
def setDefList(self, value):
|
|
28
|
+
if value is not None:
|
|
29
|
+
self.defList = value
|
|
30
|
+
return self
|
|
31
|
+
|
|
32
|
+
def getFigures(self):
|
|
33
|
+
return self.figures
|
|
34
|
+
|
|
35
|
+
def addFigure(self, value):
|
|
36
|
+
if value is not None:
|
|
37
|
+
self.figures.append(value)
|
|
38
|
+
return self
|
|
39
|
+
|
|
40
|
+
def getFormula(self):
|
|
41
|
+
return self.formula
|
|
42
|
+
|
|
43
|
+
def setFormula(self, value):
|
|
44
|
+
if value is not None:
|
|
45
|
+
self.formula = value
|
|
46
|
+
return self
|
|
47
|
+
|
|
48
|
+
def getLabeledList(self):
|
|
49
|
+
return self.labeledList
|
|
50
|
+
|
|
51
|
+
def setLabeledList(self, value):
|
|
52
|
+
if value is not None:
|
|
53
|
+
self.labeledList = value
|
|
15
54
|
return self
|
|
16
55
|
|
|
17
|
-
def getPs(self) -> List[MultiLanguageParagraph]:
|
|
18
|
-
return self.ps
|
|
19
|
-
|
|
20
56
|
def getLists(self):
|
|
21
57
|
return self.lists
|
|
22
58
|
|
|
23
59
|
def addList(self, value):
|
|
24
|
-
|
|
60
|
+
if value is not None:
|
|
61
|
+
self.lists.append(value)
|
|
62
|
+
return self
|
|
63
|
+
|
|
64
|
+
def getMsrQueryP2(self):
|
|
65
|
+
return self.msrQueryP2
|
|
66
|
+
|
|
67
|
+
def setMsrQueryP2(self, value):
|
|
68
|
+
if value is not None:
|
|
69
|
+
self.msrQueryP2 = value
|
|
70
|
+
return self
|
|
71
|
+
|
|
72
|
+
def getNote(self):
|
|
73
|
+
return self.note
|
|
74
|
+
|
|
75
|
+
def setNote(self, value):
|
|
76
|
+
if value is not None:
|
|
77
|
+
self.note = value
|
|
78
|
+
return self
|
|
79
|
+
|
|
80
|
+
def getPs(self) -> List[MultiLanguageParagraph]:
|
|
81
|
+
return self.ps
|
|
82
|
+
|
|
83
|
+
def addP(self, value):
|
|
84
|
+
if value is not None:
|
|
85
|
+
self.ps.append(value)
|
|
86
|
+
return self
|
|
87
|
+
|
|
88
|
+
def getStructuredReq(self):
|
|
89
|
+
return self.structuredReq
|
|
90
|
+
|
|
91
|
+
def setStructuredReq(self, value):
|
|
92
|
+
if value is not None:
|
|
93
|
+
self.structuredReq = value
|
|
94
|
+
return self
|
|
95
|
+
|
|
96
|
+
def getTrace(self):
|
|
97
|
+
return self.trace
|
|
98
|
+
|
|
99
|
+
def setTrace(self, value):
|
|
100
|
+
if value is not None:
|
|
101
|
+
self.trace = value
|
|
102
|
+
return self
|
|
103
|
+
|
|
104
|
+
def getVerbatim(self):
|
|
105
|
+
return self.verbatim
|
|
106
|
+
|
|
107
|
+
def setVerbatim(self, value):
|
|
108
|
+
if value is not None:
|
|
109
|
+
self.verbatim = value
|
|
25
110
|
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 *
|
|
@@ -33,6 +36,8 @@ from .M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import
|
|
|
33
36
|
from .M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import *
|
|
34
37
|
from .M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import *
|
|
35
38
|
from .M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import *
|
|
39
|
+
from .M2.AUTOSARTemplates.CommonStructure.StandardizationTemplate.Keyword import *
|
|
40
|
+
from .M2.AUTOSARTemplates.CommonStructure.StandardizationTemplate.BlueprintDedicated.PortPrototypeBlueprint import *
|
|
36
41
|
from .M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import *
|
|
37
42
|
from .M2.AUTOSARTemplates.DiagnosticExtract.DiagnosticContribution import *
|
|
38
43
|
from .M2.AUTOSARTemplates.SWComponentTemplate import *
|
|
@@ -56,7 +61,7 @@ from .M2.AUTOSARTemplates.SystemTemplate import *
|
|
|
56
61
|
from .M2.AUTOSARTemplates.SystemTemplate.DoIp import *
|
|
57
62
|
from .M2.AUTOSARTemplates.SystemTemplate.DataMapping import *
|
|
58
63
|
from .M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import *
|
|
59
|
-
from .M2.AUTOSARTemplates.SystemTemplate.
|
|
64
|
+
from .M2.AUTOSARTemplates.SystemTemplate.EcuResourceMapping import *
|
|
60
65
|
from .M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import *
|
|
61
66
|
from .M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import *
|
|
62
67
|
from .M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import *
|
|
@@ -71,6 +76,7 @@ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetTopology i
|
|
|
71
76
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.NetworkEndpoint import *
|
|
72
77
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetCommunication import *
|
|
73
78
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import *
|
|
79
|
+
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Flexray.FlexrayCommunication import *
|
|
74
80
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import *
|
|
75
81
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import *
|
|
76
82
|
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)
|
|
@@ -257,8 +258,11 @@ class AbstractARXMLParser:
|
|
|
257
258
|
results = []
|
|
258
259
|
for child_element in child_elements:
|
|
259
260
|
ref = RefType()
|
|
260
|
-
|
|
261
|
-
|
|
261
|
+
if 'BASE' in child_element.attrib:
|
|
262
|
+
ref.setBase(child_element.attrib['BASE'])
|
|
263
|
+
if 'DEST' in child_element.attrib:
|
|
264
|
+
ref.setDest(child_element.attrib['DEST'])
|
|
265
|
+
ref.setValue(child_element.text)
|
|
262
266
|
results.append(ref)
|
|
263
267
|
return results
|
|
264
268
|
|
|
@@ -268,13 +272,19 @@ class AbstractARXMLParser:
|
|
|
268
272
|
return None
|
|
269
273
|
|
|
270
274
|
def readARObjectAttributes(self, element: ET.Element, ar_object: ARObject):
|
|
271
|
-
ar_object.timestamp = self.readElementOptionalAttrib(element, "T")
|
|
272
|
-
ar_object.uuid
|
|
275
|
+
ar_object.timestamp = self.readElementOptionalAttrib(element, "T") # read the timestamp
|
|
276
|
+
ar_object.uuid = self.readElementOptionalAttrib(element, "UUID") # read the uuid
|
|
273
277
|
|
|
274
|
-
if ar_object.timestamp is not None:
|
|
275
|
-
|
|
278
|
+
# if ar_object.timestamp is not None:
|
|
279
|
+
# self.logger.debug("Timestamp: %s" % ar_object.timestamp)
|
|
276
280
|
if ar_object.uuid is not None:
|
|
277
|
-
|
|
281
|
+
instance = AUTOSAR.getInstance()
|
|
282
|
+
old_ar_object = instance.getARObjectByUUID(ar_object.uuid)
|
|
283
|
+
if old_ar_object is not None:
|
|
284
|
+
self.logger.warning(Fore.YELLOW + "Duplicate UUID <%s> / type <%s>" % (ar_object.uuid, type(old_ar_object)) + Fore.WHITE)
|
|
285
|
+
else:
|
|
286
|
+
instance.addARObject(ar_object)
|
|
287
|
+
# self.logger.debug("UUID: %s" % ar_object.uuid)
|
|
278
288
|
|
|
279
289
|
def getAUTOSARInfo(self, element: ET.Element, document: AUTOSAR):
|
|
280
290
|
key = "{http://www.w3.org/2001/XMLSchema-instance}schemaLocation"
|
|
@@ -295,12 +305,9 @@ class AbstractARXMLParser:
|
|
|
295
305
|
if item != "*" and item != ".":
|
|
296
306
|
keys[idx] = "xmlns:%s" % item
|
|
297
307
|
return "/".join(keys)
|
|
298
|
-
|
|
299
|
-
def
|
|
300
|
-
return parent.find("xmlns:./child::%s" % key, self.nsmap)
|
|
301
|
-
|
|
302
|
-
def find(self, parent:ET.Element, key: str) -> ET.Element:
|
|
308
|
+
|
|
309
|
+
def find(self, parent: ET.Element, key: str) -> ET.Element:
|
|
303
310
|
return parent.find(self.convert_find_key(key), self.nsmap)
|
|
304
311
|
|
|
305
312
|
def findall(self, parent: ET.Element, key: str) -> List[ET.Element]:
|
|
306
|
-
return parent.findall(self.convert_find_key(key), self.nsmap)
|
|
313
|
+
return parent.findall(self.convert_find_key(key), self.nsmap)
|