nl::Weave::TLV

Definiciones de trabajo con datos codificados en formato TLV de Weave.

Resumen

Weave TLV es un método de codificación generalizado para datos estructurados simples. Comparte muchas propiedades con el formato de serialización JSON de uso general y, a la vez, es mucho más compacto con el cable.

Enumeraciones

@71 enum
@73 enum
@74{
  AnonymousTag = kSpecialTagMarker | 0x00000000FFFFFFFFULL
}
enum
@75 enum
TLVCommonProfiles{
  kProfileIdNotSpecified = 0xFFFFFFFF
}
enum
TLVElementType enum
TLVFieldSize enum
TLVTagControl enum
TLVTagFields enum
TLVType enum
Una enumeración que identifica el tipo de un elemento TLV.

Variables

kWeaveTLVCopyChunkSize = 16
const size_t
Copia un elemento TLV de un objeto lector al escritor.
sTagSizes = { 0, 1, 2, 4, 2, 4, 6, 8 }[]
const uint8_t

Functions

CommonTag(uint32_t tagNum)
uint64_t
Genera la representación de la API de una etiqueta de perfil TLV común.
ContextTag(uint8_t tagNum)
uint64_t
Genera la representación de la API para la etiqueta TLV específica del contexto.
GetTLVFieldSize(uint8_t type)
TLVFieldSize
IsContextTag(uint64_t tag)
bool
El resultado es verdadero si la etiqueta proporcionada es una etiqueta específica del contexto.
IsProfileTag(uint64_t tag)
bool
Muestra el valor verdadero de la etiqueta proporcionada es una etiqueta específica del perfil.
IsSpecialTag(uint64_t tag)
bool
IsValidTLVType(uint8_t type)
bool
Muestra el valor "true" si el tipo de TLV especificado es válido.
ProfileIdFromTag(uint64_t tag)
uint32_t
Muestra el ID de perfil de una etiqueta de TLV.
ProfileNumFromTag(uint64_t tag)
uint16_t
Muestra el número de perfil de una etiqueta TLV.
ProfileTag(uint32_t profileId, uint32_t tagNum)
uint64_t
Genera la representación de la API de una etiqueta TLV específica del perfil a partir de un ID y número de etiqueta de perfil.
ProfileTag(uint16_t vendorId, uint16_t profileNum, uint32_t tagNum)
uint64_t
Genera la representación de la API de una etiqueta TLV específica del perfil a partir de un ID de proveedor, un número de perfil y un número de etiqueta.
TLVFieldSizeToBytes(TLVFieldSize fieldSize)
uint8_t
TLVTypeHasLength(uint8_t type)
bool
Muestra el valor "true" si el tipo TLV especificado implica la presencia de un campo de longitud asociado.
TLVTypeHasValue(uint8_t type)
bool
Muestra el valor "true" si el tipo TLV especificado implica la presencia de un campo de valor asociado.
TLVTypeIsContainer(uint8_t type)
bool
Muestra el valor "true" si el tipo TLV especificado es un contenedor.
TLVTypeIsString(uint8_t type)
bool
Muestra verdadero si el tipo TLV especificado es una string de UTF8 o de bytes.
TagNumFromTag(uint64_t tag)
uint32_t
Muestra el número de etiqueta de una etiqueta TLV.
VendorIdFromTag(uint64_t tag)
uint16_t
Muestra el ID del proveedor de una etiqueta TLV.

Clases

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

Proporciona un analizador con eficiencia de memoria para datos codificados en formato TLV de Weave.

nl::Weave::TLV::TLVUpdater

Proporciona una interfaz unificada de lectura y escritura para editar, agregar o borrar elementos en la codificación TLV.

nl::Weave::TLV::TLVWriter

Proporciona un codificador con memoria eficiente para escribir datos en el formato TLV de Weave.

nl::Weave::TLV::WeaveCircularTLVBuffer

WeaveCircularTLVBuffer proporciona almacenamiento circular para los elementos nl::Weave::TLV::TLVWriter y nl::Weave::TLVTLVReader.

Espacios de nombres

nl::Weave::TLV::Depuración

Este espacio de nombres incluye interfaces y tipos para depurar y registrar Weave TLV.

