From 3a0c42f9240eedfbc6a1e94ad3a59c52664fb5b5 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Mon, 28 Aug 2023 13:26:53 +1000 Subject: Move battery measurement to its own class --- src/battery/include/battery.hpp | 44 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/battery/include/battery.hpp (limited to 'src/battery/include') diff --git a/src/battery/include/battery.hpp b/src/battery/include/battery.hpp new file mode 100644 index 00000000..dcb9b4ea --- /dev/null +++ b/src/battery/include/battery.hpp @@ -0,0 +1,44 @@ +/* + * Copyright 2023 jacqueline + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#pragma once + +#include + +#include "freertos/FreeRTOS.h" +#include "freertos/timers.h" + +#include "adc.hpp" +#include "samd.hpp" + +namespace battery { + +class Battery { + public: + Battery(drivers::Samd* samd, drivers::AdcBattery* adc); + ~Battery(); + + auto Update() -> void; + + struct BatteryState { + uint_fast8_t percent; + bool is_charging; + }; + + auto State() -> std::optional; + + private: + auto EmitEvent() -> void; + + drivers::Samd* samd_; + drivers::AdcBattery* adc_; + + TimerHandle_t timer_; + std::mutex state_mutex_; + std::optional state_; +}; + +} // namespace battery -- cgit v1.2.3