nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Proporciona un codificador eficiente en cuanto a la memoria para escribir datos en formato TLV de Weave.
Resumen
TLVWriter implementa un codificador con estilo de transmisión de solo reenvío para datos de TLV de Weave. Las aplicaciones escriben datos en una codificación. Para ello, llaman a uno de los métodos Put() del escritor y pasan la información de la etiqueta y del valor asociadas según sea necesario. De forma similar, las aplicaciones pueden codificar tipos de contenedores 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 los resultados 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(* Una función que se usa para finalizar el 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 *
Es un campo de puntero que puede usarse 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á un nuevo espacio de búfer de salida a un TLVWriter.
|
ImplicitProfileId
|
uint32_t
Es 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 de un conjunto precodificado de elementos miembros.
|
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 con anterioridad.
|
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 solo agrupador.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Inicializa un objeto TLVWriter para escribir en uno o más paquetesBuffers.
|
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 valor de número entero sin firma TLV.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
Codifica un valor de número 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 de contenedor TLV de un conjunto precodificado de elementos miembros.
|
PutString(uint64_t tag, const char *buf)
|
Codifica un valor de cadena UTF8 TLV.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
Codifica un valor de cadena UTF8 TLV.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
Codifica el resultado de la cadena con el formato del elemento TLV.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
Comienza a codificar un elemento de contenedor TLV nuevo.
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
Codifica una cadena de bytes TLV en varios fragmentos.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
Codifica el resultado de la cadena 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 batchBuffers.
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Una implementación de la función GetNewBuffer TLVWriter para escribir en un búfer dinámico.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Una implementación de la función GetNewBuffer TLVWriter para escribir en una cadena de batchBuffers.
|
Funciones protegidas |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Determina si el contenedor debe reservar espacio para el símbolo de CloseContainer en el punto de inicio o de apertura del 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 de 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 que se usa para finalizar el resultado de un objeto TLVWriter.
Se llama a 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 necesarias relacionadas con el consumo del resultado del objeto writer. Algunos ejemplos incluyen, por ejemplo, el registro de la longitud final de la codificación o el cierre de un descriptor de archivo.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores de retorno |
|
GetNewBufferFunct
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 para preparar un nuevo espacio de búfer en el que un TLVWriter realizará operaciones de escritura. Cuando se la llama, se espera que la función devuelva un puntero a una ubicación de memoria donde se deben escribir datos nuevos, junto con una longitud máxima asociada. La función puede proporcionar espacio de escritura asignando un búfer nuevo para que contenga los datos o borrando los datos escritos anteriormente de un búfer existente.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores de retorno |
|
Atributos públicos
AppData
void * AppData
Es un campo de puntero que puede usarse 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 cada vez que se llame al método Finalize(). Las aplicaciones pueden configurar el puntero de función en cualquier momento antes de llamar a Finalize(). De forma predeterminada, el puntero se establece 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á 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 como NULL (el valor predeterminado), el escritor mostrará un error WEAVE_ERROR_NO_MEMORY si los datos de salida sobrepasan el búfer actual.
Una aplicación puede establecer GetNewBuffer en cualquier momento, pero, por lo general, se configura cuando se inicializa el escritor.
Consulta la definición del tipo GetNewBufferFunct para obtener información adicional sobre cómo implementar una función GetNewBuffer.
ImplicitProfileId
uint32_t ImplicitProfileId
Es 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 de forma implícita y omitirá el ID de perfil en el proceso.
De forma predeterminada, la propiedad ImplicitProfileId
se establece en kProfileIdNotSpecify, 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 de forma implícita a partir del punto actual de la codificación. Por lo general, el ID de perfil apropiado para configurar 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
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(). Por cada llamada a OpenContainer(), las aplicaciones deben realizar la 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 superior para escribir elementos TLV adicionales que aparecen después del elemento de contenedor. En este punto, el escritor de contenedor suministrado se debe considerar “desinicializado”. y no debe usarse sin volver a inicializar.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
Codifica un valor de string de bytes TLV.
Esto se debe usar con StartPutBytes.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
Copia un elemento de contenedor TLV del objeto TLVReader.
Para codificar un nuevo elemento de contenedor TLV, CopyContainer() copia un elemento de contenedor precodificado ubicado en la posición actual de un objeto TLVReader. El método escribe la totalidad del nuevo elemento del contenedor en una llamada y copia el tipo, la etiqueta y los elementos del contenedor de la codificación fuente. Cuando el método devuelve un resultado, el objeto writer se puede usar para escribir elementos TLV adicionales después del elemento contenedor.
Detalles | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||||||
Valores de retorno |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Codifica un elemento de contenedor TLV de un conjunto precodificado de elementos miembros.
El método CopyContainer() codifica un elemento de contenedor TLV nuevo (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 lector proporcionado se posicione en un elemento contenedor TLV. El contenedor que se acaba de codificar 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 el método devuelve un resultado, el objeto writer se puede usar para escribir elementos TLV adicionales después del elemento contenedor.
Detalles | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||||||
Valores de retorno |
|
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 con anterioridad.
El método CopyContainer() codifica un elemento de contenedor TLV nuevo (una estructura, un array o una ruta) que contiene un conjunto de elementos miembros tomados del contenido de un contenedor codificado previamente proporcionado. Cuando se llama al método, los datos en el búfer de entrada proporcionado se analizan como un elemento de contenedor TLV. Se escribe un contenedor nuevo con el mismo tipo y miembros que el contenedor de entrada. La etiqueta del contenedor nuevo se especifica como un parámetro de entrada.
Cuando el método devuelve un resultado, el objeto writer se puede usar para escribir elementos TLV adicionales después del elemento contenedor.
Detalles | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||||
Valores de retorno |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
Copia un elemento TLV de un objeto de lector en el escritor.
El método CopyElement() codifica un elemento TLV nuevo cuyo tipo, etiqueta y valor se toman de un objeto TLVReader. Cuando se llama al método, se espera que el objeto lector proporcionado se posicione 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, array o ruta), se copiará todo el contenido del contenedor.
Detalles | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||||||
Valores de retorno |
|
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(). Por cada llamada a StartContainer(), las aplicaciones deben realizar la llamada correspondiente a EndContainer() y pasar el valor de TLVType que muestra la llamada StartContainer(). Cuando se muestra EndContainer(), el objeto writer se puede usar para escribir elementos TLV adicionales que siguen al elemento contenedor.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
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 de retorno |
|
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 TLV en el que el TLVWriter escribe actualmente. 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_NotSpecify.
Detalles | |
---|---|
Resultado que se muestra |
El TLVType del contenedor actual o kTLVType_NotSpecify si el TLVWriter no escribe elementos dentro de un contenedor.
|
GetLengthWritten
uint32_t GetLengthWritten( void )
Muestra la cantidad total de bytes escritos desde que se inicializó el escritor.
Detalles | |
---|---|
Resultado que se 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 solo agrupador.
La escritura comienza inmediatamente después del último byte de datos existentes en el búfer suministrado.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
Init
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Inicializa un objeto TLVWriter para escribir en uno o más paquetesBuffers.
La escritura comienza inmediatamente después del último byte de datos existentes en el búfer especificado. Si allowDiscontiguousBuffers
es verdadero, se asignarán paquetesBuffers 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 la cabeza de una cadena de búferes, la salida se escribirá en los búferes posteriores de la cadena antes de asignar cualquier búfer nuevo.
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 (estructuras, arrays o rutas) en una codificación. El método toma el tipo y la etiqueta (si los hay) del contenedor nuevo, y una referencia a un objeto de escritor nuevo (el escritor del contenedor) que se inicializará para 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 hacer llamadas ni alterar el estado de este escritor.
El escritor del contenedor hereda varias propiedades de configuración del escritor superior. Debes realizar las siguientes acciones:
- El ID de perfil implícito (ImplicitProfileId)
- El puntero de datos de la aplicación (AppData)
- Los punteros de las funciones GetNewBuffer y FinalizeBuffer
Detalles | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||
Valores de retorno |
|
Put
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, proporcionada para mayor comodidad. Difiere de la función anterior solo en los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
Put
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, proporcionada para mayor comodidad. Difiere de la función anterior solo en los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
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 de número entero sin firma TLV.
Esta es una función de miembro sobrecargada, proporcionada para mayor comodidad. Difiere de la función anterior solo en los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
Put
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Codifica un valor de número entero sin firma TLV.
Esta es una función de miembro sobrecargada, proporcionada para mayor comodidad. Difiere de la función anterior solo en los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
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, proporcionada para mayor comodidad. Difiere de la función anterior solo en los argumentos que acepta.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
Codifica un valor booleano TLV.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
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 de retorno |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
Codifica un valor nulo de TLV.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
Codifica un elemento de contenedor TLV de un conjunto precodificado de elementos miembros.
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 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 tener etiquetas).
El método codifica la totalidad del elemento contenedor en una llamada. Cuando se muestra PutPreEncodedContainer(), el objeto writer se puede usar para escribir elementos TLV adicionales después del elemento de contenedor.
Detalles | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||
Valores de retorno |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
Codifica un valor de cadena UTF8 TLV.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
Codifica un valor de cadena UTF8 TLV.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Codifica el resultado de la cadena con el formato del elemento TLV.
PutStringF es un análogo de un sprintf en el que la salida se almacena en un elemento TLV en lugar de un búfer de caracteres. Cuando la funcionalidad printf extendida está disponible, la función puede enviar la cadena de resultados a un almacenamiento subyacente discontinuo. La implementación admite las siguientes mejoras de print:
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 n
caracteres 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 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 mejoras a la familia printf ni malloc, el resultado se trunca de modo que se ajuste al estado continuo en el almacenamiento TLV actual
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Comienza a codificar un elemento de contenedor TLV nuevo.
El método StartContainer() se usa para escribir elementos de contenedor TLV (estructuras, 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.
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 finaliza, la aplicación debe llamar al método EndContainer() para finalizar la codificación del contenedor.
Detalles | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||
Valores de retorno |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
Codifica una cadena de bytes TLV en varios fragmentos.
Se debe usar con ContinuePutBytes.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Codifica el resultado de la cadena con el formato del elemento TLV.
PutStringF es un análogo de un sprintf en el que la salida se almacena en un elemento TLV en lugar de un búfer de caracteres. Cuando la funcionalidad printf extendida está disponible, la función puede enviar la cadena de resultados a un almacenamiento subyacente discontinuo. La implementación admite las siguientes mejoras de print:
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 n
caracteres 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 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 mejoras a la familia printf ni malloc, el resultado se trunca de modo que se ajuste al estado continuo en el almacenamiento TLV actual
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
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 batchBuffers.
La función FinalizePacketBuffer() realiza la finalización necesaria que se requiere cuando se usa un TLVWriter para escribir en una cadena de batchBuffers. La función está diseñada para usarse junto con la función 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 la función GetNewBuffer 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 más información acerca de 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 la función GetNewBuffer TLVWriter para escribir en una cadena de batchBuffers.
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 paquetesBundleBuffers, 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 se usa el GetNewPacketBuffer con un TLVWriter, también se debe usar la función FinalizePacketBuffer() correspondiente (o una equivalente) para finalizar la cadena de búferes.
Consulta la definición del tipo GetNewBufferFunct para obtener más información 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 de CloseContainer en el punto de inicio o de apertura del 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 de 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 )