nl::Weave::TLV::Utilidades

Este espacio de nombres incluye interfaces de tipos y de utilidad para administrar y trabajar con TLV de Weave.

Enumeraciones

@71

 @71

@73

 @73

@74

 @74
Properties
AnonymousTag

Un valor que indica un elemento TLV que no tiene una etiqueta (es decir,

un elemento anónimo).

@75

 @75

Perfiles comunes para TLV

 TLVCommonProfiles
Properties
kProfileIdNotSpecified

Se usa para indicar la ausencia de un ID de perfil en una variable o miembro.

Básicamente, es lo mismo que kWeaveProfile_NotSpecific definido en WeaveProfiles.h.

Tipo de elemento TLV

 TLVElementType

Tamaño del campo TLV

 TLVFieldSize

TLVTagControl

 TLVTagControl

TLVTagFields

 TLVTagFields

Tipo de TLV

 TLVType

Una enumeración que identifica el tipo de un elemento TLV.

Variables

kWeaveTLVCopyChunkSize

const size_t kWeaveTLVCopyChunkSize = 16

Copia un elemento TLV de un objeto lector al escritor.

El método CopyElement() codifica un nuevo elemento TLV cuyo tipo y valor se toman de un objeto TLVReader. Cuando se llama al método, se espera que el objeto de lector proporcionado se posponga en el elemento TLV de origen. El elemento recién codificado tendrá el mismo tipo y contenido que el contenedor de entrada, sin embargo, la etiqueta se establecerá en el argumento especificado. Si el elemento proporcionado es un contenedor TLV (estructura, arreglo o ruta), se copiará todo el contenido del contenedor.

Detalles
Parámetros
[in] tag
La etiqueta TLV que se codificará con el contenedor, o AnonymousTag si el contenedor debe codificarse sin una etiqueta. Los valores de las etiquetas se deben crear con una de las funciones de definición de etiquetas ProfileTag(), ContextTag() o CommonTag().
[in] reader
Una referencia a un objeto TLVReader que identifica un elemento TLV codificado previamente cuyo tipo y valor deben copiarse.
Valores que se muestran
WEAVE_NO_ERROR
Si el método funciona correctamente
WEAVE_ERROR_INCORRECT_STATE
Si el lector proporcionado no se posiciona en un elemento.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un escritor de contenedores se abrió en el escritor actual y aún no se cerró.
WEAVE_ERROR_TLV_UNDERRUN
Si la codificación TLV subyacente asociada con el lector suministrado finalizó antes de tiempo
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el lector que se proporcionó encontró un tipo de elemento TLV no válido o no compatible.
WEAVE_ERROR_INVALID_TLV_TAG
Si el lector que se proporcionó encontró una etiqueta TLV en un contexto no válido, o si la etiqueta proporcionada no es válida o inapropiada en el contexto en que se escribe el contenedor nuevo.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si escribe el valor, se superaría el límite de la cantidad máxima de bytes especificado cuando se inicializó el escritor.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falló debido a falta de memoria.
other
Otros errores de Weave o específicos de la plataforma que muestran las funciones GetNewBuffer() o FinalizeBuffer(), o mediante la función GetNextBuffer() asociada con el objeto del lector.

Tamaños de sTag

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

Functions

Etiqueta común

uint64_t CommonTag(
  uint32_t tagNum
)

Genera la representación de la API de una etiqueta de perfil TLV común.

Detalles
Parámetros
[in] tagNum
Es el número de etiqueta de perfil común asignado a la etiqueta.
Qué muestra
Un número entero de 64 bits que representa la etiqueta.

Contexto de la etiqueta

uint64_t ContextTag(
  uint8_t tagNum
)

Genera la representación de la API para la etiqueta TLV específica del contexto.

Detalles
Parámetros
[in] tagNum
Es el número de etiqueta específica del contexto asignado a la etiqueta.
Qué muestra
Un número entero de 64 bits que representa la etiqueta.

GetTLVFieldSize

TLVFieldSize GetTLVFieldSize(
  uint8_t type
)

Etiqueta de contexto

bool IsContextTag(
  uint64_t tag
)

El resultado es verdadero si la etiqueta proporcionada es una etiqueta específica del contexto.

