nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Proporciona un codificador con memoria eficiente para escribir datos en el formato TLV de Weave.
Resumen
TLVWriter implementa un codificador estilo de transmisión de solo reenvío para 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 asociada de los valores y las etiquetas según sea necesario. De manera similar, las aplicaciones pueden codificar tipos de contenedor TLV (estructuras, arrays o rutas de acceso) 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 el resultado a un destino arbitrario, p.ej., un socket o una cola de eventos.
Herencia
Subclases conocidas directas: 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 realizar la finalización del resultado de un objeto TLVWriter. |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(* Una función que proporciona un nuevo espacio de búfer de salida a un TLVWriter. |
Atributos públicos |
|
---|---|
AppData
|
void *
Un campo de puntero que se puede utilizar para datos específicos de la aplicación.
|
FinalizeBuffer
|
Un puntero para una función que se llamará cuando finalice TLVWriter.
|
GetNewBuffer
|
Un puntero para una función que proporcionará un nuevo espacio de búfer de salida 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 contenedor TLV de un conjunto codificado previamente de elementos miembros.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
Codifica un elemento TLV que contiene elementos de un contenedor precodificado.
|
CopyElement(TLVReader & reader)
|
Copia un elemento TLV de un objeto lector al 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 dentro del que el 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 solo 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 entero firmado de TLV.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
Codifica un valor entero firmado de 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 firma TLV.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
Codifica un valor entero sin firma 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 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 contenedor TLV de un conjunto codificado previamente de elementos miembros.
|
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 formato según el formato del elemento TLV.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
Comienza a codificar un nuevo elemento de contenedor TLV.
|
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 formato según el formato del elemento TLV.
|
Funciones estáticas públicas |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
Implementación de una función FinalizeBuffer TLVWriter para escribir en una cadena de PacketBuffers.
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Implementación de una función GetNewBuffer de TLVWriter para escribir en un búfer dinámico.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Implementación de una función GetNewBuffer de TLVWriter para escribir en una cadena de PacketBuffers.
|
Funciones protegidas |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Determina si el contenedor debe reservar espacio para el símbolo de CloseContainer en el momento de iniciar o abrir el contenedor.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Establece si el contenedor debe reservar el espacio para el símbolo de 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 realizar la finalización del resultado de un objeto TLVWriter.
Se llama a funciones de este tipo cuando se llama a un método Finalize() de TLVWriter. Se espera que la función realice cualquier limpieza o finalización necesaria para consumir el resultado del objeto de escritura. Entre los ejemplos, se incluyen el registro de la longitud final de la codificación o el cierre de un descriptor de archivos.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores que se muestran |
|
ObtenerNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
Una función que proporciona un nuevo espacio de búfer de salida a un TLVWriter.
Las funciones de este tipo se usan con el fin de preparar un nuevo espacio de búfer para que un TLVWriter lo escriba. Cuando se la llama, se espera que la función muestre un puntero a una ubicación de memoria en la que se deben escribir los datos nuevos, junto con una longitud máxima asociada. La función puede proporcionar espacio de escritura asignando un nuevo búfer que contenga los datos o borrando los datos escritos previamente de un búfer existente.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores que se muestran |
|
Atributos públicos
DatosDeApp
void * AppData
Un campo de puntero que se puede utilizar para datos específicos de la aplicación.
Búfer de finalización
FinalizeBufferFunct FinalizeBuffer
Un puntero para una función que se llamará cuando finalice TLVWriter.
Un objeto TLVWriter llamará a la función FinalizeBuffer cada vez que se llame a su método Finalize(). Las aplicaciones pueden establecer el puntero de función en cualquier momento antes de llamar a Finalize(). De forma predeterminada, el puntero se establece en NULL, lo que provoca que el método Finalize() niegue la función.
Consulta 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 para una función que proporcionará un nuevo espacio de búfer de salida 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 en NULL (el valor predeterminado), el escritor mostrará un WEAVE_ERROR_NO_MEMORY si los datos de salida exceden el búfer actual.
Una aplicación puede configurar GetNewBuffer en cualquier momento, pero, por lo general, 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.
ID de perfil implícito
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 elemento nuevo coincide con el valor del miembro ImplicitProfileId
, el escritor codificará la etiqueta en forma implícita y omitirá el ID de perfil en el proceso.
De forma predeterminada, la propiedad ImplicitProfileId
se configura como kProfileIdNotSpecific, lo que le indica al escritor que no emita etiquetas codificadas de forma implícita. Las aplicaciones pueden establecer ImplicitProfileId
en cualquier momento para habilitar las etiquetas de codificación de forma implícita a partir del punto actual de la codificación. Por lo general, el ID de perfil correspondiente que se configure depende del contexto de la aplicación o el protocolo que se diga.
Atributos protegidos
mBufHandle
uintptr_t mBufHandle
mBufStart
uint8_t * mBufStart
Tipo de contenedor m
TLVType mContainerType
mLensten
uint32_t mLenWritten
Máx. máx.
uint32_t mMaxLen
Remanente
uint32_t mRemainingLen
mWritePoint
uint8_t * mWritePoint
Funciones públicas
Cerrar contenedor
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 superior TLVWriter después de una llamada a OpenContainer(). Por cada llamada a OpenContainer(), las aplicaciones deben realizar una llamada correspondiente a CloseContainer() y pasar una referencia al mismo escritor de contenedores a ambos métodos.
Cuando se muestra CloseContainer(), las aplicaciones pueden seguir usando el escritor principal para escribir elementos TLV adicionales que aparecen después del elemento de contenedor. En este punto, se debe considerar que el escritor del contenedor proporcionado debe inicializarse y no debe usarse sin inicializarse de nuevo.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
Continuar en bytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
Codifica un valor de string de bytes TLV.
Se debe usar con Start PutBytes.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
Copiar contenedor
WEAVE_ERROR CopyContainer( TLVReader & container )
Copia un elemento de contenedor TLV del objeto TLVReader.
CopyContainer() codifica un nuevo elemento de contenedor TLV mediante la copia de un elemento de contenedor codificado previamente que se encuentra en la posición actual de un objeto TLVReader. El método escribe todo el elemento nuevo del contenedor en una llamada y copia el tipo, la etiqueta y los elementos del contenedor de la codificación de origen. Cuando se muestra el método, el objeto de escritura se puede usar para escribir elementos TLV adicionales después del elemento contenedor.
Detalles | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||||||
Valores que se muestran |
|
Copiar contenedor
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Codifica un elemento contenedor TLV de un conjunto codificado previamente de elementos miembros.
El método CopyContainer() codifica un nuevo elemento de contenedor TLV (una estructura, un arreglo 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 lector proporcionado se posicione en un elemento contenedor TLV. El contenedor codificado recientemente tendrá el mismo tipo y los mismos miembros que el contenedor de entrada. La etiqueta del contenedor nuevo se especifica como un parámetro de entrada.
Cuando se muestra el método, el objeto de escritura se puede usar para escribir elementos TLV adicionales después del elemento contenedor.
Detalles | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||||||
Valores que se muestran |
|
Copiar contenedor
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
Codifica un elemento TLV que contiene elementos de un contenedor precodificado.
El método CopyContainer() codifica un nuevo elemento de contenedor TLV (una estructura, un arreglo o una ruta) que contiene un conjunto de elementos miembros tomados del contenido de un contenedor codificado previamente. Cuando se llama al método, los datos en el búfer de entrada proporcionado se analizan como un elemento contenedor TLV. Se escribe un contenedor nuevo que tiene el mismo tipo y los mismos miembros que el contenedor de entrada. La etiqueta del contenedor nuevo se especifica como un parámetro de entrada.
Cuando se muestra el método, el objeto de escritura se puede usar para escribir elementos TLV adicionales después del elemento contenedor.
Detalles | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||||
Valores que se muestran |
|
Copiar elemento
WEAVE_ERROR CopyElement( TLVReader & reader )
Copia un elemento TLV de un objeto lector al 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 posponga 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 proporcionado es un contenedor TLV (estructura, arreglo o ruta), se copiará todo el contenido del contenedor.
Detalles | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||||||
Valores que se muestran |
|
Copiar elemento
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
Contenedor final
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 de TLVType que muestra la llamada StartContainer(). Cuando se muestra EndContainer(), el objeto de escritura se puede usar para escribir elementos TLV adicionales que sigan 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 contenedores abiertos para el escritor actual. (Consulta OpenContainer()
).
Detalles | |||||||
---|---|---|---|---|---|---|---|
Valores que se muestran |
|
GetContainerType
TLVType GetContainerType( void ) const
Muestra el tipo de contenedor dentro del que el TLVWriter está escribiendo actualmente.
El método GetContainerType() muestra el tipo del contenedor TLV en el que TLVWriter está escribiendo actualmente. Si el TLVWriter no escribe elementos dentro de un contenedor (es decir, si se 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 el TLVWriter no está escribiendo elementos en un contenedor.
|
GetLengthWritten
uint32_t GetLengthWritten( void )
Muestra la cantidad total de bytes escritos desde que se inicializó el escritor.
Detalles | |
---|---|
Qué muestra |
La 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 solo 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, los PacketBuffers adicionales se asignarán y encadenarán 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, el resultado 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 de contenedor TLV (estructura, arreglos 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 objeto de escritor nuevo (el escritor de contenedores) que se inicializará para escribir los elementos del contenedor. Las aplicaciones escriben los miembros del contenedor nuevo mediante 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 modificar el estado del escritor principal.
El escritor del contenedor hereda varias propiedades de configuración del escritor superior. que son los siguientes:
- El ID implícito del perfil (ImplicitProfileId)
- El puntero de datos de la aplicación (AppData)
- Los punteros de las funciones GetNewBuffer y FinalizeBuffer
Detalles | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||
Valores que se muestran |
|
Put
WEAVE_ERROR Put( uint64_t tag, int8_t v )
Codifica un valor entero firmado de TLV.
Esta es una función de miembro sobrecargada que se proporciona para mayor comodidad. Difiere de la función anterior solo en los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
Put
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
Codifica un valor entero firmado de TLV.
Esta es una función de miembro sobrecargada que se proporciona para mayor comodidad. Difiere de la función anterior solo en los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
Put
WEAVE_ERROR Put( uint64_t tag, int16_t v )
Put
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, int32_t v )
Put
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, int64_t v )
Put
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
Codifica un valor entero sin firma TLV.
Esta es una función de miembro sobrecargada que se proporciona para mayor comodidad. Difiere de la función anterior solo en los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
Put
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Codifica un valor entero sin firma TLV.
Esta es una función de miembro sobrecargada que se proporciona para mayor comodidad. Difiere de la función anterior solo en los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
Put
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
Put
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
Put
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
Put
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, float v )
Put
WEAVE_ERROR Put( uint64_t tag, double v )
Codifica un valor de punto flotante TLV.
Esta es una función de miembro sobrecargada que se proporciona para mayor comodidad. Difiere de la función anterior solo en 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 contenedor TLV de un conjunto codificado previamente de elementos miembros.
El método PUTPreEncodedContainer() codifica un nuevo elemento de contenedor TLV (una estructura, un arreglo o una ruta) que contiene un conjunto de elementos miembros tomados de un búfer precodificado. Se espera que el búfer de entrada contenga cero o más elementos TLV con codificación completa, con etiquetas que cumplan con las reglas asociadas al tipo de contenedor especificado (p.ej., los miembros de la estructura deben tener etiquetas, mientras que los miembros del array no deben hacerlo).
El método codifica la totalidad del elemento contenedor en una llamada. Cuando se muestra PUTPreEncodedContainer(), el objeto de escritura se puede usar para escribir elementos TLV adicionales después del elemento 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 formato según el formato del elemento TLV.
PutStringF es un análogo de un sprintf, en el que el resultado se almacena en un elemento TLV, no en un búfer de caracteres. Cuando hay disponible una función de printf extendida, la función puede mostrar la string de resultado en un almacenamiento subyacente no continuo. La implementación admite las siguientes mejoras de printf:
La plataforma proporciona un vcbprintf
basado en devolución 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 como vsnprintf, excepto que tiene disposiciones para omitir los primeros caracteres n
del resultado.
Ten en cuenta que, si bien la función basada en devoluciones de llamada puede ser la más simple y usa la menor cantidad de código, la variedad de funciones vsprintf_ex
consumirá menos pila.
Si ninguna de las opciones anteriores está disponible, pero la plataforma proporciona malloc
, la función asignará un búfer temporal para contener el resultado. Cuando la plataforma no proporciona ninguna mejora a la familia de printf ni al malloc, el resultado se trunca de modo que se ajuste al estado continuo en el almacenamiento TLV actual.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
Contenedor de inicio
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Comienza a codificar un nuevo elemento de contenedor TLV.
El método StartContainer() se usa para escribir elementos de contenedor TLV (estructura, arrays o rutas de acceso) 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.
Una vez que 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 Continue PutBytes.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores que se muestran |
|
vStringStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Codifica el resultado de la string con formato según el formato del elemento TLV.
PutStringF es un análogo de un sprintf, en el que el resultado se almacena en un elemento TLV, no en un búfer de caracteres. Cuando hay disponible una función de printf extendida, la función puede mostrar la string de resultado en un almacenamiento subyacente no continuo. La implementación admite las siguientes mejoras de printf:
La plataforma proporciona un vcbprintf
basado en devolución 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 como vsnprintf, excepto que tiene disposiciones para omitir los primeros caracteres n
del resultado.
Ten en cuenta que, si bien la función basada en devoluciones de llamada puede ser la más simple y usa la menor cantidad de código, la variedad de funciones vsprintf_ex
consumirá menos pila.
Si ninguna de las opciones anteriores está disponible, pero la plataforma proporciona malloc
, la función asignará un búfer temporal para contener el resultado. Cuando la plataforma no proporciona ninguna mejora a la familia de printf ni al malloc, el resultado se trunca de modo que se ajuste al estado continuo en el almacenamiento TLV actual.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
Funciones estáticas públicas
Finalizar paquete de búfer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
Implementación de una función FinalizeBuffer TLVWriter 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 se diseñó para utilizarse junto con la función GetNewPacketBuffer().
Consulta la definición de 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 )
Implementación de una función GetNewBuffer de TLVWriter 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 GetNewBuffer TLVWriter.
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 )
Implementación de una función GetNewBuffer de TLVWriter para escribir en una cadena de PacketBuffers.
La función GetNewPacketBuffer() proporciona un nuevo espacio de salida a un TLVWriter mediante la asignación de 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 GetNewBuffer TLVWriter.
Ten en cuenta que, cuando usas GetNewPacketBuffer con un TLVWriter, se debe usar la función FinalizePacketBuffer() (o una equivalente) correspondiente 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
IsCloseContainerReservad
bool IsCloseContainerReserved( void ) const
Determina si el contenedor debe reservar espacio para el símbolo de CloseContainer en el momento de iniciar o abrir el contenedor.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Establece si el contenedor debe reservar el espacio para el símbolo de CloseContainer en el punto de inicio o apertura del contenedor.
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
Escribir datos
WEAVE_ERROR WriteData( const uint8_t *p, uint32_t len )
EscribirElementHead
WEAVE_ERROR WriteElementHead( TLVElementType elemType, uint64_t tag, uint64_t lenOrVal )
Escribir elementos con datos
WEAVE_ERROR WriteElementWithData( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen )