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
.