py-eb-model 1.1.7__py3-none-any.whl → 1.1.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.
- eb_model/cli/pref_system_importer_cli.py +22 -13
- eb_model/models/importer_xdm.py +3 -1
- eb_model/models/nvm_xdm.py +321 -12
- eb_model/parser/nvm_xdm_parser.py +89 -12
- eb_model/parser/os_xdm_parser.py +9 -9
- eb_model/reporter/excel_reporter/abstract.py +7 -1
- eb_model/reporter/excel_reporter/nvm_xdm.py +97 -7
- eb_model/tests/parser/test_nvm_xdm_parser.py +259 -0
- eb_model/tests/parser/test_os_xdm_parser.py +246 -0
- eb_model/writer/text_writer.py +4 -2
- {py_eb_model-1.1.7.dist-info → py_eb_model-1.1.8.dist-info}/METADATA +6 -1
- {py_eb_model-1.1.7.dist-info → py_eb_model-1.1.8.dist-info}/RECORD +16 -15
- {py_eb_model-1.1.7.dist-info → py_eb_model-1.1.8.dist-info}/LICENSE +0 -0
- {py_eb_model-1.1.7.dist-info → py_eb_model-1.1.8.dist-info}/WHEEL +0 -0
- {py_eb_model-1.1.7.dist-info → py_eb_model-1.1.8.dist-info}/entry_points.txt +0 -0
- {py_eb_model-1.1.7.dist-info → py_eb_model-1.1.8.dist-info}/top_level.txt +0 -0
@@ -9,23 +9,31 @@ from ..writer import TextPreferenceModelWriter, ABProjectWriter
|
|
9
9
|
from ..parser import PerfXdmParser
|
10
10
|
from ..models import PreferenceModel
|
11
11
|
|
12
|
+
|
12
13
|
def main():
|
13
14
|
version = pkg_resources.require("py_eb_model")[0].version
|
14
15
|
|
15
16
|
ap = argparse.ArgumentParser()
|
16
|
-
ap.
|
17
|
-
ap.add_argument("
|
18
|
-
|
19
|
-
ap.add_argument("--
|
20
|
-
|
21
|
-
ap.add_argument("--project", required=False,
|
22
|
-
|
23
|
-
ap.add_argument("
|
17
|
+
ap.description = "PrefSystemImporter ver: %s" % version
|
18
|
+
ap.add_argument("-v", "--verbose", required=False,
|
19
|
+
help="print debug information.", action="store_true")
|
20
|
+
ap.add_argument("--file-list", required=False,
|
21
|
+
help="generate the file list (Default)", action="store_true")
|
22
|
+
ap.add_argument("--ab-project", required=False,
|
23
|
+
help="generate the AUTOSAR builder project", action="store_true")
|
24
|
+
ap.add_argument("--base-path", required=True,
|
25
|
+
help="base Path for EB tresos")
|
26
|
+
ap.add_argument("--env", required=False,
|
27
|
+
help="specify the environment variable", nargs='+')
|
28
|
+
ap.add_argument("--project", required=False,
|
29
|
+
help="specify the project name")
|
30
|
+
ap.add_argument("INPUTS", nargs='+', help="The path of perf_imp_xxx.xdm.")
|
31
|
+
ap.add_argument("OUTPUT", help="The path of output file.")
|
24
32
|
|
25
33
|
args = ap.parse_args()
|
26
34
|
|
27
35
|
logger = logging.getLogger()
|
28
|
-
|
36
|
+
|
29
37
|
formatter = logging.Formatter('[%(levelname)s] : %(message)s')
|
30
38
|
|
31
39
|
stdout_handler = logging.StreamHandler(sys.stderr)
|
@@ -48,7 +56,7 @@ def main():
|
|
48
56
|
stdout_handler.setLevel(logging.DEBUG)
|
49
57
|
else:
|
50
58
|
stdout_handler.setLevel(logging.INFO)
|
51
|
-
|
59
|
+
|
52
60
|
if args.verbose:
|
53
61
|
logger.addHandler(file_handler)
|
54
62
|
logger.addHandler(stdout_handler)
|
@@ -68,7 +76,8 @@ def main():
|
|
68
76
|
parser = PerfXdmParser()
|
69
77
|
for file in args.INPUTS:
|
70
78
|
if args.base_path is not None:
|
71
|
-
file_name = os.path.realpath(
|
79
|
+
file_name = os.path.realpath(
|
80
|
+
os.path.join(args.base_path, file))
|
72
81
|
else:
|
73
82
|
file_name = file
|
74
83
|
parser.parse_preference_xdm(file_name, doc)
|
@@ -80,7 +89,7 @@ def main():
|
|
80
89
|
m = re.match(r'(\w+)=([:\/\\\.\w]+)', env)
|
81
90
|
if m:
|
82
91
|
params["env_var:%s" % m.group(1)] = m.group(2)
|
83
|
-
#params['tresos_output_base_dir'] = args.TRESOS_OUTPUT_BASE_DIR
|
92
|
+
# params['tresos_output_base_dir'] = args.TRESOS_OUTPUT_BASE_DIR
|
84
93
|
|
85
94
|
if format == "file_list":
|
86
95
|
writer = TextPreferenceModelWriter()
|
@@ -88,7 +97,7 @@ def main():
|
|
88
97
|
elif format == "ab_project":
|
89
98
|
writer = ABProjectWriter()
|
90
99
|
writer.writer_import_files(args.OUTPUT, doc.getSystemDescriptionImporter(), params)
|
91
|
-
|
100
|
+
|
92
101
|
except Exception as e:
|
93
102
|
logger.error(e)
|
94
103
|
raise e
|
eb_model/models/importer_xdm.py
CHANGED
@@ -36,12 +36,14 @@ class SystemDescriptionImporter(EcucObject):
|
|
36
36
|
if m and m.group(1) in params:
|
37
37
|
old_input_file = input_file
|
38
38
|
input_file = params[m.group(1)] + m.group(2)
|
39
|
-
self.logger.info("Replace Environment Variable Path: %s => %s" % (old_input_file, os.path.realpath(input_file)))
|
39
|
+
# self.logger.info("Replace Environment Variable Path: %s => %s" % (old_input_file, os.path.realpath(input_file)))
|
40
|
+
self.logger.info("Replace Environment Variable Path: %s => %s" % (old_input_file, input_file))
|
40
41
|
if params['base_path'] is not None:
|
41
42
|
if params['wildcard']:
|
42
43
|
m = re.match(r'(.+)\\(\*\.\w+)', input_file)
|
43
44
|
if m:
|
44
45
|
for file_name in self.parseWildcard(os.path.realpath(os.path.join(params['base_path'], input_file))):
|
46
|
+
# self.logger.info("Add the file <%s>." % file_name)
|
45
47
|
file_list.append(file_name)
|
46
48
|
else:
|
47
49
|
file_list.append(os.path.realpath(os.path.join(params['base_path'], input_file)))
|
eb_model/models/nvm_xdm.py
CHANGED
@@ -2,18 +2,254 @@ from typing import List
|
|
2
2
|
from ..models.abstract import EcucParamConfContainerDef, Module, EcucRefType
|
3
3
|
|
4
4
|
|
5
|
-
class
|
6
|
-
def __init__(self, parent):
|
7
|
-
super().__init__(parent,
|
5
|
+
class NvMTargetBlockReference(EcucParamConfContainerDef):
|
6
|
+
def __init__(self, parent, name):
|
7
|
+
super().__init__(parent, name)
|
8
8
|
|
9
|
-
self.NvMBlockDescriptors = [] # type: List[NvMBlockDescriptor]
|
10
9
|
|
11
|
-
|
12
|
-
|
10
|
+
class NvMEaRef(NvMTargetBlockReference):
|
11
|
+
def __init__(self, parent, name):
|
12
|
+
super().__init__(parent, name)
|
13
|
+
|
14
|
+
self.NvMNameOfEaBlock: EcucRefType = None
|
13
15
|
|
14
|
-
def
|
16
|
+
def getNvMNameOfEaBlock(self) -> EcucRefType:
|
17
|
+
return self.NvMNameOfEaBlock
|
18
|
+
|
19
|
+
def setNvMNameOfEaBlock(self, value: EcucRefType):
|
15
20
|
if value is not None:
|
16
|
-
self.
|
21
|
+
self.NvMNameOfEaBlock = value
|
22
|
+
return self
|
23
|
+
|
24
|
+
|
25
|
+
class NvMFeeRef(NvMTargetBlockReference):
|
26
|
+
def __init__(self, parent, name):
|
27
|
+
super().__init__(parent, name)
|
28
|
+
|
29
|
+
self.NvMNameOfFeeBlock: EcucRefType = None
|
30
|
+
|
31
|
+
def getNvMNameOfFeeBlock(self) -> EcucRefType:
|
32
|
+
return self.NvMNameOfFeeBlock
|
33
|
+
|
34
|
+
def setNvMNameOfFeeBlock(self, value: EcucRefType):
|
35
|
+
if value is not None:
|
36
|
+
self.NvMNameOfFeeBlock = value
|
37
|
+
return self
|
38
|
+
|
39
|
+
|
40
|
+
class NvMCommon(EcucParamConfContainerDef):
|
41
|
+
def __init__(self, parent, name):
|
42
|
+
super().__init__(parent, name)
|
43
|
+
|
44
|
+
self.NvMApiConfigClass: str = None
|
45
|
+
self.NvMBswMMultiBlockJobStatusInformation: bool = None
|
46
|
+
self.NvMCompiledConfigId: int = None
|
47
|
+
self.NvMCrcNumOfBytes: int = None
|
48
|
+
self.NvMCsmRetryCounter: int = None
|
49
|
+
self.NvMDatasetSelectionBits: int = None
|
50
|
+
self.NvMDevErrorDetect: bool = None
|
51
|
+
self.NvMDynamicConfiguration: bool = None
|
52
|
+
self.NvMJobPrioritization: bool = None
|
53
|
+
self.NvMMainFunctionPeriod: float = None
|
54
|
+
self.NvMMultiBlockCallback: str = None
|
55
|
+
self.NvMPollingMode: bool = None
|
56
|
+
self.NvMRepeatMirrorOperations: int = None
|
57
|
+
self.NvMSetRamBlockStatusApi: bool = None
|
58
|
+
self.NvMSizeImmediateJobQueue: int = None
|
59
|
+
self.NvMSizeStandardJobQueue: int = None
|
60
|
+
self.NvMVersionInfoApi: bool = None
|
61
|
+
self.NvMBufferAlignmentValue: str = None
|
62
|
+
self.NvMEcucPartitionRefs: List[EcucRefType] = []
|
63
|
+
self.NvMMasterEcucPartitionRef: EcucRefType = None
|
64
|
+
|
65
|
+
def getNvMApiConfigClass(self) -> str:
|
66
|
+
return self.NvMApiConfigClass
|
67
|
+
|
68
|
+
def setNvMApiConfigClass(self, value: str):
|
69
|
+
if value is not None:
|
70
|
+
self.NvMApiConfigClass = value
|
71
|
+
return self
|
72
|
+
|
73
|
+
def getNvMBswMMultiBlockJobStatusInformation(self) -> bool:
|
74
|
+
return self.NvMBswMMultiBlockJobStatusInformation
|
75
|
+
|
76
|
+
def setNvMBswMMultiBlockJobStatusInformation(self, value: bool):
|
77
|
+
if value is not None:
|
78
|
+
self.NvMBswMMultiBlockJobStatusInformation = value
|
79
|
+
return self
|
80
|
+
|
81
|
+
def getNvMCompiledConfigId(self) -> int:
|
82
|
+
return self.NvMCompiledConfigId
|
83
|
+
|
84
|
+
def setNvMCompiledConfigId(self, value: int):
|
85
|
+
if value is not None:
|
86
|
+
self.NvMCompiledConfigId = value
|
87
|
+
return self
|
88
|
+
|
89
|
+
def getNvMCrcNumOfBytes(self) -> int:
|
90
|
+
return self.NvMCrcNumOfBytes
|
91
|
+
|
92
|
+
def setNvMCrcNumOfBytes(self, value: int):
|
93
|
+
if value is not None:
|
94
|
+
self.NvMCrcNumOfBytes = value
|
95
|
+
return self
|
96
|
+
|
97
|
+
def getNvMCsmRetryCounter(self) -> int:
|
98
|
+
return self.NvMCsmRetryCounter
|
99
|
+
|
100
|
+
def setNvMCsmRetryCounter(self, value: int):
|
101
|
+
if value is not None:
|
102
|
+
self.NvMCsmRetryCounter = value
|
103
|
+
return self
|
104
|
+
|
105
|
+
def getNvMDatasetSelectionBits(self) -> int:
|
106
|
+
return self.NvMDatasetSelectionBits
|
107
|
+
|
108
|
+
def setNvMDatasetSelectionBits(self, value: int):
|
109
|
+
if value is not None:
|
110
|
+
self.NvMDatasetSelectionBits = value
|
111
|
+
return self
|
112
|
+
|
113
|
+
def getNvMDevErrorDetect(self) -> bool:
|
114
|
+
return self.NvMDevErrorDetect
|
115
|
+
|
116
|
+
def setNvMDevErrorDetect(self, value: bool):
|
117
|
+
if value is not None:
|
118
|
+
self.NvMDevErrorDetect = value
|
119
|
+
return self
|
120
|
+
|
121
|
+
def getNvMDynamicConfiguration(self) -> bool:
|
122
|
+
return self.NvMDynamicConfiguration
|
123
|
+
|
124
|
+
def setNvMDynamicConfiguration(self, value: bool):
|
125
|
+
if value is not None:
|
126
|
+
self.NvMDynamicConfiguration = value
|
127
|
+
return self
|
128
|
+
|
129
|
+
def getNvMJobPrioritization(self) -> bool:
|
130
|
+
return self.NvMJobPrioritization
|
131
|
+
|
132
|
+
def setNvMJobPrioritization(self, value: bool):
|
133
|
+
if value is not None:
|
134
|
+
self.NvMJobPrioritization = value
|
135
|
+
return self
|
136
|
+
|
137
|
+
def getNvMMainFunctionPeriod(self) -> float:
|
138
|
+
return self.NvMMainFunctionPeriod
|
139
|
+
|
140
|
+
def setNvMMainFunctionPeriod(self, value: float):
|
141
|
+
if value is not None:
|
142
|
+
self.NvMMainFunctionPeriod = value
|
143
|
+
return self
|
144
|
+
|
145
|
+
def getNvMMultiBlockCallback(self) -> str:
|
146
|
+
return self.NvMMultiBlockCallback
|
147
|
+
|
148
|
+
def setNvMMultiBlockCallback(self, value: str):
|
149
|
+
if value is not None:
|
150
|
+
self.NvMMultiBlockCallback = value
|
151
|
+
return self
|
152
|
+
|
153
|
+
def getNvMPollingMode(self) -> bool:
|
154
|
+
return self.NvMPollingMode
|
155
|
+
|
156
|
+
def setNvMPollingMode(self, value: bool):
|
157
|
+
if value is not None:
|
158
|
+
self.NvMPollingMode = value
|
159
|
+
return self
|
160
|
+
|
161
|
+
def getNvMRepeatMirrorOperations(self) -> int:
|
162
|
+
return self.NvMRepeatMirrorOperations
|
163
|
+
|
164
|
+
def setNvMRepeatMirrorOperations(self, value: int):
|
165
|
+
if value is not None:
|
166
|
+
self.NvMRepeatMirrorOperations = value
|
167
|
+
return self
|
168
|
+
|
169
|
+
def getNvMSetRamBlockStatusApi(self) -> bool:
|
170
|
+
return self.NvMSetRamBlockStatusApi
|
171
|
+
|
172
|
+
def setNvMSetRamBlockStatusApi(self, value: bool):
|
173
|
+
if value is not None:
|
174
|
+
self.NvMSetRamBlockStatusApi = value
|
175
|
+
return self
|
176
|
+
|
177
|
+
def getNvMSizeImmediateJobQueue(self) -> int:
|
178
|
+
return self.NvMSizeImmediateJobQueue
|
179
|
+
|
180
|
+
def setNvMSizeImmediateJobQueue(self, value: int):
|
181
|
+
if value is not None:
|
182
|
+
self.NvMSizeImmediateJobQueue = value
|
183
|
+
return self
|
184
|
+
|
185
|
+
def getNvMSizeStandardJobQueue(self) -> int:
|
186
|
+
return self.NvMSizeStandardJobQueue
|
187
|
+
|
188
|
+
def setNvMSizeStandardJobQueue(self, value: int):
|
189
|
+
if value is not None:
|
190
|
+
self.NvMSizeStandardJobQueue = value
|
191
|
+
return self
|
192
|
+
|
193
|
+
def getNvMVersionInfoApi(self) -> bool:
|
194
|
+
return self.NvMVersionInfoApi
|
195
|
+
|
196
|
+
def setNvMVersionInfoApi(self, value: bool):
|
197
|
+
if value is not None:
|
198
|
+
self.NvMVersionInfoApi = value
|
199
|
+
return self
|
200
|
+
|
201
|
+
def getNvMBufferAlignmentValue(self) -> str:
|
202
|
+
return self.NvMBufferAlignmentValue
|
203
|
+
|
204
|
+
def setNvMBufferAlignmentValue(self, value: str):
|
205
|
+
if value is not None:
|
206
|
+
self.NvMBufferAlignmentValue = value
|
207
|
+
return self
|
208
|
+
|
209
|
+
def getNvMEcucPartitionRefList(self) -> List[EcucRefType]:
|
210
|
+
return self.NvMEcucPartitionRefs
|
211
|
+
|
212
|
+
def addNvMEcucPartitionRef(self, value: EcucRefType):
|
213
|
+
if value is not None:
|
214
|
+
self.NvMEcucPartitionRefs.append(value)
|
215
|
+
return self
|
216
|
+
|
217
|
+
def getNvMMasterEcucPartitionRef(self) -> EcucRefType:
|
218
|
+
return self.NvMMasterEcucPartitionRef
|
219
|
+
|
220
|
+
def setNvMMasterEcucPartitionRef(self, value: EcucRefType):
|
221
|
+
if value is not None:
|
222
|
+
self.NvMMasterEcucPartitionRef = value
|
223
|
+
return self
|
224
|
+
|
225
|
+
|
226
|
+
class NvMSingleBlockCallback(EcucParamConfContainerDef):
|
227
|
+
def __init__(self, parent, name):
|
228
|
+
super().__init__(parent, name)
|
229
|
+
|
230
|
+
self.NvMSingleBlockCallbackFnc: str = None
|
231
|
+
|
232
|
+
def getNvMSingleBlockCallbackFnc(self) -> str:
|
233
|
+
return self.NvMSingleBlockCallbackFnc
|
234
|
+
|
235
|
+
def setNvMSingleBlockCallbackFnc(self, value: str):
|
236
|
+
if value is not None:
|
237
|
+
self.NvMSingleBlockCallbackFnc = value
|
238
|
+
return self
|
239
|
+
|
240
|
+
|
241
|
+
class NvMInitBlockCallback(EcucParamConfContainerDef):
|
242
|
+
def __init__(self, parent, name):
|
243
|
+
super().__init__(parent, name)
|
244
|
+
|
245
|
+
self.NvMInitBlockCallbackFnc: str = None
|
246
|
+
|
247
|
+
def getNvMInitBlockCallbackFnc(self) -> str:
|
248
|
+
return self.NvMInitBlockCallbackFnc
|
249
|
+
|
250
|
+
def setNvMInitBlockCallbackFnc(self, value: str):
|
251
|
+
if value is not None:
|
252
|
+
self.NvMInitBlockCallbackFnc = value
|
17
253
|
return self
|
18
254
|
|
19
255
|
|
@@ -23,11 +259,11 @@ class NvMBlockDescriptor(EcucParamConfContainerDef):
|
|
23
259
|
|
24
260
|
self.nvMBlockCrcType = None # type: str # optional
|
25
261
|
self.nvMBlockHeaderInclude = None # type: int # optional
|
26
|
-
self.nvMBlockJobPriority = None
|
262
|
+
self.nvMBlockJobPriority: int = None
|
27
263
|
self.nvMBlockManagementType = None # type: str # required
|
28
264
|
self.nvMBlockUseAutoValidation = None # required
|
29
265
|
self.nvMBlockUseCompression = None # required
|
30
|
-
self.nvMBlockUseCrc =
|
266
|
+
self.nvMBlockUseCrc: bool = False
|
31
267
|
self.nvMBlockUseCRCCompMechanism = None # required
|
32
268
|
self.NvMBlockUsePort = None # required
|
33
269
|
self.nvMBlockUseSetRamBlockStatus = None # required
|
@@ -44,7 +280,7 @@ class NvMBlockDescriptor(EcucParamConfContainerDef):
|
|
44
280
|
self.nvMNvramDeviceId = None # required
|
45
281
|
self.nvMRamBlockDataAddress = None # optional
|
46
282
|
self.nvMReadRamBlockFromNvCallback = None # optional
|
47
|
-
self.nvMResistantToChangedSw =
|
283
|
+
self.nvMResistantToChangedSw: bool = False
|
48
284
|
self.nvMRomBlockDataAddress = None # optional
|
49
285
|
self.nvMRomBlockNum = None # required
|
50
286
|
self.nvMSelectBlockForFirstInitAll = None # optional
|
@@ -56,7 +292,15 @@ class NvMBlockDescriptor(EcucParamConfContainerDef):
|
|
56
292
|
self.nvMWriteVerification = None # required
|
57
293
|
self.nvMWriteVerificationDataSize = None # required
|
58
294
|
self.nvMBlockCipheringRef = None # optional
|
59
|
-
self.nvMBlockEcucPartitionRef
|
295
|
+
self.nvMBlockEcucPartitionRef: EcucRefType = None
|
296
|
+
|
297
|
+
self.nvMInitBlockCallback: NvMInitBlockCallback = None
|
298
|
+
self.nvMSingleBlockCallback: NvMSingleBlockCallback = None
|
299
|
+
self.nvMTargetBlockReference: NvMTargetBlockReference = None
|
300
|
+
|
301
|
+
# EB extended
|
302
|
+
self.nvMProvideRteJobFinishedPort: bool = False
|
303
|
+
self.nvMProvideRteServicePort: bool = False
|
60
304
|
|
61
305
|
def getNvMBlockCrcType(self):
|
62
306
|
return self.nvMBlockCrcType
|
@@ -345,3 +589,68 @@ class NvMBlockDescriptor(EcucParamConfContainerDef):
|
|
345
589
|
if value is not None:
|
346
590
|
self.nvMBlockEcucPartitionRef = value
|
347
591
|
return self
|
592
|
+
|
593
|
+
def getNvMInitBlockCallback(self) -> NvMInitBlockCallback:
|
594
|
+
return self.nvMInitBlockCallback
|
595
|
+
|
596
|
+
def setNvMInitBlockCallback(self, value: NvMInitBlockCallback):
|
597
|
+
if value is not None:
|
598
|
+
self.nvMInitBlockCallback = value
|
599
|
+
return self
|
600
|
+
|
601
|
+
def getNvMSingleBlockCallback(self) -> NvMSingleBlockCallback:
|
602
|
+
return self.nvMSingleBlockCallback
|
603
|
+
|
604
|
+
def setNvMSingleBlockCallback(self, value: NvMSingleBlockCallback):
|
605
|
+
if value is not None:
|
606
|
+
self.nvMSingleBlockCallback = value
|
607
|
+
return self
|
608
|
+
|
609
|
+
def getNvMTargetBlockReference(self) -> NvMTargetBlockReference:
|
610
|
+
return self.nvMTargetBlockReference
|
611
|
+
|
612
|
+
def setNvMTargetBlockReference(self, value: NvMTargetBlockReference):
|
613
|
+
if value is not None:
|
614
|
+
self.nvMTargetBlockReference = value
|
615
|
+
return self
|
616
|
+
|
617
|
+
def getNvMProvideRteJobFinishedPort(self) -> bool:
|
618
|
+
return self.nvMProvideRteJobFinishedPort
|
619
|
+
|
620
|
+
def setNvMProvideRteJobFinishedPort(self, value: bool):
|
621
|
+
if value is not None:
|
622
|
+
self.nvMProvideRteJobFinishedPort = value
|
623
|
+
return self
|
624
|
+
|
625
|
+
def getNvMProvideRteServicePort(self) -> bool:
|
626
|
+
return self.nvMProvideRteServicePort
|
627
|
+
|
628
|
+
def setNvMProvideRteServicePort(self, value: bool):
|
629
|
+
if value is not None:
|
630
|
+
self.nvMProvideRteServicePort = value
|
631
|
+
return self
|
632
|
+
|
633
|
+
|
634
|
+
class NvM(Module):
|
635
|
+
def __init__(self, parent):
|
636
|
+
super().__init__(parent, "NvM")
|
637
|
+
|
638
|
+
# type: List[NvMBlockDescriptor]
|
639
|
+
self.NvMBlockDescriptors = []
|
640
|
+
self.NvMCommon: NvMCommon = None
|
641
|
+
|
642
|
+
def getNvMCommon(self) -> NvMCommon:
|
643
|
+
return self.NvMCommon
|
644
|
+
|
645
|
+
def setNvMCommon(self, value: NvMCommon):
|
646
|
+
if value is not None:
|
647
|
+
self.NvMCommon = value
|
648
|
+
return self
|
649
|
+
|
650
|
+
def getNvMBlockDescriptorList(self) -> List[NvMBlockDescriptor]:
|
651
|
+
return self.NvMBlockDescriptors
|
652
|
+
|
653
|
+
def addNvMBlockDescriptor(self, value: NvMBlockDescriptor):
|
654
|
+
if value is not None:
|
655
|
+
self.NvMBlockDescriptors.append(value)
|
656
|
+
return self
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import xml.etree.ElementTree as ET
|
2
2
|
|
3
|
-
from ..models.nvm_xdm import NvM, NvMBlockDescriptor
|
3
|
+
from ..models.nvm_xdm import NvM, NvMBlockDescriptor, NvMCommon, NvMEaRef, NvMFeeRef, NvMInitBlockCallback, NvMSingleBlockCallback
|
4
4
|
from ..models.eb_doc import EBModel
|
5
5
|
from ..parser.eb_parser import AbstractEbModelParser
|
6
6
|
|
@@ -23,22 +23,99 @@ class NvMXdmParser(AbstractEbModelParser):
|
|
23
23
|
|
24
24
|
self.nvm = nvm
|
25
25
|
|
26
|
+
self.read_nvm_common(element, nvm)
|
26
27
|
self.read_nvm_block_descriptors(element, nvm)
|
27
28
|
|
29
|
+
def read_nvm_common(self, element: ET.Element, nvm: NvM):
|
30
|
+
ctr_tag = self.find_ctr_tag(element, "NvMCommon")
|
31
|
+
if ctr_tag is not None:
|
32
|
+
nvm_common = NvMCommon(nvm, "NvMCommon")
|
33
|
+
nvm_common.setNvMApiConfigClass(self.read_value(ctr_tag, "NvMApiConfigClass"))
|
34
|
+
nvm_common.setNvMBswMMultiBlockJobStatusInformation(self.read_value(ctr_tag, "NvMBswMMultiBlockJobStatusInformation"))
|
35
|
+
nvm_common.setNvMCompiledConfigId(self.read_value(ctr_tag, "NvMCompiledConfigId"))
|
36
|
+
nvm_common.setNvMCrcNumOfBytes(self.read_value(ctr_tag, "NvMCrcNumOfBytes"))
|
37
|
+
nvm_common.setNvMCsmRetryCounter(self.read_optional_value(ctr_tag, "NvMCsmRetryCounter"))
|
38
|
+
nvm_common.setNvMDatasetSelectionBits(self.read_value(ctr_tag, "NvMDatasetSelectionBits"))
|
39
|
+
nvm_common.setNvMDevErrorDetect(self.read_value(ctr_tag, "NvMDevErrorDetect"))
|
40
|
+
nvm_common.setNvMDynamicConfiguration(self.read_value(ctr_tag, "NvMDynamicConfiguration"))
|
41
|
+
nvm_common.setNvMJobPrioritization(self.read_value(ctr_tag, "NvMJobPrioritization"))
|
42
|
+
nvm_common.setNvMMainFunctionPeriod(self.read_value(ctr_tag, "NvMMainFunctionPeriod"))
|
43
|
+
nvm_common.setNvMMultiBlockCallback(self.read_optional_value(ctr_tag, "NvMMultiBlockCallback"))
|
44
|
+
nvm_common.setNvMPollingMode(self.read_value(ctr_tag, "NvMPollingMode"))
|
45
|
+
nvm_common.setNvMRepeatMirrorOperations(self.read_value(ctr_tag, "NvMRepeatMirrorOperations"))
|
46
|
+
nvm_common.setNvMSetRamBlockStatusApi(self.read_value(ctr_tag, "NvMSetRamBlockStatusApi"))
|
47
|
+
nvm_common.setNvMSizeImmediateJobQueue(self.read_optional_value(ctr_tag, "NvMSizeImmediateJobQueue"))
|
48
|
+
nvm_common.setNvMSizeStandardJobQueue(self.read_value(ctr_tag, "NvMSizeStandardJobQueue"))
|
49
|
+
nvm_common.setNvMVersionInfoApi(self.read_value(ctr_tag, "NvMVersionInfoApi"))
|
50
|
+
nvm_common.setNvMBufferAlignmentValue(self.read_value(ctr_tag, "NvMBufferAlignmentValue"))
|
51
|
+
for ref in self.read_ref_value_list(ctr_tag, "NvMEcucPartitionRef"):
|
52
|
+
nvm_common.addNvMEcucPartitionRef(ref)
|
53
|
+
nvm_common.setNvMMasterEcucPartitionRef(self.read_ref_value(ctr_tag, "NvMMasterEcucPartitionRef"))
|
54
|
+
|
55
|
+
nvm.setNvMCommon(nvm_common)
|
56
|
+
|
57
|
+
def read_nvm_init_block_callback(self, element: ET.Element, nvm_block: NvMBlockDescriptor):
|
58
|
+
ctr_tag = self.find_ctr_tag(element, "NvMInitBlockCallback")
|
59
|
+
if ctr_tag is not None:
|
60
|
+
init_block_callback = NvMInitBlockCallback(nvm_block, "NvMInitBlockCallback")
|
61
|
+
init_block_callback.setNvMInitBlockCallbackFnc(self.read_value(ctr_tag, "NvMInitBlockCallbackFnc"))
|
62
|
+
nvm_block.setNvMInitBlockCallback(init_block_callback)
|
63
|
+
|
64
|
+
def read_nvm_single_block_callback(self, element: ET.Element, nvm_block: NvMBlockDescriptor):
|
65
|
+
ctr_tag = self.find_ctr_tag(element, "NvMSingleBlockCallback")
|
66
|
+
if ctr_tag is not None:
|
67
|
+
single_block_callback = NvMSingleBlockCallback(nvm_block, "NvMSingleBlockCallback")
|
68
|
+
single_block_callback.setNvMSingleBlockCallbackFnc(self.read_value(ctr_tag, "NvMSingleBlockCallbackFnc"))
|
69
|
+
nvm_block.setNvMSingleBlockCallback(single_block_callback)
|
70
|
+
|
71
|
+
def read_nvm_block_target_block_reference(self, element: ET.Element, nvm_block: NvMBlockDescriptor):
|
72
|
+
block_ref = self.read_choice_value(element, "NvMTargetBlockReference")
|
73
|
+
if block_ref == "NvMEaRef":
|
74
|
+
ctr_tag = self.find_ctr_tag(element, "NvMEaRef")
|
75
|
+
if ctr_tag is not None:
|
76
|
+
ref = NvMEaRef(nvm_block, block_ref)
|
77
|
+
ref.setNvMNameOfEaBlock(self.read_ref_value(element, "NvMNameOfEaBlock"))
|
78
|
+
nvm_block.setNvMTargetBlockReference(ref)
|
79
|
+
elif block_ref == "NvMFeeRef":
|
80
|
+
ctr_tag = self.find_ctr_tag(element, "NvMFeeRef")
|
81
|
+
if ctr_tag is not None:
|
82
|
+
ref = NvMFeeRef(nvm_block, block_ref)
|
83
|
+
ref.setNvMNameOfFeeBlock(self.read_ref_value(element, "NvMNameOfFeeBlock"))
|
84
|
+
nvm_block.setNvMTargetBlockReference(ref)
|
85
|
+
else:
|
86
|
+
raise ValueError("Invalid block reference type <%s>" % block_ref)
|
87
|
+
|
28
88
|
def read_nvm_block_descriptors(self, element: ET.Element, nvm: NvM):
|
29
89
|
for ctr_tag in self.find_ctr_tag_list(element, "NvMBlockDescriptor"):
|
30
90
|
nvm_block = NvMBlockDescriptor(nvm, ctr_tag.attrib["name"])
|
31
|
-
nvm_block.setNvMBlockCrcType(self.read_optional_value(ctr_tag, "NvMBlockCrcType"))
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
91
|
+
nvm_block.setNvMBlockCrcType(self.read_optional_value(ctr_tag, "NvMBlockCrcType"))
|
92
|
+
nvm_block.setNvMBlockEcucPartitionRef(self.read_ref_value(ctr_tag, "NvMBlockEcucPartitionRef"))
|
93
|
+
nvm_block.setNvMNvramBlockIdentifier(self.read_value(ctr_tag, "NvMNvramBlockIdentifier"))
|
94
|
+
nvm_block.setNvMRamBlockDataAddress(self.read_optional_value(ctr_tag, "NvMRamBlockDataAddress"))
|
95
|
+
nvm_block.setNvMRomBlockDataAddress(self.read_optional_value(ctr_tag, "NvMRomBlockDataAddress"))
|
96
|
+
nvm_block.setNvMBlockJobPriority(self.read_value(ctr_tag, "NvMBlockJobPriority"))
|
97
|
+
nvm_block.setNvMResistantToChangedSw(self.read_value(ctr_tag, "NvMResistantToChangedSw"))
|
98
|
+
nvm_block.setNvMBlockCrcType(self.read_value(ctr_tag, "NvMBlockCrcType"))
|
99
|
+
nvm_block.setNvMBlockUseCrc(self.read_value(ctr_tag, "NvMBlockUseCrc"))
|
100
|
+
nvm_block.setNvMRomBlockNum(self.read_value(ctr_tag, "NvMRomBlockNum"))
|
101
|
+
nvm_block.setNvMBlockManagementType(self.read_value(ctr_tag, "NvMBlockManagementType"))
|
102
|
+
nvm_block.setNvMNvBlockLength(self.read_value(ctr_tag, "NvMNvBlockLength"))
|
103
|
+
nvm_block.setNvMNvBlockNum(self.read_value(ctr_tag, "NvMNvBlockNum"))
|
104
|
+
nvm_block.setNvMSelectBlockForReadAll(self.read_value(ctr_tag, "NvMSelectBlockForReadAll"))
|
105
|
+
nvm_block.setNvMSelectBlockForWriteAll(self.read_value(ctr_tag, "NvMSelectBlockForWriteAll"))
|
106
|
+
|
107
|
+
nvm_block.setNvMProvideRteJobFinishedPort(self.read_value(ctr_tag, "NvMProvideRteJobFinishedPort"))
|
108
|
+
nvm_block.setNvMProvideRteServicePort(self.read_value(ctr_tag, "NvMProvideRteServicePort"))
|
109
|
+
|
110
|
+
nvm_block.setNvMReadRamBlockFromNvCallback(self.read_optional_value(ctr_tag, "NvMReadRamBlockFromNvCallback"))
|
111
|
+
nvm_block.setNvMWriteRamBlockToNvCallback(self.read_optional_value(ctr_tag, "NvMWriteRamBlockToNvCallback"))
|
112
|
+
nvm_block.setNvMBlockUseSyncMechanism(self.read_value(ctr_tag, "NvMBlockUseSyncMechanism"))
|
113
|
+
|
114
|
+
self.read_nvm_init_block_callback(ctr_tag, nvm_block)
|
115
|
+
self.read_nvm_single_block_callback(ctr_tag, nvm_block)
|
116
|
+
|
117
|
+
nvm_block.setNvMNvBlockBaseNumber(self.read_value(ctr_tag, "NvMNvBlockBaseNumber"))
|
118
|
+
self.read_nvm_block_target_block_reference(ctr_tag, nvm_block)
|
42
119
|
|
43
120
|
nvm.addNvMBlockDescriptor(nvm_block)
|
44
121
|
|
eb_model/parser/os_xdm_parser.py
CHANGED
@@ -45,11 +45,11 @@ class OsXdmParser(AbstractEbModelParser):
|
|
45
45
|
def read_os_tasks(self, element: ET.Element, os: Os):
|
46
46
|
for ctr_tag in self.find_ctr_tag_list(element, "OsTask"):
|
47
47
|
os_task = OsTask(os, ctr_tag.attrib["name"])
|
48
|
-
os_task.setOsTaskPriority(int(self.read_value(ctr_tag, "OsTaskPriority")))
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
48
|
+
os_task.setOsTaskPriority(int(self.read_value(ctr_tag, "OsTaskPriority")))
|
49
|
+
os_task.setOsTaskActivation(self.read_value(ctr_tag, "OsTaskActivation"))
|
50
|
+
os_task.setOsTaskSchedule(self.read_value(ctr_tag, "OsTaskSchedule"))
|
51
|
+
os_task.setOsTaskType(self.read_optional_value(ctr_tag, "OsTaskType"))
|
52
|
+
os_task.setOsStacksize(int(self.read_value(ctr_tag, "OsStacksize")))
|
53
53
|
|
54
54
|
for resource_ref in self.read_ref_value_list(ctr_tag, "OsTaskResourceRef"):
|
55
55
|
os_task.addOsTaskResourceRef(resource_ref)
|
@@ -62,10 +62,10 @@ class OsXdmParser(AbstractEbModelParser):
|
|
62
62
|
def read_os_isrs(self, element: ET.Element, os: Os):
|
63
63
|
for ctr_tag in self.find_ctr_tag_list(element, "OsIsr"):
|
64
64
|
os_isr = OsIsr(os, ctr_tag.attrib["name"])
|
65
|
-
os_isr.setOsIsrCategory(self.read_value(ctr_tag, "OsIsrCategory"))
|
66
|
-
|
67
|
-
|
68
|
-
|
65
|
+
os_isr.setOsIsrCategory(self.read_value(ctr_tag, "OsIsrCategory"))
|
66
|
+
os_isr.setOsIsrPeriod(self.read_optional_value(ctr_tag, "OsIsrPeriod", 0.0))
|
67
|
+
os_isr.setOsStacksize(int(self.read_value(ctr_tag, "OsStacksize")))
|
68
|
+
os_isr.setOsIsrPriority(self.read_optional_value(ctr_tag, "OsIsrPriority"))
|
69
69
|
|
70
70
|
# Infineon Aurix Tricore
|
71
71
|
os_isr.setOsIsrPriority(self.read_optional_value(ctr_tag, "OsTricoreIrqLevel"))
|
@@ -41,11 +41,17 @@ class ExcelReporter:
|
|
41
41
|
cell.number_format = format['number_format']
|
42
42
|
return cell
|
43
43
|
|
44
|
+
def write_cell_center(self, sheet: Worksheet, row: int, column: int, value) -> Cell:
|
45
|
+
self.write_cell(sheet, row, column, value, format={"alignment": Alignment(horizontal="center")})
|
46
|
+
|
47
|
+
def write_bool_cell(self, sheet: Worksheet, row: int, column: int, value) -> Cell:
|
48
|
+
self.write_cell_center(sheet, row, column, self.format_boolean(value))
|
49
|
+
|
44
50
|
def format_boolean(self, value: bool) -> str:
|
45
51
|
if value is True:
|
46
52
|
return "Y"
|
47
53
|
else:
|
48
|
-
return "
|
54
|
+
return ""
|
49
55
|
|
50
56
|
def save(self, name: str):
|
51
57
|
self.wb.save(name)
|