En Google, luchamos por la equidad racial de la comunidad negra. Más información
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

nl :: Tejido:: TLV :: TLVWriter

#include <src/lib/core/WeaveTLV.h>

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

Resumen

TLVWriter implementa un codificador de estilo de transmisión solo hacia adelante para los datos de Weave TLV . Las aplicaciones escriben datos en una codificación llamando a uno de los métodos Put () del escritor, pasando la etiqueta asociada y la información de valor según sea necesario. De manera similar, las aplicaciones pueden codificar tipos de contenedores TLV (estructuras, matrices o rutas) llamando a los métodos OpenContainer () o EnterContainer () del escritor.

Un objetoTLVWriter puede escribir datos directamente en un búfer de salida fijo o en una cadena de uno o más objetos PacketBuffer. Además, las aplicaciones pueden suministrar sus propias funciones GetNewBuffer y FinalizeBuffer para dirigir la salida a un destino arbitrario, por ejemplo, un socket o una cola de eventos.

Herencia

Subclases conocidas directas: nl :: Weave :: TLV :: CircularTLVWriter

Tipos protegidos

@72 {
kEndOfContainerMarkerSize = 1
}
enumeración

Tipos públicos

FinalizeBufferFunct )(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen) WEAVE_ERROR (*
Una función utilizada para realizar la finalización de la salida de un objetoTLVWriter .
GetNewBufferFunct )(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR (*
Una función que proporciona nuevo espacio de búfer de salida a unTLVWriter .

Atributos públicos

AppData
void *
Un campo de puntero que se puede utilizar para datos específicos de la aplicación.
FinalizeBuffer
Un puntero a una función que se llamará cuando se finaliceTLVWriter .
GetNewBuffer
Un puntero a una función que proporcionará nuevo espacio de búfer de salida a unTLVWriter .
ImplicitProfileId
uint32_t
El ID de perfil de las etiquetas que deben codificarse de forma implícita.

Atributos protegidos

mBufHandle
uintptr_t
mBufStart
uint8_t *
mContainerType
mLenWritten
uint32_t
mMaxLen
uint32_t
mRemainingLen
uint32_t
mWritePoint
uint8_t *

Funciones publicas

CloseContainer (TLVWriter & containerWriter)
Completa la escritura de un contenedor TLV después de una llamada a OpenContainer () .
ContinuePutBytes (const uint8_t *buf, uint32_t len)
Codifica un valor de cadena de bytes TLV .
CopyContainer (TLVReader & container)
Copia un elemento contenedor TLV del objetoTLVReader .
CopyContainer (uint64_t tag,TLVReader & container)
Codifica un elemento contenedor TLV de un conjunto precodificado de elementos miembro.
CopyContainer (uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
Codifica un elemento contenedor TLV que contiene elementos miembros de un contenedor precodificado.
CopyElement (TLVReader & reader)
Copia un elemento TLV de un objeto lector en el escritor.
CopyElement (uint64_t tag,TLVReader & reader)
EndContainer ( TLVType outerContainerType)
Completa la codificación de un elemento contenedor TLV .
Finalize (void)
Termina la escritura de una codificación TLV .
GetContainerType (void) const
Devuelve el tipo de contenedor dentro del cualTLVWriter está escribiendo actualmente.
GetLengthWritten (void)
uint32_t
Devuelve el número total de bytes escritos desde que se inicializó el escritor.
Init (uint8_t *buf, uint32_t maxLen)
void
Inicializa un objetoTLVWriter para escribir en un búfer de salida único.
Init ( PacketBuffer *buf, uint32_t maxLen)
void
Inicializa un objetoTLVWriter para escribir en un solo PacketBuffer.
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Inicializa un objetoTLVWriter para escribir en uno o más PacketBuffers.
InitMalloced (uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
Inicializa un objetoTLVWriter para escribir en un búfer dinámico.
OpenContainer (uint64_t tag, TLVType containerType,TLVWriter & containerWriter)
Inicializa un nuevo objetoTLVWriter para escribir los miembros de un elemento contenedor TLV .
Put (uint64_t tag, int8_t v)
Codifica un valor entero con signo TLV .
Put (uint64_t tag, int8_t v, bool preserveSize)
Codifica un valor entero con signo TLV .
Put (uint64_t tag, int16_t v)
Put (uint64_t tag, int16_t v, bool preserveSize)
Put (uint64_t tag, int32_t v)
Put (uint64_t tag, int32_t v, bool preserveSize)
Put (uint64_t tag, int64_t v)
Put (uint64_t tag, int64_t v, bool preserveSize)
Put (uint64_t tag, uint8_t v)
Codifica un valor entero sin signo de TLV .
Put (uint64_t tag, uint8_t v, bool preserveSize)
Codifica un valor entero sin signo de TLV .
Put (uint64_t tag, uint16_t v)
Put (uint64_t tag, uint16_t v, bool preserveSize)
Put (uint64_t tag, uint32_t v)
Put (uint64_t tag, uint32_t v, bool preserveSize)
Put (uint64_t tag, uint64_t v)
Put (uint64_t tag, uint64_t v, bool preserveSize)
Put (uint64_t tag, float v)
Put (uint64_t tag, double v)
Codifica un valor de punto flotante TLV .
PutBoolean (uint64_t tag, bool v)
Codifica un valor booleano TLV .
PutBytes (uint64_t tag, const uint8_t *buf, uint32_t len)
Codifica un valor de cadena de bytes TLV .
PutNull (uint64_t tag)
Codifica un valor nulo de TLV .
PutPreEncodedContainer (uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
Codifica un elemento contenedor TLV de un conjunto precodificado de elementos miembro.
PutString (uint64_t tag, const char *buf)
Codifica un valor de cadena TLV UTF8.
PutString (uint64_t tag, const char *buf, uint32_t len)
Codifica un valor de cadena TLV UTF8.
PutStringF (uint64_t tag, const char *fmt, ...)
Codifique la salida de la cadena formateada de acuerdo con el formato en el elemento TLV .
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType)
Comienza a codificar un nuevo elemento contenedor TLV .
StartPutBytes (uint64_t tag, uint32_t totalLen)
Codifica una cadena de bytes TLV en varios fragmentos.
VPutStringF (uint64_t tag, const char *fmt, va_list ap)
Codifique la salida de la cadena formateada de acuerdo con el formato en el elemento TLV .

Funciones estáticas públicas

FinalizePacketBuffer (TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
Una implementación de una funciónTLVWriter FinalizeBuffer para escribir en una cadena de PacketBuffers.
GetNewBuffer_Malloced (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Una implementación de una funciónGetNewBuffer de TLVWriter para escribir en un búfer dinámico.
GetNewPacketBuffer (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Una implementación de una funciónTLVWriter GetNewBuffer para escribir en una cadena de PacketBuffers.

Funciones protegidas

IsCloseContainerReserved (void) const
bool
Determine si el contenedor debe reservar espacio para el símbolo CloseContainer en el punto de inicio / apertura del contenedor.
IsContainerOpen (void) const
bool
SetCloseContainerReserved (bool aCloseContainerReserved)
void
Establezca si el contenedor debe reservar el espacio para el símbolo CloseContainer en el punto de inicio / apertura del contenedor.
SetContainerOpen (bool aContainerOpen)
void
WriteData (const uint8_t *p, uint32_t len)
WriteElementHead (TLVElementType elemType, uint64_t tag, uint64_t lenOrVal)
WriteElementWithData ( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen)

Tipos protegidos

@ 72

 @72

Tipos públicos

FinalizeBufferFunct

WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)

Una función utilizada para realizar la finalización de la salida de un objetoTLVWriter .

Las funciones de este tipo se llaman cuando se llama almétodo Finalize () deTLVWriter . Se espera que la función realice cualquier limpieza o finalización necesaria relacionada con el consumo de la salida del objeto escritor. Ejemplos de esto incluyen cosas como registrar la longitud final de la codificación o cerrar un descriptor de archivo.

Detalles
Parámetros
[in] writer
Una referencia al objetoTLVWriter que se está finalizando.
[in,out] bufHandle
Un valor de contexto uintptr_t que se estableció mediante llamadas anteriores a la función GetNewBuffer .
[in,out] bufStart
Un puntero al comienzo del búfer de salida actual (y final).
[in,out] bufLen
El número de bytes contenidos en el búfer al que apunta bufStart .
Valores devueltos
WEAVE_NO_ERROR
Si la finalización fue exitosa.
other
Otros códigos de error de Weave o específicos de la plataforma que indican que se produjo un error durante la finalización.

GetNewBufferFunct

WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)

Una función que proporciona nuevo espacio de búfer de salida a unTLVWriter .

Las funciones de este tipo se utilizan para preparar un nuevo espacio de búfer para que escriba unTLVWriter . Cuando se llama, se espera que la función devuelva un puntero a una ubicación de memoria donde se deben escribir nuevos datos, junto con una longitud máxima asociada. La función puede proporcionar espacio de escritura al asignar un nuevo búfer para contener los datos o al borrar los datos escritos previamente de un búfer existente.

Detalles
Parámetros
[in] writer
Una referencia al objetoTLVWriter que solicita un nuevo espacio de búfer.
[in,out] bufHandle
Una referencia a un valor uintptr_t que la función puede usar para almacenar datos de contexto entre llamadas. Este valor se inicializa a 0 antes de la primera llamada.
[in,out] bufStart
Una referencia a un puntero de datos. Al ingresar a la función, bufStart señala el comienzo del búfer de salida actual. Al salir, se espera que bufStart apunte al comienzo del nuevo búfer de salida. El nuevo valor del puntero puede ser el mismo que el valor anterior (por ejemplo, si la función copió los datos existentes en otro lugar), o puede apuntar a una ubicación completamente nueva.
[in,out] bufLen
Una referencia a un entero sin signo. Al ingresar a la función, bufLen contiene el número de bytes de espacio no utilizado en el búfer actual. Al salir, se espera que bufLen contenga el número máximo de bytes que se pueden escribir en el nuevo búfer de salida.
Valores devueltos
WEAVE_NO_ERROR
Si la función pudo proporcionar más espacio de búfer para el escritor.
other
Otros códigos de error de Weave o específicos de la plataforma que indican que se produjo un error que impidió que la función produjera espacio adicional en el búfer.

Atributos públicos

Datos de aplicación

void * AppData

Un campo de puntero que se puede utilizar para datos específicos de la aplicación.

FinalizarBuffer

FinalizeBufferFunct FinalizeBuffer

Un puntero a una función que se llamará cuando se finaliceTLVWriter .

Un objetoTLVWriter llamará a la función FinalizeBuffer siempre que se llame a su método Finalize () . Las aplicaciones pueden establecer el puntero de función en cualquier punto antes de llamar a Finalize () . De forma predeterminada, el puntero se establece en NULL, lo que hace que el método Finalize () deje de llamar a la función.

Consulte la definición de tipo FinalizeBufferFunct para obtener información adicional sobre la implementación de una función FinalizeBuffer.

GetNewBuffer

GetNewBufferFunct GetNewBuffer

Un puntero a una función que proporcionará nuevo espacio de búfer de salida a unTLVWriter .

Un objetoTLVWriter llamará a la función GetNewBuffer siempre que se intente escribir datos que excedan el tamaño del búfer de salida actual. Si se establece en NULL (el valor predeterminado), el escritor devolverá un WEAVE_ERROR_NO_MEMORY si los datos de salida desbordan el búfer actual.

GetNewBuffer puede configurarse mediante una aplicación en cualquier momento, pero normalmente se configura cuando se inicializa el escritor.

Consulte la definición de tipo GetNewBufferFunct para obtener información adicional sobre cómo implementar una función GetNewBuffer.

ImplicitProfileId

uint32_t ImplicitProfileId

El ID de perfil de las etiquetas que deben codificarse de forma implícita.

Cuando se le pide a un escritor que codifique un nuevo elemento, si la identificación del perfil de la etiqueta asociada con el nuevo elemento coincide con el valor del miembro ImplicitProfileId , el escritor codificará la etiqueta en forma implícita, omitiendo la identificación del perfil en el proceso.

De forma predeterminada, la propiedad ImplicitProfileId se establece en kProfileIdNotSpecified, que indica al escritor que no emita etiquetas codificadas implícitamente. Las aplicaciones pueden establecer ImplicitProfileId en cualquier momento para habilitar etiquetas de codificación en forma implícita comenzando en el punto actual de la codificación. El ID de perfil apropiado para establecer generalmente depende del contexto de la aplicación o el protocolo que se está hablando.

Atributos protegidos

mBufHandle

uintptr_t mBufHandle

mBufStart

uint8_t * mBufStart

mContainerType

TLVType mContainerType

mLenEscrito

uint32_t mLenWritten

mMaxLen

uint32_t mMaxLen

mRemainingLen

uint32_t mRemainingLen

mWritePoint

uint8_t * mWritePoint

Funciones publicas

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

Completa la escritura de un contenedor TLV después de una llamada a OpenContainer () .

El método CloseContainer () restaura el estado de un objetoTLVWriter principal después de una llamada a OpenContainer () . Para cada llamada a OpenContainer (), las aplicaciones deben realizar una llamada correspondiente a CloseContainer () , pasando una referencia al mismo escritor de contenedores a ambos métodos.

Cuando CloseContainer () regresa, las aplicaciones pueden continuar usando el escritor principal para escribir elementos TLV adicionales que aparecen después del elemento contenedor. En este punto, el escritor de contenedores suministrado debe considerarse "desinicializado" y no debe usarse sin reinicializarlo.

Detalles
Parámetros
[in] containerWriter
Una referencia al objetoTLVWriter que se proporcionó al método OpenContainer () .
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_INCORRECT_STATE
Si el escritor de contenedor proporcionado no está en el estado correcto.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto otro escritor de contenedores en el escritor de contenedores proporcionado y aún no se ha cerrado.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si completar la codificación del contenedor excedería el límite del número máximo 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 la falta de memoria.
other
Otros errores de Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () .

ContinuarPutBytes

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

Codifica un valor de cadena de bytes TLV .

Esto debería usarse con StartPutBytes.

Detalles
Parámetros
[in] buf
Un puntero a un búfer que contiene la cadena de bytes que se codificará.
[in] len
El número de bytes que se codificarán.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
WEAVE_ERROR_INVALID_TLV_TAG
Si el valor de etiqueta especificado no es válido o inadecuado en el contexto en el que se escribe el valor.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la escritura, el valor excedería el límite del número máximo de bytes especificado cuando se inicializó la escritura.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falló debido a la falta de memoria.
other
Otros errores de Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () .

CopyContainer

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

Copia un elemento contenedor TLV del objetoTLVReader .

CopyContainer () codifica un nuevo elemento contenedor TLV copiando un elemento contenedorprecodificado ubicado en la posición actual de un objetoTLVReader . El método escribe la totalidad del nuevo elemento contenedor en una llamada, copiando el tipo, la etiqueta y los elementos del contenedor de la codificación de origen. Cuando el método regresa, el objeto escritor se puede usar para escribir elementos TLV adicionales después del elemento contenedor.

Detalles
Parámetros
[in] container
Una referencia a un objetoTLVReader que identifica el contenedor TLVprecodificado que se va a copiar.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_INCORRECT_STATE
Si el lector suministrado no está colocado sobre un elemento contenedor.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
WEAVE_ERROR_TLV_UNDERRUN
Si la codificación TLV subyacente asociada con el lector suministrado terminó prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el lector suministrado encontró un tipo de elemento TLV no válido o no admitido.
WEAVE_ERROR_INVALID_TLV_TAG
Si el lector suministrado encontró una etiqueta TLV en un contexto no válido, o si la etiqueta asociada con el contenedor de origen no es válida o es inapropiada en el contexto en el que se está escribiendo el nuevo contenedor.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la escritura, el valor excedería el límite del número máximo de bytes especificado cuando se inicializó la escritura.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falló debido a la falta de memoria.
other
Otros errores Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () , o por la función GetNextBuffer () asociada con el objeto lector.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

Codifica un elemento contenedor TLV de un conjunto precodificado de elementos miembro.

El método CopyContainer () codifica un nuevo elemento contenedor TLV (una estructura, matriz o ruta) que contiene un conjunto de elementos miembros tomados de un objetoTLVReader . Cuando se llama al método, se espera que el objeto lector proporcionado se coloque en un elemento contenedor TLV . El contenedor recién codificado tendrá el mismo tipo y miembros que el contenedor de entrada. La etiqueta del nuevo contenedor se especifica como parámetro de entrada.

Cuando el método regresa, el objeto escritor se puede usar para escribir elementos TLV adicionales después del elemento 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 etiqueta deben construirse con una de las funciones de definición de etiqueta ProfileTag () , ContextTag () o CommonTag () .
[in] container
Una referencia a un objetoTLVReader que identifica un contenedor TLVprecodificado cuyo tipo y miembros deben copiarse.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_INCORRECT_STATE
Si el lector suministrado no está colocado sobre un elemento contenedor.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
WEAVE_ERROR_TLV_UNDERRUN
Si la codificación TLV subyacente asociada con el lector suministrado terminó prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el lector suministrado encontró un tipo de elemento TLV no válido o no admitido.
WEAVE_ERROR_INVALID_TLV_TAG
Si el lector suministrado encontró una etiqueta TLV en un contexto no válido, o si la etiqueta suministrada no es válida o inapropiada en el contexto en el que se está escribiendo el nuevo contenedor.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la escritura, el valor excedería el límite del número máximo de bytes especificado cuando se inicializó la escritura.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falló debido a la falta de memoria.
other
Otros errores Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () , o por la función GetNextBuffer () asociada con el objeto lector.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  const uint8_t *encodedContainer,
  uint16_t encodedContainerLen
)

Codifica un elemento contenedor TLV que contiene elementos miembros de un contenedor precodificado.

El método CopyContainer () codifica un nuevo elemento contenedor TLV (una estructura, matriz o ruta) que contiene un conjunto de elementos miembros tomados del contenido de un contenedor precodificado suministrado. Cuando se llama al método, los datos en el búfer de entrada proporcionado se analizan como un elemento de contenedor TLV y se escribe un nuevo contenedor que tiene el mismo tipo y miembros que el contenedor de entrada. La etiqueta del nuevo contenedor se especifica como parámetro de entrada.

Cuando el método regresa, el objeto escritor se puede usar para escribir elementos TLV adicionales después del elemento 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 etiqueta deben construirse con una de las funciones de definición de etiqueta ProfileTag () , ContextTag () o CommonTag () .
[in] encodedContainer
Un búfer que contiene un contenedor TLV precodificado cuyo tipo y miembros deben copiarse.
[in] encodedContainerLen
La longitud en bytes del contenedor precodificado.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
WEAVE_ERROR_TLV_UNDERRUN
Si el contenedor codificado terminó prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el contenedor codificado contenía un tipo de elemento TLV no válido o no admitido.
WEAVE_ERROR_INVALID_TLV_TAG
Si el contenedor codificado contenía una etiqueta TLV en un contexto no válido, o si la etiqueta suministrada no es válida o inapropiada en el contexto en el que se está escribiendo el nuevo contenedor.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la escritura, el valor excedería el límite del número máximo de bytes especificado cuando se inicializó la escritura.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falló debido a la falta de memoria.
other
Otros errores Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () , o por la función GetNextBuffer () asociada con el objeto lector.

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

Copia un elemento TLV de un objeto lector en el escritor.

El método CopyElement () codifica un nuevo elemento TLV cuyo tipo, etiqueta y valor se toman de un objetoTLVReader . Cuando se llama al método, se espera que el objeto lector proporcionado se coloque en el elemento TLV de origen. El elemento recién codificado tendrá el mismo tipo, etiqueta y contenido que el contenedor de entrada. Si el elemento suministrado es un contenedor TLV (estructura, matriz o ruta), se copiará todo el contenido del contenedor.

Detalles
Parámetros
[in] reader
Una referencia a un objetoTLVReader que identifica un elemento TLVprecodificado que debe copiarse.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_INCORRECT_STATE
Si el lector suministrado no está colocado sobre un elemento.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
WEAVE_ERROR_TLV_UNDERRUN
Si la codificación TLV subyacente asociada con el lector suministrado terminó prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el lector suministrado encontró un tipo de elemento TLV no válido o no admitido.
WEAVE_ERROR_INVALID_TLV_TAG
Si el lector suministrado encontró una etiqueta TLV en un contexto no válido, o si la etiqueta suministrada no es válida o inapropiada en el contexto en el que se está escribiendo el nuevo contenedor.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la escritura, el valor excedería el límite del número máximo de bytes especificado cuando se inicializó la escritura.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falla debido a la falta de memoria.
other
Otros errores Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () , o por la función GetNextBuffer () asociada con el objeto lector.

CopyElement

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

EndContainer

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

Completa la codificación de un elemento contenedor TLV .

El método EndContainer () completa la codificación de un elemento contenedor TLV y restaura el estado de un objeto TLVWrite después de una llamada anterior a StartContainer () . Para cada llamada a StartContainer (), las aplicaciones deben realizar una llamada correspondiente a EndContainer () , pasando el valor TLVType devuelto por la llamada StartContainer () . Cuando EndContainer () regresa, el objeto escritor se puede usar para escribir elementos TLV adicionales que siguen al elemento contenedor.

Detalles
Parámetros
[in] outerContainerType
El valor TLVType que devolvió el método StartContainer () .
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_INCORRECT_STATE
Si no se realizó una llamada StartContainer () correspondiente.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la escritura, el valor excedería el límite del número máximo de bytes especificado cuando se inicializó la escritura.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falló debido a la falta de memoria.
other
Otros errores de Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () .

Finalizar

WEAVE_ERROR Finalize(
  void
)

Termina la escritura de una codificación TLV .

El método Finalize () completa el proceso de escribir una codificación TLV en el búfer de salida subyacente. La aplicación debe llamar al método antes de que utilice el contenido del búfer. Finalize () solo se puede llamar cuando no hay escritores de contenedores abiertos para el escritor actual. (Consulte OpenContainer() ).

Detalles
Valores devueltos
WEAVE_NO_ERROR
Si la codificación se finalizó correctamente.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
other
Otros errores Weave o específicos de la plataforma devueltos por la función FinalizeBuffer () configurada.

GetContainerType

TLVType GetContainerType(
  void
) const 

Devuelve el tipo de contenedor dentro del cualTLVWriter está escribiendo actualmente.

El método GetContainerType () devuelve el tipo de contenedor TLV dentro del cualTLVWriter está escribiendo actualmente. SiTLVWriter no escribe elementos dentro de un contenedor (es decir, si escribe en el nivel más externo de una codificación), el método devuelve kTLVType_NotSpecified.

Detalles
Devoluciones
TLVType del contenedor actual, o kTLVType_NotSpecified siTLVWriter no escribe elementos dentro de un contenedor.

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

Devuelve el número total de bytes escritos desde que se inicializó el escritor.

Detalles
Devoluciones
Número total de bytes escritos desde que se inicializó el escritor.

En eso

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

Inicializa un objetoTLVWriter para escribir en un búfer de salida único.

Detalles
Parámetros
[in] buf
Un puntero al búfer en el que se debe escribir TLV .
[in] maxLen
El número máximo de bytes que se deben escribir en el búfer de salida.

En eso

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Inicializa un objetoTLVWriter para escribir en un solo PacketBuffer.

La escritura comienza inmediatamente después del último byte de datos existentes en el búfer proporcionado.

Detalles
Parámetros
[in] buf
Un puntero a un PacketBuffer en el que se debe escribir TLV .
[in] maxLen
El número máximo de bytes que se deben escribir en el búfer de salida.

En eso

void Init(
  PacketBuffer *buf,
  uint32_t maxLen,
  bool allowDiscontiguousBuffers
)

Inicializa un objetoTLVWriter para escribir en uno o más PacketBuffers.

La escritura comienza inmediatamente después del último byte de datos existentes en el búfer especificado. Si allowDiscontiguousBuffers es verdadero, se asignarán y encadenarán PacketBuffers adicionales al búfer proporcionado según sea necesario para acomodar la cantidad de datos escritos. Si el búfer de salida especificado ya es el encabezado de una cadena de búferes, la salida se escribirá en los búferes posteriores de la cadena antes de que se asignen nuevos búferes.

Detalles
Parámetros
[in] buf
Un puntero a un PacketBuffer en el que se deben escribir los datos de TLV .
[in] maxLen
El número máximo de bytes que se deben escribir en los búfer (s) de salida.
[in] allowDiscontiguousBuffers
Si es verdadero, escriba datos en una cadena de PacketBuffers, asignando nuevos búferes según sea necesario para almacenar los datos escritos. Si es falso, la escritura fallará con WEAVE_ERROR_BUFFER_TOO_SMALL si los datos escritos exceden el espacio disponible en el búfer de salida inicial.

InitMalloced

void InitMalloced(
  uint8_t *& outBuf,
  uint32_t initialBufSize,
  uint32_t maxLen
)

Inicializa un objetoTLVWriter para escribir en un búfer dinámico.

Detalles
Parámetros
[in] buf
Una referencia a un puntero que recibirá el búfer asignado.
[in] maxLen
El número máximo de bytes que se deben escribir en el búfer de salida.
[in] initialBufSize
El número inicial de bytes que deben asignarse al búfer.

OpenContainer

WEAVE_ERROR OpenContainer(
  uint64_t tag,
  TLVType containerType,
  TLVWriter & containerWriter
)

Inicializa un nuevo objetoTLVWriter para escribir los miembros de un elemento contenedor TLV .

El método OpenContainer () se utiliza para escribir elementos de contenedor TLV (estructura, matrices o rutas) en una codificación. El método toma el tipo y la etiqueta (si corresponde) del nuevo contenedor y una referencia a un nuevo objeto escritor (el escritor del contenedor ) que se inicializará con el propósito de escribir los elementos del contenedor. Las aplicaciones escriben los miembros del nuevo contenedor usando el escritor de contenedores y luego llaman a CloseContainer () para completar la codificación del contenedor.

Mientras el escritor de contenedor está abierto, las aplicaciones no deben realizar llamadas ni alterar el estado del escritor principal.

El escritor de contenedores hereda varias propiedades de configuración del escritor principal. Estos son:

  • El ID de perfil implícito (ImplicitProfileId)
  • El puntero de datos de la aplicación (AppData)
  • Los punteros de función GetNewBuffer y FinalizeBuffer

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 etiqueta deben construirse con una de las funciones de definición de etiqueta ProfileTag () , ContextTag () o CommonTag () .
[in] containerType
El tipo de contenedor que se va a codificar. Debe ser uno de kTLVType_Structure , kTLVType_Array o kTLVType_Path .
[out] containerWriter
Una referencia a un objetoTLVWriter que se inicializará para escribir los miembros del nuevo elemento contenedor. Todos los datos asociados con el objeto proporcionado se sobrescriben.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el valor especificado para containerType es incorrecto.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
WEAVE_ERROR_INVALID_TLV_TAG
Si el valor de etiqueta especificado no es válido o inadecuado en el contexto en el que se escribe el valor.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la escritura, el valor excedería el límite del número máximo de bytes especificado cuando se inicializó la escritura.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falla debido a la falta de memoria.
other
Otros errores de Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () .

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

Codifica un valor entero con signo TLV .

Esta es una función de miembro sobrecargada, proporcionada por conveniencia. Se diferencia de la función anterior solo en los argumentos que acepta.

Detalles
Parámetros
[in] tag
La etiqueta TLV que se codificará con el valor, o AnonymousTag si el valor debe codificarse sin una etiqueta. Los valores de etiqueta deben construirse con una de las funciones de definición de etiqueta ProfileTag () , ContextTag () o CommonTag () .
[in] v
El valor que se codificará.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
WEAVE_ERROR_INVALID_TLV_TAG
Si el valor de etiqueta especificado no es válido o inadecuado en el contexto en el que se escribe el valor.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la escritura, el valor excedería el límite del número máximo de bytes especificado cuando se inicializó la escritura.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falló debido a la falta de memoria.
other
Otros errores Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () .

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v,
  bool preserveSize
)

Codifica un valor entero con signo TLV .

Esta es una función de miembro sobrecargada, proporcionada por conveniencia. Se diferencia de la función anterior solo en los argumentos que acepta.

Detalles
Parámetros
[in] tag
La etiqueta TLV que se codificará con el valor, o AnonymousTag si el valor debe codificarse sin una etiqueta. Los valores de etiqueta deben construirse con una de las funciones de definición de etiqueta ProfileTag () , ContextTag () o CommonTag () .
[in] v
El valor que se codificará.
[in] preserveSize
Verdadero si el valor debe codificarse en el mismo número de bytes que en el tipo de entrada. Falso si el valor debe codificarse en el número mínimo de bytes necesarios para representar el valor. Nota: Se recomienda encarecidamente a las aplicaciones que establezcan este parámetro en falso.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
WEAVE_ERROR_INVALID_TLV_TAG
Si el valor de etiqueta especificado no es válido o inadecuado en el contexto en el que se escribe el valor.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la escritura, el valor excedería el límite del número máximo de bytes especificado cuando se inicializó la escritura.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falló debido a la falta de memoria.
other
Otros errores de Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () .

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v
)

Codifica un valor entero sin signo de TLV .

Esta es una función de miembro sobrecargada, proporcionada por conveniencia. Se diferencia de la función anterior solo en los argumentos que acepta.

Detalles
Parámetros
[in] tag
La etiqueta TLV que se codificará con el valor, o AnonymousTag si el valor debe codificarse sin una etiqueta. Los valores de etiqueta deben construirse con una de las funciones de definición de etiqueta ProfileTag () , ContextTag () o CommonTag () .
[in] v
El valor que se codificará.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
WEAVE_ERROR_INVALID_TLV_TAG
Si el valor de etiqueta especificado no es válido o inadecuado en el contexto en el que se escribe el valor.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la escritura, el valor excedería el límite del número máximo de bytes especificado cuando se inicializó la escritura.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falló debido a la falta de memoria.
other
Otros errores de Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () .

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v,
  bool preserveSize
)

Codifica un valor entero sin signo de TLV .

Esta es una función de miembro sobrecargada, proporcionada por conveniencia. Se diferencia de la función anterior solo en los argumentos que acepta.

Detalles
Parámetros
[in] tag
La etiqueta TLV que se codificará con el valor, o AnonymousTag si el valor debe codificarse sin una etiqueta. Los valores de etiqueta deben construirse con una de las funciones de definición de etiqueta ProfileTag () , ContextTag () o CommonTag () .
[in] v
El valor que se codificará.
[in] preserveSize
Verdadero si el valor debe codificarse en el mismo número de bytes que en el tipo de entrada. Falso si el valor debe codificarse en el número mínimo de bytes necesarios para representar el valor. Nota: Se recomienda encarecidamente a las aplicaciones que establezcan este parámetro en falso.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
WEAVE_ERROR_INVALID_TLV_TAG
Si el valor de etiqueta especificado no es válido o inadecuado en el contexto en el que se escribe el valor.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la escritura, el valor excedería el límite del número máximo de bytes especificado cuando se inicializó la escritura.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falló debido a la falta de memoria.
other
Otros errores de Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () .

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  float v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  double v
)

