106 lines
4.2 KiB
C++
106 lines
4.2 KiB
C++
#ifndef FINGERLOGIC_H
|
|
#define FINGERLOGIC_H
|
|
|
|
#include <bitset>
|
|
#include "FingerPrint.h"
|
|
|
|
enum FingerLogicState
|
|
{
|
|
STATE_ERROR = -1,
|
|
STATE_INITIAL = 0,
|
|
|
|
STATE_INIT_VERIFYPASSWORD,
|
|
STATE_INIT_READSYSTEMPARAMETERS,
|
|
STATE_INIT_READTEMPLATEMAP,
|
|
STATE_INIT_VERIFYTEMPLATES,
|
|
|
|
STATE_READY,
|
|
|
|
STATE_VERIFY_READIMAGE,
|
|
STATE_VERIFY_CONVERTIMAGE,
|
|
STATE_VERIFY_SEARCHTEMPLATE,
|
|
STATE_VERIFY_LOADTEMPLATE,
|
|
STATE_VERIFY_DOWNLOADCHARACTERISTICS,
|
|
|
|
STATE_ENROLL_WAITFINGER1,
|
|
STATE_ENROLL_READIMAGE1,
|
|
STATE_ENROLL_CONVERTIMAGE1,
|
|
STATE_ENROLL_SEARCHTEMPLATE,
|
|
STATE_ENROLL_WAITFINGER2,
|
|
STATE_ENROLL_READIMAGE2,
|
|
STATE_ENROLL_CONVERTIMAGE2,
|
|
STATE_ENROLL_COMPARE,
|
|
STATE_ENROLL_CREATETEMPLATE,
|
|
STATE_ENROLL_STORETEMPLATE,
|
|
STATE_ENROLL_LOADTEMPLATE,
|
|
STATE_ENROLL_DOWNLOADCHARACTERISTICS
|
|
};
|
|
|
|
class CFingerLogic
|
|
{
|
|
public:
|
|
CFingerLogic(class CMain *pMain);
|
|
void Init(CFingerPrint *pFingerPrint);
|
|
void OnFingerInterrupt(bool finger);
|
|
|
|
bool FingerSlot(uint16_t index);
|
|
bool FingerSlot(uint16_t index, bool value);
|
|
int FirstFreeFingerSlot();
|
|
|
|
void InitFinger();
|
|
static void InitFinger_OnVerifyPassword(CFingerLogic *pThis, FingerPrintError error, const char *errorStr);
|
|
static void InitFinger_OnReadSystemParameters(CFingerLogic *pThis, FingerPrintError error, const char *errorStr, CFingerSystemParameters *param);
|
|
static void InitFinger_OnGetTemplates(CFingerLogic *pThis, FingerPrintError error, const char *errorStr);
|
|
static void InitFinger_OnReadTemplateMap(CFingerLogic *pThis, FingerPrintError error, const char *errorStr, uint8_t *pData, uint16_t dataLen);
|
|
void InitFinger_VerifyTemplates();
|
|
static void InitFinger_OnLoadTemplate(CFingerLogic *pThis, FingerPrintError error, const char *errorStr);
|
|
static void InitFinger_OnDownloadCharacteristics(CFingerLogic *pThis, FingerPrintError error, const char *errorStr, int8_t *pChar, uint16_t charLen);
|
|
|
|
void VerifyFinger();
|
|
static void VerifyFinger_OnReadImage(CFingerLogic *pThis, FingerPrintError error, const char *errorStr);
|
|
static void VerifyFinger_OnConvertImage(CFingerLogic *pThis, FingerPrintError error, const char *errorStr);
|
|
static void VerifyFinger_OnSearchTemplate(CFingerLogic *pThis, FingerPrintError error, const char *errorStr, int16_t position, int16_t score);
|
|
static void VerifyFinger_OnLoadTemplate(CFingerLogic *pThis, FingerPrintError error, const char *errorStr);
|
|
static void VerifyFinger_OnDownloadCharacteristics(CFingerLogic *pThis, FingerPrintError error, const char *errorStr, int8_t *pChar, uint16_t charLen);
|
|
|
|
bool EnrollFinger(bool cancel=false);
|
|
static void EnrollFinger_OnReadImage1(CFingerLogic *pThis, FingerPrintError error, const char *errorStr);
|
|
static void EnrollFinger_OnConvertImage1(CFingerLogic *pThis, FingerPrintError error, const char *errorStr);
|
|
static void EnrollFinger_OnSearchTemplate(CFingerLogic *pThis, FingerPrintError error, const char *errorStr, int16_t position, int16_t score);
|
|
void EnrollFinger_OnFinger();
|
|
static void EnrollFinger_OnReadImage2(CFingerLogic *pThis, FingerPrintError error, const char *errorStr);
|
|
static void EnrollFinger_OnConvertImage2(CFingerLogic *pThis, FingerPrintError error, const char *errorStr);
|
|
static void EnrollFinger_OnCompareCharacteristics(CFingerLogic *pThis, FingerPrintError error, const char *errorStr, int16_t score);
|
|
static void EnrollFinger_OnCreateTemplate(CFingerLogic *pThis, FingerPrintError error, const char *errorStr);
|
|
static void EnrollFinger_OnStoreTemplate(CFingerLogic *pThis, FingerPrintError error, const char *errorStr, uint16_t positionNumber);
|
|
static void EnrollFinger_OnLoadTemplate(CFingerLogic *pThis, FingerPrintError error, const char *errorStr);
|
|
static void EnrollFinger_OnDownloadCharacteristics(CFingerLogic *pThis, FingerPrintError error, const char *errorStr, int8_t *pChar, uint16_t charLen);
|
|
|
|
CMain &Main() { return *m_pMain; }
|
|
CFingerPrint &FingerPrint() { return *m_pFingerPrint; }
|
|
|
|
private:
|
|
bool m_Power;
|
|
void PowerOff();
|
|
void PowerOn();
|
|
void SetState(FingerLogicState state);
|
|
Timer m_PowerOffTimer;
|
|
|
|
CMain *m_pMain;
|
|
CFingerPrint *m_pFingerPrint;
|
|
FingerLogicState m_State;
|
|
bool m_Finger;
|
|
|
|
CFingerSystemParameters m_FingerParams;
|
|
uint8_t m_aFingerSlots[1792/8];
|
|
uint16_t m_FingerSlotsAdded;
|
|
|
|
int32_t m_iBuffer;
|
|
|
|
Timer m_Timer;
|
|
void *m_fnUserCallback;
|
|
void *m_pUserData;
|
|
};
|
|
|
|
#endif
|