实验现象:
1。a主机扫描到(从机_M) 的mac连接成功
2。b主机同时也扫描到(从机_M)的mac连接超时
3。问题:b主机在扫描其它从机(从机_N)时,mac能扫描到,但总是连接不上。此时如果让(从机_M)重新广播,这时候b主机就能连上(从机_M)
4。总结:通过以上实验当b主机扫描到了从机_M时,好像一直记住了从机_M的mac,其它从机的mac能描到但不去连接或者连接不上。更重要的是触发连接是通过 multi_role_enqueueMsg(MR_START_CONNECT_EVT,NULL);往队列里面丢消息,最终调用此函数
void mr_doConnect(void)
{
uint8_t status;
GAPRole_CancelDiscovery();//1909 连接之前关闭监听
// Connect to current device in scan result
status = GAPRole_EstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE,
DEFAULT_LINK_WHITE_LIST,
label_parameter.addrType, label_parameter.label_mac);
#ifdef MYDEBUG //
UartTask_Write(label_parameter.label_mac, 6); //add lhj 190903
UartTask_Write(&status,1);
#endif}连不成功,消息感觉也没有从队列中去除,mr_doConnect函数一直在执行,直到扫描到从机_M的mac才能成功连接。出现以上现象不知道是哪里没有处理好嘛?
5。在测试过程中:/ Connect to current device in scan result
status = GAPRole_EstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE,
DEFAULT_LINK_WHITE_LIST,
label_parameter.addrType, label_parameter.label_mac);函数只要被调用一次好像一直在在执行。
Alvin Chen:
能否用抓包文件说明
huijun li:
回复 Alvin Chen:
我测试一下,后面补上,抓包数据看不太懂主要。可能的原因有哪些啊。
Alvin Chen:
回复 huijun li:
因为理论上这些互不影响。所以要看抓包,到底连接的地址是谁,不能连接的code是多少要看抓包。