py-eb-model 1.1.6__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.
Files changed (30) hide show
  1. eb_model/cli/pref_system_importer_cli.py +22 -13
  2. eb_model/cli/rte_xdm_2_xls_cli.py +28 -27
  3. eb_model/models/abstract.py +20 -8
  4. eb_model/models/importer_xdm.py +3 -1
  5. eb_model/models/nvm_xdm.py +321 -12
  6. eb_model/models/os_xdm.py +320 -55
  7. eb_model/models/rte_xdm.py +16 -11
  8. eb_model/parser/eb_parser.py +28 -20
  9. eb_model/parser/nvm_xdm_parser.py +89 -12
  10. eb_model/parser/os_xdm_parser.py +56 -12
  11. eb_model/parser/rte_xdm_parser.py +11 -11
  12. eb_model/reporter/excel_reporter/abstract.py +20 -6
  13. eb_model/reporter/excel_reporter/nvm_xdm.py +97 -7
  14. eb_model/reporter/excel_reporter/os_xdm.py +104 -20
  15. eb_model/reporter/excel_reporter/rte_xdm.py +15 -4
  16. eb_model/tests/models/test_abstract.py +201 -0
  17. eb_model/tests/models/test_eb_doc.py +66 -0
  18. eb_model/tests/models/test_eclipse_project.py +21 -0
  19. eb_model/tests/models/test_importer_xdm.py +45 -40
  20. eb_model/tests/parser/__init__.py +0 -0
  21. eb_model/tests/parser/test_nvm_xdm_parser.py +259 -0
  22. eb_model/tests/parser/test_os_xdm_parser.py +396 -0
  23. eb_model/writer/text_writer.py +4 -2
  24. {py_eb_model-1.1.6.dist-info → py_eb_model-1.1.8.dist-info}/METADATA +12 -1
  25. py_eb_model-1.1.8.dist-info/RECORD +48 -0
  26. py_eb_model-1.1.6.dist-info/RECORD +0 -42
  27. {py_eb_model-1.1.6.dist-info → py_eb_model-1.1.8.dist-info}/LICENSE +0 -0
  28. {py_eb_model-1.1.6.dist-info → py_eb_model-1.1.8.dist-info}/WHEEL +0 -0
  29. {py_eb_model-1.1.6.dist-info → py_eb_model-1.1.8.dist-info}/entry_points.txt +0 -0
  30. {py_eb_model-1.1.6.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.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
@@ -10,45 +10,46 @@ from ..reporter.excel_reporter.rte_xdm import RteRunnableEntityXlsWriter, RteXdm
10
10
  from ..parser.rte_xdm_parser import RteXdmParser
11
11
  from ..models import EBModel
12
12
 
13
- def main():
14
- version = pkg_resources.require("py_eb_model")[0].version
15
-
16
- ap = argparse.ArgumentParser()
17
- ap.add_argument("-v", "--verbose", required= False, help= "Print debug information", action= "store_true")
18
- ap.add_argument("-r", "--runnable", required= False, help= "Export the runnable entities", action= "store_true")
19
- ap.add_argument("INPUT", help = "The path of xdm file.", nargs='+')
20
- ap.add_argument("OUTPUT", help = "The path of excel file.")
21
-
22
- args = ap.parse_args()
23
13
 
14
+ def process_logger(args):
24
15
  logger = logging.getLogger()
16
+ formatter = logging.Formatter('[%(levelname)s] : %(message)s')
17
+ logger.setLevel(logging.DEBUG)
25
18
 
26
- formatter = logging.Formatter('[%(levelname)s] [%(asctime)s]: %(message)s')
19
+ if args.verbose:
20
+ log_level = logging.DEBUG
21
+ else:
22
+ log_level = logging.INFO
27
23
 
28
24
  stdout_handler = logging.StreamHandler(sys.stderr)
29
25
  stdout_handler.setFormatter(formatter)
26
+ stdout_handler.setLevel(log_level)
27
+ logger.addHandler(stdout_handler)
30
28
 
31
- base_path = os.path.dirname(args.OUTPUT)
32
- log_file = os.path.join(base_path, 'rte_xdm_2_xls.log')
29
+ if args.log:
30
+ if os.path.exists(args.log):
31
+ os.remove(args.log)
33
32
 
34
- if os.path.exists(log_file):
35
- os.remove(log_file)
33
+ file_handler = logging.FileHandler(args.log)
34
+ file_handler.setFormatter(formatter)
35
+ file_handler.setLevel(log_level)
36
+ logger.addHandler(file_handler)
37
+ return logger
36
38
 
37
- file_handler = logging.FileHandler(log_file)
38
- file_handler.setFormatter(formatter)
39
39
 
40
- logger.setLevel(logging.DEBUG)
41
- file_handler.setLevel(logging.DEBUG)
42
-
43
- if args.verbose:
44
- stdout_handler.setLevel(logging.DEBUG)
45
-
46
- else:
47
- stdout_handler.setLevel(logging.INFO)
40
+ def main():
41
+ # version = pkg_resources.require("py_eb_model")[0].version
48
42
 
49
- logger.addHandler(file_handler)
50
- logger.addHandler(stdout_handler)
43
+ ap = argparse.ArgumentParser()
44
+ ap.add_argument("-v", "--verbose", required=False, help="Print debug information", action="store_true")
45
+ ap.add_argument("-r", "--runnable", required=False, help="Export the runnable entities", action="store_true")
46
+ ap.add_argument("--log", required=False, help="The Log file name.")
47
+ ap.add_argument("INPUT", help="The path of xdm file.", nargs='+')
48
+ ap.add_argument("OUTPUT", help="The path of excel file.")
51
49
 
50
+ args = ap.parse_args()
51
+ logger = process_logger(args)
52
+
52
53
  try:
53
54
  doc = EBModel.getInstance()
54
55
 
@@ -41,6 +41,7 @@ class EcucParamConfContainerDef(EcucObject):
41
41
  def __init__(self, parent, name) -> None:
42
42
  super().__init__(parent, name)
43
43
 
44
+ self.importerInfo: str = None
44
45
  self.elements = {} # type: Dict[str, EcucObject]
45
46
 
46
47
  def getTotalElement(self) -> int:
@@ -66,6 +67,17 @@ class EcucParamConfContainerDef(EcucObject):
66
67
  if (name not in self.elements):
67
68
  return None
68
69
  return self.elements[name]
70
+
71
+ def getImporterInfo(self) -> str:
72
+ return self.importerInfo
73
+
74
+ def setImporterInfo(self, value: str) -> None:
75
+ self.importerInfo = value
76
+
77
+ def isCalculatedSvcAs(self) -> bool:
78
+ if self.importerInfo is not None and self.importerInfo.startswith("@CALC(SvcAs"):
79
+ return True
80
+ return False
69
81
 
70
82
 
71
83
  class EcucRefType:
@@ -135,15 +147,15 @@ class Module(EcucParamConfContainerDef):
135
147
  def getArVersion(self):
136
148
  return self.arVersion
137
149
 
138
- def setArVersion(self, value):
139
- if value is not None:
140
- self.arVersion = value
141
- return self
150
+ # def setArVersion(self, value):
151
+ # if value is not None:
152
+ # self.arVersion = value
153
+ # return self
142
154
 
143
155
  def getSwVersion(self):
144
156
  return self.swVersion
145
157
 
146
- def setSwVersion(self, value):
147
- if value is not None:
148
- self.swVersion = value
149
- return self
158
+ # def setSwVersion(self, value):
159
+ # if value is not None:
160
+ # self.swVersion = value
161
+ # return self
@@ -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