From bba3d8f08c0f38cd782e0c25b1d1c15331033c40 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 4 May 2014 23:45:50 +0200 Subject: [PATCH 01/15] Update DONATIONS.txt --- DONATIONS.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 102ad1541..54e7bf0af 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -386,3 +386,5 @@ Wilco Hijink Roy Nixon Lexington S Morley Daryl Dacko +Beat Zurflueh +Piotr Kundu From 5ec1860921e6c0cb40ab8da9681d4dec7c0dbb68 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 4 May 2014 23:47:09 +0200 Subject: [PATCH 02/15] Update DONATIONS.txt --- DONATIONS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index 54e7bf0af..2ab34671a 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -133,7 +133,7 @@ Eric Burdis Nigel Chippindale Michael Deasy Stephen Stough -Kenneth Lilja +Kenneth Lilja (monthly) Robert Jero Gary Bancroft Robert Cotsford From 740e5fd703b50507847d54de727e636992256f2d Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 5 May 2014 07:40:13 +0200 Subject: [PATCH 03/15] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 2ab34671a..233693225 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -388,3 +388,4 @@ Lexington S Morley Daryl Dacko Beat Zurflueh Piotr Kundu +Kevin Berkefeld From 6868b69aad692e20277d9d05d9517df25fd787c5 Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 5 May 2014 08:23:46 +0200 Subject: [PATCH 04/15] Compiler options to reduce flash usage on sky9x and Taranis --- radio/src/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/Makefile b/radio/src/Makefile index dde8ed6f3..6c5db764e 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -1078,7 +1078,7 @@ MSG_CLEANING = Cleaning project: # Combine all necessary flags and optional flags. # Add target processor to flags. -ARMCPPFLAGS = -c -mcpu=$(MCU) -mthumb -fomit-frame-pointer -fverbose-asm -Wa,-ahlms=opentx.lst -DRUN_FROM_FLASH=1 -O$(OPT) $(CPPFLAGS) $(INCFLAGS) $(EXTRAINCFLAGS) $(GENDEPFLAGS) +ARMCPPFLAGS = -c -mcpu=$(MCU) -mthumb -fomit-frame-pointer -fverbose-asm -Wa,-ahlms=opentx.lst -DRUN_FROM_FLASH=1 -O$(OPT) $(CPPFLAGS) -fdata-sections -ffunction-sections $(INCFLAGS) $(EXTRAINCFLAGS) $(GENDEPFLAGS) AVRCPPFLAGS = -mmcu=$(MCU) -I. -x c++ -O$(OPT) $(CPPFLAGS) $(INCFLAGS) $(EXTRAINCFLAGS) $(GENDEPFLAGS) -fwhole-program ifeq ($(ARCH), AVR) @@ -1349,7 +1349,7 @@ OBJS = $(TMP:.s=.o) @echo @echo $(MSG_COMPILING) $@ $(CC) $(ARMCPPFLAGS) $< -o allsrc.o - $(CC) $(OBJS) allsrc.o -mcpu=cortex-m3 -mthumb -nostartfiles -lm -T$(LDSCRIPT) -Wl,-Map=$(TARGET).map,--cref,--no-warn-mismatch -o $@ + $(CC) $(OBJS) allsrc.o -mcpu=cortex-m3 -mthumb -nostartfiles -lm -T$(LDSCRIPT) -Wl,-Map=$(TARGET).map,--cref,--no-warn-mismatch,--gc-sections -o $@ endif # Target: clean project. From 1466f96e5156c37710f55d26d1d63e2b3cff3984 Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 5 May 2014 09:57:21 +0200 Subject: [PATCH 05/15] Lua setGlobalVariable / getGlobalVariable added in model library --- radio/src/lua.cpp | 25 +++++++++++++++++++++++++ radio/src/myeeprom.h | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/radio/src/lua.cpp b/radio/src/lua.cpp index 2aacda979..5cdf45328 100644 --- a/radio/src/lua.cpp +++ b/radio/src/lua.cpp @@ -741,6 +741,29 @@ static int luaModelSetOutput(lua_State *L) return 0; } + +static int luaModelGetGlobalVariable(lua_State *L) +{ + int idx = luaL_checkunsigned(L, 1); + int phase = luaL_checkunsigned(L, 2); + if (phase < MAX_PHASES && idx < MAX_GVARS) + lua_pushinteger(L, g_model.phaseData[phase].gvars[idx]); + else + lua_pushnil(L); + return 1; +} + +static int luaModelSetGlobalVariable(lua_State *L) +{ + int idx = luaL_checkunsigned(L, 1); + int phase = luaL_checkunsigned(L, 2); + int value = luaL_checkinteger(L, 3); + if (phase < MAX_PHASES && idx < MAX_GVARS && value <= 500) { + g_model.phaseData[phase].gvars[idx] = value; + } + return 0; +} + static int luaPopupInput(lua_State *L) { uint8_t event = luaL_checkinteger(L, 2); @@ -849,6 +872,8 @@ static const luaL_Reg modelLib[] = { { "setCustomFunction", luaModelSetCustomFunction }, { "getOutput", luaModelGetOutput }, { "setOutput", luaModelSetOutput }, + { "getGlobalVariable", luaModelGetGlobalVariable }, + { "setGlobalVariable", luaModelSetGlobalVariable }, { NULL, NULL } /* sentinel */ }; diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 0d6a1bbe1..451e78f71 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -692,7 +692,7 @@ PACK(typedef struct t_MixData { PACK( union u_gvarint_t { struct { int8_t lo; - uint8_t hi; + uint8_t hi; } bytes_t; int16_t word; From be3c674fe5ba4421b3c8d80b78f5127f0a23e36c Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 5 May 2014 10:36:34 +0200 Subject: [PATCH 06/15] Fixes #36 --- radio/src/opentx.cpp | 29 ++++++++++++-------- radio/src/opentx.h | 1 + radio/src/targets/sky9x/board_sky9x.cpp | 13 ++++----- radio/src/targets/taranis/trainer_driver.cpp | 7 +++-- 4 files changed, 28 insertions(+), 22 deletions(-) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index fd08ea0e4..38e407e2f 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -319,7 +319,8 @@ void per10ms() if (lightOffCounter) lightOffCounter--; if (flashCounter) flashCounter--; if (s_noHi) s_noHi--; - if (trimsCheckTimer) trimsCheckTimer --; + if (trimsCheckTimer) trimsCheckTimer--; + if (ppmInValid) ppmInValid--; #if defined(RTCLOCK) /* Update global Date/Time every 100 per10ms cycles */ @@ -3196,7 +3197,7 @@ void evalInputs(uint8_t mode) } #endif - if (mode <= e_perout_mode_inactive_phase && isFunctionActive(FUNCTION_TRAINER+ch)) { + if (mode <= e_perout_mode_inactive_phase && isFunctionActive(FUNCTION_TRAINER+ch) && ppmInValid) { // trainer mode TrainerMix* td = &g_eeGeneral.trainer.mix[ch]; if (td->mode) { @@ -3823,6 +3824,10 @@ void perOut(uint8_t mode, uint8_t tick10ms) bool mixCondition = (md->phases != 0 || md->swtch); delayval_t mixEnabled = !(md->phases & (1 << s_perout_flight_phase)) && getSwitch(md->swtch); + if (mixEnabled && md->srcRaw >= MIXSRC_FIRST_TRAINER && md->srcRaw <= MIXSRC_LAST_TRAINER && !ppmInValid) { + mixEnabled = 0; + } + //========== VALUE =============== getvalue_t v = 0; if (mode > e_perout_mode_inactive_phase) { @@ -5046,6 +5051,7 @@ void perMain() int16_t g_ppmIns[NUM_TRAINER]; uint8_t ppmInState = 0; // 0=unsync 1..8= wait for value i-1 +uint8_t ppmInValid = 0; #if !defined(SIMU) && !defined(CPUARM) @@ -5132,19 +5138,18 @@ ISR(TIMER3_CAPT_vect) // G: High frequency noise can cause stack overflo with IS // G: We process g_ppmIns immediately here, to make servo movement as smooth as possible // while under trainee control - if (val>4000 && val < 16000) // G: Prioritize reset pulse. (Needed when less than 8 incoming pulses) + if (val>4000 && val < 16000) { // G: Prioritize reset pulse. (Needed when less than 8 incoming pulses) ppmInState = 1; // triggered - else - { - if (ppmInState && ppmInState<=8) - { - if (val>800 && val<2200) // if valid pulse-width range - { - g_ppmIns[ppmInState++ - 1] = - (int16_t)(val - 1500)*(g_eeGeneral.PPM_Multiplier+10)/10; //+-500 != 512, but close enough. + } + else { + if (ppmInState>0 && ppmInState<=8) { + if (val>800 && val<2200) { // if valid pulse-width range + ppmInValid = 100; + g_ppmIns[ppmInState++ - 1] = (int16_t)(val - 1500) * (uint8_t)(g_eeGeneral.PPM_Multiplier+10)/10; //+-500 != 512, but close enough. } - else + else { ppmInState = 0; // not triggered + } } } diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 1ddafc247..eccbd62a7 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1013,6 +1013,7 @@ extern uint8_t g_beepCnt; extern uint8_t g_beepVal[5]; extern uint8_t ppmInState; //0=unsync 1..8= wait for value i-1 +extern uint8_t ppmInValid; extern int16_t g_ppmIns[NUM_TRAINER]; extern int32_t chans[NUM_CHNOUT]; extern int16_t ex_chans[NUM_CHNOUT]; // Outputs (before LIMITS) of the last perMain diff --git a/radio/src/targets/sky9x/board_sky9x.cpp b/radio/src/targets/sky9x/board_sky9x.cpp index bb01fd7e4..a33453da3 100644 --- a/radio/src/targets/sky9x/board_sky9x.cpp +++ b/radio/src/targets/sky9x/board_sky9x.cpp @@ -314,15 +314,14 @@ extern "C" void TC3_IRQHandler() //capture ppm in at 2MHz ppmInState = 1; // triggered } else { - if (ppmInState && ppmInState<=16) - { - if (val>800 && val<2200) // if valid pulse-width range - { - g_ppmIns[ppmInState++ - 1] = - (int16_t)(val - 1500)*(g_eeGeneral.PPM_Multiplier+10)/10; //+-500 != 512, but close enough. + if (ppmInState>0 && ppmInState<=16) { + if (val>800 && val<2200) { // if valid pulse-width range + ppmInValid = 100; + g_ppmIns[ppmInState++ - 1] = (int16_t)(val - 1500)*(g_eeGeneral.PPM_Multiplier+10)/10; //+-500 != 512, but close enough. } - else + else { ppmInState = 0; // not triggered + } } } diff --git a/radio/src/targets/taranis/trainer_driver.cpp b/radio/src/targets/taranis/trainer_driver.cpp index 5e453d215..2a92fd74e 100644 --- a/radio/src/targets/taranis/trainer_driver.cpp +++ b/radio/src/targets/taranis/trainer_driver.cpp @@ -126,12 +126,13 @@ extern "C" void TIM3_IRQHandler() // We process g_ppmInsright here to make servo movement as smooth as possible // while under trainee control - if ((val>4000) && (val < 19000)) { // G: Prioritize reset pulse. (Needed when less than 16 incoming pulses) + if (val>4000 && val<19000) { // G: Prioritize reset pulse. (Needed when less than 16 incoming pulses) ppmInState = 1; // triggered } else { - if (ppmInState && (ppmInState<=16)) { - if ((val>800) && (val<2200)) { + if (ppmInState>0 && ppmInState<=16) { + if (val>800 && val<2200) { + ppmInValid = 100; g_ppmIns[ppmInState++ - 1] = (int16_t)(val - 1500)*(g_eeGeneral.PPM_Multiplier+10)/10; //+-500 != 512, but close enough. } else { From 2810323cc7108f0d03a1cfa5f7bd5cd79750749b Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 5 May 2014 10:53:59 +0200 Subject: [PATCH 07/15] 10200mAh as a maximum for Consumption in Telemetry Bars --- companion/src/eeprominterface.cpp | 4 ++-- radio/src/opentx.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 5c3f6ff40..6c7c626a3 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -200,8 +200,8 @@ RawSourceRange RawSource::getRange(bool singleprec) result.decimals = 1; break; case TELEMETRY_SOURCE_CONSUMPTION: - result.step = singleprec ? 20 : 1; - result.max = singleprec ? 5100 : 10000; + result.step = singleprec ? 40 : 1; + result.max = singleprec ? 10200 : 10000; break; case TELEMETRY_SOURCE_POWER: case TELEMETRY_SOURCE_POWER_MAX: diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 38e407e2f..45a2a458a 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -2145,7 +2145,7 @@ getvalue_t convert8bitsTelemValue(uint8_t channel, ls_telemetry_value_t value) result = value * 5; break; case TELEM_CONSUMPTION: - result = value * 20; + result = value * 40; break; case TELEM_VSPEED: result = ((getvalue_t)value - 125) * 10; From 934961e99961d46641b6c52e5ae07400f6c0daff Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 5 May 2014 12:27:29 +0200 Subject: [PATCH 08/15] Fixes #1056 --- companion/src/modeledit/customfunctions.cpp | 10 ++++++++-- radio/src/gui/menu_model.cpp | 5 +++-- radio/src/myeeprom.h | 2 ++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index 51de7cc69..c95d34d6e 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -329,8 +329,14 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) if (modified) model.funcSw[i].param = fswtchParam[i]->value(); fswtchParam[i]->setDecimals(0); fswtchParam[i]->setSingleStep(1); - fswtchParam[i]->setMinimum(-125); - fswtchParam[i]->setMaximum(125); + if (IS_ARM(GetEepromInterface()->getBoard())) { + fswtchParam[i]->setMinimum(-500); + fswtchParam[i]->setMaximum(500); + } + else { + fswtchParam[i]->setMinimum(-125); + fswtchParam[i]->setMaximum(125); + } fswtchParam[i]->setValue(model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM; } diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index e28373975..c94f9a048 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -4967,10 +4967,11 @@ void menuModelCustomFunctions(uint8_t event) { INCDEC_DECLARE_VARS(); int16_t val_displayed = CFN_PARAM(sd); - int8_t val_min = 0; #if defined(CPUARM) + int16_t val_min = 0; int16_t val_max = 255; #else + int8_t val_min = 0; uint8_t val_max = 255; #endif if (func == FUNC_SAFETY_CHANNEL) { @@ -5084,7 +5085,7 @@ void menuModelCustomFunctions(uint8_t event) switch (CFN_GVAR_MODE(sd)) { case FUNC_ADJUST_GVAR_CONSTANT: val_displayed = (int8_t)CFN_PARAM(sd); - val_min = -125; val_max = 125; + val_min = -CFN_GVAR_CST_MAX; val_max = +CFN_GVAR_CST_MAX; lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr|LEFT); break; case FUNC_ADJUST_GVAR_SOURCE: diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 451e78f71..6380066a8 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -916,6 +916,7 @@ PACK(typedef struct t_CustomFnData { // Function Switches data #define CFN_GVAR_MODE(p) ((p)->all.mode) #define CFN_PARAM(p) ((p)->all.val) #define CFN_RESET(p) ((p)->active=0, (p)->clear.val1=0, (p)->clear.val2=0) +#define CFN_GVAR_CST_MAX 500 #else PACK(typedef struct t_CustomFnData { PACK(union { @@ -948,6 +949,7 @@ PACK(typedef struct t_CustomFnData { #define CFN_GVAR_MODE(p) ((p)->gvar.mode) #define CFN_PARAM(p) ((p)->value) #define CFN_RESET(p) ((p)->all.active = 0, CFN_PARAM(p) = 0) +#define CFN_GVAR_CST_MAX 125 #endif enum TelemetryUnit { From c53fbd9e94bdd82496fdc33dc2e378c3f5884d0b Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 5 May 2014 14:40:48 +0200 Subject: [PATCH 09/15] Fixes #1059 --- radio/src/opentx.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 45a2a458a..ac4f422f5 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -3918,7 +3918,7 @@ void perOut(uint8_t mode, uint8_t tick10ms) //========== TRIMS ================ if (!(mode & e_perout_mode_notrims)) { #if defined(PCBTARANIS) - if (!md->carryTrim) { + if (md->carryTrim == 0) { int8_t mix_trim; if (stickIndex < NUM_STICKS) mix_trim = stickIndex; @@ -3926,7 +3926,13 @@ void perOut(uint8_t mode, uint8_t tick10ms) mix_trim = virtualInputsTrims[md->srcRaw-1]; else mix_trim = -1; - if (mix_trim >= 0) v += trims[mix_trim]; + if (mix_trim >= 0) { + int16_t trim = trims[mix_trim]; + if (mix_trim == THR_STICK && g_model.throttleReversed) + v -= trim; + else + v += trim; + } } #else int8_t mix_trim = md->carryTrim; @@ -3936,7 +3942,13 @@ void perOut(uint8_t mode, uint8_t tick10ms) mix_trim = stickIndex; else mix_trim = -1; - if (mix_trim >= 0) v += trims[mix_trim]; + if (mix_trim >= 0) { + int16_t trim = trims[mix_trim]; + if (mix_trim == THR_STICK && g_model.throttleReversed) + v -= trim; + else + v += trim; + } #endif } } From 6ae7da4b1a2d96b3444dd66f47b6db68dad65799 Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 5 May 2014 14:51:22 +0200 Subject: [PATCH 10/15] Missing check in setGlobalVariable(...) --- radio/src/lua.cpp | 2 +- radio/src/myeeprom.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/lua.cpp b/radio/src/lua.cpp index 5cdf45328..bb6ed9dff 100644 --- a/radio/src/lua.cpp +++ b/radio/src/lua.cpp @@ -758,7 +758,7 @@ static int luaModelSetGlobalVariable(lua_State *L) int idx = luaL_checkunsigned(L, 1); int phase = luaL_checkunsigned(L, 2); int value = luaL_checkinteger(L, 3); - if (phase < MAX_PHASES && idx < MAX_GVARS && value <= 500) { + if (phase < MAX_PHASES && idx < MAX_GVARS && value >= -GVAR_LIMIT && value <= GVAR_LIMIT) { g_model.phaseData[phase].gvars[idx] = value; } return 0; diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 6380066a8..16018bf3a 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -916,7 +916,7 @@ PACK(typedef struct t_CustomFnData { // Function Switches data #define CFN_GVAR_MODE(p) ((p)->all.mode) #define CFN_PARAM(p) ((p)->all.val) #define CFN_RESET(p) ((p)->active=0, (p)->clear.val1=0, (p)->clear.val2=0) -#define CFN_GVAR_CST_MAX 500 +#define CFN_GVAR_CST_MAX GVAR_LIMIT #else PACK(typedef struct t_CustomFnData { PACK(union { From 15dd4ba2f2ad3293e052aaad8c85d5dfdbf09ac1 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Mon, 5 May 2014 15:35:07 +0200 Subject: [PATCH 11/15] Swedish translation file realigned with English original --- radio/src/translations/se.h.txt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 9336b2ea8..ad986bc9b 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -294,9 +294,13 @@ #define TR_A3_A4_MIN #endif -#define TR_ASPD_MAX "ASp+" +#define TR_ASPD_MAX TR("ASp+", "ASpd+") -#define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_SWR "Tx\0 ""Rx\0 " TR_RX_BATT "A1\0 ""A2\0 " TR_A3_A4 "Höjd""Varv""Tank""T1\0 ""T2\0 ""Fart""Avst""GHjd""Batt""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VFrt""ASpd""dTE\0" TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "A1-\0""A2-\0" TR_A3_A4_MIN "Hjd-""Hjd+""Rpm+""T1+\0""T2+\0""Frt+""Avs+" TR_ASPD_MAX "Cel-""Cls-""Vfs-""Cur+""Pwr+" TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "Acc\0""Tid\0" +#if LCD_W >= 212 + #define TR_VTELEMCHNS "---\0 ""Batt\0""Tmr1\0""Tmr2\0" TR_SWR "Tx\0 ""Rx\0 " TR_RX_BATT "A1\0 ""A2\0 " TR_A3_A4 "Alt\0 ""Rpm\0 ""Fuel\0""T1\0 ""T2\0 ""Spd\0 ""Dist\0""GAlt\0""Cell\0""Cells""Vfas\0""Curr\0""Cnsp\0""Powr\0""AccX\0""AccY\0""AccZ\0""Hdg\0 ""VSpd\0""ASpd\0""dTE\0 " TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "A1-\0 ""A2-\0 " TR_A3_A4_MIN "Alt-\0""Alt+\0""Rpm+\0""T1+\0 ""T2+\0 ""Spd+\0""Dst+\0" TR_ASPD_MAX "Cell-""Cels-""Vfas-""Curr+""Powr+" TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "Acc\0 ""Time\0" +#else + #define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_SWR "Tx\0 ""Rx\0 " TR_RX_BATT "A1\0 ""A2\0 " TR_A3_A4 "Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0" TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "A1-\0""A2-\0" TR_A3_A4_MIN "Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+" TR_ASPD_MAX "Cel-""Cls-""Vfs-""Cur+""Pwr+" TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "Acc\0""Time" +#endif #define LENGTH_UNIT_IMP "ft\0" #define SPEED_UNIT_IMP "mph" @@ -440,7 +444,6 @@ #define LEN_INDENT 1 #define INDENT_WIDTH (FW/2) - #if defined(PCBTARANIS) #define TR_ENTER "[ENTER]" #else @@ -475,7 +478,7 @@ #define TR_TTRIM TR("Gastrim", INDENT "Gastrim") #define TR_BEEPCTR TR("Cent.pip", "Centerpip") #define TR_PROTO TR(INDENT "Proto", INDENT "Protokoll") -#define TR_PPMFRAME "PPM-paket" +#define TR_PPMFRAME TR(INDENT "PPM-paket", INDENT "PPM-paket") #define TR_MS "ms" #define TR_SWITCH "Brytare" #define TR_TRIMS "Trimmar" @@ -851,7 +854,6 @@ #define TR_ABOUT_HARDWARE_3 "" #endif - #define TR_ABOUT_PARENTS_1 "Ursprungsprojekt" #define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)" #define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" @@ -874,4 +876,4 @@ #define TR_VIEW_CHANNELS "Visa Kanaler" #define TR_VIEW_NOTES "Visa Noteringars" #define TR_MODS_FORBIDDEN "Modifikationer förbjudna!" -#define TR_UNLOCKED "Olåst" +#define TR_UNLOCKED "Olåst" \ No newline at end of file From 7119d069da703690c50cf0f0a716006fcb17a9ef Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Mon, 5 May 2014 15:45:31 +0200 Subject: [PATCH 12/15] Fixed Swedish translation issue that resulted in corrupted mix soure strings --- radio/src/translations/se.h.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index ad986bc9b..0f7efd6c3 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -419,7 +419,7 @@ #define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" #endif -#define TR_VSRCRAW "---\0""Rod\0""Hjd\0""Gas\0""Ske\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODER "MAX " TR_CYC_VSRCRAW "TrmR" "TrmH" "TrmG" "TrmS" TR_SW_VSRCRAW +#define TR_VSRCRAW "---\0""Rod\0""Hjd\0""Gas\0""Ske\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS "MAX\0" TR_CYC_VSRCRAW "TrmR" "TrmH" "TrmG" "TrmS" TR_SW_VSRCRAW #define LEN_VTMRMODES "\003" #define TR_VTMRMODES "Av\0""ABS""GAs""GA%""GAt" From f178748090c1d1e66471403c693972dd240fbe42 Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 5 May 2014 16:06:34 +0200 Subject: [PATCH 13/15] Fixes #986 Fixes #1058 --- companion/src/comparedialog.cpp | 60 ++++++------- companion/src/eeprominterface.cpp | 20 +++-- companion/src/eeprominterface.h | 13 +-- .../src/firmwares/gruvin9x/gruvin9xeeprom.cpp | 8 +- .../src/firmwares/gruvin9x/gruvin9xeeprom.h | 10 +-- .../firmwares/opentx/open9xGruvin9xeeprom.cpp | 10 +-- .../firmwares/opentx/open9xGruvin9xeeprom.h | 10 +-- .../firmwares/opentx/open9xSky9xeeprom.cpp | 10 +-- .../src/firmwares/opentx/open9xSky9xeeprom.h | 12 +-- .../firmwares/opentx/open9xStockeeprom.cpp | 18 ++-- .../src/firmwares/opentx/open9xStockeeprom.h | 20 ++--- .../src/firmwares/opentx/opentxeeprom.cpp | 11 ++- companion/src/firmwares/opentx/opentxeeprom.h | 4 +- .../src/firmwares/opentx/opentxinterface.cpp | 8 +- companion/src/helpers.cpp | 22 ++++- companion/src/modeledit/expodialog.cpp | 12 +-- companion/src/modeledit/flightmodes.cpp | 58 ++++++------ companion/src/modeledit/flightmodes.h | 14 +-- companion/src/modeledit/mixerdialog.cpp | 4 +- companion/src/modeledit/modeledit.cpp | 2 +- companion/src/printdialog.cpp | 24 ++--- companion/src/xmlinterface.cpp | 2 +- radio/src/audio_arm.cpp | 4 +- radio/src/eeprom_conversions.cpp | 2 +- radio/src/gtests.cpp | 8 +- radio/src/gui/menu_model.cpp | 72 +++++++-------- radio/src/gui/menus.cpp | 12 +-- radio/src/gui/view_main.cpp | 6 +- radio/src/lcd.cpp | 7 +- radio/src/lcd.h | 2 +- radio/src/lua.cpp | 6 +- radio/src/myeeprom.h | 41 +++++---- radio/src/opentx.cpp | 90 ++++++++++--------- radio/src/opentx.h | 2 +- 34 files changed, 327 insertions(+), 277 deletions(-) diff --git a/companion/src/comparedialog.cpp b/companion/src/comparedialog.cpp index 4b77ff9c6..78a29caba 100644 --- a/companion/src/comparedialog.cpp +++ b/companion/src/comparedialog.cpp @@ -76,7 +76,7 @@ void CompareDialog::printDiff() { te->clear(); printSetup(); - if (GetCurrentFirmware()->getCapability(FlightPhases)) { + if (GetCurrentFirmware()->getCapability(FlightModes)) { printPhases(); } printExpos(); @@ -309,7 +309,7 @@ void CompareDialog::printPhases() str.append(QString("%1").arg(getInputStr(*g_model1, i))); } str.append(""); - for (i=0; igetCapability(FlightPhases); i++) { + for (i=0; igetCapability(FlightModes); i++) { PhaseData *pd1=&g_model1->phaseData[i]; PhaseData *pd2=&g_model2->phaseData[i]; str.append(""+tr("FM")+QString("%1 ").arg(i)); @@ -346,10 +346,10 @@ void CompareDialog::printPhases() if (gvars==1) { gvarnum=GetCurrentFirmware()->getCapability(Gvars); } - if ((gvars==1 && GetCurrentFirmware()->getCapability(GvarsFlightPhases)) || GetCurrentFirmware()->getCapability(RotaryEncoders)) { + if ((gvars==1 && GetCurrentFirmware()->getCapability(GvarsFlightModes)) || GetCurrentFirmware()->getCapability(RotaryEncoders)) { str.append("
"); str.append(""); - if (GetCurrentFirmware()->getCapability(GvarsFlightPhases)) { + if (GetCurrentFirmware()->getCapability(GvarsFlightModes)) { str.append(QString(""); } @@ -357,7 +357,7 @@ void CompareDialog::printPhases() str.append(QString(""); } str.append(""); - if (GetCurrentFirmware()->getCapability(GvarsFlightPhases)) { + if (GetCurrentFirmware()->getCapability(GvarsFlightModes)) { for (i=0; iGV%1
%2").arg(i+1).arg(g_model1->gvars_names[i])); } @@ -366,13 +366,13 @@ void CompareDialog::printPhases() str.append(QString("
").arg((i==0 ? 'A': 'B'))); } str.append(""); - for (i=0; igetCapability(FlightPhases); i++) { + for (i=0; igetCapability(FlightModes); i++) { PhaseData *pd1=&g_model1->phaseData[i]; PhaseData *pd2=&g_model2->phaseData[i]; str.append("").arg(pd1->name).arg(color)); - if (GetCurrentFirmware()->getCapability(GvarsFlightPhases)) { + if (GetCurrentFirmware()->getCapability(GvarsFlightModes)) { for (k=0; kgvars[k],pd2->gvars[k]); if (pd1->gvars[k]<=1024) { @@ -411,7 +411,7 @@ void CompareDialog::printPhases() str.append(QString("").arg(getInputStr(*g_model1, i))); } str.append(""); - for (i=0; igetCapability(FlightPhases); i++) { + for (i=0; igetCapability(FlightModes); i++) { PhaseData *pd1=&g_model1->phaseData[i]; PhaseData *pd2=&g_model2->phaseData[i]; str.append("
 ").arg(gvarnum)+tr("Gvars")+"").arg(GetCurrentFirmware()->getCapability(RotaryEncoders))+tr("Rot. Enc.")+"