Codifica un valor de punto flotante TLV .

Esta es una función de miembro sobrecargada, proporcionada por conveniencia. Se diferencia de la función anterior solo en los argumentos que acepta.

Detalles
Parámetros
[in] tag
La etiqueta TLV que se codificará con el valor, o AnonymousTag si el valor debe codificarse sin una etiqueta. Los valores de etiqueta deben construirse con una de las funciones de definición de etiqueta ProfileTag () , ContextTag () o CommonTag () .
[in] v
El valor que se codificará.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
WEAVE_ERROR_INVALID_TLV_TAG
Si el valor de etiqueta especificado no es válido o inadecuado en el contexto en el que se escribe el valor.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la escritura, el valor excedería el límite del número máximo de bytes especificado cuando se inicializó la escritura.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falló debido a la falta de memoria.
other
Otros errores de Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () .

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

Codifica un valor booleano TLV .

Detalles
Parámetros
[in] tag
La etiqueta TLV que se codificará con el valor, o AnonymousTag si el valor debe codificarse sin una etiqueta. Los valores de etiqueta deben construirse con una de las funciones de definición de etiqueta ProfileTag () , ContextTag () o CommonTag () .
[in] v
El valor que se codificará.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si se ha abierto un escritor de contenedor en el escritor actual y aún no se ha cerrado.
WEAVE_ERROR_INVALID_TLV_TAG
Si el valor de etiqueta especificado no es válido o inadecuado en el contexto en el que se escribe el valor.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la escritura, el valor excedería el límite del número máximo de bytes especificado cuando se inicializó la escritura.
WEAVE_ERROR_NO_MEMORY
Si un intento de asignar un búfer de salida falló debido a la falta de memoria.
other
Otros errores de Weave o específicos de la plataforma devueltos por las funciones configuradas GetNewBuffer () o FinalizeBuffer () .

