fix(radio): channel outputs may jump when mix lines are inserted or deleted (#6034)

This commit is contained in:
philmoz
2025-04-01 18:23:17 +10:00
committed by GitHub
parent 00d0384008
commit 78550abc2d
+11
View File
@@ -31,6 +31,9 @@ MixData* mixAddress(uint8_t idx) { return &g_model.mixData[idx]; }
uint8_t getMixCount() { return _nb_mix_lines; }
// Slow up/down calculation array
extern int32_t act [MAX_MIXERS];
void insertMix(uint8_t idx, uint8_t channel)
{
mixerTaskStop();
@@ -52,6 +55,10 @@ void insertMix(uint8_t idx, uint8_t channel)
mix->weight = 100;
mixerTaskStart();
// Update slow up/down array
memmove(&act[idx + 1], &act[idx], (MAX_MIXERS - (idx + 1)) * sizeof(int32_t));
act[idx] = 0;
_nb_mix_lines += 1;
storageDirty(EE_MODEL);
}
@@ -64,6 +71,10 @@ void deleteMix(uint8_t idx)
memclear(&g_model.mixData[MAX_MIXERS - 1], sizeof(MixData));
mixerTaskStart();
// Update slow up/down array
memmove(&act[idx], &act[idx + 1], (MAX_MIXERS - (idx + 1)) * sizeof(int32_t));
act[MAX_MIXERS - 1] = 0;
_nb_mix_lines -= 1;
storageDirty(EE_MODEL);
}