mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-11-24 05:23:06 +00:00
161 lines
3.8 KiB
C
161 lines
3.8 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 The worker
|
|
*/
|
|
void lfrfid_worker_free(LFRFIDWorker* worker);
|
|
|
|
/** Start LF-RFID worker thread
|
|
*
|
|
* @param worker The worker
|
|
*/
|
|
void lfrfid_worker_start_thread(LFRFIDWorker* worker);
|
|
|
|
/** Stop LF-RFID worker thread
|
|
*
|
|
* @param worker The worker
|
|
*/
|
|
void lfrfid_worker_stop_thread(LFRFIDWorker* worker);
|
|
|
|
/** Start read mode
|
|
*
|
|
* @param worker The worker
|
|
* @param type The type
|
|
* @param callback The callback
|
|
* @param context The context
|
|
*/
|
|
void lfrfid_worker_read_start(
|
|
LFRFIDWorker* worker,
|
|
LFRFIDWorkerReadType type,
|
|
LFRFIDWorkerReadCallback callback,
|
|
void* context);
|
|
|
|
/** Start write mode
|
|
*
|
|
* @param worker The worker
|
|
* @param protocol The protocol
|
|
* @param callback The callback
|
|
* @param context The context
|
|
*/
|
|
void lfrfid_worker_write_start(
|
|
LFRFIDWorker* worker,
|
|
LFRFIDProtocol protocol,
|
|
LFRFIDWorkerWriteCallback callback,
|
|
void* context);
|
|
|
|
/**
|
|
* @brief Start write and set pass mode
|
|
*
|
|
* @param worker
|
|
* @param protocol
|
|
* @param callback
|
|
* @param context
|
|
*/
|
|
void lfrfid_worker_write_and_set_pass_start(
|
|
LFRFIDWorker* worker,
|
|
LFRFIDProtocol protocol,
|
|
LFRFIDWorkerWriteCallback callback,
|
|
void* context);
|
|
|
|
/**
|
|
* Start emulate mode
|
|
* @param worker
|
|
*/
|
|
void lfrfid_worker_emulate_start(LFRFIDWorker* worker, LFRFIDProtocol protocol);
|
|
|
|
/** Start raw read mode
|
|
*
|
|
* @param worker The worker
|
|
* @param filename The filename
|
|
* @param type The type
|
|
* @param callback The callback
|
|
* @param context The context
|
|
*/
|
|
void lfrfid_worker_read_raw_start(
|
|
LFRFIDWorker* worker,
|
|
const char* filename,
|
|
LFRFIDWorkerReadType type,
|
|
LFRFIDWorkerReadRawCallback callback,
|
|
void* context);
|
|
|
|
/** Emulate raw read mode
|
|
*
|
|
* @param worker The worker
|
|
* @param filename The filename
|
|
* @param callback The callback
|
|
* @param context The context
|
|
*/
|
|
void lfrfid_worker_emulate_raw_start(
|
|
LFRFIDWorker* worker,
|
|
const char* filename,
|
|
LFRFIDWorkerEmulateRawCallback callback,
|
|
void* context);
|
|
|
|
/** Stop all modes
|
|
*
|
|
* @param worker The worker
|
|
*/
|
|
void lfrfid_worker_stop(LFRFIDWorker* worker);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|