我的应用场景要求是在一段时间内关闭蓝牙
我的方法是在蓝牙任务里开启了一个定时器,到达时间后执行
GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t),
&initialAdvertEnable);
initialAdvertEnable = FALSE;
失能蓝牙广播,可是到达设置时间,函数执行后,使用app还能查到蓝牙广播,用app连接后重新断开,此时才搜索不到蓝牙,请问这是什么原因?
Alvin Chen:
你说的应该是扫描回应包,那个应该是你手机端缓存的,你可以试一下其他手机同时是否可以搜到。
user5111551:
回复 Alvin Chen:
您好,我用其他手机试过了也能搜索到蓝牙,并且检查了功耗,跟蓝牙广播时的功耗一致,证明蓝牙此时还是在广播的,我预想的是执行这个函数能够直接关闭蓝牙广播,从而来减少我的设备功耗,可是我的操作并没有达到目的。
Alvin Chen:
回复 user5111551:
这个操作是正常的,请附上抓包文件看一下。 GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t),&initialAdvertEnable);
blog.csdn.net/…/55095874
Susan Yang:
关闭蓝牙的代码没有问题。建议您设置断点调试一下,看能否在定时时间到之后进入蓝牙关闭代码。
另外建议您尝试一下单次限时广播:
先设置广播的持续时间,如30s:TGAP_GEN_DISC_ADV_MIN = 30000。GAP_SetParamValue(TGAP_GEN_DISC_ADV_MIN,30000).
然后注意设置gapRole_AdvertOffTime = 0。
GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime );
这样开启一次广播,持续30秒后就自动停止了。
e2echina.ti.com/…/62121
Susan Yang:
回复 user5111551:
很高兴您能解决问题!