PutBytes

WEAVE_ERROR PutBytes(
  uint64_t tag,
  const uint8_t *buf,
  uint32_t len
)

Codifica un valor de cadena de bytes TLV .

Detalles
Parámetros
[in] tag
La etiqueta TLV que se codificará con el valor, o AnonymousTag si el valor debe codificarse sin una etiqueta. Los valores de etiqueta deben construirse con una de las funciones de definición de etiqueta ProfileTag () , ContextTag () o CommonTag () .
[in] buf
A pointer to a buffer containing the bytes string to be encoded.
[in] len
The number of bytes to be encoded.
Valores devueltos
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

Encodes a TLV null value.

Detalles
Parámetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
Valores devueltos
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutPreEncodedContainer

WEAVE_ERROR PutPreEncodedContainer(
  uint64_t tag,
  TLVType containerType,
  const uint8_t *data,
  uint32_t dataLen
)

Encodes a TLV container element from a pre-encoded set of member elements.

The PutPreEncodedContainer() method encodes a new TLV container element (a structure, array or path) containing a set of member elements taken from a pre-encoded buffer. The input buffer is expected to contain zero or more full-encoded TLV elements, with tags that conform to the rules associated with the specified container type (eg structure members must have tags, while array members must not).

The method encodes the entirety of the container element in one call. When PutPreEncodedContainer() returns, the writer object can be used to write additional TLV elements following the container element.

