请教蓝牙配网Blefi和gatt server共存的问题

jiekouliu
Posts: 4
Joined: Mon May 29, 2023 7:37 am

请教蓝牙配网Blefi和gatt server共存的问题

Postby jiekouliu » Mon May 29, 2023 7:53 am

请教下有个项目既要使用蓝牙配网Blefi,又要使用ble作为服务器(gatt server),这2者能否共存?blefi例程中esp_ble_gap_register_callback(esp_blufi_gap_event_handler),和gatt server例程中esp_ble_gap_register_callback(gap_event_handler)注册gap event callback是否冲突?怎么处理能够共存?

ESP_zhanghaipeng
Posts: 38
Joined: Thu May 04, 2023 3:49 am

Re: 请教蓝牙配网Blefi和gatt server共存的问题

Postby ESP_zhanghaipeng » Fri Jun 02, 2023 7:57 am

1-gap event callback 会发生冲突

2-如果这两个功能都要使用,可以考虑将这两个功能的 gap event callback 合成一个。在同一个回调函数中处理 gap 事件。

jiekouliu
Posts: 4
Joined: Mon May 29, 2023 7:37 am

Re: 请教蓝牙配网Blefi和gatt server共存的问题

Postby jiekouliu » Thu Jun 08, 2023 3:31 am

ESP_zhanghaipeng wrote:
Fri Jun 02, 2023 7:57 am
1-gap event callback 会发生冲突

2-如果这两个功能都要使用,可以考虑将这两个功能的 gap event callback 合成一个。在同一个回调函数中处理 gap 事件。
好的,谢谢,请问有没有合并demo可以参考?

jiekouliu
Posts: 4
Joined: Mon May 29, 2023 7:37 am

Re: 请教蓝牙配网Blefi和gatt server共存的问题

Postby jiekouliu » Thu Jun 08, 2023 5:22 am

ESP_zhanghaipeng wrote:
Fri Jun 02, 2023 7:57 am
1-gap event callback 会发生冲突

2-如果这两个功能都要使用,可以考虑将这两个功能的 gap event callback 合成一个。在同一个回调函数中处理 gap 事件。
你好,我把blufi例程中esp_blufi_gap_register_callback->esp_ble_gap_register_callback BLUFI注册GAP回调的函数注释掉,在gatt_server_service_table例程中gap_event_handler的ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT中调用esp_ble_gap_start_advertising 2次,参数分别为blufi的blufi_adv_params和gatt_server_service_table例程本身的adv_params。这里不知道应该调用一个还是2次?
另外:
blufi和gatt_server,这2个例程注册完事件后都需要调用esp_ble_gap_set_device_name和esp_ble_gap_config_adv_data函数,那么共存时该怎么调用?只需要在一个enevt_call中调用一次,还是都需要调用?

ESP_zhanghaipeng
Posts: 38
Joined: Thu May 04, 2023 3:49 am

Re: 请教蓝牙配网Blefi和gatt server共存的问题

Postby ESP_zhanghaipeng » Wed Jun 14, 2023 11:20 am

问题一:

- 设置一次 adv param(使用 blufi_adv_params)。
- 设置一次 adv data(使用 blufi_adv_data)。
- 调用一次 esp_ble_gap_start_advertising。

问题二:

在共存时,只能使用 blufi 的设置,因为这些信息被使用到。

在创建数据库时,可以同时创建 blufi 和自定义 GATT 服务器的服务,实现共存功能。

以上是最简单的共存实现方法,但是 adv param 和 adv data 只能使用 blufi 的。

备注:

如果想使用两者的 adv data 数据,可以使用定时器功能,轮流发送两者的广播数据。这样客户端就能同时发现两者的广播数据。然而,adv param 仍然只能使用 blufi 的,因为 adv param 中的信息会影响一些配置。

Who is online

Users browsing this forum: Bing [Bot] and 20 guests