我按照论坛上的做法,改成一直在广播。
测试时,长时间不连接,再去连接设备,都是正常的。
现在的问题是,偶尔会出现不能scan到的问题
此时,
gapProfileState = GAPROLE_ADVERTISING
用btool抓包
[1] : <Tx> – 10:37:45.140
-Type : 0x01 (Command)
-Opcode : 0xFE04 (GAP_DeviceDiscoveryRequest)
-Data Length : 0x03 (3) byte(s)
Mode : 0x03 (All)
ActiveScan : 0x01 (Enable)
WhiteList : 0x00 (Disable)
Dump(Tx):
01 04 FE 03 03 01 00
————————————————————————————————————————
[2] : <Rx> – 10:37:45.171
-Type : 0x04 (Event)
-EventCode : 0xFF (HCI_LE_ExtEvent)
-Data Length : 0x06 (6) bytes(s)
Event : 0x067F (GAP_HCI_ExtentionCommandStatus)
Status : 0x00 (Success)
OpCode : 0xFE04 (GAP_DeviceDiscoveryRequest)
DataLength : 0x00 (0)
Dump(Rx):
04 FF 06 7F 06 00 04 FE 00
————————————————————————————————————————
[3] : <Rx> – 10:37:55.437
-Type : 0x04 (Event)
-EventCode : 0xFF (HCI_LE_ExtEvent)
-Data Length : 0x04 (4) bytes(s)
Event : 0x0601 (GAP_DeviceDiscoveryDone)
Status : 0x00 (Success)
NumDevs : 0x00 (0)
Dump(Rx):
04 FF 04 01 06 00 00
这个问题出现,需要app连接断开几次,也不是必定出现
是协议栈的bug吗?
该怎么进一步分析
有解决方案吗?
谢谢
lin ruan:
补充一下
scan不到后
执行
uint8 initial_advertising_enable = FALSE; GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable ); GAPRole_TerminateConnection();
再执行
if( gapProfileState != GAPROLE_CONNECTED ) { uint8 current_adv_enabled_status; uint8 new_adv_enabled_status;
//Find the current GAP advertisement status GAPRole_GetParameter( GAPROLE_ADVERT_ENABLED, ¤t_adv_enabled_status );
if( current_adv_enabled_status == FALSE ) { new_adv_enabled_status = TRUE; } else { new_adv_enabled_status = FALSE; }
//change the GAP advertisement status to opposite of current status GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &new_adv_enabled_status ); }
就又可以连上了
Barbara Wu:
回复 lin ruan:
这种情况建议您用CC2540 USB Dongle和PC端的Packet Sniffer一起使用 看是否空口能够扫描到广播端的广播数据
如果是 则是btool的问题 如果不是 则再从广播端找原因
lin ruan:
回复 Barbara Wu:
我觉得肯定不是btool的问题。
此时用ipad和手机都不能找到设备。
我看到有网友说是32k晶振的问题
但是,我重新开关一次广播就好了,应该也不是晶振的问题
我想问一下TI
我用的协议栈1.4.0处理这些设备的链接,断线,超时,再链接,再断线方面是否经过考验?
是我哪里没有配置好,还是协议栈本身有bug?
cedar_xuesong:
回复 lin ruan:
“我用的协议栈1.4.0处理这些设备的链接,断线,超时,再链接,再断线方面是否经过考验?”
我这边完全正常,你抓一下包,看看实际的数据