完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
采用在 GATT Server例程中,不采用注册表,单独手动添加characteristic,
例如 profile C 下面 service 1 characteristic 1 characteristic 2 其中characteristic 1和characteristic 2均需要配置description描述符,设置UUID = 0x2902(宏 ESP_GATT_UUID_CHAR_CLIENT_CONFIG) // add char 1 略 pro_c_srvc_1_char_1.descr_uuid.uuid.uuid16 = ESP_GATT_UUID_CHAR_CLIENT_CONFIG; esp_ble_gatts_add_char_descr(pro_c_srvc_1.service_handle, &pro_c_srvc_1_char_1.descr_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE, &char1_desc, NULL); //add char 2 略 pro_c_srvc_1_char_2.descr_uuid.uuid.uuid16 = ESP_GATT_UUID_CHAR_CLIENT_CONFIG; esp_ble_gatts_add_char_descr(pro_c_srvc_1.service_handle, &pro_c_srvc_1_char_2.descr_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE, &char2_desc, NULL); 发现在 ESP_GATTS_ADD_CHAR_DESCR_EVT触发事件中,无法获取characteristic 1和characteristic 2 的 description handle 原因是通过characteristic 1和characteristic 2 的 description UUID都一样(0x2902),无法区别, if (param->add_char_descr.service_handle == pro_c_srvc_1.service_handle) {//service 1 if (param->add_char_descr.descr_uuid.uuid.uuid16 == PRO_C_SERVICE_1_DESCR_C1_UUID) { pro_c_srvc_1_char_1.descr_handle = param->add_char_descr.attr_handle; printf("pro_c_srvc_1_char_1.descr_handle n"); } else if (param->add_char_descr.descr_uuid.uuid.uuid16 == PRO_C_SERVICE_1_DESCR_C2_UUID) { pro_c_srvc_1_char_2.descr_handle = param->add_char_descr.attr_handle; printf("pro_c_srvc_1_char_2.descr_handle n"); } else .... 哪位大佬有什么招数么? 另外,esp_ble_gatts_add_char_descr ()这个函数传参,并没有指定将description 添加给哪一个characteristic 指定的只是service,这个算BUG么?作为用户使用,有点懵。 建议在esp_ble_gatts_add_char_descr ()这个函数传参中增加 characteristic handle。 如有不对,还请指正。 /** * @brief This function is called to add characteristic descriptor. When * it's done, a callback event ESP_GATTS_ADD_DESCR_EVT is called * to report the status and an ID number for this descriptor. * * @param[in] service_handle: service handle to which this characteristic descriptor is to * be added. * @param[in] perm: descriptor access permission. * @param[in] descr_uuid: descriptor UUID. * @param[in] char_descr_val : Characteristic descriptor value * @param[in] control : attribute response control byte * @return * - ESP_OK : success * - other : failed * */ esp_err_t esp_ble_gatts_add_char_descr (uint16_t service_handle, esp_bt_uuid_t *descr_uuid, esp_gatt_perm_t perm, esp_attr_value_t *char_descr_val, esp_attr_control_t *control); |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
945 浏览 0 评论
1672 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1330 浏览 1 评论
1233 浏览 1 评论
5021 浏览 2 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1254浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
927浏览 3评论
2338浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2528浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1052浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 15:32 , Processed in 0.612689 second(s), Total 69, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
568
