#ifndef _MAIN_H_
#define _MAIN_H_
#define int16 short
#define uint8 unsigned char
#define uint16 unsigned short
#define uint32 unsigned int
#define int32 int
#define uchar unsigned char
#ifdef __cplusplus
extern "C" {
#endif
/*****************以下extern声明函数需lib库调用者实现*******************************/
typedef struct{
/*
功能描述: SPI片选线拉低
*/
void (*Spi_CS_Set_Low)(void);
/*
功能描述: SPI片选线拉高
*/
void (*Spi_CS_Set_High)(void);
/*
功能描述: SPI传输函数,注意此函数不得操作SPI片选线CS的翻转
参数1: 入口参数,填入本次SPI传输master端发送数据,允许out=NULL,驱动自动发送0xff
参数2: 出口参数,用户返回本次SPI传输slave端返回的数据,允许in=NULL,底层不需要返回数据
参数3: 本次SPI传输的字节数
*/
int16 (*spi_transfer)(uint8 *out,uint8 *in,uint16 len);
/*
功能描述: 微秒延时函数
参数1: 入口参数,超时时间
*/
void (*us_delay)(uint32 time);
/*
功能描述: 合并应用层寄存器设置,一次性发往底层执行的专用接口
参数1: 执行动作的命令集
参数2: 执行动作的个数
*/
void (*TS_SpiCmdBuffToDriv)(uchar *pCmdStruct,uint16 uwLen);
/*
功能描述: Android导给LIB库,用来做DEBUG用
*/
void (*print_liblog)(char *pstr);
}FgpFuncImport_t;
/*****************以下函数为LIB库导出****************************************************************/
/*
系统初始化的时候调用即可,用于载入算法库
参数: 无
返回: TA_SUCCESS
*/
int16 TS10xx_LibInit(FgpFuncImport_t *pFgpFuncImport);
/*
抓取一副指纹图像,并将图像存在LIB缓冲区里面
参数1: 入口参数,最大超时,以帧数计
返回:
TA_SUCCESS[抓取成功] TA_IMAGE_ERROR[指纹传感器硬件错误]
TA_TIME_OUT[超时] TA_RECAP_IMAGE[手指已存在]
*/
int16 TS10xx_CaptureImage(uint32 time_ov);
/*
迅速抓取一副指纹图像,并将图像存在LIB缓冲区里面
参数: 无
返回:
TA_SUCCESS[抓取成功] TA_IMAGE_ERROR[指纹传感器硬件错误]
*/
int16 TS1060_CaptureImgFast(void);
/*
每次进入注册流程,需要重新调用此函数,用来初始化算法资源
参数: 无
返回: TA_SUCCESS
*/
int16 TS10xx_EnrollStart(void);
/*
注册时,每次按压调用此函数用于提取特征值,注意,特征值会留在后面一次性返回
返回: TA_SUCCESS[成功注册一次]
EM_EMPTY_IMAGE[图像不合格,重采]
EM_FUNCTION_FAILED[程序调用顺序错误,仅调试]
*/
int16 TS10xx_EnrollImages(void);
/*
注册时,每次TS10xx_EnrollImages后调用此函数以判断信息录入的丰富程度,当>=100时表示注册到了足够信息
参数1: 出口参数,用于返回最后一次Enroll进去的图像和已录入图像的重叠率,0-100计,越大重叠率越高
返回: EM_FUNCTION_FAILED[程序调用顺序错误,仅调试]
>=0 信息丰富程度
*/
int16 TS10xx_GetEnrollProcess(uint16 *puwMapped);
/*
当TS10xx_GetEnrollProcess的返回值>=100时,表面注册信息足够,方可调用此函数用于返回最终特征值占用的空间大小
返回:
EM_FUNCTION_FAILED[程序调用顺序错误,仅调试]
TA_INFO_NOT_ENOUGH[TS10x/*x_GetEnrollProcess返回小于100,请继续TS10xx_EnrollImages,仅调试]
TA_REENROLL[注册失败,需要重新注册]
其他[注册成功,可调用Finish函数获取最终的特征值]
*/
功能描述: SPI片选线拉低/*
功能描述: SPI片选线拉低
*/
*/
int32 TS10xx_GetEnrollFeaSize(void);
/*
当TS10xx_GetEnrollFeaSize的返回值>=10000时,表面注册成功
/*参数1: 入口+出口参数,应用层读取的已注册特征值缓冲区,返回添加后的特征值
参数2: 入口参数,应用层读取的已注册特征值长度
返回:
EM_FUNCTION_FAILED[程序调用顺序错误,仅调试]
TA_INFO_NOT_ENOUGH[TS10xx_GetEnrollProcess返回小于100,请继续TS10xx_EnrollImages,仅调试]
TA_SUCCESS[获取成功]
*/
功能描述: SPI片选线拉低
*/
int16 TS10xx_StoreEnrollFea(uint8 *fea,uint32 uiFeaLen);
/*
将最后一次抓取的图像和所有用户比对
参数1: 入口参数,应用层读取的已注册特征值缓冲区
参数2: 入口参数,应用层读取的已注册特征值长度
返回:
EM_FUNCTION_FAILED[程序调用顺序错误,仅调试]
EM_EMPTY_IMAGE[最后一次获取的图像质量不合格,重新采集]
>=800[比对成功] 注意,比对成功后可回写fea文件,以达到自学习目的,自学习后fea的长度不变。
0-799[失败,重新采集]
*/
int16 TS10xx_MatchAll(uint8 *fea,uint32 uiFeaLen);
/*
删除特征值数据库中指定用户
参数1: 入口+出口参数,特征值文件输入,删除成功后返回删除了指定用户之后的特征值
参数2: 入口+出口参数,特征值文件长度输入,删除成功后返回删除了指定用户之后的特征值长度
参数3: 入口参数,输入用户编号,从1开始计
返回值: TA_SUCCESS[成功] TA_FAIL[失败]
*/
int16 TS10xx_DeleteUser(uint8 *fea,uint32 *puiFeaLen,uint32 uiIndx);
/*
提取最后一次capture成功后留存的原始图像
参数1: 出口参数,用于返回获取图像的数据
参数2: 出口参数,用于返回获取图像的宽度值
参数3: 出口参数,用于返回获取图像的高度值
返回值: TA_SUCCESS[成功]
*/
int16 TS10xx_GetLastRawImage(uint8 *pucImg,uint16 *puwWidth,uint16 *puwHeight);
/*
功能描述: 在调用TS10xx_CaptureImage等待用户输入指纹的过程中,异步的让TS10xx_CaptureImage退出
*/
void TS10xx_SetBreakFlag(void);
/*
功能描述: 在调用TS1060_read_image前初始化传感器,让传感器自校准
*/
/*int16 TS1060_read_image_init(void);
功能描述: SPI片选线拉低
*/
/*
功能描述: 获取当前图像
参数1: 入口参数,图像缓冲区
返回: 0则调用成功,其他失败
示例:
result=TS1060_read_image_init();
if(result!=0)
报错,返回
while(1)
{
if(TS1060_read_image(IMG_ADDR)==0)
显示图像
}
*/
int16 TS1060_read_image(uint8 *buff);
/*抓图显示*/
int16 TS1060_capture_image_for_display(uint8 *buff,uint32 uiTimeOut);
/*功能描述: SPI通讯测试函数,TS1060_Test返回0表示传感器已经连上,否则表示通讯不上*/
int16 TS1060_Test(void);
/*
功能描述: 进入睡眠模式,同时启动手指判断,手指检测到后会在RESET上检测到一个上升沿跳变
返回: TA_SUCCESS 设置成功,其他失败
*/
int16 TS1060_SetDeepSleep(void);
/*
功能描述: 系统在进入休眠探测后,如果RESET上升沿调高,那么需要调用TS1060_ExitSleep退出当前探测状态
返回: TA_SUCCESS 退出成功,其他失败
*/
int16 TS1060_ExitSleep(void);
/*
功能描述: 校准传感器
参数1: 出口参数,用于返回校准数据,大小建议设置为4KByte
返回: TA_SUCCESS 校准成功,其他失败
*/
int16 A083_Static_Calibrate(uint8 *ucCliData);
/*
功能描述: 每次调用前加载校准数据
参数1: 入口参数,用于给驱动加载校准数据
返回: TA_SUCCESS 加载成功,其他失败
*/
int16 Load_A083_Static_CalibrateData(uint8 *ucCliData);
//调用出厂调用获取校验的数据A083_Static_Calibrate,每次采图时都要调用Load_A083_Static_CalibrateData
#ifdef __cplusplus
}
#endif
#endif