我们知道当主机需要开启扫描功能时调用GAPCentralRole_StartDiscovery( DEFAULT_DISCOVERY_MODE, DEFAULT_DISCOVERY_ACTIVE_SCAN, DEFAULT_DISCOVERY_WHITE_LIST ) 函数,然后此函数返回GAP_DeviceDiscoveryRequest( ¶ms )。那么问题来了:
1. 调用GAPCentralRole_StartDiscovery函数开启扫描功能以后,主机一直保持扫描状态还是扫描一段时间后关闭扫描功能?扫描持续时间在哪儿设置?
2. 还有GAP_DEVICE_DISCOVERY_EVENT事件是扫描功能被关闭也就是扫描过程结束后会触发还是扫描一段时间后就会触发?
3. 如果是扫描过程结束后触发了GAP_DEVICE_DISCOVERY_EVENT事件,那么是怎么结束扫描功能的(因为没有加调用GAPCentralRole_CancelDiscovery()函数程序段的情况下也会触发GAP_DEVICE_DISCOVERY_EVENT事件)?
mark_xu:
1、通过 以下这个方式设置扫描时间
GAP_SetParamValue( TGAP_GEN_DISC_SCAN, DEFAULT_SCAN_DURATION );
2、这个是主机的GAP的状态,就是发现了从设备,这个状态与其它状态一样,只在扫描到设备时出现一次,如果再次发起扫描,再扫描 到设备又会进入这个状态
3、自己研究一下GAP里面的函数及link layer层的函数,研究不出来看一下蓝牙标准
4、希望你好好研究一下蓝牙标准,基础太薄弱,不适合这么早开发产品,如果就这种状态开发产品,估计开发出来也是漏洞百出,为了您 的产品,请您 补一下蓝牙的基础知识,谢谢!
5、希望可以帮到你,祝你好运!
Ayongga Musqin:
回复 mark_xu:
扫描态有被动扫描与主动扫描两种,我想问一下:
1.普通扫描模式与受限扫描模式是什么概念?与扫描态有什么关系和区别?
2.一般情况下选择哪种扫描策略?协议栈默认扫描策略是什么?
yanyan wang1:
回复 mark_xu:
hi,mark
1、通过 以下这个方式设置扫描时间
GAP_SetParamValue( TGAP_GEN_DISC_SCAN, DEFAULT_SCAN_DURATION );
请问TGAP_GEN_DISC_SCAN这个扫描时间与 TGAP_GEN_DISC_SCAN_INT及 TGAP_GEN_DISC_SCAN_WIND有什么区别联系吗
mark_xu:
回复 yanyan wang1:
summer xu:
回复 Ayongga Musqin:
只有主动扫描才能获取response data,被动扫描只能获取advertising data。
vlp zee:
回复 mark_xu:
scan Interval, is defined as the interval between the start of two consecutive scan windows.
希望你好好研究一下蓝牙标准,基础太薄弱,不适合这么早开发产品,如果就这种状态开发产品,估计开发出来也是漏洞百出,为了您 的产品,请您 补一下蓝牙的基础知识,谢谢!
chen chen25:
调用GAPCentralRole_StartDiscovery函数开启扫描功能以后,主机扫描一段时间后关闭扫描功能。扫描持续时间由以下两个函数设置
GAP_SetParamValue( TGAP_GEN_DISC_SCAN, DEFAULT_SCAN_DURATION ); GAP_SetParamValue( TGAP_LIM_DISC_SCAN, DEFAULT_SCAN_DURATION );
函数中,参数宏DEFAULT_SCAN_DURATION就是用来设置扫描时间的,如
#define DEFAULT_SCAN_DURATION 4000 //表示扫描时间为4秒
kqian0327:
你好,
回答你的问题:
1. 调用GAPCentralRole_StartDiscovery函数开启扫描功能以后,主机一直保持扫描状态还是扫描一段时间后关闭扫描功能?扫描持续时间在哪儿设置?
GAP_SetParamValue( TGAP_GEN_DISC_SCAN, DEFAULT_SCAN_DURATION );
2. 还有GAP_DEVICE_DISCOVERY_EVENT事件是扫描功能被关闭也就是扫描过程结束后会触发还是扫描一段时间后就会触发?
扫描一次如果发现到设备,该事件就会被触发。每次扫描都会触发一次该事件。
3. 如果是扫描过程结束后触发了GAP_DEVICE_DISCOVERY_EVENT事件,那么是怎么结束扫描功能的(因为没有加调用GAPCentralRole_CancelDiscovery()函数程序段的情况下也会触发GAP_DEVICE_DISCOVERY_EVENT事件)?
只有扫描完scan time时才会进入GAP_DEVICE_DISCOVERY_EVENT。