* digital signal: introduce digital signal * nfca: add nfca signal encoder * nfc: add mifare classic emulation scene * nfca: add classic emulation support to lib and hal * mifare classic: support basic read commands * nfc: add mifare classic menu scene * mifare classic: start parsing commands in emulation * mifare classic: add nested auth * nfc: fix errors * mifare classic: add encrypt function * nfc: fix mifare classic save * lib hex: add hex uint64_t ASCII parser * flipper format: add uint64 hex format support * nfc: add mifare classic key map * nfc: hide mifare classic keys on emulation * mifare classic: add NACK responce * nfc: add partial bytes support in transparent mode * nfc: mifare classic add shadow file support * digital signal: move arr buffer from BSS to heap * mifare classic: process access bits more careful * nfca: fix memory leack * nfc: format sources * mifare classic: cleun up Co-authored-by: あく <alleteam@gmail.com>
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
#pragma once
 | 
						|
 | 
						|
#include "nfc_device.h"
 | 
						|
 | 
						|
typedef struct NfcWorker NfcWorker;
 | 
						|
 | 
						|
typedef enum {
 | 
						|
    // Init states
 | 
						|
    NfcWorkerStateNone,
 | 
						|
    NfcWorkerStateBroken,
 | 
						|
    NfcWorkerStateReady,
 | 
						|
    // Main worker states
 | 
						|
    NfcWorkerStateDetect,
 | 
						|
    NfcWorkerStateEmulate,
 | 
						|
    NfcWorkerStateReadEMVApp,
 | 
						|
    NfcWorkerStateReadEMVData,
 | 
						|
    NfcWorkerStateEmulateApdu,
 | 
						|
    NfcWorkerStateField,
 | 
						|
    NfcWorkerStateReadMifareUltralight,
 | 
						|
    NfcWorkerStateEmulateMifareUltralight,
 | 
						|
    NfcWorkerStateReadMifareClassic,
 | 
						|
    NfcWorkerStateEmulateMifareClassic,
 | 
						|
    NfcWorkerStateReadMifareDesfire,
 | 
						|
    // Transition
 | 
						|
    NfcWorkerStateStop,
 | 
						|
} NfcWorkerState;
 | 
						|
 | 
						|
typedef enum {
 | 
						|
    // Reserve first 50 events for application events
 | 
						|
    NfcWorkerEventReserved = 50,
 | 
						|
 | 
						|
    // Nfc worker common events
 | 
						|
    NfcWorkerEventSuccess,
 | 
						|
    NfcWorkerEventFail,
 | 
						|
    NfcWorkerEventNoCardDetected,
 | 
						|
    // Mifare Classic events
 | 
						|
    NfcWorkerEventNoDictFound,
 | 
						|
    NfcWorkerEventDetectedClassic1k,
 | 
						|
    NfcWorkerEventDetectedClassic4k,
 | 
						|
    NfcWorkerEventNewSector,
 | 
						|
    NfcWorkerEventFoundKeyA,
 | 
						|
    NfcWorkerEventFoundKeyB,
 | 
						|
    NfcWorkerEventStartReading,
 | 
						|
} NfcWorkerEvent;
 | 
						|
 | 
						|
typedef void (*NfcWorkerCallback)(NfcWorkerEvent event, void* context);
 | 
						|
 | 
						|
NfcWorker* nfc_worker_alloc();
 | 
						|
 | 
						|
NfcWorkerState nfc_worker_get_state(NfcWorker* nfc_worker);
 | 
						|
 | 
						|
void nfc_worker_free(NfcWorker* nfc_worker);
 | 
						|
 | 
						|
void nfc_worker_start(
 | 
						|
    NfcWorker* nfc_worker,
 | 
						|
    NfcWorkerState state,
 | 
						|
    NfcDeviceData* dev_data,
 | 
						|
    NfcWorkerCallback callback,
 | 
						|
    void* context);
 | 
						|
 | 
						|
void nfc_worker_stop(NfcWorker* nfc_worker);
 |