nRF5 SDK(BLE)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nicole088/article/details/86508199


Advertising Module

1.Advertising modes

  • Directed High Duty
  • Directed
  • Fast
  • Slow
  • Idle
    在模块初始化期间,您可以决定启用上述哪种广告模式。
  • Directed High Duty – 断开连接后,应用程序会立即尝试重新连接到最近连接的对等方。
    这种advertising模式对于保持与一个对等体的连接以及从意外断开连接无缝恢复非常有用。 这只是非常短暂的,因为它很有可能阻止其他无线流量。 Directed High Duty只有在禁用扩展广告时才有效。ble_adv_modes_config_t。

  • Directed – 在最初的Directed High Duty advertising 爆发之后,应用程序可以继续直接向其最后一个对等方做advertising,但与上面的“Directed High Duty”相比具有更低的占空比。

  • Fast – 该应用程序会在短时间内迅速向周围设备发布advertising。

  • Slow - 该应用程序向周围设备做advertising,但advertising间隔时间比Fast模式要长。 这种advertising模式可以节省电力并为可能存在的其他无线设备带来更少的流量。 但是,在慢速 Fast advertising 模式下查找设备并连接到设备可能需要更长时间。

  • Idle – 该应用程序停止advertising。

广播时,模块将通过启用的广告模式,直到建立连接或广告超时。 广播流程是Direct High Duty -> Direct -> Fast -> Slow -> Idle。 如果您开始以Direct模式投放广播,则模块会首先尝试Direct投放模式广播。
如果没有关于先前连接的信息或先前的对等方不可用,则模块尝试Fast广播。
如果在Fast广播超时之前没有对等方连接,则应用程序会转移到Slow的广播间隔,从而减慢广播。
如果在配置的超时之前没有对等连接,则广播停止。

跳过禁用的广播模式。 (如果在ble_adv_modes_config_t中启用了扩展广播,则始终会跳过Directed High Duty)。 您可以“Directed”,“Fast”和“Slow”配置超时阈值和广播时间间隔。 “Directed High Duty”是一次性爆发,“Idle”不是广播,因此它没有间隔或超时。

2. Whitelist

白名单广播影响“Fast ”和“Slow ”广播模式的过滤参数。 白名单存储之前已连接的所有设备。
如果您启用了白名单,则应用程序会专门通告白名单中的设备。您可以在模块初始化期间启用或禁用白名单广播。 初始化后,您可以暂时禁用一个连接的白名单广播。 调用ble_advertising_restart_without_whitelist以在当前模式下重新启动广播,但不使用白名单。 但是,设备断开连接后,白名单将再次生效。 要永久禁用白名单广播,必须在初始化功能中禁用它。

3. Usage

在模块初始化期间,启用要使用的广播模式并配置参数。 您还应该提供在广播转换为新模式时调用的事件处理程序。 使用事件处理程序添加功能,例如通过在广播开始时闪烁LED来指示向用户的这种转换,或者在没有找到对等时关闭应用程序。

扫描二维码关注公众号,回复: 5068200 查看本文章

在ble_advertising_init_t :: config中,必须将ble_adv_legacy_enabled设置为真才能使您的广告与不支持扩展广告的旧版蓝牙LE设备成功通信。(广告扩展在蓝牙5中引入。)

如果在初始化期间没有提供事件处理程序(更准确地说,是NULL值),基本广播仍然可以工作,但是没有其他功能。最重要的是,当广播进入BLE_ADV_MODE_IDLE状态时,应用程序不会关机。

事件处理程序还必须处理更新白名单(BLE_ADV_EVT_WHITELIST_REQUEST)和对等地址(BLE_ADV_EVT_PEER_ADDR_REQUEST)的请求。 如果忽略对等地址请求事件,则不能使用定向广播模式。 同样,如果忽略白名单请求事件,则快速和慢速广播模式将不使用白名单。
回复BLE_ADV_EVT_WHITELIST_REQUEST事件时,应用程序必须按以下方式提供白名单:

  • 如果应用程序使用对等管理器:通过调用pm_whitelist_get检索白名单(必须先调用pm_whitelist_set)。
    然后,使用pm_whitelist_get的输出调用ble_advertising_whitelist_reply。

  • 如果应用程序不使用对等管理器:调用sd_ble_gap_whitelist_set。
    然后,调用ble_advertising_whitelist_reply。

注意
使用sd_ble_cfg_set设置特定于连接的配置时,必须为每个配置创建一个标记。
调用sd_ble_gap_adv_start()和sd_ble_gap_connect()时必须提供此标记。
如果您的应用程序使用广播模块,则必须在开始广播之前调用ble_advertising_conn_cfg_tag_set。

4. Message Sequence Chart

1)在下面的序列图中,启用所有模式,并触发所有事件。
在这里插入图片描述
2)消息序列图示例
让我们看一个典型应用程序的小例子。 它不使用所有功能,只使用BLE_ADV_MODE_FAST。
在此示例中,应用程序通告,建立连接,然后断开连接。 广播再次被触发,但没有找到对等点并且应用程序进入休眠状态。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/nicole088/article/details/86508199