Документация
ОС Аврора 5.0.1

Использование утилиты dbus-send

dbus-send может подключаться к системным службам и службам других приложений на этом же устройстве с помощью механизма D-Bus.

В ОС Аврора представлены несколько системных программ, предоставляющих D-Bus-сервисы. К их документации можно обратиться в разделе Справочная документация. Использование других API не рекомендуется, так как не гарантированы их стабильность и доступность.

Получение списка D-Bus-сервисов

Для получения списка D-Bus-сервисов, доступных на конкретном устройстве или эмуляторе, можно использовать утилиту dbus-send и D-Bus-сервис данной утилиты — org.freedesktop.DBus.

Предварительно на устройстве или эмуляторе следует авторизоваться по протоколу ssh:

ssh defaultuser@device # команда для устройства
ssh -p 2223 -i ~/AuroraOS/vmshare/ssh/private_keys/sdk defaultuser@localhost # команда для эмулятора

У D-Bus-сервиса org.freedesktop.DBus следует обратиться к методу ListNames интерфейса org.freedesktop.DBus по пути /org/freedesktop/DBus, чтобы узнать список доступных сервисов. Поскольку у D-Bus две шины, то будет два списка доступных сервисов: на системной шине и на сессионной шине.

Пример команды для сессионной шины:

dbus-send --session --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames

Пример команды для системной шины:

dbus-send --system --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames

В ответ будет выведен список сервисов, доступных на данной шине.

D-Bus-сервисы, которыми рекомендуется пользоваться в коде приложений, описываются в документации ОС Аврора, за исключением org.freedesktop.*, для которых общедоступная документация актуальна и для ОС Аврора.

Обращение к другим API не рекомендуется. Стабильная работа сервисов, которые не включены в публичный API и не документированы на этом портале, не гарантируется от релиза к релизу. Вместо D-Bus API в таких случаях рекомендуется пользоваться библиотеками-обёртками.

Работа с dbus-send

Утилита dbus-send позволяет обращаться к методам и свойствам D-Bus-интерфейсов.

Для обращения к конкретному интерфейсу нужно знать несколько параметров:

  • шину, на которой зарегистрирован сервис — системной или сессионной;
  • название сервиса;
  • путь к интерфейсу;
  • название интерфейса;
  • имя метода или свойства, к которому нужно обратиться.

Эти параметры прописываются в команде dbus-send. Сессионная шина указывается как опция --session, системная — как опция --system. Название сервиса указывается в опции --dest, путь к интерфейсу указывается после сервиса через пробел.

Если нужно вызвать метод, то после пути следует написать интерфейс и метод, название метода указывается через точку сразу после интерфейса.

Пример вызова метода getOsVersion у сервиса ru.omp.deviceinfo и интерфейса ru.omp.deviceinfo.Features, находящегося по пути /ru/omp/deviceinfo/Features.

dbus-send \
	--system --print-reply \
	--dest=ru.omp.deviceinfo /ru/omp/deviceinfo/Features \
	ru.omp.deviceinfo.Features.getOsVersion

Значение свойства можно получать и изменять с помощью методов Get и Set у системного интерфейса org.freedesktop.DBus.Properties.

Пример получения свойства ApiVersion у системного сервиса ru.omprussia.SystemLogs:

dbus-send \
	--system --print-reply \
	--dest=ru.omprussia.SystemLogs /ru/omprussia/SystemLogs \
	org.freedesktop.DBus.Properties.Get \
	string:ru.omprussia.SystemLogs string:ApiVersion

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.