#ifndef __FPREADER
#define __FPREADER

//************************************************************
//*********** Modul čtečky otisků prstů MIAXIS SM-621 ********
//------------------------------------------------------------
//********************  KNIHOVNA FUNKCÍ  *********************
//*********************** martyy 2011 ************************
//************************************************************ 

#include "common.h"

//Definice offsetů v paketu
#define P_FLAG 1
#define P_ADDR 2
#define P_CNT 6
#define P_CMDSTART 8
#define FRAME_BYTES 11
#define OPCODE 7
#define FOUND_ID_H 8
#define FOUND_ID_L 9

//Definice bufferů
#define BUFFER_A 1
#define BUFFER_B 2
#define BUFFER_MODEL 3

//Definice konstant datového paketu
#define FLAG_P 0x01
#define BORDER_P 0xC0

#define HEADERSIZE 4 
#define FPR_TEMPLATE_OVERALL_LEN 278

//Datový typ t_cmd - kontejner pro data náležící příkazu
typedef struct {
char command;
char preparam;
char paramA_high;
char paramA_low;
char paramB_high;
char paramB_low;
}t_cmd;

volatile t_cmd cmd;	 
char FPR_Buffer[290];    //buffer pro paket FPR




//základní funkce pro posílání příkazů do čtečky 
char fpr_sendcmd(t_cmd * cmd,int cnt);
char fpr_RecvRAWData(uint8_t* buffer,int cnt);
char fpr_SendRAWData(uint8_t* buffer,int cnt);

//Definice příkazů čtečky

char fpr_CheckFinger(void);
char fpr_GetImage(void);
char fpr_GenTemplet(char buffer);
char fpr_Search(char buffer, int from, int to); 
char fpr_Merge(void);
char fpr_UploadTemplate(char buffer);
char fpr_DownloadTemplate(char buffer);
char fpr_Store(char buffer,int pageNR);
char fpr_Delete(int pageNR);
char fpr_CheckTemplate(int pageNR);



//Definice chybových stavů

//Zaznamenaných při zpracování paketu knihovnou
#define INFRAME_ERR 0x1A 		//přijatý paket poškozen
#define CHECKSUM_ERR 0x1B	 	//nesprávný checksum příchozího paketu
#define TIMEOUT_ERR 0x1C  		//Timeout

//Zaznamenaných samotným modulem čtečky
#define OUTFRAME_ERR 0x01 		//Paket čtečkou označen za neplatný 
#define CHECKFINGER_ERR 0x02 
#define GETIMAGE_ERR 0x03
#define GEN_TOODRY_ERR 0x04
#define GEN_TOOWET_ERR 0x05
#define GEN_TOORAN_ERR 0x06
#define GEN_TOOFEW_ERR 0x07
#define GEN_NODATA_ERR 0x15
#define SEARCH_ERR 0x09
#define MERGE_ERR 0x0A
#define UPLOAD_ERR 0x0D
#define DOWNLOAD_ERR 0x0E
#define STORE_ERR 0x0B
#define DELETE_ERR 0x10
#define CHECK_ERR 0x19



#endif
