mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-10 05:59:08 -07:00
49 lines
1.2 KiB
C
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); |