7

利用可能な DBus インターフェイス プロパティのリストを取得するにはどうすればよいですか?

特定のタイプの USB デバイス接続を追跡するスクリプトを作成しています。追跡する接続をすべての USB 接続と区別する方法は、DBus が USB 接続で送信している信号のインターフェイスのプロパティを確認することです。関連するものを選択するために、そのようなすべてのプロパティのリストを取得したいと思います。

私のコードは次のとおりです。

    import sys
    import dbus
    from dbus.mainloop.glib import DBusGMainLoop
    import gobject

    def deviceAdded(udi):
        device = bus.get_object("org.freedesktop.Hal", udi)
        device_if = dbus.Interface(device, 'org.freedesktop.Hal.Device')
        if device_if.GetPropertyString('info.subsystem') == 'usb_device':
            #
            # Properties can be accesed like this:
            # vendor_id = device_if.GetPropertyInteger('usb_device.vendor_id')
            # 
            # how to get the list of all properties?
            #
            # do something

    def deviceRemoved(udi):
        # do something
        pass

    if __name__ == "__main__":
    DBusGMainLoop(set_as_default=True)
    bus = dbus.SystemBus()

    bus.add_signal_receiver( 
        deviceAdded,
        'DeviceAdded',
        'org.freedesktop.Hal.Manager',
        'org.freedesktop.Hal',
        '/org/freedesktop/Hal/Manager')

    bus.add_signal_receiver( 
        deviceRemoved,
        'DeviceRemoved',
        'org.freedesktop.Hal.Manager',
        'org.freedesktop.Hal',
        '/org/freedesktop/Hal/Manager')

    loop = gobject.MainLoop()

    try:
        loop.run()
    except KeyboardInterrupt:
        print "usb-device-tracker: keyboad interrupt received, shutting down"
        loop.quit()
        sys.exit(0)
4

3 に答える 3

4

通常、インターフェイスでGetAllメソッドを使用できます。org.freedesktop.DBus.Properties

于 2010-01-03T02:48:43.543 に答える