Skip to content

Commit f3d54fa

Browse files
Fix trim calculation when trim step > 1. Ensure trims move at consistent rate
1 parent d1fc33f commit f3d54fa

3 files changed

Lines changed: 12 additions & 21 deletions

File tree

src/mixer.c

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@ s32 MIXER_ApplyLimits(unsigned channel, struct Limit *limit, volatile s32 *_raw,
448448
return value;
449449
}
450450

451+
//Returns the raw trim value (between -100 and 100)
451452
s8 *MIXER_GetTrim(unsigned i)
452453
{
453454
if (Model.trims[i].sw) {
@@ -465,10 +466,12 @@ s32 MIXER_GetTrimValue(int i)
465466
{
466467
s32 value = *(MIXER_GetTrim(i));
467468
//0 to 100 step is 0.1
468-
if (Model.trims[i].step < 10)
469+
if (Model.trims[i].step < 100) //Trims are in tenths of a percent from 0 - 100
469470
return PCT_TO_RANGE(value * Model.trims[i].step) / 10;
470-
else
471-
return PCT_TO_RANGE(value);
471+
else if (Model.trims[i].step <= TRIM_MAX_VALUE) //Trims are in 1% increments from 100-190
472+
value = value * (Model.trims[i].step - 90);
473+
return PCT_TO_RANGE(value);
474+
472475
}
473476

474477
s32 get_trim(unsigned src)
@@ -772,35 +775,22 @@ unsigned MIXER_UpdateTrim(u32 buttons, unsigned flags, void *data)
772775
#define START_TONE 1000
773776
(void)data;
774777
int i;
775-
int orig_step_size = 1;
776778
int tmp;
777779
unsigned reach_end = 0; // reach either 100 , 0, or -100
778-
if (flags & BUTTON_LONGPRESS) {
779-
if (orig_step_size == 1)
780-
orig_step_size = 9;
781-
else if (orig_step_size == 9)
782-
orig_step_size = 10;
783-
}
784-
if (! orig_step_size)
785-
return 1;
780+
int orig_step_size = (flags & BUTTON_LONGPRESS) ? 9 : 1;
786781
unsigned volume = 10 * Transmitter.volume;
787782
for (i = 0; i < NUM_TRIMS; i++) {
788783
int step_size = orig_step_size;
789784
reach_end = 0;
790785
int neg_button = CHAN_ButtonIsPressed(buttons, Model.trims[i].neg);
791786
if (neg_button || CHAN_ButtonIsPressed(buttons, Model.trims[i].pos)) {
792-
if (Model.trims[i].step > 190) {
787+
if (Model.trims[i].step > TRIM_MAX_VALUE) {
793788
_trim_as_switch(flags, i, neg_button);
794789
continue;
795790
}
796791
if (flags & BUTTON_RELEASE)
797792
continue;
798793
int max = 100;
799-
if (Model.trims[i].step >= 100) {
800-
step_size = Model.trims[i].step - 90;
801-
} else if (Model.trims[i].step > 10) {
802-
step_size = step_size * Model.trims[i].step / 10;
803-
}
804794
if (neg_button)
805795
step_size = -step_size;
806796
s8 *value = MIXER_GetTrim(i);

src/mixer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434

3535

3636
enum {
37+
TRIM_MAX_VALUE = 190,
3738
TRIM_ONOFF = 191,
3839
TRIM_TOGGLE = 192,
3940
TRIM_MOMENTARY = 193,

src/pages/common/_trim_page.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,9 @@ static const char *set_trimstep_cb(guiObject_t *obj, int dir, void *data)
8989
int i = ((long)data)& 0xff;
9090
u8 *value = ((long)data >> 8) ? &tp->trim.step : &Model.trims[i].step;
9191
//place switches before 0.1 on the spinbox
92-
u8 v = ((int)*value + TRIM_SWITCH_TYPES - 1) % (190 + TRIM_SWITCH_TYPES);
93-
v = GUI_TextSelectHelper(v, 0, 190 + TRIM_SWITCH_TYPES - 1, dir, 1, 5, NULL);
94-
*value = ((int)v + 190) % (190 + TRIM_SWITCH_TYPES) + 1;
92+
u8 v = ((int)*value + TRIM_SWITCH_TYPES - 1) % (TRIM_MAX_VALUE + TRIM_SWITCH_TYPES);
93+
v = GUI_TextSelectHelper(v, 0, TRIM_MAX_VALUE + TRIM_SWITCH_TYPES - 1, dir, 1, 5, NULL);
94+
*value = ((int)v + TRIM_MAX_VALUE) % (TRIM_MAX_VALUE + TRIM_SWITCH_TYPES) + 1;
9595

9696
guiObject_t *negtrimObj = _get_obj(i, TRIM_MINUS);
9797
guiObject_t *switchObj = _get_obj(i, TRIM_SWITCH);

0 commit comments

Comments
 (0)