Detalles
Parámetros
[in] tag
The TLV tag to be encoded with the container, or AnonymousTag if the container should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] containerType
The type of container to encode. Must be one of kTLVType_Structure , kTLVType_Array or kTLVType_Path .
[in] data
A pointer to a buffer containing zero of more encoded TLV elements that will become the members of the new container.
[in] dataLen
The number of bytes in the data buffer.
Valores devueltos
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_WRONG_TLV_TYPE
If the value specified for containerType is incorrect.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

Encodes a TLV UTF8 string value.

Detalles
Parámetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] buf
A pointer to the null-terminated UTF-8 string to be encoded.
Valores devueltos
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf,
  uint32_t len
)

Encodes a TLV UTF8 string value.

Detalles
Parámetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] buf
A pointer to the UTF-8 string to be encoded.
[in] len
The length (in bytes) of the string to be encoded.
Valores devueltos
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutStringF

WEAVE_ERROR PutStringF(
  uint64_t tag,
  const char *fmt,
  ...
)

Encode the string output formatted according to the format in the TLV element.

PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:

The platform supplies a callback-based vcbprintf that provides the ability to call a custom callback in place of putchar.

The platform supplies a variant of vsnprintf called vsnprintf_ex , that behaves exactly like vsnprintf except it has provisions for omitting the first n characters of the output.

Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex variety of functions will consume less stack.

