HI,ALL
static void simpleProfileChangeCB( uint8 paramID )
{
uint8 i;
//uint8 newValue;
uint8 newValueBuf[SIMPLEPROFILE_CHAR1_LEN];
uint8 strTemp[20];
char deg_Buf[32];
switch( paramID )
{
case SIMPLEPROFILE_CHAR1:
SimpleProfile_GetParameter( SIMPLEPROFILE_CHAR1, newValueBuf );
if(user_verify == 0)
{
sprintf(strTemp, "IM:%s", sys_config.gprs_imei);
if(str_cmp(newValueBuf, strTemp,18)) //USER_Verify
{
osal_mem_free(newValueBuf);
user_verify = 1; //用户认证通过
BLE_WAKEUP_MCU; //唤醒单片机P1.2
#if (defined DEBUG) && (DEBUG == TRUE)
sprintf(deg_Buf, "-->%s\r\n", "VerifyOK!");
sbpSerialAppWrite((uint8*)deg_Buf, osal_strlen(deg_Buf));;
#endif
}
else
{
#if (defined DEBUG) && (DEBUG == TRUE)
sprintf(deg_Buf, "-->%s\r\n", "VerifyError!");
sbpSerialAppWrite((uint8*)deg_Buf, osal_strlen(deg_Buf));
#endif
//用户认证失效
//user_verify = 0;
GAPRole_TerminateConnection(); //断开蓝牙连接
//Serial_Delay(1000); //设置参数后,适当延时, 以便上一次发送的数据正常发送出去
HAL_SYSTEM_RESET();
}
}
else //用户认证通过,执行透传
{
sbpSerialAppWrite ((uint8*)newValueBuf,simpleProfileChar1Len);
}
break;
default:
// should not reach here!
break;
}
}
目前我是在回调函数中增加了一个简单认证,具体是解析app发过来的数据,
如果与我对应的本地存储的数据相同,那么就算认证通过,如果不相同就认
证不通过,通过的话把数据发送到串口
user_verify是一个全部bool型变量,默认是false,当认证通过,则编程true,
如果认证ok就可以传输数据到串口,但是只要把这部分认证的代码,加上,
app发送数据,可以通过认证,但是会出现,认证过后,5s左右
就会断开连接,此时app能监测到连接断开,但是2541从机,一直监测不到,
一直不广播,导致,无法使用这个认证,如果认证去掉,就完全没问题,不知
道问题处在那里,求解答