/** * @file lfrfid_worker_i.h * * lfrfid worker, internal definitions */ #pragma once #include <furi.h> #include "lfrfid_worker.h" #include "lfrfid_raw_worker.h" #include "protocols/lfrfid_protocols.h" #ifdef __cplusplus extern "C" { #endif typedef struct { void (*const process)(LFRFIDWorker* worker); } LFRFIDWorkerModeType; typedef enum { LFRFIDWorkerIdle, LFRFIDWorkerRead, LFRFIDWorkerWrite, LFRFIDWorkerEmulate, LFRFIDWorkerReadRaw, LFRFIDWorkerEmulateRaw, } LFRFIDWorkerMode; struct LFRFIDWorker { char* raw_filename; LFRFIDWorkerMode mode_index; void* mode_storage; FuriEventFlag* events; FuriThread* thread; LFRFIDWorkerReadType read_type; LFRFIDWorkerReadCallback read_cb; LFRFIDWorkerWriteCallback write_cb; LFRFIDWorkerReadRawCallback read_raw_cb; LFRFIDWorkerEmulateRawCallback emulate_raw_cb; void* cb_ctx; ProtocolDict* protocols; LFRFIDProtocol protocol; }; extern const LFRFIDWorkerModeType lfrfid_worker_modes[]; /** * @brief Check for stop flag * * @param worker * @return bool */ bool lfrfid_worker_check_for_stop(LFRFIDWorker* worker); #ifdef __cplusplus } #endif