X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fcore%2Fao_config.c;h=4a1c58b90afbd17ff0965da02ec8ca23b88e82dc;hb=c8b27410e45cc3d80ad4b896bffe70e9aec5e3aa;hp=5567587be382eca79a83155f361e2c80ac5c5340;hpb=83437b2fe304599e22d0a98b5410808bcb67dc97;p=fw%2Faltos diff --git a/src/core/ao_config.c b/src/core/ao_config.c index 5567587b..4a1c58b9 100644 --- a/src/core/ao_config.c +++ b/src/core/ao_config.c @@ -60,7 +60,8 @@ static void _ao_config_put(void) { ao_config_setup(); - ao_config_write(&ao_config, sizeof (ao_config)); + ao_config_erase(); + ao_config_write(0, &ao_config, sizeof (ao_config)); #if HAS_FLIGHT ao_log_write_erase(0); #endif @@ -97,7 +98,7 @@ _ao_config_get(void) * need before calling ao_storage_read here */ ao_config_setup(); - ao_config_read(&ao_config, sizeof (ao_config)); + ao_config_read(0, &ao_config, sizeof (ao_config)); #endif if (ao_config.major != AO_CONFIG_MAJOR) { ao_config.major = AO_CONFIG_MAJOR; @@ -352,9 +353,9 @@ ao_config_accel_calibrate_set(void) __reentrant { int16_t up, down; #if HAS_GYRO - int16_t accel_along_up, accel_along_down; - int16_t accel_across_up, accel_across_down; - int16_t accel_through_up, accel_through_down; + int16_t accel_along_up = 0, accel_along_down = 0; + int16_t accel_across_up = 0, accel_across_down = 0; + int16_t accel_through_up = 0, accel_through_down = 0; #endif ao_cmd_decimal(); @@ -389,9 +390,11 @@ ao_config_accel_calibrate_set(void) __reentrant ao_config.accel_plus_g = up; ao_config.accel_minus_g = down; #if HAS_GYRO - ao_config.accel_zero_along = (accel_along_up + accel_along_down) / 2; - ao_config.accel_zero_across = (accel_across_up + accel_across_down) / 2; - ao_config.accel_zero_through = (accel_through_up + accel_through_down) / 2; + if (ao_cmd_lex_i == 0) { + ao_config.accel_zero_along = (accel_along_up + accel_along_down) / 2; + ao_config.accel_zero_across = (accel_across_up + accel_across_down) / 2; + ao_config.accel_zero_through = (accel_through_up + accel_through_down) / 2; + } #endif _ao_config_edit_finish(); } @@ -466,7 +469,7 @@ 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); + uint16_t log_max = (uint16_t) (ao_storage_log_max >> 10); ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) @@ -475,8 +478,8 @@ ao_config_log_set(void) __reentrant printf("Storage must be empty before changing log size\n"); 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 if (ao_cmd_lex_i > log_max) + printf("Flight log max %d kB\n", log_max); else { _ao_config_edit_start(); ao_config.flight_log_max = (uint32_t) ao_cmd_lex_i << 10;