нл:: Переплетение:: TLV

Определения для работы с данными, закодированными в формате Weave TLV .

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

Weave TLV — это обобщенный метод кодирования простых структурированных данных. Он разделяет многие свойства с широко используемым форматом сериализации JSON, но при этом значительно более компактен при передаче по сети.

Перечисления

@71 перечисление
@73 перечисление
@74 {
AnonymousTag = kSpecialTagMarker | 0x00000000FFFFFFFFULL
}
перечисление
@75 перечисление
TLVCommonProfiles {
kProfileIdNotSpecified = 0xFFFFFFFF
}
перечисление
TLVElementType перечисление
TLVFieldSize перечисление
TLVTagControl перечисление
TLVTagFields перечисление
TLVType перечисление
Перечисление, определяющее тип элемента TLV .

Переменные

kWeaveTLVCopyChunkSize = 16
const size_t
Копирует элемент TLV из объекта чтения в модуль записи.
sTagSizes = { 0, 1, 2, 4, 2, 4, 6, 8 }[]
const uint8_t

Функции

CommonTag (uint32_t tagNum)
uint64_t
Создает API-представление тега TLV общего профиля.
ContextTag (uint8_t tagNum)
uint64_t
Создает представление API для контекстно-зависимого тега TLV .
GetTLVFieldSize (uint8_t type)
TLVFieldSize
IsContextTag (uint64_t tag)
bool
Возвращает true, если предоставленный тег является тегом, зависящим от контекста.
IsProfileTag (uint64_t tag)
bool
Возвращает true для предоставленного тега, который является тегом, специфичным для профиля.
IsSpecialTag (uint64_t tag)
bool
IsValidTLVType (uint8_t type)
bool
Возвращает true, если указанный тип TLV действителен.
ProfileIdFromTag (uint64_t tag)
uint32_t
Возвращает идентификатор профиля из тега TLV .
ProfileNumFromTag (uint64_t tag)
uint16_t
Возвращает номер профиля из тега TLV .
ProfileTag (uint32_t profileId, uint32_t tagNum)
uint64_t
Создает API-представление тега TLV для конкретного профиля на основе идентификатора профиля и номера тега.
ProfileTag (uint16_t vendorId, uint16_t profileNum, uint32_t tagNum)
uint64_t
Создает API-представление тега TLV для конкретного профиля на основе идентификатора поставщика, номера профиля и номера тега.
TLVFieldSizeToBytes (TLVFieldSize fieldSize)
uint8_t
TLVTypeHasLength (uint8_t type)
bool
Возвращает true, если указанный тип TLV подразумевает наличие связанного поля длины.
TLVTypeHasValue (uint8_t type)
bool
Возвращает true, если указанный тип TLV подразумевает наличие связанного поля значения.
TLVTypeIsContainer (uint8_t type)
bool
Возвращает true, если указанный тип TLV является контейнером.
TLVTypeIsString (uint8_t type)
bool
Возвращает true, если указанный тип TLV представляет собой строку UTF8 или байтовую строку.
TagNumFromTag (uint64_t tag)
uint32_t
Возвращает номер тега из тега TLV .
VendorIdFromTag (uint64_t tag)
uint16_t
Возвращает идентификатор поставщика из тега TLV .

Классы

nl:: Weave:: TLV:: CircularTLVReader
nl:: Weave:: TLV:: CircularTLVWriter
nl::Weave::TLV::TLVReader

Обеспечивает эффективный анализатор данных, закодированных в формате Weave TLV .

nl:: Weave:: TLV:: TLVUpdater

Предоставляет унифицированный интерфейс чтения/записи для редактирования/добавления/удаления элементов в кодировке TLV .

nl:: Weave:: TLV:: TLVWriter

Предоставляет эффективный кодировщик памяти для записи данных в формате Weave TLV .

nl:: Weave:: TLV:: WeaveCircularTLVBuffer

WeaveCircularTLVBuffer обеспечивает циклическое хранилище для nl::Weave::TLV::TLVWriter и nl::Weave::TLVTLVReader.

Пространства имен

nl:: Weave:: TLV:: Отладка

