问题的出现:
手机在重连蓝牙的过程中突然断开蓝牙,造成连接失败,此时CC2640做处理如下(所在文件peripheral.c -> gapRole_processGAPMsg()):
case GAP_MAKE_DISCOVERABLE_DONE_EVENT:
case GAP_END_DISCOVERABLE_DONE_EVENT:
{
// Since gapRole_AdvertOffTime is set to 0, the device should not
// automatically become discoverable again after a period of time.
// Set enabler to FALSE; device will become discoverable again when
// this value gets set to TRUE
if (gapRole_AdvEnabled == TRUE)
{
**gapRole_AdvEnabled = FALSE;**
}
else
{
gapRole_AdvNonConnEnabled = FALSE;
}
// Update state.
if (gapRole_state == GAPROLE_CONNECTED_ADV)
{
// In the Advertising Off period
gapRole_state = GAPROLE_CONNECTED;
}
else
{
// In the Advertising Off period
**gapRole_state = GAPROLE_WAITING;**
}
notify = TRUE;
}
break;
广播停止,产生断线处理事件。
解决方法:
断线后,若要继续广播,强制调用启动广播函数GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8), &advertising_enable);