X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fkernel%2Fao_sample.c;h=67f20aff9093b5941a3ccee9ffc5e6e752f96479;hb=6b5e5899d174466552a34a4d8574f0439776240d;hp=9cba36c1004b37ec31717e7c4431e08ede4bf615;hpb=684741765117611b7d666efbdfafd87c6199752c;p=fw%2Faltos diff --git a/src/kernel/ao_sample.c b/src/kernel/ao_sample.c index 9cba36c1..67f20aff 100644 --- a/src/kernel/ao_sample.c +++ b/src/kernel/ao_sample.c @@ -36,9 +36,11 @@ #endif uint16_t ao_sample_tick; /* time of last data */ +#if HAS_BARO pres_t ao_sample_pres; alt_t ao_sample_alt; alt_t ao_sample_height; +#endif #if HAS_ACCEL accel_t ao_sample_accel; #endif @@ -60,8 +62,10 @@ uint8_t ao_sample_data; * Sensor calibration values */ +#if HAS_BARO pres_t ao_ground_pres; /* startup pressure */ alt_t ao_ground_height; /* MSL of ao_ground_pres */ +#endif #if HAS_ACCEL accel_t ao_ground_accel; /* startup acceleration */ @@ -81,7 +85,9 @@ int32_t ao_ground_roll; static uint8_t ao_preflight; /* in preflight mode */ static uint16_t nsamples; +#if HAS_BARO int32_t ao_sample_pres_sum; +#endif #if HAS_ACCEL int32_t ao_sample_accel_sum; #endif @@ -105,7 +111,9 @@ ao_sample_preflight_add(void) #if HAS_ACCEL ao_sample_accel_sum += ao_sample_accel; #endif +#if HAS_BARO ao_sample_pres_sum += ao_sample_pres; +#endif #if HAS_GYRO ao_sample_accel_along_sum += ao_sample_accel_along; ao_sample_accel_across_sum += ao_sample_accel_across; @@ -171,9 +179,11 @@ ao_sample_preflight_set(void) ao_ground_accel = ao_sample_accel_sum >> 9; ao_sample_accel_sum = 0; #endif +#if HAS_BARO ao_ground_pres = ao_sample_pres_sum >> 9; ao_ground_height = pres_to_altitude(ao_ground_pres); ao_sample_pres_sum = 0; +#endif #if HAS_GYRO ao_ground_accel_along = ao_sample_accel_along_sum >> 9; ao_ground_accel_across = ao_sample_accel_across_sum >> 9; @@ -215,7 +225,10 @@ ao_sample_preflight_set(void) ao_quaternion_vectors_to_rotation(&ao_rotation, &up, &orient); #if HAS_FLIGHT_DEBUG if (ao_orient_test) - printf("\n\treset\n"); + printf("\n\treset across %d through %d along %d\n", + (ao_ground_accel_across - ao_config.accel_zero_across), + (ao_ground_accel_through - ao_config.accel_zero_through), + (ao_ground_accel_along - ao_config.accel_zero_along)); #endif ao_sample_compute_orient(); @@ -338,10 +351,7 @@ ao_sample(void) #endif #if HAS_ACCEL - ao_sample_accel = ao_data_accel_cook(ao_data); - if (ao_config.pad_orientation != AO_PAD_ORIENTATION_ANTENNA_UP) - ao_sample_accel = ao_data_accel_invert(ao_sample_accel); - ao_data_set_accel(ao_data, ao_sample_accel); + ao_sample_accel = ao_data_accel(ao_data); #endif #if HAS_GYRO ao_sample_accel_along = ao_data_along(ao_data); @@ -375,8 +385,10 @@ ao_sample_init(void) { ao_config_get(); nsamples = 0; +#if HAS_BARO ao_sample_pres_sum = 0; ao_sample_pres = 0; +#endif #if HAS_ACCEL ao_sample_accel_sum = 0; ao_sample_accel = 0;