gatt_server_service_table例程失败
-
- Posts: 29
- Joined: Wed Aug 09, 2017 6:16 am
Re: gatt_server_service_table例程失败
这就比较奇怪了, 两种API底层都是一样的代码, ''adv raw data" 也是符合spec的, log也没错误打印, 而且 其他手机也能正常的搜索到, 说明广播是正常的. 你有蓝牙dongle吗? 可以使用蓝牙dongle 抓包看看 ESP32 的问题还是手机的问题, 可以查看ESP32 是否在广播? 广播内容是否正常? 或者将抓包文件发送给我, 我来分析也行. 谢谢.
-
- Posts: 32
- Joined: Mon Sep 17, 2018 3:24 am
Re: gatt_server_service_table例程失败
你好,买的蓝牙dongle到了。图片尾号1为gatt_server_service_table例程中#define CONFIG_SET_RAW_ADV_DATA没有注释的情况。
图片尾号1为gatt_server_service_table例程中#define CONFIG_SET_RAW_ADV_DATA注释了的情况。
其中情况1,华为的ble调试助手,广播有段数据不完整,你看看是不是这问题?
我这边发不了psd文件,QQ截图也上传不了,只能放网盘上了
链接:https://pan.baidu.com/s/16_4nFiKx6N4aSfIGes0gcw
提取码:0o7b
复制这段内容后打开百度网盘手机App,操作更方便哦
图片尾号1为gatt_server_service_table例程中#define CONFIG_SET_RAW_ADV_DATA注释了的情况。
其中情况1,华为的ble调试助手,广播有段数据不完整,你看看是不是这问题?
我这边发不了psd文件,QQ截图也上传不了,只能放网盘上了
链接:https://pan.baidu.com/s/16_4nFiKx6N4aSfIGes0gcw
提取码:0o7b
复制这段内容后打开百度网盘手机App,操作更方便哦
- Attachments
-
- Honer 7X ble调试助手2.jpg (157.51 KiB) Viewed 16519 times
-
- Honer 7X ble调试助手1.jpg (130.91 KiB) Viewed 16519 times
-
- Posts: 29
- Joined: Wed Aug 09, 2017 6:16 am
Re: gatt_server_service_table例程失败
非常感谢您的帮助 , 有进展会及时通知您, 谢谢.
-
- Posts: 29
- Joined: Wed Aug 09, 2017 6:16 am
Re: gatt_server_service_table例程失败
Hi , 从你提供抓包文件来看, 两者的广播内容都是符合spec要求的, 没有发现问题错误. 或许和小米6手机系统蓝牙有关系. 请将demo中的raw data 数据修改如下测试:
static uint8_t raw_adv_data[26] = {
/* flags */
0x02, 0x01, 0x06,
/* device name */
0x0f, 0x09, 'E', 'S', 'P', '_', 'G', 'A', 'T', 'T', 'S', '_', 'D','E', 'M', 'O',
/* tx power*/
0x02, 0x0a, 0x03,
/* service uuid */
0x03, 0x03, 0xFF, 0x00,
};
static uint8_t raw_scan_rsp_data[10] = {
/* flags */
0x02, 0x01, 0x06,
/* tx power */
0x02, 0x0a, 0x03,
/* service uuid */
0x03, 0x03, 0xFF,0x00
};
我修改了raw data 的数据顺序, 基本和esp_ble_gap_config_adv_data()设置的广播内容相同, 请再用小米6测试能否搜索到广播数据, 谢谢.
static uint8_t raw_adv_data[26] = {
/* flags */
0x02, 0x01, 0x06,
/* device name */
0x0f, 0x09, 'E', 'S', 'P', '_', 'G', 'A', 'T', 'T', 'S', '_', 'D','E', 'M', 'O',
/* tx power*/
0x02, 0x0a, 0x03,
/* service uuid */
0x03, 0x03, 0xFF, 0x00,
};
static uint8_t raw_scan_rsp_data[10] = {
/* flags */
0x02, 0x01, 0x06,
/* tx power */
0x02, 0x0a, 0x03,
/* service uuid */
0x03, 0x03, 0xFF,0x00
};
我修改了raw data 的数据顺序, 基本和esp_ble_gap_config_adv_data()设置的广播内容相同, 请再用小米6测试能否搜索到广播数据, 谢谢.
-
- Posts: 32
- Joined: Mon Sep 17, 2018 3:24 am
Re: gatt_server_service_table例程失败
修改测试了,小米6的还是不行,图片是honor7x ble广播数据截图
- Attachments
-
- 20181210.jpg (134.67 KiB) Viewed 16456 times
-
- Posts: 29
- Joined: Wed Aug 09, 2017 6:16 am
Re: gatt_server_service_table例程失败
你上次给的抓包数据广播信息是正常的, 但是你提供的华为荣耀7x的广播数据多了两个字节的异常数据. 这点很奇怪, 你的抓包数据和你的手机显示的广播数据不同.我这边用iphone 6s 和 中兴BA910 显示的广播数据都是正常的, 并没有复现你描述的问题. 请在 BTM_BleWriteAdvDataRaw() in /esp-idf/components/bt/bluedroid/stack/btm/btm_ble_gap.c 函数中添加打印信息, 修改如下:
tBTM_STATUS BTM_BleWriteAdvDataRaw(UINT8 *p_raw_adv, UINT32 raw_adv_len)
{
printf("%s adv len %d\n", __func__, raw_adv_len);
esp_log_buffer_hex("raw_adv", p_raw_adv, raw_adv_len);
tBTM_STATUS ret;
osi_mutex_lock(&adv_data_lock, OSI_MUTEX_MAX_TIMEOUT);
if (btsnd_hcic_ble_set_adv_data((UINT8)raw_adv_len, p_raw_adv)) {
osi_sem_take(&adv_data_sem, OSI_SEM_MAX_TIMEOUT);
ret = adv_data_status;
} else {
ret = BTM_NO_RESOURCES;
}
osi_mutex_unlock(&adv_data_lock);
return ret;
}
设备打印的log 信息如下:
BTM_BleWriteAdvDataRaw adv len 26
I (672) raw_adv: 02 01 06 02 0a eb 03 03 ff 00 0f 09 45 53 50 5f
I (672) raw_adv: 47 41 54 54 53 5f 44 45 4d 4f
这个数据是发送给controller 广播的, 请在你的环境中测试, 比对是否相同, 谢谢.
tBTM_STATUS BTM_BleWriteAdvDataRaw(UINT8 *p_raw_adv, UINT32 raw_adv_len)
{
printf("%s adv len %d\n", __func__, raw_adv_len);
esp_log_buffer_hex("raw_adv", p_raw_adv, raw_adv_len);
tBTM_STATUS ret;
osi_mutex_lock(&adv_data_lock, OSI_MUTEX_MAX_TIMEOUT);
if (btsnd_hcic_ble_set_adv_data((UINT8)raw_adv_len, p_raw_adv)) {
osi_sem_take(&adv_data_sem, OSI_SEM_MAX_TIMEOUT);
ret = adv_data_status;
} else {
ret = BTM_NO_RESOURCES;
}
osi_mutex_unlock(&adv_data_lock);
return ret;
}
设备打印的log 信息如下:
BTM_BleWriteAdvDataRaw adv len 26
I (672) raw_adv: 02 01 06 02 0a eb 03 03 ff 00 0f 09 45 53 50 5f
I (672) raw_adv: 47 41 54 54 53 5f 44 45 4d 4f
这个数据是发送给controller 广播的, 请在你的环境中测试, 比对是否相同, 谢谢.
Re: gatt_server_service_table例程失败
Hi, ChiShaoJun
Do you have more updates for this topic?
Thanks.
Do you have more updates for this topic?
Thanks.
-
- Posts: 32
- Joined: Mon Sep 17, 2018 3:24 am
Re: gatt_server_service_table例程失败
因为别的事情处理所以最近没怎么研究ESP32,论坛提醒也没有,我点进来才知道还有回复,对此回复晚了表示抱歉。
-
- Posts: 32
- Joined: Mon Sep 17, 2018 3:24 am
Re: gatt_server_service_table例程失败
代码修改如图,打印日志如图,输出我看到是没有问题的,但是结果是华为honor7中nrf connect还是会产生几个字节。
- Attachments
-
- 日志打印.png (207.42 KiB) Viewed 16212 times
-
- 代码修改.png (64.77 KiB) Viewed 16212 times
Who is online
Users browsing this forum: Baidu [Spider] and 38 guests