// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include #include #include #include #include #include namespace sevm::battery { class BatteryController : public hal::battery::AbstractBatteryCharger::BatteryChargerEvents, public std::enable_shared_from_this { public: explicit BatteryController(sys::Service *service); void onBrownout() final; void onStatusChanged() final; void init(xQueueHandle queueBatteryHandle, xQueueHandle queueChargerDetect); void deinit(); void handleChargerNotification(std::uint8_t notification); void handleBatteryNotification(std::uint8_t notification); private: sys::Service *service = nullptr; std::shared_ptr charger; BatteryBrownoutDetector brownoutDetector; }; }; // namespace sevm::battery