Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / src / ao_config.c
index a3e0a64f3451e2d76bd01c1ef58767b2f2c8b29b..bbee3b443e6a0a7e17bfb9805af311dfba6e3982 100644 (file)
@@ -209,10 +209,10 @@ ao_config_accel_calibrate_auto(char *orientation) __reentrant
        puts("Calibrating..."); flush();
        i = ACCEL_CALIBRATE_SAMPLES;
        accel_total = 0;
-       cal_adc_ring = ao_adc_head;
+       cal_adc_ring = ao_flight_adc;
        while (i) {
-               ao_sleep(&ao_adc_ring);
-               while (i && cal_adc_ring != ao_adc_head) {
+               ao_sleep(DATA_TO_XDATA(&ao_flight_adc));
+               while (i && cal_adc_ring != ao_flight_adc) {
                        accel_total += (int32_t) ao_adc_ring[cal_adc_ring].accel;
                        cal_adc_ring = ao_adc_ring_next(cal_adc_ring);
                        i--;
@@ -305,17 +305,22 @@ ao_config_log_show(void) __reentrant
 void
 ao_config_log_set(void) __reentrant
 {
+       uint16_t        block = (uint16_t) (ao_storage_block >> 10);
+       uint16_t        config = (uint16_t) (ao_storage_config >> 10);
+
        ao_cmd_decimal();
        if (ao_cmd_status != ao_cmd_success)
                return;
        if (ao_log_present())
                printf("Storage must be empty before changing log size\n");
-       else if (ao_storage_block > 1024 && (ao_cmd_lex_u32 & ((ao_storage_block >> 10) - 1)))
-               printf("Flight log size must be multiple of %ld\n", ao_storage_block >> 10);
+       else if (block > 1024 && (ao_cmd_lex_i & (block - 1)))
+               printf("Flight log size must be multiple of %d kB\n", block);
+       else if (ao_cmd_lex_i > config)
+               printf("Flight log max %d kB\n", config);
        else {
                ao_mutex_get(&ao_config_mutex);
                _ao_config_get();
-               ao_config.flight_log_max = ao_cmd_lex_u32 << 10;
+               ao_config.flight_log_max = (uint32_t) ao_cmd_lex_i << 10;
                ao_config_dirty = 1;
                ao_mutex_put(&ao_config_mutex);
                ao_config_log_show();