[Taranis] Bitmap name moved to the start of the structure

[Taranis] Bitmap displayed in MODELSEL
[Taranis] Empty EEPROM is not calculated on each keypress in MODELSEL screen
[stock/stock128] Huge RAM saving (thanks Mike!)
[sky9x] Good register used for reboot cause
This commit is contained in:
bsongis@gmail.com
2013-04-19 17:49:53 +00:00
parent 2f3f2157fb
commit a23a7204cf
19 changed files with 293 additions and 240 deletions
+21 -22
View File
@@ -105,7 +105,7 @@ void eeDeleteModel(uint8_t id)
{
eeCheck(true);
memset(modelNames[id], 0, sizeof(g_model.name));
memset(modelHeaders[id].name, 0, sizeof(g_model.header.name));
Eeprom32_source_address = (uint8_t *)&g_model ; // Get data from here
Eeprom32_data_size = 0 ; // This much
@@ -121,10 +121,10 @@ bool eeCopyModel(uint8_t dst, uint8_t src)
uint16_t size = File_system[src+1].size ;
read32_eeprom_data( (File_system[src+1].block_no << 12) + sizeof( struct t_eeprom_header), ( uint8_t *)&Eeprom_buffer.data.model_data, size) ;
if (size > sizeof(g_model.name))
memcpy(modelNames[dst], Eeprom_buffer.data.model_data.name, sizeof(g_model.name));
if (size > sizeof(g_model.header.name))
memcpy(modelHeaders[dst].name, Eeprom_buffer.data.model_data.header.name, sizeof(g_model.header.name));
else
memset(modelNames[dst], 0, sizeof(g_model.name));
memset(modelHeaders[dst].name, 0, sizeof(g_model.header.name));
Eeprom32_source_address = (uint8_t *)&Eeprom_buffer.data.model_data; // Get data from here
Eeprom32_data_size = sizeof(g_model) ; // This much
@@ -146,12 +146,12 @@ void eeSwapModels(uint8_t id1, uint8_t id2)
// block_no(id1) has been shifted now, but we have the size
// TODO flash saving with function above ...
if (id2_size > sizeof(g_model.name)) {
if (id2_size > sizeof(g_model.header.name)) {
read32_eeprom_data( (id2_block_no << 12) + sizeof( struct t_eeprom_header), ( uint8_t *)&Eeprom_buffer.data.model_data, id2_size);
memcpy(modelNames[id1], Eeprom_buffer.data.model_data.name, sizeof(g_model.name));
memcpy(modelHeaders[id1].name, Eeprom_buffer.data.model_data.header.name, sizeof(g_model.header.name));
}
else {
memset(modelNames[id1], 0, sizeof(g_model.name));
memset(modelHeaders[id1].name, 0, sizeof(g_model.header.name));
}
Eeprom32_source_address = (uint8_t *)&Eeprom_buffer.data.model_data; // Get data from here
@@ -427,26 +427,25 @@ bool eeModelExists(uint8_t id)
void eeLoadModelName(uint8_t id, char *name)
{
memclear(name, sizeof(g_model.name));
memclear(name, sizeof(g_model.header.name));
if (id < MAX_MODELS) {
id += 1;
if (File_system[id].size > sizeof(g_model.name) ) {
read32_eeprom_data( ( File_system[id].block_no << 12) + 8, ( uint8_t *)name, sizeof(g_model.name));
if (File_system[id].size > sizeof(g_model.header.name) ) {
read32_eeprom_data((File_system[id].block_no << 12)+8, (uint8_t *)name, sizeof(g_model.header.name));
}
}
}
#if defined(PXX)
uint8_t eeLoadModelId(uint8_t id)
#if defined(CPUARM)
void eeLoadModelHeader(uint8_t id, ModelHeader *header)
{
uint8_t modelId = 0;
memclear(header, sizeof(ModelHeader));
if (id < MAX_MODELS) {
id += 1;
if (File_system[id].size > sizeof(g_model.name) + 1) {
read32_eeprom_data( ( File_system[id].block_no << 12) + 8 + sizeof(g_model.name), &modelId, 1);
if (File_system[id].size > sizeof(ModelHeader)) {
read32_eeprom_data((File_system[id].block_no << 12)+8, (uint8_t *)header, sizeof(ModelHeader));
}
}
return modelId;
}
#endif
@@ -484,7 +483,7 @@ void eeReadAll()
STORE_MODELVARS;
}
else {
eeLoadModelNames() ;
eeLoadModelHeaders() ;
}
stickMode = g_eeGeneral.stickMode; // TODO common!
@@ -689,7 +688,7 @@ void ee32_process()
#if defined(SDCARD)
const pm_char * eeBackupModel(uint8_t i_fileSrc)
{
char *buf = reusableBuffer.models.mainname;
char *buf = reusableBuffer.modelsel.mainname;
FIL archiveFile;
DIR archiveFolder;
UINT written;
@@ -746,7 +745,7 @@ const pm_char * eeBackupModel(uint8_t i_fileSrc)
const pm_char * eeRestoreModel(uint8_t i_fileDst, char *model_name)
{
char *buf = reusableBuffer.models.mainname;
char *buf = reusableBuffer.modelsel.mainname;
FIL restoreFile;
UINT read;
@@ -795,10 +794,10 @@ const pm_char * eeRestoreModel(uint8_t i_fileDst, char *model_name)
}
// TODO flash saving ...
if (read > sizeof(g_model.name))
memcpy(modelNames[i_fileDst], Eeprom_buffer.data.model_data.name, sizeof(g_model.name));
if (read > sizeof(g_model.header.name))
memcpy(modelHeaders[i_fileDst].name, Eeprom_buffer.data.model_data.header.name, sizeof(g_model.header.name));
else
memset(modelNames[i_fileDst], 0, sizeof(g_model.name));
memset(modelHeaders[i_fileDst].name, 0, sizeof(g_model.header.name));
Eeprom32_source_address = (uint8_t *)&Eeprom_buffer.data.model_data; // Get data from here
Eeprom32_data_size = sizeof(g_model); // This much