TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2541如何在不连接情况下获取周围手机的蓝牙信息

现在需要做的是使用CC2541一上电就搜索周围的带蓝牙手机设备,并且获取到他们的信息,目前使用的simpleBLECentral例子,但是发现找不到手机蓝牙设备,只能找到已经作为从设备的CC2541, 是因为手机为主设备的原因?那该如何做了,请TI 员工帮助一下!

summer xu:

据我所知,主机是无法扫描手机蓝牙的。

bool zale:

回复 summer xu:

是的,我在测试当中发现确实不行,只能找到从设备的BLE。是不是我的方案有问题的呢?

bool zale:

1.从机要获取到主机的的MAC是否只有连接上了才能获取到MAC?

2.但是如果CC2541做为主设备的话,不连接的话为什么还是不能获取到手机的MAC呢,但是可以获取到CC2541的从设备?

现在想获取到手机MAC,有什么方法呢?

bool zale:

回复 HG:

hi,HG

我是用的是android 4.4.4的版本,使用空中数据抓包发现没有抓到手机蓝牙发出的广播,现在采用central设备也是找不到的。

1.现在使用了另外一种方案,采用配对绑定的方式手机自动连接CC2541,但由于考虑的flash空间有限,就把GAP_BONDINGS_MAX设置为1,不采用CC2541保存所有信息,只是手机单方面保存了保存了信息。在关闭蓝牙后再打开,在程序

case GAP_LINK_ESTABLISHED_EVENT: {       gapEstLinkReqEvent_t *pPkt = (gapEstLinkReqEvent_t *)pMsg;       if ( pPkt->hdr.status == SUCCESS )      {          VOID osal_memcpy( gapRole_ConnectedDevAddr, pPkt->devAddr, B_ADDR_LEN );          gapRole_ConnectionHandle = pPkt->connectionHandle;          gapRole_state = GAPROLE_CONNECTED;

          ……..

发现这个地址曾经绑定过的pPkt->devAddr 但是IOS却不再有GAP_LINK_ESTABLISHED_EVENT这个消息,android还是每次都有的。这个是为什么?

2.那如果我的CC2541也作为一个observer那就能查找到手机的一些信息了吧?包括MAC么?

3.有很多人提到observer这个例子,为什么一直会卡在HAL_BOARD_INIT();这里的,我的也是,这个是什么原因呢?

cedar_xuesong:

回复 bool zale:

1. 手机不会主动发出mac信息,除非是在手机上安装自己的app,自定义广播协议,不过这要求安卓5.0吧,记得是5.0才开放广播权限

2. 不知道你怎么获取2541的mac地址的,如果只靠广播信息,那就是2541固件对广播信息做了特殊处理

3. INIT函数和硬件相关,建议检查硬件配置,软件设置是否匹配

赞(0)
未经允许不得转载:TI中文支持网 » CC2541如何在不连接情况下获取周围手机的蓝牙信息
分享到: 更多 (0)