"+tr("Flight mode name")+"RE%1
"+tr("FM")+QString("%1 ").arg(i)); color=getColor1(pd1->name,pd2->name); str.append(QString("%1%1
"+tr("FM")+QString("%1 ").arg(i)); @@ -436,17 +436,17 @@ void CompareDialog::printPhases() } str.append("
"); - if ((gvars==1 && GetCurrentFirmware()->getCapability(GvarsFlightPhases)) || GetCurrentFirmware()->getCapability(RotaryEncoders)) { + if ((gvars==1 && GetCurrentFirmware()->getCapability(GvarsFlightModes)) || GetCurrentFirmware()->getCapability(RotaryEncoders)) { str.append("
"); str.append(""); - if (GetCurrentFirmware()->getCapability(GvarsFlightPhases)) { + if (GetCurrentFirmware()->getCapability(GvarsFlightModes)) { str.append(QString(""); } if (GetCurrentFirmware()->getCapability(RotaryEncoders)) { str.append(QString(""); } str.append(""); - if (GetCurrentFirmware()->getCapability(GvarsFlightPhases)) { + if (GetCurrentFirmware()->getCapability(GvarsFlightModes)) { for (i=0; iGV%1
%2").arg(i+1).arg(g_model2->gvars_names[i])); } @@ -455,13 +455,13 @@ void CompareDialog::printPhases() str.append(QString("
").arg((i==0 ? 'A': 'B'))); } str.append(""); - for (i=0; igetCapability(FlightPhases); i++) { + for (i=0; igetCapability(FlightModes); i++) { PhaseData *pd1=&g_model1->phaseData[i]; PhaseData *pd2=&g_model2->phaseData[i]; str.append("").arg(pd2->name).arg(color)); - if (GetCurrentFirmware()->getCapability(GvarsFlightPhases)) { + if (GetCurrentFirmware()->getCapability(GvarsFlightModes)) { for (k=0; kgvars[k],pd2->gvars[k]); if (pd2->gvars[k]<=1024) { @@ -569,7 +569,7 @@ void CompareDialog::printGvars() gvarnum=GetCurrentFirmware()->getCapability(Gvars); } - if (!GetCurrentFirmware()->getCapability(GvarsFlightPhases) && (gvars==1 && GetCurrentFirmware()->getCapability(Gvars))) { + if (!GetCurrentFirmware()->getCapability(GvarsFlightModes) && (gvars==1 && GetCurrentFirmware()->getCapability(Gvars))) { QString str = "
 ").arg(gvarnum)+tr("Gvars")+"").arg(GetCurrentFirmware()->getCapability(RotaryEncoders))+tr("Rot. Enc.")+"
"+tr("Flight mode name")+"RE%1
"+tr("FM")+QString("%1 ").arg(i)); color=getColor1(pd1->name,pd2->name); str.append(QString("%1
"; str.append(""); str.append("

"+tr("Global Variables")+"

"); @@ -653,12 +653,12 @@ void CompareDialog::printExpos() str += tr("Weight") + QString("%1").arg(getGVarString(ed->weight)).rightJustified(6, ' '); str += ed->curve.toString().replace("<", "<").replace(">", ">"); - if (GetCurrentFirmware()->getCapability(FlightPhases)) { + if (GetCurrentFirmware()->getCapability(FlightModes)) { if(ed->phases) { - if (ed->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { + if (ed->phases!=(unsigned int)(1<getCapability(FlightModes))-1) { int mask=1; int first=0; - for (int i=0; igetCapability(FlightPhases);i++) { + for (int i=0; igetCapability(FlightModes);i++) { if (!(ed->phases & mask)) { first++; } @@ -671,7 +671,7 @@ void CompareDialog::printExpos() } mask=1; first=1; - for (int j=0; jgetCapability(FlightPhases);j++) { + for (int j=0; jgetCapability(FlightModes);j++) { if (!(ed->phases & mask)) { PhaseData *pd = &g_model1->phaseData[j]; if (!first) { @@ -731,12 +731,12 @@ void CompareDialog::printExpos() str += tr("Weight") + QString("%1").arg(getGVarString(ed->weight)).rightJustified(6, ' '); str += ed->curve.toString().replace("<", "<").replace(">", ">"); - if (GetCurrentFirmware()->getCapability(FlightPhases)) { + if (GetCurrentFirmware()->getCapability(FlightModes)) { if(ed->phases) { - if (ed->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { + if (ed->phases!=(unsigned int)(1<getCapability(FlightModes))-1) { int mask=1; int first=0; - for (int i=0; igetCapability(FlightPhases);i++) { + for (int i=0; igetCapability(FlightModes);i++) { if (!(ed->phases & mask)) { first++; } @@ -749,7 +749,7 @@ void CompareDialog::printExpos() } mask=1; first=1; - for (int j=0; jgetCapability(FlightPhases);j++) { + for (int j=0; jgetCapability(FlightModes);j++) { if (!(ed->phases & mask)) { PhaseData *pd = &g_model2->phaseData[j]; if (!first) { @@ -829,12 +829,12 @@ void CompareDialog::printMixers() if (md->delayDown || md->delayUp) str += tr(" Delay(u%1:d%2)").arg(md->delayUp/scale).arg(md->delayDown/scale); if (md->speedDown || md->speedUp) str += tr(" Slow(u%1:d%2)").arg(md->speedUp/scale).arg(md->speedDown/scale); if (md->mixWarn) str += " "+tr("Warn")+QString("(%1)").arg(md->mixWarn); - if (GetCurrentFirmware()->getCapability(FlightPhases)) { + if (GetCurrentFirmware()->getCapability(FlightModes)) { if(md->phases) { - if (md->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { + if (md->phases!=(unsigned int)(1<getCapability(FlightModes))-1) { int mask=1; int first=0; - for (int i=0; igetCapability(FlightPhases);i++) { + for (int i=0; igetCapability(FlightModes);i++) { if (!(md->phases & mask)) { first++; } @@ -847,7 +847,7 @@ void CompareDialog::printMixers() } mask=1; first=1; - for (int j=0; jgetCapability(FlightPhases);j++) { + for (int j=0; jgetCapability(FlightModes);j++) { if (!(md->phases & mask)) { PhaseData *pd = &g_model1->phaseData[j]; if (!first) { @@ -908,12 +908,12 @@ void CompareDialog::printMixers() if (md->delayDown || md->delayUp) str += tr(" Delay(u%1:d%2)").arg(md->delayUp/scale).arg(md->delayDown/scale); if (md->speedDown || md->speedUp) str += tr(" Slow(u%1:d%2)").arg(md->speedUp/scale).arg(md->speedDown/scale); if (md->mixWarn) str += " "+tr("Warn")+QString("(%1)").arg(md->mixWarn); - if (GetCurrentFirmware()->getCapability(FlightPhases)) { + if (GetCurrentFirmware()->getCapability(FlightModes)) { if(md->phases) { - if (md->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { + if (md->phases!=(unsigned int)(1<getCapability(FlightModes))-1) { int mask=1; int first=0; - for (int i=0; igetCapability(FlightPhases);i++) { + for (int i=0; igetCapability(FlightModes);i++) { if (!(md->phases & mask)) { first++; } @@ -926,7 +926,7 @@ void CompareDialog::printMixers() } mask=1; first=1; - for (int j=0; jgetCapability(FlightPhases);j++) { + for (int j=0; jgetCapability(FlightModes);j++) { if (!(md->phases & mask)) { PhaseData *pd = &g_model2->phaseData[j]; if (!first) { diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 6c7c626a3..4a04b563d 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -272,7 +272,7 @@ QString RawSource::toString() QObject::tr("ACC"), QObject::tr("Time"), }; - static const QString virtualSwitches[] = { + static const QString logicalSwitches[] = { QObject::tr("L1"), QObject::tr("L2"), QObject::tr("L3"), QObject::tr("L4"), QObject::tr("L5"), QObject::tr("L6"), QObject::tr("L7"), QObject::tr("L8"), QObject::tr("L9"), QObject::tr("L10"), QObject::tr("L11"), QObject::tr("L12"), QObject::tr("L13"), QObject::tr("L14"), QObject::tr("L15"), QObject::tr("L16"), QObject::tr("L17"), QObject::tr("L18"), QObject::tr("L19"), QObject::tr("L20"), QObject::tr("L21"), QObject::tr("L22"), QObject::tr("L23"), QObject::tr("L24"), QObject::tr("L25"), QObject::tr("L26"), QObject::tr("L27"), QObject::tr("L28"), QObject::tr("L29"), QObject::tr("L30"), @@ -302,7 +302,7 @@ QString RawSource::toString() case SOURCE_TYPE_SWITCH: return (IS_TARANIS(GetEepromInterface()->getBoard()) ? CHECK_IN_ARRAY(switchesX9D, index) : CHECK_IN_ARRAY(switches9X, index)); case SOURCE_TYPE_CUSTOM_SWITCH: - return virtualSwitches[index]; + return logicalSwitches[index]; case SOURCE_TYPE_CYC: return QObject::tr("CYC%1").arg(index+1); case SOURCE_TYPE_PPM: @@ -349,13 +349,17 @@ QString RawSwitch::toString() SwitchUp('H'), SwitchDn('H'), }; - static const QString virtualSwitches[] = { + static const QString logicalSwitches[] = { QObject::tr("L1"), QObject::tr("L2"), QObject::tr("L3"), QObject::tr("L4"), QObject::tr("L5"), QObject::tr("L6"), QObject::tr("L7"), QObject::tr("L8"), QObject::tr("L9"), QObject::tr("L10"), QObject::tr("L11"), QObject::tr("L12"), QObject::tr("L13"), QObject::tr("L14"), QObject::tr("L15"), QObject::tr("L16"), QObject::tr("L17"), QObject::tr("L18"), QObject::tr("L19"), QObject::tr("L20"), QObject::tr("L21"), QObject::tr("L22"), QObject::tr("L23"), QObject::tr("L24"), QObject::tr("L25"), QObject::tr("L26"), QObject::tr("L27"), QObject::tr("L28"), QObject::tr("L29"), QObject::tr("L30"), QObject::tr("L31"), QObject::tr("L32") }; + static const QString flightModes[] = { + QObject::tr("FM0"), QObject::tr("FM1"), QObject::tr("FM2"), QObject::tr("FM3"), QObject::tr("FM4"), QObject::tr("FM5"), QObject::tr("FM6"), QObject::tr("FM7"), QObject::tr("FM8") + }; + static const QString multiposPots[] = { QObject::tr("S11"), QObject::tr("S12"), QObject::tr("S13"), QObject::tr("S14"), QObject::tr("S15"), QObject::tr("S16"), QObject::tr("S21"), QObject::tr("S22"), QObject::tr("S23"), QObject::tr("S24"), QObject::tr("S25"), QObject::tr("S26"), @@ -389,7 +393,7 @@ QString RawSwitch::toString() else return CHECK_IN_ARRAY(switches9X, index-1); case SWITCH_TYPE_VIRTUAL: - return CHECK_IN_ARRAY(virtualSwitches, index-1); + return CHECK_IN_ARRAY(logicalSwitches, index-1); case SWITCH_TYPE_MULTIPOS_POT: return CHECK_IN_ARRAY(multiposPots, index-1); case SWITCH_TYPE_TRIM: @@ -400,6 +404,8 @@ QString RawSwitch::toString() return QObject::tr("ON"); case SWITCH_TYPE_OFF: return QObject::tr("OFF"); + case SWITCH_TYPE_FLIGHT_MODE: + return CHECK_IN_ARRAY(flightModes, index-1); case SWITCH_TYPE_NONE: return QObject::tr("----"); case SWITCH_TYPE_TIMER_MODE: @@ -1050,7 +1056,7 @@ void ModelData::clear() moduleData[0].protocol=PPM; moduleData[1].protocol=OFF; } - for (int i=0; i 125) { @@ -689,7 +689,7 @@ t_Gruvin9xModelData_v106::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { diff --git a/companion/src/firmwares/gruvin9x/gruvin9xeeprom.h b/companion/src/firmwares/gruvin9x/gruvin9xeeprom.h index 8886c83d1..7a763ef6a 100644 --- a/companion/src/firmwares/gruvin9x/gruvin9xeeprom.h +++ b/companion/src/firmwares/gruvin9x/gruvin9xeeprom.h @@ -277,7 +277,7 @@ PACK(typedef struct t_Gruvin9xTimerData { t_Gruvin9xTimerData() { memset(this, 0, sizeof(t_Gruvin9xTimerData)); } }) Gruvin9xTimerData; -#define G9X_MAX_PHASES 5 +#define G9X_MAX_FLIGHT_MODES 5 #define G9X_MAX_MIXERS 32 #define G9X_MAX_EXPOS 14 #define G9X_MAX_CURVE5 8 @@ -312,7 +312,7 @@ PACK(typedef struct t_Gruvin9xModelData_v102 { Gruvin9xLogicalSwitchData customSw[G9X_NUM_CSW]; Gruvin9xSafetySwData safetySw[G9X_NUM_CHNOUT]; Gruvin9xSwashRingData swashR; - Gruvin9xPhaseData_v102 phaseData[G9X_MAX_PHASES]; + Gruvin9xPhaseData_v102 phaseData[G9X_MAX_FLIGHT_MODES]; Gruvin9xFrSkyData frsky; operator ModelData(); @@ -344,7 +344,7 @@ PACK(typedef struct t_Gruvin9xModelData_v103 { Gruvin9xLogicalSwitchData customSw[G9X_NUM_CSW]; Gruvin9xSafetySwData safetySw[G9X_NUM_CHNOUT]; Gruvin9xSwashRingData swashR; - Gruvin9xPhaseData_v102 phaseData[G9X_MAX_PHASES]; + Gruvin9xPhaseData_v102 phaseData[G9X_MAX_FLIGHT_MODES]; Gruvin9xFrSkyData frsky; operator ModelData(); @@ -377,7 +377,7 @@ PACK(typedef struct t_Gruvin9xModelData_v105 { Gruvin9xSafetySwData safetySw[G9X_NUM_CHNOUT]; Gruvin9xFuncSwData funcSw[G9X_NUM_FSW]; Gruvin9xSwashRingData swashR; - Gruvin9xPhaseData_v102 phaseData[G9X_MAX_PHASES]; + Gruvin9xPhaseData_v102 phaseData[G9X_MAX_FLIGHT_MODES]; int16_t subtrim[NUM_STICKS]; Gruvin9xFrSkyData frsky; @@ -409,7 +409,7 @@ PACK(typedef struct t_Gruvin9xModelData_v106 { Gruvin9xSafetySwData safetySw[G9X_NUM_CHNOUT]; Gruvin9xFuncSwData funcSw[G9X_NUM_FSW]; Gruvin9xSwashRingData swashR; - Gruvin9xPhaseData_v106 phaseData[G9X_MAX_PHASES]; + Gruvin9xPhaseData_v106 phaseData[G9X_MAX_FLIGHT_MODES]; Gruvin9xFrSkyData frsky; operator ModelData(); diff --git a/companion/src/firmwares/opentx/open9xGruvin9xeeprom.cpp b/companion/src/firmwares/opentx/open9xGruvin9xeeprom.cpp index 6ec5f402d..c69aa61da 100644 --- a/companion/src/firmwares/opentx/open9xGruvin9xeeprom.cpp +++ b/companion/src/firmwares/opentx/open9xGruvin9xeeprom.cpp @@ -460,7 +460,7 @@ t_Open9xGruvin9xModelData_v207::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -545,7 +545,7 @@ t_Open9xGruvin9xModelData_v208::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -634,7 +634,7 @@ t_Open9xGruvin9xModelData_v209::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -724,7 +724,7 @@ t_Open9xGruvin9xModelData_v210::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -811,7 +811,7 @@ t_Open9xGruvin9xModelData_v211::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { diff --git a/companion/src/firmwares/opentx/open9xGruvin9xeeprom.h b/companion/src/firmwares/opentx/open9xGruvin9xeeprom.h index 214e2ef6d..5ae1d0377 100644 --- a/companion/src/firmwares/opentx/open9xGruvin9xeeprom.h +++ b/companion/src/firmwares/opentx/open9xGruvin9xeeprom.h @@ -197,7 +197,7 @@ PACK(typedef struct t_Open9xGruvin9xModelData_v207 { Open9xGruvin9xLogicalSwitchData_v207 customSw[O9X_NUM_CSW]; Open9xFuncSwData_v203 funcSw[O9X_NUM_FSW]; Open9xGruvin9xSwashRingData_v208 swashR; - Open9xGruvin9xPhaseData_v207 phaseData[O9X_MAX_PHASES]; + Open9xGruvin9xPhaseData_v207 phaseData[O9X_MAX_FLIGHT_MODES]; Open9xFrSkyData_v205 frsky; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -231,7 +231,7 @@ PACK(typedef struct t_Open9xGruvin9xModelData_v208 { Open9xGruvin9xLogicalSwitchData_v207 customSw[O9X_NUM_CSW]; Open9xGruvin9xFuncSwData_v203 funcSw[O9X_NUM_FSW]; Open9xGruvin9xSwashRingData_v208 swashR; - Open9xGruvin9xPhaseData_v208 phaseData[O9X_MAX_PHASES]; + Open9xGruvin9xPhaseData_v208 phaseData[O9X_MAX_FLIGHT_MODES]; Open9xFrSkyData_v208 frsky; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -270,7 +270,7 @@ PACK(typedef struct t_Open9xGruvin9xModelData_v209 { Open9xGruvin9xLogicalSwitchData_v209 customSw[O9X_NUM_CSW]; Open9xGruvin9xFuncSwData_v203 funcSw[O9X_NUM_FSW]; Open9xGruvin9xSwashRingData_v209 swashR; - Open9xGruvin9xPhaseData_v208 phaseData[O9X_MAX_PHASES]; + Open9xGruvin9xPhaseData_v208 phaseData[O9X_MAX_FLIGHT_MODES]; Open9xFrSkyData_v208 frsky; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -310,7 +310,7 @@ PACK(typedef struct t_Open9xGruvin9xModelData_v210 { Open9xGruvin9xLogicalSwitchData_v209 customSw[O9X_NUM_CSW]; Open9xGruvin9xFuncSwData_v210 funcSw[O9X_NUM_FSW]; Open9xGruvin9xSwashRingData_v209 swashR; - Open9xGruvin9xPhaseData_v208 phaseData[O9X_MAX_PHASES]; + Open9xGruvin9xPhaseData_v208 phaseData[O9X_MAX_FLIGHT_MODES]; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -348,7 +348,7 @@ PACK(typedef struct t_Open9xGruvin9xModelData_v211 { Open9xGruvin9xLogicalSwitchData_v209 customSw[O9X_NUM_CSW]; Open9xGruvin9xFuncSwData_v210 funcSw[O9X_NUM_FSW]; Open9xGruvin9xSwashRingData_v209 swashR; - Open9xGruvin9xPhaseData_v208 phaseData[O9X_MAX_PHASES]; + Open9xGruvin9xPhaseData_v208 phaseData[O9X_MAX_FLIGHT_MODES]; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; diff --git a/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp b/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp index d50b42cf0..2ea5bfbe1 100644 --- a/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp +++ b/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp @@ -767,7 +767,7 @@ t_Open9xArmModelData_v208::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -856,7 +856,7 @@ t_Open9xArmModelData_v209::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -946,7 +946,7 @@ t_Open9xArmModelData_v210::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -1030,7 +1030,7 @@ t_Open9xArmModelData_v211::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -1117,7 +1117,7 @@ t_Open9xArmModelData_v212::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { diff --git a/companion/src/firmwares/opentx/open9xSky9xeeprom.h b/companion/src/firmwares/opentx/open9xSky9xeeprom.h index fdb3974ee..036f9f786 100644 --- a/companion/src/firmwares/opentx/open9xSky9xeeprom.h +++ b/companion/src/firmwares/opentx/open9xSky9xeeprom.h @@ -19,7 +19,7 @@ #include "open9xStockeeprom.h" -#define O9X_ARM_MAX_PHASES 9 +#define O9X_ARM_MAX_FLIGHT_MODES 9 #define O9X_ARM_MAX_MIXERS 64 #define O9X_ARM_MAX_EXPOS 32 #define O9X_ARM_NUM_CHNOUT 32 // number of real output channels CH1-CH16 @@ -346,7 +346,7 @@ PACK(typedef struct t_Open9xArmModelData_v208 { Open9xArmLogicalSwitchData_v208 customSw[O9X_ARM_NUM_CSW]; Open9xArmFuncSwData_v208 funcSw[O9X_ARM_NUM_FSW]; Open9xArmSwashRingData_v208 swashR; - Open9xArmPhaseData_v208 phaseData[O9X_ARM_MAX_PHASES]; + Open9xArmPhaseData_v208 phaseData[O9X_ARM_MAX_FLIGHT_MODES]; Open9xFrSkyData_v208 frsky; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -385,7 +385,7 @@ PACK(typedef struct t_Open9xArmModelData_v209 { Open9xArmLogicalSwitchData_v209 customSw[O9X_ARM_NUM_CSW]; Open9xArmFuncSwData_v208 funcSw[O9X_ARM_NUM_FSW]; Open9xArmSwashRingData_v209 swashR; - Open9xArmPhaseData_v208 phaseData[O9X_ARM_MAX_PHASES]; + Open9xArmPhaseData_v208 phaseData[O9X_ARM_MAX_FLIGHT_MODES]; Open9xFrSkyData_v208 frsky; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -425,7 +425,7 @@ PACK(typedef struct t_Open9xArmModelData_v210 { Open9xArmLogicalSwitchData_v210 customSw[O9X_ARM_NUM_CSW]; Open9xArmFuncSwData_v210 funcSw[O9X_ARM_NUM_FSW]; Open9xArmSwashRingData_v209 swashR; - Open9xArmPhaseData_v208 phaseData[O9X_ARM_MAX_PHASES]; + Open9xArmPhaseData_v208 phaseData[O9X_ARM_MAX_FLIGHT_MODES]; Open9xArmFrSkyData_v210 frsky; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -464,7 +464,7 @@ PACK(typedef struct t_Open9xArmModelData_v211 { Open9xArmLogicalSwitchData_v210 customSw[O9X_ARM_NUM_CSW]; Open9xArmFuncSwData_v211 funcSw[O9X_ARM_NUM_FSW]; Open9xArmSwashRingData_v209 swashR; - Open9xArmPhaseData_v208 phaseData[O9X_ARM_MAX_PHASES]; + Open9xArmPhaseData_v208 phaseData[O9X_ARM_MAX_FLIGHT_MODES]; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -502,7 +502,7 @@ PACK(typedef struct t_Open9xArmModelData_v212 { Open9xArmLogicalSwitchData_v210 customSw[O9X_ARM_NUM_CSW]; Open9xArmFuncSwData_v211 funcSw[O9X_ARM_NUM_FSW]; Open9xArmSwashRingData_v210 swashR; - Open9xArmPhaseData_v212 phaseData[O9X_ARM_MAX_PHASES]; + Open9xArmPhaseData_v212 phaseData[O9X_ARM_MAX_FLIGHT_MODES]; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; diff --git a/companion/src/firmwares/opentx/open9xStockeeprom.cpp b/companion/src/firmwares/opentx/open9xStockeeprom.cpp index 8c8d1abc3..e44d4fb26 100644 --- a/companion/src/firmwares/opentx/open9xStockeeprom.cpp +++ b/companion/src/firmwares/opentx/open9xStockeeprom.cpp @@ -948,7 +948,7 @@ t_Open9xModelData_v201::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -1022,7 +1022,7 @@ t_Open9xModelData_v202::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -1098,7 +1098,7 @@ t_Open9xModelData_v203::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -1172,7 +1172,7 @@ t_Open9xModelData_v204::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -1251,7 +1251,7 @@ t_Open9xModelData_v205::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -1337,7 +1337,7 @@ t_Open9xModelData_v208::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -1430,7 +1430,7 @@ t_Open9xModelData_v209::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -1524,7 +1524,7 @@ t_Open9xModelData_v210::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { @@ -1612,7 +1612,7 @@ t_Open9xModelData_v211::operator ModelData () c9x.moduleData[0].ppmPulsePol = pulsePol; c9x.extendedLimits = extendedLimits; c9x.extendedTrims = extendedTrims; - for (int i=0; i 500) { diff --git a/companion/src/firmwares/opentx/open9xStockeeprom.h b/companion/src/firmwares/opentx/open9xStockeeprom.h index 8f121441e..41ad29c01 100644 --- a/companion/src/firmwares/opentx/open9xStockeeprom.h +++ b/companion/src/firmwares/opentx/open9xStockeeprom.h @@ -482,7 +482,7 @@ PACK(typedef struct t_Open9xTimerDataExtra { }) Open9xTimerDataExtra; #define O9X_MAX_TIMERS 2 -#define O9X_MAX_PHASES 5 +#define O9X_MAX_FLIGHT_MODES 5 #define O9X_MAX_MIXERS 32 #define O9X_MAX_EXPOS 14 #define O9X_NUM_CHNOUT 16 // number of real output channels CH1-CH16 @@ -520,7 +520,7 @@ PACK(typedef struct t_Open9xModelData_v201 { Open9xSafetySwData safetySw[O9X_NUM_CHNOUT]; Open9xFuncSwData_v201 funcSw[12]; Open9xSwashRingData_v208 swashR; - Open9xPhaseData_v201 phaseData[O9X_MAX_PHASES]; + Open9xPhaseData_v201 phaseData[O9X_MAX_FLIGHT_MODES]; Open9xFrSkyData_v201 frsky; operator ModelData(); @@ -551,7 +551,7 @@ PACK(typedef struct t_Open9xModelData_v202 { Open9xSafetySwData safetySw[O9X_NUM_CHNOUT]; Open9xFuncSwData_v201 funcSw[12]; Open9xSwashRingData_v208 swashR; - Open9xPhaseData_v201 phaseData[O9X_MAX_PHASES]; + Open9xPhaseData_v201 phaseData[O9X_MAX_FLIGHT_MODES]; Open9xFrSkyData_v202 frsky; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -584,7 +584,7 @@ PACK(typedef struct t_Open9xModelData_v203 { Open9xLogicalSwitchData_v208 customSw[O9X_NUM_CSW]; Open9xFuncSwData_v203 funcSw[O9X_NUM_FSW]; Open9xSwashRingData_v208 swashR; - Open9xPhaseData_v201 phaseData[O9X_MAX_PHASES]; + Open9xPhaseData_v201 phaseData[O9X_MAX_FLIGHT_MODES]; Open9xFrSkyData_v202 frsky; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -617,7 +617,7 @@ PACK(typedef struct t_Open9xModelData_v204 { Open9xLogicalSwitchData_v208 customSw[O9X_NUM_CSW]; Open9xFuncSwData_v203 funcSw[O9X_NUM_FSW]; Open9xSwashRingData_v208 swashR; - Open9xPhaseData_v201 phaseData[O9X_MAX_PHASES]; + Open9xPhaseData_v201 phaseData[O9X_MAX_FLIGHT_MODES]; Open9xFrSkyData_v204 frsky; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -650,7 +650,7 @@ PACK(typedef struct t_Open9xModelData_v205 { Open9xLogicalSwitchData_v208 customSw[O9X_NUM_CSW]; Open9xFuncSwData_v203 funcSw[O9X_NUM_FSW]; Open9xSwashRingData_v208 swashR; - Open9xPhaseData_v201 phaseData[O9X_MAX_PHASES]; + Open9xPhaseData_v201 phaseData[O9X_MAX_FLIGHT_MODES]; Open9xFrSkyData_v205 frsky; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -685,7 +685,7 @@ PACK(typedef struct t_Open9xModelData_v208 { Open9xLogicalSwitchData_v208 customSw[O9X_NUM_CSW]; Open9xFuncSwData_v203 funcSw[O9X_NUM_FSW]; Open9xSwashRingData_v208 swashR; - Open9xPhaseData_v201 phaseData[O9X_MAX_PHASES]; + Open9xPhaseData_v201 phaseData[O9X_MAX_FLIGHT_MODES]; Open9xFrSkyData_v208 frsky; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -724,7 +724,7 @@ PACK(typedef struct t_Open9xModelData_v209 { Open9xLogicalSwitchData_v209 customSw[O9X_NUM_CSW]; Open9xFuncSwData_v203 funcSw[O9X_NUM_FSW]; Open9xSwashRingData_v209 swashR; - Open9xPhaseData_v201 phaseData[O9X_MAX_PHASES]; + Open9xPhaseData_v201 phaseData[O9X_MAX_FLIGHT_MODES]; Open9xFrSkyData_v208 frsky; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -764,7 +764,7 @@ PACK(typedef struct t_Open9xModelData_v210 { Open9xLogicalSwitchData_v209 customSw[O9X_NUM_CSW]; Open9xFuncSwData_v210 funcSw[O9X_NUM_FSW]; Open9xSwashRingData_v209 swashR; - Open9xPhaseData_v201 phaseData[O9X_MAX_PHASES]; + Open9xPhaseData_v201 phaseData[O9X_MAX_FLIGHT_MODES]; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; @@ -802,7 +802,7 @@ PACK(typedef struct t_Open9xModelData_v211 { Open9xLogicalSwitchData_v209 customSw[O9X_NUM_CSW]; Open9xFuncSwData_v210 funcSw[O9X_NUM_FSW]; Open9xSwashRingData_v209 swashR; - Open9xPhaseData_v201 phaseData[O9X_MAX_PHASES]; + Open9xPhaseData_v201 phaseData[O9X_MAX_FLIGHT_MODES]; int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5msec increments uint8_t thrTraceSrc; diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 911734919..5b0ba85b7 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -15,7 +15,7 @@ #define MAX_SWITCHES(board) (IS_TARANIS(board) ? 8 : 7) #define MAX_SWITCHES_POSITION(board) (IS_TARANIS(board) ? 22 : 9) #define MAX_ROTARY_ENCODERS(board) (board==BOARD_GRUVIN9X ? 2 : (board==BOARD_SKY9X ? 1 : 0)) -#define MAX_PHASES(board, version) (IS_ARM(board) ? 9 : (IS_DBLRAM(board, version) ? 6 : 5)) +#define MAX_FLIGHT_MODES(board, version) (IS_ARM(board) ? 9 : (IS_DBLRAM(board, version) ? 6 : 5)) #define MAX_MIXERS(board, version) (IS_ARM(board) ? 64 : 32) #define MAX_CHANNELS(board, version) (IS_ARM(board) ? 32 : 16) #define MAX_EXPOS(board, version) (IS_ARM(board) ? ((IS_TARANIS(board) && version >= 216) ? 64 : 32) : (IS_DBLRAM(board, version) ? 16 : 14)) @@ -91,6 +91,13 @@ class SwitchesConversionTable: public ConversionTable { addConversion(RawSwitch(SWITCH_TYPE_ON), val++); } + if (IS_ARM(board)) { + for (int i=1; i<=MAX_FLIGHT_MODES(board, version); i++) { + addConversion(RawSwitch(SWITCH_TYPE_FLIGHT_MODE, -i), -val+offset); + addConversion(RawSwitch(SWITCH_TYPE_FLIGHT_MODE, i), val++); + } + } + if (version < 216) { // previous "moment" switches for (int i=1; i<=MAX_SWITCHES_POSITION(board); i++) { @@ -2401,7 +2408,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne internalField.Append(new AvrCustomFunctionField(modelData.funcSw[i], board, version, variant)); } internalField.Append(new HeliField(modelData.swashRingData, board, version, variant)); - for (int i=0; igetCapability(FlightPhases); i<=GetCurrentFirmware()->getCapability(FlightPhases); i++) { + for (int i=-GetCurrentFirmware()->getCapability(FlightModes); i<=GetCurrentFirmware()->getCapability(FlightModes); i++) { if (i < 0) b->addItem(QObject::tr("!Flight mode %1").arg(-i-1), i); else if (i > 0) @@ -137,7 +137,7 @@ void populatePhasesCB(QComboBox *b, int value) else b->addItem(QObject::tr("----"), 0); } - b->setCurrentIndex(value + GetCurrentFirmware()->getCapability(FlightPhases)); + b->setCurrentIndex(value + GetCurrentFirmware()->getCapability(FlightModes)); } bool gvarsEnabled() @@ -344,7 +344,7 @@ void CurveGroup::valuesChanged() void populateGvarUseCB(QComboBox *b, unsigned int phase) { b->addItem(QObject::tr("Own value")); - for (int i=0; igetCapability(FlightPhases); i++) { + for (int i=0; igetCapability(FlightModes); i++) { if (i != (int)phase) { b->addItem(QObject::tr("Flight mode %1 value").arg(i)); } @@ -400,6 +400,13 @@ void populateSwitchCB(QComboBox *b, const RawSwitch & value, const GeneralSettin b->clear(); if (attr & POPULATE_ONOFF) { + if (IS_ARM(GetCurrentFirmware()->getBoard())) { + for (int i=-GetCurrentFirmware()->getCapability(FlightModes); i<0; i++) { + item = RawSwitch(SWITCH_TYPE_FLIGHT_MODE, i); + b->addItem(item.toString(), item.toValue()); + if (item == value) b->setCurrentIndex(b->count()-1); + } + } item = RawSwitch(SWITCH_TYPE_OFF); b->addItem(item.toString(), item.toValue()); if (item == value) b->setCurrentIndex(b->count()-1); @@ -490,6 +497,13 @@ void populateSwitchCB(QComboBox *b, const RawSwitch & value, const GeneralSettin item = RawSwitch(SWITCH_TYPE_ON); b->addItem(item.toString(), item.toValue()); if (item == value) b->setCurrentIndex(b->count()-1); + if (IS_ARM(GetCurrentFirmware()->getBoard())) { + for (int i=1; i<=GetCurrentFirmware()->getCapability(FlightModes); i++) { + item = RawSwitch(SWITCH_TYPE_FLIGHT_MODE, i); + b->addItem(item.toString(), item.toValue()); + if (item == value) b->setCurrentIndex(b->count()-1); + } + } } b->setMaxVisibleItems(10); @@ -835,7 +849,7 @@ QString getProtocol(ModelData * g_model) QString getPhasesStr(unsigned int phases, ModelData & model) { - int numphases = GetCurrentFirmware()->getCapability(FlightPhases); + int numphases = GetCurrentFirmware()->getCapability(FlightModes); if (numphases && phases) { QString str; diff --git a/companion/src/modeledit/expodialog.cpp b/companion/src/modeledit/expodialog.cpp index c1a5941dd..0d66f874a 100644 --- a/companion/src/modeledit/expodialog.cpp +++ b/companion/src/modeledit/expodialog.cpp @@ -29,7 +29,7 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, G ui->sideCB->setCurrentIndex(ed->mode-1); - if (!firmware->getCapability(FlightPhases)) { + if (!firmware->getCapability(FlightModes)) { ui->label_phases->hide(); for (int i=0; i<9; i++) { lb_fp[i]->hide(); @@ -44,7 +44,7 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, G } mask <<= 1; } - for (int i=firmware->getCapability(FlightPhases); i<9;i++) { + for (int i=firmware->getCapability(FlightModes); i<9;i++) { lb_fp[i]->hide(); cb_fp[i]->hide(); } @@ -154,11 +154,11 @@ void ExpoDialog::valuesChanged() ed->phases<<=1; } ed->phases>>=1; - if (firmware->getCapability(FlightPhases)) { + if (firmware->getCapability(FlightModes)) { int zeros=0; int ones=0; int phtemp=ed->phases; - for (int i=0; igetCapability(FlightPhases); i++) { + for (int i=0; igetCapability(FlightModes); i++) { if (phtemp & 1) { ones++; } @@ -169,7 +169,7 @@ void ExpoDialog::valuesChanged() } if (zeros==1) { phtemp=ed->phases; - for (int i=0; igetCapability(FlightPhases); i++) { + for (int i=0; igetCapability(FlightModes); i++) { if ((phtemp & 1)==0) { break; } @@ -178,7 +178,7 @@ void ExpoDialog::valuesChanged() } else if (ones==1) { phtemp=ed->phases; - for (int i=0; igetCapability(FlightPhases); i++) { + for (int i=0; igetCapability(FlightModes); i++) { if (phtemp & 1) { break; } diff --git a/companion/src/modeledit/flightmodes.cpp b/companion/src/modeledit/flightmodes.cpp index fee46f2ea..e8e93fb24 100644 --- a/companion/src/modeledit/flightmodes.cpp +++ b/companion/src/modeledit/flightmodes.cpp @@ -5,7 +5,7 @@ #include #include -FlightMode::FlightMode(QWidget * parent, ModelData & model, int phaseIdx, GeneralSettings & generalSettings, FirmwareInterface * firmware): +FlightModePanel::FlightModePanel(QWidget * parent, ModelData & model, int phaseIdx, GeneralSettings & generalSettings, FirmwareInterface * firmware): ModelPanel(parent, model, generalSettings, firmware), ui(new Ui::FlightMode), phaseIdx(phaseIdx), @@ -16,7 +16,7 @@ FlightMode::FlightMode(QWidget * parent, ModelData & model, int phaseIdx, Genera { ui->setupUi(this); - int modesCount = firmware->getCapability(FlightPhases); + int modesCount = firmware->getCapability(FlightModes); // Phase name QRegExp rx(CHAR_FOR_NAMES_REGEX); @@ -39,7 +39,7 @@ FlightMode::FlightMode(QWidget * parent, ModelData & model, int phaseIdx, Genera } // FadeIn / FadeOut - if (firmware->getCapability(FlightPhasesHaveFades)) { + if (firmware->getCapability(FlightModesHaveFades)) { int scale = firmware->getCapability(SlowScale); int range = firmware->getCapability(SlowRange); ui->fadeIn->setMaximum(float(range)/scale); @@ -174,12 +174,12 @@ FlightMode::FlightMode(QWidget * parent, ModelData & model, int phaseIdx, Genera update(); } -FlightMode::~FlightMode() +FlightModePanel::~FlightModePanel() { delete ui; } -void FlightMode::update() +void FlightModePanel::update() { ui->name->setText(phase.name); @@ -232,7 +232,7 @@ void FlightMode::update() } } -void FlightMode::phaseName_editingFinished() +void FlightModePanel::phaseName_editingFinished() { QLineEdit *lineEdit = qobject_cast(sender()); strcpy(phase.name, lineEdit->text().toAscii()); @@ -240,14 +240,14 @@ void FlightMode::phaseName_editingFinished() emit nameModified(); } -void FlightMode::phaseSwitch_currentIndexChanged(int index) +void FlightModePanel::phaseSwitch_currentIndexChanged(int index) { QComboBox *comboBox = qobject_cast(sender()); phase.swtch = RawSwitch(comboBox->itemData(index).toInt()); emit modified(); } -void FlightMode::phaseFadeIn_editingFinished() +void FlightModePanel::phaseFadeIn_editingFinished() { QDoubleSpinBox *spinBox = qobject_cast(sender()); int scale = firmware->getCapability(SlowScale); @@ -255,7 +255,7 @@ void FlightMode::phaseFadeIn_editingFinished() emit modified(); } -void FlightMode::phaseFadeOut_editingFinished() +void FlightModePanel::phaseFadeOut_editingFinished() { QDoubleSpinBox *spinBox = qobject_cast(sender()); int scale = firmware->getCapability(SlowScale); @@ -263,7 +263,7 @@ void FlightMode::phaseFadeOut_editingFinished() emit modified(); } -void FlightMode::trimUpdate(unsigned int trim) +void FlightModePanel::trimUpdate(unsigned int trim) { lock = true; int chn = CONVERT_MODE(trim+1)-1; @@ -283,7 +283,7 @@ void FlightMode::trimUpdate(unsigned int trim) lock = false; } -void FlightMode::phaseGVValue_editingFinished() +void FlightModePanel::phaseGVValue_editingFinished() { if (!lock) { QSpinBox *spinBox = qobject_cast(sender()); @@ -293,7 +293,7 @@ void FlightMode::phaseGVValue_editingFinished() } } -void FlightMode::GVName_editingFinished() +void FlightModePanel::GVName_editingFinished() { if (!lock) { QLineEdit *lineedit = qobject_cast(sender()); @@ -304,7 +304,7 @@ void FlightMode::GVName_editingFinished() } } -void FlightMode::GVSource_currentIndexChanged(int index) +void FlightModePanel::GVSource_currentIndexChanged(int index) { QComboBox *comboBox = qobject_cast(sender()); int gvar = comboBox->property("index").toInt(); @@ -312,7 +312,7 @@ void FlightMode::GVSource_currentIndexChanged(int index) emit modified(); } -void FlightMode::phaseGVUse_currentIndexChanged(int index) +void FlightModePanel::phaseGVUse_currentIndexChanged(int index) { if (!lock) { lock = true; @@ -330,14 +330,14 @@ void FlightMode::phaseGVUse_currentIndexChanged(int index) } } -void FlightMode::phaseGVPopupToggled(bool checked) +void FlightModePanel::phaseGVPopupToggled(bool checked) { QCheckBox *cb = qobject_cast(sender()); int gvar = cb->property("index").toInt(); model.gvars_popups[gvar] = checked; } -void FlightMode::phaseREValue_editingFinished() +void FlightModePanel::phaseREValue_editingFinished() { if (!lock) { QSpinBox *spinBox = qobject_cast(sender()); @@ -347,7 +347,7 @@ void FlightMode::phaseREValue_editingFinished() } } -void FlightMode::phaseREUse_currentIndexChanged(int index) +void FlightModePanel::phaseREUse_currentIndexChanged(int index) { if (!lock) { lock = true; @@ -365,7 +365,7 @@ void FlightMode::phaseREUse_currentIndexChanged(int index) } } -void FlightMode::phaseTrimUse_currentIndexChanged(int index) +void FlightModePanel::phaseTrimUse_currentIndexChanged(int index) { if (!lock) { QComboBox *comboBox = qobject_cast(sender()); @@ -387,7 +387,7 @@ void FlightMode::phaseTrimUse_currentIndexChanged(int index) } } -void FlightMode::phaseTrim_valueChanged() +void FlightModePanel::phaseTrim_valueChanged() { if (!lock) { QSpinBox *spinBox = qobject_cast(sender()); @@ -402,7 +402,7 @@ void FlightMode::phaseTrim_valueChanged() } } -void FlightMode::phaseTrimSlider_valueChanged() +void FlightModePanel::phaseTrimSlider_valueChanged() { if (!lock) { QSlider *slider = qobject_cast(sender()); @@ -419,14 +419,14 @@ void FlightMode::phaseTrimSlider_valueChanged() /**********************************************************/ -FlightModes::FlightModes(QWidget * parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): +FlightModesPanel::FlightModesPanel(QWidget * parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware): ModelPanel(parent, model, generalSettings, firmware), - modesCount(firmware->getCapability(FlightPhases)) + modesCount(firmware->getCapability(FlightModes)) { QGridLayout * gridLayout = new QGridLayout(this); tabWidget = new QTabWidget(this); for (int i=0; isetProperty("index", i); panels << tab; connect(tab, SIGNAL(modified()), this, SLOT(onPhaseModified())); @@ -437,16 +437,16 @@ FlightModes::FlightModes(QWidget * parent, ModelData & model, GeneralSettings & connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(on_tabWidget_currentChanged(int))); } -FlightModes::~FlightModes() +FlightModesPanel::~FlightModesPanel() { } -void FlightModes::onPhaseModified() +void FlightModesPanel::onPhaseModified() { emit modified(); } -QString FlightModes::getTabName(int index) +QString FlightModesPanel::getTabName(int index) { QString result = tr("Flight Mode %1").arg(index); const char *name = model.phaseData[index].name; @@ -460,18 +460,18 @@ QString FlightModes::getTabName(int index) return result; } -void FlightModes::onPhaseNameChanged() +void FlightModesPanel::onPhaseNameChanged() { int index = sender()->property("index").toInt(); tabWidget->setTabText(index, getTabName(index)); } -void FlightModes::update() +void FlightModesPanel::update() { on_tabWidget_currentChanged(tabWidget->currentIndex()); } -void FlightModes::on_tabWidget_currentChanged(int index) +void FlightModesPanel::on_tabWidget_currentChanged(int index) { panels[index]->update(); } diff --git a/companion/src/modeledit/flightmodes.h b/companion/src/modeledit/flightmodes.h index 618040f4b..e2127ac5c 100644 --- a/companion/src/modeledit/flightmodes.h +++ b/companion/src/modeledit/flightmodes.h @@ -13,13 +13,13 @@ namespace Ui { class FlightMode; } -class FlightMode : public ModelPanel +class FlightModePanel : public ModelPanel { Q_OBJECT public: - FlightMode(QWidget *parent, ModelData &model, int modeIdx, GeneralSettings & generalSettings, FirmwareInterface * firmware); - virtual ~FlightMode(); + FlightModePanel(QWidget *parent, ModelData &model, int modeIdx, GeneralSettings & generalSettings, FirmwareInterface * firmware); + virtual ~FlightModePanel(); virtual void update(); @@ -61,13 +61,13 @@ class FlightMode : public ModelPanel }; -class FlightModes : public ModelPanel +class FlightModesPanel : public ModelPanel { Q_OBJECT public: - FlightModes(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); - virtual ~FlightModes(); + FlightModesPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); + virtual ~FlightModesPanel(); virtual void update(); @@ -80,7 +80,7 @@ class FlightModes : public ModelPanel int modesCount; QTabWidget *tabWidget; QString getTabName(int index); - QVector panels; + QVector panels; }; diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index 4423df656..c1a7fc4cb 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -55,7 +55,7 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, G ui->mixerName->setValidator(new QRegExpValidator(rx, this)); ui->mixerName->setText(md->name); - if (!firmware->getCapability(FlightPhases)) { + if (!firmware->getCapability(FlightModes)) { ui->label_phases->hide(); for (int i=0; i<9; i++) { lb_fp[i]->hide(); @@ -70,7 +70,7 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, G } mask <<= 1; } - for (int i=firmware->getCapability(FlightPhases); i<9;i++) { + for (int i=firmware->getCapability(FlightModes); i<9;i++) { lb_fp[i]->hide(); cb_fp[i]->hide(); } diff --git a/companion/src/modeledit/modeledit.cpp b/companion/src/modeledit/modeledit.cpp index 0bccd5512..a7c9cfbcd 100644 --- a/companion/src/modeledit/modeledit.cpp +++ b/companion/src/modeledit/modeledit.cpp @@ -29,7 +29,7 @@ ModelEdit::ModelEdit(QWidget * parent, RadioData & radioData, int modelId, Firmw SetupPanel * setupPanel = new SetupPanel(this, model, generalSettings, firmware); addTab(setupPanel, tr("Setup")); addTab(new HeliPanel(this, model, generalSettings, firmware), tr("Heli")); - addTab(new FlightModes(this, model, generalSettings, firmware), tr("Flight Modes")); + addTab(new FlightModesPanel(this, model, generalSettings, firmware), tr("Flight Modes")); addTab(new InputsPanel(this, model, generalSettings, firmware), tr("Inputs")); addTab(new MixesPanel(this, model, generalSettings, firmware), tr("Mixes")); Channels * chnPanel = new Channels(this, model, generalSettings, firmware); diff --git a/companion/src/printdialog.cpp b/companion/src/printdialog.cpp index a6e6177e0..37771105a 100644 --- a/companion/src/printdialog.cpp +++ b/companion/src/printdialog.cpp @@ -124,7 +124,7 @@ void PrintDialog::printSetup() gvars=1; } QString str = ""; - str.append(QString("

").arg((firmware->getCapability(FlightPhases) && gvars==0) ? 2 : 1)); + str.append(QString("

").arg((i==0 ? 'A': 'B'))); } str.append(""); - for (int i=0; igetCapability(FlightPhases); i++) { + for (int i=0; igetCapability(FlightModes); i++) { PhaseData *pd=&g_model->phaseData[i]; str.append("").arg(i).arg(pd->name).arg(pd->fadeIn).arg(pd->fadeOut)); for (int k=0; k<4; k++) { @@ -265,12 +265,12 @@ void PrintDialog::printExpo() str += tr("Weight") + QString("%1").arg(getGVarString(ed->weight,true)).rightJustified(6, ' '); str += ed->curve.toString().replace("<", "<").replace(">", ">"); - if (firmware->getCapability(FlightPhases)) { + if (firmware->getCapability(FlightModes)) { if(ed->phases) { - if (ed->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { + if (ed->phases!=(unsigned int)(1<getCapability(FlightModes))-1) { int mask=1; int first=0; - for (int i=0; igetCapability(FlightPhases);i++) { + for (int i=0; igetCapability(FlightModes);i++) { if (!(ed->phases & mask)) { first++; } @@ -283,7 +283,7 @@ void PrintDialog::printExpo() } mask=1; first=1; - for (int j=0; jgetCapability(FlightPhases);j++) { + for (int j=0; jgetCapability(FlightModes);j++) { if (!(ed->phases & mask)) { PhaseData *pd = &g_model->phaseData[j]; if (!first) { @@ -361,12 +361,12 @@ void PrintDialog::printMixes() if (md->delayDown || md->delayUp) str += tr(" Delay(u%1:d%2)").arg(md->delayUp/scale).arg(md->delayDown/scale); if (md->speedDown || md->speedUp) str += tr(" Slow(u%1:d%2)").arg(md->speedUp/scale).arg(md->speedDown/scale); if (md->mixWarn) str += " "+tr("Warn")+QString("(%1)").arg(md->mixWarn); - if (firmware->getCapability(FlightPhases)) { + if (firmware->getCapability(FlightModes)) { if(md->phases) { - if (md->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { + if (md->phases!=(unsigned int)(1<getCapability(FlightModes))-1) { int mask=1; int first=0; - for (int i=0; igetCapability(FlightPhases); i++) { + for (int i=0; igetCapability(FlightModes); i++) { if (!(md->phases & mask)) { first++; } @@ -379,7 +379,7 @@ void PrintDialog::printMixes() } mask=1; first=1; - for (int j=0; jgetCapability(FlightPhases);j++) { + for (int j=0; jgetCapability(FlightModes);j++) { if (!(md->phases & mask)) { PhaseData *pd = &g_model->phaseData[j]; if (!first) { @@ -658,7 +658,7 @@ void PrintDialog::printGvars() gvars=1; gvarnum=firmware->getCapability(Gvars); } - if (!firmware->getCapability(GvarsFlightPhases) && (gvars==1 && firmware->getCapability(Gvars))) { + if (!firmware->getCapability(GvarsFlightModes) && (gvars==1 && firmware->getCapability(Gvars))) { QString str = "

