微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在使用 Bluez5.60 进行 BLE 连接时应用身份验证

如何解决如何在使用 Bluez5.60 进行 BLE 连接时应用身份验证

我正在尝试使用 Bluez5.6 库通过 BLE GATT 服务器连接我的 RaspBerry Pi 3B+。 我已经成功测试了 BLE 服务器应用程序。 能够通过 Android 上的 BLE 客户端应用程序上的 GATT 服务进行连接和通信。

我想在将客户端应用程序(Android 应用程序)连接到 BLE GATT 服务器时应用身份验证 pin。 我已尝试将不同的功能应用于 BLE 代理。

喜欢... displayOnly displayYesNo KeyboardOnly NoInputNoOutput Keyboarddisplay

这里是主函数的源代码

def main():
    # global mainloop
    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
    bus = dbus.SystemBus()
    adapter = find_adapter(bus)
    if not adapter:
        logger.error('main : BLE adapter not found')
        return

    #discovery functionality
    bus.add_signal_receiver(dis_interfaces_added,dbus_interface = "org.freedesktop.DBus.ObjectManager",signal_name = "InterfacesAdded")
    bus.add_signal_receiver(dis_properties_changed,dbus_interface = "org.freedesktop.DBus.Properties",signal_name = "PropertiesChanged",arg0 = "org.bluez.Device1",path_keyword = "path")

    om = dbus.Interface(bus.get_object("org.bluez","/"),"org.freedesktop.DBus.ObjectManager")
    objects = om.GetManagedobjects()
    for path,interfaces in objects.items():
        if "org.bluez.Device1" in interfaces:
            devices[path] = interfaces["org.bluez.Device1"]

    capability = "NoInputNoOutput"
    logger.info('main : capability : (%s)' % capability)

    agent_path = "/test/agent"
    agent = Agent(bus,agent_path)

    service_manager = dbus.Interface(bus.get_object(BLUEZ_SERVICE_NAME,adapter),GATT_MANAGER_IFACE)
    ad_manager = dbus.Interface(bus.get_object(BLUEZ_SERVICE_NAME,LE_ADVERTISING_MANAGER_IFACE)

    app = ConfigBluetoothServiceApplication(bus)
    adv = ConfigBluetoothServiceAdvertisement(bus,0)

    mainloop = GLib.MainLoop()

    agent_manager = dbus.Interface(bus.get_object(BLUEZ_SERVICE_NAME,"/org/bluez"),GATT_AGENT_IFACE)
    agent_manager.Registeragent(agent_path,capability)
    logger.info('main : main : Agent registered')
    agent_manager.RequestDefaultAgent(agent_path)

    service_manager.Registerapplication(app.get_path(),{},reply_handler=register_app_cb,error_handler=register_app_error_cb)
    ad_manager.Registeradvertisement(adv.get_path(),reply_handler=register_ad_cb,error_handler=register_ad_error_cb)

    try:
        mainloop.run()
    except KeyboardInterrupt:
        adv.Release()
        mainloop.quit()


if __name__ == '__main__':
    main()

请你帮我知道, 为 BLE GATT 服务器添加身份验证需要进行哪些配置?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。