If neither of the above is available, but platform provides malloc the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage

Detalles
Parámetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] fmt
The format string used to format the argument list. Follows the same syntax and rules as the format string for printf family of functions.
[in] ...
A list of arguments to be formatted in the output value according to fmt.
Valores devueltos
WEAVE_NO_ERROR
If the method succeeded.
other
If underlying calls toTLVWriter methods WriteElementHead or GetNewBuffer failed, their error is immediately forwarded up the call stack.

StartContainer

WEAVE_ERROR StartContainer(
  uint64_t tag,
  TLVType containerType,
  TLVType & outerContainerType
)

Begins encoding a new TLV container element.

The StartContainer() method is used to write TLV container elements (structure, arrays or paths) to an encoding. The method takes the type and tag (if any) of the new container, and a reference to a TLVType value which will be used to save the current context of the writer while it is being used to write the container.

Once the StartContainer() method returns, the application should use the currentTLVWriter object to write the elements of the container. When finish, the application must call the EndContainer() method to finish the encoding of the container.

Detalles
Parámetros
[in] tag
The TLV tag to be encoded with the container, or AnonymousTag if the container should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] containerType
The type of container to encode. Must be one of kTLVType_Structure , kTLVType_Array or kTLVType_Path .
[out] outerContainerType
A reference to a TLVType value that will receive the context of the writer.
Valores devueltos
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_WRONG_TLV_TYPE
If the value specified for containerType is incorrect.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

StartPutBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

Encodes a TLV byte string in multiple chunks.

This should be used with ContinuePutBytes.

Detalles
Parámetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] totalLen
The total number of bytes to be encoded.
Valores devueltos
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

VPutStringF

WEAVE_ERROR VPutStringF(
  uint64_t tag,
  const char *fmt,
  va_list ap
)

Encode the string output formatted according to the format in the TLV element.

PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:

The platform supplies a callback-based vcbprintf that provides the ability to call a custom callback in place of putchar.

The platform supplies a variant of vsnprintf called vsnprintf_ex , that behaves exactly like vsnprintf except it has provisions for omitting the first n characters of the output.

Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex variety of functions will consume less stack.

If neither of the above is available, but platform provides malloc the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage

Detalles
Parámetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] fmt
The format string used to format the argument list. Follows the same syntax and rules as the format string for printf family of functions.
[in] ap
A list of arguments to be formatted in the output value according to fmt.
Valores devueltos
WEAVE_NO_ERROR
If the method succeeded.
other
If underlying calls toTLVWriter methods WriteElementHead or GetNewBuffer failed, their error is immediately forwarded up the call stack.

Funciones estáticas públicas

FinalizePacketBuffer

WEAVE_ERROR FinalizePacketBuffer(
  TLVWriter & writer,
  uintptr_t bufHandle,
  uint8_t *bufStart,
  uint32_t dataLen
)

