@@ -43,6 +43,10 @@ void MainViewHorizontalTrim::paint(BitmapBuffer * dc)
|
||||
trimMin = TRIM_MIN;
|
||||
trimMax = TRIM_MAX;
|
||||
}
|
||||
|
||||
int16_t dispVal = value;
|
||||
if (dispVal < trimMin) dispVal = trimMin;
|
||||
if (dispVal > trimMax) dispVal = trimMax;
|
||||
|
||||
// Trim line
|
||||
dc->drawSolidFilledRect(
|
||||
@@ -50,7 +54,7 @@ void MainViewHorizontalTrim::paint(BitmapBuffer * dc)
|
||||
width() - TRIM_SQUARE_SIZE + 1, TRIM_LINE_WIDTH, DEFAULT_COLOR);
|
||||
|
||||
// Trim square
|
||||
coord_t x = divRoundClosest((width() - TRIM_SQUARE_SIZE) * (value - trimMin),
|
||||
coord_t x = divRoundClosest((width() - TRIM_SQUARE_SIZE) * (dispVal - trimMin),
|
||||
trimMax - trimMin);
|
||||
drawTrimSquare(dc, x, 0,
|
||||
(value < TRIM_MIN || value > TRIM_MAX)
|
||||
@@ -85,15 +89,20 @@ void MainViewVerticalTrim::paint(BitmapBuffer * dc)
|
||||
trimMax = TRIM_MAX;
|
||||
}
|
||||
|
||||
int16_t dispVal = value;
|
||||
if (dispVal < trimMin) dispVal = trimMin;
|
||||
if (dispVal > trimMax) dispVal = trimMax;
|
||||
|
||||
// Trim line
|
||||
dc->drawSolidFilledRect((width() - TRIM_LINE_WIDTH) / 2, TRIM_SQUARE_SIZE / 2,
|
||||
TRIM_LINE_WIDTH, height() - TRIM_SQUARE_SIZE + 1,
|
||||
DEFAULT_COLOR);
|
||||
|
||||
// Trim square
|
||||
coord_t y = height() - TRIM_SQUARE_SIZE -
|
||||
divRoundClosest((height() - TRIM_SQUARE_SIZE) * (value - trimMin),
|
||||
trimMax - trimMin);
|
||||
coord_t y =
|
||||
height() - TRIM_SQUARE_SIZE -
|
||||
divRoundClosest((height() - TRIM_SQUARE_SIZE) * (dispVal - trimMin),
|
||||
trimMax - trimMin);
|
||||
drawTrimSquare(dc, 0, y,
|
||||
(value < TRIM_MIN || value > TRIM_MAX)
|
||||
? HIGHLIGHT_COLOR /* TODO add a color */
|
||||
|
||||
+11
-5
@@ -1003,21 +1003,26 @@ void checkTrims()
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if (before>TRIM_MIN && after<=TRIM_MIN) {
|
||||
int16_t tMax = g_model.extendedTrims ? TRIM_EXTENDED_MAX : TRIM_MAX;
|
||||
int16_t tMin = g_model.extendedTrims ? TRIM_EXTENDED_MIN : TRIM_MIN;
|
||||
if (before > tMin && after <= tMin) {
|
||||
beepTrim = true;
|
||||
AUDIO_TRIM_MIN();
|
||||
killEvents(event);
|
||||
}
|
||||
else if (before<TRIM_MAX && after>=TRIM_MAX) {
|
||||
else if (before < tMax && after >= tMax) {
|
||||
beepTrim = true;
|
||||
AUDIO_TRIM_MAX();
|
||||
killEvents(event);
|
||||
}
|
||||
|
||||
if ((before<after && after>TRIM_MAX) || (before>after && after<TRIM_MIN)) {
|
||||
if (!g_model.extendedTrims) after = before;
|
||||
// Allow only move into the right direction if over the limits
|
||||
if ((before < after && after > tMax) || // increasing over tMax
|
||||
(before > after && after < tMin)) { // decreasing under tMin
|
||||
after = before;
|
||||
}
|
||||
|
||||
// Clip at hard limits
|
||||
if (after < TRIM_EXTENDED_MIN) {
|
||||
after = TRIM_EXTENDED_MIN;
|
||||
}
|
||||
@@ -1586,7 +1591,8 @@ void instantTrim()
|
||||
}
|
||||
}
|
||||
if (addTrim && abs(delta) >= INSTANT_TRIM_MARGIN) {
|
||||
int16_t trim = limit<int16_t>(TRIM_EXTENDED_MIN, (delta + trims[stick]) / 2, TRIM_EXTENDED_MAX);
|
||||
int16_t trim = limit<int16_t>(
|
||||
TRIM_EXTENDED_MIN, (delta + trims[stick]) / 2, TRIM_EXTENDED_MAX);
|
||||
setTrimValue(trimFlightMode, stick, trim);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user