CC2541如何在不连接情况下获取周围手机的蓝牙信息
现在需要做的是使用CC2541一上电就搜索周围的带蓝牙手机设备,并且获取到他们的信息,目前使用的simpleBLECentral例子,但是发现找不到手机蓝牙设备,只能找到已经作为从设备的CC2541, 是因为手机为主设备的原因?那该如何做了,请TI 员工帮助一下!
据我所知,主机是无法扫描手机蓝牙的。
是的,我在测试当中发现确实不行,只能找到从设备的BLE。是不是我的方案有问题的呢?
1.从机要获取到主机的的MAC是否只有连接上了才能获取到MAC?
2.但是如果CC2541做为主设备的话,不连接的话为什么还是不能获取到手机的MAC呢,但是可以获取到CC2541的从设备?
现在想获取到手机MAC,有什么方法呢?
首先,android 5.0以前的系统,谷歌没有开放底层,是不能发广播的。此时的手机只能作为observer。你要用central设备搜索手机,先抓个空中包看一下手机发出广播了没有
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();这里的,我的也是,这个是什么原因呢?
1. 手机不会主动发出mac信息,除非是在手机上安装自己的app,自定义广播协议,不过这要求安卓5.0吧,记得是5.0才开放广播权限
2. 不知道你怎么获取2541的mac地址的,如果只靠广播信息,那就是2541固件对广播信息做了特殊处理
3. INIT函数和硬件相关,建议检查硬件配置,软件设置是否匹配