py-eb-model 1.1.0__py3-none-any.whl → 1.1.2__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.
- eb_model/cli/pref_system_importer_cli.py +7 -5
- eb_model/models/abstract.py +57 -1
- eb_model/models/importer_xdm.py +1 -0
- eb_model/models/os_xdm.py +2 -3
- eb_model/models/rte_xdm.py +82 -23
- eb_model/parser/eb_parser.py +16 -3
- eb_model/parser/os_xdm_parser.py +26 -1
- eb_model/parser/pref_xdm_parser.py +12 -1
- eb_model/parser/rte_xdm_parser.py +48 -18
- eb_model/reporter/excel_reporter/rte_xdm.py +1 -1
- eb_model/writer/project_writer.py +1 -1
- {py_eb_model-1.1.0.dist-info → py_eb_model-1.1.2.dist-info}/METADATA +9 -2
- {py_eb_model-1.1.0.dist-info → py_eb_model-1.1.2.dist-info}/RECORD +17 -17
- {py_eb_model-1.1.0.dist-info → py_eb_model-1.1.2.dist-info}/LICENSE +0 -0
- {py_eb_model-1.1.0.dist-info → py_eb_model-1.1.2.dist-info}/WHEEL +0 -0
- {py_eb_model-1.1.0.dist-info → py_eb_model-1.1.2.dist-info}/entry_points.txt +0 -0
- {py_eb_model-1.1.0.dist-info → py_eb_model-1.1.2.dist-info}/top_level.txt +0 -0
@@ -16,7 +16,7 @@ def main():
|
|
16
16
|
ap.add_argument("-v", "--verbose", required= False, help = "print debug information.", action = "store_true")
|
17
17
|
ap.add_argument("--file-list", required=False, help = "generate the file list (Default)", action = "store_true")
|
18
18
|
ap.add_argument("--ab-project", required=False, help = "generate the AUTOSAR builder project", action = "store_true")
|
19
|
-
ap.add_argument("--base-path", required=
|
19
|
+
ap.add_argument("--base-path", required=True, help="base Path for EB tresos")
|
20
20
|
ap.add_argument("--env", required=False, help="specify the environment variable", nargs='+')
|
21
21
|
ap.add_argument("--project", required=False, help="specify the project name")
|
22
22
|
ap.add_argument("INPUTS", nargs='+', help = "The path of perf_imp_xxx.xdm.")
|
@@ -60,6 +60,11 @@ def main():
|
|
60
60
|
try:
|
61
61
|
doc = PreferenceModel.getInstance()
|
62
62
|
|
63
|
+
params = {}
|
64
|
+
params['base_path'] = args.base_path
|
65
|
+
params['wildcard'] = True
|
66
|
+
params['project'] = args.project
|
67
|
+
|
63
68
|
parser = PerfXdmParser()
|
64
69
|
for file in args.INPUTS:
|
65
70
|
if args.base_path is not None:
|
@@ -68,10 +73,7 @@ def main():
|
|
68
73
|
file_name = file
|
69
74
|
parser.parse_preference_xdm(file_name, doc)
|
70
75
|
|
71
|
-
params
|
72
|
-
params['base_path'] = args.base_path
|
73
|
-
params['wildcard'] = True
|
74
|
-
params['project'] = args.project
|
76
|
+
parser.add_ecu_extract(doc, params)
|
75
77
|
|
76
78
|
if args.env is not None:
|
77
79
|
for env in args.env:
|
eb_model/models/abstract.py
CHANGED
@@ -80,4 +80,60 @@ class EcucRefType:
|
|
80
80
|
m = re.match(r'\/[\w\/]+\/(\w+)', self.value)
|
81
81
|
if m:
|
82
82
|
return m.group(1)
|
83
|
-
return self.value
|
83
|
+
return self.value
|
84
|
+
|
85
|
+
class Version:
|
86
|
+
def __init__(self):
|
87
|
+
self.majorVersion = None
|
88
|
+
self.minorVersion = None
|
89
|
+
self.patchVersion = None
|
90
|
+
|
91
|
+
def getMajorVersion(self):
|
92
|
+
return self.majorVersion
|
93
|
+
|
94
|
+
def setMajorVersion(self, value):
|
95
|
+
if value is not None:
|
96
|
+
self.majorVersion = value
|
97
|
+
return self
|
98
|
+
|
99
|
+
def getMinorVersion(self):
|
100
|
+
return self.minorVersion
|
101
|
+
|
102
|
+
def setMinorVersion(self, value):
|
103
|
+
if value is not None:
|
104
|
+
self.minorVersion = value
|
105
|
+
return self
|
106
|
+
|
107
|
+
def getPatchVersion(self):
|
108
|
+
return self.patchVersion
|
109
|
+
|
110
|
+
def setPatchVersion(self, value):
|
111
|
+
if value is not None:
|
112
|
+
self.patchVersion = value
|
113
|
+
return self
|
114
|
+
|
115
|
+
def getVersion(self) -> str:
|
116
|
+
return "%d.%d.%d" % (self.majorVersion, self.minorVersion, self.patchVersion)
|
117
|
+
|
118
|
+
class Module(EcucContainer):
|
119
|
+
def __init__(self, parent, name):
|
120
|
+
super().__init__(parent, name)
|
121
|
+
|
122
|
+
self.arVersion = Version()
|
123
|
+
self.swVersion = Version()
|
124
|
+
|
125
|
+
def getArVersion(self):
|
126
|
+
return self.arVersion
|
127
|
+
|
128
|
+
def setArVersion(self, value):
|
129
|
+
if value is not None:
|
130
|
+
self.arVersion = value
|
131
|
+
return self
|
132
|
+
|
133
|
+
def getSwVersion(self):
|
134
|
+
return self.swVersion
|
135
|
+
|
136
|
+
def setSwVersion(self, value):
|
137
|
+
if value is not None:
|
138
|
+
self.swVersion = value
|
139
|
+
return self
|
eb_model/models/importer_xdm.py
CHANGED
eb_model/models/os_xdm.py
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
from typing import List
|
2
2
|
|
3
|
-
from ..models.abstract import EcucContainer, EcucObject, EcucRefType
|
4
|
-
|
3
|
+
from ..models.abstract import EcucContainer, EcucObject, EcucRefType, Module
|
5
4
|
|
6
5
|
class OsAlarmAction(EcucContainer):
|
7
6
|
def __init__(self, parent, name) -> None:
|
@@ -933,7 +932,7 @@ class OsScheduleTable(EcucContainer):
|
|
933
932
|
return self
|
934
933
|
|
935
934
|
|
936
|
-
class Os(
|
935
|
+
class Os(Module):
|
937
936
|
def __init__(self, parent) -> None:
|
938
937
|
super().__init__(parent, "Os")
|
939
938
|
|
eb_model/models/rte_xdm.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
+
from abc import ABCMeta
|
1
2
|
from typing import Dict, List
|
2
|
-
from .abstract import EcucContainer, EcucRefType
|
3
|
-
|
3
|
+
from ..models.abstract import EcucContainer, EcucRefType, Module
|
4
4
|
class RteEventToIsrMapping(EcucContainer):
|
5
5
|
def __init__(self, parent, name) -> None:
|
6
6
|
super().__init__(parent, name)
|
@@ -11,8 +11,11 @@ class RteEventToIsrMapping(EcucContainer):
|
|
11
11
|
self.RteRipsFillRoutineRef = None
|
12
12
|
self.RteRipsFlushRoutineRef = None
|
13
13
|
|
14
|
-
class AbstractEventToTaskMapping(EcucContainer):
|
14
|
+
class AbstractEventToTaskMapping(EcucContainer, metaclass = ABCMeta):
|
15
15
|
def __init__(self, parent, name) -> None:
|
16
|
+
if type(self) == AbstractEventToTaskMapping:
|
17
|
+
raise ValueError("RteEventToTaskMapping is an abstract class.")
|
18
|
+
|
16
19
|
super().__init__(parent, name)
|
17
20
|
|
18
21
|
self.rtePositionInTask = None
|
@@ -24,8 +27,11 @@ class AbstractEventToTaskMapping(EcucContainer):
|
|
24
27
|
self.rtePositionInTask = value
|
25
28
|
return self
|
26
29
|
|
27
|
-
class RteEventToTaskMapping(AbstractEventToTaskMapping):
|
30
|
+
class RteEventToTaskMapping(AbstractEventToTaskMapping, metaclass = ABCMeta):
|
28
31
|
def __init__(self, parent, name) -> None:
|
32
|
+
if type(self) == RteEventToTaskMapping:
|
33
|
+
raise ValueError("RteEventToTaskMapping is an abstract class.")
|
34
|
+
|
29
35
|
super().__init__(parent, name)
|
30
36
|
|
31
37
|
self.rteActivationOffset = None
|
@@ -35,7 +41,7 @@ class RteEventToTaskMapping(AbstractEventToTaskMapping):
|
|
35
41
|
self.rteServerNumberOfRequestProcessing = None
|
36
42
|
self.rteServerQueueLength = None
|
37
43
|
self.rteEventPredecessorSyncPointRef = None
|
38
|
-
|
44
|
+
|
39
45
|
self.rteEventSuccessorSyncPointRef = None
|
40
46
|
self.rteMappedToTaskRef = None
|
41
47
|
self.rtePeriod = None
|
@@ -100,13 +106,6 @@ class RteEventToTaskMapping(AbstractEventToTaskMapping):
|
|
100
106
|
self.rteEventPredecessorSyncPointRef = value
|
101
107
|
return self
|
102
108
|
|
103
|
-
def getRteEventRef(self) -> EcucRefType:
|
104
|
-
return self.rteEventRef
|
105
|
-
|
106
|
-
def setRteEventRef(self, value: EcucRefType):
|
107
|
-
self.rteEventRef = value
|
108
|
-
return self
|
109
|
-
|
110
109
|
def getRteEventSuccessorSyncPointRef(self):
|
111
110
|
return self.rteEventSuccessorSyncPointRef
|
112
111
|
|
@@ -182,7 +181,43 @@ class RteEventToTaskMapping(AbstractEventToTaskMapping):
|
|
182
181
|
|
183
182
|
def setRteVirtuallyMappedToTaskRef(self, value):
|
184
183
|
self.rteVirtuallyMappedToTaskRef = value
|
185
|
-
return self
|
184
|
+
return self
|
185
|
+
|
186
|
+
# abstract method
|
187
|
+
def getRteEventRef(self) -> EcucRefType:
|
188
|
+
pass
|
189
|
+
|
190
|
+
class RteEventToTaskMappingV3(RteEventToTaskMapping):
|
191
|
+
def __init__(self, parent, name):
|
192
|
+
super().__init__(parent, name)
|
193
|
+
|
194
|
+
self.rteEventRef = None
|
195
|
+
|
196
|
+
def getRteEventRef(self) -> EcucRefType:
|
197
|
+
return self.rteEventRef
|
198
|
+
|
199
|
+
def setRteEventRef(self, value: EcucRefType):
|
200
|
+
self.rteEventRef = value
|
201
|
+
return self
|
202
|
+
|
203
|
+
class RteEventToTaskMappingV4(RteEventToTaskMapping):
|
204
|
+
def __init__(self, parent, name):
|
205
|
+
super().__init__(parent, name)
|
206
|
+
|
207
|
+
self.rteEventRefs = []
|
208
|
+
|
209
|
+
def getRteEventRefs(self):
|
210
|
+
return self.rteEventRefs
|
211
|
+
|
212
|
+
def addRteEventRef(self, value):
|
213
|
+
if value is not None:
|
214
|
+
self.rteEventRefs.append(value)
|
215
|
+
return self
|
216
|
+
|
217
|
+
def getRteEventRef(self):
|
218
|
+
if len(self.rteEventRefs) != 1:
|
219
|
+
raise ValueError("Unsupported RteEventRef of RteEventToTaskMapping <%s> " % self.name)
|
220
|
+
return self.rteEventRefs[0]
|
186
221
|
|
187
222
|
class RteBswEventToTaskMapping(AbstractEventToTaskMapping):
|
188
223
|
def __init__(self, parent, name) -> None:
|
@@ -196,7 +231,7 @@ class RteBswEventToTaskMapping(AbstractEventToTaskMapping):
|
|
196
231
|
self.rteBswServerQueueLength = None
|
197
232
|
self.rteOsSchedulePoint = None
|
198
233
|
self.rteBswEventPredecessorSyncPointRef = None
|
199
|
-
|
234
|
+
|
200
235
|
self.rteBswMappedToTaskRef = None
|
201
236
|
self.rteBswUsedOsAlarmRef = None
|
202
237
|
self.rteBswUsedOsEventRef = None
|
@@ -263,13 +298,6 @@ class RteBswEventToTaskMapping(AbstractEventToTaskMapping):
|
|
263
298
|
self.rteBswEventPredecessorSyncPointRef = value
|
264
299
|
return self
|
265
300
|
|
266
|
-
def getRteBswEventRef(self) -> EcucRefType:
|
267
|
-
return self.rteBswEventRef
|
268
|
-
|
269
|
-
def setRteBswEventRef(self, value: EcucRefType):
|
270
|
-
self.rteBswEventRef = value
|
271
|
-
return self
|
272
|
-
|
273
301
|
def getRteBswMappedToTaskRef(self) -> EcucRefType:
|
274
302
|
return self.rteBswMappedToTaskRef
|
275
303
|
|
@@ -312,6 +340,37 @@ class RteBswEventToTaskMapping(AbstractEventToTaskMapping):
|
|
312
340
|
self.rteRipsFlushRoutineRef = value
|
313
341
|
return self
|
314
342
|
|
343
|
+
class RteBswEventToTaskMappingV3(RteBswEventToTaskMapping):
|
344
|
+
def __init__(self, parent, name):
|
345
|
+
super().__init__(parent, name)
|
346
|
+
|
347
|
+
self.rteBswEventRef = None # type: EcucRefType
|
348
|
+
|
349
|
+
def getRteBswEventRef(self):
|
350
|
+
return self.rteBswEventRef
|
351
|
+
|
352
|
+
def setRteBswEventRef(self, value):
|
353
|
+
if value is not None:
|
354
|
+
self.rteBswEventRef = value
|
355
|
+
return self
|
356
|
+
|
357
|
+
class RteBswEventToTaskMappingV4(RteBswEventToTaskMapping):
|
358
|
+
def __init__(self, parent, name):
|
359
|
+
super().__init__(parent, name)
|
360
|
+
|
361
|
+
self.rteBswEventRefs = [] # type: List[EcucRefType]
|
362
|
+
|
363
|
+
def getRteBswEventRefs(self) -> EcucRefType:
|
364
|
+
return self.rteBswEventRefs
|
365
|
+
|
366
|
+
def addRteBswEventRef(self, value: EcucRefType):
|
367
|
+
self.rteBswEventRefs.append(value)
|
368
|
+
return self
|
369
|
+
|
370
|
+
def getRteBswEventRef(self):
|
371
|
+
if len(self.rteBswEventRefs) != 1:
|
372
|
+
raise ValueError("Unsupported RteEventRef of RteEventToTaskMapping <%s> " % self.name)
|
373
|
+
return self.rteBswEventRefs[0]
|
315
374
|
|
316
375
|
class AbstractRteInstance(EcucContainer):
|
317
376
|
def __init__(self, parent, name) -> None:
|
@@ -503,8 +562,8 @@ class RteBswModuleInstance(AbstractRteInstance):
|
|
503
562
|
def setRteMappedToOsApplicationRef(self, value):
|
504
563
|
self.rteMappedToOsApplicationRef = value
|
505
564
|
return self
|
506
|
-
|
507
|
-
class Rte(
|
565
|
+
|
566
|
+
class Rte(Module):
|
508
567
|
def __init__(self, parent) -> None:
|
509
568
|
super().__init__(parent, "Rte")
|
510
569
|
|
eb_model/parser/eb_parser.py
CHANGED
@@ -6,7 +6,7 @@ from abc import ABCMeta
|
|
6
6
|
from typing import List
|
7
7
|
|
8
8
|
from ..models.eb_doc import EBModel, PreferenceModel
|
9
|
-
from ..models.abstract import EcucRefType
|
9
|
+
from ..models.abstract import EcucRefType, Module
|
10
10
|
|
11
11
|
class AbstractEbModelParser(metaclass = ABCMeta):
|
12
12
|
|
@@ -17,10 +17,23 @@ class AbstractEbModelParser(metaclass = ABCMeta):
|
|
17
17
|
|
18
18
|
if type(self) == "AbstractEBModelParser":
|
19
19
|
raise ValueError("Abstract EBModelParser cannot be initialized.")
|
20
|
-
|
20
|
+
|
21
21
|
def validate_root(self, element: ET.Element):
|
22
22
|
if (element.tag != "{%s}%s" % (self.nsmap[''], "datamodel")):
|
23
23
|
raise ValueError("This document <%s> is not EB xdm format" % element.tag)
|
24
|
+
|
25
|
+
def read_version(self, parent: ET.Element, module: Module):
|
26
|
+
ctr_tag = self.find_ctr_tag(parent, "CommonPublishedInformation")
|
27
|
+
if ctr_tag is not None:
|
28
|
+
ar_version = module.getArVersion()
|
29
|
+
ar_version.setMajorVersion(self.read_value(ctr_tag, "ArMajorVersion"))
|
30
|
+
ar_version.setMinorVersion(self.read_value(ctr_tag, "ArMinorVersion"))
|
31
|
+
ar_version.setPatchVersion(self.read_value(ctr_tag, "ArPatchVersion"))
|
32
|
+
|
33
|
+
sw_version = module.getSwVersion()
|
34
|
+
sw_version.setMajorVersion(self.read_value(ctr_tag, "SwMajorVersion"))
|
35
|
+
sw_version.setMinorVersion(self.read_value(ctr_tag, "SwMinorVersion"))
|
36
|
+
sw_version.setPatchVersion(self.read_value(ctr_tag, "SwPatchVersion"))
|
24
37
|
|
25
38
|
def read_ref_raw_value(self, value):
|
26
39
|
'''
|
@@ -32,7 +45,7 @@ class AbstractEbModelParser(metaclass = ABCMeta):
|
|
32
45
|
return match.group(1)
|
33
46
|
return value
|
34
47
|
|
35
|
-
def _convert_value(self, tag):
|
48
|
+
def _convert_value(self, tag: ET.Element):
|
36
49
|
if 'type' in tag.attrib:
|
37
50
|
if (tag.attrib['type'] == 'INTEGER'):
|
38
51
|
return int(tag.attrib['value'])
|
eb_model/parser/os_xdm_parser.py
CHANGED
@@ -8,12 +8,21 @@ class OsXdmParser(AbstractEbModelParser):
|
|
8
8
|
def __init__(self, ) -> None:
|
9
9
|
super().__init__()
|
10
10
|
|
11
|
+
self.os = None
|
12
|
+
|
11
13
|
def parse(self, element: ET.Element, doc: EBModel):
|
12
14
|
if self.get_component_name(element) != "Os":
|
13
15
|
raise ValueError("Invalid <%s> xdm file" % "Os")
|
14
16
|
|
15
17
|
os = doc.getOs()
|
16
18
|
|
19
|
+
self.read_version(element, os)
|
20
|
+
|
21
|
+
self.logger.info("Parse Rte ARVersion:<%s> SwVersion:<%s>" %
|
22
|
+
(os.getArVersion().getVersion(), os.getSwVersion().getVersion()))
|
23
|
+
|
24
|
+
self.os = os
|
25
|
+
|
17
26
|
self.read_os_tasks(element, os)
|
18
27
|
self.read_os_isrs(element, os)
|
19
28
|
self.read_os_alarms(element, os)
|
@@ -35,7 +44,7 @@ class OsXdmParser(AbstractEbModelParser):
|
|
35
44
|
os_task.setOsTaskPriority(int(self.read_value(ctr_tag, "OsTaskPriority"))) \
|
36
45
|
.setOsTaskActivation(self.read_value(ctr_tag, "OsTaskActivation")) \
|
37
46
|
.setOsTaskSchedule(self.read_value(ctr_tag, "OsTaskSchedule")) \
|
38
|
-
.setOsTaskType(self.
|
47
|
+
.setOsTaskType(self.read_optional_value(ctr_tag, "OsTaskType")) \
|
39
48
|
.setOsStacksize(int(self.read_optional_value(ctr_tag, "OsStacksize", 0)))
|
40
49
|
|
41
50
|
for resource_ref in self.read_ref_value_list(ctr_tag, "OsTaskResourceRef"):
|
@@ -157,8 +166,24 @@ class OsXdmParser(AbstractEbModelParser):
|
|
157
166
|
os_app = OsApplication(os, ctr_tag.attrib["name"]) \
|
158
167
|
.setOsTrusted(self.read_value(ctr_tag, "OsTrusted"))
|
159
168
|
|
169
|
+
for ref in self.read_ref_value_list(ctr_tag, "OsAppAlarmRef"):
|
170
|
+
os_app.addOsAppAlarmRef(ref)
|
171
|
+
|
172
|
+
for ref in self.read_ref_value_list(ctr_tag, "OsAppCounterRef"):
|
173
|
+
os_app.addOsAppCounterRefs(ref)
|
174
|
+
|
175
|
+
for ref in self.read_ref_value_list(ctr_tag, "OsAppScheduleTableRef"):
|
176
|
+
os_app.addOsAppScheduleTableRef(ref)
|
177
|
+
|
160
178
|
for ref in self.read_ref_value_list(ctr_tag, "OsAppResourceRef"):
|
161
179
|
os_app.addOsAppResourceRef(ref)
|
162
180
|
|
181
|
+
for ref in self.read_ref_value_list(ctr_tag, "OsAppTaskRef"):
|
182
|
+
os_app.addOsAppTaskRefs(ref)
|
183
|
+
|
184
|
+
for ref in self.read_ref_value_list(ctr_tag, "OsAppIsrRef"):
|
185
|
+
os_app.addOsAppIsrRefs(ref)
|
186
|
+
|
187
|
+
|
163
188
|
self.logger.debug("Read OsApplication <%s>" % os_app.getName())
|
164
189
|
os.addOsApplication(os_app)
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import xml.etree.ElementTree as ET
|
2
2
|
import logging
|
3
|
+
import os
|
3
4
|
from ..models.eb_doc import PreferenceModel
|
4
5
|
from ..models.importer_xdm import SystemDescriptionImporter
|
5
6
|
from . import AbstractEbModelParser
|
@@ -22,4 +23,14 @@ class PerfXdmParser(AbstractEbModelParser):
|
|
22
23
|
for ctr_tag in self.find_ctr_tag_list(element, "SystemDescriptionImporters"):
|
23
24
|
self.logger.info("Parse SystemDescriptionImporters: <%s>" % ctr_tag.attrib["name"])
|
24
25
|
self.parse_input_files(ctr_tag, importer)
|
25
|
-
#importer.addInputFile()
|
26
|
+
#importer.addInputFile()
|
27
|
+
|
28
|
+
def add_ecu_extract(self, doc: PreferenceModel, params = {'base_path': None, 'wildcard': None, "project": None}):
|
29
|
+
importer = doc.getSystemDescriptionImporter()
|
30
|
+
|
31
|
+
#if params['base_path'] is None:
|
32
|
+
# raise ValueError("Please specify the base path")
|
33
|
+
|
34
|
+
#ecu_extract_path = os.path.join(params['base_path'], '')
|
35
|
+
|
36
|
+
importer.addInputFile('systemmod/EcuExtract.arxml')
|
@@ -1,63 +1,93 @@
|
|
1
1
|
import xml.etree.ElementTree as ET
|
2
2
|
|
3
|
-
from ..models.rte_xdm import Rte, RteBswEventToTaskMapping, RteBswModuleInstance, RteEventToTaskMapping, RteSwComponentInstance
|
3
|
+
from ..models.rte_xdm import Rte, RteBswEventToTaskMapping, RteBswEventToTaskMappingV3, RteBswEventToTaskMappingV4, RteBswModuleInstance, RteEventToTaskMapping, RteEventToTaskMappingV3, RteEventToTaskMappingV4, RteSwComponentInstance
|
4
4
|
from ..models.eb_doc import EBModel
|
5
|
-
from .eb_parser import AbstractEbModelParser
|
5
|
+
from ..parser.eb_parser import AbstractEbModelParser
|
6
6
|
|
7
7
|
class RteXdmParser(AbstractEbModelParser):
|
8
8
|
def __init__(self, ) -> None:
|
9
9
|
super().__init__()
|
10
|
+
self.rte = None
|
10
11
|
|
11
12
|
def parse(self, element: ET.Element, doc: EBModel):
|
12
13
|
if self.get_component_name(element) != "Rte":
|
13
14
|
raise ValueError("Invalid <%s> xdm file" % "Rte")
|
14
15
|
|
15
|
-
|
16
|
-
self.
|
16
|
+
rte = doc.getRte()
|
17
|
+
self.read_version(element, rte)
|
18
|
+
|
19
|
+
self.logger.info("Parse Rte ARVersion:<%s> SwVersion:<%s>" %
|
20
|
+
(rte.getArVersion().getVersion(), rte.getSwVersion().getVersion()))
|
21
|
+
|
22
|
+
self.rte = rte
|
23
|
+
|
24
|
+
self.read_rte_bsw_module_instances(element, rte)
|
25
|
+
self.read_rte_sw_component_instances(element, rte)
|
17
26
|
|
18
27
|
def read_rte_bsw_module_instance_event_to_task_mappings(self, element: ET.Element, instance: RteBswModuleInstance):
|
19
28
|
for ctr_tag in self.find_ctr_tag_list(element, "RteBswEventToTaskMapping"):
|
20
|
-
|
29
|
+
self.logger.debug("Read RteBswEventToTaskMapping <%s>" % ctr_tag.attrib['name'])
|
30
|
+
|
31
|
+
if self.rte.getArVersion().getMajorVersion() >= 4:
|
32
|
+
mapping = RteBswEventToTaskMappingV4(instance, ctr_tag.attrib['name'])
|
33
|
+
else:
|
34
|
+
mapping = RteBswEventToTaskMappingV3(instance, ctr_tag.attrib['name'])
|
35
|
+
|
21
36
|
mapping.setRteBswActivationOffset(self.read_optional_value(ctr_tag, "RteBswActivationOffset")) \
|
22
37
|
.setRteBswEventPeriod(self.read_optional_value(ctr_tag, "RteBswPeriod")) \
|
23
38
|
.setRteBswPositionInTask(self.read_optional_value(ctr_tag, "RteBswPositionInTask")) \
|
24
|
-
.setRteBswServerQueueLength(self.read_optional_value(ctr_tag, "RteBswServerQueueLength"))
|
25
|
-
|
26
|
-
|
39
|
+
.setRteBswServerQueueLength(self.read_optional_value(ctr_tag, "RteBswServerQueueLength"))
|
40
|
+
|
41
|
+
if isinstance(mapping, RteBswEventToTaskMappingV4):
|
42
|
+
for resource_ref in self.read_ref_value_list(ctr_tag, "RteBswEventRef"):
|
43
|
+
mapping.addRteBswEventRef(resource_ref)
|
44
|
+
elif isinstance(mapping, RteBswEventToTaskMappingV3):
|
45
|
+
mapping.setRteBswEventRef(self.read_ref_value(ctr_tag, "RteBswEventRef"))
|
46
|
+
|
47
|
+
mapping.setRteBswMappedToTaskRef(self.read_optional_ref_value(ctr_tag, "RteBswMappedToTaskRef"))
|
27
48
|
instance.addRteBswEventToTaskMapping(mapping)
|
28
49
|
|
29
50
|
def read_rte_bsw_module_instances(self, element: ET.Element, rte: Rte):
|
30
51
|
for ctr_tag in self.find_ctr_tag_list(element, 'RteBswModuleInstance'):
|
52
|
+
self.logger.debug("Read RteBswModuleInstance <%s>" % ctr_tag.attrib['name'])
|
53
|
+
|
31
54
|
instance = RteBswModuleInstance(rte, ctr_tag.attrib['name'])
|
32
55
|
instance.setRteBswImplementationRef(self.read_ref_value(ctr_tag, "RteBswImplementationRef")) \
|
33
56
|
.setRteMappedToOsApplicationRef(self.read_optional_ref_value(ctr_tag, "RteMappedToOsApplicationRef"))
|
34
57
|
|
35
58
|
self.read_rte_bsw_module_instance_event_to_task_mappings(ctr_tag, instance)
|
36
|
-
|
37
|
-
self.logger.debug("Add the RteBswModuleInstance <%s>" % instance.getName())
|
38
|
-
|
39
59
|
rte.addRteBswModuleInstance(instance)
|
40
60
|
|
41
61
|
def read_rte_sw_component_instance_event_to_task_mappings(self, element: ET.Element, instance: RteSwComponentInstance):
|
42
62
|
for ctr_tag in self.find_ctr_tag_list(element, "RteEventToTaskMapping"):
|
43
|
-
|
63
|
+
|
64
|
+
if self.rte.getArVersion().getMajorVersion() >= 4:
|
65
|
+
mapping = RteEventToTaskMappingV4(instance, ctr_tag.attrib['name'])
|
66
|
+
else:
|
67
|
+
mapping = RteEventToTaskMappingV3(instance, ctr_tag.attrib['name'])
|
68
|
+
|
44
69
|
mapping.setRteActivationOffset(self.read_optional_value(ctr_tag, "RteActivationOffset")) \
|
45
70
|
.setRtePeriod(self.read_optional_value(ctr_tag, "RtePeriod")) \
|
46
71
|
.setRtePositionInTask(self.read_optional_value(ctr_tag, "RtePositionInTask")) \
|
47
|
-
.setRteServerQueueLength(self.read_optional_value(ctr_tag, "RteServerQueueLength"))
|
48
|
-
|
49
|
-
|
72
|
+
.setRteServerQueueLength(self.read_optional_value(ctr_tag, "RteServerQueueLength"))
|
73
|
+
|
74
|
+
if isinstance(mapping, RteEventToTaskMappingV4):
|
75
|
+
for resource_ref in self.read_ref_value_list(ctr_tag, "RteEventRef"):
|
76
|
+
mapping.addRteEventRef(resource_ref)
|
77
|
+
elif isinstance(mapping, RteEventToTaskMappingV3):
|
78
|
+
mapping.setRteEventRef(self.read_ref_value(ctr_tag, "RteEventRef"))
|
79
|
+
|
80
|
+
mapping.setRteMappedToTaskRef(self.read_optional_ref_value(ctr_tag, "RteMappedToTaskRef"))
|
50
81
|
|
51
82
|
instance.addRteEventToTaskMapping(mapping)
|
52
83
|
|
53
84
|
def read_rte_sw_component_instances(self, element: ET.Element, rte: Rte):
|
54
85
|
for ctr_tag in self.find_ctr_tag_list(element, 'RteSwComponentInstance'):
|
86
|
+
self.logger.debug("Read RteSwComponentInstance <%s>" % ctr_tag.attrib['name'])
|
87
|
+
|
55
88
|
instance = RteSwComponentInstance(rte, ctr_tag.attrib['name'])
|
56
89
|
instance.setMappedToOsApplicationRef(self.read_optional_ref_value(ctr_tag, "MappedToOsApplicationRef")) \
|
57
90
|
.setRteSoftwareComponentInstanceRef(self.read_optional_ref_value(ctr_tag, "RteSoftwareComponentInstanceRef"))
|
58
91
|
|
59
92
|
self.read_rte_sw_component_instance_event_to_task_mappings(ctr_tag, instance)
|
60
|
-
|
61
|
-
self.logger.debug("Add the RteSwComponentInstance <%s>" % instance.getName())
|
62
|
-
|
63
93
|
rte.addRteSwComponentInstance(instance)
|
@@ -62,7 +62,7 @@ class RteRunnableEntityXlsWriter(ExcelReporter):
|
|
62
62
|
if isinstance(mapping, RteBswEventToTaskMapping):
|
63
63
|
self.logger.debug("Write Mapping %s" % mapping.getName())
|
64
64
|
instance = mapping.getRteBswModuleInstance()
|
65
|
-
self.write_cell(sheet, row, 2, mapping.
|
65
|
+
self.write_cell(sheet, row, 2, mapping.getRteBswEventRefs().getShortName())
|
66
66
|
self.write_cell(sheet, row, 5, instance.getRteBswImplementationRef().getValue())
|
67
67
|
self.write_cell(sheet, row, 6, mapping.getRteBswPositionInTask())
|
68
68
|
self.write_cell(sheet, row, 7, mapping.getRteBswActivationOffset())
|
@@ -2,6 +2,7 @@ from typing import List
|
|
2
2
|
from xml.dom import minidom
|
3
3
|
import xml.etree.ElementTree as ET
|
4
4
|
import logging
|
5
|
+
import os
|
5
6
|
|
6
7
|
from ..models.eclipse_project import Link
|
7
8
|
from ..models.importer_xdm import SystemDescriptionImporter
|
@@ -62,7 +63,6 @@ class ABProjectWriter(EclipseProjectWriter):
|
|
62
63
|
|
63
64
|
with open(filename, "w", encoding="utf-8") as f_out:
|
64
65
|
f_out.write(xml.decode())
|
65
|
-
|
66
66
|
|
67
67
|
def writer_import_files(self, filename: str, importer: SystemDescriptionImporter, params = {'base_path': None, 'wildcard': None, "project": None}):
|
68
68
|
self.logger.info("Generate AB project <%s>" % filename)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: py-eb-model
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.2
|
4
4
|
Summary: The parser for EB XDM file
|
5
5
|
Home-page: UNKNOWN
|
6
6
|
Author: melodypapa
|
@@ -178,7 +178,14 @@ PrefSystemImporter --base-path c:/EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rt
|
|
178
178
|
2. Add the support to read OsTaskAutostart element.
|
179
179
|
3. Add the support to read OsTaskType element.
|
180
180
|
|
181
|
-
**Version 1.1.
|
181
|
+
**Version 1.1.1**
|
182
|
+
|
183
|
+
1. Add the support to append SystemMod/EcuExtract.arxml into list automatically for PrefSystemImporter.
|
184
|
+
|
185
|
+
**Version 1.1.2**
|
186
|
+
|
187
|
+
1. Read the OsAppTaskRef from OsApplication.
|
188
|
+
|
182
189
|
|
183
190
|
|
184
191
|
|
@@ -1,34 +1,34 @@
|
|
1
1
|
eb_model/__init__.py,sha256=oMw5xoAS-lHLxufQSlBIXhGZZMcPmwGFA3PYpTwaQTU,92
|
2
2
|
eb_model/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
3
|
eb_model/cli/os_xdm_2_xls_cli.py,sha256=lTIYNVDDMIKu6sosjV8I3pLQxD-I11cKjUDXTyKDrLE,1643
|
4
|
-
eb_model/cli/pref_system_importer_cli.py,sha256=
|
4
|
+
eb_model/cli/pref_system_importer_cli.py,sha256=Cra-rVpgxruLLyWHRdYAgbwfcHVPV2L8Jk6ck0v4lJU,3361
|
5
5
|
eb_model/cli/rte_xdm_2_xls_cli.py,sha256=83uzE2Vk0h267gWxF9mnWN3Bh69RJpYyKULFXpxTByY,2127
|
6
6
|
eb_model/models/__init__.py,sha256=7_WxCwRdVavLbPzepHWNar3O-rOxhLwmVYWd2pqm2kI,124
|
7
|
-
eb_model/models/abstract.py,sha256=
|
7
|
+
eb_model/models/abstract.py,sha256=uavSXSfKeM2JvOLmpBh43WlYLQ5fCk_F99tf9YVHDkU,3833
|
8
8
|
eb_model/models/eb_doc.py,sha256=hPsGdNHlm3vl-ys3B3NGrlJRrWAWPhRvFJrN3fLQTW8,2569
|
9
9
|
eb_model/models/eclipse_project.py,sha256=W6ovTd3SMnlmWm_efVBZqTUGQebF0hJocsTqMlQ7_XQ,169
|
10
|
-
eb_model/models/importer_xdm.py,sha256=
|
11
|
-
eb_model/models/os_xdm.py,sha256=
|
12
|
-
eb_model/models/rte_xdm.py,sha256=
|
10
|
+
eb_model/models/importer_xdm.py,sha256=B2Vqw5nkmzFgaGSpZlmTVFWZ88rTMqD8Iryytg4kUnk,4249
|
11
|
+
eb_model/models/os_xdm.py,sha256=2Y6PJ_IMrXjC6oSK_k3vtZpH8P31GlJhfNv18zbPFQg,32438
|
12
|
+
eb_model/models/rte_xdm.py,sha256=kCn5WTrBY3nwMCYYaaWuoO6jWy37BmzNycTnVXnMDvQ,21482
|
13
13
|
eb_model/parser/__init__.py,sha256=7VOmPr4dng_TrOyDZFu2_s3r0BJZQGiOUxALMY8EnqI,170
|
14
|
-
eb_model/parser/eb_parser.py,sha256=
|
14
|
+
eb_model/parser/eb_parser.py,sha256=_5sUl2pMt1SchHvrLOhU2axqa3FmKTWElSB79taz0O4,8188
|
15
15
|
eb_model/parser/eb_parser_factory.py,sha256=zqsqq52uImU4-WcS5dvHfhM95hiEPAGRtNzVik8i8wc,971
|
16
|
-
eb_model/parser/os_xdm_parser.py,sha256=
|
17
|
-
eb_model/parser/pref_xdm_parser.py,sha256=
|
18
|
-
eb_model/parser/rte_xdm_parser.py,sha256=
|
16
|
+
eb_model/parser/os_xdm_parser.py,sha256=ZBS36hcnMufCsiypnx-wmWmHYuECOqRWGOjOHbqXjBc,10560
|
17
|
+
eb_model/parser/pref_xdm_parser.py,sha256=EjfR4vrnjRVLw_7wyPmMYlBj6lPXZbBZMEdWlYPj3uI,1539
|
18
|
+
eb_model/parser/rte_xdm_parser.py,sha256=nUqlVMBJVxMGb3yENFBm1RB9jWQ7azhMKhGkfLfz4K0,5459
|
19
19
|
eb_model/reporter/__init__.py,sha256=H8D_23UwJi1Ph6yjBfZhxWVbu9ci5_O4471gqXGiZCM,36
|
20
20
|
eb_model/reporter/markdown.py,sha256=NhcJOFQ_BVbkgGe66uAT7KUPIchWU4kfVMtMLQtbK-w,1647
|
21
21
|
eb_model/reporter/excel_reporter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
22
|
eb_model/reporter/excel_reporter/abstract.py,sha256=PfIoiKNKy1eRJBABln7rADkSdwWzS03Vs03jBYM-_5Y,1622
|
23
23
|
eb_model/reporter/excel_reporter/os_xdm.py,sha256=n1e-tU04s0oh3v31OUKgkIju6BUAtCwb7iGtp2j4Hsc,5578
|
24
|
-
eb_model/reporter/excel_reporter/rte_xdm.py,sha256=
|
24
|
+
eb_model/reporter/excel_reporter/rte_xdm.py,sha256=OHuVPUV7xCdDzxELyXi766YJ6GejTHrzPrlAUBqexIw,3937
|
25
25
|
eb_model/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
26
26
|
eb_model/tests/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
27
27
|
eb_model/tests/models/test_eb_model.py,sha256=3fpIHhzQlf9KZjm4fZxcSTT4Zio6YhTrcn9UBvlhOfo,1632
|
28
28
|
eb_model/tests/models/test_ecuc_container.py,sha256=lZmtXwPMz9T52WFduTgFy16fO2agjSW-Rl2cVypM86s,722
|
29
29
|
eb_model/tests/models/test_importer_xdm.py,sha256=F80kO77jeyfCkLPRgRLjEj3UPcrACimR5LhBhFgX_m4,3372
|
30
30
|
eb_model/writer/__init__.py,sha256=CXvQAsNV1OvYClkHdKCG7Q300OVBzcl2TmoD68MyQOs,95
|
31
|
-
eb_model/writer/project_writer.py,sha256=
|
31
|
+
eb_model/writer/project_writer.py,sha256=9BQU1CJAktVxFvQk89Pj4IbizTJXnlQidt4eX_CIFXU,2800
|
32
32
|
eb_model/writer/text_writer.py,sha256=7d4_PUTJk5Y6S_EQflAH3ACDnUw9VwJzP90GFDh0n0I,991
|
33
33
|
py_eb_model/__init__.py,sha256=u3VUin2V_1eExLd9NIpw_LGHIAwaG2vEoyhssZurrvM,69
|
34
34
|
py_eb_model/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -45,9 +45,9 @@ py_eb_model/reporter/markdown.py,sha256=NhcJOFQ_BVbkgGe66uAT7KUPIchWU4kfVMtMLQtb
|
|
45
45
|
py_eb_model/reporter/excel_reporter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
46
46
|
py_eb_model/reporter/excel_reporter/abstract.py,sha256=BOuLhWwwTwqBzErtmwPrelB1iByMfZP9haFmg9ayFQw,1488
|
47
47
|
py_eb_model/reporter/excel_reporter/os_xdm.py,sha256=WGMxK0PYxi9J5fUZ-EeiiM8NBpIg2WyxRsrN-gK37YE,1589
|
48
|
-
py_eb_model-1.1.
|
49
|
-
py_eb_model-1.1.
|
50
|
-
py_eb_model-1.1.
|
51
|
-
py_eb_model-1.1.
|
52
|
-
py_eb_model-1.1.
|
53
|
-
py_eb_model-1.1.
|
48
|
+
py_eb_model-1.1.2.dist-info/LICENSE,sha256=I52rGS7W1IwAmYCUfqTpDaSHoFAdt7grcNiBhk-Z3eI,1088
|
49
|
+
py_eb_model-1.1.2.dist-info/METADATA,sha256=3LOAFETww4ZvsasY7bi0uG8-Pehw6bYpn9KHTLslkVI,5937
|
50
|
+
py_eb_model-1.1.2.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
51
|
+
py_eb_model-1.1.2.dist-info/entry_points.txt,sha256=yDLH9wnJ5Fp7ImgyFRSnr3mU6nvaenuKZnbe2rgs8Mk,183
|
52
|
+
py_eb_model-1.1.2.dist-info/top_level.txt,sha256=DGBNh6YW_x4RF_UoLKW3cKqb2SLnmfuEIZlkTewR66A,9
|
53
|
+
py_eb_model-1.1.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|