完善资料让更多小伙伴认识你,还能领取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交换功能。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
393 浏览 0 评论
954 浏览 0 评论
1679 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1337 浏览 1 评论
1236 浏览 1 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1257浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
931浏览 3评论
2345浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2533浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1054浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-4 13:26 , Processed in 1.126943 second(s), Total 76, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
512