Это пространство имен включает типы и интерфейсы для отладки и регистрации Weave TLV .

nl:: Weave:: TLV:: Утилиты

Это пространство имен включает в себя типы и служебные интерфейсы для управления и работы с Weave TLV .

Перечисления

@71

 @71

@73

 @73

@74

 @74
Характеристики
AnonymousTag

Значение, обозначающее элемент TLV , не имеющий тега (т. е.

анонимный элемент).

@75

 @75

TLVCommonProfiles

 TLVCommonProfiles
Характеристики
kProfileIdNotSpecified

Используется для обозначения отсутствия идентификатора профиля в переменной или члене.

По сути, это то же самое, что и kweaveProfile_NotSpecified, определенное в WeaveProfiles.h.

Тлвелементтипе

 TLVElementType

TLVFieldSize

 TLVFieldSize

Тлвтагконтрол

 TLVTagControl

TLVTagFields

 TLVTagFields

Тип TLV

 TLVType

Перечисление, определяющее тип элемента TLV .

Переменные

kweaveTLVCopyChunkSize

const size_t kWeaveTLVCopyChunkSize = 16

Копирует элемент TLV из объекта чтения в модуль записи.

Метод CopyElement() кодирует новый элемент TLV , тип и значение которого берутся из объекта TLVReader . При вызове метода ожидается, что предоставленный объект чтения будет расположен в исходном элементе TLV . Вновь закодированный элемент будет иметь тот же тип и содержимое, что и входной контейнер, однако тегу будет присвоен указанный аргумент. Если предоставленный элемент является контейнером TLV (структура, массив или путь), будет скопировано все содержимое контейнера.

Подробности
Параметры
[in] tag
Тег TLV , который должен быть закодирован с помощью контейнера, или AnonymousTag , если контейнер должен быть закодирован без тега. Значения тегов должны быть созданы с помощью одной из функций определения тегов ProfileTag() , ContextTag() или CommonTag() .
[in] reader
Ссылка на объект TLVReader , идентифицирующий предварительно закодированный элемент TLV , тип и значение которого необходимо скопировать.
Возвращаемые значения
WEAVE_NO_ERROR
Если метод удался.
WEAVE_ERROR_INCORRECT_STATE
Если поставляемый считыватель не расположен на элементе.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Если модуль записи контейнера был открыт в текущем модуле записи и еще не закрыт.
WEAVE_ERROR_TLV_UNDERRUN
Если базовое кодирование TLV , связанное с предоставленным устройством чтения, завершилось преждевременно.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Если предоставленное средство чтения обнаружило недопустимый или неподдерживаемый тип элемента TLV .
WEAVE_ERROR_INVALID_TLV_TAG
Если предоставленный считыватель обнаружил тег TLV в недопустимом контексте или если предоставленный тег недействителен или неуместен в контексте, в котором записывается новый контейнер.
WEAVE_ERROR_BUFFER_TOO_SMALL
Если запись значения превысит ограничение на максимальное количество байтов, указанное при инициализации средства записи.
WEAVE_ERROR_NO_MEMORY
Если попытка выделить выходной буфер не удалась из-за нехватки памяти.
other
Другие ошибки Weave или специфичные для платформы ошибки, возвращаемые настроенными функциями GetNewBuffer() или FinalizeBuffer() или функцией GetNextBuffer(), связанной с объектом чтения.

sTagSizes

const uint8_t sTagSizes[] = { 0, 1, 2, 4, 2, 4, 6, 8 }

Функции

CommonTag

uint64_t CommonTag(
  uint32_t tagNum
)

Создает API-представление тега TLV общего профиля.

Подробности
Параметры
[in] tagNum
Номер тега общего профиля, присвоенный тегу.
Возврат
64-битное целое число, представляющее тег.

КонтекстТаг

uint64_t ContextTag(
  uint8_t tagNum
)

Создает представление API для контекстно-зависимого тега TLV .

Подробности
Параметры
[in] tagNum
Номер тега, зависящий от контекста, назначенный тегу.
Возврат
64-битное целое число, представляющее тег.

ПолучитьTLVFieldSize

