O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

nl :: Tecer:: TLV :: TLVWriter

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

Fornece um codificador com eficiência de memória para gravar dados no formato Weave TLV .

Resumo

TLVWriter implementa um codificador de estilo de fluxo somente para frente para dados Weave TLV . Os aplicativos gravam dados em uma codificação chamando um dos métodos Put () do gravador, passando a tag associada e as informações de valor conforme necessário. Da mesma forma, os aplicativos podem codificar os tipos de contêiner TLV (estruturas, matrizes ou caminhos) chamando os métodos OpenContainer () ou EnterContainer () do gravador.

Um objetoTLVWriter pode gravar dados diretamente em um buffer de saída fixo ou em uma cadeia de um ou mais objetos PacketBuffer. Além disso, os aplicativos podem fornecer suas próprias funções GetNewBuffer e FinalizeBuffer para direcionar a saída para um destino arbitrário, por exemplo, um soquete ou uma fila de eventos.

Herança

Subclasses diretamente conhecidas: nl :: Weave :: TLV :: CircularTLVWriter

Tipos protegidos

@72 {
kEndOfContainerMarkerSize = 1
}
enum

Tipos públicos

FinalizeBufferFunct )(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen) WEAVE_ERROR (*
Uma função usada para realizar a finalização da saída de um objetoTLVWriter .
GetNewBufferFunct )(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR (*
Uma função que fornece novo espaço de buffer 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á chamada quando oTLVWriter for finalizado.
GetNewBuffer
Um ponteiro para uma função que fornecerá um novo espaço de buffer de saída para umTLVWriter .
ImplicitProfileId
uint32_t
A identificação 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)
Conclui a gravação de um contêiner TLV após uma chamada para OpenContainer () .
ContinuePutBytes (const uint8_t *buf, uint32_t len)
Codifica um valor de string de bytes TLV .
CopyContainer (TLVReader & container)
Copia um elemento de contêiner TLV do objetoTLVReader .
CopyContainer (uint64_t tag,TLVReader & container)
Codifica um elemento de contêiner TLV de um conjunto pré-codificado de elementos de membro.
CopyContainer (uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
Codifica um elemento de contêiner TLV que contém elementos de membro de um contêiner pré-codificado.
CopyElement (TLVReader & reader)
Copia um elemento TLV de um objeto leitor para o gravador.
CopyElement (uint64_t tag,TLVReader & reader)
EndContainer ( TLVType outerContainerType)
Conclui a codificação de um elemento de contêiner TLV .
Finalize (void)
Conclua a gravação de uma codificação TLV .
GetContainerType (void) const
Retorna o tipo de contêiner no qual oTLVWriter está gravando no momento.
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 um objetoTLVWriter para gravar em um único buffer de saída.
Init ( PacketBuffer *buf, uint32_t maxLen)
void
Inicializa um objetoTLVWriter para gravar em um único PacketBuffer.
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Inicializa um objetoTLVWriter para gravar em um ou mais PacketBuffers.
InitMalloced (uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
Inicializa um objetoTLVWriter para gravar em um buffer dinâmico.
OpenContainer (uint64_t tag, TLVType containerType,TLVWriter & containerWriter)
Inicializa um novo objetoTLVWriter para gravar os membros de um elemento de contêiner TLV .
Put (uint64_t tag, int8_t v)
Codifica um valor inteiro assinado TLV .
Put (uint64_t tag, int8_t v, bool preserveSize)
Codifica um valor inteiro assinado 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 um valor inteiro sem sinal TLV .
Put (uint64_t tag, uint8_t v, bool preserveSize)
Codifica um valor inteiro sem sinal 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 um valor de ponto flutuante TLV .
PutBoolean (uint64_t tag, bool v)
Codifica um valor booleano TLV .
PutBytes (uint64_t tag, const uint8_t *buf, uint32_t len)
Codifica um valor de string de bytes TLV .
PutNull (uint64_t tag)
Codifica um valor nulo TLV .
PutPreEncodedContainer (uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
Codifica um elemento de contêiner TLV de um conjunto pré-codificado de elementos de membro.
PutString (uint64_t tag, const char *buf)
Codifica um valor de string TLV UTF8.
PutString (uint64_t tag, const char *buf, uint32_t len)
Codifica um valor de string TLV UTF8.
PutStringF (uint64_t tag, const char *fmt, ...)
Codifique a saída da string formatada de acordo com o formato no elemento TLV .
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType)
Começa a codificar um novo elemento de contêiner TLV .
StartPutBytes (uint64_t tag, uint32_t totalLen)
Codifica uma string de bytes TLV em vários blocos.
VPutStringF (uint64_t tag, const char *fmt, va_list ap)
Codifique a saída da string formatada de acordo com o formato no elemento TLV .

Funções estáticas públicas

FinalizePacketBuffer (TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
Uma implementação de uma funçãoTLVWriter FinalizeBuffer para gravar em uma cadeia de PacketBuffers.
GetNewBuffer_Malloced (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Uma implementação de uma funçãoGetNewBuffer TLVWriter para gravar em um buffer dinâmico.
GetNewPacketBuffer (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Uma implementação de uma funçãoGetNewBuffer TLVWriter para gravar em 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 usada para realizar a finalização da saída de um objetoTLVWriter .

Funções desse tipo são chamadas quando o método Finalize () de umTLVWriter é 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
[in] writer
Uma referência ao objetoTLVWriter que está sendo finalizado.
[in,out] bufHandle
Um valor de contexto uintptr_t que foi definido por chamadas anteriores para a função GetNewBuffer .
[in,out] bufStart
Um ponteiro para o início do buffer de saída atual (e final).
[in,out] bufLen
O número de bytes contidos no buffer apontado por bufStart .
Valores Retornados
WEAVE_NO_ERROR
Se a finalização foi bem-sucedida.
other
Outro Weave ou códigos de erro específicos da plataforma indicando que ocorreu um erro durante a finalização.

GetNewBufferFunct

WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)

Uma função que fornece novo espaço de buffer de saída para umTLVWriter .

Funções desse tipo são usadas para preparar um novo espaço de buffer para umTLVWriter 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
[in] writer
Uma referência ao objetoTLVWriter que está solicitando um novo espaço de buffer.
[in,out] bufHandle
Uma referência a um valor uintptr_t que a função pode usar para armazenar dados de contexto entre chamadas. Este valor é inicializado em 0 antes da primeira chamada.
[in,out] bufStart
Uma referência a um ponteiro de dados. Ao entrar na função, bufStart aponta o início do buffer de saída atual. Na saída, bufStart se que bufStart aponte para o início do novo buffer de saída. O novo valor do ponteiro pode ser igual ao valor anterior (por exemplo, se a função copiou os dados existentes em outro lugar) ou pode apontar para um local totalmente novo.
[in,out] bufLen
Uma referência a um inteiro sem sinal. Na entrada para a função, bufLen contém o número de bytes de espaço não utilizado no buffer atual. Na saída, bufLen se que bufLen contenha o número máximo de bytes que podem ser gravados no novo buffer de saída.
Valores Retornados
WEAVE_NO_ERROR
Se a função foi capaz de fornecer mais espaço de buffer para o gravador.
other
Outros códigos de erro Weave ou específicos da plataforma, indicando que ocorreu um erro, impedindo a função de produzir espaço de buffer adicional.

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á chamada quando oTLVWriter for finalizado.

Um objetoTLVWriter chamará a função FinalizeBuffer sempre que seu método Finalize () for 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 método Finalize () ignore a chamada da 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 fornecerá um novo espaço de buffer de saída para umTLVWriter .

Um objetoTLVWriter chamará a função GetNewBuffer sempre que for feita uma tentativa de gravar dados que excedam o tamanho do buffer de saída atual. 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

O ID do perfil das tags que devem ser codificadas de forma implícita.

Quando um gravador é solicitado a codificar um novo elemento, se a id do perfil da tag associada ao novo elemento corresponder ao valor do membro ImplicitProfileId , o gravador codificará a tag de forma implícita, omitindo a id do perfil no processo.

Por padrão, a propriedade ImplicitProfileId é definida como kProfileIdNotSpecified, que instrui o gravador a não emitir tags codificadas implicitamente. Os aplicativos podem definir ImplicitProfileId a qualquer momento para habilitar tags de codificação na forma implícita, começando no ponto atual na codificação. O id de perfil apropriado a ser definido geralmente depende do contexto do aplicativo ou protocolo 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
)

Conclui a gravação de um contêiner TLV após uma chamada para OpenContainer () .

O método CloseContainer () restaura o estado de um objeto paiTLVWriter após uma chamada para OpenContainer () . Para cada chamada para OpenContainer (), os aplicativos devem fazer uma chamada correspondente para CloseContainer () , passando uma referência ao mesmo gravador de contêiner para os dois métodos.

Quando CloseContainer () retorna, os aplicativos podem continuar a usar o gravador pai para gravar elementos TLV adicionais que aparecem após o elemento do contêiner. 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
[in] containerWriter
Uma referência ao objetoTLVWriter que foi fornecido ao método OpenContainer () .
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INCORRECT_STATE
Se o gravador de contêiner fornecido não estiver no estado correto.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se outro gravador de contêiner foi aberto no gravador de contêiner fornecido e ainda não foi fechado.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a conclusão da codificação do contêiner exceder o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas.

ContinuePutBytes

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

Codifica um valor de string de bytes TLV .

Isso deve ser usado com StartPutBytes.

Detalhes
Parâmetros
[in] buf
Um ponteiro para um buffer que contém a string de bytes a ser codificada.
[in] len
O número de bytes a serem codificados.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas.

CopyContainer

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

Copia um elemento de contêiner TLV do objetoTLVReader .

O CopyContainer () codifica um novo elemento de contêiner TLV copiando um elemento de contêiner pré-codificado localizado na posição atual de um objetoTLVReader . 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 gravador pode ser usado para gravar elementos TLV adicionais após o elemento contêiner.

Detalhes
Parâmetros
[in] container
Uma referência a um objetoTLVReader que identifica o contêiner TLV pré-codificado a ser copiado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INCORRECT_STATE
Se o leitor fornecido não estiver posicionado em um elemento de contêiner.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um escritor de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_TLV_UNDERRUN
Se a codificação TLV subjacente associada ao leitor fornecido terminou prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se o leitor fornecido encontrou um tipo de elemento TLV inválido ou não suportado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o leitor fornecido encontrou uma tag TLV em um contexto inválido ou se a tag associada ao contêiner de origem é inválida ou inadequada no contexto em que o novo contêiner está sendo gravado.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas ou pela função GetNextBuffer () associada ao objeto leitor.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

Codifica um elemento de contêiner TLV de um conjunto pré-codificado de elementos de membro.

O método CopyContainer () codifica um novo elemento de contêiner TLV (uma estrutura, array ou caminho) contendo um conjunto de elementos membros retirados de um objetoTLVReader . Quando o método é chamado, espera-se que o objeto leitor fornecido seja posicionado em um elemento de contêiner TLV . 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 gravador pode ser usado para gravar elementos TLV adicionais após o elemento contêiner.

Detalhes
Parâmetros
[in] tag
A tag TLV a ser codificada com o contêiner ou AnonymousTag se o contêiner deve ser codificado sem uma tag. Os valores de tag devem ser construídos com uma das funções de definição de tag ProfileTag () , ContextTag () ou CommonTag () .
[in] container
Uma referência a um objetoTLVReader que identifica um contêiner TLV pré-codificado cujo tipo e membros devem ser copiados.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INCORRECT_STATE
Se o leitor fornecido não estiver posicionado em um elemento de contêiner.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_TLV_UNDERRUN
Se a codificação TLV subjacente associada ao leitor fornecido terminou prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se o leitor fornecido encontrou um tipo de elemento TLV inválido ou não suportado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o leitor fornecido encontrou uma tag TLV em um contexto inválido ou se a tag fornecida é inválida ou inadequada no contexto em que o novo contêiner está sendo gravado.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas ou pela função GetNextBuffer () associada ao objeto leitor.

CopyContainer

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

Codifica um elemento de contêiner TLV que contém elementos de membro de um contêiner pré-codificado.

O método CopyContainer () codifica um novo elemento de contêiner TLV (uma estrutura, matriz ou caminho) contendo um conjunto de elementos de membro retirados do conteúdo de um contêiner pré-codificado fornecido. Quando o método é chamado, os dados no buffer de entrada fornecido são analisados ​​como um elemento de contêiner TLV e um novo contêiner é escrito com 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 gravador pode ser usado para gravar elementos TLV adicionais após o elemento contêiner.

Detalhes
Parâmetros
[in] tag
A tag TLV a ser codificada com o contêiner ou AnonymousTag se o contêiner deve ser codificado sem uma tag. Os valores de tag devem ser construídos com uma das funções de definição de tag ProfileTag () , ContextTag () ou CommonTag () .
[in] encodedContainer
Um buffer contendo um contêiner TLV pré-codificado cujo tipo e membros devem ser copiados.
[in] encodedContainerLen
O comprimento em bytes do contêiner pré-codificado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_TLV_UNDERRUN
Se o contêiner codificado terminou prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se o contêiner codificado contiver um tipo de elemento TLV inválido ou não compatível.
WEAVE_ERROR_INVALID_TLV_TAG
Se o contêiner codificado contiver uma tag TLV em um contexto inválido ou se a tag fornecida for inválida ou inadequada no contexto em que o novo contêiner está sendo gravado.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas ou pela função GetNextBuffer () associada ao objeto leitor.

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

Copia um elemento TLV de um objeto leitor para o gravador.

O método CopyElement () codifica um novo elemento TLV cujo tipo, tag e valor são retirados de um objetoTLVReader . Quando o método é chamado, espera-se que o objeto leitor fornecido seja posicionado no elemento TLV de origem. O elemento recém-codificado terá o mesmo tipo, tag e conteúdo do contêiner de entrada. Se o elemento fornecido for um contêiner TLV (estrutura, array ou caminho), todo o conteúdo do contêiner será copiado.

Detalhes
Parâmetros
[in] reader
Uma referência a um objetoTLVReader que identifica um elemento TLV pré-codificado que deve ser copiado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INCORRECT_STATE
Se o leitor fornecido não estiver posicionado em um elemento.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_TLV_UNDERRUN
Se a codificação TLV subjacente associada ao leitor fornecido terminou prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se o leitor fornecido encontrou um tipo de elemento TLV inválido ou não compatível.
WEAVE_ERROR_INVALID_TLV_TAG
Se o leitor fornecido encontrou uma tag TLV em um contexto inválido, ou se a tag fornecida é inválida ou inadequada no contexto em que o novo contêiner está sendo gravado.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas ou pela função GetNextBuffer () associada ao objeto leitor.

CopyElement

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

EndContainer

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

Conclui a codificação de um elemento de contêiner TLV .

O método EndContainer () completa a codificação de um elemento de contêiner TLV e restaura o estado de um objeto TLVWrite após uma chamada anterior para StartContainer () . Para cada chamada para StartContainer (), os aplicativos devem fazer uma chamada correspondente para EndContainer () , passando o valor TLVType retornado pela chamada StartContainer () . Quando EndContainer () retorna, o objeto escritor pode ser usado para escrever elementos TLV adicionais que seguem o elemento contêiner.

Detalhes
Parâmetros
[in] outerContainerType
O valor TLVType que foi retornado pelo método StartContainer () .
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INCORRECT_STATE
Se uma chamada StartContainer () correspondente não foi feita.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas.

Finalizar

WEAVE_ERROR Finalize(
  void
)

Conclua a gravação de uma codificação TLV .

O método Finalize () completa o processo de gravação de uma codificação TLV no buffer 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 há gravadores de contêiner abertos para o gravador atual. (Veja OpenContainer() ).

Detalhes
Valores Retornados
WEAVE_NO_ERROR
Se a codificação foi finalizada com sucesso.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
other
Outros erros de Weave ou específicos da plataforma retornados pela função FinalizeBuffer () configurada.

GetContainerType

TLVType GetContainerType(
  void
) const 

Retorna o tipo de contêiner no qual oTLVWriter está gravando no momento.

O método GetContainerType () retorna o tipo do contêiner TLV no qual oTLVWriter está gravando no momento. Se oTLVWriter não estiver gravando elementos em um contêiner (ou seja, se estiver gravando no nível mais externo de uma codificação), o método retorna kTLVType_NotSpecified.

Detalhes
Devoluções
O TLVType do contêiner atual ou kTLVType_NotSpecified se oTLVWriter não estiver gravando elementos em um contêiner.

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
)

Inicializa um objetoTLVWriter para gravar em um único buffer de saída.

Detalhes
Parâmetros
[in] buf
Um ponteiro para o buffer no qual o TLV deve ser gravado.
[in] maxLen
O número máximo de bytes que devem ser gravados no buffer de saída.

Iniciar

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Inicializa um objetoTLVWriter 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
[in] buf
Um ponteiro para um PacketBuffer no qual o TLV deve ser gravado.
[in] maxLen
O número máximo de bytes que devem ser gravados no buffer de saída.

Iniciar

void Init(
  PacketBuffer *buf,
  uint32_t maxLen,
  bool allowDiscontiguousBuffers
)

Inicializa um objetoTLVWriter para gravar em um ou mais PacketBuffers.

A gravação começa imediatamente após o último byte de dados existentes no buffer especificado. Se allowDiscontiguousBuffers for true, PacketBuffers adicionais serão alocados e encadeados ao buffer fornecido conforme 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 quaisquer novos buffers sejam alocados.

Detalhes
Parâmetros
[in] buf
Um ponteiro para um PacketBuffer no qual os dados TLV devem ser gravados.
[in] maxLen
O número máximo de bytes que devem ser gravados no (s) buffer (es) de saída.
[in] allowDiscontiguousBuffers
Se verdadeiro, grava os dados em uma cadeia de PacketBuffers, alocando novos buffers conforme necessário para armazenar os dados gravados. Se falso, a gravação falhará com WEAVE_ERROR_BUFFER_TOO_SMALL se os dados gravados excederem o espaço disponível no buffer de saída inicial.

InitMalloced

void InitMalloced(
  uint8_t *& outBuf,
  uint32_t initialBufSize,
  uint32_t maxLen
)

Inicializa um objetoTLVWriter para gravar em um buffer dinâmico.

Detalhes
Parâmetros
[in] buf
Uma referência a um ponteiro que receberá o buffer alocado.
[in] maxLen
O número máximo de bytes que devem ser gravados no buffer de saída.
[in] initialBufSize
O número inicial de bytes que devem ser alocados para o buffer.

OpenContainer

WEAVE_ERROR OpenContainer(
  uint64_t tag,
  TLVType containerType,
  TLVWriter & containerWriter
)

Inicializa um novo objetoTLVWriter para gravar os membros de um elemento de contêiner TLV .

O método OpenContainer () é usado para escrever elementos de contêiner TLV (estrutura, matrizes ou caminhos) em uma codificação. O método pega o tipo e a tag (se houver) do novo contêiner e uma referência a um novo objeto escritor (o escritor do contêiner ) que será inicializado com o propósito de gravar os elementos do contêiner. Os aplicativos gravam os membros do novo contêiner usando o gravador de contêiner e, em seguida, chamam CloseContainer () para concluir a codificação do contêiner.

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
[in] tag
A tag TLV a ser codificada com o contêiner ou AnonymousTag se o contêiner deve ser codificado sem uma tag. Os valores de tag devem ser construídos com uma das funções de definição de tag ProfileTag () , ContextTag () ou CommonTag () .
[in] containerType
O tipo de contêiner a ser codificado. Deve ser um de kTLVType_Structure , kTLVType_Array ou kTLVType_Path .
[out] containerWriter
Uma referência a um objetoTLVWriter que será inicializado para gravar os membros do novo elemento contêiner. Todos os dados associados ao objeto fornecido são sobrescritos.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_WRONG_TLV_TYPE
Se o valor especificado para containerType estiver incorreto.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas.

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

Codifica um valor inteiro assinado TLV .

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
[in] tag
A tag TLV a ser codificada com o valor ou AnonymousTag se o valor deve ser codificado sem uma tag. Os valores de tag devem ser construídos com uma das funções de definição de tag ProfileTag () , ContextTag () ou CommonTag () .
[in] v
O valor a ser codificado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas.

Colocar

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

Codifica um valor inteiro assinado TLV .

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
[in] tag
A tag TLV a ser codificada com o valor ou AnonymousTag se o valor deve ser codificado sem uma tag. Os valores de tag devem ser construídos com uma das funções de definição de tag ProfileTag () , ContextTag () ou CommonTag () .
[in] v
O valor a ser codificado.
[in] preserveSize
Verdadeiro se o valor deve ser codificado no mesmo número de bytes do tipo de entrada. False se o valor deve ser codificado no número mínimo de bytes necessário para representar o valor. Nota: Os aplicativos são fortemente encorajados a definir este parâmetro como falso.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas.

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 um valor inteiro sem sinal TLV .

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
[in] tag
A tag TLV a ser codificada com o valor ou AnonymousTag se o valor deve ser codificado sem uma tag. Os valores de tag devem ser construídos com uma das funções de definição de tag ProfileTag () , ContextTag () ou CommonTag () .
[in] v
O valor a ser codificado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas.

Colocar

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

Codifica um valor inteiro sem sinal TLV .

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
[in] tag
A tag TLV a ser codificada com o valor ou AnonymousTag se o valor deve ser codificado sem uma tag. Os valores de tag devem ser construídos com uma das funções de definição de tag ProfileTag () , ContextTag () ou CommonTag () .
[in] v
O valor a ser codificado.
[in] preserveSize
Verdadeiro se o valor deve ser codificado no mesmo número de bytes do tipo de entrada. False se o valor deve ser codificado no número mínimo de bytes necessário para representar o valor. Nota: Os aplicativos são fortemente encorajados a definir este parâmetro como falso.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas.

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 um valor de ponto flutuante TLV .

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
[in] tag
A tag TLV a ser codificada com o valor ou AnonymousTag se o valor deve ser codificado sem uma tag. Os valores de tag devem ser construídos com uma das funções de definição de tag ProfileTag () , ContextTag () ou CommonTag () .
[in] v
O valor a ser codificado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas.

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

Codifica um valor booleano TLV .

Detalhes
Parâmetros
[in] tag
A tag TLV a ser codificada com o valor ou AnonymousTag se o valor deve ser codificado sem uma tag. Os valores de tag devem ser construídos com uma das funções de definição de tag ProfileTag () , ContextTag () ou CommonTag () .
[in] v
O valor a ser codificado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros Weave ou específicos da plataforma retornados pelas funções GetNewBuffer () ou FinalizeBuffer () configuradas.

PutBytes

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

Codifica um valor de string de bytes TLV .

Detalhes
Parâmetros
[in] tag
A tag TLV a ser codificada com o valor ou AnonymousTag se o valor deve ser codificado sem uma tag. Os valores de tag devem ser construídos com uma das funções de definição de tag ProfileTag () , ContextTag () ou CommonTag () .
[in] buf
Um ponteiro para um buffer que contém a string de bytes a ser codificada.
[in] len
The number of bytes to be encoded.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

Encodes a TLV null value.

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutPreEncodedContainer

WEAVE_ERROR PutPreEncodedContainer(
  uint64_t tag,
  TLVType containerType,
  const uint8_t *data,
  uint32_t dataLen
)

Encodes a TLV container element from a pre-encoded set of member elements.

The PutPreEncodedContainer() method encodes a new TLV container element (a structure, array or path) containing a set of member elements taken from a pre-encoded buffer. The input buffer is expected to contain zero or more full-encoded TLV elements, with tags that conform to the rules associated with the specified container type (eg structure members must have tags, while array members must not).

The method encodes the entirety of the container element in one call. When PutPreEncodedContainer() returns, the writer object can be used to write additional TLV elements following the container element.

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the container, or AnonymousTag if the container should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] containerType
The type of container to encode. Must be one of kTLVType_Structure , kTLVType_Array or kTLVType_Path .
[in] data
A pointer to a buffer containing zero of more encoded TLV elements that will become the members of the new container.
[in] dataLen
The number of bytes in the data buffer.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_WRONG_TLV_TYPE
If the value specified for containerType is incorrect.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

Encodes a TLV UTF8 string value.

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] buf
A pointer to the null-terminated UTF-8 string to be encoded.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf,
  uint32_t len
)

