此篇博客汇总 ESP BLE 相关问题。
1 如何配置自定义 128 位 UUID
直接将对应服务或特性对应的 UUID 长度从 ESP_UUID_LEN_16
改成 ESP_UUID_LEN_128
,然后修改对应 UUID 即可。以 IDF tag v4.3 的 ble_spp_server 为例,将 ble_spp_server_demo.c 的 221 行 从
[SPP_IDX_SPP_STATUS_VAL] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&spp_status_uuid, ESP_GATT_PERM_READ,
SPP_STATUS_MAX_LEN,sizeof(spp_status_val), (uint8_t *)spp_status_val}},
修改为
[SPP_IDX_SPP_STATUS_VAL] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_128, (uint8_t *)uuid_test, ESP_GATT_PERM_READ,
SPP_STATUS_MAX_LEN,sizeof(spp_status_val), (uint8_t *)spp_status_val}},
对应的 uuid_test
为:
static const uint8_t uuid_test[16] = {0x74,0x7a,0x06,0xbd,0xe6,0x6c,0xaa,0xb7,0x75,0x44,0x56,0xfa,0x01,0xa3,0x8c,0xd5};
上述修改完成后编译烧写固件至 ESP32 ,使用手机上的 nRF connect 搜索到 ESP_SPP_SERVER
设备并连接,连接成功后可以看到已经成功自定义对应特征的 UUID,如下:
2 gatt_server 如何一个服务增加多个特征值
可以参考 ESP 论坛里的这篇帖子:gatt_server 如何一个服务增加多个特征值。