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

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.

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

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