mirror of
https://github.com/bettse/seader.git
synced 2026-04-26 10:57:30 +00:00
55 lines
1.5 KiB
C
55 lines
1.5 KiB
C
#pragma once
|
|
|
|
#include "seader_credential.h"
|
|
#include "seader_bridge.h"
|
|
|
|
typedef struct SeaderWorker SeaderWorker;
|
|
typedef struct CCID_Message CCID_Message;
|
|
|
|
typedef enum {
|
|
// Init states
|
|
SeaderWorkerStateNone,
|
|
SeaderWorkerStateBroken,
|
|
SeaderWorkerStateReady,
|
|
// Main worker states
|
|
SeaderWorkerStateCheckSam,
|
|
SeaderWorkerStateReadPicopass,
|
|
SeaderWorkerStateRead14a,
|
|
// Transition
|
|
SeaderWorkerStateStop,
|
|
} SeaderWorkerState;
|
|
|
|
typedef enum {
|
|
// Reserve first 50 events for application events
|
|
SeaderWorkerEventReserved = 50,
|
|
|
|
// Seader worker common events
|
|
SeaderWorkerEventSuccess,
|
|
SeaderWorkerEventFail,
|
|
SeaderWorkerEventSamPresent,
|
|
SeaderWorkerEventSamWrong,
|
|
SeaderWorkerEventSamMissing,
|
|
SeaderWorkerEventNoCardDetected,
|
|
SeaderWorkerEventStartReading,
|
|
} SeaderWorkerEvent;
|
|
|
|
typedef void (*SeaderWorkerCallback)(SeaderWorkerEvent event, void* context);
|
|
|
|
SeaderWorker* seader_worker_alloc();
|
|
|
|
SeaderWorkerState seader_worker_get_state(SeaderWorker* seader_worker);
|
|
|
|
void seader_worker_free(SeaderWorker* seader_worker);
|
|
|
|
void seader_worker_start(
|
|
SeaderWorker* seader_worker,
|
|
SeaderWorkerState state,
|
|
SeaderUartBridge* uart,
|
|
SeaderCredential* credential,
|
|
SeaderWorkerCallback callback,
|
|
void* context);
|
|
|
|
void seader_worker_stop(SeaderWorker* seader_worker);
|
|
void seader_worker_process_message(SeaderWorker* seader_worker, CCID_Message* message);
|
|
void seader_worker_send_version(SeaderWorker* seader_worker);
|