[FL-1184] led indication for charging (#425)

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
its your bedtime 2021-04-27 19:31:34 +03:00 committed by GitHub
parent 3c990e2f50
commit 26c4b20ac2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -23,8 +23,8 @@ struct Power {
View* info_view; View* info_view;
View* off_view; View* off_view;
Icon* usb_icon; // Icon* usb_icon;
ViewPort* usb_view_port; // ViewPort* usb_view_port;
Icon* battery_icon; Icon* battery_icon;
ViewPort* battery_view_port; ViewPort* battery_view_port;
@ -36,11 +36,11 @@ struct Power {
MenuItem* menu; MenuItem* menu;
}; };
void power_draw_usb_callback(Canvas* canvas, void* context) { // void power_draw_usb_callback(Canvas* canvas, void* context) {
furi_assert(context); // furi_assert(context);
Power* power = context; // Power* power = context;
canvas_draw_icon(canvas, 0, 0, power->usb_icon); // canvas_draw_icon(canvas, 0, 0, power->usb_icon);
} // }
void power_draw_battery_callback(Canvas* canvas, void* context) { void power_draw_battery_callback(Canvas* canvas, void* context) {
furi_assert(context); furi_assert(context);
@ -133,10 +133,10 @@ Power* power_alloc() {
view_dispatcher_add_view( view_dispatcher_add_view(
power->view_dispatcher, PowerViewDialog, dialog_get_view(power->dialog)); power->view_dispatcher, PowerViewDialog, dialog_get_view(power->dialog));
power->usb_icon = assets_icons_get(I_USBConnected_15x8); // power->usb_icon = assets_icons_get(I_USBConnected_15x8);
power->usb_view_port = view_port_alloc(); // power->usb_view_port = view_port_alloc();
view_port_set_width(power->usb_view_port, icon_get_width(power->usb_icon)); // view_port_set_width(power->usb_view_port, icon_get_width(power->usb_icon));
view_port_draw_callback_set(power->usb_view_port, power_draw_usb_callback, power); // view_port_draw_callback_set(power->usb_view_port, power_draw_usb_callback, power);
power->battery_icon = assets_icons_get(I_Battery_26x8); power->battery_icon = assets_icons_get(I_Battery_26x8);
power->battery_view_port = view_port_alloc(); power->battery_view_port = view_port_alloc();
@ -151,12 +151,29 @@ void power_free(Power* power) {
free(power); free(power);
} }
static void power_charging_indication_handler() {
if(api_hal_power_is_charging()) {
if(api_hal_power_get_pct() == 100) {
api_hal_light_set(LightRed, 0x00);
api_hal_light_set(LightGreen, 0xFF);
} else {
api_hal_light_set(LightGreen, 0x00);
api_hal_light_set(LightRed, 0xFF);
}
}
if(!api_hal_power_is_charging()) {
api_hal_light_set(LightRed, 0x00);
api_hal_light_set(LightGreen, 0x00);
}
}
int32_t power_task(void* p) { int32_t power_task(void* p) {
(void)p; (void)p;
Power* power = power_alloc(); Power* power = power_alloc();
Gui* gui = furi_record_open("gui"); Gui* gui = furi_record_open("gui");
gui_add_view_port(gui, power->usb_view_port, GuiLayerStatusBarLeft); //gui_add_view_port(gui, power->usb_view_port, GuiLayerStatusBarLeft);
gui_add_view_port(gui, power->battery_view_port, GuiLayerStatusBarRight); gui_add_view_port(gui, power->battery_view_port, GuiLayerStatusBarRight);
view_dispatcher_attach_to_gui(power->view_dispatcher, gui, ViewDispatcherTypeFullscreen); view_dispatcher_attach_to_gui(power->view_dispatcher, gui, ViewDispatcherTypeFullscreen);
@ -214,8 +231,10 @@ int32_t power_task(void* p) {
return true; return true;
}); });
power_charging_indication_handler();
view_port_update(power->battery_view_port); view_port_update(power->battery_view_port);
view_port_enabled_set(power->usb_view_port, api_hal_power_is_charging()); //view_port_enabled_set(power->usb_view_port, api_hal_power_is_charging());
osDelay(1024); osDelay(1024);
} }