gatt_server_service_table例程失败

Weijian-Espressif
Posts: 18
Joined: Wed Aug 09, 2017 6:16 am

Re: gatt_server_service_table例程失败

Postby Weijian-Espressif » Mon Dec 03, 2018 3:46 am

这就比较奇怪了, 两种API底层都是一样的代码, ''adv raw data" 也是符合spec的, log也没错误打印, 而且 其他手机也能正常的搜索到, 说明广播是正常的. 你有蓝牙dongle吗? 可以使用蓝牙dongle 抓包看看 ESP32 的问题还是手机的问题, 可以查看ESP32 是否在广播? 广播内容是否正常? 或者将抓包文件发送给我, 我来分析也行. 谢谢.

ChiShaoJun
Posts: 14
Joined: Mon Sep 17, 2018 3:24 am

Re: gatt_server_service_table例程失败

Postby ChiShaoJun » Thu Dec 06, 2018 7:57 am

你好,买的蓝牙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,操作更方便哦
Attachments
Honer 7X ble调试助手2.jpg
Honer 7X ble调试助手2.jpg (157.51 KiB) Viewed 143 times
Honer 7X ble调试助手1.jpg
Honer 7X ble调试助手1.jpg (130.91 KiB) Viewed 143 times

Weijian-Espressif
Posts: 18
Joined: Wed Aug 09, 2017 6:16 am

Re: gatt_server_service_table例程失败

Postby Weijian-Espressif » Fri Dec 07, 2018 3:52 am

非常感谢您的帮助 :D , 有进展会及时通知您, 谢谢.

Weijian-Espressif
Posts: 18
Joined: Wed Aug 09, 2017 6:16 am

Re: gatt_server_service_table例程失败

Postby Weijian-Espressif » Fri Dec 07, 2018 1:21 pm

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测试能否搜索到广播数据, 谢谢.

ChiShaoJun
Posts: 14
Joined: Mon Sep 17, 2018 3:24 am

Re: gatt_server_service_table例程失败

Postby ChiShaoJun » Mon Dec 10, 2018 2:36 am

修改测试了,小米6的还是不行,图片是honor7x ble广播数据截图
Attachments
20181210.jpg
20181210.jpg (134.67 KiB) Viewed 80 times

Weijian-Espressif
Posts: 18
Joined: Wed Aug 09, 2017 6:16 am

Re: gatt_server_service_table例程失败

Postby Weijian-Espressif » Tue Dec 11, 2018 8:45 am

你上次给的抓包数据广播信息是正常的, 但是你提供的华为荣耀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 广播的, 请在你的环境中测试, 比对是否相同, 谢谢.

Who is online

Users browsing this forum: No registered users and 3 guests