When an "Adjust GV" special function is reusing trim buttons to increase/decrease GVs, then the trim limits are applied instead of GV limits. This patch applies the GV limits.
This commit is contained in:
Jesper Frickmann
2018-04-25 08:04:43 +02:00
committed by Bertrand Songis
parent 2ad0db2d80
commit d59a853f0c
+47 -22
View File
@@ -1368,6 +1368,9 @@ uint8_t checkTrim(event_t event)
int8_t trimInc = g_model.trimInc + 1;
int8_t v = (trimInc==-1) ? min(32, abs(before)/4+1) : (1 << trimInc); // TODO flash saving if (trimInc < 0)
if (thro) v = 4; // if throttle trim and trim trottle then step=4
#if defined(GVARS)
if (TRIM_REUSED(idx)) v = 1;
#endif
int16_t after = (k&1) ? before + v : before - v; // positive = k&1
bool beepTrim = false;
@@ -1377,35 +1380,57 @@ uint8_t checkTrim(event_t event)
AUDIO_TRIM_MIDDLE();
pauseEvents(event);
}
else if (before>TRIM_MIN && after<=TRIM_MIN) {
beepTrim = true;
AUDIO_TRIM_MIN();
killEvents(event);
}
else if (before<TRIM_MAX && after>=TRIM_MAX) {
beepTrim = true;
AUDIO_TRIM_MAX();
killEvents(event);
}
if ((before<after && after>TRIM_MAX) || (before>after && after<TRIM_MIN)) {
if (!g_model.extendedTrims || TRIM_REUSED(idx)) after = before;
}
if (after < TRIM_EXTENDED_MIN) {
after = TRIM_EXTENDED_MIN;
}
if (after > TRIM_EXTENDED_MAX) {
after = TRIM_EXTENDED_MAX;
}
#if defined(GVARS)
if (TRIM_REUSED(idx)) {
SET_GVAR_VALUE(trimGvar[idx], phase, after);
int8_t gvar = trimGvar[idx];
#if defined(CPUARM)
int16_t vmin = GVAR_MIN + g_model.gvars[gvar].min;
int16_t vmax = GVAR_MAX - g_model.gvars[gvar].max;
#else
int16_t vmin = TRIM_MIN;
int16_t vmax = TRIM_MAX;
#endif
if (after < vmin) {
after = vmin;
beepTrim = true;
AUDIO_TRIM_MIN();
killEvents(event);
}
else if (after > vmax) {
after = vmax;
beepTrim = true;
AUDIO_TRIM_MAX();
killEvents(event);
}
SET_GVAR_VALUE(gvar, phase, after);
}
else
#endif
{
if (before>TRIM_MIN && after<=TRIM_MIN) {
beepTrim = true;
AUDIO_TRIM_MIN();
killEvents(event);
}
else if (before<TRIM_MAX && after>=TRIM_MAX) {
beepTrim = true;
AUDIO_TRIM_MAX();
killEvents(event);
}
if ((before<after && after>TRIM_MAX) || (before>after && after<TRIM_MIN)) {
if (!g_model.extendedTrims) after = before;
}
if (after < TRIM_EXTENDED_MIN) {
after = TRIM_EXTENDED_MIN;
}
else if (after > TRIM_EXTENDED_MAX) {
after = TRIM_EXTENDED_MAX;
}
#if defined(CPUARM)
if (!setTrimValue(phase, idx, after)) {
// we don't play a beep, so we exit now the function