summaryrefslogtreecommitdiff
path: root/src/drivers/ao_ms5607.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/ao_ms5607.c')
-rw-r--r--src/drivers/ao_ms5607.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/drivers/ao_ms5607.c b/src/drivers/ao_ms5607.c
index 261df67f..914e0c1b 100644
--- a/src/drivers/ao_ms5607.c
+++ b/src/drivers/ao_ms5607.c
@@ -191,17 +191,23 @@ ao_ms5607_sample(__xdata struct ao_ms5607_sample *sample)
#include "ao_ms5607_convert.c"
#endif
-#if HAS_TASK
+#ifndef HAS_MS5607_TASK
+#define HAS_MS5607_TASK HAS_TASK
+#endif
+
__xdata struct ao_ms5607_sample ao_ms5607_current;
+#if HAS_MS5607_TASK
static void
ao_ms5607(void)
{
+ struct ao_ms5607_sample sample;
ao_ms5607_setup();
for (;;)
{
- ao_ms5607_sample(&ao_ms5607_current);
+ ao_ms5607_sample(&sample);
ao_arch_block_interrupts();
+ ao_ms5607_current = sample;
AO_DATA_PRESENT(AO_DATA_MS5607);
AO_DATA_WAIT();
ao_arch_release_interrupts();
@@ -209,7 +215,9 @@ ao_ms5607(void)
}
__xdata struct ao_task ao_ms5607_task;
+#endif
+#if HAS_TASK
void
ao_ms5607_info(void)
{
@@ -248,6 +256,8 @@ ao_ms5607_init(void)
#if HAS_TASK
ao_cmd_register(&ao_ms5607_cmds[0]);
+#endif
+#if HAS_MS5607_TASK
ao_add_task(&ao_ms5607_task, ao_ms5607, "ms5607");
#endif