Division per 0 in flight phases maths.
This commit is contained in:
+6
-13
@@ -1483,6 +1483,7 @@ void perMain()
|
||||
|
||||
#define MAX_ACT 0xffff
|
||||
static uint16_t fp_act[MAX_PHASES] = {0};
|
||||
static uint16_t delta = 0;
|
||||
static uint8_t s_fade_flight_phases = 0;
|
||||
static uint8_t s_last_phase = 255;
|
||||
uint8_t phase = getFlightPhase();
|
||||
@@ -1492,23 +1493,18 @@ void perMain()
|
||||
fp_act[phase] = MAX_ACT;
|
||||
}
|
||||
else {
|
||||
if (g_model.phaseData[s_last_phase].fadeOut) {
|
||||
s_fade_flight_phases |= (1<<s_last_phase);
|
||||
uint8_t fadeTime = max(g_model.phaseData[s_last_phase].fadeOut, g_model.phaseData[phase].fadeIn);
|
||||
if (fadeTime) {
|
||||
s_fade_flight_phases |= (1<<s_last_phase) + (1<<phase);
|
||||
delta = (MAX_ACT / 100) / fadeTime;
|
||||
}
|
||||
else {
|
||||
fp_act[s_last_phase] = 0;
|
||||
s_fade_flight_phases &= ~(1<<s_last_phase);
|
||||
}
|
||||
if (g_model.phaseData[phase].fadeIn) {
|
||||
s_fade_flight_phases |= (1<<phase);
|
||||
}
|
||||
else {
|
||||
fp_act[phase] = MAX_ACT;
|
||||
s_fade_flight_phases &= ~(1<<phase);
|
||||
s_fade_flight_phases &= ~((1<<s_last_phase) + (1<<phase));
|
||||
}
|
||||
}
|
||||
s_last_phase = phase;
|
||||
// printf("s_fade_flight_phases=%d\n", s_fade_flight_phases); fflush(stdout);
|
||||
}
|
||||
|
||||
int16_t next_chans512[NUM_CHNOUT];
|
||||
@@ -1555,10 +1551,8 @@ void perMain()
|
||||
|
||||
if (s_fade_flight_phases) {
|
||||
for (uint8_t p=0; p<MAX_PHASES; p++) {
|
||||
// printf("f_act[%d]=%d\n", p, fp_act[p]);
|
||||
if (s_fade_flight_phases & (1<<p)) {
|
||||
if (p == phase) {
|
||||
uint16_t delta = (MAX_ACT / 100) / g_model.phaseData[p].fadeIn;
|
||||
if (MAX_ACT - fp_act[p] > delta)
|
||||
fp_act[p] += delta;
|
||||
else {
|
||||
@@ -1567,7 +1561,6 @@ void perMain()
|
||||
}
|
||||
}
|
||||
else {
|
||||
uint16_t delta = (MAX_ACT / 100) / g_model.phaseData[p].fadeOut;
|
||||
if (fp_act[p] > delta)
|
||||
fp_act[p] -= delta;
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user