nl :: Tecer:: TLV :: TLVReader
#include <src/lib/core/WeaveTLV.h>
Fornece um analisador eficiente de memória para dados codificados em Weave TLV formato.
Resumo
TLVReader implementa um forward-only, “pull-estilo” analisador para Weave TLV dados. OTLVReader objecto opera como um cursor que pode ser utilizado para repetir uma sequência de TLV elementos e interpretar o seu conteúdo. Quando posicionado em um elemento, os aplicativos podem fazer chamadas para o leitor get () métodos para consultar tipo e marca do elemento atual, e para extrair qualquer valor associado. Do leitor Next () método é usado para avanço de elemento para elemento.
UmTLVReader objecto é sempre posicionado quer antes, em ou depois de um TLV elemento. Quando inicializado em primeiro lugar, umTLVReader está posicionado imediatamente antes do primeiro elemento da codificação. Para começar a ler, um aplicativo deve fazer uma chamada inicial para o Next () método para situar o leitor no primeiro elemento. Quando um elemento de recipiente é encounteredeither uma estrutura, uma matriz ou um paththe OpenContainer () ou EnterContainer () métodos podem ser usados para percorrer o conteúdo do recipiente.
Quando o leitor atinge o fim de um TLV de codificação, ou o último elemento dentro de um recipiente, ele sinaliza a aplicação por devolver um erro WEAVE_END_OF_TLV a partir do seguinte () método. O leitor irá continuar a voltar WEAVE_END_OF_TLV até que seja reinicializado, ou o recipiente actual é abandonado (por meio CloseContainer () / ExitContainer () ).
UmTLVReader objecto é possível analisar os dados directamente a partir de uma memória intermédia de entrada fixa, ou a partir de uma cadeia de um ou mais PacketBuffers. Além disso, as aplicações podem fornecer uma GetNextBuffer
função de dados de alimentação para o leitor a partir de uma fonte arbitrária, por exemplo, uma tomada ou uma porta de série.
Herança
Subclasses diretamente conhecidas:nl :: Weave :: Profiles :: DataManagement_Current :: CircularEventReader
nl :: Weave :: TLV :: CircularTLVReader
Tipos públicos | |
---|---|
GetNextBufferFunct )(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen) | WEAVE_ERROR (*WEAVE_ERROR (* Uma função que pode ser usado para recuperar adicionais TLV dados a serem analisados. |
Atributos públicos | |
---|---|
AppData | void * Um campo de ponteiro que pode ser usado para dados específicos do aplicativo. |
GetNextBuffer | Um ponteiro para uma função que irá produzir dados de entrada para oTLVReader objecto. |
ImplicitProfileId | uint32_t O ID de perfil a ser usado para tags de perfil codificadas de forma implícita. |
Atributos protegidos | |
---|---|
mBufEnd | const uint8_t * |
mBufHandle | uintptr_t |
mContainerType | |
mControlByte | uint16_t |
mElemLenOrVal | uint64_t |
mElemTag | uint64_t |
mLenRead | uint32_t |
mMaxLen | uint32_t |
mReadPoint | const uint8_t * |
Funções públicas | |
---|---|
CloseContainer (TLVReader & containerReader) | Completa a leitura de um TLV recipiente após uma chamada para OpenContainer () . |
DupBytes (uint8_t *& buf, uint32_t & dataLen) | Aloca e retorna um buffer contendo o valor do byte atual ou string UTF8. |
DupString (char *& buf) | Aloca e retorna um buffer contendo o valor terminado em nulo do byte atual ou string UTF8. |
EnterContainer ( TLVType & outerContainerType) | |
ExitContainer ( TLVType outerContainerType) | |
Get (bool & v) | Obtenha o valor do elemento atual como um tipo bool. |
Get (int8_t & v) | Obtenha o valor do elemento atual como um inteiro assinado de 8 bits. |
Get (int16_t & v) | Obtenha o valor do elemento atual como um inteiro assinado de 16 bits. |
Get (int32_t & v) | Obtenha o valor do elemento atual como um inteiro assinado de 32 bits. |
Get (int64_t & v) | Obtenha o valor do elemento atual como um inteiro assinado de 64 bits. |
Get (uint8_t & v) | Obtenha o valor do elemento atual como um inteiro sem sinal de 8 bits. |
Get (uint16_t & v) | Obtenha o valor do elemento atual como um inteiro sem sinal de 16 bits. |
Get (uint32_t & v) | Obtenha o valor do elemento atual como um inteiro não assinado de 32 bits. |
Get (uint64_t & v) | Obtenha o valor do elemento atual como um inteiro não assinado de 64 bits. |
Get (float & v) | |
Get (double & v) | Obtenha o valor do elemento atual como um número de ponto flutuante de precisão dupla. |
GetBufHandle (void) const | uintptr_t |
GetBytes (uint8_t *buf, uint32_t bufSize) | Obtenha o valor do byte atual ou elemento de string UTF8. |
GetContainerType (void) const | Retorna o tipo do recipiente dentro do qual oTLVReader está lendo atualmente. |
GetControlByte (void) const | uint16_t Retorna o byte de controle associado com o atual TLV elemento. |
GetDataPtr (const uint8_t *& data) | Obter um ponteiro para o byte codificado inicial de um TLV byte ou UTF8 elemento cadeia. |
GetLength (void) const | uint32_t Retorna o comprimento de dados associados com o atual TLV elemento. |
GetLengthRead (void) const | uint32_t Retorna o número total de bytes lidos desde que o leitor foi inicializado. |
GetReadPoint (void) const | const uint8_t * Obtém o ponto no buffer de entrada subjacente que corresponde à posição atual do leitor. |
GetRemainingLength (void) const | uint32_t Retorna o número total de bytes que podem ser lidos até que o comprimento máximo de leitura seja alcançado. |
GetString (char *buf, uint32_t bufSize) | Obtenha o valor do byte atual ou elemento de string UTF8 como uma string terminada em nulo. |
GetTag (void) const | uint64_t Retorna a tag associada a atual TLV elemento. |
GetType (void) const | Retorna o tipo do atual TLV elemento. |
Init (constTLVReader & aReader) | void |
Init (const uint8_t *data, uint32_t dataLen) | void Inicializa umaTLVReader objecto para ler a partir de um único buffer de entrada. |
Init ( PacketBuffer *buf, uint32_t maxLen) | void Inicializa umTLVReader objeto para ler a partir de um único PacketBuffer. |
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers) | void Inicializa umTLVReader objeto para ler a partir de um ou mais PacketBuffers. |
Next (void) | |
Next ( TLVType expectedType, uint64_t expectedTag) | |
OpenContainer (TLVReader & containerReader) | |
Skip (void) | |
VerifyEndOfContainer (void) | Verifica se o objecto TVLReader é no final de um TLV recipiente. |
Funções protegidas | |
---|---|
ClearElementState (void) | void Limpe o estado doTLVReader . |
ElementType (void) const | TLVElementType Este é um método privado que retorna o TLVElementType de mControlByte. |
EnsureData ( WEAVE_ERROR noDataErr) | |
GetElementHeadLength (uint8_t & elemHeadBytes) const | Este é um método particular usado para calcular o comprimento de um TLV cabeça elemento. |
IsContainerOpen (void) const | bool |
ReadData (uint8_t *buf, uint32_t len) | |
ReadElement (void) | |
ReadTag (TLVTagControl tagControl, const uint8_t *& p) | uint64_t |
SetContainerOpen (bool aContainerOpen) | void |
SkipData (void) | Ir todos os dados contidos no atual TLV lendo sobre ele sem um buffer de destino. |
SkipToEndOfContainer (void) | |
VerifyElement (void) |
Funções estáticas protegidas | |
---|---|
FailGetNextBuffer (TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen) | |
GetNextPacketBuffer (TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen) |
Tipos públicos
GetNextBufferFunct
WEAVE_ERROR(* GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)
Uma função que pode ser usado para recuperar adicionais TLV dados a serem analisados.
Funções deste tipo são utilizados para os dados de entrada de alimentação para umTLVReader . Quando chamada, espera-se que a função produza dados adicionais para o leitor analisar ou sinalizar ao leitor que não há mais dados disponíveis.
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.
GetNextBuffer
GetNextBufferFunct GetNextBuffer
Um ponteiro para uma função que irá produzir dados de entrada para oTLVReader objecto.
Se definido como NULL (o valor padrão), o leitor assumirá que não há mais dados de entrada disponíveis.
GetNextBuffer pode ser definido por um aplicativo a qualquer momento, mas normalmente é definido quando o leitor é inicializado.
Consulte a definição de tipo GetNextBufferFunct para obter informações adicionais sobre a implementação de uma função GetNextBuffer.
ImplicitProfileId
uint32_t ImplicitProfileId
O ID do perfil a ser usado para tags de perfil codificadas de forma implícita.
Quando o leitor encontra uma tag específica do perfil que foi codificado em forma implícita, ele usa o valor da ImplicitProfileId
propriedade como o ID de perfil assumido pelo tag.
Por padrão, o ImplicitProfileId
propriedade é definida como kProfileIdNotSpecified. Ao decodificar TLV que contém tags implicitamente codificados, os aplicativos devem definir ImplicitProfileId
antes de ler quaisquer TLV elementos com essas tags. O id de perfil apropriado geralmente depende do contexto do aplicativo ou protocolo que está sendo falado.
Se uma tag implicitamente-codificada é encontrado ao ImplicitProfileId
está definido para kProfileIdNotSpecified, o leitor irá retornar uma WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG erro.
Atributos protegidos
mBufEnd
const uint8_t * mBufEnd
mBufHandle
uintptr_t mBufHandle
mContainerType
TLVType mContainerType
mControlByte
uint16_t mControlByte
mElemLenOrVal
uint64_t mElemLenOrVal
mElemTag
uint64_t mElemTag
mLenRead
uint32_t mLenRead
mMaxLen
uint32_t mMaxLen
mReadPoint
const uint8_t * mReadPoint
Funções públicas
CloseContainer
WEAVE_ERROR CloseContainer( TLVReader & containerReader )
Completa a leitura de um TLV recipiente após uma chamada para OpenContainer () .
O CloseContainer () método restaura o estado de um dos paisTLVReader 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 leitor recipiente para ambos os métodos.
Quando CloseContainer () retorna, o leitor principal está posicionado imediatamente antes do primeiro elemento que segue o recipiente. A partir deste ponto, uma aplicação pode utilizar o seguinte () método para o avanço através de quaisquer elementos restantes.
Os aplicativos podem chamar perto CloseContainer () em um leitor de pai a qualquer momento, independentemente de todos os elementos no recipiente subjacente foram lidas. Depois CloseContainer () foi chamado, o aplicativo deve considerar o leitor recipiente 'de-inicializado' e não deve usá-lo ainda mais, sem re inicializando-lo.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
DupBytes
WEAVE_ERROR DupBytes( uint8_t *& buf, uint32_t & dataLen )
Aloca e retorna um buffer contendo o valor do byte atual ou string UTF8.
Este método cria um buffer e retorna uma cópia dos dados associados ao byte ou elemento de string UTF-8 na posição atual. A memória para o buffer é obtida com malloc () e deve ser liberada com free () pelo responsável pela chamada quando não for mais necessária.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
DupString
WEAVE_ERROR DupString( char *& buf )
Aloca e retorna um buffer contendo o valor terminado em nulo do byte atual ou string UTF8.
Este método cria um buffer e retorna uma cópia terminada em nulo dos dados associados ao byte ou elemento de string UTF-8 na posição atual. A memória para o buffer é obtida com malloc () e deve ser liberada com free () pelo responsável pela chamada quando não for mais necessária.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
EnterContainer
WEAVE_ERROR EnterContainer( TLVType & outerContainerType )
Prepara umTLVReader objeto para ler os membros do TLV elemento recipiente.
O EnterContainer () método prepara-se o atualTLVReader objecto para começar a ler os elementos de membro de uma TLV recipiente (uma estrutura, de matriz ou de caminho). Para cada chamada para EnterContainer () aplicações deve fazer uma chamada correspondente a ExitContainer () .
Quando EnterContainer () é chamado oTLVReader objecto tem de ser posicionado no elemento de recipiente a ser lido. O método toma como argumento uma referência a um valor TLVType que será usado para salvar o contexto do leitor enquanto ele está lendo o contêiner.
Quando os EnterContainer () método retorna, o leitor está posicionado imediatamente antes do primeiro membro do recipiente. Repetidamente chamando Next () vai avançar o leitor através dos membros da coleção até o fim é alcançado, altura em que o leitor irá retornar WEAVE_END_OF_TLV.
Uma vez que o pedido tenha terminado de ler um recipiente que pode continuar lendo os elementos após o contêiner chamando o ExitContainer () método.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
ExitContainer
WEAVE_ERROR ExitContainer( TLVType outerContainerType )
Completa a leitura de um TLV recipiente e prepara umTLVReader objeto para ler elementos após o recipiente.
O ExitContainer () método restaura o estado de umTLVReader objecto após uma chamada para EnterContainer () . Para cada chamada para EnterContainer () aplicações deve fazer uma chamada correspondente a ExitContainer () , passando o valor de contexto retornado pelo EnterContainer () método.
Quando ExitContainer () retorna, o leitor está posicionado imediatamente antes do primeiro elemento que segue o recipiente. A partir deste ponto, uma aplicação pode utilizar o seguinte () método para o avanço através de quaisquer elementos restantes.
Uma vez EnterContainer () foi chamado, os aplicativos podem chamar ExitContainer () em um leitor em qualquer ponto no tempo, independentemente de todos os elementos no recipiente subjacente foram lidas.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
Obter
WEAVE_ERROR Get( bool & v )
Obtenha o valor do elemento atual como um tipo bool.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
Obter
WEAVE_ERROR Get( int8_t & v )
Obtenha o valor do elemento atual como um inteiro assinado de 8 bits.
Se o valor inteiro codificado for maior do que o tipo de dados de saída, o valor resultante será truncado.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
Obter
WEAVE_ERROR Get( int16_t & v )
Obtenha o valor do elemento atual como um inteiro assinado de 16 bits.
Se o valor inteiro codificado for maior do que o tipo de dados de saída, o valor resultante será truncado.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
Obter
WEAVE_ERROR Get( int32_t & v )
Obtenha o valor do elemento atual como um inteiro assinado de 32 bits.
Se o valor inteiro codificado for maior do que o tipo de dados de saída, o valor resultante será truncado.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
Obter
WEAVE_ERROR Get( int64_t & v )
Obtenha o valor do elemento atual como um inteiro assinado de 64 bits.
Se o valor inteiro codificado for maior do que o tipo de dados de saída, o valor resultante será truncado.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
Obter
WEAVE_ERROR Get( uint8_t & v )
Obtenha o valor do elemento atual como um inteiro sem sinal de 8 bits.
Se o valor inteiro codificado for maior do que o tipo de dados de saída, o valor resultante será truncado. Da mesma forma, se o valor inteiro codificado for negativo, o valor será convertido para sem sinal.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
Obter
WEAVE_ERROR Get( uint16_t & v )
Obtenha o valor do elemento atual como um inteiro sem sinal de 16 bits.
Se o valor inteiro codificado for maior do que o tipo de dados de saída, o valor resultante será truncado. Da mesma forma, se o valor inteiro codificado for negativo, o valor será convertido para sem sinal.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
Obter
WEAVE_ERROR Get( uint32_t & v )
Obtenha o valor do elemento atual como um inteiro não assinado de 32 bits.
Se o valor inteiro codificado for maior do que o tipo de dados de saída, o valor resultante será truncado. Da mesma forma, se o valor inteiro codificado for negativo, o valor será convertido para sem sinal.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
Obter
WEAVE_ERROR Get( uint64_t & v )
Obtenha o valor do elemento atual como um inteiro não assinado de 64 bits.
Se o valor inteiro codificado for negativo, o valor será convertido para sem sinal.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
Obter
WEAVE_ERROR Get( float & v )
Obter
WEAVE_ERROR Get( double & v )
Obtenha o valor do elemento atual como um número de ponto flutuante de precisão dupla.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
GetBufHandle
uintptr_t GetBufHandle( void ) const
GetBytes
WEAVE_ERROR GetBytes( uint8_t *buf, uint32_t bufSize )
Obtenha o valor do byte atual ou elemento de string UTF8.
Para determinar o tamanho do buffer de entrada necessário, chamar o GetLength () método antes de chamar GetBytes () .
Detalhes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||
Valores Retornados |
|
GetContainerType
TLVType GetContainerType( void ) const
Retorna o tipo do recipiente dentro do qual oTLVReader está lendo atualmente.
O GetContainerType () retorna o tipo do TLV recipiente dentro do qual aTLVReader é a leitura. Se oTLVReader está posicionado ao nível mais externa de um TLV de codificação (ou seja, antes, em ou depois de o-mais exterior TLV elemento), o método irá retornar kTLVType_NotSpecified.
Detalhes | |
---|---|
Devoluções | O TLVType do recipiente corrente, ou se o kTLVType_NotSpecifiedTLVReader não está posicionada dentro de um recipiente. |
GetControlByte
uint16_t GetControlByte( void ) const
Retorna o byte de controle associado com o atual TLV elemento.
Idealmente, ninguém precisa de saber sobre o byte de controle e só a implementação interna do TLV deve ter acesso a ele. Mas, no entanto, de acesso para o byte de controlo é útil para fins de depuração pelo TLV de depuração Utilidades (que tentativa para descodificar o byte de controle etiqueta quando muito imprimir o TLV tampão conteúdos).
Detalhes | |
---|---|
Devoluções | Um inteiro sem sinal contendo o byte de controle associada com a corrente TLV elemento. kTLVControlByte_NotSpecified é devolvido se o leitor não é posicionado sobre um elemento. |
GetDataPtr
WEAVE_ERROR GetDataPtr( const uint8_t *& data )
Obter um ponteiro para o byte codificado inicial de um TLV byte ou UTF8 elemento cadeia.
Este método retorna um ponteiro direto do valor da string codificada dentro do buffer de entrada subjacente. Para ter sucesso, o método requer que todo o valor da string esteja presente em um único buffer. Caso contrário, o método retorna WEAVE_ERROR_TLV_UNDERRUN . Isso torna o método de uso limitado ao ler dados de vários buffers descontíguos.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||
Valores Retornados |
|
GetLength
uint32_t GetLength( void ) const
Retorna o comprimento de dados associados com o atual TLV elemento.
O comprimento dos dados só se aplica a elementos do tipo string UTF8 ou string de bytes. Para strings UTF8, o valor retornado é o número de bytes na string, não o número de caracteres.
Detalhes | |
---|---|
Devoluções | O comprimento (em bytes) de dados associados com a actual TLV elemento, ou 0 se o elemento de corrente não é uma cadeia de cadeia UTF-8 ou bytes, ou quando o leitor não estiver posicionado em um elemento. |
GetLengthRead
uint32_t GetLengthRead( void ) const
Retorna o número total de bytes lidos desde que o leitor foi inicializado.
Detalhes | |
---|---|
Devoluções | Número total de bytes lidos desde que o leitor foi inicializado. |
GetReadPoint
const uint8_t * GetReadPoint( void ) const
Obtém o ponto no buffer de entrada subjacente que corresponde à posição atual do leitor.
Detalhes | |
---|---|
Devoluções | Um ponteiro para o buffer de entrada subjacente que corresponde à posição atual do leitor. |
GetRemainingLength
uint32_t GetRemainingLength( void ) const
Retorna o número total de bytes que podem ser lidos até que o comprimento máximo de leitura seja alcançado.
Detalhes | |
---|---|
Devoluções | Número total de bytes que podem ser lidos até que o comprimento máximo de leitura seja alcançado. |
GetString
WEAVE_ERROR GetString( char *buf, uint32_t bufSize )
Obtenha o valor do byte atual ou elemento de string UTF8 como uma string terminada em nulo.
Para determinar o tamanho do buffer de entrada necessário, chamar o GetLength () método antes de chamar GetBytes () . O buffer de entrada deve ser pelo menos um byte maior que o comprimento da string para acomodar o caractere nulo.
Detalhes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||
Valores Retornados |
|
GetTag
uint64_t GetTag( void ) const
Retorna a tag associada a atual TLV elemento.
O valor devolvido por gettag () pode ser usado com as funções utilitárias tag ( IsProfileTag () , IsContextTag () , ProfileIdFromTag () , etc.) para determinar o tipo de etiqueta e para extrair vários valores de campo de etiqueta.
Detalhes | |
---|---|
Devoluções | Um inteiro sem sinal contendo informação sobre a etiqueta associada com o actual TLV elemento. |
GetType
TLVType GetType( void ) const
Iniciar
void Init( const TLVReader & aReader )
Iniciar
void Init( const uint8_t *data, uint32_t dataLen )
Iniciar
void Init( PacketBuffer *buf, uint32_t maxLen )
Inicializa umTLVReader objeto para ler a partir de um único PacketBuffer.
A análise começa na posição inicial do buffer (buf-> DataStart ()) e continua até o final dos dados no buffer (conforme denotado por buf-> Datalen ()), ou os bytes maxLen foram analisados.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
Iniciar
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Inicializa umTLVReader objeto para ler a partir de um ou mais PacketBuffers.
A análise começa na posição inicial do buffer inicial (buf-> DataStart ()). Se allowDiscontiguousBuffers é verdade, o leitor vai avançar através da cadeia de buffers ligados por suas next () ponteiros. A análise continua até que todos os dados na cadeia de buffer tenham sido consumidos (conforme denotado por buf-> Datalen ()), ou maxLen bytes tenham sido analisados.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
Próximo
WEAVE_ERROR Next( void )
Avanços doTLVReader objeto para o próximo TLV elemento a ser lido.
Os Próximo () as posições do método do objecto leitor no elemento seguinte, em um TLV codificando que reside no mesmo contexto de contenção. Em particular, se o leitor está posicionado ao nível mais externa de uma TLV codificação, chamando Próximo () irá avançar o leitor para o próximo, mais alto elemento. Se o leitor está posicionado dentro de um TLV elemento de recipiente (uma estrutura, matriz ou caminho), chamando Próximo () irá avançar o leitor para o próximo elemento de membro do recipiente.
Desde Próximo () constrange leitor de movimento para o contexto de contenção corrente, chamando Próximo () quando o leitor está posicionado sobre um elemento de recipiente irá avançar ao longo do recipiente, ignorando os seus elementos de membro (e os membros de quaisquer recipientes aninhados) até que atinge o primeiro elemento após o contêiner.
Quando não há mais elementos dentro de um contexto de confinamento, a seguinte () método retornará uma WEAVE_END_OF_TLV erro e a posição do leitor permanecerá inalterada.
Detalhes | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Valores Retornados |
|
Próximo
WEAVE_ERROR Next( TLVType expectedType, uint64_t expectedTag )
Avanços doTLVReader objeto para o próximo TLV elemento a ser lido, afirmando o tipo ea marca do novo elemento.
O Next (TLVType expectedType, uint64_t expectedTag) método é um método de conveniência que tem o mesmo comportamento como Next () , mas também verifica se o tipo ea marca do novo TLV elemento correspondem os argumentos fornecidos.
Detalhes | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||||||
Valores Retornados |
|
OpenContainer
WEAVE_ERROR OpenContainer( TLVReader & containerReader )
Inicializa uma novaTLVReader objeto para ler os membros de um TLV elemento recipiente.
O OpenContainer () método inicializa uma novaTLVReader objecto para a leitura dos elementos de membro de uma TLV recipiente (uma estrutura, de matriz ou de caminho). Quando OpenContainer () é chamado, o actualTLVReader objecto tem de ser posicionado no elemento de recipiente a ser lido. O método tem como único argumento uma referência a um novo leitor que será inicializado para ler o contêiner. Este leitor é conhecido como o leitor recipiente enquanto o leitor sobre a qual OpenContainer () é chamado é conhecido como o leitor-mãe.
Quando os OpenContainer () método retorna, o leitor recipiente é posicionado imediatamente antes do primeiro membro do recipiente. Chamando Next () no leitor recipiente irá avançar através dos membros da coleção até o fim é alcançado, altura em que o leitor irá retornar WEAVE_END_OF_TLV.
Enquanto o leitor de contêiner estiver aberto, os aplicativos não devem fazer chamadas ou alterar o estado do leitor pai. Depois que um aplicativo tiver terminado de usar o leitor recipiente que deve fechá-lo chamando CloseContainer () no leitor pai, passando o leitor recipiente como um argumento. Os aplicativos podem fechar o leitor de contêiner a qualquer momento, com ou sem ler todos os elementos contidos no contêiner subjacente. Depois que o leitor de contêiner é fechado, os aplicativos podem continuar a usar o leitor pai.
O leitor de contêiner herda várias propriedades de configuração do leitor pai. Estes são:
- O id de perfil implícito (ImplicitProfileId)
- O ponteiro de dados do aplicativo (AppData)
- O ponteiro de função GetNextBuffer
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
Pular
WEAVE_ERROR Skip( void )
Avança oTLVReader objeto para imediatamente após a corrente TLV elemento.
Os Ir () as posições do método do objecto leitor imediatamente após a corrente TLV elemento, de tal modo que uma chamada subsequente a seguir () irá avançar o leitor para o elemento seguinte. Como Next () , se o leitor está posicionado em um elemento de recipiente no momento da chamada, os membros do recipiente será ignorado. Se o leitor não estiver posicionado em nenhum elemento, sua posição permanece inalterada.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Valores Retornados |
|
VerifyEndOfContainer
WEAVE_ERROR VerifyEndOfContainer( void )
Verifica se o objecto TVLReader é no final de um TLV recipiente.
Os VerifyEndOfContainer () verifica método que não há mais TLV elementos a ser lidos dentro da corrente TLV recipiente. Este é um método de conveniência que é equivalente a chamar Next () e verificação de um valor de retorno de WEAVE_END_OF_TLV.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Valores Retornados |
|
Funções protegidas
ClearElementState
void ClearElementState( void )
ElementType
TLVElementType ElementType( void ) const
This is a private method that returns the TLVElementType from mControlByte.
EnsureData
WEAVE_ERROR EnsureData( WEAVE_ERROR noDataErr )
GetElementHeadLength
WEAVE_ERROR GetElementHeadLength( uint8_t & elemHeadBytes ) const
This is a private method used to compute the length of a TLV element head.
IsContainerOpen
bool IsContainerOpen( void ) const
ReadData
WEAVE_ERROR ReadData( uint8_t *buf, uint32_t len )
ReadElement
WEAVE_ERROR ReadElement( void )
ReadTag
uint64_t ReadTag( TLVTagControl tagControl, const uint8_t *& p )
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
SkipData
WEAVE_ERROR SkipData( void )
Skip any data contained in the current TLV by reading over it without a destination buffer.
Detalhes | |||||
---|---|---|---|---|---|
Valores Retornados |
|
SkipToEndOfContainer
WEAVE_ERROR SkipToEndOfContainer( void )
VerifyElement
WEAVE_ERROR VerifyElement( void )
Protected static functions
FailGetNextBuffer
WEAVE_ERROR FailGetNextBuffer( TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen )
GetNextPacketBuffer
WEAVE_ERROR GetNextPacketBuffer( TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen )