From 5d40c94a0fa181d08a4afc5e8e9fd1b4c132ecab Mon Sep 17 00:00:00 2001 From: David Phillips Date: Sun, 14 Feb 2021 00:01:13 +1300 Subject: Implement barometer reset/init --- barometer.h | 1 + barometer_sim.c | 11 ++++++++--- data_manager.c | 1 + 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); +} -- cgit v1.1