summaryrefslogtreecommitdiff
path: root/src/kernel/ao_config.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-08-17 20:59:45 -0700
committerKeith Packard <keithp@keithp.com>2014-08-17 20:59:45 -0700
commitbb7522acf040f41740ecd059e3d5d2480b652420 (patch)
tree9c174cdac4493d3e2ab0fdec0ca065df0d25f2ed /src/kernel/ao_config.c
parent1530c24cc75cdf9ba87c7e153ff28bf7beb4384c (diff)
telegps-v1.0: Provide one log and append to it
Instead of creating per-flight logs, create a single log and append data to it each time TeleGPS is powered on. This avoids potentially running out of log space just because the device is powered off/on. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/kernel/ao_config.c')
-rw-r--r--src/kernel/ao_config.c38
1 files changed, 33 insertions, 5 deletions
diff --git a/src/kernel/ao_config.c b/src/kernel/ao_config.c
index d73a3733..d1b93122 100644
--- a/src/kernel/ao_config.c
+++ b/src/kernel/ao_config.c
@@ -50,13 +50,19 @@ __xdata uint8_t ao_config_mutex;
#error Please define USE_INTERNAL_FLASH
#endif
#endif
+
#ifndef AO_CONFIG_DEFAULT_FLIGHT_LOG_MAX
-#if USE_INTERNAL_FLASH
-#define AO_CONFIG_DEFAULT_FLIGHT_LOG_MAX ao_storage_config
-#else
-#define AO_CONFIG_DEFAULT_FLIGHT_LOG_MAX ((uint32_t) 192 * (uint32_t) 1024)
-#endif
+# if FLIGHT_LOG_APPEND
+# define AO_CONFIG_DEFAULT_FLIGHT_LOG_MAX ao_storage_log_max
+# else
+# if USE_INTERNAL_FLASH
+# define AO_CONFIG_DEFAULT_FLIGHT_LOG_MAX ao_storage_config
+# else
+# define AO_CONFIG_DEFAULT_FLIGHT_LOG_MAX ((uint32_t) 192 * (uint32_t) 1024)
+# endif
+# endif
#endif
+
#ifndef AO_CONFIG_DEFAULT_RADIO_POWER
#define AO_CONFIG_DEFAULT_RADIO_POWER 0x60
#endif
@@ -525,15 +531,36 @@ ao_config_radio_rate_set(void) __reentrant
#endif
#if HAS_LOG
+
void
ao_config_log_show(void) __reentrant
{
printf("Max flight log: %d kB\n", (int16_t) (ao_config.flight_log_max >> 10));
+#if FLIGHT_LOG_APPEND
+ printf("Log fixed: 1\n");
+#endif
+}
+
+#if FLIGHT_LOG_APPEND
+void
+ao_config_log_fix_append(void)
+{
+ _ao_config_edit_start();
+ ao_config.flight_log_max = ao_storage_log_max;
+ _ao_config_edit_finish();
+ ao_mutex_get(&ao_config_mutex);
+ _ao_config_put();
+ ao_config_dirty = 0;
+ ao_mutex_put(&ao_config_mutex);
}
+#endif
void
ao_config_log_set(void) __reentrant
{
+#if FLIGHT_LOG_APPEND
+ printf("Flight log fixed size %d kB\n", ao_storage_log_max >> 10);
+#else
uint16_t block = (uint16_t) (ao_storage_block >> 10);
uint16_t log_max = (uint16_t) (ao_storage_log_max >> 10);
@@ -551,6 +578,7 @@ ao_config_log_set(void) __reentrant
ao_config.flight_log_max = (uint32_t) ao_cmd_lex_i << 10;
_ao_config_edit_finish();
}
+#endif
}
#endif /* HAS_LOG */