#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "subghz_bruteforcer_icons.h" #include #include #include #include "subbrute.h" #include "subbrute_device.h" #include "subbrute_settings.h" #include "helpers/subbrute_worker.h" #include "views/subbrute_attack_view.h" #include "views/subbrute_main_view.h" #define SUBBRUTEFORCER_VER "Sub-GHz BruteForcer 3.9" #ifdef FURI_DEBUG //#define SUBBRUTE_FAST_TRACK false #endif typedef enum { SubBruteViewNone, SubBruteViewMain, SubBruteViewAttack, SubBruteViewTextInput, SubBruteViewDialogEx, SubBruteViewPopup, SubBruteViewWidget, SubBruteViewStack, SubBruteViewVarList, } SubBruteView; struct SubBruteState { // GUI elements NotificationApp* notifications; Gui* gui; ViewDispatcher* view_dispatcher; ViewStack* view_stack; TextInput* text_input; Popup* popup; Widget* widget; VariableItemList* var_list; DialogsApp* dialogs; const SubGhzDevice* radio_device; // Text store char text_store[SUBBRUTE_MAX_LEN_NAME]; FuriString* file_path; // Views SubBruteMainView* view_main; SubBruteAttackView* view_attack; SubBruteView current_view; // Scene SceneManager* scene_manager; // SubBruteDevice SubBruteDevice* device; // SubBruteWorker SubBruteWorker* worker; // Last used settings SubBruteSettings* settings; }; void subbrute_show_loading_popup(void* context, bool show); void subbrute_text_input_callback(void* context); void subbrute_popup_closed_callback(void* context);