Files
Momentum-Firmware/applications/external/uhf_rfid/uhf_worker.h
2023-11-18 23:37:23 +01:00

49 lines
1.2 KiB
C

#pragma once
#include <furi.h>
#include <furi_hal.h>
#include "uhf_module.h"
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);