/** * @file furi-hal-power.h * Power HAL API */ #pragma once #include #include #include #ifdef __cplusplus extern "C" { #endif /** Power IC type */ typedef enum { FuriHalPowerICCharger, FuriHalPowerICFuelGauge, } FuriHalPowerIC; /** Initialize drivers */ void furi_hal_power_init(); /** Get current insomnia level * * @return insomnia level: 0 - no insomnia, >0 - insomnia, bearer count. */ uint16_t furi_hal_power_insomnia_level(); /** Enter insomnia mode Prevents device from going to sleep * @warning Internally increases insomnia level Must be paired with * furi_hal_power_insomnia_exit */ void furi_hal_power_insomnia_enter(); /** Exit insomnia mode Allow device to go to sleep * @warning Internally decreases insomnia level. Must be paired with * furi_hal_power_insomnia_enter */ void furi_hal_power_insomnia_exit(); /** Check if sleep availble * * @return true if available */ bool furi_hal_power_sleep_available(); /** Check if deep sleep availble * * @return true if available */ bool furi_hal_power_deep_sleep_available(); /** Go to sleep */ void furi_hal_power_sleep(); /** Get predicted remaining battery capacity in percents * * @return remaining battery capacity in percents */ uint8_t furi_hal_power_get_pct(); /** Get battery health state in percents * * @return health in percents */ uint8_t furi_hal_power_get_bat_health_pct(); /** Get charging status * * @return true if charging */ bool furi_hal_power_is_charging(); /** Poweroff device */ void furi_hal_power_off(); /** Reset device */ void furi_hal_power_reset(); /** OTG enable */ void furi_hal_power_enable_otg(); /** OTG disable */ void furi_hal_power_disable_otg(); /** Get OTG status * * @return true if enabled */ bool furi_hal_power_is_otg_enabled(); /** Get remaining battery battery capacity in mAh * * @return capacity in mAh */ uint32_t furi_hal_power_get_battery_remaining_capacity(); /** Get full charge battery capacity in mAh * * @return capacity in mAh */ uint32_t furi_hal_power_get_battery_full_capacity(); /** Get battery voltage in V * * @param ic FuriHalPowerIc to get measurment * * @return voltage in V */ float furi_hal_power_get_battery_voltage(FuriHalPowerIC ic); /** Get battery current in A * * @param ic FuriHalPowerIc to get measurment * * @return current in A */ float furi_hal_power_get_battery_current(FuriHalPowerIC ic); /** Get temperature in C * * @param ic FuriHalPowerIc to get measurment * * @return temperature in C */ float furi_hal_power_get_battery_temperature(FuriHalPowerIC ic); /** Get System voltage in V * * @return voltage in V */ float furi_hal_power_get_system_voltage(); /** Get USB voltage in V * * @return voltage in V */ float furi_hal_power_get_usb_voltage(); /** Get power system component state */ void furi_hal_power_dump_state(); /** Enable 3.3v on external gpio and sd card */ void furi_hal_power_enable_external_3_3v(); /** Disable 3.3v on external gpio and sd card */ void furi_hal_power_disable_external_3_3v(); /** Enter supress charge mode. * * Use this function when your application need clean power supply. */ void furi_hal_power_suppress_charge_enter(); /** Exit supress charge mode */ void furi_hal_power_suppress_charge_exit(); #ifdef __cplusplus } #endif