#pragma once #include #include #include #include #include #include #include #ifdef FW_ORIGIN_Momentum #include #else extern const Icon I_DolphinDone_80x58; extern const Icon I_WarningDolphinFlip_45x42; #endif #include #ifdef FW_ORIGIN_Momentum #include #else #include "dropin/text_input.h" #endif #include #include #include "scenes/nfc_maker_scene.h" #include #include #include #if defined(FW_ORIGIN_Momentum) && __has_include() #include #else #define NFC_APP_FOLDER EXT_PATH("nfc") #define NFC_APP_EXTENSION ".nfc" #endif #include #include #include #include #define MAC_INPUT_LEN (GAP_MAC_ADDR_SIZE) #define MAIL_INPUT_LEN (128) #define PHONE_INPUT_LEN (17) #define BIG_INPUT_LEN (248) #define SMALL_INPUT_LEN (90) #define NTAG_DATA_AREA_UNIT_SIZE (2 * MF_ULTRALIGHT_PAGE_SIZE) typedef enum { // MfUltralight CardNtag203, CardNtag213, CardNtag215, CardNtag216, CardNtagI2C1K, CardNtagI2C2K, // MfClassic CardMfClassicMini, CardMfClassic1K4b, CardMfClassic1K7b, CardMfClassic4K4b, CardMfClassic4K7b, // Slix CardSlix, CardSlixS, CardSlixL, CardSlix2, CardMAX, } Card; typedef struct { const char* name; size_t size; NfcProtocol protocol; NfcDataGeneratorType generator; } CardDef; extern const CardDef cards[CardMAX]; typedef enum { WifiAuthenticationOpen = 0x01, WifiAuthenticationWpa2Personal = 0x20, WifiAuthenticationWpa2Enterprise = 0x10, WifiAuthenticationWpaPersonal = 0x02, WifiAuthenticationWpaEnterprise = 0x08, WifiAuthenticationShared = 0x04, } WifiAuthentication; typedef enum { WifiEncryptionAes = 0x08, WifiEncryptionWep = 0x02, WifiEncryptionTkip = 0x04, WifiEncryptionNone = 0x01, } WifiEncryption; typedef struct { Gui* gui; SceneManager* scene_manager; ViewDispatcher* view_dispatcher; Submenu* submenu; TextInput* text_input; ByteInput* byte_input; Popup* popup; NfcDevice* nfc_device; uint8_t* ndef_buffer; size_t ndef_size; uint8_t mac_buf[MAC_INPUT_LEN]; char mail_buf[MAIL_INPUT_LEN]; char phone_buf[PHONE_INPUT_LEN]; char big_buf[BIG_INPUT_LEN]; char small_buf1[SMALL_INPUT_LEN]; char small_buf2[SMALL_INPUT_LEN]; char save_buf[BIG_INPUT_LEN]; uint8_t uid_buf[10]; } NfcMaker; typedef enum { NfcMakerViewSubmenu, NfcMakerViewTextInput, NfcMakerViewByteInput, NfcMakerViewPopup, } NfcMakerView; #ifdef FW_ORIGIN_Official #define submenu_add_lockable_item( \ submenu, label, index, callback, callback_context, locked, locked_message) \ if(!(locked)) submenu_add_item(submenu, label, index, callback, callback_context) #endif