ТРЭЛ - Платформа

Этот модуль включает абстракцию платформы для канала инкапсуляции радиопотоков (TREL) с использованием DNS-SD и UDP/IPv6.

Краткое содержание

Определения типов

otPlatTrelPeerInfo определение типа
Представляет информацию об одноранговом узле TREL, обнаруженную с помощью просмотра DNS-SD по имени службы «_trel._udp».

Функции

otPlatTrelDisable ( otInstance *aInstance)
void
Отключает уровень платформы TREL.
otPlatTrelEnable ( otInstance *aInstance, uint16_t *aUdpPort)
void
Инициализирует и включает уровень платформы TREL.
otPlatTrelHandleDiscoveredPeerInfo ( otInstance *aInstance, const otPlatTrelPeerInfo *aInfo)
void
Это функция обратного вызова с уровня платформы, сообщающая об обнаруженной информации об узле TREL.
otPlatTrelHandleReceived ( otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength)
void
Обратный вызов с платформы для уведомления о полученном пакете TREL UDP.
otPlatTrelRegisterService ( otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength)
void
Регистрирует новую службу, которая будет рекламироваться с помощью DNS-SD [RFC6763].
otPlatTrelSend ( otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr)
void
Запрашивает отправку пакета TREL UDP в указанное место назначения.

Структуры

отПлатТрелПеерИнфо

Представляет информацию об одноранговом узле TREL, обнаруженную с помощью просмотра DNS-SD по имени службы «_trel._udp».

Определения типов

отПлатТрелПеерИнфо

struct otPlatTrelPeerInfo otPlatTrelPeerInfo

Представляет информацию об одноранговом узле TREL, обнаруженную с помощью просмотра DNS-SD по имени службы «_trel._udp».

Функции

отПлатТрелДисабле

void otPlatTrelDisable(
  otInstance *aInstance
)

Отключает уровень платформы TREL.

После этого вызова уровень платформы ДОЛЖЕН остановить просмотр DNS-SD по имени службы «_trel._udp», прекратить рекламу службы TREL DNS-SD (из otPlatTrelRegisterService() ) и ДОЛЖЕН закрыть сокет UDP, используемый для получения сообщений TREL.

[in] aInstance Экземпляр OpenThread.

отПлатТреленабле

void otPlatTrelEnable(
  otInstance *aInstance,
  uint16_t *aUdpPort
)

Инициализирует и включает уровень платформы TREL.

При этом вызове уровень платформы ДОЛЖЕН выполнить следующее:

1) Уровень платформы TREL ДОЛЖЕН открыть сокет UDP для прослушивания и получения сообщений TREL от узлов. Сокет привязан к временному номеру порта, выбранному уровнем платформы. Номер порта ДОЛЖЕН быть возвращен в aUdpPort . Сокет также привязан к сетевым интерфейсам, на которых должен поддерживаться TREL. Сокет и выбранный порт должны оставаться действительными, пока включен TREL.

2) Уровень платформы ДОЛЖЕН инициировать постоянный просмотр DNS-SD по имени службы «_trel._udp» в локальном домене просмотра, чтобы обнаружить другие устройства, поддерживающие TREL. Продолжающийся просмотр создаст два разных типа событий: события «добавить» и события «удалить». Когда просмотр запускается, он должен создавать событие «добавить» для каждого узла TREL, присутствующего в данный момент в сети. Всякий раз, когда одноранговый узел TREL отключается от сети, должно создаваться событие «удалить». Однако события «удаления» не гарантируются. При обнаружении экземпляра службы TREL необходимо запустить новый текущий запрос DNS-SD для записи AAAA по имени хоста, указанному в записи SRV обнаруженного экземпляра. Если для однорангового узла обнаружено несколько хостов-адресатов IPv6, ДОЛЖЕН быть сообщен один из всех адресов с наибольшей областью действия (если в одной области имеется несколько адресов, один из них должен быть выбран случайным образом).

Платформа TREL ДОЛЖНА вернуть обратно обнаруженную информацию об одноранговом узле, используя обратный вызов otPlatTrelHandleDiscoveredPeerInfo() . Этот обратный вызов ДОЛЖЕН вызываться при обнаружении нового узла, при изменении существующей записи (например, новая запись TXT, новый номер порта или новый адрес IPv6) или при удалении узла.

Подробности
Параметры
[in] aInstance
Экземпляр OpenThread.
[out] aUdpPort
Указатель для возврата выбранного номера порта по уровню платформы.

otPlatTrelHandleDiscoveredPeerInfo

void otPlatTrelHandleDiscoveredPeerInfo(
  otInstance *aInstance,
  const otPlatTrelPeerInfo *aInfo
)

Это функция обратного вызова с уровня платформы, сообщающая об обнаруженной информации об узле TREL.

Подробности
Параметры
[in] aInstance
Экземпляр OpenThread.
[in] aInfo
Указатель на информацию об узле TREL.

otPlatTrelHandleReceived

void otPlatTrelHandleReceived(
  otInstance *aInstance,
  uint8_t *aBuffer,
  uint16_t aLength
)

Обратный вызов с платформы для уведомления о полученном пакете TREL UDP.

Подробности
Параметры
[in] aInstance
Структура экземпляра OpenThread.
[in] aBuffer
Буфер, содержащий полученные полезные данные UDP.
[in] aLength
Длина полезной нагрузки UDP (количество байтов).

отПлатТрелРегистерсервице

void otPlatTrelRegisterService(
  otInstance *aInstance,
  uint16_t aPort,
  const uint8_t *aTxtData,
  uint8_t aTxtLength
)

Регистрирует новую службу, которая будет рекламироваться с помощью DNS-SD [RFC6763].

Имя службы — «_trel._udp». Платформа должна использовать собственное имя хоста, которое в сочетании с именем службы и локальным именем домена DNS-SD даст полное имя экземпляра службы, например «example-host._trel._udp.local.».

Домен, под которым отображается имя экземпляра службы, будет «локальным» для mDNS и будет любым доменом, который используется для регистрации службы в случае локальной службы DNS-SD, отличной от mDNS.

Последующий вызов этой функции обновляет предыдущую службу. Он используется для обновления данных записи TXT и/или номера порта.

Буфер aTxtData не сохраняется после возврата из этой функции. Уровень платформы НЕ ДОЛЖЕН сохранять указатель и вместо этого копировать содержимое, если это необходимо.

Подробности
Параметры
[in] aInstance
Экземпляр OpenThread.
[in] aPort
Номер порта, который необходимо включить в запись SRV рекламируемой службы.
[in] aTxtData
Указатель на данные записи TXT (закодированные), которые будут включены в рекламируемую услугу.
[in] aTxtLength
Длина aTxtData (количество байтов).

отПлатТрелСенд

void otPlatTrelSend(
  otInstance *aInstance,
  const uint8_t *aUdpPayload,
  uint16_t aUdpPayloadLen,
  const otSockAddr *aDestSockAddr
)

Запрашивает отправку пакета TREL UDP в указанное место назначения.

Подробности
Параметры
[in] aInstance
Структура экземпляра OpenThread.
[in] aUdpPayload
Указатель на полезные данные UDP.
[in] aUdpPayloadLen
Длина полезной нагрузки (количество байтов).
[in] aDestSockAddr
Адрес сокета назначения.

Ресурсы

Справочные разделы API OpenThread взяты из исходного кода, доступного на GitHub . Для получения дополнительной информации или внесения вклада в нашу документацию обратитесь к Ресурсам .