完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
如题 ,我使用android手机连接网络节点,然后协商MTU=69后返回的MTU值未23,ESP-IDF中没有找到设置BLE MESH MTU的函数,是不是需要通过注册GATT回调函数来修改MTU值,但是只是给手机发送了MTU值,并没有修改内部程序对MTU值的修改?请教大佬解惑。
|
|
相关推荐
1个回答
|
|
BLE Mesh的GATT Proxy的MTU默认值通常是23,但是可以通过API函数来修改。在ESP-IDF中,你可以使用以下步骤来修改MTU值:
1. 首先,确保你的ESP-IDF版本支持BLE Mesh。你可以在`components/bt/esp_ble_mesh/`目录下找到相关的代码。 2. 在你的应用程序中,确保已经初始化了BLE Mesh。你可以使用`esp_ble_mesh_init()`函数来完成这个步骤。 3. 接下来,你需要设置GATT Proxy的MTU。你可以使用`esp_ble_mesh_proxy_server_set_mtu()`函数来设置MTU值。例如: ```c esp_err_t ret; uint16_t mtu_value = 69; // 你希望设置的MTU值 ret = esp_ble_mesh_proxy_server_set_mtu(mtu_value); if (ret != ESP_OK) { ESP_LOGE(TAG, "Failed to set GATT Proxy MTU value"); } ``` 4. 确保你的应用程序已经注册了GATT回调函数。你可以使用`esp_ble_mesh_register_gatt_server_cb()`函数来注册回调函数。在回调函数中,你可以处理MTU交换的逻辑。 5. 在GATT回调函数中,当收到MTU交换请求时,你可以使用`esp_ble_mesh_proxy_server_recv_mtu_req()`函数来处理MTU交换请求。 6. 最后,确保你的Android手机也支持MTU交换。在Android设备上,你可以使用`BluetoothDevice.requestMtu()`函数来请求更高的MTU值。 通过以上步骤,你应该可以在ESP-IDF中设置BLE Mesh GATT Proxy的MTU值,并在Android手机上实现MTU交换。如果仍然遇到问题,请检查你的代码和ESP-IDF版本,确保它们都支持BLE Mesh和MTU交换功能。 |
|
|
|
只有小组成员才能发言,加入小组>>
429浏览 6评论
362浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
343浏览 5评论
349浏览 4评论
327浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 11:07 , Processed in 0.874656 second(s), Total 84, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191