完善资料让更多小伙伴认识你,还能领取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); |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
313 浏览 0 评论
1170 浏览 1 评论
585浏览 6评论
483浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
468浏览 5评论
467浏览 4评论
442浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 11:30 , Processed in 0.952449 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号