#pragma once #include "nfc.h" #include "nfc_types.h" #include "nfc_worker.h" #include "nfc_device.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "views/bank_card.h" #include "views/dict_attack.h" #include #include #include "rpc/rpc_app.h" #define NFC_SEND_NOTIFICATION_FALSE (0UL) #define NFC_SEND_NOTIFICATION_TRUE (1UL) #define NFC_TEXT_STORE_SIZE 128 typedef enum { NfcRpcStateIdle, NfcRpcStateEmulating, NfcRpcStateEmulated, } NfcRpcState; // Forward declaration due to circular dependency typedef struct NfcGenerator NfcGenerator; struct Nfc { NfcWorker* worker; ViewDispatcher* view_dispatcher; Gui* gui; NotificationApp* notifications; SceneManager* scene_manager; NfcDevice* dev; FuriHalNfcDevData dev_edit_data; char text_store[NFC_TEXT_STORE_SIZE + 1]; string_t text_box_store; void* rpc_ctx; NfcRpcState rpc_state; // Common Views Submenu* submenu; DialogEx* dialog_ex; Popup* popup; Loading* loading; TextInput* text_input; ByteInput* byte_input; TextBox* text_box; Widget* widget; BankCard* bank_card; DictAttack* dict_attack; const NfcGenerator* generator; }; typedef enum { NfcViewMenu, NfcViewDialogEx, NfcViewPopup, NfcViewLoading, NfcViewTextInput, NfcViewByteInput, NfcViewTextBox, NfcViewWidget, NfcViewBankCard, NfcViewDictAttack, } NfcView; Nfc* nfc_alloc(); int32_t nfc_task(void* p); void nfc_text_store_set(Nfc* nfc, const char* text, ...); void nfc_text_store_clear(Nfc* nfc); void nfc_blink_start(Nfc* nfc); void nfc_blink_stop(Nfc* nfc); void nfc_show_loading_popup(void* context, bool show); void nfc_rpc_exit_callback(Nfc* nfc);