Etiqueta de perfil

bool IsProfileTag(
  uint64_t tag
)

Muestra el valor verdadero de la etiqueta proporcionada es una etiqueta específica del perfil.

Etiqueta especial

bool IsSpecialTag(
  uint64_t tag
)

TipoValidoLVT

bool IsValidTLVType(
  uint8_t type
)

Muestra el valor "true" si el tipo de TLV especificado es válido.

Detalles
Qué muestra
true si el tipo de TLV especificado es válido; de lo contrario, es false.

ID de perfil desde la etiqueta

uint32_t ProfileIdFromTag(
  uint64_t tag
)

Muestra el ID de perfil de una etiqueta de TLV.

Detalles
Parámetros
[in] tag
La representación de la API de una etiqueta TLV específica del perfil.
Qué muestra
El ID del perfil

Número de perfil desde la etiqueta

uint16_t ProfileNumFromTag(
  uint64_t tag
)

Muestra el número de perfil de una etiqueta TLV.

Detalles
Parámetros
[in] tag
La representación de la API de una etiqueta TLV específica del perfil.
Qué muestra
El número de perfil asociado

Etiqueta de perfil

uint64_t ProfileTag(
  uint32_t profileId,
  uint32_t tagNum
)

Genera la representación de la API de una etiqueta TLV específica del perfil a partir de un ID y número de etiqueta de perfil.

Detalles
Parámetros
[in] profileId
El ID del perfil en el que se define la etiqueta.
[in] tagNum
Es el número de etiqueta específico del perfil asignado a la etiqueta.
Qué muestra
Un número entero de 64 bits que representa la etiqueta.

Etiqueta de perfil

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

Genera la representación de la API de una etiqueta TLV específica del perfil a partir de un ID de proveedor, un número de perfil y un número de etiqueta.

Detalles
Parámetros
[in] vendorId
El ID del proveedor que definió la etiqueta.
[in] profileNum
El número asignado del proveedor para el perfil dentro del cual se define la etiqueta.
[in] tagNum
Es el número de etiqueta específico del perfil asignado a la etiqueta.
Qué muestra
Un número entero de 64 bits que representa la etiqueta.

TLVFieldSizeToBytes

uint8_t TLVFieldSizeToBytes(
  TLVFieldSize fieldSize
)

TLVTipoHasLength

bool TLVTypeHasLength(
  uint8_t type
)

Muestra el valor "true" si el tipo TLV especificado implica la presencia de un campo de longitud asociado.

Detalles
Qué muestra
true si el tipo TLV especificado implica la presencia de un campo de longitud asociado; de lo contrario, es false.

Valor del tipo de TLV

bool TLVTypeHasValue(
  uint8_t type
)

Muestra el valor "true" si el tipo TLV especificado implica la presencia de un campo de valor asociado.

Detalles
Qué muestra
true si el tipo TLV especificado implica la presencia de un campo de valor asociado; de lo contrario, false.

TLVTipoIsContainer

bool TLVTypeIsContainer(
  uint8_t type
)

Muestra el valor "true" si el tipo TLV especificado es un contenedor.

Detalles
Qué muestra
true si el tipo de TLV especificado es un contenedor; de lo contrario, es false.

TLVTipoIsString

bool TLVTypeIsString(
  uint8_t type
)

Muestra verdadero si el tipo TLV especificado es una string de UTF8 o de bytes.

Detalles
Qué muestra
true si el tipo TLV especificado es una string de UTF8 o de bytes; de lo contrario, es false.

Número de etiqueta de etiqueta

uint32_t TagNumFromTag(
  uint64_t tag
)

Muestra el número de etiqueta de una etiqueta TLV.

Detalles
Parámetros
[in] tag
La representación de la API de una etiqueta TLV específica para el perfil o para el contexto.
Qué muestra
El número de etiqueta asociado.
Consulta también:
IsProfileTag() y IsContextTag()

ID de proveedorDeTag

uint16_t VendorIdFromTag(
  uint64_t tag
)

Muestra el ID del proveedor de una etiqueta TLV.

Detalles
Parámetros
[in] tag
La representación de la API de una etiqueta TLV específica del perfil.
Qué muestra
Es el ID de proveedor asociado.