From 53e061ab6a38cd3f943ce822b839fc5552d24b4e Mon Sep 17 00:00:00 2001 From: "bsongis@gmail.com" Date: Tue, 21 May 2013 10:05:43 +0000 Subject: [PATCH] [Taranis] Storage capacity on EEPROM disk was wrong --- src/gui/menu_model.cpp | 45 +++++++++++------------- src/targets/taranis/usbd_storage_msd.cpp | 8 ++--- 2 files changed, 24 insertions(+), 29 deletions(-) diff --git a/src/gui/menu_model.cpp b/src/gui/menu_model.cpp index 7fca0ed5f..98a7c5ddb 100644 --- a/src/gui/menu_model.cpp +++ b/src/gui/menu_model.cpp @@ -259,14 +259,7 @@ void onModelSelectMenu(const char *result) int8_t sub = m_posVert; if (result == STR_SELECT_MODEL || result == STR_CREATE_MODEL) { - displayPopup(STR_LOADINGMODEL); - saveTimers(); - eeCheck(true); // force writing of current model data before this is changed - if (g_eeGeneral.currModel != sub) { - g_eeGeneral.currModel = sub; - STORE_GENERALVARS; - eeLoadModel(sub); - } + selectModel(sub); } else if (result == STR_COPY_MODEL) { s_copyMode = COPY_MODE; @@ -312,6 +305,16 @@ void onModelSelectMenu(const char *result) } #endif +void selectModel(uint8_t sub) +{ + displayPopup(STR_LOADINGMODEL); + saveTimers(); + eeCheck(true); // force writing of current model data before this is changed + g_eeGeneral.currModel = sub; + STORE_GENERALVARS; + eeLoadModel(sub); +} + void menuModelSelect(uint8_t event) { if (s_warning_result) { @@ -477,15 +480,7 @@ void menuModelSelect(uint8_t event) MENU_ADD_ITEM(STR_CREATE_MODEL); MENU_ADD_ITEM(STR_RESTORE_MODEL); #else - // TODO duplicated *3 code - displayPopup(STR_LOADINGMODEL); - saveTimers(); - eeCheck(true); // force writing of current model data before this is changed - if (g_eeGeneral.currModel != sub) { - g_eeGeneral.currModel = sub; - STORE_GENERALVARS; - eeLoadModel(sub); - } + selectModel(sub); #endif } } @@ -497,12 +492,7 @@ void menuModelSelect(uint8_t event) menuHandler = onModelSelectMenu; #else if (g_eeGeneral.currModel != sub) { - displayPopup(STR_LOADINGMODEL); - saveTimers(); - eeCheck(true); // force writing of current model data before this is changed - g_eeGeneral.currModel = sub; - STORE_GENERALVARS; - eeLoadModel(sub); + selectModel(sub); } #endif } @@ -4439,9 +4429,15 @@ enum menuModelTelemetryItems { #define RSSI_ROWS (uint8_t)-1, 1, 1, #endif +#if defined(FRSKY_BARS) + #define SCREEN_TYPE_ROWS 0 +#else + #define SCREEN_TYPE_ROWS (uint8_t)-1 +#endif + void menuModelTelemetry(uint8_t event) { - MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, ITEM_TELEMETRY_MAX+1, {0, CHANNEL_ROWS CHANNEL_ROWS RSSI_ROWS USRDATA_LINES 0, 0, IF_VARIO((uint8_t)-1) IF_VARIO(0) IF_VARIO(3) 0, 2, 2, 2, 2, 0, 2, 2, 2, IF_CPUARM(2) IF_CPUARM(0) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) 2 }); + MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, ITEM_TELEMETRY_MAX+1, {0, CHANNEL_ROWS CHANNEL_ROWS RSSI_ROWS USRDATA_LINES 0, 0, IF_VARIO((uint8_t)-1) IF_VARIO(0) IF_VARIO(3) SCREEN_TYPE_ROWS, 2, 2, 2, 2, SCREEN_TYPE_ROWS, 2, 2, 2, 2, IF_CPUARM(SCREEN_TYPE_ROWS) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) }); uint8_t sub = m_posVert - 1; @@ -4653,7 +4649,6 @@ void menuModelTelemetry(uint8_t event) case ITEM_TELEMETRY_SCREEN_LABEL1: case ITEM_TELEMETRY_SCREEN_LABEL2: -// TODO merge this code #if defined(CPUARM) case ITEM_TELEMETRY_SCREEN_LABEL3: { diff --git a/src/targets/taranis/usbd_storage_msd.cpp b/src/targets/taranis/usbd_storage_msd.cpp index 1ad121ff3..58150210a 100644 --- a/src/targets/taranis/usbd_storage_msd.cpp +++ b/src/targets/taranis/usbd_storage_msd.cpp @@ -140,7 +140,7 @@ int8_t STORAGE_GetCapacity (uint8_t lun, uint32_t *block_num, uint32_t *block_si { if (lun == 1) { *block_size = 512; - *block_num = EESIZE + 3 ; + *block_num = EESIZE/512 + 3 ; } else { if (!SD_CARD_PRESENT()) @@ -277,7 +277,7 @@ const char g_FATboot[BLOCKSIZE] = 0x01, // Number of FATs 0x10, 0x00, // Number of root directory entries - 0x83, 0x00, // Total sectors = 131 + (EESIZE/512)+3, 0x00, // Total sectors = 131 0xf8, // Media descriptor 0x01, 0x00, // Sectors per FAT table 0x20, 0x00, // Sectors per track @@ -670,13 +670,13 @@ int32_t fat12Write(const uint8_t *buffer, uint16_t sector, uint32_t count ) if (test->version==EEFS_VERS && test->mySize==sizeof(eeFs) && test->bs==BS) { offset = sector; } - if (offset && sector >= offset) { + if (offset && sector >= offset && (sector-offset) < EESIZE/512) { eeWriteBlockCmp((uint8_t *)buffer, (sector-offset)*512, 512); } buffer += 512; sector++; count--; - if (sector-offset+1==EESIZE/512) { + if (sector-offset+1 >= EESIZE/512) { offset = 0; } }