diff options
author | David Phillips <david@yeah.nah.nz> | 2021-02-14 00:01:13 +1300 |
---|---|---|
committer | David Phillips <david@yeah.nah.nz> | 2021-02-14 00:05:23 +1300 |
commit | 5d40c94a0fa181d08a4afc5e8e9fd1b4c132ecab (patch) | |
tree | a6e61e2edc44e27f2a4dd2662527ad35ae661bce | |
parent | 06c7bb3ab139320fcc6c4f1e94b8a58a872c7e14 (diff) | |
download | altimeter-5d40c94a0fa181d08a4afc5e8e9fd1b4c132ecab.tar.xz |
Implement barometer reset/init
-rw-r--r-- | barometer.h | 1 | ||||
-rw-r--r-- | barometer_sim.c | 11 | ||||
-rw-r--r-- | data_manager.c | 1 | ||||
-rw-r--r-- | test_data_manager.c | 12 |
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); +} |