c++ - Bluez GATT 服务器(外围)安全特性读取
问题描述
我在 CPP 中实现了一个 GATT 服务器,它通过 DBUS API 与 Bluez 堆栈通信。我能够做广告、展示特征并让客户与我联系。我的参考是 bluez 文件夹中的 doc 和 test 文件夹。
我想让我的特征只能在安全(而非传统)配对时访问。所以我在我的特性中添加了“安全写入”和“安全读取”标志。当我尝试使用 nRF 连接工具读取和写入它们时,我看到 bluez 没有强制配对请求,并且我能够读取/写入特征。
我的应用程序没有向 bluez 注册任何代理,因为我的外围设备具有 NoInputOutput 功能。
static int GetHandlerGattChar(sd_bus* bus, const char* path, const char* interface, const char* prop, sd_bus_message* reply,
void* userdata, sd_bus_error* error) {
.....
if (property == "UUID") {
ret = sd_bus_message_append(reply, "s", "12345678-1234-5678-1234-56789abcdef1");
} else if (property == "Service") {
ret = sd_bus_message_append(reply, "o", DBUS_OBJECT_SERVICE0_NAME.c_str());
} else if (property == "Flags") {
ret = sd_bus_message_append(reply, "as", 3, "write-without-response", "secure-write", "secure-read");
} else {
ret = sd_bus_error_set(error, SD_BUS_ERROR_UNKNOWN_PROPERTY, "" /* message*/);
}
......
}
我不明白我错过了什么。任何帮助/支持将不胜感激。
解决方案
推荐阅读
- oracle - Oracle Apex 5.1(如何在交互式报告的默认链接之外添加自定义链接)
- arrays - 随机播放一组不相等重复的条目,因此它们不会重复
- ios - Swift 4+ 实例化符合协议的类变量
- scala - 如何使用apache spark在mysql数据库中创建表
- swift - 'JSON 写入 (UIImage) 中的类型无效' Alamofire API 请求
- javascript - 为什么我在更新请求后总是收到“重复警报”错误?
- typescript - 我可以将类或接口类型作为参数传递给函数吗
- git - Git 克隆而不是
- intellij-idea - 如何在运行使用 IntelliJ IDE 构建的 Jar 文件时解决“java.lang.NoClassDefFoundError:”?
- azure-data-studio - Azure Data Studio 对 JSON 使用单引号