如何修改一些 menuconfig 中不存在的 nimble 参数?如宏 MYNEWT_VAL_BLE_GATT_MAX_PROCS 的值

gaupen1186
Posts: 2
Joined: Sun Jun 05, 2022 9:40 am

如何修改一些 menuconfig 中不存在的 nimble 参数?如宏 MYNEWT_VAL_BLE_GATT_MAX_PROCS 的值

Postby gaupen1186 » Sun Jun 05, 2022 9:44 am

我想修改一些 menuconfig 中不存在的 nimble 参数,该怎么做才能避免直接修改
components/bt/host/nimble/port/include/esp_nimble_cfg.h
文件呢?
比如我想修改 MYNEWT_VAL_BLE_GATT_MAX_PROCS 的值(在 esp_nimble_cfg.h 中),直接在自己的工程文件夹里覆盖这个宏,实测又无法真正的覆盖。

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

Re: 如何修改一些 menuconfig 中不存在的 nimble 参数?如宏 MYNEWT_VAL_BLE_GATT_MAX_PROCS 的值

Postby ESP_XuLZ » Tue Jun 07, 2022 2:07 am

你好, 看着 esp_nimble_cfg.h 中的宏没有在 IDF 中被调用到,应该是修改不起作用的原因, 你当前遇到了什么实际问题?是增加 多个 service 出现错误吗,还是其他方面的问题?

gaupen1186
Posts: 2
Joined: Sun Jun 05, 2022 9:40 am

Re: 如何修改一些 menuconfig 中不存在的 nimble 参数?如宏 MYNEWT_VAL_BLE_GATT_MAX_PROCS 的值

Postby gaupen1186 » Thu Jun 09, 2022 3:25 am

我在调试 nimBLE central ,连接的蓝牙外设中有比较多的 service 和 characteristic,其中有多个 characteristic 需要开启 notify (给 descriptor CCCD 0x2902 写值 0x0001)。
但我实测发现在 写 CCCD 值时,函数 ble_gattc_write_flat() 最多可以连续的循环调用 4 次,在第 5 次时就会返回资源耗尽的错误代码 6 (BLE_HS_ENOMEM)。经过调试分析发现,是由 esp_nimble_cfg.h 中的宏 MYNEWT_VAL_BLE_GATT_MAX_PROCS (固定为 4) 控制的。将其临时增大,即可解决我的问题。
所以我想找一个不直接修改 esp-idf 的头文件 esp_nimble_cfg.h 的方法。

另外说明下,这个宏 MYNEWT_VAL_BLE_GATT_MAX_PROCS 无法直接搜索到被使用的地方,可以替代搜索为
MYNEWT_VAL(BLE_GATT_MAX_PROCS)
它在 ble_gattc.c 中的 ble_gattc_init 函数中被使用到。

非常感谢!

Who is online

Users browsing this forum: No registered users and 47 guests