From b805b147f38afa937dc2925f78dddbff00a71eac Mon Sep 17 00:00:00 2001 From: bsongis Date: Wed, 16 Apr 2014 20:04:31 +0200 Subject: [PATCH] Issue #660 - Firmware part done. I need to check the ASM because when compiled with the FRSKY_STICKS option enabled, the FW is lighter than without the option! --- companion/src/eeprominterface.h | 1 + .../src/firmwares/opentx/opentxeeprom.cpp | 10 +++++++- companion/src/generaledit.cpp | 3 ++- radio/src/Makefile | 11 ++++----- radio/src/gui/menu_general.cpp | 24 +++++++++++++++++-- radio/src/myeeprom.h | 15 +++++++++++- radio/src/opentx.cpp | 9 +++++-- radio/src/targets/sky9x/adc_driver.cpp | 6 ++--- 8 files changed, 63 insertions(+), 16 deletions(-) diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index b9845163f..26a890d8f 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -470,6 +470,7 @@ class GeneralSettings { int PPM_Multiplier; int hapticLength; unsigned int reNavigation; + unsigned int stickReverse; bool hideNameOnSplash; bool enablePpmsim; unsigned int speakerPitch; diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 90c5b5125..9e4294ea7 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -2639,7 +2639,15 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo internalField.Append(new UnsignedField<8>(generalData.templateSetup)); internalField.Append(new SignedField<8>(generalData.PPM_Multiplier)); internalField.Append(new SignedField<8>(generalData.hapticLength)); - internalField.Append(new UnsignedField<8>(generalData.reNavigation)); + + if (version < 216 || !IS_9X(board)) { + internalField.Append(new UnsignedField<8>(generalData.reNavigation)); + } + + if (version >= 216 && !IS_TARANIS(board)) { + internalField.Append(new UnsignedField<4>(generalData.stickReverse)); + internalField.Append(new SpareBitsField<4>()); + } internalField.Append(new SignedField<3>(generalData.beeperLength)); internalField.Append(new UnsignedField<3>(generalData.hapticStrength)); diff --git a/companion/src/generaledit.cpp b/companion/src/generaledit.cpp index 403a4b8e8..558c78b69 100644 --- a/companion/src/generaledit.cpp +++ b/companion/src/generaledit.cpp @@ -215,7 +215,8 @@ GeneralEdit::GeneralEdit(RadioData &radioData, QWidget *parent) : if (renumber==0) { ui->re_label->hide(); ui->re_CB->hide(); - } else { + } + else { populateRotEncCB(ui->re_CB, g_eeGeneral.reNavigation, renumber); } ui->contrastSB->setValue(g_eeGeneral.contrast); diff --git a/radio/src/Makefile b/radio/src/Makefile index 110f03c04..c21d0564b 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -97,10 +97,9 @@ NAVIGATION = NO # Values = YES, NO AUTOSWITCH = NO -# Swap Stick Inputs for AIL,ELE,RUD,THR -# Used in some scenarios where stick/pot entries -# cannot be changed by soldering the pots. - +# Stock sticks replaced by FrSky ones +# Values = YES, NO +FRSKY_STICKS = NO # Sources automatic selection # Values = YES, NO @@ -791,8 +790,8 @@ ifeq ($(AUTOSOURCE), YES) CPPDEFS += -DAUTOSOURCE endif -ifeq ($(TARANIS_STICKS), YES) - CPPDEFS += -DTARANIS_STICKS +ifeq ($(FRSKY_STICKS), YES) + CPPDEFS += -DFRSKY_STICKS endif diff --git a/radio/src/gui/menu_general.cpp b/radio/src/gui/menu_general.cpp index 35dfdc987..1d61730d9 100644 --- a/radio/src/gui/menu_general.cpp +++ b/radio/src/gui/menu_general.cpp @@ -197,6 +197,12 @@ enum menuGeneralSetupItems { ITEM_SETUP_MAX }; +#if defined(FRSKY_STICKS) + #define COL_TX_MODE 0 +#else + #define COL_TX_MODE LABEL(TX_MODE) +#endif + void menuGeneralSetup(uint8_t event) { #if defined(RTCLOCK) @@ -219,7 +225,7 @@ void menuGeneralSetup(uint8_t event) } #endif - MENU(STR_MENURADIOSETUP, menuTabDiag, e_Setup, ITEM_SETUP_MAX+1, {0, IF_RTCLOCK(2) IF_RTCLOCK(2) IF_BATTGRAPH(1) LABEL(SOUND), IF_AUDIO(0) IF_BUZZER(0) IF_VOICE(0) IF_CPUARM(0) IF_CPUARM(0) IF_CPUARM(0) 0, IF_AUDIO(0) IF_VARIO_CPUARM(LABEL(VARIO)) IF_VARIO_CPUARM(0) IF_VARIO_CPUARM(0) IF_VARIO_CPUARM(0) IF_VARIO_CPUARM(0) IF_HAPTIC(LABEL(HAPTIC)) IF_HAPTIC(0) IF_HAPTIC(0) IF_HAPTIC(0) 0, LABEL(ALARMS), 0, CASE_PCBSKY9X(0) CASE_PCBSKY9X(0) 0, 0, 0, IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, IF_CPUARM(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, IF_SPLASH_PARAM(0) IF_GPS(0) IF_GPS(0) IF_PXX(0) IF_CPUARM(0) IF_CPUARM(0) IF_FAI_CHOICE(0) 0, LABEL(TX_MODE), CASE_PCBTARANIS(0) 1/*to force edit mode*/}); + MENU(STR_MENURADIOSETUP, menuTabDiag, e_Setup, ITEM_SETUP_MAX+1, {0, IF_RTCLOCK(2) IF_RTCLOCK(2) IF_BATTGRAPH(1) LABEL(SOUND), IF_AUDIO(0) IF_BUZZER(0) IF_VOICE(0) IF_CPUARM(0) IF_CPUARM(0) IF_CPUARM(0) 0, IF_AUDIO(0) IF_VARIO_CPUARM(LABEL(VARIO)) IF_VARIO_CPUARM(0) IF_VARIO_CPUARM(0) IF_VARIO_CPUARM(0) IF_VARIO_CPUARM(0) IF_HAPTIC(LABEL(HAPTIC)) IF_HAPTIC(0) IF_HAPTIC(0) IF_HAPTIC(0) 0, LABEL(ALARMS), 0, CASE_PCBSKY9X(0) CASE_PCBSKY9X(0) 0, 0, 0, IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, IF_CPUARM(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, IF_SPLASH_PARAM(0) IF_GPS(0) IF_GPS(0) IF_PXX(0) IF_CPUARM(0) IF_CPUARM(0) IF_FAI_CHOICE(0) 0, COL_TX_MODE, CASE_PCBTARANIS(0) 1/*to force edit mode*/}); uint8_t sub = m_posVert - 1; @@ -628,7 +634,21 @@ void menuGeneralSetup(uint8_t event) case ITEM_SETUP_STICK_MODE_LABELS: lcd_putsLeft(y, NO_INDENT(STR_MODE)); - for (uint8_t i=0; i<4; i++) lcd_img((6+4*i)*FW, y, sticks, i, 0); + for (uint8_t i=0; i<4; i++) { + lcd_img((6+4*i)*FW, y, sticks, i, 0); +#if defined(FRSKY_STICKS) + if (g_eeGeneral.stickReverse & (1<