Существует ли функция g_dbus для обновления значения свойства без кэширования? - PullRequest
0 голосов
/ 22 октября 2019

Я работаю над проектом головного устройства с использованием Raspberry Pi. Цель состоит в том, чтобы на головном устройстве был графический интерфейс пользователя, который может управлять телефоном при воспроизведении музыки.

Кажется, я не могу включить в телефоне функцию «Перемешать» или «Повторить».

Я использую Bluez 5.45 и GLIB. У меня есть базовый контроль над воспроизведением, остановкой, следующим.

Есть ли функция, аналогичная g_dbus_proxy_set_cached_property ()?

Я попробовал функцию g_dbus_proxy_set_cached_property (), но она только обновляет кэшированное значение, телефон никогда не получает установленное значение.

1 Ответ

0 голосов
/ 29 октября 2019

Я узнал, как установить / получить свойства. Я использовал метод g_dbus_proxy_call_sync.

g_dbus_proxy_call_sync (GDBusProxy *proxy,
                    const gchar *method_name,
                    GVariant *parameters,
                    GDBusCallFlags flags,
                    gint timeout_msec,
                    GCancellable *cancellable,
                    GError **error);

Мне нужно было получить доступ к интерфейсу "org.freedesktop.DBUS.Properties". Мне нужно было использовать метод «Set». Требуется три параметра.

Set(String interface_name, String property_name, A value)

  1. имя_интерфейса - интерфейс, с которым связано свойство
  2. propertyName - имя свойства
  3. значение - новое значение свойства (может быть любым допустимым типом DBUS).

    g_dbus_proxy_call_sync( myProxy, "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.bluez.MediaPlayer1", "Repeat", g_variant_new_string ("alltracks")), G_DBUS_CALL_FLAGS_NONE, // Flags -1, // timeout NULL, // cancellable &error // error );

...