CC2540主从连接
大家好:
想找大家请教如下两个问题:
1.当同一个环境中有多台CC2540同时广播时,主模块如何只扫描到特定的从模块,从而防止其他模块的干扰。通过从模块广播不同的内容然后主模块来判断识别吗?相应的函数是哪个?
2.如何实现一主3从上电自动连接?
谢谢!
Hi peng,
1 你可以在从模块的广播数据中加入随意自定义内容, 这样可以做到识别.
2 你可以让主设备一直发链接请求, 从设备一上电就自动发广播, 这样就都能自动连上.
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事件。
你 想修改BTool? BTool无法修改.
请用单步调式, 看一下代码到哪里了再做一下判断.
Hi Yan,
除了这个方法之外,我可不可以通过绑定列表进行有选择的链接?即只有配对并绑定的设备我才发送链接请求。谢谢!
绑定列表没有这个功能.
另外你可以用white list功能, 只允许在列表中的设备连接.
那我怎么写while list呢?直接从绑定列表里读出设备,然后写到while list可以吗?
是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进行有选择的链接吗?
谢谢!
xie,
bingo!
yeah!
Hi peng
上电自动连接你做好了吗,能不能提供一下方法啊?
你好,我也想问这个自动连接的问题,虚要改主从机的哪些函数哪些配置啊?求指导,谢谢各位大神