| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #pragma once
- #include <furi.h>
- #include <furi_hal.h>
- #include "uhf_module.h"
- #define UHF_WORKER_STACK_SIZE 1 * 1024
- typedef enum {
- // Init states
- UHFWorkerStateNone,
- UHFWorkerStateBroken,
- UHFWorkerStateReady,
- UHFWorkerStateVerify,
- // Main worker states
- UHFWorkerStateDetectSingle,
- UHFWorkerStateWriteSingle,
- UHFWorkerStateWriteKey,
- // Transition
- UHFWorkerStateStop,
- } UHFWorkerState;
- typedef enum {
- UHFWorkerEventSuccess,
- UHFWorkerEventFail,
- UHFWorkerEventNoTagDetected,
- UHFWorkerEventAborted,
- UHFWorkerEventCardDetected,
- } UHFWorkerEvent;
- typedef void (*UHFWorkerCallback)(UHFWorkerEvent event, void* ctx);
- typedef struct UHFWorker {
- FuriThread* thread;
- M100Module* module;
- UHFWorkerCallback callback;
- UHFWorkerState state;
- UHFTagWrapper* uhf_tag_wrapper;
- void* ctx;
- } UHFWorker;
- int32_t uhf_worker_task(void* ctx);
- UHFWorker* uhf_worker_alloc();
- void uhf_worker_change_state(UHFWorker* worker, UHFWorkerState state);
- void uhf_worker_start(
- UHFWorker* uhf_worker,
- UHFWorkerState state,
- UHFWorkerCallback callback,
- void* ctx);
- void uhf_worker_stop(UHFWorker* uhf_worker);
- void uhf_worker_free(UHFWorker* uhf_worker);
|