summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-04-01 01:58:37 -0700
committerKeith Packard <keithp@keithp.com>2013-04-01 01:58:37 -0700
commita764bf06d0975cbf1620b079351c7437053ea1a8 (patch)
tree504e146cd2546e4a5292fc88764312ef6943e604
parentc2de64b10894b366398a8b37ebd2305d9be46d46 (diff)
altos: Flush the on-board mega log after every sample interval.
SPI flash parts don't need flushing, but the SD card does. Make sure the SD card contents are sane after every logging interval has passed by flushing all dirty blocks to the device. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--src/core/ao_log.h3
-rw-r--r--src/core/ao_log_mega.c2
-rw-r--r--src/drivers/ao_log_fat.c6
3 files changed, 11 insertions, 0 deletions
diff --git a/src/core/ao_log.h b/src/core/ao_log.h
index 036d6f2d..cac78771 100644
--- a/src/core/ao_log.h
+++ b/src/core/ao_log.h
@@ -268,4 +268,7 @@ ao_log_data(__xdata struct ao_log_record *log) __reentrant;
uint8_t
ao_log_mega(__xdata struct ao_log_mega *log) __reentrant;
+void
+ao_log_flush(void);
+
#endif /* _AO_LOG_H_ */
diff --git a/src/core/ao_log_mega.c b/src/core/ao_log_mega.c
index e03687ad..ba3f7bfc 100644
--- a/src/core/ao_log_mega.c
+++ b/src/core/ao_log_mega.c
@@ -171,6 +171,8 @@ ao_log(void)
}
#endif
+ ao_log_flush();
+
/* Wait for a while */
ao_delay(AO_MS_TO_TICKS(100));
diff --git a/src/drivers/ao_log_fat.c b/src/drivers/ao_log_fat.c
index 2741555f..6b433b99 100644
--- a/src/drivers/ao_log_fat.c
+++ b/src/drivers/ao_log_fat.c
@@ -83,3 +83,9 @@ ao_log_mega(struct ao_log_mega *log)
ao_mutex_put(&log_mutex);
return wrote;
}
+
+void
+ao_log_flush(void)
+{
+ ao_fat_sync();
+}