nl :: Tecer:: TLV :: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Fornece um codificador eficiente de memória para gravar dados em Weave TLV formato.
Resumo
TLVWriter implementa um forward-only, codificador de estilo fluxo para Weave TLV dados. Aplicações gravar dados em uma codificação chamando um do escritor Put () métodos, passando informações tag e valor associado, conforme necessário. Similarmente aplicações pode codificar TLV tipos de contentores (estruturas, matrizes ou caminhos) chamando o escritor OpenContainer () métodos ou EnterContainer ().
UmTLVWriter objecto pode escrever dados directamente para uma memória intermédia de saída fixa, ou para uma cadeia de um ou mais objectos PacketBuffer. Além disso, os aplicativos podem fornecer suas próprias GetNewBuffer
e FinalizeBuffer
funções para direcionar a saída para um destino arbitrário, por exemplo, uma tomada ou uma fila de eventos.
Herança
Dirigir Subclasses conhecidas: nl :: Weave :: TLV :: CircularTLVWriterTipos protegidos | |
---|---|
@72 { | enum |
Tipos públicos | |
---|---|
FinalizeBufferFunct )(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen) | WEAVE_ERROR (*WEAVE_ERROR (* Uma função utilizada para realizar a finalização da saída a partir de umTLVWriter objecto. |
GetNewBufferFunct )(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) | WEAVE_ERROR (*WEAVE_ERROR (* Uma função que fornecimentos novo espaço de memória de saída para umTLVWriter . |
Atributos públicos | |
---|---|
AppData | void * Um campo de ponteiro que pode ser usado para dados específicos do aplicativo. |
FinalizeBuffer | Um ponteiro para uma função que será chamado quando oTLVWriter está finalizado. |
GetNewBuffer | Um ponteiro para uma função que irá fornecer novo espaço de memória intermédia de saída para umTLVWriter . |
ImplicitProfileId | uint32_t O ID do perfil das tags que devem ser codificadas 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 * |
Funções públicas | |
---|---|
CloseContainer (TLVWriter & containerWriter) | Completa a escrita de um TLV recipiente após uma chamada para OpenContainer () . |
ContinuePutBytes (const uint8_t *buf, uint32_t len) | Codifica uma TLV valor de cadeia de byte. |
CopyContainer (TLVReader & container) | |
CopyContainer (uint64_t tag,TLVReader & container) | Codifica uma TLV elemento de recipiente a partir de um conjunto pré-codificado de elementos de membro. |
CopyContainer (uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen) | Codifica uma TLV elemento de recipiente que contém elementos de membro de um recipiente pré-codificado. |
CopyElement (TLVReader & reader) | Cópias de um TLV elemento a partir de um objecto leitor para o gravador. |
CopyElement (uint64_t tag,TLVReader & reader) | |
EndContainer ( TLVType outerContainerType) | Completa a codificação de um TLV elemento recipiente. |
Finalize (void) | Terminar a escrita de um TLV de codificação. |
GetContainerType (void) const | Retorna o tipo de recipiente dentro do qual oTLVWriter está actualmente a escrever. |
GetLengthWritten (void) | uint32_t Retorna o número total de bytes gravados desde que o gravador foi inicializado. |
Init (uint8_t *buf, uint32_t maxLen) | void Inicializa umaTLVWriter objecto para escrever para um tampão de saída único. |
Init ( PacketBuffer *buf, uint32_t maxLen) | void Inicializa umTLVWriter objeto para gravar em um único PacketBuffer. |
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers) | void Inicializa umTLVWriter objeto para gravar em um ou mais PacketBuffers. |
InitMalloced (uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen) | void Inicializa umaTLVWriter objecto para escrever para um tampão dinâmico. |
OpenContainer (uint64_t tag, TLVType containerType,TLVWriter & containerWriter) | |
Put (uint64_t tag, int8_t v) | Codifica uma TLV assinado valor inteiro. |
Put (uint64_t tag, int8_t v, bool preserveSize) | Codifica uma TLV assinado valor inteiro. |
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 uma TLV valor inteiro sem sinal. |
Put (uint64_t tag, uint8_t v, bool preserveSize) | Codifica uma TLV valor inteiro sem sinal. |
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 uma TLV valor de ponto flutuante. |
PutBoolean (uint64_t tag, bool v) | Codifica uma TLV valor booleano. |
PutBytes (uint64_t tag, const uint8_t *buf, uint32_t len) | Codifica uma TLV valor de cadeia de byte. |
PutNull (uint64_t tag) | Codifica uma TLV valor nulo. |
PutPreEncodedContainer (uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen) | Codifica uma TLV elemento de recipiente a partir de um conjunto pré-codificado de elementos de membro. |
PutString (uint64_t tag, const char *buf) | Codifica uma TLV valor de string UTF8. |
PutString (uint64_t tag, const char *buf, uint32_t len) | Codifica uma TLV valor de string UTF8. |
PutStringF (uint64_t tag, const char *fmt, ...) | Codificar a saída string formatada de acordo com o formato do TLV elemento. |
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType) | Começa que codifica um novo TLV elemento recipiente. |
StartPutBytes (uint64_t tag, uint32_t totalLen) | Codifica uma TLV byte string em vários pedaços. |
VPutStringF (uint64_t tag, const char *fmt, va_list ap) | Codificar a saída string formatada de acordo com o formato do TLV elemento. |
Funções estáticas públicas | |
---|---|
FinalizePacketBuffer (TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen) | Uma implementação de umTLVWriter função FinalizeBuffer para escrever a uma cadeia de PacketBuffers. |
GetNewBuffer_Malloced (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen) | Uma implementação de umTLVWriter função GetNewBuffer para escrever para um buffer dinâmico. |
GetNewPacketBuffer (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen) | Uma implementação de umTLVWriter função GetNewBuffer para escrever a uma cadeia de PacketBuffers. |
Funções protegidas | |
---|---|
IsCloseContainerReserved (void) const | bool Determine se o contêiner deve reservar espaço para o símbolo CloseContainer no ponto de início / abertura do contêiner. |
IsContainerOpen (void) const | bool |
SetCloseContainerReserved (bool aCloseContainerReserved) | void Defina se o contêiner deve reservar espaço para o símbolo CloseContainer no ponto de início / abertura do contêiner. |
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)
Uma função utilizada para realizar a finalização da saída a partir de umTLVWriter objecto.
Funções deste tipo são chamados quando umTLVWriter 's Finalizar () método é chamado. Espera-se que a função execute qualquer limpeza ou finalização necessária relacionada ao consumo da saída do objeto gravador. Exemplos disso incluem coisas como gravar o comprimento final da codificação ou fechar um descritor de arquivo.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||
Valores Retornados |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
Uma função que fornecimentos novo espaço de memória de saída para umTLVWriter .
Funções deste tipo são usados para preparar novo espaço de buffer para umTLVWriter para gravar. Quando chamada, espera-se que a função retorne um ponteiro para um local da memória onde novos dados devem ser gravados, junto com um comprimento máximo associado. A função pode fornecer espaço de gravação alocando um novo buffer para armazenar os dados ou limpando os dados gravados anteriormente de um buffer existente.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||
Valores Retornados |
|
Atributos públicos
Dados do aplicativo
void * AppData
Um campo de ponteiro que pode ser usado para dados específicos do aplicativo.
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
Um ponteiro para uma função que será chamado quando oTLVWriter está finalizado.
UmTLVWriter objecto vai chamar a função FinalizeBuffer sempre que a sua Finalizar () método é chamado. Os aplicativos podem definir o ponteiro de função em qualquer ponto antes de chamar Finalize () . Por padrão, o ponteiro é definido como NULL, o que faz com que o Finalize () método para renunciar a chamar a função.
Consulte a definição de tipo FinalizeBufferFunct para obter informações adicionais sobre a implementação de uma função FinalizeBuffer.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
Um ponteiro para uma função que irá fornecer novo espaço de memória intermédia de saída para umTLVWriter .
UmTLVWriter objecto vai chamar a função GetNewBuffer sempre que é feita uma tentativa para gravar dados que excedem o tamanho do buffer de saída de corrente. Se definido como NULL (o valor padrão), o gravador retornará um WEAVE_ERROR_NO_MEMORY se os dados de saída estourarem o buffer atual.
GetNewBuffer pode ser definido por um aplicativo a qualquer momento, mas normalmente é definido quando o gravador é inicializado.
Consulte a definição de tipo GetNewBufferFunct para obter informações adicionais sobre a implementação de uma função GetNewBuffer.
ImplicitProfileId
uint32_t ImplicitProfileId
A identificação do perfil das tags que devem ser codificadas de forma implícita.
Quando um escritor é convidado para codificar um novo elemento, se o ID de perfil do tag associado com o novo elemento corresponde ao valor do ImplicitProfileId
membro, o escritor vai codificar o tag em forma implícita, omitindo o ID de perfil no processo.
Por padrão, o ImplicitProfileId
propriedade é definida como kProfileIdNotSpecified, que instrui o escritor não emitir etiquetas codificadas implicitamente. Os aplicativos podem definir ImplicitProfileId
a qualquer momento para permitir que codificam marcas em forma implícita a partir do ponto atual na codificação. O id de perfil apropriado a ser definido geralmente depende do contexto do aplicativo ou protocolo que está sendo falado.
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
Funções públicas
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
Completa a escrita de um TLV recipiente após uma chamada para OpenContainer () .
O CloseContainer () método restaura o estado de um dos paisTLVWriter objecto após uma chamada para OpenContainer () . Para cada chamada para OpenContainer () aplicações deve fazer uma chamada correspondente à CloseContainer () , passando uma referência para o mesmo escritor recipiente para ambos os métodos.
Quando CloseContainer () retorna, aplicações pode continuar a usar o escritor pai para escrever adicionais TLV elementos que aparecem depois do elemento de recipiente. Neste ponto, o gravador de contêiner fornecido deve ser considerado 'não inicializado' e não deve ser usado sem a reinicialização.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
Codifica uma TLV valor de cadeia de byte.
Isso deve ser usado com StartPutBytes.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
Cópias de um TLV elemento recipiente deTLVReader objecto.
O CopyContainer () codifica um novo TLV elemento recipiente copiando um elemento recipiente pré-codificada localiza-se na posição actual de umTLVReader objecto. O método grava todo o novo elemento do contêiner em uma chamada, copiando o tipo do contêiner, a tag e os elementos da codificação de origem. Quando o método retorna, o objeto escritor pode ser usada para escrever adicionais TLV elementos seguintes o elemento de recipiente.
Detalhes | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||||||||
Valores Retornados |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Codifica uma TLV elemento de recipiente a partir de um conjunto pré-codificado de elementos de membro.
O CopyContainer () método codifica um novo TLV elemento de recipiente (uma estrutura, matriz ou localização) que contém um conjunto de elementos de membro tomadas a partir de umTLVReader objecto. Quando o método é chamado, o objeto leitor fornecido está prevista para ser posicionado sobre um TLV elemento recipiente. O contêiner recém-codificado terá o mesmo tipo e membros do contêiner de entrada. A tag para o novo contêiner é especificada como um parâmetro de entrada.
Quando o método retorna, o objeto escritor pode ser usada para escrever adicionais TLV elementos seguintes o elemento de recipiente.
Detalhes | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||||||||
Valores Retornados |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
Codifica uma TLV elemento de recipiente que contém elementos de membro de um recipiente pré-codificado.
O CopyContainer () método codifica um novo TLV elemento de recipiente (uma estrutura, matriz ou localização) que contém um conjunto de elementos de membro tomadas a partir do conteúdo de um recipiente pré-codificado fornecido. Quando o método é chamado, os dados na memória intermédia de entrada fornecido é analisado como um TLV elemento recipiente um um novo recipiente é escrito que tem o mesmo tipo e membros como o recipiente de entrada. A tag para o novo contêiner é especificada como um parâmetro de entrada.
Quando o método retorna, o objeto escritor pode ser usada para escrever adicionais TLV elementos seguintes o elemento de recipiente.
Detalhes | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||||||
Valores Retornados |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
Cópias de um TLV elemento a partir de um objecto leitor para o gravador.
O CopyElement () método codifica um novo TLV elemento cujo tipo, marca e valor são tomadas a partir de umTLVReader objecto. Quando o método é chamado, o objeto leitor fornecido está prevista para ser posicionada sobre a fonte TLV elemento. O elemento recém-codificado terá o mesmo tipo, tag e conteúdo do contêiner de entrada. Se o elemento fornecido é um TLV recipiente (estrutura, matriz ou caminho), todo o conteúdo do recipiente vai ser copiada.
Detalhes | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||||||||
Valores Retornados |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
Completa a codificação de um TLV elemento recipiente.
O EndContainer () método completa a codificação de um TLV elemento recipiente e restaura o estado de um objecto TLVWrite após uma chamada anterior para StartContainer () . Para cada chamada para StartContainer () aplicações deve fazer uma chamada correspondente a EndContainer () , passando o valor TLVType retornado pelo StartContainer () chamada. Quando EndContainer () retorna, o objeto escritor pode ser usada para escrever adicionais TLV elementos que se seguem o elemento do recipiente.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
Finalizar
WEAVE_ERROR Finalize( void )
Terminar a escrita de um TLV de codificação.
O Finalizar () método termina o processo de escrever um TLV de codificação para a memória intermédia de saída subjacente. O método deve ser chamado pelo aplicativo antes de usar o conteúdo do buffer. Finalize () só pode ser chamado quando não existem escritores recipiente aberto para o escritor atual. (Veja OpenContainer()
).
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Valores Retornados |
|
GetContainerType
TLVType GetContainerType( void ) const
Retorna o tipo de recipiente dentro do qual oTLVWriter está actualmente a escrever.
O GetContainerType () retorna o tipo do TLV recipiente dentro do qual aTLVWriter está actualmente a escrever. Se oTLVWriter não é escrita elementos dentro de um recipiente (isto é, se a escrita no mais externa nível de uma codificação) o método retorna kTLVType_NotSpecified.
Detalhes | |
---|---|
Devoluções | O TLVType do recipiente atual, ou kTLVType_NotSpecified se oTLVWriter não está escrevendo elementos dentro de um recipiente. |
GetLengthWritten
uint32_t GetLengthWritten( void )
Retorna o número total de bytes gravados desde que o gravador foi inicializado.
Detalhes | |
---|---|
Devoluções | Número total de bytes gravados desde que o gravador foi inicializado. |
Iniciar
void Init( uint8_t *buf, uint32_t maxLen )
Iniciar
void Init( PacketBuffer *buf, uint32_t maxLen )
Inicializa umTLVWriter objeto para gravar em um único PacketBuffer.
A escrita começa imediatamente após o último byte de dados existentes no buffer fornecido.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
Iniciar
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Inicializa umTLVWriter objeto para gravar em um ou mais PacketBuffers.
A escrita começa imediatamente após o último byte de dados existentes no buffer especificado. Se allowDiscontiguousBuffers
é verdadeiro, PacketBuffers adicionais serão alocados e encadeada para o tampão fornecido como necessário para acomodar a quantidade de dados gravados. Se o buffer de saída especificado já for o cabeça de uma cadeia de buffers, a saída será gravada nos buffers subsequentes na cadeia antes que novos buffers sejam alocados.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Inicializa umaTLVWriter objecto para escrever para um tampão dinâmico.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
Inicializa uma novaTLVWriter objeto para escrever os membros de uma TLV elemento recipiente.
O OpenContainer () método é usado para escrever TLV elementos recipiente (estrutura, matrizes ou caminhos) a uma codificação. O método leva o tipo ea tag (se houver) do novo recipiente, e uma referência a um novo objeto escritor (o escritor container) que serão inicializados com o propósito de escrever elementos do contêiner. Aplicações escrever os membros do novo contêiner usando o escritor recipiente e, em seguida, chamar CloseContainer () para completar a codificação recipiente.
Enquanto o gravador de contêiner estiver aberto, os aplicativos não devem fazer chamadas ou alterar de outra forma o estado do gravador pai.
O gravador de contêiner herda várias propriedades de configuração do gravador pai. Estes são:
- O id de perfil implícito (ImplicitProfileId)
- O ponteiro de dados do aplicativo (AppData)
- Os ponteiros de função GetNewBuffer e FinalizeBuffer
Detalhes | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||||
Valores Retornados |
|
Colocar
WEAVE_ERROR Put( uint64_t tag, int8_t v )
Codifica uma TLV assinado valor inteiro.
Esta é uma função de membro sobrecarregado, fornecido por conveniência. Ela difere da função acima apenas no (s) argumento (s) que aceita.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
Colocar
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
Codifica uma TLV assinado valor inteiro.
Esta é uma função de membro sobrecarregado, fornecido por conveniência. Ela difere da função acima apenas no (s) argumento (s) que aceita.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
Colocar
WEAVE_ERROR Put( uint64_t tag, int16_t v )
Colocar
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
Colocar
WEAVE_ERROR Put( uint64_t tag, int32_t v )
Colocar
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
Colocar
WEAVE_ERROR Put( uint64_t tag, int64_t v )
Colocar
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
Colocar
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
Codifica uma TLV valor inteiro sem sinal.
Esta é uma função de membro sobrecarregado, fornecido por conveniência. Ela difere da função acima apenas no (s) argumento (s) que aceita.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
Colocar
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Codifica uma TLV valor inteiro sem sinal.
Esta é uma função de membro sobrecarregado, fornecido por conveniência. Ela difere da função acima apenas no (s) argumento (s) que aceita.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
Colocar
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
Colocar
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
Colocar
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
Colocar
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
Colocar
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
Colocar
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
Colocar
WEAVE_ERROR Put( uint64_t tag, float v )
Colocar
WEAVE_ERROR Put( uint64_t tag, double v )
Codifica uma TLV valor de ponto flutuante.
Esta é uma função de membro sobrecarregado, fornecido por conveniência. Ela difere da função acima apenas no (s) argumento (s) que aceita.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
Codifica uma TLV valor booleano.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
Codifica uma TLV valor de cadeia de byte.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
Encodes a TLV null value.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
Encodes a TLV container element from a pre-encoded set of member elements.
The PutPreEncodedContainer() method encodes a new TLV container element (a structure, array or path) containing a set of member elements taken from a pre-encoded buffer. The input buffer is expected to contain zero or more full-encoded TLV elements, with tags that conform to the rules associated with the specified container type (eg structure members must have tags, while array members must not).
The method encodes the entirety of the container element in one call. When PutPreEncodedContainer() returns, the writer object can be used to write additional TLV elements following the container element.
Detalhes | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||||
Valores Retornados |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
Encodes a TLV UTF8 string value.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
Encodes a TLV UTF8 string value.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Encode the string output formatted according to the format in the TLV element.
PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:
The platform supplies a callback-based vcbprintf
that provides the ability to call a custom callback in place of putchar.
The platform supplies a variant of vsnprintf
called vsnprintf_ex
, that behaves exactly like vsnprintf except it has provisions for omitting the first n
characters of the output.
Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex
variety of functions will consume less stack.
If neither of the above is available, but platform provides malloc
the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||
Valores Retornados |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Begins encoding a new TLV container element.
The StartContainer() method is used to write TLV container elements (structure, arrays or paths) to an encoding. The method takes the type and tag (if any) of the new container, and a reference to a TLVType value which will be used to save the current context of the writer while it is being used to write the container.
Once the StartContainer() method returns, the application should use the currentTLVWriter object to write the elements of the container. When finish, the application must call the EndContainer() method to finish the encoding of the container.
Detalhes | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||||
Valores Retornados |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
Encodes a TLV byte string in multiple chunks.
This should be used with ContinuePutBytes.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Encode the string output formatted according to the format in the TLV element.
PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:
The platform supplies a callback-based vcbprintf
that provides the ability to call a custom callback in place of putchar.
The platform supplies a variant of vsnprintf
called vsnprintf_ex
, that behaves exactly like vsnprintf except it has provisions for omitting the first n
characters of the output.
Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex
variety of functions will consume less stack.
If neither of the above is available, but platform provides malloc
the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||
Valores Retornados |
|
Funções estáticas públicas
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
An implementation of aTLVWriter FinalizeBuffer function for writing to a chain of PacketBuffers.
The FinalizePacketBuffer() function performs the necessary finalization required when using aTLVWriter to write to a chain of PacketBuffers. The function is designed to be used in conjunction with the GetNewPacketBuffer() function.
See the FinalizeBufferFunct type definition for additional information on the API of the FinalizePacketBuffer() function.
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
An implementation of aTLVWriter GetNewBuffer function for writing to a dynamic buffer.
The GetNewBuffer_Malloced() function supplies new output space to aTLVWriter by doubling the size of the underlying dynamic buffer as needed to store the encoding. The function is designed to be assigned to theTLVWriter GetNewBuffer function pointer.
See the GetNewBufferFunct type definition for additional information on the API of the GetNewBuffer_Malloced() function.
GetNewPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
An implementation of aTLVWriter GetNewBuffer function for writing to a chain of PacketBuffers.
The GetNewPacketBuffer() function supplies new output space to aTLVWriter by allocating a chain of one or more PacketBuffers as needed to store the encoding. The function is designed to be assigned to theTLVWriter GetNewBuffer function pointer.
Note that when using the GetNewPacketBuffer with aTLVWriter , the corresponding FinalizePacketBuffer() function (or an equivalent) should also be used to finalize the buffer chain.
See the GetNewBufferFunct type definition for additional information on the API of the GetNewPacketBuffer() function.
Funções protegidas
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
Determine whether the container should reserve space for the CloseContainer symbol at the point of starting / opening the container.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Set whether the container should reserve the space for the CloseContainer symbol at the point of starting / opening the container.
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
WriteData
WEAVE_ERROR WriteData( const uint8_t *p, uint32_t len )
WriteElementHead
WEAVE_ERROR WriteElementHead( TLVElementType elemType, uint64_t tag, uint64_t lenOrVal )
WriteElementWithData
WEAVE_ERROR WriteElementWithData( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen )