From a72396620d8258a899c28baa68a3979e1a9ae8f1 Mon Sep 17 00:00:00 2001 From: bsongis Date: Thu, 27 Mar 2014 17:39:10 +0100 Subject: [PATCH] Corrections for sky9x --- radio/src/gui/menu_model.cpp | 92 ++++++++++++++------------------- radio/src/gui/menus.h | 3 +- radio/src/translations/en.h.txt | 6 +-- 3 files changed, 44 insertions(+), 57 deletions(-) diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index 35bb8e0fe..78b3f8f14 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -3944,6 +3944,7 @@ void menuModelLimits(uint8_t event) case ITEM_LIMITS_MIN: #if defined(CPUARM) ld->min = LIMITS_MIN_MAX_OFFSET + GVAR_MENU_ITEM(LIMITS_MIN_POS, y, MIN_MAX_DISPLAY(ld->min-LIMITS_MIN_MAX_OFFSET), -MIN_MAX_LIMIT, 0, MIN_MAX_ATTR, DBLKEYS_1000, event); + if (k==0) TRACE("ld->min = %d %d", ld->min, -MIN_MAX_LIMIT); #else lcd_outdezAtt(LIMITS_MIN_POS, y, MIN_MAX_DISPLAY(ld->min-LIMITS_MIN_MAX_OFFSET), MIN_MAX_ATTR); if (active) ld->min = LIMITS_MIN_MAX_OFFSET + checkIncDecModel(event, ld->min-LIMITS_MIN_MAX_OFFSET, -MIN_MAX_LIMIT, 0); @@ -4197,23 +4198,6 @@ void menuModelGVars(uint8_t event) } } -#if defined(CPUARM) - #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL; IsValueAvailable isValueAvailable = NULL - #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) - #define INCDEC_ENABLE_CHECK(fn) isValueAvailable = fn - #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag, isValueAvailable) -#elif defined(CPUM64) - #define INCDEC_DECLARE_VARS() - #define INCDEC_SET_FLAG(f) - #define INCDEC_ENABLE_CHECK(fn) - #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, EE_MODEL) -#else - #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL - #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) - #define INCDEC_ENABLE_CHECK(fn) - #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag) -#endif - if (m_posVert > 0 && m_posHorz < 0 && event==EVT_KEY_LONG(KEY_ENTER)) { killEvents(event); if (g_model.gvars[sub].popup) @@ -4226,23 +4210,6 @@ void menuModelGVars(uint8_t event) } #endif -#if defined(CPUARM) - #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL; IsValueAvailable isValueAvailable = NULL - #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) - #define INCDEC_ENABLE_CHECK(fn) isValueAvailable = fn - #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag, isValueAvailable) -#elif defined(CPUM64) - #define INCDEC_DECLARE_VARS() - #define INCDEC_SET_FLAG(f) - #define INCDEC_ENABLE_CHECK(fn) - #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, EE_MODEL) -#else - #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL - #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) - #define INCDEC_ENABLE_CHECK(fn) - #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag) -#endif - enum LogicalSwitchFields { LS_FIELD_FUNCTION, LS_FIELD_V1, @@ -4273,6 +4240,23 @@ enum LogicalSwitchFields { #define CSW_4TH_COLUMN (18*FW+2) #endif +#if defined(CPUARM) + #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL; IsValueAvailable isValueAvailable = NULL + #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) + #define INCDEC_ENABLE_CHECK(fn) isValueAvailable = fn + #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag, isValueAvailable) +#elif defined(CPUM64) + #define INCDEC_DECLARE_VARS() + #define INCDEC_SET_FLAG(f) + #define INCDEC_ENABLE_CHECK(fn) + #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, EE_MODEL) +#else + #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL + #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) + #define INCDEC_ENABLE_CHECK(fn) + #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag) +#endif + #if defined(CPUARM) && LCD_W < 212 #define CSWONE_2ND_COLUMN (11*FW) @@ -4289,6 +4273,10 @@ void menuModelLogicalSwitchOne(uint8_t event) int8_t sub = m_posVert; + INCDEC_DECLARE_VARS(); + + int v1_val = cs->v1; + for (uint8_t k=0; kv1, attr); + putsSwitches(CSWONE_2ND_COLUMN, y, v1_val, attr); v1_min = SWSRC_OFF+1; v1_max = SWSRC_ON-1; } else if (cstate == LS_FAMILY_TIMER) { - lcd_outdezAtt(CSWONE_2ND_COLUMN, y, cs->v1+1, LEFT|attr); + lcd_outdezAtt(CSWONE_2ND_COLUMN, y, v1_val+1, LEFT|attr); v1_max = 99; } else { - putsMixerSource(CSWONE_2ND_COLUMN, y, cs->v1, attr); + v1_val = (uint8_t)cs->v1; + putsMixerSource(CSWONE_2ND_COLUMN, y, v1_val, attr); + INCDEC_SET_FLAG(INCDEC_SOURCE); + INCDEC_ENABLE_CHECK(isSourceAvailable); } if (attr) { - CHECK_INCDEC_MODELVAR(event, cs->v1, v1_min, v1_max); + cs->v1 = CHECK_INCDEC_PARAM(event, v1_val, v1_min, v1_max); } break; } case LS_FIELD_V2: { lcd_putsLeft(y, STR_V2); - int16_t v2_min=0, v2_max=MIXSRC_LAST_TELEM; + int v2_min=0, v2_max=MIXSRC_LAST_TELEM; if (cstate == LS_FAMILY_BOOL || cstate == LS_FAMILY_STICKY) { putsSwitches(CSWONE_2ND_COLUMN, y, cs->v2, attr); v2_min = SWSRC_OFF+1; v2_max = SWSRC_ON-1; @@ -4364,22 +4355,17 @@ void menuModelLogicalSwitchOne(uint8_t event) } else if (cstate == LS_FAMILY_COMP) { putsMixerSource(CSWONE_2ND_COLUMN, y, cs->v2, attr); + INCDEC_SET_FLAG(INCDEC_SOURCE); + INCDEC_ENABLE_CHECK(isSourceAvailable); } else { #if defined(FRSKY) - if (cs->v1 >= MIXSRC_FIRST_TELEM) { - putsTelemetryChannel(CSWONE_2ND_COLUMN, y, cs->v1 - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), attr|LEFT); - v2_max = maxTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1); - if (cstate == LS_FAMILY_OFS) { - v2_min = -128; - v2_max -= 128; - } - else { - v2_max = min((uint8_t)127, (uint8_t)v2_max); - v2_min = -v2_max; - } - if (cs->v2 > v2_max) { - cs->v2 = v2_max; + if (v1_val >= MIXSRC_FIRST_TELEM) { + putsTelemetryChannel(CSWONE_2ND_COLUMN, y, v1_val - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), attr|LEFT); + v2_max = maxTelemValue(v1_val - MIXSRC_FIRST_TELEM + 1); + v2_min = minTelemValue(v1_val - MIXSRC_FIRST_TELEM + 1); + if (cs->v2 < v2_min || cs->v2 > v2_max) { + cs->v2 = 0; eeDirty(EE_MODEL); } } diff --git a/radio/src/gui/menus.h b/radio/src/gui/menus.h index 51037bdfa..93d064997 100644 --- a/radio/src/gui/menus.h +++ b/radio/src/gui/menus.h @@ -435,7 +435,8 @@ bool modelHasNotes(); #define REPEAT_LAST_CURSOR_MOVE() { if (CURSOR_MOVED_LEFT(event) || CURSOR_MOVED_RIGHT(event)) putEvent(event); else m_posHorz = 0; } #define MOVE_CURSOR_FROM_HERE() if (m_posHorz > 0) REPEAT_LAST_CURSOR_MOVE() #elif defined(ROTARY_ENCODER_NAVIGATION) - #define REPEAT_LAST_CURSOR_MOVE() { if (EVT_KEY_MASK(event) >= 0x0e) putEvent(event); else m_posHorz = 0; } + void repeatLastCursorMove(uint8_t event); + #define REPEAT_LAST_CURSOR_MOVE() { if (EVT_KEY_MASK(event) >= 0x0e) putEvent(event); else repeatLastCursorMove(event); } #define MOVE_CURSOR_FROM_HERE() if (m_posHorz > 0) REPEAT_LAST_CURSOR_MOVE() #else void repeatLastCursorMove(uint8_t event); diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index fbdd2f9be..a72866571 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -471,7 +471,7 @@ #define TR_TTRIM TR("T-Trim", INDENT "Trim Idle Only") #define TR_BEEPCTR TR("Ctr Beep", "Center Beep") #define TR_PROTO TR(INDENT "Proto", INDENT "Protocol") -#define TR_PPMFRAME TR("PPM frame", INDENT "PPM frame") +#define TR_PPMFRAME TR(INDENT "PPM frame", INDENT "PPM frame") #define TR_MS "ms" #define TR_SWITCH "Switch" #define TR_TRIMS "Trims" @@ -625,7 +625,7 @@ #define TR_MENUTEMPLATES "TEMPLATES" #define TR_MENUSTAT "STATS" #define TR_MENUDEBUG "DEBUG" -#define TR_RXNUM TR("RxNum", INDENT "Receiver No.") +#define TR_RXNUM TR(INDENT "RxNum", INDENT "Receiver No.") #define TR_SYNCMENU "[Sync]" #define TR_LIMIT INDENT "Limit" #define TR_MINRSSI "Min Rssi" @@ -759,7 +759,7 @@ #define TR_PTS "pts" #define TR_SMOOTH "Smooth" #define TR_COPY_TRIMS_TO_OFS "Copy Trim To Subtrim" -#define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_PERSISTENT_MAH TR(INDENT "Str mAh", INDENT "Store mAh") #define TR_PREFLIGHT "Preflight Checks" #define TR_CHECKLIST INDENT "Display Checklist" #define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")