aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Phillips <david@yeah.nah.nz>2021-02-14 00:01:13 +1300
committerDavid Phillips <david@yeah.nah.nz>2021-02-14 00:05:23 +1300
commit5d40c94a0fa181d08a4afc5e8e9fd1b4c132ecab (patch)
treea6e61e2edc44e27f2a4dd2662527ad35ae661bce
parent06c7bb3ab139320fcc6c4f1e94b8a58a872c7e14 (diff)
downloadaltimeter-5d40c94a0fa181d08a4afc5e8e9fd1b4c132ecab.tar.xz
Implement barometer reset/init
-rw-r--r--barometer.h1
-rw-r--r--barometer_sim.c11
-rw-r--r--data_manager.c1
-rw-r--r--test_data_manager.c12
4 files changed, 22 insertions, 3 deletions
diff --git a/barometer.h b/barometer.h
index 8277665..8bb51f7 100644
--- a/barometer.h
+++ b/barometer.h
@@ -1,3 +1,4 @@
#pragma once
+void barometer_init(void);
float barometer_read(void);
diff --git a/barometer_sim.c b/barometer_sim.c
index f2e9eac..c695590 100644
--- a/barometer_sim.c
+++ b/barometer_sim.c
@@ -13,10 +13,15 @@ static const float pressures[] = {
1018.83,
1018.82,
};
+static int cursor = 0;
+
+void barometer_init(void)
+{
+ cursor = 0;
+}
float barometer_read(void)
{
- static int i = 0;
- i %= sizeof(pressures)/sizeof(pressures[0]);
- return pressures[i++];
+ cursor %= sizeof(pressures)/sizeof(pressures[0]);
+ return pressures[cursor++];
}
diff --git a/data_manager.c b/data_manager.c
index 76a70c7..17abdda 100644
--- a/data_manager.c
+++ b/data_manager.c
@@ -15,6 +15,7 @@ static float pressure_to_metres_asl(float real, float setting)
void data_manager_init(struct data_ctx *ctx)
{
ctx->setting = 1013.25;
+ barometer_init();
data_manager_tick(ctx);
}
diff --git a/test_data_manager.c b/test_data_manager.c
index 4673cab..56a9f9e 100644
--- a/test_data_manager.c
+++ b/test_data_manager.c
@@ -17,3 +17,15 @@ RUNNER_DECLARE_TEST(test_data_manager_first_readings)
data_manager_tick(&ctx);
TEST_ASSERT_FLOAT_WITHIN(0.001, 1019.45, ctx.pressure);
}
+
+RUNNER_DECLARE_TEST(test_data_manager_reinit)
+{
+ struct data_ctx ctx;
+ /* init 1 */
+ data_manager_init(&ctx);
+ TEST_ASSERT_FLOAT_WITHIN(0.001, 1019.5, ctx.pressure);
+
+ /* check re-init */
+ data_manager_init(&ctx);
+ TEST_ASSERT_FLOAT_WITHIN(0.001, 1019.5, ctx.pressure);
+}