From 1767de646df2c2b4893a93874adbd0abafe83b7a Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 18 Feb 2014 11:33:02 +0100 Subject: [PATCH] Vario repeat parameter added --- radio/src/gui/menu_general.cpp | 12 +++++++++--- radio/src/maths.cpp | 9 ++++++--- radio/src/myeeprom.h | 1 + radio/src/opentx.h | 4 ++-- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/radio/src/gui/menu_general.cpp b/radio/src/gui/menu_general.cpp index c66ae5bb2..14669926a 100644 --- a/radio/src/gui/menu_general.cpp +++ b/radio/src/gui/menu_general.cpp @@ -152,6 +152,7 @@ enum menuGeneralSetupItems { IF_CPUARM(ITEM_SETUP_VARIO_VOLUME) IF_CPUARM(ITEM_SETUP_VARIO_PITCH) IF_CPUARM(ITEM_SETUP_VARIO_RANGE) + IF_CPUARM(ITEM_SETUP_VARIO_REPEAT) IF_CPUARM(ITEM_SETUP_BACKGROUND_VOLUME) ITEM_SETUP_BEEP_LENGTH, IF_AUDIO(ITEM_SETUP_SPEAKER_PITCH) @@ -213,7 +214,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) IF_CPUARM(0) IF_CPUARM(0) IF_CPUARM(0) 0, IF_AUDIO(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(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) IF_CPUARM(0) IF_CPUARM(0) IF_CPUARM(0) IF_CPUARM(0) 0, IF_AUDIO(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(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*/}); uint8_t sub = m_posVert - 1; @@ -365,12 +366,17 @@ void menuGeneralSetup(uint8_t event) case ITEM_SETUP_VARIO_PITCH: lcd_putsLeft(y, "\001Vario Pitch"); lcd_outdezAtt(RADIO_SETUP_2ND_COLUMN, y, VARIO_FREQUENCY_ZERO+(g_eeGeneral.varioPitch*10), attr|LEFT); - if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.varioPitch, -30, 30); + if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.varioPitch, -40, 40); break; case ITEM_SETUP_VARIO_RANGE: lcd_putsLeft(y, "\001Vario Max"); lcd_outdezAtt(RADIO_SETUP_2ND_COLUMN, y, VARIO_FREQUENCY_ZERO+(g_eeGeneral.varioPitch*10)+VARIO_FREQUENCY_RANGE+(g_eeGeneral.varioRange*10), attr|LEFT); - if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.varioRange, -30, 30); + if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.varioRange, -80, 80); + break; + case ITEM_SETUP_VARIO_REPEAT: + lcd_putsLeft(y, "\001Vario Repeat"); + lcd_outdezAtt(RADIO_SETUP_2ND_COLUMN, y, VARIO_REPEAT_ZERO+(g_eeGeneral.varioRepeat*10), attr|LEFT); + if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.varioRepeat, -30, 120); break; case ITEM_SETUP_BACKGROUND_VOLUME: SLIDER_5POS(y, g_eeGeneral.backgroundVolume, STR_BG_VOLUME, event, attr); diff --git a/radio/src/maths.cpp b/radio/src/maths.cpp index f729c4af2..9cca70695 100644 --- a/radio/src/maths.cpp +++ b/radio/src/maths.cpp @@ -162,9 +162,12 @@ void varioWakeup() int varioBeepFreq, varioBeepTime; if (verticalSpeed > varioCenterMin) { varioBeepFreq = VARIO_FREQUENCY_ZERO + (g_eeGeneral.varioPitch*10) + (((VARIO_FREQUENCY_RANGE+(g_eeGeneral.varioRange*10)) * verticalSpeed) / varioMax); - int period = VARIO_PERIOD_ZERO - ((VARIO_PERIOD_ZERO-VARIO_PERIOD_MAX) * verticalSpeed) / varioMax; - // TODO something exponential would be better - varioBeepTime = (verticalSpeed > varioCenterMax ? (period / 4) : (period / 2)); + int period = VARIO_REPEAT_ZERO + (g_eeGeneral.varioRepeat*10); + period -= ((period-VARIO_REPEAT_MAX) * verticalSpeed) / varioMax; + if (verticalSpeed >= varioCenterMax || varioCenterMin == varioCenterMax) + varioBeepTime = period / 4; + else + varioBeepTime = period * (256 - ((verticalSpeed-varioCenterMin) * 172 / (varioCenterMax-varioCenterMin))) / 256; s_varioTmr = tmr10ms + (period/10); } else { diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 1b7ae1123..8732a9f61 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -241,6 +241,7 @@ enum BeeperMode { int8_t varioVolume; \ int8_t varioPitch; \ int8_t varioRange; \ + int8_t varioRepeat; \ int8_t backgroundVolume; #endif diff --git a/radio/src/opentx.h b/radio/src/opentx.h index ce79231d2..b3bd33125 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1333,8 +1333,8 @@ enum FunctionsActive { #define VARIO_FREQUENCY_ZERO 700/*Hz*/ #define VARIO_FREQUENCY_RANGE 1000/*Hz*/ -#define VARIO_PERIOD_ZERO 250/*ms*/ -#define VARIO_PERIOD_MAX 50/*ms*/ +#define VARIO_REPEAT_ZERO 500/*ms*/ +#define VARIO_REPEAT_MAX 50/*ms*/ extern MASK_FUNC_TYPE activeFunctions; extern MASK_CFN_TYPE activeFnSwitches;