我想修改一些 menuconfig 中不存在的 nimble 参数,该怎么做才能避免直接修改
components/bt/host/nimble/port/include/esp_nimble_cfg.h
文件呢?
比如我想修改 MYNEWT_VAL_BLE_GATT_MAX_PROCS 的值(在 esp_nimble_cfg.h 中),直接在自己的工程文件夹里覆盖这个宏,实测又无法真正的覆盖。
如何修改一些 menuconfig 中不存在的 nimble 参数?如宏 MYNEWT_VAL_BLE_GATT_MAX_PROCS 的值
-
- Posts: 2
- Joined: Sun Jun 05, 2022 9:40 am
Re: 如何修改一些 menuconfig 中不存在的 nimble 参数?如宏 MYNEWT_VAL_BLE_GATT_MAX_PROCS 的值
你好, 看着 esp_nimble_cfg.h 中的宏没有在 IDF 中被调用到,应该是修改不起作用的原因, 你当前遇到了什么实际问题?是增加 多个 service 出现错误吗,还是其他方面的问题?
-
- Posts: 2
- Joined: Sun Jun 05, 2022 9:40 am
Re: 如何修改一些 menuconfig 中不存在的 nimble 参数?如宏 MYNEWT_VAL_BLE_GATT_MAX_PROCS 的值
我在调试 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 函数中被使用到。
非常感谢!
但我实测发现在 写 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