diff --git a/radio/src/gui/9x/menu_general_setup.cpp b/radio/src/gui/9x/menu_general_setup.cpp index c6a9e7bdd..5af881b97 100644 --- a/radio/src/gui/9x/menu_general_setup.cpp +++ b/radio/src/gui/9x/menu_general_setup.cpp @@ -141,6 +141,10 @@ void menuGeneralSetup(uint8_t event) MENU(STR_MENURADIOSETUP, menuTabGeneral, e_Setup, ITEM_SETUP_MAX+1, {0, CASE_RTCLOCK(2) CASE_RTCLOCK(2) CASE_BATTGRAPH(1) LABEL(SOUND), CASE_AUDIO(0) CASE_BUZZER(0) CASE_VOICE(0) CASE_CPUARM(0) CASE_CPUARM(0) CASE_CPUARM(0) 0, CASE_AUDIO(0) CASE_VARIO_CPUARM(LABEL(VARIO)) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_HAPTIC(LABEL(HAPTIC)) CASE_HAPTIC(0) CASE_HAPTIC(0) CASE_HAPTIC(0) 0, LABEL(ALARMS), 0, CASE_CAPACITY(0) CASE_PCBSKY9X(0) 0, 0, 0, IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, CASE_CPUARM(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(0) CASE_GPS(0) CASE_PXX(0) CASE_CPUARM(0) CASE_CPUARM(0) IF_FAI_CHOICE(0) CASE_MAVLINK(0) CASE_CPUARM(0) 0, COL_TX_MODE, 1/*to force edit mode*/}); + if (event == EVT_ENTRY) { + reusableBuffer.generalSettings.stickMode = g_eeGeneral.stickMode; + } + uint8_t sub = menuVerticalPosition - 1; for (uint8_t i=0; i0) { - CHECK_INCDEC_GENVAR(event, g_eeGeneral.stickMode, 0, 3); + CHECK_INCDEC_GENVAR(event, reusableBuffer.generalSettings.stickMode, 0, 3); } - else if (stickMode != g_eeGeneral.stickMode) { + else if (reusableBuffer.generalSettings.stickMode != g_eeGeneral.stickMode) { pausePulses(); - stickMode = g_eeGeneral.stickMode; + g_eeGeneral.stickMode = reusableBuffer.generalSettings.stickMode; checkTHR(); resumePulses(); clearKeyEvents(); diff --git a/radio/src/gui/horus/menu_general_setup.cpp b/radio/src/gui/horus/menu_general_setup.cpp index 2e7ae9229..e09d9b77c 100644 --- a/radio/src/gui/horus/menu_general_setup.cpp +++ b/radio/src/gui/horus/menu_general_setup.cpp @@ -117,6 +117,10 @@ bool menuGeneralSetup(evt_t event) LABEL(BACKLIGHT), 0, 0, 0, 0, 0, CASE_GPS(LABEL(GPS)) CASE_GPS(0) CASE_GPS(0) CASE_PXX(0) 0, 0, 0, 0, 0, 0, 1/*to force edit mode*/ }); + if (event == EVT_ENTRY) { + reusableBuffer.generalSettings.stickMode = g_eeGeneral.stickMode; + } + int sub = menuVerticalPosition; for (int i=0; i0) { - CHECK_INCDEC_GENVAR(event, g_eeGeneral.stickMode, 0, 3); + CHECK_INCDEC_GENVAR(event, reusableBuffer.generalSettings.stickMode, 0, 3); } - else if (stickMode != g_eeGeneral.stickMode) { + else if (reusableBuffer.generalSettings.stickMode != g_eeGeneral.stickMode) { pausePulses(); - stickMode = g_eeGeneral.stickMode; + g_eeGeneral.stickMode = reusableBuffer.generalSettings.stickMode; checkTHR(); resumePulses(); clearKeyEvents(); diff --git a/radio/src/gui/taranis/menu_general_setup.cpp b/radio/src/gui/taranis/menu_general_setup.cpp index 096630e3e..f5dce9cd9 100644 --- a/radio/src/gui/taranis/menu_general_setup.cpp +++ b/radio/src/gui/taranis/menu_general_setup.cpp @@ -116,6 +116,10 @@ void menuGeneralSetup(uint8_t event) MENU(STR_MENURADIOSETUP, menuTabGeneral, e_Setup, ITEM_SETUP_MAX, { 2, 2, 1, LABEL(SOUND), 0, 0, 0, 0, 0, 0, 0, CASE_VARIO(LABEL(VARIO)) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_HAPTIC(LABEL(HAPTIC)) CASE_HAPTIC(0) CASE_HAPTIC(0) CASE_HAPTIC(0) 0, LABEL(ALARMS), 0, 0, 0, 0, IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, 0, CASE_REVPLUS(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(LABEL(GPS)) CASE_GPS(0) CASE_GPS(0) CASE_GPS(0) CASE_PXX(0) 0, 0, IF_FAI_CHOICE(0) CASE_MAVLINK(0) 0, 0, LABEL(TX_MODE), 0, 1/*to force edit mode*/ }); + if (event == EVT_ENTRY) { + reusableBuffer.generalSettings.stickMode = g_eeGeneral.stickMode; + } + int sub = menuVerticalPosition; for (unsigned int i=0; i0) { - CHECK_INCDEC_GENVAR(event, g_eeGeneral.stickMode, 0, 3); + CHECK_INCDEC_GENVAR(event, reusableBuffer.generalSettings.stickMode, 0, 3); } - else if (stickMode != g_eeGeneral.stickMode) { + else if (reusableBuffer.generalSettings.stickMode != g_eeGeneral.stickMode) { pausePulses(); - stickMode = g_eeGeneral.stickMode; + g_eeGeneral.stickMode = reusableBuffer.generalSettings.stickMode; checkTHR(); resumePulses(); clearKeyEvents(); diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index b87b1a1be..ec9978f96 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -67,8 +67,6 @@ audioQueue audio; uint8_t heartbeat; -uint8_t stickMode; - #if defined(OVERRIDE_CHANNEL_FUNCTION) safetych_t safetyCh[NUM_CHNOUT]; #endif diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 2b160488a..7a5a4d0b1 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -539,15 +539,13 @@ typedef struct { extern const pm_uint8_t bchout_ar[]; extern const pm_uint8_t modn12x3[]; -extern uint8_t stickMode; - //convert from mode 1 to mode stickMode //NOTICE! => 0..3 -> 0..3 #define RUD_STICK 0 #define ELE_STICK 1 #define THR_STICK 2 #define AIL_STICK 3 -#define CONVERT_MODE(x) (((x)<=AIL_STICK) ? pgm_read_byte(modn12x3 + 4*stickMode + (x)) : (x) ) +#define CONVERT_MODE(x) (((x)<=AIL_STICK) ? pgm_read_byte(modn12x3 + 4*g_eeGeneral.stickMode + (x)) : (x) ) extern uint8_t channel_order(uint8_t x); @@ -1486,57 +1484,60 @@ extern void opentxInit(); #define SD_SCREEN_FILE_LENGTH (64) union ReusableBuffer { - // 275 bytes - struct - { - char listnames[NUM_BODY_LINES][LEN_MODEL_NAME]; + // 275 bytes + struct + { + char listnames[NUM_BODY_LINES][LEN_MODEL_NAME]; #if !defined(CPUARM) - uint16_t eepromfree; + uint16_t eepromfree; #endif #if defined(SDCARD) - char menu_bss[POPUP_MENU_MAX_LINES][MENU_LINE_LENGTH]; - char mainname[45]; // because reused for SD backup / restore, max backup filename 44 chars: "/MODELS/MODEL0134353-2014-06-19-04-51-27.bin" + char menu_bss[POPUP_MENU_MAX_LINES][MENU_LINE_LENGTH]; + char mainname[45]; // because reused for SD backup / restore, max backup filename 44 chars: "/MODELS/MODEL0134353-2014-06-19-04-51-27.bin" #else - char mainname[LEN_MODEL_NAME]; + char mainname[LEN_MODEL_NAME]; #endif + } modelsel; - } modelsel; - - // 103 bytes - struct - { - int16_t midVals[NUM_STICKS+NUM_POTS]; - int16_t loVals[NUM_STICKS+NUM_POTS]; - int16_t hiVals[NUM_STICKS+NUM_POTS]; - uint8_t state; + // 103 bytes + struct + { + int16_t midVals[NUM_STICKS+NUM_POTS]; + int16_t loVals[NUM_STICKS+NUM_POTS]; + int16_t hiVals[NUM_STICKS+NUM_POTS]; + uint8_t state; #if defined(PCBTARANIS) || defined(PCBFLAMENCO) || defined(PCBHORUS) - struct { - uint8_t stepsCount; - int16_t steps[XPOTS_MULTIPOS_COUNT]; - uint8_t lastCount; - int16_t lastPosition; - } xpotsCalib[NUM_XPOTS]; + struct { + uint8_t stepsCount; + int16_t steps[XPOTS_MULTIPOS_COUNT]; + uint8_t lastCount; + int16_t lastPosition; + } xpotsCalib[NUM_XPOTS]; #endif - } calib; + } calib; #if defined(SDCARD) - // 274 bytes - struct - { - char lines[NUM_BODY_LINES][SD_SCREEN_FILE_LENGTH+1+1]; // the last char is used to store the flags (directory) of the line - uint32_t available; - uint16_t offset; - uint16_t count; - char originalName[SD_SCREEN_FILE_LENGTH+1]; - } sdmanager; + // 274 bytes + struct + { + char lines[NUM_BODY_LINES][SD_SCREEN_FILE_LENGTH+1+1]; // the last char is used to store the flags (directory) of the line + uint32_t available; + uint16_t offset; + uint16_t count; + char originalName[SD_SCREEN_FILE_LENGTH+1]; + } sdmanager; #endif #if defined(PCBTARANIS) - struct - { - char id[27]; - } version; + struct + { + char id[27]; + } version; #endif + struct + { + uint8_t stickMode; + } generalSettings; }; extern union ReusableBuffer reusableBuffer; diff --git a/radio/src/storage/eeprom_common.cpp b/radio/src/storage/eeprom_common.cpp index d8d65c906..2d58a9e60 100644 --- a/radio/src/storage/eeprom_common.cpp +++ b/radio/src/storage/eeprom_common.cpp @@ -1,23 +1,23 @@ -/* - * Copyright (C) OpenTX - * - * Based on code named - * th9x - http://code.google.com/p/th9x - * er9x - http://code.google.com/p/er9x - * gruvin9x - http://code.google.com/p/gruvin9x - * - * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - +/* + * Copyright (C) OpenTX + * + * Based on code named + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + #include #include #include @@ -97,8 +97,6 @@ void storageReadAll() eeLoadModelHeaders(); } - stickMode = g_eeGeneral.stickMode; - #if defined(CPUARM) for (uint8_t i=0; languagePacks[i]!=NULL; i++) { if (!strncmp(g_eeGeneral.ttsLanguage, languagePacks[i]->id, 2)) { diff --git a/radio/src/storage/sdcard_raw.cpp b/radio/src/storage/sdcard_raw.cpp index d76ffdabc..3941b96cf 100644 --- a/radio/src/storage/sdcard_raw.cpp +++ b/radio/src/storage/sdcard_raw.cpp @@ -177,8 +177,6 @@ void storageReadAll() storageEraseAll(true); } - stickMode = g_eeGeneral.stickMode; - #if defined(CPUARM) for (uint8_t i=0; languagePacks[i]!=NULL; i++) { if (!strncmp(g_eeGeneral.ttsLanguage, languagePacks[i]->id, 2)) {