X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fkernel%2Fao_microflight.c;h=f415420d6ea900015e220f894f5e0a0bdbf16e0d;hb=master;hp=f7521f218cbb376b662c10bb82174a6ad1c75c58;hpb=d8e2b661e895fc59ded002a02191dcccce75f548;p=fw%2Faltos diff --git a/src/kernel/ao_microflight.c b/src/kernel/ao_microflight.c index f7521f21..bf994b8f 100644 --- a/src/kernel/ao_microflight.c +++ b/src/kernel/ao_microflight.c @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -23,6 +24,7 @@ uint32_t pa; uint32_t pa_ground; +uint32_t pa_ground_next; uint32_t pa_min; static void @@ -44,7 +46,7 @@ ao_microflight(void) { int16_t sample_count; int16_t log_count; - uint16_t time; + AO_TICK_TYPE time; uint32_t pa_interval_min, pa_interval_max; int32_t pa_diff; uint8_t h; @@ -57,7 +59,7 @@ ao_microflight(void) time = ao_time(); ao_pa_get(); ao_microkalman_init(); - pa_ground = pa; + pa_ground_next = pa_ground = pa; sample_count = 0; h = 0; for (;;) { @@ -74,7 +76,7 @@ ao_microflight(void) #endif pa_hist[h] = pa; h = SKIP_PA_HIST(h,1); - pa_diff = pa_ground - ao_pa; + pa_diff = (int32_t) (pa_ground - ao_pa); #if BOOST_DETECT /* Check for a significant pressure change */ @@ -87,7 +89,8 @@ ao_microflight(void) pa_sum += pa; ++sample_count; } else { - pa_ground = pa_sum >> GROUND_AVG_SHIFT; + pa_ground = pa_ground_next; + pa_ground_next = pa_sum >> GROUND_AVG_SHIFT; pa_sum = 0; sample_count = 0; #if !BOOST_DETECT @@ -142,7 +145,7 @@ ao_microflight(void) pa_min = ao_pa; if (sample_count == (GROUND_AVG - 1)) { - pa_diff = pa_interval_max - pa_interval_min; + pa_diff = (int32_t) (pa_interval_max - pa_interval_min); /* Check to see if the pressure is now stable */ if (pa_diff < LAND_DETECT)