乐鑫技术交流
直播中

吴湛

9年用户 878经验值
擅长:417804
私信 关注
[问答]

ESP32-C3私有服务的UUID设置为128bit UUID会报错怎么解决?

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

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

回帖(1)

秋风宜人

2024-6-20 17:46:17
以下是一些建议来解决这个问题:

1. 首先,确保您使用的ESP-IDF版本支持128bit UUID。在ESP-IDF V4.3.1中,应该已经支持了128bit UUID。但是,如果您发现问题仍然存在,请尝试升级到最新版本的ESP-IDF。

2. 在修改服务UUID时,请确保您遵循了正确的格式。128bit UUID应该是一个32位的十六进制数,例如:`12345678-1234-5678-1234-56789abcdef0`。

3. 在修改服务表时,确保您正确地添加了128bit UUID。在ESP-IDF中,您可以使用`esp_ble_gatts_create_service`函数来创建服务。请确保在调用此函数时,将服务类型设置为`ESP_GATT_SERVICE_TYPE_PRIMARY`或`ESP_GATT_SERVICE_TYPE_SECONDARY`,并使用128bit UUID作为服务ID。

4. 在创建服务后,确保您正确地添加了特征(Characteristics)和描述符(Descriptors)。使用`esp_ble_gatts_add_char`和`esp_ble_gatts_add_char_desc`函数来添加特征和描述符。

5. 在烧录程序后,使用BLE调试软件(如nRF Connect)扫描设备并连接。如果仍然看不到服务,请检查您的代码是否正确实现了服务和特征的注册、通知和读取功能。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分