diff options
| author | Keith Packard <keithp@keithp.com> | 2013-11-12 16:06:59 +0900 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2013-11-12 16:27:31 +0900 | 
| commit | 9c53ad6f8222878a26efecebd3bb1d1fe054a4b6 (patch) | |
| tree | 0308a8980a3a7cdde94254b47bfa03bf5acc7a03 /src | |
| parent | 83437b2fe304599e22d0a98b5410808bcb67dc97 (diff) | |
altos: Move TeleMetrum v2.0 to using internal eeprom for config
This leaves the whole 8MB of flash for flight storage
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
| -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 | ||||
| -rw-r--r-- | src/telemetrum-v2.0/Makefile | 1 | ||||
| -rw-r--r-- | src/telemetrum-v2.0/ao_pins.h | 3 | ||||
| -rw-r--r-- | src/telemetrum-v2.0/ao_telemetrum.c | 2 | 
6 files changed, 24 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 diff --git a/src/telemetrum-v2.0/Makefile b/src/telemetrum-v2.0/Makefile index be72d493..a5370224 100644 --- a/src/telemetrum-v2.0/Makefile +++ b/src/telemetrum-v2.0/Makefile @@ -70,6 +70,7 @@ ALTOS_SRC = \  	ao_m25.c \  	ao_usb_stm.c \  	ao_exti_stm.c \ +	ao_eeprom_stm.c \  	ao_report.c \  	ao_convert_pa.c \  	ao_log.c \ diff --git a/src/telemetrum-v2.0/ao_pins.h b/src/telemetrum-v2.0/ao_pins.h index a7236b80..02f0f5e3 100644 --- a/src/telemetrum-v2.0/ao_pins.h +++ b/src/telemetrum-v2.0/ao_pins.h @@ -59,8 +59,11 @@  #define SERIAL_3_PC10_PC11	0  #define SERIAL_3_PD8_PD9	0 +#define AO_CONFIG_DEFAULT_FLIGHT_LOG_MAX	(512 * 1024)  #define HAS_EEPROM		1  #define USE_INTERNAL_FLASH	0 +#define USE_EEPROM_CONFIG	1 +#define USE_STORAGE_CONFIG	0  #define HAS_USB			1  #define HAS_BEEP		1  #define BEEPER_CHANNEL		4 diff --git a/src/telemetrum-v2.0/ao_telemetrum.c b/src/telemetrum-v2.0/ao_telemetrum.c index d79aba54..23556c6c 100644 --- a/src/telemetrum-v2.0/ao_telemetrum.c +++ b/src/telemetrum-v2.0/ao_telemetrum.c @@ -62,6 +62,8 @@ main(void)  	ao_mma655x_init();  #endif +	ao_eeprom_init(); +  	ao_storage_init();  	ao_flight_init(); | 
