mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-11 06:09:08 -07:00
- Merge OFW power service refactor stuff - Move charge cap variable to service - Mirror settings usage of desktop and bt services for power settings - Proper power settings struct, no more weird settings pubsub - Load power settings on SD insert - Set shutdown on idle time in main power settings menu, not in submenu - Update battery icon visibility in power tick event - Remove unused power functions (power_trigger_ui_update(), power_set_battery_icon_enabled())
107 lines
2.6 KiB
C
107 lines
2.6 KiB
C
#include "power_i.h"
|
|
|
|
void power_off(Power* power) {
|
|
furi_check(power);
|
|
|
|
PowerMessage msg = {
|
|
.type = PowerMessageTypeShutdown,
|
|
};
|
|
|
|
furi_check(
|
|
furi_message_queue_put(power->message_queue, &msg, FuriWaitForever) == FuriStatusOk);
|
|
}
|
|
|
|
void power_reboot(Power* power, PowerBootMode mode) {
|
|
PowerMessage msg = {
|
|
.type = PowerMessageTypeReboot,
|
|
.boot_mode = mode,
|
|
};
|
|
|
|
furi_check(
|
|
furi_message_queue_put(power->message_queue, &msg, FuriWaitForever) == FuriStatusOk);
|
|
}
|
|
|
|
void power_get_info(Power* power, PowerInfo* info) {
|
|
furi_check(power);
|
|
furi_check(info);
|
|
|
|
PowerMessage msg = {
|
|
.type = PowerMessageTypeGetInfo,
|
|
.power_info = info,
|
|
.lock = api_lock_alloc_locked(),
|
|
};
|
|
|
|
furi_check(
|
|
furi_message_queue_put(power->message_queue, &msg, FuriWaitForever) == FuriStatusOk);
|
|
api_lock_wait_unlock_and_free(msg.lock);
|
|
}
|
|
|
|
FuriPubSub* power_get_pubsub(Power* power) {
|
|
furi_check(power);
|
|
return power->event_pubsub;
|
|
}
|
|
|
|
bool power_is_battery_healthy(Power* power) {
|
|
furi_check(power);
|
|
|
|
bool ret = false;
|
|
|
|
PowerMessage msg = {
|
|
.type = PowerMessageTypeIsBatteryHealthy,
|
|
.lock = api_lock_alloc_locked(),
|
|
.bool_param = &ret,
|
|
};
|
|
|
|
furi_check(
|
|
furi_message_queue_put(power->message_queue, &msg, FuriWaitForever) == FuriStatusOk);
|
|
api_lock_wait_unlock_and_free(msg.lock);
|
|
|
|
return ret;
|
|
}
|
|
|
|
void power_enable_low_battery_level_notification(Power* power, bool enable) {
|
|
furi_check(power);
|
|
|
|
PowerMessage msg = {
|
|
.type = PowerMessageTypeShowBatteryLowWarning,
|
|
.bool_param = &enable,
|
|
};
|
|
|
|
furi_check(
|
|
furi_message_queue_put(power->message_queue, &msg, FuriWaitForever) == FuriStatusOk);
|
|
}
|
|
|
|
/*
|
|
* Private API for the Settings app
|
|
*/
|
|
|
|
void power_get_settings(Power* power, PowerSettings* settings) {
|
|
furi_assert(power);
|
|
furi_assert(settings);
|
|
|
|
PowerMessage msg = {
|
|
.type = PowerMessageTypeGetSettings,
|
|
.settings = settings,
|
|
.lock = api_lock_alloc_locked(),
|
|
};
|
|
|
|
furi_check(
|
|
furi_message_queue_put(power->message_queue, &msg, FuriWaitForever) == FuriStatusOk);
|
|
api_lock_wait_unlock_and_free(msg.lock);
|
|
}
|
|
|
|
void power_set_settings(Power* power, const PowerSettings* settings) {
|
|
furi_assert(power);
|
|
furi_assert(settings);
|
|
|
|
PowerMessage msg = {
|
|
.type = PowerMessageTypeSetSettings,
|
|
.csettings = settings,
|
|
.lock = api_lock_alloc_locked(),
|
|
};
|
|
|
|
furi_check(
|
|
furi_message_queue_put(power->message_queue, &msg, FuriWaitForever) == FuriStatusOk);
|
|
api_lock_wait_unlock_and_free(msg.lock);
|
|
}
|