blufi的例程里面有没有接口可以接收蓝牙包的
-
- Posts: 28
- Joined: Mon Nov 21, 2022 8:42 am
blufi的例程里面有没有接口可以接收蓝牙包的
esp32的blufi例程里面有没有提供接口接收外部蓝牙遥控发过来的蓝牙广播包。
-
- Posts: 41
- Joined: Thu May 04, 2023 3:49 am
Re: blufi的例程里面有没有接口可以接收蓝牙包的
你可以看一下下面的 API:
esp_err_t esp_ble_gap_set_scan_params(esp_ble_scan_params_t *scan_params);
esp_err_t esp_ble_gap_start_scanning(uint32_t duration);
API 的位置:
esp-idf/components/bt/host/bluedroid/api/esp_gap_ble_api.c
esp_err_t esp_ble_gap_set_scan_params(esp_ble_scan_params_t *scan_params);
esp_err_t esp_ble_gap_start_scanning(uint32_t duration);
API 的位置:
esp-idf/components/bt/host/bluedroid/api/esp_gap_ble_api.c
-
- Posts: 28
- Joined: Mon Nov 21, 2022 8:42 am
Re: blufi的例程里面有没有接口可以接收蓝牙包的
就在blufi里面加上这两个函数就可以了?还是否需要蓝牙初始化相关操作。ESP_zhanghaipeng wrote: ↑Tue Aug 01, 2023 9:54 am你可以看一下下面的 API:
esp_err_t esp_ble_gap_set_scan_params(esp_ble_scan_params_t *scan_params);
esp_err_t esp_ble_gap_start_scanning(uint32_t duration);
API 的位置:
esp-idf/components/bt/host/bluedroid/api/esp_gap_ble_api.c
-
- Posts: 41
- Joined: Thu May 04, 2023 3:49 am
Re: blufi的例程里面有没有接口可以接收蓝牙包的
不需要了,因为 bluefi 已经初始化过了。
初始化的地方:esp-idf/examples/bluetooth/blufi/main/blufi_init.c
初始化的代码(对于 bluedroid 协议栈):
esp_err_t esp_blufi_host_init(void)
{
int ret;
ret = esp_bluedroid_init();
if (ret) {
BLUFI_ERROR("%s init bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
return ESP_FAIL;
}
ret = esp_bluedroid_enable();
if (ret) {
BLUFI_ERROR("%s init bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
return ESP_FAIL;
}
BLUFI_INFO("BD ADDR: "ESP_BD_ADDR_STR"\n", ESP_BD_ADDR_HEX(esp_bt_dev_get_address()));
return ESP_OK;
}
初始化的地方:esp-idf/examples/bluetooth/blufi/main/blufi_init.c
初始化的代码(对于 bluedroid 协议栈):
esp_err_t esp_blufi_host_init(void)
{
int ret;
ret = esp_bluedroid_init();
if (ret) {
BLUFI_ERROR("%s init bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
return ESP_FAIL;
}
ret = esp_bluedroid_enable();
if (ret) {
BLUFI_ERROR("%s init bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
return ESP_FAIL;
}
BLUFI_INFO("BD ADDR: "ESP_BD_ADDR_STR"\n", ESP_BD_ADDR_HEX(esp_bt_dev_get_address()));
return ESP_OK;
}
-
- Posts: 28
- Joined: Mon Nov 21, 2022 8:42 am
Re: blufi的例程里面有没有接口可以接收蓝牙包的
esp_err_t esp_ble_gap_set_scan_params(esp_ble_scan_params_t *scan_params);ESP_zhanghaipeng wrote: ↑Thu Aug 03, 2023 2:36 am不需要了,因为 bluefi 已经初始化过了。
初始化的地方:esp-idf/examples/bluetooth/blufi/main/blufi_init.c
初始化的代码(对于 bluedroid 协议栈):
esp_err_t esp_blufi_host_init(void)
{
int ret;
ret = esp_bluedroid_init();
if (ret) {
BLUFI_ERROR("%s init bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
return ESP_FAIL;
}
ret = esp_bluedroid_enable();
if (ret) {
BLUFI_ERROR("%s init bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
return ESP_FAIL;
}
BLUFI_INFO("BD ADDR: "ESP_BD_ADDR_STR"\n", ESP_BD_ADDR_HEX(esp_bt_dev_get_address()));
return ESP_OK;
}
esp_err_t esp_ble_gap_start_scanning(uint32_t duration);
这两个函数只是设置和开始蓝牙包的scan功能,但是在哪个函数可以取出接收到的蓝牙包啊?
-
- Posts: 41
- Joined: Thu May 04, 2023 3:49 am
Re: blufi的例程里面有没有接口可以接收蓝牙包的
是的,可以参考下这个 example:https://github.com/espressif/esp-idf/bl ... ttc_demo.c
重点关注其中的对 scan result 的 处理方式:
case ESP_GAP_BLE_SCAN_RESULT_EVT: {
esp_ble_gap_cb_param_t *scan_result = (esp_ble_gap_cb_param_t *)param;
switch (scan_result->scan_rst.search_evt) {
case ESP_GAP_SEARCH_INQ_RES_EVT:
esp_log_buffer_hex(GATTC_TAG, scan_result->scan_rst.bda, 6);
ESP_LOGI(GATTC_TAG, "searched Adv Data Len %d, Scan Response Len %d", scan_result->scan_rst.adv_data_len, scan_result->scan_rst.scan_rsp_len);
adv_name = esp_ble_resolve_adv_data(scan_result->scan_rst.ble_adv,
ESP_BLE_AD_TYPE_NAME_CMPL, &adv_name_len);
ESP_LOGI(GATTC_TAG, "searched Device Name Len %d", adv_name_len);
esp_log_buffer_char(GATTC_TAG, adv_name, adv_name_len);
重点关注其中的对 scan result 的 处理方式:
case ESP_GAP_BLE_SCAN_RESULT_EVT: {
esp_ble_gap_cb_param_t *scan_result = (esp_ble_gap_cb_param_t *)param;
switch (scan_result->scan_rst.search_evt) {
case ESP_GAP_SEARCH_INQ_RES_EVT:
esp_log_buffer_hex(GATTC_TAG, scan_result->scan_rst.bda, 6);
ESP_LOGI(GATTC_TAG, "searched Adv Data Len %d, Scan Response Len %d", scan_result->scan_rst.adv_data_len, scan_result->scan_rst.scan_rsp_len);
adv_name = esp_ble_resolve_adv_data(scan_result->scan_rst.ble_adv,
ESP_BLE_AD_TYPE_NAME_CMPL, &adv_name_len);
ESP_LOGI(GATTC_TAG, "searched Device Name Len %d", adv_name_len);
esp_log_buffer_char(GATTC_TAG, adv_name, adv_name_len);
Who is online
Users browsing this forum: Baidu [Spider] and 131 guests