nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Proporciona un codificador eficiente de memoria para escribir datos en formato TLV de Weave.
Resumen
TLVWriter implementa un codificador de estilo de transmisión solo hacia delante para los datos TLV de Weave. Las aplicaciones escriben datos en una codificación llamando a uno de los métodos Put() del escritor y pasando la información del valor y la etiqueta asociada según sea necesario. Del mismo modo, las aplicaciones pueden codificar tipos de contenedores TLV (estructuras, arrays o rutas) llamando a los métodos OpenContainer() o EnterContainer() del escritor.
Un objeto TLVWriter 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 proporcionar sus propias funciones GetNewBuffer
y FinalizeBuffer
para dirigir la salida a un destino arbitrario, p.ej., un socket o una cola de eventos.
Herencia
Subclases directas conocidas: nl::Weave::TLV::CircularTLVWriter
Tipos protegidos |
|
---|---|
@72{
|
enum |
Tipos públicos |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
WEAVE_ERROR(* Función que se usa para finalizar el resultado desde un objeto TLVWriter. |
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 un TLVWriter |
Atributos públicos |
|
---|---|
AppData
|
void *
Un campo de puntero que se puede usar para datos específicos de la aplicación.
|
FinalizeBuffer
|
Un puntero para una función a la que se llamará cuando se finalice TLVWriter.
|
GetNewBuffer
|
Un puntero para una función que proporcionará espacio del búfer de salida nuevo a un TLVWriter
|
ImplicitProfileId
|
uint32_t
El ID de perfil de las etiquetas que se deben codificar 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 públicas |
|
---|---|
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 string de bytes TLV.
|
CopyContainer(TLVReader & container)
|
|
CopyContainer(uint64_t tag, TLVReader & container)
|
Codifica un elemento de contenedor TLV a partir de un conjunto de elementos miembros codificados previamente.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
Codifica un elemento de contenedor TLV que contiene elementos miembros de un contenedor codificado previamente.
|
CopyElement(TLVReader & reader)
|
Copia un elemento TLV de un objeto de lector en el escritor.
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
Completa la codificación de un elemento de contenedor TLV.
|
Finalize(void)
|
Termina de escribir una codificación TLV.
|
GetContainerType(void) const
|
Muestra el tipo de contenedor en el que TLVWriter está escribiendo actualmente.
|
GetLengthWritten(void)
|
uint32_t
Muestra la cantidad total de bytes escritos desde que se inicializó el escritor.
|
Init(uint8_t *buf, uint32_t maxLen)
|
void
Inicializa un objeto TLVWriter para escribir en un solo búfer de salida.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Inicializa un objeto TLVWriter para escribir en un único PacketBuffer.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Inicializa un objeto TLVWriter para escribir en uno o más PacketBuffers.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
Inicializa un objeto TLVWriter para escribir en un búfer dinámico.
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
Codifica un valor de número entero con firma TLV.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
Codifica un valor de número entero con firma 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 número entero TLV sin firma.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
Codifica un número entero TLV sin firma.
|
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 string 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 de contenedor TLV a partir de un conjunto de elementos miembros codificados previamente.
|
PutString(uint64_t tag, const char *buf)
|
Codifica un valor de string UTF8 TLV.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
Codifica un valor de string UTF8 TLV.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
Codifica el resultado de la string con el formato del elemento TLV.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
Comienza a codificar un elemento contenedor TLV nuevo.
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
Codifica una string de bytes TLV en varios fragmentos.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
Codifica el resultado de la string con el formato del 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ón TLVWriter 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ón TLVWriter 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 una función TLVWriter GetNewBuffer para escribir en una cadena de PacketBuffers.
|
Funciones protegidas |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Determina si el contenedor debe reservar espacio para el símbolo CloseContainer cuando se inicia o abre el contenedor.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Establece si el contenedor debe reservar el espacio para el símbolo CloseContainer en el punto de inicio o 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)
Función que se usa para finalizar el resultado desde un objeto TLVWriter.
Se llama a las funciones de este tipo cuando se llama al método Finalize() de un TLVWriter. Se espera que la función realice cualquier limpieza o finalización necesaria relacionada con el consumo de la salida del objeto del escritor. Algunos ejemplos incluyen, por ejemplo, grabar la longitud final de la codificación o cerrar un descriptor de archivo.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores que se muestran |
|
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 un TLVWriter
Las funciones de este tipo se usan con el fin de preparar un espacio de búfer nuevo para que un TLVWriter escriba. Cuando se llama a la función, se espera que muestre un puntero a una ubicación de memoria en la que se deben escribir datos nuevos, junto con una longitud máxima asociada. La función puede proporcionar espacio de escritura asignando un nuevo búfer para contener los datos o borrando los datos escritos previamente de un búfer existente.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores que se muestran |
|
Atributos públicos
AppData
void * AppData
Un campo de puntero que se puede usar para datos específicos de la aplicación.
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
Un puntero para una función a la que se llamará cuando se finalice TLVWriter.
Un objeto TLVWriter llamará a la función FinalizeBuffer cuando se llame a su método Finalize(). Las aplicaciones pueden establecer el puntero de la función en cualquier momento antes de llamar a Finalize(). De forma predeterminada, el puntero está configurado en NULL, lo que hace que el método Finalize() no llame a la función.
Consulta la definición del tipo FinalizeBufferFunct para obtener información adicional sobre la implementación de una función FinalizeBuffer.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
Un puntero para una función que proporcionará espacio del búfer de salida nuevo a un TLVWriter
Un objeto TLVWriter llamará a la función GetNewBuffer cada vez que se intente escribir datos que superen el tamaño del búfer de salida actual. Si se configura como NULL (el valor predeterminado), el escritor muestra un WEAVE_ERROR_NO_MEMORY si los datos de salida desbordan el búfer actual.
Una aplicación puede configurar GetNewBuffer en cualquier momento, pero generalmente se establece cuando se inicializa el escritor.
Consulta la definición del 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 se deben codificar de forma implícita
Cuando se le solicita a un escritor que codifique un elemento nuevo, si el ID de perfil de la etiqueta asociada con el nuevo elemento coincide con el valor del miembro de ImplicitProfileId
, el escritor codificará la etiqueta de forma implícita y omitirá el ID de perfil en el proceso.
De forma predeterminada, la propiedad ImplicitProfileId
se establece en kProfileIdNotRequired, lo que le indica al escritor que no emita etiquetas codificadas de forma implícita. Las aplicaciones pueden configurar ImplicitProfileId
en cualquier momento para habilitar las etiquetas de codificación en forma implícita a partir del punto actual de la codificación. El ID de perfil adecuado que se establece generalmente depende del contexto de la aplicación o del protocolo que se diga.
Atributos protegidos
mBufHandle
uintptr_t mBufHandle
mBufStart
uint8_t * mBufStart
mContainerType
TLVType mContainerType
mLenWritten
uint32_t mLenWritten
mMaxLen
uint32_t mMaxLen
mRemainingLen
uint32_t mRemainingLen
mWritePoint
uint8_t * mWritePoint
Funciones públicas
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
Completa la escritura de un contenedor TLV después de una llamada a OpenContainer().
El método CloseContainer() restablece el estado de un objeto TLVWriter superior después de una llamada a OpenContainer(). Para cada llamada a OpenContainer(), las aplicaciones deben realizar una llamada correspondiente a CloseContainer() y pasar una referencia al mismo escritor del contenedor a ambos métodos.
Cuando se muestra CloseContainer(), las aplicaciones pueden seguir usando el escritor superior para escribir elementos TLV adicionales que aparecen después del elemento contenedor. En este punto, el escritor del contenedor suministrado debe considerarse “desiniciado” y no debe usarse sin una nueva inicialización.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
Codifica un valor de string de bytes TLV.
Se debe usar con StartPutBytes.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
Copia un elemento de contenedor TLV del objeto TLVReader.
Para codificar un elemento de contenedor TLV nuevo, CopyContainer() copia un elemento de contenedor codificado con anterioridad ubicado en la posición actual de un objeto TLVReader. El método escribe todo el elemento de contenedor nuevo en una llamada y copia el tipo, la etiqueta y los elementos del contenedor de la codificación de origen. Cuando el método se muestra, el objeto del escritor se puede usar para escribir elementos TLV adicionales después del elemento de contenedor.
Detalles | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||||||
Valores que se muestran |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Codifica un elemento de contenedor TLV a partir de un conjunto de elementos miembros codificados previamente.
El método CopyContainer() codifica un nuevo elemento de contenedor de TLV (una estructura, un array o una ruta) que contiene un conjunto de elementos miembros tomados de un objeto TLVReader. Cuando se llama al método, se espera que el objeto de lector proporcionado se posicione en un elemento contenedor TLV. El contenedor recién codificado tendrá el mismo tipo y los mismos miembros que el contenedor de entrada. La etiqueta del contenedor nuevo se especifica como parámetro de entrada.
Cuando el método se muestra, el objeto del escritor se puede usar para escribir elementos TLV adicionales después del elemento de contenedor.
Detalles | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||||||
Valores que se muestran |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
Codifica un elemento de contenedor TLV que contiene elementos miembros de un contenedor codificado previamente.
El método CopyContainer() codifica un nuevo elemento de contenedor TLV (una estructura, un array o una ruta) que contiene un conjunto de elementos miembros tomados del contenido de un contenedor precodificado proporcionado. 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 contenedor nuevo que tiene el mismo tipo y miembros que el contenedor de entrada. La etiqueta del contenedor nuevo se especifica como parámetro de entrada.
Cuando el método se muestra, el objeto del escritor se puede usar para escribir elementos TLV adicionales después del elemento de contenedor.
Detalles | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||||
Valores que se muestran |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
Copia un elemento TLV de un objeto de lector en el escritor.
El método CopyElement() codifica un nuevo elemento TLV cuyo tipo, etiqueta y valor se toman de un objeto TLVReader. Cuando se llama al método, se espera que el objeto de lector proporcionado se posicione en el elemento TLV de origen. El elemento codificado tendrá el mismo tipo, etiqueta y contenido que el contenedor de entrada. Si el elemento proporcionado es un contenedor de TLV (estructura, array o ruta), se copiará todo el contenido del contenedor.
Detalles | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||||||
Valores que se muestran |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
Completa la codificación de un elemento de contenedor TLV.
El método EndContainer() completa la codificación de un elemento de contenedor TLV y restablece 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() y pasar el valor TLVType que muestra la llamada StartContainer(). Cuando se muestra EndContainer(), el objeto del escritor se puede usar para escribir elementos TLV adicionales que siguen al elemento del contenedor.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
Finalizar
WEAVE_ERROR Finalize( void )
Termina de escribir una codificación TLV.
El método Finalize() completa el proceso de escritura de una codificación TLV en el búfer de salida subyacente. La aplicación debe llamar al método antes de que use el contenido del búfer. Solo se puede llamar a Finalize() cuando no hay escritores de contenedor abiertos para el escritor actual. (Consulta OpenContainer()
).
Detalles | |||||||
---|---|---|---|---|---|---|---|
Valores que se muestran |
|
GetContainerType
TLVType GetContainerType( void ) const
Muestra el tipo de contenedor en el que TLVWriter está escribiendo actualmente.
El método GetContainerType() muestra el tipo de contenedor de TLV en el que TLVWriter está escribiendo en la actualidad. Si TLVWriter no escribe elementos dentro de un contenedor (es decir, si escribe en el nivel más externo de una codificación), el método muestra kTLVType_Notspecified.
Detalles | |
---|---|
Qué muestra |
El TLVType del contenedor actual o kTLVType_Notspecified si TLVWriter no está escribiendo elementos dentro de un contenedor.
|
GetLengthWritten
uint32_t GetLengthWritten( void )
Muestra la cantidad total de bytes escritos desde que se inicializó el escritor.
Detalles | |
---|---|
Qué muestra |
Cantidad total de bytes escritos desde que se inicializó el escritor.
|
Init
void Init( uint8_t *buf, uint32_t maxLen )
Init
void Init( PacketBuffer *buf, uint32_t maxLen )
Inicializa un objeto TLVWriter para escribir en un único PacketBuffer.
La escritura comienza inmediatamente después del último byte de datos existentes en el búfer proporcionado.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
Init
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Inicializa un objeto TLVWriter 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 PacketBuffers adicionales y se encadenarán al búfer proporcionado según sea necesario para adaptarse a 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 |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Inicializa un objeto TLVWriter para escribir en un búfer dinámico.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
Inicializa un objeto TLVWriter nuevo para escribir los miembros de un elemento de contenedor TLV.
El método OpenContainer() se usa para escribir elementos del contenedor TLV (estructura, arrays o rutas) en una codificación. El método toma el tipo y la etiqueta (si corresponde) del contenedor nuevo, y una referencia a un nuevo objeto de escritor (el escritor del contenedor) que se inicializará con el fin de escribir los elementos del contenedor. Las aplicaciones escriben los miembros del contenedor nuevo con el escritor del contenedor y, luego, llaman a CloseContainer() para completar la codificación del contenedor.
Mientras el escritor del contenedor está abierto, las aplicaciones no deben realizar llamadas ni alterar el estado del escritor superior.
El escritor del contenedor hereda varias propiedades de configuración del escritor del superior. que son los siguientes:
- El ID de perfil implícito (ImplicitProfileId)
- El puntero de datos de aplicación (AppData)
- Punteros de las funciones GetNewBuffer y FinalizeBuffer
Detalles | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||
Valores que se muestran |
|
con prácticas
WEAVE_ERROR Put( uint64_t tag, int8_t v )
Codifica un valor de número entero con firma TLV.
Esta es una función de miembro sobrecargada y se proporciona por conveniencia. Se diferencia de la función anterior solo por los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
con prácticas
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
Codifica un valor de número entero con firma TLV.
Esta es una función de miembro sobrecargada y se proporciona por conveniencia. Se diferencia de la función anterior solo por los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
con prácticas
WEAVE_ERROR Put( uint64_t tag, int16_t v )
con prácticas
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
con prácticas
WEAVE_ERROR Put( uint64_t tag, int32_t v )
con prácticas
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
con prácticas
WEAVE_ERROR Put( uint64_t tag, int64_t v )
con prácticas
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
con prácticas
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
Codifica un número entero TLV sin firma.
Esta es una función de miembro sobrecargada y se proporciona por conveniencia. Se diferencia de la función anterior solo por los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
con prácticas
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Codifica un número entero TLV sin firma.
Esta es una función de miembro sobrecargada y se proporciona por conveniencia. Se diferencia de la función anterior solo por los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
con prácticas
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
con prácticas
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
con prácticas
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
con prácticas
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
con prácticas
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
con prácticas
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
con prácticas
WEAVE_ERROR Put( uint64_t tag, float v )
con prácticas
WEAVE_ERROR Put( uint64_t tag, double v )
Codifica un valor de punto flotante TLV.
Esta es una función de miembro sobrecargada y se proporciona por conveniencia. Se diferencia de la función anterior solo por los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
Codifica un valor booleano TLV.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
Codifica un valor de string de bytes TLV.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
Codifica un valor nulo de TLV.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
Codifica un elemento de contenedor TLV a partir de un conjunto de elementos miembros codificados previamente.
El método PutPreEncodedContainer() codifica un nuevo elemento de contenedor TLV (una estructura, un array o una ruta) que contiene un conjunto de elementos miembros tomados de un búfer previamente codificado. Se espera que el búfer de entrada contenga cero o más elementos TLV codificados por completo con etiquetas que cumplan con las reglas asociadas con el tipo de contenedor especificado (p.ej., los miembros de estructura deben tener etiquetas, mientras que los miembros del array no deben tenerlas).
El método codifica todo el elemento contenedor en una llamada. Cuando se muestra PutPreEncodedContainer(), se puede usar el objeto del escritor para escribir elementos TLV adicionales después del elemento del contenedor.
Detalles | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||
Valores que se muestran |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
Codifica un valor de string UTF8 TLV.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
Codifica un valor de string UTF8 TLV.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Codifica el resultado de la string con el formato del elemento TLV.
PutStringF es un análogo de un sprintf en el que el resultado se almacena en un elemento TLV, en lugar de en un búfer de caracteres. Cuando la funcionalidad printf extendida está disponible, la función puede generar la string de resultado en un almacenamiento subyacente discontinuo. La implementación admite las siguientes mejoras de printf:
La plataforma proporciona un vcbprintf
basado en devoluciones de llamada que permite llamar a una devolución de llamada personalizada en lugar de putchar.
La plataforma proporciona una variante de vsnprintf
llamada vsnprintf_ex
que se comporta exactamente igual que vsnprintf, excepto que tiene disposiciones para omitir los primeros caracteres n
del resultado.
Ten en cuenta que, si bien la función basada en devolución de llamada puede ser la más simple y usar la menor cantidad de código, la variedad de funciones vsprintf_ex
consumirá menos pila.
Si no está disponible ninguna de las opciones anteriores, pero la plataforma proporciona malloc
, la función asignará un búfer temporal para contener el resultado. Cuando la plataforma no proporciona mejoras a la familia printf ni malloc, el resultado se trunca de modo que quepa en el estado continuo en el almacenamiento TLV actual
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Comienza a codificar un elemento contenedor TLV nuevo.
El método StartContainer() se usa para escribir elementos del contenedor TLV (estructura, arrays o rutas) en una codificación. El método toma el tipo y la etiqueta (si corresponde) del contenedor nuevo, y una referencia a un valor TLVType que se usará para guardar el contexto actual del escritor mientras se usa para escribir el contenedor.
Cuando se muestra el método StartContainer(), la aplicación debe usar el objeto TLVWriter actual para escribir los elementos del contenedor. Cuando termine, la aplicación debe llamar al método EndContainer() para finalizar la codificación del contenedor.
Detalles | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||
Valores que se muestran |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
Codifica una string de bytes TLV en varios fragmentos.
Se debe usar con ContinuePutBytes.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Codifica el resultado de la string con el formato del elemento TLV.
PutStringF es un análogo de un sprintf en el que el resultado se almacena en un elemento TLV, en lugar de en un búfer de caracteres. Cuando la funcionalidad printf extendida está disponible, la función puede generar la string de resultado en un almacenamiento subyacente discontinuo. La implementación admite las siguientes mejoras de printf:
La plataforma proporciona un vcbprintf
basado en devoluciones de llamada que permite llamar a una devolución de llamada personalizada en lugar de putchar.
La plataforma proporciona una variante de vsnprintf
llamada vsnprintf_ex
que se comporta exactamente igual que vsnprintf, excepto que tiene disposiciones para omitir los primeros caracteres n
del resultado.
Ten en cuenta que, si bien la función basada en devolución de llamada puede ser la más simple y usar la menor cantidad de código, la variedad de funciones vsprintf_ex
consumirá menos pila.
Si no está disponible ninguna de las opciones anteriores, pero la plataforma proporciona malloc
, la función asignará un búfer temporal para contener el resultado. Cuando la plataforma no proporciona mejoras a la familia printf ni malloc, el resultado se trunca de modo que quepa en el estado continuo en el almacenamiento TLV actual
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
Funciones estáticas públicas
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
Una implementación de una función TLVWriter FinalizeBuffer para escribir en una cadena de PacketBuffers.
La función FinalizePacketBuffer() realiza la finalización necesaria cuando se usa un TLVWriter para escribir en una cadena de PacketBuffers. La función está diseñada para usarse junto con GetNewPacketBuffer().
Consulta la definición del tipo FinalizeBufferFunct para obtener información adicional sobre la API de la función FinalizePacketBuffer().
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Una implementación de una función TLVWriter GetNewBuffer para escribir en un búfer dinámico.
La función GetNewBuffer_Malloced() proporciona un nuevo espacio de salida a un TLVWriter duplicando el tamaño del búfer dinámico subyacente según sea necesario para almacenar la codificación. La función está diseñada para asignarse al puntero de la función TLVWriter GetNewBuffer.
Consulta la definición del tipo GetNewBufferFunct para obtener información adicional sobre la API de la función GetNewBuffer_Malloced().
GetNewPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Una implementación de una función TLVWriter GetNewBuffer para escribir en una cadena de PacketBuffers.
La función GetNewPacketBuffer() proporciona un nuevo espacio de salida a un TLVWriter asignando una cadena de uno o más PacketBuffers según sea necesario para almacenar la codificación. La función está diseñada para asignarse al puntero de la función TLVWriter GetNewBuffer.
Ten en cuenta que cuando usas GetNewPacketBuffer con un TLVWriter, también se debe usar la función FinalizePacketBuffer() correspondiente (o su equivalente) para finalizar la cadena del búfer.
Consulta la definición del tipo GetNewBufferFunct para obtener información adicional sobre la API de la función GetNewPacketBuffer().
Funciones protegidas
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
Determina si el contenedor debe reservar espacio para el símbolo CloseContainer cuando se inicia o abre el contenedor.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Establece si el contenedor debe reservar el espacio para el símbolo CloseContainer en el punto de inicio o apertura del contenedor.
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 )