D-Bus интерфейс GattManager1
Менеджер GATT позволяет внешним приложениям регистрировать службы и профили GATT.
Шина: | системная |
Служба: | org.bluez |
Объект: | [variable prefix]/{hci0,hci1,...} |
Интерфейс: | org.bluez.GattManager1 |
Методы
- RegisterApplication(object application, dict options)
- UnregisterApplication(object application)
Подробное описание
Менеджер GATT позволяет внешним приложениям регистрировать службы и профили GATT.
Регистрация профиля позволяет приложениям подписываться на удалённые службы.
Они должны реализовывать интерфейс GattProfile1
.
Регистрация службы позволяет приложениям публиковать локальную службу GATT,
которая затем становится доступной для удалённых устройств.
Служба GATT представлена иерархией объектов D-Bus, где корневой узел соответствует службе,
а дочерние узлы предоставляют характеристики и дескрипторы, принадлежащие этой службе.
Каждый узел должен реализовывать один из интерфейсов GattService1
,
GattCharacteristic1
или GattDescriptor1
в зависимости от предоставляемого ими атрибута.
Каждый узел также должен реализовывать стандартный интерфейс D-Bus для отображения своих свойств.
Эти объекты совместно определяют службу GATT.
Чтобы упростить регистрацию службы, BlueZ требует, чтобы все объекты, принадлежащие службе GATT, были сгруппированы в диспетчере объектов D-Bus, который управляет исключительно объектами этой службы. Следовательно, стандартный интерфейс DBus.ObjectManager должен быть доступен по корневому пути службы. Примерная иерархия приложений, содержащая две отдельные службы GATT, может выглядеть следующим образом:
-> /com/example
| - org.freedesktop.DBus.ObjectManager
|
-> /com/example/service0
| | - org.freedesktop.DBus.Properties
| | - org.bluez.GattService1
| |
| -> /com/example/service0/char0
| | - org.freedesktop.DBus.Properties
| | - org.bluez.GattCharacteristic1
| |
| -> /com/example/service0/char1
| | - org.freedesktop.DBus.Properties
| | - org.bluez.GattCharacteristic1
| |
| -> /com/example/service0/char1/desc0
| - org.freedesktop.DBus.Properties
| - org.bluez.GattDescriptor1
|
-> /com/example/service1
| - org.freedesktop.DBus.Properties
| - org.bluez.GattService1
|
-> /com/example/service1/char0
- org.freedesktop.DBus.Properties
- org.bluez.GattCharacteristic1
Когда служба зарегистрирована, BlueZ автоматически получает информацию обо всех объектах
с помощью диспетчера объектов службы.
После регистрации службы объекты службы не должны удаляться.
Если BlueZ получает сигнал InterfacesRemoved
от диспетчера объектов службы,
он немедленно отменяет регистрацию службы.
Точно так же, если приложение отключится от шины,
для всех его служб будет автоматически отменена регистрация.
Сигналы InterfacesAdded
будут игнорироваться.
Пример:
Client
test/example-gatt-client
client/bluetoothctl
Server
test/example-gatt-server
tools/gatt-service
Описание методов
RegisterApplication(object application, dict options)
Регистрирует локальную иерархию служб (для сервера) и/или профилей GATT (для клиента).
Путь к объекту приложения вместе с идентификатором подключения к системной шине D-Bus идентифицируют приложение, регистрирующего службу или профиль GATT.
Возможные ошибки:
org.bluez.Error.InvalidArguments
,org.bluez.Error.AlreadyExists
.
UnregisterApplication(object application)
Отменяет регистрацию служб, которые были ранее зарегистрированы. Параметр пути к объекту должен соответствовать тому же значению, которое использовалось при регистрации.
Возможные ошибки:
org.bluez.Error.InvalidArguments
,org.bluez.Error.DoesNotExist
.