TLVFieldSize GetTLVFieldSize(
  uint8_t type
)

Исконтекстетаг

bool IsContextTag(
  uint64_t tag
)

Возвращает true, если предоставленный тег является тегом, зависящим от контекста.

Испрофилетаг

bool IsProfileTag(
  uint64_t tag
)

Возвращает true для предоставленного тега, который является тегом, специфичным для профиля.

IsSpecialTag

bool IsSpecialTag(
  uint64_t tag
)

ИсвалидТЛВтипе

bool IsValidTLVType(
  uint8_t type
)

Возвращает true, если указанный тип TLV действителен.

Подробности
Возврат
true , если указанный тип TLV действителен; в противном случае false .

Профильидфромтаг

uint32_t ProfileIdFromTag(
  uint64_t tag
)

Возвращает идентификатор профиля из тега TLV .

Подробности
Параметры
[in] tag
API-представление тега TLV для конкретного профиля.
Возврат
Идентификатор профиля.

ПрофильNumFromTag

uint16_t ProfileNumFromTag(
  uint64_t tag
)

Возвращает номер профиля из тега TLV .

Подробности
Параметры
[in] tag
API-представление тега TLV для конкретного профиля.
Возврат
Соответствующий номер профиля.

ПрофильТег

uint64_t ProfileTag(
  uint32_t profileId,
  uint32_t tagNum
)

Создает API-представление тега TLV для конкретного профиля на основе идентификатора профиля и номера тега.

Подробности
Параметры
[in] profileId
Идентификатор профиля, в котором определен тег.
[in] tagNum
Номер тега, специфичный для профиля, присвоенный тегу.
Возврат
64-битное целое число, представляющее тег.

ПрофильТег

uint64_t ProfileTag(
  uint16_t vendorId,
  uint16_t profileNum,
  uint32_t tagNum
)

Генерирует API-представление тега TLV для конкретного профиля на основе идентификатора поставщика, номера профиля и номера тега.

Подробности
Параметры
[in] vendorId
Идентификатор поставщика, определившего тег.
[in] profileNum
Номер, присвоенный поставщиком профилю, в котором определен тег.
[in] tagNum
Номер тега, специфичный для профиля, присвоенный тегу.
Возврат
64-битное целое число, представляющее тег.

TLVFieldSizeToBytes

uint8_t TLVFieldSizeToBytes(
  TLVFieldSize fieldSize
)

TLVTypeHasLength

bool TLVTypeHasLength(
  uint8_t type
)

Возвращает true, если указанный тип TLV подразумевает наличие связанного поля длины.

Подробности
Возврат
true , если указанный тип TLV подразумевает наличие связанного поля длины; в противном случае false .

TLVTypeHasValue

bool TLVTypeHasValue(
  uint8_t type
)

Возвращает true, если указанный тип TLV подразумевает наличие связанного поля значения.

Подробности
Возврат
true , если указанный тип TLV подразумевает наличие связанного поля значения; в противном случае false .

ТЛВтипеисконтейнер

bool TLVTypeIsContainer(
  uint8_t type
)

Возвращает true, если указанный тип TLV является контейнером.

Подробности
Возврат
true , если указанный тип TLV является контейнером; в противном случае false .

TLVTypeIsString

bool TLVTypeIsString(
  uint8_t type
)

Возвращает true, если указанный тип TLV представляет собой строку UTF8 или байтовую строку.

Подробности
Возврат
true , если указанный тип TLV представляет собой строку UTF8 или байтовую строку; в противном случае false .

ТегNumFromTag

uint32_t TagNumFromTag(
  uint64_t tag
)

Возвращает номер тега из тега TLV .

Подробности
Параметры
[in] tag
API-представление тега TLV, зависящего от профиля или контекста.
Возврат
Соответствующий номер тега.
См. также:
IsProfileTag() и IsContextTag()

Идентификатор поставщика из тега

uint16_t VendorIdFromTag(
  uint64_t tag
)

Возвращает идентификатор поставщика из тега TLV .

Подробности
Параметры
[in] tag
API-представление тега TLV для конкретного профиля.
Возврат
Соответствующий идентификатор поставщика.