Bug fix in rte_dummy.py
dt_NVM_LIST_X is not available when useRteNvmStructs is false so it should use the structs from nvm_def.py instead. Change-Id: I87555e9af9099a575d26fb2c01727698f51091d8
This commit is contained in:
parent
1ceaf4832f
commit
abc94d70d2
@ -36,6 +36,11 @@ class RteDummy(ProblemLogger):
|
||||
|
||||
def _get_header_header(self):
|
||||
"""Get header for the RTE dummy header."""
|
||||
include_nvm_header = ""
|
||||
if not self.build_cfg.get_code_generation_config("useRteNvmStructs"):
|
||||
nvm_defs = self.build_cfg.get_nvm_defs()
|
||||
nvm_file_name = nvm_defs["fileName"]
|
||||
include_nvm_header = f'#include "{nvm_file_name}.h"\n'
|
||||
return (
|
||||
"/*\n"
|
||||
" * This file is generated by the Powertrain Build System.\n"
|
||||
@ -44,7 +49,8 @@ class RteDummy(ProblemLogger):
|
||||
" */\n"
|
||||
f"#ifndef {self.header_file_name.upper()}_H\n"
|
||||
f"#define {self.header_file_name.upper()}_H\n\n"
|
||||
'#include "tl_basetypes.h"\n\n'
|
||||
'#include "tl_basetypes.h"\n'
|
||||
f"{include_nvm_header}\n"
|
||||
"#define FALSE 0U\n"
|
||||
"#define TRUE 1U\n\n"
|
||||
)
|
||||
@ -74,6 +80,7 @@ class RteDummy(ProblemLogger):
|
||||
if function_name is None:
|
||||
function_name = include_name
|
||||
prefix = self.build_cfg.get_scheduler_prefix()
|
||||
use_rte_nvm_structs = self.build_cfg.get_code_generation_config("useRteNvmStructs")
|
||||
|
||||
if self.build_cfg.get_code_generation_config("generateRteCheckpointIds"):
|
||||
typedefs.append(f"typedef UInt8 {function_name}FctList;")
|
||||
@ -81,13 +88,14 @@ class RteDummy(ProblemLogger):
|
||||
|
||||
for memory_area in self.nvm_def._nvm_memory_areas:
|
||||
nvm_name = f"{prefix}{memory_area}"
|
||||
struct_name = f"dt_{nvm_name}" if use_rte_nvm_structs else f"struct {nvm_name}"
|
||||
function_prefix = f"Rte_Call_{self.nvm_port_pattern.format(NvName=nvm_name)}"
|
||||
function_declarations.append(f"dt_{nvm_name} *Rte_Pim_{nvm_name}(void);")
|
||||
function_declarations.append(f"{struct_name} *Rte_Pim_{nvm_name}(void);")
|
||||
function_declarations.append(f"void {function_prefix}_SetRamBlockStatus(UInt8 status);")
|
||||
function_declarations.append(f"void {function_prefix}_GetErrorStatus(UInt8 *status);")
|
||||
function_declarations.append(f"void {function_prefix}_WriteBlock(dt_{nvm_name} *block);")
|
||||
function_declarations.append(f"void {function_prefix}_WriteBlock({struct_name} *block);")
|
||||
|
||||
if self.build_cfg.get_code_generation_config("useRteNvmStructs"):
|
||||
if use_rte_nvm_structs:
|
||||
struct_defines.append("typedef struct\n{")
|
||||
memory_area_index = self.nvm_def._get_nvm_areas_index(memory_area)
|
||||
nr_of_unused_signals = self.nvm_def.nvm_definitions[memory_area_index]["size"]
|
||||
@ -109,7 +117,7 @@ class RteDummy(ProblemLogger):
|
||||
f' {self.nvm_def.nvm_definitions[memory_area_index]["default_datatype"]} '
|
||||
f'unused[{nr_of_unused_signals}];'
|
||||
)
|
||||
struct_defines.append(f"}} dt_{nvm_name};\n")
|
||||
struct_defines.append(f"}} {struct_name};\n")
|
||||
|
||||
return "\n".join(typedefs + struct_defines + function_declarations)
|
||||
|
||||
@ -117,13 +125,15 @@ class RteDummy(ProblemLogger):
|
||||
"""Generate NVM source dummy code."""
|
||||
lines_to_write = []
|
||||
prefix = self.build_cfg.get_scheduler_prefix()
|
||||
use_rte_nvm_structs = self.build_cfg.get_code_generation_config("useRteNvmStructs")
|
||||
for memory_area in self.nvm_def._nvm_memory_areas:
|
||||
nvm_name = f"{prefix}{memory_area}"
|
||||
struct_name = f"dt_{nvm_name}" if use_rte_nvm_structs else f"struct {nvm_name}"
|
||||
function_prefix = f"Rte_Call_{self.nvm_port_pattern.format(NvName=nvm_name)}"
|
||||
lines_to_write.append(f"dt_{nvm_name} *Rte_Pim_{nvm_name}(void) {{ return (dt_{nvm_name} *)0; }}")
|
||||
lines_to_write.append(f"{struct_name} *Rte_Pim_{nvm_name}(void) {{ return ({struct_name} *)0; }}")
|
||||
lines_to_write.append(f"void {function_prefix}_SetRamBlockStatus(UInt8 status) {{}}")
|
||||
lines_to_write.append(f"void {function_prefix}_GetErrorStatus(UInt8 *status) {{}}")
|
||||
lines_to_write.append(f"void {function_prefix}_WriteBlock(dt_{nvm_name} *block) {{}}")
|
||||
lines_to_write.append(f"void {function_prefix}_WriteBlock({struct_name} *block) {{}}")
|
||||
lines_to_write.append("")
|
||||
return "\n".join(lines_to_write)
|
||||
|
||||
|
@ -32,7 +32,8 @@ class TestRteDummy(unittest.TestCase):
|
||||
self.build_cfg = MagicMock()
|
||||
self.build_cfg.get_scheduler_prefix.return_value = "DUMMY_"
|
||||
self.build_cfg.get_composition_config.side_effect = mock_get_composition_config
|
||||
self.build_cfg.get_code_generation_config.return_value = True
|
||||
self.build_cfg.get_code_generation_config.return_value = False
|
||||
self.build_cfg.get_nvm_defs.return_value = {"fileName": "vcc_nvm_struct"}
|
||||
self.nvm_def = MagicMock()
|
||||
self.nvm_def._get_nvm_areas_index.side_effect = mock_get_nvm_areas_index
|
||||
self.nvm_def.struct_member_prefix = "e_"
|
||||
@ -83,12 +84,72 @@ class TestRteDummy(unittest.TestCase):
|
||||
" */\n"
|
||||
"#ifndef RTE_TYPE_H\n"
|
||||
"#define RTE_TYPE_H\n\n"
|
||||
"#include \"tl_basetypes.h\"\n\n"
|
||||
"#include \"tl_basetypes.h\"\n"
|
||||
"#include \"vcc_nvm_struct.h\"\n\n"
|
||||
"#define FALSE 0U\n"
|
||||
"#define TRUE 1U\n\n"
|
||||
),
|
||||
( # header content
|
||||
"typedef UInt8 testNameFctList;\n\n"
|
||||
"\n"
|
||||
"struct DUMMY_NVM_LIST_8 *Rte_Pim_DUMMY_NVM_LIST_8(void);\n"
|
||||
"void Rte_Call_PS_DUMMY_SwcNv_DUMMY_NVM_LIST_8_SetRamBlockStatus(UInt8 status);\n"
|
||||
"void Rte_Call_PS_DUMMY_SwcNv_DUMMY_NVM_LIST_8_GetErrorStatus(UInt8 *status);\n"
|
||||
"void Rte_Call_PS_DUMMY_SwcNv_DUMMY_NVM_LIST_8_WriteBlock(struct DUMMY_NVM_LIST_8 *block);\n"
|
||||
"struct DUMMY_NVM_LIST_16 *Rte_Pim_DUMMY_NVM_LIST_16(void);\n"
|
||||
"void Rte_Call_PS_DUMMY_SwcNv_DUMMY_NVM_LIST_16_SetRamBlockStatus(UInt8 status);\n"
|
||||
"void Rte_Call_PS_DUMMY_SwcNv_DUMMY_NVM_LIST_16_GetErrorStatus(UInt8 *status);\n"
|
||||
"void Rte_Call_PS_DUMMY_SwcNv_DUMMY_NVM_LIST_16_WriteBlock(struct DUMMY_NVM_LIST_16 *block);"
|
||||
),
|
||||
( # header footer
|
||||
"\n#endif /* RTE_TYPE_H */\n"
|
||||
),
|
||||
( # source header
|
||||
"/*\n"
|
||||
" * This file is generated by the Powertrain Build System.\n"
|
||||
" * It defines RTE dummy functions.\n"
|
||||
" * Do not modify this file manually.\n"
|
||||
" */\n"
|
||||
"#include \"Rte_Type.h\"\n\n"
|
||||
),
|
||||
( # source content
|
||||
"struct DUMMY_NVM_LIST_8 *Rte_Pim_DUMMY_NVM_LIST_8(void) { return (struct DUMMY_NVM_LIST_8 *)0; }\n"
|
||||
"void Rte_Call_PS_DUMMY_SwcNv_DUMMY_NVM_LIST_8_SetRamBlockStatus(UInt8 status) {}\n"
|
||||
"void Rte_Call_PS_DUMMY_SwcNv_DUMMY_NVM_LIST_8_GetErrorStatus(UInt8 *status) {}\n"
|
||||
"void Rte_Call_PS_DUMMY_SwcNv_DUMMY_NVM_LIST_8_WriteBlock(struct DUMMY_NVM_LIST_8 *block) {}\n"
|
||||
"struct DUMMY_NVM_LIST_16 *Rte_Pim_DUMMY_NVM_LIST_16(void) { return (struct DUMMY_NVM_LIST_16 *)0; }\n"
|
||||
"void Rte_Call_PS_DUMMY_SwcNv_DUMMY_NVM_LIST_16_SetRamBlockStatus(UInt8 status) {}\n"
|
||||
"void Rte_Call_PS_DUMMY_SwcNv_DUMMY_NVM_LIST_16_GetErrorStatus(UInt8 *status) {}\n"
|
||||
"void Rte_Call_PS_DUMMY_SwcNv_DUMMY_NVM_LIST_16_WriteBlock(struct DUMMY_NVM_LIST_16 *block) {}\n"
|
||||
)
|
||||
]
|
||||
self.assertListEqual(result, expected)
|
||||
|
||||
def test_generate_rte_dummy_rte_structs(self):
|
||||
"""Test RteDummy.generate_rte_dummy()."""
|
||||
self.build_cfg.get_code_generation_config.return_value = True
|
||||
self.rte_dummy = RteDummy(self.build_cfg, self.nvm_def)
|
||||
result = []
|
||||
m_open = mock_open()
|
||||
m_open.return_value.write = result.append
|
||||
with patch.object(Path, "open", m_open, create=True):
|
||||
self.rte_dummy.generate_rte_dummy()
|
||||
expected = [
|
||||
( # header header
|
||||
"/*\n"
|
||||
" * This file is generated by the Powertrain Build System.\n"
|
||||
" * It defines RTE dummy types.\n"
|
||||
" * Do not modify this file manually.\n"
|
||||
" */\n"
|
||||
"#ifndef RTE_TYPE_H\n"
|
||||
"#define RTE_TYPE_H\n\n"
|
||||
"#include \"tl_basetypes.h\"\n"
|
||||
"\n"
|
||||
"#define FALSE 0U\n"
|
||||
"#define TRUE 1U\n\n"
|
||||
),
|
||||
( # header content
|
||||
"typedef UInt8 testNameFctList;\n"
|
||||
"\n"
|
||||
"typedef struct\n"
|
||||
"{\n"
|
||||
" UInt8 e_dummy;\n"
|
||||
|
Loading…
x
Reference in New Issue
Block a user