大家好:
想找大家请教如下两个问题:
1.当同一个环境中有多台CC2540同时广播时,主模块如何只扫描到特定的从模块,从而防止其他模块的干扰。通过从模块广播不同的内容然后主模块来判断识别吗?相应的函数是哪个?
2.如何实现一主3从上电自动连接?
谢谢!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好:
想找大家请教如下两个问题:
1.当同一个环境中有多台CC2540同时广播时,主模块如何只扫描到特定的从模块,从而防止其他模块的干扰。通过从模块广播不同的内容然后主模块来判断识别吗?相应的函数是哪个?
2.如何实现一主3从上电自动连接?
谢谢!
Hi Yan,
能否详细说一下,我主机使用的是HostTest模板,扫描时怎么屏蔽掉特定广播数据的节点信息。是在*processEventsGAP()中的case GAP_DEVICE_DISCOVERY_EVENT加入什么函数来判别?谢谢
无法屏蔽别人的广播.
你能做的只是在广播端, 广播的时候加些advertising data 和 scan response data, 查找方通过这些数据来取舍设备.
谢谢,我可以在GAP_DEVICE_INFO_EVENT中通过 scan response data区分从设备,但接下来我准备将不需要的从设备不要显示在BTOOL中的slave BDA框中,不知道在GAP_DEVICE_DISCOVERY_EVENT中怎么处理。
另外,上面没有成功后我尝试扫描到后直接根据scan response data来选择性的连接,在GAP_DEVICE_INFO_EVENT中添加:
if(buf[2]==0x53)
{
linkReq.taskID = hciExtApp_TaskID;
linkReq.highDutyCycle = FALSE;
linkReq.whiteList = FALSE;
linkReq.addrTypePeer = ADDRTYPE_PUBLIC;
VOID osal_memcpy( linkReq.peerAddr, resBuf, B_ADDR_LEN );
GAP_EstablishLinkReq( &linkReq );
//osal_set_event (hciExtApp_TaskID, GAP_LINK_ESTABLISHED_EVENT);
}
也不行,没有调用GAP_LINK_ESTABLISHED_EVENT事件。
是white list.
HCI有个专门的LE_Add_Device_To_White_List命令, 你可以看一下core spec, 也可以看一下TI协议栈里面的HCI层接口, 应该有这个命令的使用方法.
Hi Yan,
增加白名单的命令我已经找到了,VOID HCI_LE_AddWhiteListCmd( HCI_PUBLIC_DEVICE_ADDRESS, bonds[i].publicAddr ); 例子程序中的代码貌似从绑定列表中将地址写入white list。
static void gapBondMgr_SyncWhiteList( void )
{
//erase the White List
VOID HCI_LE_ClearWhiteListCmd();
// Write bond addresses into the White List
for( uint8 i = 0; i < GAP_BONDINGS_MAX; i++)
{
// Make sure empty addresses are not added to the White List
if ( osal_isbufset( bonds[i].publicAddr, 0xFF, B_ADDR_LEN ) == FALSE )
{
VOID HCI_LE_AddWhiteListCmd( HCI_PUBLIC_DEVICE_ADDRESS, bonds[i].publicAddr );
}
}
}
现在我想问,从设备也可以用white list进行有选择的链接吗?
谢谢!