#pragma once #include "views/updater_main.h" #include "util/update_task.h" #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif #define UPDATER_APP_TICK 500 typedef enum { UpdaterViewMain, UpdaterViewWidget, } UpdaterViewEnum; typedef enum { UpdaterCustomEventUnknown, UpdaterCustomEventStartUpdate, UpdaterCustomEventRetryUpdate, UpdaterCustomEventCancelUpdate, UpdaterCustomEventSdUnmounted, } UpdaterCustomEvent; typedef struct UpdaterManifestProcessingState { UpdateManifest* manifest; FuriString* message; bool ready_to_be_applied; } UpdaterManifestProcessingState; typedef struct { // GUI Gui* gui; NotificationApp* notification; SceneManager* scene_manager; ViewDispatcher* view_dispatcher; Storage* storage; UpdaterMainView* main_view; UpdaterManifestProcessingState* pending_update; UpdatePrepareResult preparation_result; UpdateTask* update_task; Widget* widget; FuriString* startup_arg; int32_t idle_ticks; } Updater; Updater* updater_alloc(const char* arg); void updater_free(Updater* updater); #ifdef __cplusplus } #endif