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从机,一直监测不到,
一直不广播,导致,无法使用这个认证,如果认证去掉,就完全没问题,不知
道问题处在那里,求解答
Ray Huang1:
有下面吗?别太监了。^_^