").arg((firmware->getCapability(FlightModes) && gvars==0) ? 2 : 1)); str.append(g_model->name); str.append(" ("); str.append(firmware->getEepromInterface()->getName()); @@ -157,7 +157,7 @@ QString PrintDialog::printPhases() int gvars=0; int gvarnum=0; if ((GetCurrentFirmwareVariant() & GVARS_VARIANT ) || (!firmware->getCapability(HasVariants) && firmware->getCapability(Gvars))) { - if (firmware->getCapability(GvarsFlightPhases)) { + if (firmware->getCapability(GvarsFlightModes)) { gvars=1; gvarnum=firmware->getCapability(Gvars); } @@ -189,7 +189,7 @@ QString PrintDialog::printPhases() str.append(QString("

RE%1
"+tr("FM")+QString("%1 %2%3%4
"; str.append(""); str.append("

"+tr("Global Variables")+"

"); diff --git a/companion/src/xmlinterface.cpp b/companion/src/xmlinterface.cpp index 0c6185d96..8e1701ebe 100644 --- a/companion/src/xmlinterface.cpp +++ b/companion/src/xmlinterface.cpp @@ -155,7 +155,7 @@ void saveModel(ModelData & m, model & xm) phases xphases; phases::phase_sequence & phases_sequence (xphases.phase()); - for (int i=0; i-[on|off].wav - for (int i=0; istart, 60); switch (m_posHorz) { case 0: - CHECK_INCDEC_MODELVAR(event, timer->mode, SWSRC_FIRST, TMR_VAROFS+SWSRC_LAST-1/*--- which is OFF*/); + CHECK_INCDEC_MODELVAR(event, timer->mode, SWSRC_FIRST, TMR_VAROFS+SWSRC_LAST-1); break; case 1: CHECK_INCDEC_MODELVAR_ZERO(event, qr.quot, 59); @@ -1108,7 +1108,7 @@ void menuModelSetup(uint8_t event) s_editMode = 0; if (event==EVT_KEY_LONG(KEY_ENTER)) { s_noHi = NO_HI_LEN; - for (uint8_t i=0; i EXPO_ONE_2ND_COLUMN-FW))) continue; @@ -1835,14 +1835,14 @@ bool isTrimModeAvailable(int mode) void menuModelFlightModesAll(uint8_t event) { - MENU(STR_MENUFLIGHTPHASES, menuTabModel, e_FlightModesAll, 1+MAX_PHASES+1, {0, NAVIGATION_LINE_BY_LINE|(ITEM_PHASES_LAST-5), NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, 0}); + MENU(STR_MENUFLIGHTPHASES, menuTabModel, e_FlightModesAll, 1+MAX_FLIGHT_MODES+1, {0, NAVIGATION_LINE_BY_LINE|(ITEM_PHASES_LAST-5), NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_PHASES_LAST, 0}); int8_t sub = m_posVert - 1; horzpos_t posHorz = m_posHorz; if (sub==0 && posHorz > 0) { posHorz += 5; } - if (sub=0) { + if (sub=0) { displayColumnHeader(STR_PHASES_HEADERS, posHorz); } @@ -1850,11 +1850,11 @@ void menuModelFlightModesAll(uint8_t event) uint8_t y = 1 + (i+1)*FH; uint8_t k = i+s_pgOfs; - if (k==MAX_PHASES) { + if (k==MAX_FLIGHT_MODES) { // last line available - add the "check trims" line lcd_putsLeft((LCD_LINES-1)*FH+1, STR_CHECKTRIMS); - putsFlightPhase(OFS_CHECKTRIMS, (LCD_LINES-1)*FH+1, s_perout_flight_phase+1); - if (sub==MAX_PHASES && !trimsCheckTimer) { + putsFlightMode(OFS_CHECKTRIMS, (LCD_LINES-1)*FH+1, s_perout_flight_mode+1); + if (sub==MAX_FLIGHT_MODES && !trimsCheckTimer) { lcd_status_line(); } return; @@ -1862,7 +1862,7 @@ void menuModelFlightModesAll(uint8_t event) PhaseData *p = phaseAddress(k); - putsFlightPhase(0, y, k+1, (getFlightPhase()==k ? BOLD : 0) | ((sub==k && m_posHorz<0) ? INVERS : 0)); + putsFlightMode(0, y, k+1, (getFlightPhase()==k ? BOLD : 0) | ((sub==k && m_posHorz<0) ? INVERS : 0)); for (uint8_t j=0; j0) ? BLINK|INVERS : INVERS) : 0); @@ -1878,7 +1878,7 @@ void menuModelFlightModesAll(uint8_t event) } else { putsSwitches((5+LEN_FP_NAME)*FW+FW/2, y, p->swtch, attr); - if (active) CHECK_INCDEC_MODELSWITCH(event, p->swtch, SWSRC_FIRST, SWSRC_LAST); + if (active) CHECK_INCDEC_MODELSWITCH(event, p->swtch, SWSRC_FIRST_SHORT_LIST, SWSRC_LAST_SHORT_LIST); } break; @@ -1891,7 +1891,7 @@ void menuModelFlightModesAll(uint8_t event) putsTrimMode((4+LEN_FP_NAME)*FW+j*(5*FW/2), y, k, t, attr); if (active) { trim_t & v = p->trim[t]; - v.mode = checkIncDec(event, v.mode==TRIM_MODE_NONE ? -1 : v.mode, -1, 2*MAX_PHASES-1, EE_MODEL, isTrimModeAvailable); + v.mode = checkIncDec(event, v.mode==TRIM_MODE_NONE ? -1 : v.mode, -1, 2*MAX_FLIGHT_MODES-1, EE_MODEL, isTrimModeAvailable); } } break; @@ -1933,7 +1933,7 @@ enum menuModelPhaseItems { void menuModelPhaseOne(uint8_t event) { PhaseData *phase = phaseAddress(s_currIdx); - putsFlightPhase(13*FW, 0, s_currIdx+1, (getFlightPhase()==s_currIdx ? BOLD : 0)); + putsFlightMode(13*FW, 0, s_currIdx+1, (getFlightPhase()==s_currIdx ? BOLD : 0)); #if defined(GVARS) && !defined(PCBSTD) static const pm_uint8_t mstate_tab_phase1[] PROGMEM = {0, 0, 0, (uint8_t)-1, 1, 1, 1, 1, 1}; @@ -1979,7 +1979,7 @@ void menuModelPhaseOne(uint8_t event) if (attr && m_posHorz==t && ((editMode>0) || p1valdiff)) { int16_t v = getRawTrimValue(s_currIdx, t); if (v < TRIM_EXTENDED_MAX) v = TRIM_EXTENDED_MAX; - v = checkIncDec(event, v, TRIM_EXTENDED_MAX, TRIM_EXTENDED_MAX+MAX_PHASES-1, EE_MODEL); + v = checkIncDec(event, v, TRIM_EXTENDED_MAX, TRIM_EXTENDED_MAX+MAX_FLIGHT_MODES-1, EE_MODEL); if (checkIncDec_Ret) { if (v == TRIM_EXTENDED_MAX) v = 0; setTrimValue(s_currIdx, t, v); @@ -2004,7 +2004,7 @@ void menuModelPhaseOne(uint8_t event) int16_t v = phaseAddress(s_currIdx)->rotaryEncoders[t]; #endif if (v < ROTARY_ENCODER_MAX) v = ROTARY_ENCODER_MAX; - v = checkIncDec(event, v, ROTARY_ENCODER_MAX, ROTARY_ENCODER_MAX+MAX_PHASES-1, EE_MODEL); + v = checkIncDec(event, v, ROTARY_ENCODER_MAX, ROTARY_ENCODER_MAX+MAX_FLIGHT_MODES-1, EE_MODEL); if (checkIncDec_Ret) { if (v == ROTARY_ENCODER_MAX) v = 0; #if ROTARY_ENCODERS > 2 @@ -2048,14 +2048,14 @@ void menuModelPhaseOne(uint8_t event) if (v > GVAR_MAX) { uint8_t p = v - GVAR_MAX - 1; if (p >= s_currIdx) p++; - putsFlightPhase(11*FW, y, p+1, posHorz==1 ? attr : 0); + putsFlightMode(11*FW, y, p+1, posHorz==1 ? attr : 0); } else { lcd_putsAtt(11*FW, y, STR_OWN, posHorz==1 ? attr : 0); } if (attr && s_currIdx>0 && posHorz==1 && (editMode>0 || p1valdiff)) { if (v < GVAR_MAX) v = GVAR_MAX; - v = checkIncDec(event, v, GVAR_MAX, GVAR_MAX+MAX_PHASES-1, EE_MODEL); + v = checkIncDec(event, v, GVAR_MAX, GVAR_MAX+MAX_FLIGHT_MODES-1, EE_MODEL); if (checkIncDec_Ret) { if (v == GVAR_MAX) v = 0; phase->gvars[idx] = v; @@ -2095,20 +2095,20 @@ void menuModelPhaseOne(uint8_t event) void menuModelFlightModesAll(uint8_t event) { - SIMPLE_MENU(STR_MENUFLIGHTPHASES, menuTabModel, e_FlightModesAll, 1+MAX_PHASES+1); + SIMPLE_MENU(STR_MENUFLIGHTPHASES, menuTabModel, e_FlightModesAll, 1+MAX_FLIGHT_MODES+1); int8_t sub = m_posVert - 1; switch (event) { CASE_EVT_ROTARY_BREAK case EVT_KEY_FIRST(KEY_ENTER): - if (sub == MAX_PHASES) { + if (sub == MAX_FLIGHT_MODES) { s_editMode = 0; trimsCheckTimer = 200; // 2 seconds } // no break case EVT_KEY_FIRST(KEY_RIGHT): - if (sub >= 0 && sub < MAX_PHASES) { + if (sub >= 0 && sub < MAX_FLIGHT_MODES) { s_currIdx = sub; pushMenu(menuModelPhaseOne); } @@ -2116,7 +2116,7 @@ void menuModelFlightModesAll(uint8_t event) } uint8_t att; - for (uint8_t i=0; i(LCD_LINES-1)*FH+1) continue; @@ -2126,9 +2126,9 @@ void menuModelFlightModesAll(uint8_t event) att = (i==sub ? INVERS : 0); PhaseData *p = phaseAddress(i); #if ROTARY_ENCODERS > 2 - putsFlightPhase(0, y, i+1, att|CONDENSED|(getFlightPhase()==i ? BOLD : 0)); + putsFlightMode(0, y, i+1, att|CONDENSED|(getFlightPhase()==i ? BOLD : 0)); #else - putsFlightPhase(0, y, i+1, att|(getFlightPhase()==i ? BOLD : 0)); + putsFlightMode(0, y, i+1, att|(getFlightPhase()==i ? BOLD : 0)); #endif lcd_putsnAtt(4*FW+NAME_OFS, y, p->name, sizeof(p->name), ZCHAR); @@ -2153,12 +2153,12 @@ void menuModelFlightModesAll(uint8_t event) } #if defined(CPUARM) - if (s_pgOfs != MAX_PHASES-(LCD_LINES-2)) return; + if (s_pgOfs != MAX_FLIGHT_MODES-(LCD_LINES-2)) return; #endif lcd_putsLeft((LCD_LINES-1)*FH+1, STR_CHECKTRIMS); - putsFlightPhase(OFS_CHECKTRIMS, (LCD_LINES-1)*FH+1, s_perout_flight_phase+1); - if (sub==MAX_PHASES && !trimsCheckTimer) { + putsFlightMode(OFS_CHECKTRIMS, (LCD_LINES-1)*FH+1, s_perout_flight_mode+1); + if (sub==MAX_FLIGHT_MODES && !trimsCheckTimer) { lcd_status_line(); } } @@ -2910,7 +2910,7 @@ void menuModelExpoOne(uint8_t event) putsMixerSource(7*FW+FW/2, 0, MIXSRC_Rud+ed->chn, 0); #endif - SUBMENU(STR_MENUINPUTS, EXPO_FIELD_MAX, {CASE_PCBTARANIS(0) IF_CPUARM(0) CASE_PCBTARANIS(0) CASE_PCBTARANIS((ed->srcRaw >= MIXSRC_FIRST_TELEM ? (uint8_t)0 : (uint8_t)HIDDEN_ROW)) 0, CASE_PCBTARANIS(0) CASE_9X(0) IF_CURVES(CURVE_ROWS) IF_FLIGHT_MODES((MAX_PHASES-1) | NAVIGATION_LINE_BY_LINE) 0 /*, ...*/}); + SUBMENU(STR_MENUINPUTS, EXPO_FIELD_MAX, {CASE_PCBTARANIS(0) IF_CPUARM(0) CASE_PCBTARANIS(0) CASE_PCBTARANIS((ed->srcRaw >= MIXSRC_FIRST_TELEM ? (uint8_t)0 : (uint8_t)HIDDEN_ROW)) 0, CASE_PCBTARANIS(0) CASE_9X(0) IF_CURVES(CURVE_ROWS) IF_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0 /*, ...*/}); SET_SCROLLBAR_X(EXPO_ONE_2ND_COLUMN+10*FW); @@ -3111,11 +3111,11 @@ void menuModelMixOne(uint8_t event) #else if (m_posVert == MIX_FIELD_TRIM && md2->srcRaw > NUM_STICKS) #endif - SUBMENU_NOTITLE(MIX_FIELD_COUNT, {IF_CPUARM(0) 0, 0, 0, CASE_9X(0) IF_CURVES(0) IF_FLIGHT_MODES((MAX_PHASES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}) + SUBMENU_NOTITLE(MIX_FIELD_COUNT, {IF_CPUARM(0) 0, 0, 0, CASE_9X(0) IF_CURVES(0) IF_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}) else - SUBMENU_NOTITLE(MIX_FIELD_COUNT, {IF_CPUARM(0) 0, 0, 0, CASE_9X(1) IF_CURVES(1) IF_FLIGHT_MODES((MAX_PHASES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}); + SUBMENU_NOTITLE(MIX_FIELD_COUNT, {IF_CPUARM(0) 0, 0, 0, CASE_9X(1) IF_CURVES(1) IF_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}); #else - SUBMENU_NOTITLE(MIX_FIELD_COUNT, {IF_CPUARM(0) 0, 0, 0, CASE_9X(1) CASE_PCBTARANIS(0) IF_CURVES(1) IF_FLIGHT_MODES((MAX_PHASES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}); + SUBMENU_NOTITLE(MIX_FIELD_COUNT, {IF_CPUARM(0) 0, 0, 0, CASE_9X(1) CASE_PCBTARANIS(0) IF_CURVES(1) IF_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}); #endif #if MENU_COLUMNS > 1 @@ -3314,7 +3314,7 @@ static uint8_t s_copySrcCh; #define EXPO_LINE_WEIGHT_POS 7*FW+1 #define EXPO_LINE_EXPO_POS 11*FW #define EXPO_LINE_SWITCH_POS 11*FW+4 - #if MAX_PHASES == 6 + #if MAX_FLIGHT_MODES == 6 #define EXPO_LINE_SIDE_POS 15*FW #else #define EXPO_LINE_SIDE_POS 15*FW+2 @@ -4102,7 +4102,7 @@ void onGVARSMenu(const char *result) eeDirty(EE_MODEL); } else if (result == STR_CLEAR) { - for (int i=0; i0) ? BLINK|INVERS : INVERS) : 0); xcoord_t x = GVARS_FM_COLUMN(j-1); @@ -4170,8 +4170,8 @@ void menuModelGVars(uint8_t event) if (v > GVAR_MAX) { uint8_t p = v - GVAR_MAX - 1; if (p >= j-1) p++; - putsFlightPhase(x-15, y, p+1, attr|SMLSIZE); - vmin = GVAR_MAX+1; vmax = GVAR_MAX+MAX_PHASES-1; + putsFlightMode(x-15, y, p+1, attr|SMLSIZE); + vmin = GVAR_MAX+1; vmax = GVAR_MAX+MAX_FLIGHT_MODES-1; } else { if (abs(v) >= 100) diff --git a/radio/src/gui/menus.cpp b/radio/src/gui/menus.cpp index 24f3b15bb..b9453d73a 100644 --- a/radio/src/gui/menus.cpp +++ b/radio/src/gui/menus.cpp @@ -1132,7 +1132,7 @@ int8_t switchMenuItem(uint8_t x, uint8_t y, int8_t value, LcdFlags attr, uint8_t { lcd_putsColumnLeft(x, y, STR_SWITCH); putsSwitches(x, y, value, attr); - if (attr) CHECK_INCDEC_MODELSWITCH(event, value, SWSRC_FIRST, SWSRC_LAST); + if (attr) CHECK_INCDEC_MODELSWITCH(event, value, SWSRC_FIRST_SHORT_LIST, SWSRC_LAST_SHORT_LIST); return value; } @@ -1152,11 +1152,11 @@ int16_t gvarMenuItem(uint8_t x, uint8_t y, int16_t value, int16_t min, int16_t m s_editMode = !s_editMode; #if defined(CPUARM) if (attr & PREC1) - value = (GV_IS_GV_VALUE(value, min, max) ? GET_GVAR(value, min, max, s_perout_flight_phase)*10 : delta); + value = (GV_IS_GV_VALUE(value, min, max) ? GET_GVAR(value, min, max, s_perout_flight_mode)*10 : delta); else - value = (GV_IS_GV_VALUE(value, min, max) ? GET_GVAR(value, min, max, s_perout_flight_phase) : delta); + value = (GV_IS_GV_VALUE(value, min, max) ? GET_GVAR(value, min, max, s_perout_flight_mode) : delta); #else - value = (GV_IS_GV_VALUE(value, min, max) ? GET_GVAR(value, min, max, s_perout_flight_phase) : delta); + value = (GV_IS_GV_VALUE(value, min, max) ? GET_GVAR(value, min, max, s_perout_flight_mode) : delta); #endif eeDirty(EE_MODEL); } @@ -1500,8 +1500,8 @@ bool isSwitchAvailable(int swtch) swtch = -swtch; } - if (swtch >= SWSRC_FIRST_CSW && swtch <= SWSRC_LAST_CSW) { - LogicalSwitchData * cs = cswAddress(swtch-SWSRC_FIRST_CSW); + if (swtch >= SWSRC_FIRST_LOGICAL_SWITCH && swtch <= SWSRC_LAST_LOGICAL_SWITCH) { + LogicalSwitchData * cs = cswAddress(swtch-SWSRC_FIRST_LOGICAL_SWITCH); return (cs->func != LS_FUNC_NONE); } diff --git a/radio/src/gui/view_main.cpp b/radio/src/gui/view_main.cpp index c311706ee..480ec89b7 100644 --- a/radio/src/gui/view_main.cpp +++ b/radio/src/gui/view_main.cpp @@ -650,7 +650,7 @@ void menuMainView(uint8_t event) { // Flight Phase Name - uint8_t phase = s_perout_flight_phase; + uint8_t phase = s_perout_flight_mode; lcd_putsnAtt(PHASE_X, PHASE_Y, g_model.phaseData[phase].name, sizeof(g_model.phaseData[phase].name), ZCHAR|PHASE_FLAGS); // Model Name @@ -862,13 +862,13 @@ void menuMainView(uint8_t event) putsStrIdx(BITMAP_X+FW, BITMAP_Y+FH-1, STR_GV, s_gvar_last+1); lcd_putsnAtt(BITMAP_X+4*FW+FW/2, BITMAP_Y+FH-1, g_model.gvars[s_gvar_last].name, LEN_GVAR_NAME, ZCHAR); lcd_putsAtt(BITMAP_X+FW, BITMAP_Y+2*FH+3, PSTR("[\010]"), BOLD); - lcd_outdezAtt(BITMAP_X+5*FW+FW/2, BITMAP_Y+2*FH+3, GVAR_VALUE(s_gvar_last, s_perout_flight_phase), BOLD); + lcd_outdezAtt(BITMAP_X+5*FW+FW/2, BITMAP_Y+2*FH+3, GVAR_VALUE(s_gvar_last, s_perout_flight_mode), BOLD); #else s_warning = STR_GLOBAL_VAR; displayBox(); lcd_putsnAtt(16, 5*FH, g_model.gvars[s_gvar_last].name, LEN_GVAR_NAME, ZCHAR); lcd_putsAtt(16+7*FW, 5*FH, PSTR("[\010]"), BOLD); - lcd_outdezAtt(16+7*FW+4*FW+FW/2, 5*FH, GVAR_VALUE(s_gvar_last, s_perout_flight_phase), BOLD); + lcd_outdezAtt(16+7*FW+4*FW+FW/2, 5*FH, GVAR_VALUE(s_gvar_last, s_perout_flight_mode), BOLD); s_warning = NULL; #endif } diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index 24347e956..e5926f877 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -1020,11 +1020,16 @@ void putsSwitches(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att) lcd_putcAtt(x-2, y, '!', att); idx = -idx; } +#if defined(CPUARM) && defined(FLIGHT_MODES) + if (idx >= SWSRC_FIRST_FLIGHT_MODE) + putsStrIdx(x, y, STR_FP, idx-SWSRC_FIRST_FLIGHT_MODE, att); + else +#endif lcd_putsiAtt(x, y, STR_VSWITCHES, idx-1, att); } #if defined(FLIGHT_MODES) -void putsFlightPhase(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att) +void putsFlightMode(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att) { if (idx==0) { lcd_putsiAtt(x, y, STR_MMMINV, 0, att); return; } if (idx < 0) { lcd_putcAtt(x-2, y, '!', att); idx = -idx; } diff --git a/radio/src/lcd.h b/radio/src/lcd.h index 0952a48f4..185f5079f 100644 --- a/radio/src/lcd.h +++ b/radio/src/lcd.h @@ -178,7 +178,7 @@ void putsStrIdx(xcoord_t x, uint8_t y, const pm_char *str, uint8_t idx, LcdFlags void putsModelName(xcoord_t x, uint8_t y, char *name, uint8_t id, LcdFlags att); void putsSwitches(xcoord_t x, uint8_t y, int8_t swtch, LcdFlags att=0); void putsMixerSource(xcoord_t x, uint8_t y, uint8_t idx, LcdFlags att=0); -void putsFlightPhase(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att=0); +void putsFlightMode(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att=0); #if defined(PCBTARANIS) && !defined(BOOT) void putsCurveRef(xcoord_t x, uint8_t y, CurveRef &curve, LcdFlags att); #endif diff --git a/radio/src/lua.cpp b/radio/src/lua.cpp index bb6ed9dff..dd78de586 100644 --- a/radio/src/lua.cpp +++ b/radio/src/lua.cpp @@ -746,7 +746,7 @@ static int luaModelGetGlobalVariable(lua_State *L) { int idx = luaL_checkunsigned(L, 1); int phase = luaL_checkunsigned(L, 2); - if (phase < MAX_PHASES && idx < MAX_GVARS) + if (phase < MAX_FLIGHT_MODES && idx < MAX_GVARS) lua_pushinteger(L, g_model.phaseData[phase].gvars[idx]); else lua_pushnil(L); @@ -758,7 +758,7 @@ static int luaModelSetGlobalVariable(lua_State *L) int idx = luaL_checkunsigned(L, 1); int phase = luaL_checkunsigned(L, 2); int value = luaL_checkinteger(L, 3); - if (phase < MAX_PHASES && idx < MAX_GVARS && value >= -GVAR_LIMIT && value <= GVAR_LIMIT) { + if (phase < MAX_FLIGHT_MODES && idx < MAX_GVARS && value >= -GVAR_LIMIT && value <= GVAR_LIMIT) { g_model.phaseData[phase].gvars[idx] = value; } return 0; @@ -926,7 +926,7 @@ void luaInit() lua_registerint(L, "STICK_ELEVATOR", MIXSRC_Ele); lua_registerint(L, "STICK_THROTTLE", MIXSRC_Thr); lua_registerint(L, "STICK_AILERON", MIXSRC_Ail); - lua_registerint(L, "SWITCH_LAST", SWSRC_LAST_CSW); + lua_registerint(L, "SWITCH_LAST", SWSRC_LAST_LOGICAL_SWITCH); lua_registerint(L, "EVT_MENU_BREAK", EVT_KEY_BREAK(KEY_MENU)); lua_registerint(L, "EVT_PAGE_BREAK", EVT_KEY_BREAK(KEY_PAGE)); lua_registerint(L, "EVT_ENTER_BREAK", EVT_KEY_BREAK(KEY_ENTER)); diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 16018bf3a..223591cdd 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -73,7 +73,7 @@ #if defined(PCBTARANIS) #define MAX_MODELS 60 #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 - #define MAX_PHASES 9 + #define MAX_FLIGHT_MODES 9 #define MAX_MIXERS 64 #define MAX_EXPOS 64 #define NUM_LOGICAL_SWITCH 32 // number of custom switches @@ -86,7 +86,7 @@ #elif defined(CPUARM) #define MAX_MODELS 60 #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 - #define MAX_PHASES 9 + #define MAX_FLIGHT_MODES 9 #define MAX_MIXERS 64 #define MAX_EXPOS 32 #define NUM_LOGICAL_SWITCH 32 // number of custom switches @@ -97,7 +97,7 @@ #elif defined(CPUM2560) || defined(CPUM2561) #define MAX_MODELS 30 #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 - #define MAX_PHASES 6 + #define MAX_FLIGHT_MODES 6 #define MAX_MIXERS 32 #define MAX_EXPOS 16 #define NUM_LOGICAL_SWITCH 15 // number of custom switches @@ -108,7 +108,7 @@ #elif defined(CPUM128) #define MAX_MODELS 30 #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 - #define MAX_PHASES 5 + #define MAX_FLIGHT_MODES 5 #define MAX_MIXERS 32 #define MAX_EXPOS 14 #define NUM_LOGICAL_SWITCH 15 // number of custom switches @@ -119,7 +119,7 @@ #else #define MAX_MODELS 16 #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 - #define MAX_PHASES 5 + #define MAX_FLIGHT_MODES 5 #define MAX_MIXERS 32 #define MAX_EXPOS 14 #define NUM_LOGICAL_SWITCH 12 // number of custom switches @@ -522,9 +522,9 @@ PACK(typedef struct t_ExpoData { #define limit_min_max_t int16_t #define LIMIT_EXT_PERCENT 150 #define LIMIT_EXT_MAX (LIMIT_EXT_PERCENT*10) - #define LIMIT_MAX(lim) (GV_IS_GV_VALUE(lim->max, -LIMIT_EXT_MAX, LIMIT_EXT_MAX) ? GET_GVAR(lim->max, -LIMIT_EXT_MAX, LIMIT_EXT_MAX, s_perout_flight_phase)*10 : lim->max+1000) - #define LIMIT_MIN(lim) (GV_IS_GV_VALUE(lim->min, -LIMIT_EXT_MAX, LIMIT_EXT_MAX) ? GET_GVAR(lim->min, -LIMIT_EXT_MAX, LIMIT_EXT_MAX, s_perout_flight_phase)*10 : lim->min-1000) - #define LIMIT_OFS(lim) (GV_IS_GV_VALUE(lim->offset, -1000, 1000) ? GET_GVAR(lim->offset, -1000, 1000, s_perout_flight_phase)*10 : lim->offset) + #define LIMIT_MAX(lim) (GV_IS_GV_VALUE(lim->max, -LIMIT_EXT_MAX, LIMIT_EXT_MAX) ? GET_GVAR(lim->max, -LIMIT_EXT_MAX, LIMIT_EXT_MAX, s_perout_flight_mode)*10 : lim->max+1000) + #define LIMIT_MIN(lim) (GV_IS_GV_VALUE(lim->min, -LIMIT_EXT_MAX, LIMIT_EXT_MAX) ? GET_GVAR(lim->min, -LIMIT_EXT_MAX, LIMIT_EXT_MAX, s_perout_flight_mode)*10 : lim->min-1000) + #define LIMIT_OFS(lim) (GV_IS_GV_VALUE(lim->offset, -1000, 1000) ? GET_GVAR(lim->offset, -1000, 1000, s_perout_flight_mode)*10 : lim->offset) #define LIMIT_MAX_RESX(lim) calc1000toRESX(LIMIT_MAX(lim)) #define LIMIT_MIN_RESX(lim) calc1000toRESX(LIMIT_MIN(lim)) #define LIMIT_OFS_RESX(lim) calc1000toRESX(LIMIT_OFS(lim)) @@ -1246,7 +1246,7 @@ PACK(typedef struct t_SwashRingData { // Swash Ring data #define NUM_ROTARY_ENCODERS_EXTRA 2 #define NUM_ROTARY_ENCODERS (2+NUM_ROTARY_ENCODERS_EXTRA) #define ROTARY_ENCODER_ARRAY int16_t rotaryEncoders[2]; -#define ROTARY_ENCODER_ARRAY_EXTRA int16_t rotaryEncodersExtra[MAX_PHASES][NUM_ROTARY_ENCODERS_EXTRA]; +#define ROTARY_ENCODER_ARRAY_EXTRA int16_t rotaryEncodersExtra[MAX_FLIGHT_MODES][NUM_ROTARY_ENCODERS_EXTRA]; #elif defined(CPUM2560) && ROTARY_ENCODERS <= 2 #define NUM_ROTARY_ENCODERS_EXTRA 0 #define NUM_ROTARY_ENCODERS 2 @@ -1371,8 +1371,8 @@ enum SwitchSources { SWSRC_REb, #endif - SWSRC_FIRST_CSW, - SWSRC_SW1 = SWSRC_FIRST_CSW, + SWSRC_FIRST_LOGICAL_SWITCH, + SWSRC_SW1 = SWSRC_FIRST_LOGICAL_SWITCH, SWSRC_SW2, SWSRC_SW3, SWSRC_SW4, @@ -1384,13 +1384,24 @@ enum SwitchSources { SWSRC_SWA, SWSRC_SWB, SWSRC_SWC, - SWSRC_LAST_CSW = SWSRC_SW1+NUM_LOGICAL_SWITCH-1, + SWSRC_LAST_LOGICAL_SWITCH = SWSRC_FIRST_LOGICAL_SWITCH+NUM_LOGICAL_SWITCH-1, SWSRC_ON, + +#if defined(CPUARM) + SWSRC_FIRST_FLIGHT_MODE, + SWSRC_LAST_FLIGHT_MODE = SWSRC_FIRST_FLIGHT_MODE+MAX_FLIGHT_MODES-1, +#endif + + SWSRC_COUNT, + SWSRC_OFF = -SWSRC_ON, - SWSRC_FIRST = SWSRC_OFF, - SWSRC_LAST = SWSRC_ON + SWSRC_LAST = SWSRC_COUNT-1, + SWSRC_FIRST = -SWSRC_LAST, + + SWSRC_LAST_SHORT_LIST = SWSRC_LAST_LOGICAL_SWITCH, + SWSRC_FIRST_SHORT_LIST = -SWSRC_LAST_SHORT_LIST, }; enum MixSources { @@ -1682,7 +1693,7 @@ PACK(typedef struct t_ModelData { LogicalSwitchData customSw[NUM_LOGICAL_SWITCH]; CustomFnData funcSw[NUM_CFN]; SwashRingData swashR; - PhaseData phaseData[MAX_PHASES]; + PhaseData phaseData[MAX_FLIGHT_MODES]; AVR_FIELD(int8_t ppmFrameLength) // 0=22.5ms (10ms-30ms) 0.5ms increments uint8_t thrTraceSrc; diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index ac4f422f5..a41d698bf 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -769,7 +769,7 @@ int applyCurve(int x, CurveRef & curve) switch (curve.type) { case CURVE_REF_DIFF: { - int curveParam = calc100to256(GET_GVAR(curve.value, -100, 100, s_perout_flight_phase)); + int curveParam = calc100to256(GET_GVAR(curve.value, -100, 100, s_perout_flight_mode)); if (curveParam > 0 && x < 0) x = (x * (256 - curveParam)) >> 8; else if (curveParam < 0 && x > 0) @@ -778,7 +778,7 @@ int applyCurve(int x, CurveRef & curve) } case CURVE_REF_EXPO: - return expo(x, GET_GVAR(curve.value, -100, 100, s_perout_flight_phase)); + return expo(x, GET_GVAR(curve.value, -100, 100, s_perout_flight_mode)); case CURVE_REF_FUNC: switch (curve.value) { @@ -981,7 +981,7 @@ void applyExpos(int16_t *anas, uint8_t mode APPLY_EXPOS_EXTRA_PARAMS) if (!EXPO_VALID(ed)) break; // end of list if (ed->chn == cur_chn) continue; - if (ed->phases & (1<phases & (1<swtch)) { #if defined(PCBTARANIS) @@ -1020,18 +1020,18 @@ void applyExpos(int16_t *anas, uint8_t mode APPLY_EXPOS_EXTRA_PARAMS) if (ed->curveMode == MODE_CURVE) v = applyCurve(v, curveParam); else - v = expo(v, GET_GVAR(curveParam, -100, 100, s_perout_flight_phase)); + v = expo(v, GET_GVAR(curveParam, -100, 100, s_perout_flight_mode)); } #endif //========== WEIGHT =============== - int16_t weight = GET_GVAR(ed->weight, MIN_EXPO_WEIGHT, 100, s_perout_flight_phase); + int16_t weight = GET_GVAR(ed->weight, MIN_EXPO_WEIGHT, 100, s_perout_flight_mode); weight = calc100to256(weight); v = ((int32_t)v * weight) >> 8; #if defined(PCBTARANIS) //========== OFFSET =============== - int16_t offset = GET_GVAR(ed->offset, -100, 100, s_perout_flight_phase); + int16_t offset = GET_GVAR(ed->offset, -100, 100, s_perout_flight_mode); if (offset) v += calc100toRESX(offset); //========== TRIMS ================ @@ -1268,7 +1268,7 @@ getvalue_t getValue(uint8_t i) return 0; #endif - else if (i<=MIXSRC_TrimAil) return calc1000toRESX((int16_t)8 * getTrimValue(s_perout_flight_phase, i-MIXSRC_TrimRud)); + else if (i<=MIXSRC_TrimAil) return calc1000toRESX((int16_t)8 * getTrimValue(s_perout_flight_mode, i-MIXSRC_TrimRud)); #if defined(PCBTARANIS) else if (i==MIXSRC_SA) return (switchState(SW_SA0) ? -1024 : (switchState(SW_SA1) ? 0 : 1024)); @@ -1279,7 +1279,7 @@ getvalue_t getValue(uint8_t i) else if (i==MIXSRC_SF) return (switchState(SW_SF0) ? -1024 : 1024); else if (i==MIXSRC_SG) return (switchState(SW_SG0) ? -1024 : (switchState(SW_SG1) ? 0 : 1024)); else if (i==MIXSRC_SH) return (switchState(SW_SH0) ? -1024 : 1024); - else if (i<=MIXSRC_LAST_LOGICAL_SWITCH) return getSwitch(SWSRC_FIRST_CSW+i-MIXSRC_FIRST_LOGICAL_SWITCH) ? 1024 : -1024; + else if (i<=MIXSRC_LAST_LOGICAL_SWITCH) return getSwitch(SWSRC_FIRST_LOGICAL_SWITCH+i-MIXSRC_FIRST_LOGICAL_SWITCH) ? 1024 : -1024; #else else if (i==MIXSRC_3POS) return (getSwitch(SW_ID0-SW_BASE+1) ? -1024 : (getSwitch(SW_ID1-SW_BASE+1) ? 0 : 1024)); // don't use switchState directly to give getSwitch possibility to hack values if needed for switch warning @@ -1294,7 +1294,7 @@ getvalue_t getValue(uint8_t i) else if (i<=MIXSRC_LAST_CH) return ex_chans[i-MIXSRC_CH1]; #if defined(GVARS) - else if (i<=MIXSRC_LAST_GVAR) return GVAR_VALUE(i-MIXSRC_GVAR1, getGVarFlightPhase(s_perout_flight_phase, i-MIXSRC_GVAR1)); + else if (i<=MIXSRC_LAST_GVAR) return GVAR_VALUE(i-MIXSRC_GVAR1, getGVarFlightPhase(s_perout_flight_mode, i-MIXSRC_GVAR1)); #endif else if (i==MIXSRC_FIRST_TELEM-1+TELEM_TX_VOLTAGE) return g_vbat100mV; @@ -1513,9 +1513,15 @@ bool getSwitch(int8_t swtch) else if (cs_idx == SWSRC_REb) { result = REB_DOWN(); } +#endif +#if defined(CPUARM) && defined(FLIGHT_MODES) + else if (cs_idx >= SWSRC_FIRST_FLIGHT_MODE) { + uint8_t idx = cs_idx - SWSRC_FIRST_FLIGHT_MODE; + result = (idx == s_perout_flight_mode); + } #endif else { - cs_idx -= SWSRC_FIRST_CSW; + cs_idx -= SWSRC_FIRST_LOGICAL_SWITCH; GETSWITCH_RECURSIVE_TYPE mask = ((GETSWITCH_RECURSIVE_TYPE)1 << cs_idx); if (s_last_switch_used & mask) { @@ -1801,7 +1807,7 @@ int8_t getMovedSource(GET_MOVED_SOURCE_PARAMS) #if defined(FLIGHT_MODES) uint8_t getFlightPhase() { - for (uint8_t i=1; iswtch && getSwitch(phase->swtch)) { return i; @@ -1825,7 +1831,7 @@ int getTrimValue(uint8_t phase, uint8_t idx) { #if defined(PCBTARANIS) int result = 0; - for (uint8_t i=0; itrim[idx]; if (v.mode == TRIM_MODE_NONE) return; @@ -1884,7 +1890,7 @@ void setTrimValue(uint8_t phase, uint8_t idx, int trim) #if !defined(PCBTARANIS) uint8_t getTrimFlightPhase(uint8_t phase, uint8_t idx) { - for (uint8_t i=0; i 2 int16_t value; @@ -1990,7 +1996,7 @@ uint8_t s_gvar_last = 0; uint8_t getGVarFlightPhase(uint8_t phase, uint8_t idx) { - for (uint8_t i=0; i throttle trim if applicable int16_t trim = getTrimValue(phase, i); @@ -3531,14 +3537,14 @@ void evalFunctions() #if defined(GVARS) case FUNC_ADJUST_GVAR: if (CFN_GVAR_MODE(sd) == 0) { - SET_GVAR(CFN_GVAR_INDEX(sd), CFN_PARAM(sd), s_perout_flight_phase); + SET_GVAR(CFN_GVAR_INDEX(sd), CFN_PARAM(sd), s_perout_flight_mode); } else if (CFN_GVAR_MODE(sd) == 2) { - SET_GVAR(CFN_GVAR_INDEX(sd), GVAR_VALUE(CFN_PARAM(sd), s_perout_flight_phase), s_perout_flight_phase); + SET_GVAR(CFN_GVAR_INDEX(sd), GVAR_VALUE(CFN_PARAM(sd), s_perout_flight_mode), s_perout_flight_mode); } else if (CFN_GVAR_MODE(sd) == 3) { if (!(activeFnSwitches & switch_mask)) { - SET_GVAR(CFN_GVAR_INDEX(sd), GVAR_VALUE(CFN_GVAR_INDEX(sd), getGVarFlightPhase(s_perout_flight_phase, CFN_GVAR_INDEX(sd))) + (CFN_PARAM(sd) ? +1 : -1), s_perout_flight_phase); + SET_GVAR(CFN_GVAR_INDEX(sd), GVAR_VALUE(CFN_GVAR_INDEX(sd), getGVarFlightPhase(s_perout_flight_mode, CFN_GVAR_INDEX(sd))) + (CFN_PARAM(sd) ? +1 : -1), s_perout_flight_mode); } } else if (CFN_PARAM(sd) >= MIXSRC_TrimRud && CFN_PARAM(sd) <= MIXSRC_TrimAil) { @@ -3548,12 +3554,12 @@ void evalFunctions() else if (CFN_PARAM(sd) >= MIXSRC_REa && CFN_PARAM(sd) < MIXSRC_TrimRud) { int8_t scroll = rePreviousValues[CFN_PARAM(sd)-MIXSRC_REa] - (g_rotenc[CFN_PARAM(sd)-MIXSRC_REa] / ROTARY_ENCODER_GRANULARITY); if (scroll) { - SET_GVAR(CFN_GVAR_INDEX(sd), GVAR_VALUE(CFN_GVAR_INDEX(sd), getGVarFlightPhase(s_perout_flight_phase, CFN_GVAR_INDEX(sd))) + scroll, s_perout_flight_phase); + SET_GVAR(CFN_GVAR_INDEX(sd), GVAR_VALUE(CFN_GVAR_INDEX(sd), getGVarFlightPhase(s_perout_flight_mode, CFN_GVAR_INDEX(sd))) + scroll, s_perout_flight_mode); } } #endif else { - SET_GVAR(CFN_GVAR_INDEX(sd), limit((getvalue_t)-LIMIT_EXT_MAX, getValue(CFN_PARAM(sd)), (getvalue_t)LIMIT_EXT_MAX) / 10, s_perout_flight_phase); + SET_GVAR(CFN_GVAR_INDEX(sd), limit((getvalue_t)-LIMIT_EXT_MAX, getValue(CFN_PARAM(sd)), (getvalue_t)LIMIT_EXT_MAX) / 10, s_perout_flight_mode); } break; #endif @@ -3636,7 +3642,7 @@ void evalFunctions() else { #if defined(GVARS) if (CFN_FUNC(sd) == FUNC_PLAY_TRACK && param > 250) - param = GVAR_VALUE(param-251, getGVarFlightPhase(s_perout_flight_phase, param-251)); + param = GVAR_VALUE(param-251, getGVarFlightPhase(s_perout_flight_mode, param-251)); #endif PUSH_CUSTOM_PROMPT(active ? param : param+1, i+1); } @@ -3717,7 +3723,7 @@ void evalFunctions() #define HELI_ANAS_ARRAY anas #endif -uint8_t s_perout_flight_phase; +uint8_t s_perout_flight_mode; void perOut(uint8_t mode, uint8_t tick10ms) { evalInputs(mode); @@ -3822,7 +3828,7 @@ void perOut(uint8_t mode, uint8_t tick10ms) //========== PHASE && SWITCH ===== bool mixCondition = (md->phases != 0 || md->swtch); - delayval_t mixEnabled = !(md->phases & (1 << s_perout_flight_phase)) && getSwitch(md->swtch); + delayval_t mixEnabled = !(md->phases & (1 << s_perout_flight_mode)) && getSwitch(md->swtch); if (mixEnabled && md->srcRaw >= MIXSRC_FIRST_TRAINER && md->srcRaw <= MIXSRC_LAST_TRAINER && !ppmInValid) { mixEnabled = 0; @@ -3911,7 +3917,7 @@ void perOut(uint8_t mode, uint8_t tick10ms) if (apply_offset_and_curve) { #if !defined(PCBTARANIS) // OFFSET is now applied AFTER weight on Taranis //========== OFFSET / SOURCE =============== - int16_t offset = GET_GVAR(MD_OFFSET(md), GV_RANGELARGE_NEG, GV_RANGELARGE, s_perout_flight_phase); + int16_t offset = GET_GVAR(MD_OFFSET(md), GV_RANGELARGE_NEG, GV_RANGELARGE, s_perout_flight_mode); if (offset) v += calc100toRESX_16Bits(offset); #endif @@ -3954,7 +3960,7 @@ void perOut(uint8_t mode, uint8_t tick10ms) } // saves 12 bytes code if done here and not together with weight; unknown reason - int16_t weight = GET_GVAR(MD_WEIGHT(md), GV_RANGELARGE_NEG, GV_RANGELARGE, s_perout_flight_phase); + int16_t weight = GET_GVAR(MD_WEIGHT(md), GV_RANGELARGE_NEG, GV_RANGELARGE, s_perout_flight_mode); weight = calc100to256_16Bits(weight); //========== SPEED =============== @@ -4015,7 +4021,7 @@ void perOut(uint8_t mode, uint8_t tick10ms) //========== OFFSET / AFTER =============== #if defined(PCBTARANIS) if (apply_offset_and_curve) { - int16_t offset = GET_GVAR(MD_OFFSET(md), GV_RANGELARGE_NEG, GV_RANGELARGE, s_perout_flight_phase); + int16_t offset = GET_GVAR(MD_OFFSET(md), GV_RANGELARGE_NEG, GV_RANGELARGE, s_perout_flight_mode); if (offset) dv += calc100toRESX_16Bits(offset) << 8; } #endif @@ -4028,7 +4034,7 @@ void perOut(uint8_t mode, uint8_t tick10ms) #else if (md->curveMode == MODE_DIFFERENTIAL) { // @@@2 also recalculate curveParam to a 256 basis which ease the calculation later a lot - int16_t curveParam = calc100to256(GET_GVAR(md->curveParam, -100, 100, s_perout_flight_phase)); + int16_t curveParam = calc100to256(GET_GVAR(md->curveParam, -100, 100, s_perout_flight_mode)); if (curveParam > 0 && dv < 0) dv = (dv * (256 - curveParam)) >> 8; else if (curveParam < 0 && dv > 0) @@ -4157,7 +4163,7 @@ void doMixerCalculations() #endif #define MAX_ACT 0xffff - static uint16_t fp_act[MAX_PHASES] = {0}; + static uint16_t fp_act[MAX_FLIGHT_MODES] = {0}; static uint16_t delta = 0; static ACTIVE_PHASES_TYPE s_fade_flight_phases = 0; static uint8_t s_last_phase = 255; // TODO reinit everything here when the model changes, no??? @@ -4192,10 +4198,10 @@ void doMixerCalculations() int32_t weight = 0; if (s_fade_flight_phases) { memclear(sum_chans512, sizeof(sum_chans512)); - for (uint8_t p=0; p> 4) * fp_act[p]; @@ -4204,10 +4210,10 @@ void doMixerCalculations() s_last_switch_used = 0; } assert(weight); - s_perout_flight_phase = phase; + s_perout_flight_mode = phase; } else { - s_perout_flight_phase = phase; + s_perout_flight_mode = phase; perOut(e_perout_mode_normal, tick10ms); } @@ -4539,7 +4545,7 @@ void doMixerCalculations() if (s_fade_flight_phases) { uint16_t tick_delta = delta * tick10ms; - for (uint8_t p=0; p(TRIM_EXTENDED_MIN, (calibratedStick[i] + trims[i]) / 2, TRIM_EXTENDED_MAX); #else @@ -5296,8 +5302,8 @@ void moveTrimsToOffsets() // copy state of 3 primary to subtrim // reset all trims, except throttle (if throttle trim) for (uint8_t i=0; i Date: Mon, 5 May 2014 16:35:41 +0200 Subject: [PATCH 14/15] 100mAh will be now the step for telemetry bars (and logical switches on stock 9x) --- companion/src/eeprominterface.cpp | 4 ++-- radio/src/opentx.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 4a04b563d..983e73a7e 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -200,8 +200,8 @@ RawSourceRange RawSource::getRange(bool singleprec) result.decimals = 1; break; case TELEMETRY_SOURCE_CONSUMPTION: - result.step = singleprec ? 40 : 1; - result.max = singleprec ? 10200 : 10000; + result.step = singleprec ? 100 : 1; + result.max = singleprec ? 25500 : 10000; break; case TELEMETRY_SOURCE_POWER: case TELEMETRY_SOURCE_POWER_MAX: diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index a41d698bf..520853308 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -2151,7 +2151,7 @@ getvalue_t convert8bitsTelemValue(uint8_t channel, ls_telemetry_value_t value) result = value * 5; break; case TELEM_CONSUMPTION: - result = value * 40; + result = value * 100; break; case TELEM_VSPEED: result = ((getvalue_t)value - 125) * 10; From 50774a90181cfac727711339adb932be91e93b5d Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 5 May 2014 16:35:51 +0200 Subject: [PATCH 15/15] Cosmetics --- companion/src/simulation/simulatordialog.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/companion/src/simulation/simulatordialog.cpp b/companion/src/simulation/simulatordialog.cpp index 2003abf18..761fc0c06 100644 --- a/companion/src/simulation/simulatordialog.cpp +++ b/companion/src/simulation/simulatordialog.cpp @@ -600,7 +600,7 @@ void SimulatorDialog9X::getValues() void SimulatorDialog9X::saveSwitches(void) { - qDebug() << "SimulatorDialog9X::saveSwitches()"; + // qDebug() << "SimulatorDialog9X::saveSwitches()"; switchstatus=ui->switchTHR->isChecked(); switchstatus<<=1; switchstatus+=(ui->switchRUD->isChecked()&0x1); @@ -620,7 +620,7 @@ void SimulatorDialog9X::saveSwitches(void) void SimulatorDialog9X::restoreSwitches(void) { - qDebug() << "SimulatorDialog9X::restoreSwitches()"; + // qDebug() << "SimulatorDialog9X::restoreSwitches()"; ui->switchAIL->setChecked(switchstatus & 0x1); switchstatus >>=1; ui->switchELE->setChecked(switchstatus & 0x1); @@ -705,7 +705,7 @@ void SimulatorDialogTaranis::getValues() void SimulatorDialogTaranis::saveSwitches(void) { - qDebug() << "SimulatorDialogTaranis::saveSwitches()"; + // qDebug() << "SimulatorDialogTaranis::saveSwitches()"; switchstatus=ui->switchA->value(); switchstatus<<=2; switchstatus+=ui->switchB->value(); @@ -725,7 +725,7 @@ void SimulatorDialogTaranis::saveSwitches(void) void SimulatorDialogTaranis::restoreSwitches(void) { - qDebug() << "SimulatorDialogTaranis::restoreSwitches()"; + // qDebug() << "SimulatorDialogTaranis::restoreSwitches()"; ui->switchH->setValue(switchstatus & 0x3); switchstatus>>=2; ui->switchG->setValue(switchstatus & 0x3);