CC2541做主机(Central)持续扫描寻找地址已知的外设(Peripheral),要求扫描期间不能对外发射信号/数据
大家好,有问题请教,请大伙帮忙解答:
现我需要用CC2541做主机(Central),持续扫描找寻地址已知的外设(Peripheral),扫描期间要求不能对外发射信号/数据,找寻到目标设备则发起连接。具体要求为:
1,CC2541做主机持续扫描找寻目标设备(目标设备地址已知),需确保扫描期间不对外发射无线信号;
考虑采用被动扫描方式。
2,需尽量减少扫描期间的功耗--允许目标设备进入信号范围后延时5秒扫描到;
考虑设置扫描间隔为5秒。
3,确保目标设备进入信号范围内能准确扫描到--实际使用环境中可能有很多不同外设(Peripheral)在广播。
现有几个问题:
问题一,工作在被动扫描方式,CC2541是否完全不对外发射无线信号。
问题二,为确保目标设备能扫描到,再综合功耗考虑,扫描窗口定义多大合适。
问题三,就具体实现目前有两种想法,请帮忙指导可行性:
方法1:
先配置扫描方式,HCI_LE_SetScanParamCmd(HCI_SCAN_PASSIVE,
scanInterval,
scanWindow,
ADDRTYPE_PUBLIC,
HCI_SCAN_PASSIVE );
再定期试着直接连接目标设备:GAPCentralRole_EstablishLink( DEFAULT_LINK_HIGH_DUTY_CYCLE,
DEFAULT_LINK_WHITE_LIST,
ADDRTYPE_PUBLIC, DeviceAddr );
方法2:
先配置扫描方式,HCI_LE_SetScanParamCmd(HCI_SCAN_PASSIVE,
scanInterval,
scanWindow,
ADDRTYPE_PUBLIC,
HCI_SCAN_PASSIVE );
再发起扫描:GAPCentralRole_StartDiscovery( DEFAULT_DISCOVERY_MODE,//DEVDISC_MODE_ALL
DEFAULT_DISCOVERY_ACTIVE_SCAN,//TRUE
DEFAULT_DISCOVERY_WHITE_LIST );//FALSE
扫描完成,若扫描到目标设备,则发起连接:
GAPCentralRole_EstablishLink( DEFAULT_LINK_HIGH_DUTY_CYCLE,
DEFAULT_LINK_WHITE_LIST,
addrType, DeviceAddr );
以上请烦请大家帮忙指导,谢谢!
问题一, 是的
问题二 我觉得应该根据你的广播间隔和广播时长来定义扫描窗口
问题三,我觉得方法二会比较好
谢谢解答。
就实现方法二,现我基于simpleBLECentral工程调试,发现若在扫描设备前加扫描配置则会无法扫描到设备,Code实现如下:
HCI_LE_SetScanParamCmd(HCI_SCAN_PASSIVE,
17,
17,
ADDRTYPE_PUBLIC,
HCI_SCAN_PASSIVE );
GAPCentralRole_StartDiscovery( DEFAULT_DISCOVERY_MODE,
FALSE,
FALSE );
有人帮忙解答吗?
怎么实现CC2541做Central被动扫描外设,并连接外设。
各位大侠。
你好,请问你最后是怎么解决 的