diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/ao_config.c | 11 | ||||
| -rw-r--r-- | src/core/ao_config.h | 16 | ||||
| -rw-r--r-- | src/core/ao_log.c | 11 | 
3 files changed, 18 insertions, 20 deletions
diff --git a/src/core/ao_config.c b/src/core/ao_config.c index 5567587b..a30ec64a 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; @@ -466,7 +467,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 +476,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; diff --git a/src/core/ao_config.h b/src/core/ao_config.h index 5e38430e..e101af8e 100644 --- a/src/core/ao_config.h +++ b/src/core/ao_config.h @@ -31,14 +31,9 @@  #include <ao_storage.h>  #define ao_config_setup() 		ao_storage_setup() - -#define ao_config_write(bytes, len)	do {				\ -		ao_storage_erase(ao_storage_config);			\ -		ao_storage_write(ao_storage_config, bytes, len);	\ -	} while (0) - -#define ao_config_read(bytes, len)	ao_storage_read(ao_storage_config, bytes, len) - +#define ao_config_erase()		ao_storage_erase(ao_storage_config) +#define ao_config_write(pos,bytes, len)	ao_storage_write(ao_storage_config+(pos), bytes, len) +#define ao_config_read(pos,bytes, len)	ao_storage_read(ao_storage_config+(pos), bytes, len)  #define ao_config_flush()		ao_storage_flush()  #endif @@ -48,8 +43,9 @@  #include <ao_eeprom.h>  #define ao_config_setup() -#define ao_config_write(bytes, len)	ao_eeprom_write(0, bytes, len) -#define ao_config_read(bytes, len)	ao_eeprom_read(0, bytes, len) +#define ao_config_erase() +#define ao_config_write(pos,bytes, len)	ao_eeprom_write(pos, bytes, len) +#define ao_config_read(pos,bytes, len)	ao_eeprom_read(pos, bytes, len)  #define ao_config_flush()  #endif diff --git a/src/core/ao_log.c b/src/core/ao_log.c index 8bcb7707..1a1f5ff6 100644 --- a/src/core/ao_log.c +++ b/src/core/ao_log.c @@ -17,6 +17,7 @@  #include "ao.h"  #include <ao_log.h> +#include <ao_config.h>  __pdata uint32_t ao_log_current_pos;  __pdata uint32_t ao_log_end_pos; @@ -48,7 +49,7 @@ static __xdata struct ao_log_erase erase;  static uint32_t  ao_log_erase_pos(uint8_t i)  { -	return i * sizeof (struct ao_log_erase) + AO_STORAGE_ERASE_LOG; +	return i * sizeof (struct ao_log_erase);  }  void @@ -56,14 +57,14 @@ ao_log_write_erase(uint8_t pos)  {  	erase.unused = 0x00;  	erase.flight = ao_flight_number; -	ao_storage_write(ao_log_erase_pos(pos),  &erase, sizeof (erase)); -	ao_storage_flush(); +	ao_config_write(ao_log_erase_pos(pos),  &erase, sizeof (erase)); +	ao_config_flush();  }  static void  ao_log_read_erase(uint8_t pos)  { -	ao_storage_read(ao_log_erase_pos(pos), &erase, sizeof (erase)); +	ao_config_read(ao_log_erase_pos(pos), &erase, sizeof (erase));  } @@ -87,7 +88,7 @@ ao_log_erase_mark(void)  static uint8_t  ao_log_slots()  { -	return (uint8_t) (ao_storage_config / ao_config.flight_log_max); +	return (uint8_t) (ao_storage_log_max / ao_config.flight_log_max);  }  uint32_t  | 
