* view: add custom event callback * nfc: rework nfc worker * gui: introduce view navigator * nfc_scences: introduce nfc scenes * nfc: add start scene * lib: add C application scene template * nfc: move nfc views to separate directory * view_dispatcher: add support for view_navigator * nfc views: rework nfc views * nfc scenes: add nfc application scenes * nfc: rework nfc main thread * view_dispatcher: add separate event for search back scene * nfc: set worker result address at worker start * nfc: update read nfc scenes * view_navigator: rework with M-LIB container * view_dispatcher: check that all views were freed * nfc: add debug menu with all functions * nfc read scene: add notification on success * api-hal-nfc: add API for UID emulation * nfc: add nfc emulation UID scene * assets: add NFC assets * nfc: update read and emulate scenes UI * nfc: fix memory leak * rfal: set custom analog configuration
		
			
				
	
	
		
			109 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#pragma once
 | 
						|
 | 
						|
#include "nfc.h"
 | 
						|
#include "nfc_types.h"
 | 
						|
#include "nfc_worker.h"
 | 
						|
 | 
						|
#include <furi.h>
 | 
						|
 | 
						|
#include <gui/gui.h>
 | 
						|
#include <gui/view.h>
 | 
						|
#include <gui/view_dispatcher.h>
 | 
						|
#include <cli/cli.h>
 | 
						|
#include <notification/notification-messages.h>
 | 
						|
 | 
						|
#include <gui/modules/submenu.h>
 | 
						|
#include <gui/modules/dialog_ex.h>
 | 
						|
#include <gui/modules/popup.h>
 | 
						|
#include <gui/modules/text_input.h>
 | 
						|
#include <gui/modules/byte_input.h>
 | 
						|
 | 
						|
#include "views/nfc_detect.h"
 | 
						|
#include "views/nfc_emulate.h"
 | 
						|
#include "views/nfc_emv.h"
 | 
						|
#include "views/nfc_mifare_ul.h"
 | 
						|
 | 
						|
#include "scenes/nfc_scene_start.h"
 | 
						|
#include "scenes/nfc_scene_read_card.h"
 | 
						|
#include "scenes/nfc_scene_read_card_success.h"
 | 
						|
#include "scenes/nfc_scene_card_menu.h"
 | 
						|
#include "scenes/nfc_scene_emulate_uid.h"
 | 
						|
#include "scenes/nfc_scene_not_implemented.h"
 | 
						|
 | 
						|
// TODO delete debug scenes
 | 
						|
#include "scenes/nfc_scene_debug_menu.h"
 | 
						|
#include "scenes/nfc_scene_debug_detect.h"
 | 
						|
#include "scenes/nfc_scene_debug_emulate.h"
 | 
						|
#include "scenes/nfc_scene_debug_read_emv.h"
 | 
						|
#include "scenes/nfc_scene_debug_read_mifare_ul.h"
 | 
						|
 | 
						|
#define NFC_TEXT_STORE_SIZE 128
 | 
						|
 | 
						|
struct Nfc {
 | 
						|
    NfcCommon nfc_common;
 | 
						|
    Gui* gui;
 | 
						|
    NotificationApp* notifications;
 | 
						|
 | 
						|
    char text_store[NFC_TEXT_STORE_SIZE + 1];
 | 
						|
 | 
						|
    // Nfc Views
 | 
						|
    NfcDetect* nfc_detect;
 | 
						|
    NfcEmulate* nfc_emulate;
 | 
						|
    NfcEmv* nfc_emv;
 | 
						|
    NfcMifareUl* nfc_mifare_ul;
 | 
						|
 | 
						|
    // Common Views
 | 
						|
    Submenu* submenu;
 | 
						|
    DialogEx* dialog_ex;
 | 
						|
    Popup* popup;
 | 
						|
    TextInput* text_input;
 | 
						|
    ByteInput* byte_input;
 | 
						|
 | 
						|
    // Scenes
 | 
						|
    AppScene* scene_start;
 | 
						|
    AppScene* scene_read_card;
 | 
						|
    AppScene* scene_read_card_success;
 | 
						|
    AppScene* scene_card_menu;
 | 
						|
    AppScene* scene_not_implemented;
 | 
						|
    AppScene* scene_emulate_uid;
 | 
						|
 | 
						|
    // TODO delete debug scenes
 | 
						|
    AppScene* scene_debug_menu;
 | 
						|
    AppScene* scene_debug_detect;
 | 
						|
    AppScene* scene_debug_emulate;
 | 
						|
    AppScene* scene_debug_read_emv;
 | 
						|
    AppScene* scene_debug_read_mifare_ul;
 | 
						|
};
 | 
						|
 | 
						|
typedef enum {
 | 
						|
    NfcViewMenu,
 | 
						|
    NfcViewDialogEx,
 | 
						|
    NfcViewPopup,
 | 
						|
    NfcViewTextInput,
 | 
						|
    NfcViewByteInput,
 | 
						|
    NfcViewDetect,
 | 
						|
    NfcViewEmulate,
 | 
						|
    NfcViewEmv,
 | 
						|
    NfcViewMifareUl,
 | 
						|
} NfcView;
 | 
						|
 | 
						|
typedef enum {
 | 
						|
    NfcSceneStart,
 | 
						|
    NfcSceneReadCard,
 | 
						|
    NfcSceneReadCardSuccess,
 | 
						|
    NfcSceneCardMenu,
 | 
						|
    NfcSceneEmulateUID,
 | 
						|
    NfcSceneNotImplemented,
 | 
						|
    NfcSceneDebugMenu,
 | 
						|
    NfcSceneDebugDetect,
 | 
						|
    NfcSceneDebugEmulate,
 | 
						|
    NfcSceneDebugReadEmv,
 | 
						|
    NfcSceneDebugReadMifareUl,
 | 
						|
} NfcScene;
 | 
						|
 | 
						|
Nfc* nfc_alloc();
 | 
						|
 | 
						|
int32_t nfc_task(void* p);
 | 
						|
 | 
						|
void nfc_set_text_store(Nfc* nfc, const char* text, ...);
 |