Encodes a TLV UTF8 string value.

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] buf
A pointer to the UTF-8 string to be encoded.
[in] len
The length (in bytes) of the string to be encoded.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutStringF

WEAVE_ERROR PutStringF(
  uint64_t tag,
  const char *fmt,
  ...
)

Encode the string output formatted according to the format in the TLV element.

PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:

The platform supplies a callback-based vcbprintf that provides the ability to call a custom callback in place of putchar.

The platform supplies a variant of vsnprintf called vsnprintf_ex , that behaves exactly like vsnprintf except it has provisions for omitting the first n characters of the output.

Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex variety of functions will consume less stack.

If neither of the above is available, but platform provides malloc the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] fmt
The format string used to format the argument list. Follows the same syntax and rules as the format string for printf family of functions.
[in] ...
A list of arguments to be formatted in the output value according to fmt.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
other
If underlying calls toTLVWriter methods WriteElementHead or GetNewBuffer failed, their error is immediately forwarded up the call stack.

StartContainer

WEAVE_ERROR StartContainer(
  uint64_t tag,
  TLVType containerType,
  TLVType & outerContainerType
)

Begins encoding a new TLV container element.

The StartContainer() method is used to write TLV container elements (structure, arrays or paths) to an encoding. The method takes the type and tag (if any) of the new container, and a reference to a TLVType value which will be used to save the current context of the writer while it is being used to write the container.

