[FL-1905] Fix power off notification (#748)

* view dispatcher: add set view front API
* power: add power off notification
* Gui: rename ViewPort `send_to` API.
* Makefile: add blackmagick support

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
gornekich
2021-10-06 18:41:22 +03:00
committed by GitHub
parent c8b36dd406
commit 5232d5daba
12 changed files with 66 additions and 34 deletions

9
applications/power/power_service/power.c Normal file → Executable file
View File

@@ -41,6 +41,10 @@ Power* power_alloc() {
// Gui
power->view_dispatcher = view_dispatcher_alloc();
power->popup = popup_alloc();
popup_set_header(
power->popup, "Disconnect USB for safe\nshutdown", 64, 26, AlignCenter, AlignTop);
view_dispatcher_add_view(power->view_dispatcher, PowerViewPopup, popup_get_view(power->popup));
power->power_off = power_off_alloc();
view_dispatcher_add_view(
power->view_dispatcher, PowerViewOff, power_off_get_view(power->power_off));
@@ -63,6 +67,8 @@ void power_free(Power* power) {
// Gui
view_dispatcher_remove_view(power->view_dispatcher, PowerViewOff);
power_off_free(power->power_off);
view_dispatcher_remove_view(power->view_dispatcher, PowerViewPopup);
popup_free(power->popup);
view_port_free(power->battery_view_port);
// State
@@ -124,6 +130,7 @@ static void power_check_low_battery(Power* power) {
// Check battery charge and vbus voltage
if((power->info.charge == 0) && (power->info.voltage_vbus < 4.0f)) {
if(!power->battery_low) {
view_dispatcher_send_to_front(power->view_dispatcher);
view_dispatcher_switch_to_view(power->view_dispatcher, PowerViewOff);
}
power->battery_low = true;
@@ -139,7 +146,7 @@ static void power_check_low_battery(Power* power) {
if(power->power_off_timeout) {
power_off_set_time_left(power->power_off, power->power_off_timeout--);
} else {
power_off();
power_off(power);
}
}
}