Quantcast
Channel: 蓝牙论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 7485

关于cc2541从机断开后监测不到,一直不广播

$
0
0
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从机,一直监测不到,
一直不广播,导致,无法使用这个认证,如果认证去掉,就完全没问题,不知
道问题处在那里,求解答

Viewing all articles
Browse latest Browse all 7485

Trending Articles