设置蓝牙的连接状态
你好,设置广播的开启与否,可以通过GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &new_adv_enabled_status );这个函数来设置,请问一下,有没有什么函数可以设置蓝牙是否可以被连接,就是设置蓝牙广播但不可以被连接和蓝牙广播可以被连接这两种状态的切换,谢谢!
waiting,
很简单。
你只要修改广播包的类型就行。
广播包分为可被连接的广播包和不能被连接的广播包。
if(current_adv_EVENT_TYPE_status==GAP_ADTYPE_ADV_IND)
{
new_adv_EVENT_TYPE_status=GAP_ADTYPE_ADV_NONCONN_IND ;
SerialPrintString("non connected\r\n");
}
else
{
new_adv_EVENT_TYPE_status=GAP_ADTYPE_ADV_IND ;
SerialPrintString("connect\r\n");
}
GAPRole_SetParameter( GAPROLE_ADV_EVENT_TYPE, sizeof( uint8 ), &new_adv_EVENT_TYPE_status );
我在这里做了一个切换,发现只要一切换本来存在的广播也没有了,只能自己再重启广播,是怎么回事呢?
waiting,
更新广播参数之前,你得先停止原先的广播,然后再更新参数,然后再重新开始广播。
对的 ,后来我如下处理:
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &adv_enabled_status_close );//关闭广播
if(current_adv_EVENT_TYPE_status==GAP_ADTYPE_ADV_IND)
{
new_adv_EVENT_TYPE_status=GAP_ADTYPE_ADV_NONCONN_IND ;
SerialPrintString("non connected\r\n");
}
else
{
new_adv_EVENT_TYPE_status=GAP_ADTYPE_ADV_IND ;
SerialPrintString("connect\r\n");
}
GAPRole_SetParameter( GAPROLE_ADV_EVENT_TYPE, sizeof( uint8 ), &new_adv_EVENT_TYPE_status );
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &adv_enabled_status_open );//打开广播
结果还是一样。
waiting,
你空中抓包看了吗?
正常情况广播包的类型应该变了。
是的,广播包的类型是变了,但是同时广播在改变广播包类型后不能打开了,好奇怪,就是我刚刚那段代码最后那里修改了广播包类型再开启广播,发现广播没有开启成功!
