[FL-1184] led indication for charging (#425)
Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
		
							parent
							
								
									3c990e2f50
								
							
						
					
					
						commit
						26c4b20ac2
					
				@ -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);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user