Безопасное чтение характеристики сервера Bluez GATT (периферийное устройство) - PullRequest
0 голосов
/ 29 октября 2019

Я реализовал сервер GATT в CPP, который связывается со стеком Bluez через API-интерфейсы DBUS. Я умею рекламировать, выставлять характеристики, и клиенты связываются со мной. Моя ссылка - папка doc и test в папке bluez.

Я хотел бы сделать свою характеристику доступной только для безопасного (не устаревшего) соединения. Поэтому я добавил флаги «безопасная запись» и «безопасное чтение» к своей характеристике. Когда я пытаюсь читать и записывать их с помощью инструмента nRF connect, я вижу, что 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*/);
    }
......
}

Я не понимаю, чего мне не хватает. Любая помощь / поддержка будут очень признательны.

...