From 17de4f2523a976741f941ffd8a60419d53b8b64f Mon Sep 17 00:00:00 2001 From: Tobias Schramm Date: Tue, 9 Feb 2021 14:34:35 +0100 Subject: [PATCH] Use battery only if specified in devicetree --- src/battery.c | 12 +++++++++--- src/battery.h | 12 +++++++++++- src/main.c | 4 ++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/battery.c b/src/battery.c index f2a1638..10ba7f8 100644 --- a/src/battery.c +++ b/src/battery.c @@ -4,11 +4,13 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "battery.h" + +#ifdef BATTERY_SUPPORTED + #include #include -#include "battery.h" - #define VBATT DT_PATH(vbatt) #define BATTERY_ADC_GAIN ADC_GAIN_1_6 #define BATTERY DT_PATH(battery) @@ -74,6 +76,9 @@ uint16_t battery_get_voltage_mv() { return battery_adc_config.value_mv; } +#endif + +#ifdef BATTERY_SOC_SUPPORTED const uint32_t battery_soc_voltage_mv_pairs[] = DT_PROP(BATTERY, soc_voltage_mv); #if DT_PROP_LEN(BATTERY, soc_voltage_mv) % 2 != 0 @@ -113,4 +118,5 @@ uint32_t battery_voltage_mv_to_soc(uint16_t batt_mv) { } return last_soc; -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/src/battery.h b/src/battery.h index be66fc6..78bbbe9 100644 --- a/src/battery.h +++ b/src/battery.h @@ -1,8 +1,18 @@ #pragma once +#include #include +// Generic voltage divider based battery support +#if DT_NODE_HAS_STATUS(DT_PATH(vbatt), okay) +#define BATTERY_SUPPORTED int battery_init(); int battery_update(); uint16_t battery_get_voltage_mv(); -uint32_t battery_voltage_mv_to_soc(uint16_t batt_mv); \ No newline at end of file +#endif + +// SOC estimation support +#if DT_NODE_HAS_STATUS(DT_PATH(battery), okay) +#define BATTERY_SOC_SUPPORTED +uint32_t battery_voltage_mv_to_soc(uint16_t batt_mv); +#endif \ No newline at end of file diff --git a/src/main.c b/src/main.c index 81f7a28..d15dcfc 100644 --- a/src/main.c +++ b/src/main.c @@ -36,6 +36,7 @@ void main(void) platform_display_draw_string(0, 0, "Hello World!"); platform_display_draw_string(0, DISPLAY_LINE_LAST_CONTACTS_START, "Seen identifiers:"); +#ifdef BATTERY_SUPPORTED err = battery_init(); if (err) { printk("Failed to initialize battery gauging: %d\n", err); @@ -50,6 +51,7 @@ void main(void) platform_display_draw_string(0, DISPLAY_LINE_BATTERY_VOLTAGE, "Battery voltage:"); platform_display_draw_string(0, DISPLAY_LINE_BATTERY_VOLTAGE + 2, "Battery SOC:"); +#endif // first init everything // Use custom randomization as the mbdet_tls context initialization messes with the Zeyhr BLE stack. @@ -98,8 +100,10 @@ void main(void) snprintf(tmpstr, sizeof(tmpstr), "%04u mV", battery_get_voltage_mv()); platform_display_draw_string(0, DISPLAY_LINE_BATTERY_VOLTAGE + 1, tmpstr); +#ifdef BATTERY_SOC_SUPPORTED snprintf(tmpstr, sizeof(tmpstr), "% 3u%%", battery_voltage_mv_to_soc(battery_get_voltage_mv())); platform_display_draw_string(0, DISPLAY_LINE_BATTERY_VOLTAGE + 3, tmpstr); +#endif } do_covid(); do_gatt();