#pragma once #include "power.h" #include #include #include #include #include "views/power_off.h" #include "views/power_unplug_usb.h" #include typedef enum { PowerStateNotCharging, PowerStateCharging, PowerStateCharged, } PowerState; struct Power { ViewHolder* view_holder; FuriPubSub* event_pubsub; FuriEventLoop* event_loop; FuriMessageQueue* message_queue; ViewPort* battery_view_port; PowerOff* view_power_off; PowerUnplugUsb* view_power_unplug_usb; PowerEvent event; PowerState state; PowerInfo info; bool battery_low; bool show_battery_low_warning; bool is_otg_requested; uint8_t battery_level; uint8_t power_off_timeout; PowerSettings settings; FuriTimer* auto_poweroff_timer; bool app_running; bool charge_is_supressed; FuriPubSub* input_events_pubsub; FuriPubSub* ascii_events_pubsub; FuriPubSubSubscription* input_events_subscription; FuriPubSubSubscription* ascii_events_subscription; }; typedef enum { PowerViewOff, PowerViewUnplugUsb, } PowerView; typedef enum { PowerMessageTypeShutdown, PowerMessageTypeReboot, PowerMessageTypeGetInfo, PowerMessageTypeIsBatteryHealthy, PowerMessageTypeShowBatteryLowWarning, PowerMessageTypeSwitchOTG, PowerMessageTypeGetSettings, PowerMessageTypeSetSettings, PowerMessageTypeReloadSettings, } PowerMessageType; typedef struct { PowerMessageType type; union { PowerBootMode boot_mode; PowerInfo* power_info; bool* bool_param; PowerSettings* settings; const PowerSettings* csettings; }; FuriApiLock lock; } PowerMessage;