En Google, luchamos por la equidad racial de la comunidad negra. Más información

nl :: Tejido:: TLV :: TLVWriter

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

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

Resumen

TLVWriter implementa un sólo avance, codificador de estilo corriente de la armadura de TLV de datos. Aplicaciones escribir datos en una codificación llamando a uno de los del escritor put () métodos, pasando información de la etiqueta y el valor asociado como sea necesario. Del mismo modo las aplicaciones pueden codificar TLV tipos de contenedores (estructuras, matrices o caminos) llamando del escritor OpenContainer () métodos o EnterContainer ().

ATLVWriter objeto puede escribir datos directamente a una memoria intermedia de salida fija, o a una cadena de uno o más objetos PacketBuffer. Además, las aplicaciones pueden suministrar sus propias GetNewBuffer y FinalizeBuffer funciones para la salida directa a un destino arbitrario, por ejemplo un enchufe o una cola de eventos.

Herencia

Las subclases dirigir conocidos: nl :: Armadura :: :: 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 usada para llevar a cabo la finalización de la salida de unTLVWriter objeto.
GetNewBufferFunct )(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR (*
Una función que los suministros 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 llama cuando elTLVWriter está finalizado.
GetNewBuffer
Un puntero a una función que suministrará 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 TLV contenedor después de una llamada a OpenContainer () .
ContinuePutBytes (const uint8_t *buf, uint32_t len)
Codifica un TLV valor de cadena de bytes.
CopyContainer (TLVReader & container)
Copia un TLV elemento contenedor deTLVReader objeto.
CopyContainer (uint64_t tag,TLVReader & container)
Codifica un TLV elemento contenedor de un conjunto pre-codificada de elementos miembros.
CopyContainer (uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
Codifica un TLV elemento contenedor que contiene elementos miembro de un contenedor pre-codificada.
CopyElement (TLVReader & reader)
Copia un TLV de elementos de un objeto lector en el escritor.
CopyElement (uint64_t tag,TLVReader & reader)
EndContainer ( TLVType outerContainerType)
Completa la codificación de un TLV elemento contenedor.
Finalize (void)
Terminar la redacción de un TLV de codificación.
GetContainerType (void) const
Devuelve el tipo de contenedor dentro del cual elTLVWriter 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 unaTLVWriter objeto a escribir en una sola memoria intermedia de salida.
Init ( PacketBuffer *buf, uint32_t maxLen)
void
Inicializa unaTLVWriter objeto a escribir en una sola PacketBuffer.
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Inicializa unaTLVWriter objeto a escribir en una o más PacketBuffers.
InitMalloced (uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
Inicializa unaTLVWriter objeto para escribir en un búfer dinámico.
OpenContainer (uint64_t tag, TLVType containerType,TLVWriter & containerWriter)
Inicializa una nuevaTLVWriter objeto para escribir los miembros de un TLV elemento contenedor.
Put (uint64_t tag, int8_t v)
Codifica un TLV entero de valor.
Put (uint64_t tag, int8_t v, bool preserveSize)
Codifica un TLV entero de valor.
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 TLV valor entero sin signo.
Put (uint64_t tag, uint8_t v, bool preserveSize)
Codifica un TLV valor entero sin signo.
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 TLV valor de punto flotante.
PutBoolean (uint64_t tag, bool v)
Codifica un TLV valor booleano.
PutBytes (uint64_t tag, const uint8_t *buf, uint32_t len)
Codifica un TLV valor de cadena de bytes.
PutNull (uint64_t tag)
Codifica un TLV valor nulo.
PutPreEncodedContainer (uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
Codifica un TLV elemento contenedor de un conjunto pre-codificada de elementos miembros.
PutString (uint64_t tag, const char *buf)
Codifica un TLV valor de cadena UTF8.
PutString (uint64_t tag, const char *buf, uint32_t len)
Codifica un TLV valor de cadena UTF8.
PutStringF (uint64_t tag, const char *fmt, ...)
Codificar la salida de cadena formateada según el formato en el TLV elemento.
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType)
Empieza codifica un nuevo TLV elemento contenedor.
StartPutBytes (uint64_t tag, uint32_t totalLen)
Codifica un TLV cadena de bytes en varios trozos.
VPutStringF (uint64_t tag, const char *fmt, va_list ap)
Codificar la salida de cadena formateada según el formato en el TLV elemento.

Funciones estáticas públicas

FinalizePacketBuffer (TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
Una implementación de unTLVWriter función FinalizeBuffer para escribir a una cadena de PacketBuffers.
GetNewBuffer_Malloced (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Una implementación de unTLVWriter función GetNewBuffer para escribir en un búfer dinámico.
GetNewPacketBuffer (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Una implementación de unTLVWriter función GetNewBuffer para escribir a 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 usada para llevar a cabo la finalización de la salida de unTLVWriter objeto.

Funciones de este tipo se llaman cuando unTLVWriter 's Finalizar () se llama al método. 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 a laTLVWriter objeto que se está terminando.
[in,out] bufHandle
Un valor de contexto uintptr_t que fue establecido por las llamadas anteriores a la GetNewBuffer función.
[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 la memoria intermedia a la 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 los suministros nuevo espacio de búfer de salida a unTLVWriter .

Funciones de este tipo se utilizan para preparar nuevo espacio de memoria intermedia para unTLVWriter a escribir a. 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 a laTLVWriter objeto que está solicitando nuevo espacio de amortiguación.
[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. En la entrada a la función, bufStart señala el comienzo del búfer de salida actual. A la salida, bufStart se espera que el punto 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. En la entrada a la función, bufLen contiene el número de bytes de espacio no utilizado en el búfer. A la salida, bufLen se espera que 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 Weave o específicos de la plataforma que indican que se produjo un error que impide que la función produzca 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 llama cuando elTLVWriter está finalizado.

ATLVWriter objeto llamará a la función FinalizeBuffer siempre que su Finalizar () se llama al método. Las aplicaciones pueden establecer el puntero de función en cualquier momento antes de llamar Finalizar () . Por defecto, el puntero se establece en NULL, lo que hace que el Finalizar () método para renunciar a 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 suministrará nuevo espacio de búfer de salida a unTLVWriter .

UnTLVWriter objeto llamará a la función GetNewBuffer siempre que se hace un intento de datos de escritura que excede 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 la implementación de 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 para codificar un nuevo elemento, si el ID de perfil de la etiqueta asociada con el nuevo elemento coincide con el valor de la ImplicitProfileId miembro, el escritor codificará la etiqueta en forma implícita, omitiendo el ID de perfil en el proceso.

Por defecto, el ImplicitProfileId propiedad se establece en kProfileIdNotSpecified, que instruye el escritor no para emitir etiquetas codificadas de manera implícita. Las aplicaciones pueden establecer ImplicitProfileId en cualquier momento para activar la codificación de etiquetas en forma implícita a partir del punto actual en 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 TLV contenedor después de una llamada a OpenContainer () .

El CloseContainer () método restaura el estado de uno de los padresTLVWriter objeto después de una llamada a OpenContainer () . Para cada llamada a OpenContainer () aplicaciones deben hacer una llamada correspondiente a CloseContainer () , pasando una referencia a la misma escritora contenedor para ambos métodos.

Cuando CloseContainer () retorna, las aplicaciones podrán seguir utilizando el escritor de los padres para escribir adicionales TLV elementos que aparecen después de que el 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 a laTLVWriter objeto que se suministra a la OpenContainer () método.
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 armadura o plataforma específicos devueltos por el configurada GetNewBuffer () o () FinalizeBuffer funciones.

ContinuarPutBytes

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

Codifica un TLV valor de cadena de bytes.

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 armadura o plataforma específicos devueltos por el configurada GetNewBuffer () o () FinalizeBuffer funciones.

CopyContainer

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

Copia un TLV elemento contenedor deTLVReader objeto.

El CopyContainer () codifica un nuevo TLV elemento contenedor por la copia de un elemento de contenedor pre-codificada situado en la posición actual de unTLVReader objeto. 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 retorna, el objeto escritor se pueden usar para escribir adicionales TLV elementos siguientes el elemento contenedor.

Detalles
Parámetros
[in] container
Una referencia a unTLVReader objeto la identificación de la pre-codificada TLV recipiente 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 el subyacente TLV de codificación asociadas con el lector suministrado terminado prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el lector suministrado encontró un inválido o no soportado TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Si el lector suministrado encontró un TLV etiqueta en un contexto no válido, o si la etiqueta asociada con el recipiente fuente no es válido o no apropiado 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 de la armadura o de la plataforma-específicos devueltos por las configurado GetNewBuffer () o FinalizeBuffer () funciones, o por la función de GetNextBuffer () asociado con el objeto lector.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

Codifica un TLV elemento contenedor de un conjunto pre-codificada de elementos miembros.

El CopyContainer () método codifica un nuevo TLV elemento contenedor (una estructura, matriz o ruta de acceso) que contiene un conjunto de elementos de miembro tomadas de unTLVReader objeto. Cuando se llama al método, se espera que el objeto lector suministrado para ser colocado en un TLV elemento contenedor. 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 retorna, el objeto escritor se pueden usar para escribir adicionales TLV elementos siguientes el elemento contenedor.

Detalles
Parámetros
[in] tag
El TLV etiqueta para ser codificada con el recipiente, o AnonymousTag si el recipiente debe ser codificado sin una etiqueta. Los valores de variables deben ser construidos con una de las funciones de definición de etiqueta ProfileTag () , ContextTag () o CommonTag () .
[in] container
Una referencia a unTLVReader objeto la identificación de un pre-codificada TLV recipiente cuyo tipo y los miembros debe ser copiada.
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 el subyacente TLV de codificación asociadas con el lector suministrado terminado prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el lector suministrado encontró un inválido o no soportado TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Si el lector suministrado encontró un TLV de etiqueta en un contexto no válido, o si la etiqueta proporcionado no es válido 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 de la armadura o de la plataforma-específicos devueltos por las configurado GetNewBuffer () o FinalizeBuffer () funciones, o por la función de GetNextBuffer () asociado con el objeto lector.

CopyContainer

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

Codifica un TLV elemento contenedor que contiene elementos miembro de un contenedor pre-codificada.

El CopyContainer () método codifica un nuevo TLV elemento contenedor (una estructura, matriz o ruta de acceso) que contiene un conjunto de elementos de miembro tomadas de los contenidos de un contenedor pre-codificada suministrado. Cuando se llama al método, los datos en la memoria intermedia de entrada suministrada se analiza como un TLV elemento contenedor una un nuevo contenedor está escrito que tiene el mismo tipo y los miembros como el contenedor de entrada. La etiqueta del nuevo contenedor se especifica como parámetro de entrada.

Cuando el método retorna, el objeto escritor se pueden usar para escribir adicionales TLV elementos siguientes el elemento contenedor.

Detalles
Parámetros
[in] tag
El TLV etiqueta para ser codificada con el recipiente, o AnonymousTag si el recipiente debe ser codificado sin una etiqueta. Los valores de variables deben ser construidos con una de las funciones de definición de etiqueta ProfileTag () , ContextTag () o CommonTag () .
[in] encodedContainer
Un tampón que contiene un pre-codificada TLV recipiente cuyo tipo y los miembros debe ser copiada.
[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 recipiente codificada contenía un inválido o no soportado TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Si el recipiente codificada contenía un TLV etiqueta en un contexto no válido, o si la etiqueta proporcionado no es válido o no apropiado 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 de la armadura o de la plataforma-específicos devueltos por las configurado GetNewBuffer () o FinalizeBuffer () funciones, o por la función de GetNextBuffer () asociado con el objeto lector.

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

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

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

Detalles
Parámetros
[in] reader
Una referencia a unTLVReader objeto la identificación de un pre-codificada TLV elemento que debe ser copiado.
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 el subyacente TLV de codificación asociadas con el lector suministrado terminado prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el lector suministrado encontró un inválido o no soportado TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Si el lector suministrado encontró un TLV de etiqueta en un contexto no válido, o si la etiqueta proporcionado no es válido 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 de la armadura o de la plataforma-específicos devueltos por las configurado GetNewBuffer () o FinalizeBuffer () funciones, o por la función de GetNextBuffer () asociado 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 TLV elemento contenedor.

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

Detalles
Parámetros
[in] outerContainerType
El valor TLVType que fue devuelto por el StartContainer () método.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_INCORRECT_STATE
Si un correspondiente StartContainer () no se hizo la llamada.
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 armadura o plataforma específicos devueltos por el configurada GetNewBuffer () o () FinalizeBuffer funciones.

Finalizar

WEAVE_ERROR Finalize(
  void
)

Terminar la redacción de un TLV de codificación.

El Finalize () método completa el proceso de escribir un TLV de codificación a la memoria intermedia de salida subyacente. La aplicación debe llamar al método antes de que utilice el contenido del búfer. Finalize () sólo puede ser llamado cuando no hay escritores de contenedores abiertos para el escritor actual. (Ver 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 armadura o plataforma específicos devueltos por el configurada FinalizeBuffer () la función.

GetContainerType

TLVType GetContainerType(
  void
) const 

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

El GetContainerType () método devuelve el tipo de la TLV recipiente dentro del cual elTLVWriter está escribiendo actualmente. Si elTLVWriter no está escribiendo elementos dentro de un contenedor (es decir, si la escritura en el más-exterior nivel de una codificación) el método devuelve kTLVType_NotSpecified.

Detalles
Devoluciones
El TLVType del contenedor actual, o si el kTLVType_NotSpecifiedTLVWriter no está escribiendo 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 unaTLVWriter objeto a escribir en una sola memoria intermedia de salida.

Detalles
Parámetros
[in] buf
Un puntero a la memoria intermedia en la que TLV debe ser escrito.
[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 unaTLVWriter objeto a escribir en una sola 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 la que TLV debe ser escrito.
[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 unaTLVWriter objeto a escribir en una o más PacketBuffers.

La escritura comienza inmediatamente después del último byte de datos existentes en el búfer especificado. Si allowDiscontiguousBuffers es cierto, PacketBuffers adicionales serán asignados y encadenados al tampón suministrado 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 la que TLV de datos deben ser escritos.
[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 unaTLVWriter objeto 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 una nuevaTLVWriter objeto para escribir los miembros de un TLV elemento contenedor.

El OpenContainer () método se utiliza para escribir TLV elementos contenedores (estructura, arrays o caminos) a una codificación. El método toma el tipo y la etiqueta (si existe) del nuevo contenedor, y una referencia a un nuevo objeto de escritor (el escritor contenedor) que se inicializa para el propósito de escribir elementos del contenedor. Aplicaciones escriben los miembros del nuevo contenedor utilizando el escritor recipiente y luego llaman CloseContainer () para completar la codificación de contenedores.

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)
  • Punteros de función GetNewBuffer y FinalizeBuffer

Detalles
Parámetros
[in] tag
El TLV etiqueta para ser codificada con el recipiente, o AnonymousTag si el recipiente debe ser codificado sin una etiqueta. Los valores de variables deben ser construidos 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 unTLVWriter objeto que será inicializado para la escritura de 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 falló debido a la falta de memoria.
other
Otros errores armadura o plataforma específicos devueltos por el configurada GetNewBuffer () o () FinalizeBuffer funciones.

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

Codifica un TLV entero de valor.

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
El TLV etiqueta para ser codificado con el valor, o AnonymousTag si el valor debería ser codificada sin una etiqueta. Los valores de variables deben ser construidos 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 armadura o plataforma específicos devueltos por el configurada GetNewBuffer () o () FinalizeBuffer funciones.

Poner

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

Codifica un TLV entero de valor.

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
El TLV etiqueta para ser codificado con el valor, o AnonymousTag si el valor debería ser codificada sin una etiqueta. Los valores de variables deben ser construidos 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 armadura o plataforma específicos devueltos por el configurada GetNewBuffer () o () FinalizeBuffer funciones.

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 TLV valor entero sin signo.

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
El TLV etiqueta para ser codificado con el valor, o AnonymousTag si el valor debería ser codificada sin una etiqueta. Los valores de variables deben ser construidos 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 armadura o plataforma específicos devueltos por el configurada GetNewBuffer () o () FinalizeBuffer funciones.

Poner

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

Codifica un TLV valor entero sin signo.

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
El TLV etiqueta para ser codificado con el valor, o AnonymousTag si el valor debería ser codificada sin una etiqueta. Los valores de variables deben ser construidos 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 armadura o plataforma específicos devueltos por el configurada GetNewBuffer () o () FinalizeBuffer funciones.

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 TLV valor de punto flotante.

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
El TLV etiqueta para ser codificado con el valor, o AnonymousTag si el valor debería ser codificada sin una etiqueta. Los valores de variables deben ser construidos 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 armadura o plataforma específicos devueltos por el configurada GetNewBuffer () o () FinalizeBuffer funciones.

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

Codifica un TLV valor booleano.

Detalles
Parámetros
[in] tag
El TLV etiqueta para ser codificado con el valor, o AnonymousTag si el valor debería ser codificada sin una etiqueta. Los valores de variables deben ser construidos 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 armadura o plataforma específicos devueltos por el configurada GetNewBuffer () o () FinalizeBuffer funciones.

PutBytes

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

Codifica un TLV valor de cadena de bytes.

Detalles
Parámetros
[in] tag
El TLV etiqueta para ser codificado con el valor, o AnonymousTag si el valor debería ser codificada sin una etiqueta. Los valores de variables deben ser construidos con una de las funciones de definición de etiqueta ProfileTag () , ContextTag () o CommonTag () .
[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
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
)