1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-22 07:45:14 +03:00

Wrap around in Logical Switches sources

This commit is contained in:
Bertrand Songis 2014-02-10 22:06:19 +01:00
parent 72898b0d3a
commit 2794bb8070

View file

@ -4543,10 +4543,11 @@ void menuModelLogicalSwitches(uint8_t event)
// CSW params // CSW params
uint8_t cstate = cswFamily(cs->func); uint8_t cstate = cswFamily(cs->func);
#if defined(CPUARM) #if defined(CPUARM)
int16_t v1_min=0, v1_max=MIXSRC_LAST_TELEM, v2_min=0, v2_max=MIXSRC_LAST_TELEM; int16_t v1_unsigned=(uint8_t)cs->v1, v1_min=0, v1_max=MIXSRC_LAST_TELEM, v2_min=0, v2_max=MIXSRC_LAST_TELEM;
int16_t v3_min=0, v3_max=100; int16_t v3_min=0, v3_max=100;
#else #else
int8_t v1_min=0, v1_max=MIXSRC_LAST_TELEM, v2_min=0, v2_max=MIXSRC_LAST_TELEM; int8_t v1_min=0, v1_max=MIXSRC_LAST_TELEM, v2_min=0, v2_max=MIXSRC_LAST_TELEM;
uint8_t v1_unsigned = cs->v1;
#endif #endif
if (cstate == LS_FAMILY_BOOL || cstate == LS_FAMILY_STICKY) { if (cstate == LS_FAMILY_BOOL || cstate == LS_FAMILY_STICKY) {
@ -4582,7 +4583,7 @@ void menuModelLogicalSwitches(uint8_t event)
} }
#endif #endif
else if (cstate == LS_FAMILY_COMP) { else if (cstate == LS_FAMILY_COMP) {
putsMixerSource(CSW_2ND_COLUMN, y, cs->v1, attr1); putsMixerSource(CSW_2ND_COLUMN, y, v1_unsigned, attr1);
putsMixerSource(CSW_3RD_COLUMN, y, cs->v2, attr2); putsMixerSource(CSW_3RD_COLUMN, y, cs->v2, attr2);
INCDEC_SET_FLAG(INCDEC_SOURCE); INCDEC_SET_FLAG(INCDEC_SOURCE);
INCDEC_ENABLE_CHECK(isSourceAvailable); INCDEC_ENABLE_CHECK(isSourceAvailable);
@ -4596,7 +4597,7 @@ void menuModelLogicalSwitches(uint8_t event)
INCDEC_ENABLE_CHECK(NULL); INCDEC_ENABLE_CHECK(NULL);
} }
else { else {
putsMixerSource(CSW_2ND_COLUMN, y, cs->v1, attr1); putsMixerSource(CSW_2ND_COLUMN, y, v1_unsigned, attr1);
if (horz == 1) { if (horz == 1) {
INCDEC_SET_FLAG(INCDEC_SOURCE); INCDEC_SET_FLAG(INCDEC_SOURCE);
INCDEC_ENABLE_CHECK(isSourceAvailable); INCDEC_ENABLE_CHECK(isSourceAvailable);
@ -4606,11 +4607,11 @@ void menuModelLogicalSwitches(uint8_t event)
INCDEC_ENABLE_CHECK(NULL); INCDEC_ENABLE_CHECK(NULL);
} }
#if defined(FRSKY) #if defined(FRSKY)
if (cs->v1 >= MIXSRC_FIRST_TELEM) { if (v1_unsigned >= MIXSRC_FIRST_TELEM) {
putsTelemetryChannel(CSW_3RD_COLUMN, y, cs->v1 - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), LEFT|attr2); putsTelemetryChannel(CSW_3RD_COLUMN, y, v1_unsigned - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), LEFT|attr2);
v2_max = maxTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1); v2_max = maxTelemValue(v1_unsigned - MIXSRC_FIRST_TELEM + 1);
#if defined(CPUARM) #if defined(CPUARM)
v2_min = minTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1); v2_min = minTelemValue(v1_unsigned - MIXSRC_FIRST_TELEM + 1);
if (cs->v2 < v2_min || cs->v2 > v2_max) { if (cs->v2 < v2_min || cs->v2 > v2_max) {
cs->v2 = 0; cs->v2 = 0;
eeDirty(EE_MODEL); eeDirty(EE_MODEL);
@ -4635,8 +4636,8 @@ void menuModelLogicalSwitches(uint8_t event)
v2_min = -125; v2_max = 125; v2_min = -125; v2_max = 125;
} }
#else #else
if (cs->v1 >= MIXSRC_FIRST_TELEM) { if (v1_unsigned >= MIXSRC_FIRST_TELEM) {
putsTelemetryChannel(CSW_3RD_COLUMN, y, cs->v1 - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), LEFT|attr2); putsTelemetryChannel(CSW_3RD_COLUMN, y, v1_unsigned - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), LEFT|attr2);
v2_min = -128; v2_max = 127; v2_min = -128; v2_max = 127;
} }
else { else {
@ -4711,17 +4712,17 @@ void menuModelLogicalSwitches(uint8_t event)
break; break;
} }
case LS_FIELD_V1: case LS_FIELD_V1:
cs->v1 = CHECK_INCDEC_PARAM(event, cs->v1, v1_min, v1_max); cs->v1 = CHECK_INCDEC_PARAM(event, v1_unsigned, v1_min, v1_max);
break; break;
case LS_FIELD_V2: case LS_FIELD_V2:
cs->v2 = CHECK_INCDEC_PARAM(event, cs->v2, v2_min, v2_max); cs->v2 = CHECK_INCDEC_PARAM(event, cs->v2, v2_min, v2_max);
#if defined(PCBTARANIS) #if defined(PCBTARANIS)
if (cstate==LS_FAMILY_OFS && cs->v1!=0 && event==EVT_KEY_LONG(KEY_ENTER)) { if (cstate==LS_FAMILY_OFS && v1_unsigned!=0 && event==EVT_KEY_LONG(KEY_ENTER)) {
killEvents(event); killEvents(event);
getvalue_t x = getValue(cs->v1); getvalue_t x = getValue(v1_unsigned);
if (cs->v1 < MIXSRC_GVAR1) if (v1_unsigned < MIXSRC_GVAR1)
cs->v2 = calcRESXto100(x); cs->v2 = calcRESXto100(x);
else if (cs->v1 - MIXSRC_FIRST_TELEM + 1 == TELEM_ALT) else if (v1_unsigned - MIXSRC_FIRST_TELEM + 1 == TELEM_ALT)
cs->v2 *= 100; cs->v2 *= 100;
eeDirty(EE_MODEL); eeDirty(EE_MODEL);
} }