1.在37,38,39 广播通道发 ADV_EXT_IND,注意这时候的广播 没有开RX, 都是TX
2.发完ADV_EXT_IND之后,什么时候发AUX_ADV_IND。
3. Aux offset 怎么设置?
正常的话 ,每个广播通道对应不同 AUX OFFSET ,对于扫描就知道,什么时候发aux_offset,准备收就可以呀。
4.周期广播的时候,那怎么收adv_sync_ind?
这个时候需要注意,扩展包扫描窗口可以开小,但是扩展包扫描间隔必须大一点。
收到aux_adv_ind之后,
根据跳频算法,到相应通道去接收。
Interval 这个参数很重要,是两个adv_sync_ind的间隔时间
5.对于周期广播事件与周期扫描事件,之间没有任何交互。那怎么能够做到一直保持同步呢?
对于广播者来说,它是按照 adv_ext_ind -> aux_adv_ind -> adv_sync_ind .... 发包顺序来弄。
但是对于扫描者, 在同步状态时候,正收 adv_sync_ind包时候,又要收其他的包像 adv_ext_ind和aux_adv_ind。 不得不说,协议栈太牛逼了。
从图上看,即使跨越不同广播事件,两个adv_sync_ind 还能保持一样的间隔,为周期扫描就能够一直扫描到这个adv_sync_ind。
这个真的特别棒。
6 . 既然能够 两个adv_sync_ind 保持一样间隔interval。那我还要 adv_ext_ind的间隔咋整?总不能光发 ad_sync_ind,不管adv_ext_ind的存在。
这时候,事件优先级派上用场。
既然是周期广播,那就要周期发adv_sync_ind,优先级为最高。而adv_ext_ind靠边站,这时候就会体现 两个adv_ext_ind的间隔会稍微变化与调整,来保证adv_sync_ind 的固定间隔。
周期扫描,同理。以扫到 adv_sync_ind为优先级最高,但是 扩展扫描也有间隔,哪咋办呢?
这时候就是把 扩展扫描 的优先级与周期扫描的优先级,差上好几个等级。发生冲突时候,每次增加扩展扫描的优先级,等扩展扫描优先级 超过 周期扫描 的,那就处理 扩展扫描,收adv_ext_ind,再收aux_adv_ind,再进入同步状态,再继续收同步包。