Once the StartContainer() method returns, the application should use the currentTLVWriter object to write the elements of the container. When finish, the application must call the EndContainer() method to finish the encoding of the container.

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the container, or AnonymousTag if the container should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] containerType
The type of container to encode. Must be one of kTLVType_Structure , kTLVType_Array or kTLVType_Path .
[out] outerContainerType
A reference to a TLVType value that will receive the context of the writer.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_WRONG_TLV_TYPE
If the value specified for containerType is incorrect.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

StartPutBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

Encodes a TLV byte string in multiple chunks.

This should be used with ContinuePutBytes.

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] totalLen
The total number of bytes to be encoded.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

VPutStringF

WEAVE_ERROR VPutStringF(
  uint64_t tag,
  const char *fmt,
  va_list ap
)

Encode the string output formatted according to the format in the TLV element.

PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:

The platform supplies a callback-based vcbprintf that provides the ability to call a custom callback in place of putchar.

The platform supplies a variant of vsnprintf called vsnprintf_ex , that behaves exactly like vsnprintf except it has provisions for omitting the first n characters of the output.

Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex variety of functions will consume less stack.

If neither of the above is available, but platform provides malloc the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] fmt
The format string used to format the argument list. Follows the same syntax and rules as the format string for printf family of functions.
[in] ap
A list of arguments to be formatted in the output value according to fmt.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
other
If underlying calls toTLVWriter methods WriteElementHead or GetNewBuffer failed, their error is immediately forwarded up the call stack.

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
)