D-Bus интерфейс mesh.Network1
Интерфейс mesh-приложения для работы с сетью.
| Шина: | системная |
| Служба: | org.bluez.mesh |
| Объект: | /org/bluez/mesh |
| Интерфейс: | org.bluez.mesh.Network1 |
Методы
- object node, array{byte, array{(uint16, dict)}} configuration Attach(object app_root, uint64 token)
- Cancel()
- CreateNetwork(object app_root, array{byte}[16] uuid)
- Import(object app_root, array{byte}[16] uuid, array{byte}[16] dev_key, array{byte}[16] net_key, uint16 net_index, dict flags, uint32 iv_index, uint16 unicast)
- Join(object app_root, array{byte}[16] uuid)
- Leave(uint64 token)
Подробное описание
Интерфейс mesh-приложения содержит методы для работы с сетью.
Описание методов
object node, array{byte, array{(uint16, dict)}} configuration Attach(object app_root, uint64 token)
Это первый метод, который должно вызвать приложение, чтобы получить доступ к функциональным возможностям mesh-узлов.
Аргумент app_root — это корневой путь объекта D-Bus к приложению,
реализующему интерфейс org.bluez.mesh.Application1.
Приложение представляет собой узел, в котором дочерние элементы имеют собственные объекты,
реализующие интерфейс org.bluez.mesh.Element1.
Стандартный интерфейс DBus.ObjectManager должен быть доступен по пути app_root.
Аргумент token представляет собой 64-битное число, которое было назначено приложению,
когда оно впервые получило доступ к mesh-сети или присоединилось к ней,
т. е. при получении метода JoinComplete().
Демон использует токен, чтобы проверить, авторизовано ли приложение
для принятия идентификатора mesh-узла.
В случае успеха вызов метода возвращает объект mesh-узла и текущие настройки конфигурации. Возвращаемое значение параметра конфигурации представляет собой массив, где каждая запись представляет собой структуру, содержащую конфигурацию элемента. Структура конфигурации элемента организована следующим образом:
byte— индекс элемента идентифицирует элемент, к которому относится эта запись конфигурации;array{struct}— массив моделей, где каждая запись представляет собой структуру со следующими элементами:uint16— либо идентификатор модели SIG, либо, если ключ поставщика присутствует в словаре конфигурации модели, 16-битный идентификатор модели, назначенный поставщиком;dict— словарь, содержащий конфигурацию модели со следующими определёнными ключами:array{uint16} Bindings— индексы ключей приложений, привязанных к модели;uint32 PublicationPeriod— период публикации модели в миллисекундах;uint16 Vendor— 16-битный идентификатор компании, определённый Bluetooth SIG;array{variant} Subscriptions— адреса, на которые подписана модель.
Каждый адрес предоставляется либо как uint16 для групповых адресов,
либо как array{byte} для виртуальных меток.
Возможные ошибки:
org.bluez.mesh.Error.InvalidArguments,org.bluez.mesh.Error.NotFound,org.bluez.mesh.Error.AlreadyExists,org.bluez.mesh.Error.Busy,org.bluez.mesh.Error.Failed.
Cancel()
Отменяет невыполненный запрос на подготовку, инициированный методом Join().
CreateNetwork(object app_root, array{byte}[16] uuid)
Это первый метод, который приложение вызывает, чтобы стать узлом поставщика и клиентом конфигурации во вновь созданной mesh-сети.
Аргумент app_root — это корневой путь объекта D-Bus к приложению,
реализующему интерфейс org.bluez.mesh.Application1
и org.bluez.mesh.Provisioner1.
Приложение представляет собой узел, в котором дочерние элементы имеют собственные объекты,
реализующие интерфейс org.bluez.mesh.Element1.
Иерархия приложений также содержит объект агента обеспечения, который реализует интерфейс
org.bluez.mesh.ProvisionAgent1.
Стандартный интерфейс DBus.ObjectManager должен быть доступен по пути app_root.
Аргумент uuid представляет собой 16-байтовый массив, содержащий UUID устройства.
Этот UUID должен быть уникальным (по крайней мере, с точки зрения демона), поэтому попытка вызвать
этот метод с использованием уже зарегистрированного UUID приведёт к ошибке.
Состав октетов UUID должен соответствовать RFC 4122.
Другая информация, которую демон bluetooth-meshd сохранит об начальном узле, состоит в том,
чтобы дать ему начальный первичный адрес индивидуальной рассылки (0x0001),
а также создать и назначить net_key в качестве первичного сетевого net_index (0x000).
После успешной обработки метода демон вызовет метод
JoinComplete() для объекта,
реализующего org.bluez.mesh.Application1.
Возможные ошибки:
org.bluez.mesh.Error.InvalidArguments,org.bluez.mesh.Error.AlreadyExists.
Import(object app_root, array{byte}[16] uuid, array{byte}[16] dev_key, array{byte}[16] net_key, uint16 net_index, dict flags, uint32 iv_index, uint16 unicast)
Метод создаёт локальный mesh-узел на основе конфигурации узла, созданной вне bluetooth-meshd.
Аргумент app_root — это корневой путь объекта D-Bus к приложению,
реализующему интерфейс org.bluez.mesh.Application1.
Аргумент uuid представляет собой 16-байтовый массив, содержащий UUID устройства.
Этот UUID должен быть уникальным (по крайней мере, с точки зрения демона), поэтому попытка вызвать
этот метод с использованием уже зарегистрированного UUID приведёт к ошибке.
Состав октетов UUID должен соответствовать RFC 4122.
Аргумент dev_key представляет собой 16-байтовое значение ключа dev импортированного mesh-узла.
Остальные аргументы соответствуют данным инициализации.
Аргументы net_key и net_index описывают сеть (или подсеть, если net_index не равен 0),
к которой принадлежит импортированный mesh-узел.
Аргумент flags — это словарь, содержащий флаги инициализации.
Поддерживаемые значения:
boolean IvUpdate- значение true указывает, что сеть находится в середине процедуры обновления индекса IV;
boolean KeyRefresh- значение true указывает, что сетевой ключ находится в середине процедуры обновления.
Аргумент iv_index — это текущее значение индекса IV, используемое сетью.
Это значение известно поставщику.
Аргумент unicast — это основной адрес индивидуальной рассылки импортируемого узла.
После успешной обработки метода демон вызовет метод
JoinComplete() для объекта,
реализующего org.bluez.mesh.Application1.
Возможные ошибки:
org.bluez.mesh.Error.InvalidArguments,org.bluez.mesh.Error.AlreadyExists,org.bluez.mesh.Error.NotSupported,org.bluez.mesh.Error.Failed.
Join(object app_root, array{byte}[16] uuid)
Это первый метод, который должно вызвать приложение, чтобы стать подготовленным узлом в mesh-сети. Вызов инициирует широковещательную передачу сигнала неинициализированного устройства.
Аргумент app_root — это корневой путь объекта D-Bus к приложению,
реализующему интерфейс org.bluez.mesh.Application1.
Приложение представляет собой узел, в котором дочерние элементы имеют собственные объекты,
реализующие интерфейс org.bluez.mesh.Element1.
Иерархия приложений также содержит объект агента обеспечения, который реализует интерфейс
org.bluez.mesh.ProvisionAgent1.
Стандартный интерфейс DBus.ObjectManager должен быть доступен по пути app_root.
Аргумент uuid представляет собой 16-байтовый массив, содержащий UUID устройства.
Этот UUID должен быть уникальным (по крайней мере, с точки зрения демона), поэтому попытка вызвать
этот метод с использованием уже зарегистрированного UUID приведёт к ошибке.
Состав октетов UUID должен соответствовать RFC 4122.
По завершении подготовки демон вызовет метод JoinComplete()
или JoinFailed() для объекта, реализующего интерфейс
org.bluez.mesh.Application1.
Возможные ошибки:
org.bluez.mesh.Error.InvalidArguments,org.bluez.mesh.Error.AlreadyExists.
Leave(uint64 token)
Метод удаляет информацию о конфигурации узла сетки, идентифицированного параметром
64-битного токена.
Аргумент token получен в результате успешного вызова метода Join().
Возможные ошибки:
org.bluez.mesh.Error.InvalidArguments,org.bluez.mesh.Error.NotFound,org.bluez.mesh.Error.Busy.