153 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|  * @file lfrfid_worker.h
 | |
|  * 
 | |
|  * LFRFID worker
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| #include <toolbox/protocols/protocol_dict.h>
 | |
| #include "protocols/lfrfid_protocols.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| typedef enum {
 | |
|     LFRFIDWorkerWriteOK,
 | |
|     LFRFIDWorkerWriteProtocolCannotBeWritten,
 | |
|     LFRFIDWorkerWriteFobCannotBeWritten,
 | |
|     LFRFIDWorkerWriteTooLongToWrite,
 | |
| } LFRFIDWorkerWriteResult;
 | |
| 
 | |
| typedef enum {
 | |
|     LFRFIDWorkerReadTypeAuto,
 | |
|     LFRFIDWorkerReadTypeASKOnly,
 | |
|     LFRFIDWorkerReadTypePSKOnly,
 | |
| } LFRFIDWorkerReadType;
 | |
| 
 | |
| typedef enum {
 | |
|     LFRFIDWorkerReadSenseStart, // TODO FL-3516: not implemented
 | |
|     LFRFIDWorkerReadSenseEnd, // TODO FL-3516: not implemented
 | |
|     LFRFIDWorkerReadSenseCardStart,
 | |
|     LFRFIDWorkerReadSenseCardEnd,
 | |
|     LFRFIDWorkerReadStartASK,
 | |
|     LFRFIDWorkerReadStartPSK,
 | |
|     LFRFIDWorkerReadDone,
 | |
| } LFRFIDWorkerReadResult;
 | |
| 
 | |
| typedef enum {
 | |
|     LFRFIDWorkerReadRawFileError,
 | |
|     LFRFIDWorkerReadRawOverrun,
 | |
| } LFRFIDWorkerReadRawResult;
 | |
| 
 | |
| typedef enum {
 | |
|     LFRFIDWorkerEmulateRawFileError,
 | |
|     LFRFIDWorkerEmulateRawOverrun,
 | |
| } LFRFIDWorkerEmulateRawResult;
 | |
| 
 | |
| typedef void (
 | |
|     *LFRFIDWorkerReadCallback)(LFRFIDWorkerReadResult result, ProtocolId protocol, void* context);
 | |
| typedef void (*LFRFIDWorkerWriteCallback)(LFRFIDWorkerWriteResult result, void* context);
 | |
| 
 | |
| typedef void (*LFRFIDWorkerReadRawCallback)(LFRFIDWorkerReadRawResult result, void* context);
 | |
| typedef void (*LFRFIDWorkerEmulateRawCallback)(LFRFIDWorkerEmulateRawResult result, void* context);
 | |
| 
 | |
| typedef struct LFRFIDWorker LFRFIDWorker;
 | |
| 
 | |
| /**
 | |
|  * Allocate LF-RFID worker
 | |
|  * @return LFRFIDWorker* 
 | |
|  */
 | |
| LFRFIDWorker* lfrfid_worker_alloc(ProtocolDict* dict);
 | |
| 
 | |
| /**
 | |
|  * Free LF-RFID worker
 | |
|  * @param worker 
 | |
|  */
 | |
| void lfrfid_worker_free(LFRFIDWorker* worker);
 | |
| 
 | |
| /**
 | |
|  * Start LF-RFID worker thread
 | |
|  * @param worker 
 | |
|  */
 | |
| void lfrfid_worker_start_thread(LFRFIDWorker* worker);
 | |
| 
 | |
| /**
 | |
|  * Stop LF-RFID worker thread
 | |
|  * @param worker 
 | |
|  */
 | |
| void lfrfid_worker_stop_thread(LFRFIDWorker* worker);
 | |
| 
 | |
| /**
 | |
|  * @brief Start read mode
 | |
|  * 
 | |
|  * @param worker 
 | |
|  * @param type 
 | |
|  * @param callback 
 | |
|  * @param context 
 | |
|  */
 | |
| void lfrfid_worker_read_start(
 | |
|     LFRFIDWorker* worker,
 | |
|     LFRFIDWorkerReadType type,
 | |
|     LFRFIDWorkerReadCallback callback,
 | |
|     void* context);
 | |
| 
 | |
| /**
 | |
|  * @brief Start write mode
 | |
|  * 
 | |
|  * @param worker 
 | |
|  * @param protocol 
 | |
|  * @param callback 
 | |
|  * @param context 
 | |
|  */
 | |
| void lfrfid_worker_write_start(
 | |
|     LFRFIDWorker* worker,
 | |
|     LFRFIDProtocol protocol,
 | |
|     LFRFIDWorkerWriteCallback callback,
 | |
|     void* context);
 | |
| 
 | |
| /**
 | |
|  * Start emulate mode
 | |
|  * @param worker 
 | |
|  */
 | |
| void lfrfid_worker_emulate_start(LFRFIDWorker* worker, LFRFIDProtocol protocol);
 | |
| 
 | |
| /**
 | |
|  * @brief Start raw read mode
 | |
|  * 
 | |
|  * @param worker 
 | |
|  * @param filename 
 | |
|  * @param type 
 | |
|  * @param callback 
 | |
|  * @param context 
 | |
|  */
 | |
| void lfrfid_worker_read_raw_start(
 | |
|     LFRFIDWorker* worker,
 | |
|     const char* filename,
 | |
|     LFRFIDWorkerReadType type,
 | |
|     LFRFIDWorkerReadRawCallback callback,
 | |
|     void* context);
 | |
| 
 | |
| /**
 | |
|  * Emulate raw read mode
 | |
|  * @param worker 
 | |
|  * @param filename 
 | |
|  * @param callback 
 | |
|  * @param context 
 | |
|  */
 | |
| void lfrfid_worker_emulate_raw_start(
 | |
|     LFRFIDWorker* worker,
 | |
|     const char* filename,
 | |
|     LFRFIDWorkerEmulateRawCallback callback,
 | |
|     void* context);
 | |
| 
 | |
| /**
 | |
|  * Stop all modes
 | |
|  * @param worker 
 | |
|  */
 | |
| void lfrfid_worker_stop(LFRFIDWorker* worker);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | 
