diff --git a/src/menus.cpp b/src/menus.cpp index 775006a57..26256e67c 100644 --- a/src/menus.cpp +++ b/src/menus.cpp @@ -776,12 +776,10 @@ int16_t gvarMenuItem(uint8_t x, uint8_t y, int16_t value, int16_t min, int16_t m bool invers = (attr & INVERS); if (invers && event == EVT_KEY_LONG(KEY_ENTER)) { s_editMode = !s_editMode; - - 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_phase) : delta); eeDirty(EE_MODEL); } - if ( GV_IS_GV_VALUE(value,min,max) ) { + if (GV_IS_GV_VALUE(value,min,max) ) { if (attr & LEFT) attr -= LEFT; /* because of ZCHAR */ else @@ -799,16 +797,20 @@ int16_t gvarMenuItem(uint8_t x, uint8_t y, int16_t value, int16_t min, int16_t m idx++; */ if (idx < 0) { - value=(int16_t) GV_CALC_VALUE_IDX_NEG(idx,delta); idx=-idx; lcd_putcAtt(x-6, y, '-', attr); - } else { - value = (int16_t) GV_CALC_VALUE_IDX_POS(idx,delta); idx++; + value = (int16_t) GV_CALC_VALUE_IDX_NEG(idx,delta); + idx = -idx; + lcd_putcAtt(x-6, y, '-', attr); + } + else { + value = (int16_t) GV_CALC_VALUE_IDX_POS(idx,delta); + idx++; } putsStrIdx(x, y, STR_GV, idx, attr); } else { lcd_outdezAtt(x, y, value, attr); - if (invers) value = checkIncDec(event, value, min, max,EE_MODEL); + if (invers) value = checkIncDec(event, value, min, max, EE_MODEL); } return value; } @@ -817,7 +819,7 @@ int16_t gvarMenuItem(uint8_t x, uint8_t y, int16_t value, int16_t min, int16_t m int8_t gvarMenuItem(uint8_t x, uint8_t y, int8_t value, int16_t min, int16_t max, LcdFlags attr, uint8_t event) { lcd_outdezAtt(x, y, value, attr); - if (attr&INVERS) value = checkIncDec(event, value, min, max,EE_MODEL); + if (attr&INVERS) value = checkIncDec(event, value, min, max, EE_MODEL); return value; } #endif diff --git a/src/myeeprom.h b/src/myeeprom.h index aba3a0809..677211b02 100644 --- a/src/myeeprom.h +++ b/src/myeeprom.h @@ -55,8 +55,8 @@ #define EEPROM_VER 214 #elif defined(PCBSKY9X) #define EEPROM_VER 214 -#elif defined(PCBGRUVIN9X) -#define EEPROM_VER 213 +#elif defined(PCBGRUVIN9X) || defined(CPUM128) +#define EEPROM_VER 214 #else #define EEPROM_VER 213 #endif @@ -255,14 +255,25 @@ PACK(typedef struct t_ExpoData { char name[LEN_EXPOMIX_NAME]; int8_t curveParam; }) ExpoData; -#else +#elif defined(CPUM64) PACK(typedef struct t_ExpoData { uint8_t mode:2; // 0=end, 1=pos, 2=neg, 3=both int8_t swtch:6; uint8_t chn:2; uint8_t phases:5; uint8_t curveMode:1; - uint8_t weight; // we have one bit spare here :) + uint8_t weight; // One spare bit here (used for GVARS) + int8_t curveParam; +}) ExpoData; +#else +PACK(typedef struct t_ExpoData { + uint8_t mode:2; // 0=end, 1=pos, 2=neg, 3=both + uint8_t chn:2; + uint8_t curveMode:1; + uint8_t spare:3; + uint8_t phases; + int8_t swtch; + uint8_t weight; int8_t curveParam; }) ExpoData; #endif @@ -345,6 +356,8 @@ PACK( union u_int8int16_t { #define SLOW_STEP 2 #define DELAY_MAX 15 /* 7.5 seconds */ #define SLOW_MAX 15 /* 7.5 seconds */ + +#if defined(CPUM64) PACK(typedef struct t_MixData { uint8_t destCh:4; // 0, 1..NUM_CHNOUT uint8_t curveMode:1; // O=curve, 1=differential @@ -365,7 +378,29 @@ PACK(typedef struct t_MixData { int8_t curveParam; int8_t offset; }) MixData; - +#else +PACK(typedef struct t_MixData { + uint8_t destCh:4; // 0, 1..NUM_CHNOUT + uint8_t curveMode:1; // O=curve, 1=differential + uint8_t noExpo:1; + uint8_t weightMode:1; + uint8_t offsetMode:1; + uint8_t srcRaw; + int8_t weight; + int8_t swtch; + uint8_t phases; + uint8_t mltpx:2; // multiplex method: 0 means +=, 1 means *=, 2 means := + int8_t carryTrim:3; + uint8_t mixWarn:2; // mixer warning + uint8_t spare:1; + uint8_t delayUp:4; + uint8_t delayDown:4; + uint8_t speedUp:4; + uint8_t speedDown:4; + int8_t curveParam; + int8_t offset; +}) MixData; +#endif PACK( union u_gvarint_t { struct { int8_t lo;