1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-14 03:49:52 +03:00

Script for code generation for model/radio structure copy is now OK

This commit is contained in:
Bertrand Songis 2016-03-05 12:42:19 +01:00
parent e0544e2d1e
commit 8e2c280e4a
3 changed files with 11 additions and 4 deletions

View file

@ -116,7 +116,7 @@ if(PCB STREQUAL HORUS)
)
add_custom_command(
OUTPUT datacopy.cpp
COMMAND python ${RADIO_DIRECTORY}/util/generate_datacopy.py ${RADIO_DIRECTORY}/src/datastructs.h -DPCBHORUS -DCPUARM -DCOLORLCD -DBACKUP > datacopy.cpp
COMMAND python ${RADIO_DIRECTORY}/util/generate_datacopy.py ${RADIO_DIRECTORY}/src/datastructs.h -DPCBHORUS -DCPUARM -DCOLORLCD -DVIRTUALINPUTS -DBACKUP > datacopy.cpp
DEPENDS ${RADIO_DIRECTORY}/src/datastructs.h ${RADIO_DIRECTORY}/util/generate_datacopy.py
)
add_custom_target(datacopy DEPENDS datacopy.cpp)

View file

@ -26,18 +26,23 @@ namespace Backup {
PACK(struct RamBackup {
ModelData model;
RadioData radio;
}) ramBackup;
});
#undef BACKUP
};
#include "datacopy.cpp"
Backup::RamBackup ramBackup;
void RamBackupWrite()
{
TRACE("RamBackup size=%d vs %d", sizeof(Backup::RamBackup), sizeof(ModelData)+sizeof(RadioData));
copyRadioData(&ramBackup.radio, &g_eeGeneral);
copyModelData(&ramBackup.model, &g_model);
}
void RamBackupRead()
{
copyRadioData(&g_eeGeneral, &ramBackup.radio);
copyModelData(&g_model, &ramBackup.model);
}

View file

@ -13,10 +13,12 @@ def build_struct(cursor):
if c.type.get_array_size() > 0:
if c.type.get_array_element_type().spelling in structs:
print " for (int i=0; i<%d; i++) {" % c.type.get_array_size()
print " copy%s(dest->%s[i], src->%s[i]);" % (c.type.get_array_element_type().spelling, c.spelling, c.spelling)
print " copy%s(&dest->%s[i], &src->%s[i]);" % (c.type.get_array_element_type().spelling, c.spelling, c.spelling)
print " }"
else:
print " memcpy(&dest->%s, &src->%s, sizeof(dest->%s));" % (c.spelling, c.spelling, c.spelling)
elif c.type.get_declaration().spelling in structs:
print " copy%s(&dest->%s, &src->%s);" % (c.type.get_declaration().spelling, c.spelling, c.spelling)
else:
print " dest->%s = src->%s;" % (c.spelling, c.spelling)
print "}\n"