An implementation of aTLVWriter FinalizeBuffer function for writing to a chain of PacketBuffers.

The FinalizePacketBuffer() function performs the necessary finalization required when using aTLVWriter to write to a chain of PacketBuffers. The function is designed to be used in conjunction with the GetNewPacketBuffer() function.

See the FinalizeBufferFunct type definition for additional information on the API of the FinalizePacketBuffer() function.

GetNewBuffer_Malloced

WEAVE_ERROR GetNewBuffer_Malloced(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

An implementation of aTLVWriter GetNewBuffer function for writing to a dynamic buffer.

The GetNewBuffer_Malloced() function supplies new output space to aTLVWriter by doubling the size of the underlying dynamic buffer as needed to store the encoding. The function is designed to be assigned to theTLVWriter GetNewBuffer function pointer.

See the GetNewBufferFunct type definition for additional information on the API of the GetNewBuffer_Malloced() function.

GetNewPacketBuffer

WEAVE_ERROR GetNewPacketBuffer(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

An implementation of aTLVWriter GetNewBuffer function for writing to a chain of PacketBuffers.

The GetNewPacketBuffer() function supplies new output space to aTLVWriter by allocating a chain of one or more PacketBuffers as needed to store the encoding. The function is designed to be assigned to theTLVWriter GetNewBuffer function pointer.

Note that when using the GetNewPacketBuffer with aTLVWriter , the corresponding FinalizePacketBuffer() function (or an equivalent) should also be used to finalize the buffer chain.

See the GetNewBufferFunct type definition for additional information on the API of the GetNewPacketBuffer() function.

Funciones protegidas

IsCloseContainerReserved

bool IsCloseContainerReserved(
  void
) const 

Determine whether the container should reserve space for the CloseContainer symbol at the point of starting / opening the container.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerReserved

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

Set whether the container should reserve the space for the CloseContainer symbol at the point of starting / opening the container.

SetContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

WriteData

WEAVE_ERROR WriteData(
  const uint8_t *p,
  uint32_t len
)

WriteElementHead

WEAVE_ERROR WriteElementHead(
  TLVElementType elemType,
  uint64_t tag,
  uint64_t lenOrVal
)

WriteElementWithData

WEAVE_ERROR WriteElementWithData(
  TLVType type,
  uint64_t tag,
  const uint8_t *data,
  uint32_t dataLen
)