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.
请问CC2540如何象packet sniffer一样去搜索空中的广播。
即开始搜索后,会返回任何一个扫描到的广播,不会因扫描超时或达到最大扫描数而停止,
会持续去扫描广播,就像抓包工具packet sniffer一样。
我在SimpleBLECentral例程上,调用HCI_LE_SetScanEnableCmd这个函数,似乎可以启动搜索过程,但是未见有HCI数据返回。
Geevar,
packet sniffer的工作原理和BLE是不一样的。所以你想要在BLE协议栈上做到这个是不可行的。
你的确可以调用HCI_LE_SetScanEnableCmd()进行手动开启和关闭扫描。
如果你参数一切设置正确的话,应该会通过GAP_DEVICE_INFO_EVENT 报到上面去。
Hi, Y
那是不是就是说我不可能用TI 的BLE协议栈,实现这样的广播搜索功能咯?
你之后写道的 "如果你参数一切设置正确的话,应该会通过GAP_DEVICE_INFO_EVENT 报到上面去”,
是不是表示GAP_DEVICE_INFO_EVENT 返回的搜索结果,还是和调用startDiscovery函数一样的效果?
另外,我应该设置哪些参数,才能使调用HCI_LE_SetScanEnableCmd()后,有GAP_DEVICE_INFO_EVENT消息返回?
谢谢!
Gevvar,
理论上,是的。实现这样的广播搜索功能需要有不同频段扫描功能。2540 dongle能做的也只是在一个频段上扫描而已。更专业的抓包工具,会具有全频段扫描功能,就是能扫描2.4G 全频段,当然,那些工具是要你的血的。
HCI_LE_SetScanParamCmd() 这个函数必须先调用,设置你的扫描参数,然后调用HCI_LE_SetScanEnableCmd()。
Hi Y,
之前搜索广播问题我可能没有描述清楚。
我需要搜索的设备就是一些 BLE Peripheral设备,只是我希望得到它们发出的每一个advertising,
假如这个外围设备每100毫秒发出一次广播,我的中心设备也期望每100毫秒就能搜到一次广播。
如果蓝牙没有跳频机制,都好说,随意找一个工具就OK
这里面的关键问题是蓝牙协议要跳频,TI的抓包工具只能在一个频段抓,会丢掉一些信息
所以,能持续搜索,基本原理很简单
就是直接操作寄存器层面,一直保持在接收状态,然后不断解析监听的数据流
cedar_xuesong:
广播者会在3个频段都发送,我只需要在一个频段上获取到就可以了。
TI 协议栈的的StartDiscovery()函数启动后,HCI层搜索到的许多广播信息应该被上层过滤掉了,
比如同只返回一次同一个设备的广播消息,加入了设备数、时间限制。
直接操作寄存器没试过,有空试试