py-eb-model 1.1.7__py3-none-any.whl → 1.1.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.
@@ -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.add_argument("-v", "--verbose", required= False, help = "print debug information.", action = "store_true")
17
- ap.add_argument("--file-list", required=False, help = "generate the file list (Default)", action = "store_true")
18
- ap.add_argument("--ab-project", required=False, help = "generate the AUTOSAR builder project", action = "store_true")
19
- ap.add_argument("--base-path", required=True, help="base Path for EB tresos")
20
- ap.add_argument("--env", required=False, help="specify the environment variable", nargs='+')
21
- ap.add_argument("--project", required=False, help="specify the project name")
22
- ap.add_argument("INPUTS", nargs='+', help = "The path of perf_imp_xxx.xdm.")
23
- ap.add_argument("OUTPUT", help = "The path of output file.")
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(os.path.join(args.base_path, file))
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
@@ -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)))
@@ -2,18 +2,254 @@ from typing import List
2
2
  from ..models.abstract import EcucParamConfContainerDef, Module, EcucRefType
3
3
 
4
4
 
5
- class NvM(Module):
6
- def __init__(self, parent):
7
- super().__init__(parent, "NvM")
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
- def getNvMBlockDescriptorList(self):
12
- return self.NvMBlockDescriptors
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 addNvMBlockDescriptor(self, value):
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.NvMBlockDescriptors.append(value)
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 # type: str # required
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 = None # required
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 = None # required
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 = None # type: EcucRefType # required
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
@@ -63,6 +63,12 @@ class AbstractEbModelParser(metaclass=ABCMeta):
63
63
  if tag is None:
64
64
  raise KeyError("XPath d:var[@name='%s'] is invalid" % name)
65
65
  return self._convert_value(tag)
66
+
67
+ def read_eb_origin_value(self, parent: ET.Element, name: str) -> str:
68
+ tag = parent.find(".//d:var[@name='%s']" % name, self.nsmap)
69
+ if tag is None:
70
+ return None
71
+ return self._convert_value(tag)
66
72
 
67
73
  def read_optional_value(self, parent: ET.Element, name: str, default_value=None) -> str:
68
74
  tag = parent.find(".//d:var[@name='%s']" % name, self.nsmap)
@@ -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
- .setNvMBlockEcucPartitionRef(self.read_ref_value(ctr_tag, "NvMBlockEcucPartitionRef")) \
33
- .setNvMNvramBlockIdentifier(self.read_value(ctr_tag, "NvMNvramBlockIdentifier")) \
34
- .setNvMRamBlockDataAddress(self.read_optional_value(ctr_tag, "NvMRamBlockDataAddress")) \
35
- .setNvMRomBlockDataAddress(self.read_optional_value(ctr_tag, "NvMRomBlockDataAddress")) \
36
- .setNvMRomBlockNum(self.read_value(ctr_tag, "NvMRomBlockNum")) \
37
- .setNvMBlockManagementType(self.read_value(ctr_tag, "NvMBlockManagementType")) \
38
- .setNvMNvBlockLength(self.read_value(ctr_tag, "NvMNvBlockLength")) \
39
- .setNvMNvBlockNum(self.read_value(ctr_tag, "NvMNvBlockNum")) \
40
- .setNvMSelectBlockForReadAll(self.read_value(ctr_tag, "NvMSelectBlockForReadAll")) \
41
- .setNvMSelectBlockForWriteAll(self.read_value(ctr_tag, "NvMSelectBlockForWriteAll"))
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