void BlockVar(const UINT8 *pImg, UINT32 *p_var, UINT32 *p_avr)
{
UINT8 i;
UINT8 j;
UINT8 *p;
UINT32 AverTemp=0;
UINT32 VarTemp=0;
p=(UINT8 *)pImg;
//block 32*32
for(i=0;i<32;i++)
{
p=(UINT8*)(pImg+256*i);
for(j=0;j<32;j++)
{
AverTemp+=*p;
p++;
}
}
AverTemp>>=10;
*p_avr=AverTemp;
for(i=0;i<32;i++)
{
p=(UINT8 *)(pImg+256*i);
for(j=0;j<32;j++)
{
VarTemp+=SQ((*p)-AverTemp);
p++;
}
}
*p_var=(VarTemp>>10);
}
bool FpIsPressFinger(const UINT8 *pImg)
{
UINT32 AverTemp=0;
UINT32 VarTemp=0;
UINT32 Aver_Var_Val = 0;
UINT32 VarTemps =0;
UINT32 AverTemps = 0;
//BLOCK 1
BlockVar(pImg+(85+6)*256+256/3+11,&VarTemp,&AverTemp);
AverTemps+=AverTemp;
VarTemps+=VarTemp;
//BLOCK 2
BlockVar(pImg+(85+6)*256+256/3+11+32+10,&VarTemp,&AverTemp);
AverTemps+=AverTemp;
VarTemps+=VarTemp;
//BLOCK 3
BlockVar(pImg+(85+7+32+6)*256+256/3+11,&VarTemp,&AverTemp);
AverTemps+=AverTemp;
VarTemps+=VarTemp;
//BLOCK 4
BlockVar(pImg+(85+7+32+6)*256+256/3+11+32+10,&VarTemp,&AverTemp);
AverTemps+=AverTemp;
VarTemps+=VarTemp;
AverTemps>>=2;
VarTemps>>=2;
pr_debug("VarTemps=%u,AverTemps=%u \r\n",VarTemps,AverTemps);
return (bool)(( AverTemps<=185 ) && (VarTemps >=70));
}