ESP32-C3蓝牙:gatt_server_service_table的私有服务修改为128bit UUID的问题

WadeLin
Posts: 2
Joined: Wed Sep 29, 2021 11:06 pm

ESP32-C3蓝牙:gatt_server_service_table的私有服务修改为128bit UUID的问题

Postby WadeLin » Sun Oct 03, 2021 4:27 am

相关环境
1.硬件部分使用的是:ESP32-C3-DevKitM-1,搭载ESP32-C3-MINI-1模组
2.软件部分,IDF 的具体版本是:V4.3.1(release version)
3.开发环境:操作系统为Windows 7;IDE,为VS Code

问题描述
我想在esp-idf\examples\bluetooth\bluedroid\ble\gatt_server_service_table的DEMO上修改16bit 的私有服务UUID为128bit的UUID,但改完后烧录的串口信息会报错,ble调试软件可以连接上蓝牙但是看不到该服务,我想知道是否有修改128bit UUID的相关DEMO。
使用的手机型号为小米9,蓝牙助手软件为 BLE调试宝
在触发BTA_GATTS_API_START_SRVC_EVT时,报错的函数的函数为esp-idf\components\bt\host\bluedroid\bta\gatt\bta_gatts_main.c的bta_gatts_hdl_event函数
附上我修改的C源文件,修改代码图片,Log信息和报错的函数图片,没有修改menuconfig

谢谢!


修改的代码部分(另附上修改的源文件):
1.
/* Service */
//static const uint16_t GATTS_SERVICE_UUID_TEST = 0x00FF;
static const uint8_t GATTS_SERVICE_UUID_TEST[16] = {0x23,0xD1,0xBC,0xEA,0x5F,0x78,0x23,0x15,0xDE,0xEF,0x12,0x12,0x23,0x15,0x00,0x00};

2.
/* Full Database Description - Used to add attributes into the database */
static const esp_gatts_attr_db_t gatt_db[HRS_IDX_NB] =
{
// Service Declaration
[IDX_SVC] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_128, (uint8_t *)&primary_service_uuid, ESP_GATT_PERM_READ,
sizeof(GATTS_SERVICE_UUID_TEST), sizeof(GATTS_SERVICE_UUID_TEST), (uint8_t *)GATTS_SERVICE_UUID_TEST}},
......
}
Attachments
出错函数.png
出错函数.png (57.34 KiB) Viewed 3464 times
Log信息.png
Log信息.png (189.53 KiB) Viewed 3464 times
gatts_table_creat_demo.c
(24.92 KiB) Downloaded 863 times

ESP_XuLZ
Posts: 173
Joined: Fri Mar 26, 2021 6:04 am

Re: ESP32-C3蓝牙:gatt_server_service_table的私有服务修改为128bit UUID的问题

Postby ESP_XuLZ » Fri Oct 08, 2021 1:11 am

你上述修改中

Code: Select all

{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_128, (uint8_t *)&primary_service_uuid, ESP_GATT_PERM_READ,
sizeof(GATTS_SERVICE_UUID_TEST), sizeof(GATTS_SERVICE_UUID_TEST), (uint8_t *)GATTS_SERVICE_UUID_TEST}},
ESP_UUID_LEN_128 应修改回 ESP_UUID_LEN_16, 这里 ESP_UUID_LEN_16 是修饰 primary_service_uuid 的,而 primary_service_uuid 代码中来看不能使用 ESP_UUID_LEN_128 的,否则无法执行到 BTA_GATTS_CreateService() 这个函数,那也就是后面提示 服务未能创建

而后面

Code: Select all

sizeof(GATTS_SERVICE_UUID_TEST), sizeof(GATTS_SERVICE_UUID_TEST), (uint8_t *)GATTS_SERVICE_UUID_TEST}
则是定义服务的UUID 的, 可以是你上述所定义的 128 bit 的 GATTS_SERVICE_UUID_TEST

Who is online

Users browsing this forum: No registered users and 87 guests