乐鑫技术交流
直播中

闷~~

9年用户 765经验值
擅长:可编程逻辑
私信 关注
[问答]

请问ble mesh的GATT proxy的MTU是固定23还是有API函数可以修改?

如题 ,我使用android手机连接网络节点,然后协商MTU=69后返回的MTU值未23,ESP-IDF中没有找到设置BLE MESH MTU的函数,是不是需要通过注册GATT回调函数来修改MTU值,但是只是给手机发送了MTU值,并没有修改内部程序对MTU值的修改?请教大佬解惑。

回帖(1)

杨言

2024-7-1 15:20:12
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交换功能。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分