En Google, luchamos por la equidad racial de la comunidad negra. Más información

nl :: Tejido:: TLV :: TLVReader

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

Proporciona un programa de análisis eficiente de memoria para los datos codificados en la armadura de TLV formato.

Resumen

TLVReader implementa un sólo avance, analizador “estilo pull” para la armadura de TLV de datos. ElTLVReader objeto opera como un cursor que puede ser utilizado para iterar sobre una secuencia de TLV elementos e interpretar sus contenidos. Cuando está colocado sobre un elemento, las aplicaciones pueden realizar llamadas a los del lector get () métodos para consultar el tipo y la etiqueta del elemento actual, y para extraer cualquier valor asociado. Del lector siguiente () método se utiliza para avance de elemento a elemento.

ATLVReader objeto siempre se coloca ya sea antes, en o después de un TLV elemento. Cuando se inicializa primero, unTLVReader se coloca inmediatamente antes del primer elemento de la codificación. Para comenzar a leer, una aplicación debe realizar una llamada inicial a la siguiente () método para situar al lector en el primer elemento. Cuando un elemento de contenedor es encounteredeither una estructura, una matriz o un paththe OpenContainer () o EnterContainer () métodos se pueden utilizar para iterar a través de los contenidos del recipiente.

Cuando el lector llega al final de un TLV de codificación, o el último elemento dentro de un recipiente, que las señales de la aplicación mediante la devolución de un error WEAVE_END_OF_TLV de la siguiente () método. El lector a seguir para volver WEAVE_END_OF_TLV hasta que se reinicializa, o se sale del contenedor actual (a través de CloseContainer () / ExitContainer () ).

ATLVReader objeto puede analizar los datos directamente desde una memoria intermedia de entrada fija, o de una cadena de uno o más PacketBuffers. Además, las aplicaciones pueden suministrar una GetNextBuffer función a los datos de alimentación al lector de una fuente arbitraria, por ejemplo una toma de corriente o un puerto serie.

Herencia

Subclases conocidas directas:
  nl :: Weave :: Perfiles :: 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 (*
Una función que se puede utilizar para recuperar adicionales TLV de datos para ser analizada.

Atributos públicos

AppData
void *
Un campo de puntero que se puede utilizar para datos específicos de la aplicación.
GetNextBuffer
Un puntero a una función que va a producir datos de entrada para elTLVReader objeto.
ImplicitProfileId
uint32_t
El ID de perfil que se utilizará para las etiquetas 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 *

Funciones publicas

CloseContainer (TLVReader & containerReader)
Completa la lectura de un TLV contenedor después de una llamada a OpenContainer () .
DupBytes (uint8_t *& buf, uint32_t & dataLen)
Asigna y devuelve un búfer que contiene el valor del byte actual o cadena UTF8.
DupString (char *& buf)
Asigna y devuelve un búfer que contiene el valor terminado en nulo del byte actual o cadena UTF8.
EnterContainer ( TLVType & outerContainerType)
Prepara unaTLVReader objeto para la lectura de los miembros de TLV elemento contenedor.
ExitContainer ( TLVType outerContainerType)
Completa la lectura de un TLV de contenedores y prepara unTLVReader objeto para leer elementos después el contenedor.
Get (bool & v)
Obtiene el valor del elemento actual como un tipo bool.
Get (int8_t & v)
Obtenga el valor del elemento actual como un entero de 8 bits con signo.
Get (int16_t & v)
Obtenga el valor del elemento actual como un entero de 16 bits con signo.
Get (int32_t & v)
Obtenga el valor del elemento actual como un entero de 32 bits con signo.
Get (int64_t & v)
Obtenga el valor del elemento actual como un entero de 64 bits con signo.
Get (uint8_t & v)
Obtenga el valor del elemento actual como un entero sin signo de 8 bits.
Get (uint16_t & v)
Obtenga el valor del elemento actual como un entero sin signo de 16 bits.
Get (uint32_t & v)
Obtenga el valor del elemento actual como un entero sin signo de 32 bits.
Get (uint64_t & v)
Obtenga el valor del elemento actual como un entero sin signo de 64 bits.
Get (float & v)
Get (double & v)
Obtenga el valor del elemento actual como un número de punto flotante de doble precisión.
GetBufHandle (void) const
uintptr_t
GetBytes (uint8_t *buf, uint32_t bufSize)
Obtiene el valor del byte actual o del elemento de cadena UTF8.
GetContainerType (void) const
Devuelve el tipo del contenedor dentro del cual elTLVReader está leyendo actualmente.
GetControlByte (void) const
uint16_t
Devuelve el byte de control asociado con la corriente TLV elemento.
GetDataPtr (const uint8_t *& data)
Obtener un puntero al byte codificada inicial de un TLV de bytes o elemento de cadena UTF8.
GetLength (void) const
uint32_t
Devuelve la longitud de los datos asociados a la actual TLV elemento.
GetLengthRead (void) const
uint32_t
Devuelve el número total de bytes leídos desde que se inicializó el lector.
GetReadPoint (void) const
const uint8_t *
Obtiene el punto en el búfer de entrada subyacente que corresponde a la posición actual del lector.
GetRemainingLength (void) const
uint32_t
Devuelve el número total de bytes que se pueden leer hasta que se alcanza la longitud máxima de lectura.
GetString (char *buf, uint32_t bufSize)
Obtenga el valor del byte actual o del elemento de cadena UTF8 como una cadena terminada en nulo.
GetTag (void) const
uint64_t
Devuelve la etiqueta asociada con la corriente TLV elemento.
GetType (void) const
Devuelve el tipo de la corriente TLV elemento.
Init (constTLVReader & aReader)
void
Inicializa unaTLVReader objeto de otroTLVReader objeto.
Init (const uint8_t *data, uint32_t dataLen)
void
Inicializa unaTLVReader objeto para leer desde una única memoria intermedia de entrada.
Init ( PacketBuffer *buf, uint32_t maxLen)
void
Inicializa unaTLVReader objeto para leer desde una única PacketBuffer.
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Inicializa unaTLVReader objeto de leer a uno o más PacketBuffers.
Next (void)
Los avances de laTLVReader objeto al siguiente TLV elemento a ser leídos.
Next ( TLVType expectedType, uint64_t expectedTag)
Los avances de laTLVReader objeto al siguiente TLV elemento a ser leídos, afirmando el tipo y la etiqueta del nuevo elemento.
OpenContainer (TLVReader & containerReader)
Inicializa una nuevaTLVReader objeto para la lectura de los miembros de un TLV elemento contenedor.
Skip (void)
Avanza elTLVReader objeto que inmediatamente después de la corriente TLV elemento.
VerifyEndOfContainer (void)
Verifica que el objeto TVLReader está en el extremo de un TLV recipiente.

Funciones protegidas

ClearElementState (void)
void
Borrar el estado de laTLVReader .
ElementType (void) const
TLVElementType
Este es un método privado que devuelve TLVElementType de mControlByte.
EnsureData ( WEAVE_ERROR noDataErr)
GetElementHeadLength (uint8_t & elemHeadBytes) const
Este es un método privada utilizada para calcular la longitud de un TLV cabeza de 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)
Saltar todos los datos contenidos en la corriente TLV leyendo sobre ella sin búfer de destino.
SkipToEndOfContainer (void)
VerifyElement (void)

Funciones 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)

Una función que se puede utilizar para recuperar adicionales TLV de datos para ser analizada.

Funciones de este tipo se utilizan para datos de entrada de alimentación a unTLVReader . Cuando se llama, se espera que la función produzca datos adicionales para que el lector los analice o le indique que no hay más datos disponibles.

Detalles
Parámetros
[in] reader
Una referencia a laTLVReader objeto que está solicitando datos de entrada.
[in,out] bufHandle
Una referencia a un valor uintptr_t que la función puede usar para almacenar datos de contexto entre llamadas. Este valor se inicializa a 0 antes de la primera llamada.
[in,out] bufStart
Una referencia a un puntero de datos. En la entrada a la función, bufStart apunta a un byte más allá del último TLV byte de datos consumidos por el lector. A la salida, se espera que bufStart a punto para el primer byte de nuevos TLV de datos para ser analizada. El nuevo valor del puntero puede estar dentro del mismo búfer que los datos consumidos anteriormente o puede apuntar a un búfer completamente nuevo.
[out] bufLen
Una referencia a un entero sin signo de que la función debe fijar al número de TLV de bytes que se devuelven datos. Si el final de la entrada TLV se ha alcanzado de datos, la función debe establecer este valor en 0.
Valores devueltos
WEAVE_NO_ERROR
Si la función producido con éxito más TLV de datos, o al final de los datos de entrada se alcanzó ( bufLen debe establecerse en 0 en este caso).
other
Otros códigos de error de Weave o específicos de la plataforma que indican que se produjo un error que impidió que la función produjera los datos solicitados.

Atributos públicos

Datos de aplicación

void * AppData

Un campo de puntero que se puede utilizar para datos específicos de la aplicación.

GetNextBuffer

GetNextBufferFunct GetNextBuffer

Un puntero a una función que va a producir datos de entrada para elTLVReader objeto.

Si se establece en NULL (el valor predeterminado), el lector asumirá que no hay más datos de entrada disponibles.

GetNextBuffer puede configurarse mediante una aplicación en cualquier momento, pero normalmente se configura cuando se inicializa el lector.

Consulte la definición de tipo GetNextBufferFunct para obtener información adicional sobre la implementación de una función GetNextBuffer.

ImplicitProfileId

uint32_t ImplicitProfileId

El ID de perfil que se utilizará para las etiquetas de perfil codificadas de forma implícita.

Cuando el lector se encuentra con un marcador de perfil específico que se ha codificado en forma implícita, se utiliza el valor de la ImplicitProfileId propiedad como el ID de perfil asumido para la etiqueta.

Por defecto, el ImplicitProfileId propiedad se establece en kProfileIdNotSpecified. Al decodificar TLV que contiene etiquetas codificadas implícitamente-, las aplicaciones deben establecer ImplicitProfileId antes de leer cualquier TLV elementos que tienen tales etiquetas. El ID de perfil apropiado generalmente depende del contexto de la aplicación o el protocolo que se está hablando.

Si se encuentra una etiqueta codificada implícitamente mientras ImplicitProfileId se establece en kProfileIdNotSpecified, el lector devolverá un WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG error.

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

Funciones publicas

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVReader & containerReader
)

Completa la lectura de un TLV contenedor después de una llamada a OpenContainer () .

El CloseContainer () método restaura el estado de uno de los padresTLVReader objeto después de una llamada a OpenContainer () . Para cada llamada a OpenContainer () aplicaciones deben hacer una llamada correspondiente a CloseContainer () , pasando una referencia al mismo lector recipiente para ambos métodos.

Cuando CloseContainer () devoluciones, el lector de matriz se coloca inmediatamente antes del primer elemento que sigue el recipiente. Desde este punto una aplicación puede utilizar la siguiente () método para avance a través de los elementos restantes.

Las aplicaciones pueden llamar estrecha CloseContainer () en un lector de matriz en cualquier punto en el tiempo, independientemente de si todos los elementos en el contenedor subyacente han sido leídos. Después CloseContainer () ha sido llamada, la aplicación debe tener en cuenta el lector contenedor 'de-inicializado' y no debe utilizarlo posteriormente sin re-inicializarlo.

Detalles
Parámetros
[in] containerReader
Una referencia a laTLVReader objeto que se suministra a la OpenContainer () método.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_INCORRECT_STATE
Si OpenContainer () no ha sido llamado en el lector, o si el lector contenedor no coincide con el que se pasa al OpenContainer () método.
WEAVE_ERROR_TLV_UNDERRUN
Si el subyacente TLV codifican terminó prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el lector encuentra un válido o no admitido TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Si el lector se encontró con un TLV de etiqueta en un contexto no válido.
other
Otros armadura o error plataforma de códigos devueltos por el configurada GetNextBuffer () la función. Solo es posible cuando GetNextBuffer no es NULL.

DupBytes

WEAVE_ERROR DupBytes(
  uint8_t *& buf,
  uint32_t & dataLen
)

Asigna y devuelve un búfer que contiene el valor del byte actual o cadena UTF8.

Este método crea un búfer y devuelve una copia de los datos asociados con el byte o el elemento de cadena UTF-8 en la posición actual. La memoria para el búfer se obtiene con malloc () y la persona que llama debe liberarla con free () cuando ya no se necesite.

Detalles
Parámetros
[out] buf
Una referencia a un puntero a la que un búfer de memoria dinámica asignada de dataLen se le asignará bytes en caso de éxito.
[out] dataLen
Una referencia al almacenamiento para el tamaño, en bytes, de buf en caso de éxito.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV de bytes o UTF8 cadena, o el lector no está colocado sobre un elemento.
WEAVE_ERROR_NO_MEMORY
Si no se puede asignar memoria para el búfer de salida.
WEAVE_ERROR_TLV_UNDERRUN
Si el subyacente TLV codifican terminó prematuramente.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Si la plataforma de destino no admite malloc () y free ().
other
Otros armadura o error plataforma de códigos devueltos por el configurada GetNextBuffer () la función. Solo es posible cuando GetNextBuffer no es NULL.

DupString

WEAVE_ERROR DupString(
  char *& buf
)

Asigna y devuelve un búfer que contiene el valor terminado en nulo del byte actual o cadena UTF8.

Este método crea un búfer y devuelve una copia terminada en nulo de los datos asociados con el byte o el elemento de cadena UTF-8 en la posición actual. La memoria para el búfer se obtiene con malloc () y la persona que llama debe liberarla con free () cuando ya no se necesite.

Detalles
Parámetros
[out] buf
Una referencia a un puntero al que se asignará un búfer asignado al montón en caso de éxito.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV de bytes o UTF8 cadena, o el lector no está colocado sobre un elemento.
WEAVE_ERROR_NO_MEMORY
Si no se pudo asignar memoria para el búfer de salida.
WEAVE_ERROR_TLV_UNDERRUN
Si el subyacente TLV codifican terminó prematuramente.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Si la plataforma de destino no admite malloc () y free ().
other
Otros armadura o error plataforma de códigos devueltos por el configurada GetNextBuffer () la función. Solo es posible cuando GetNextBuffer no es NULL.

Entrar Contenedor

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

Prepara unaTLVReader objeto para la lectura de los miembros de TLV elemento contenedor.

El EnterContainer () método se prepara la corrienteTLVReader objeto de comenzar la lectura de los elementos de miembro de un TLV recipiente (una estructura, matriz o PATH). Para cada llamada a EnterContainer () aplicaciones deben hacer una llamada correspondiente a ExitContainer () .

Cuando EnterContainer () se llama laTLVReader objeto debe ser posicionado sobre el elemento de contenedor para ser leído. El método toma como argumento una referencia a un valor TLVType que se utilizará para guardar el contexto del lector mientras lee el contenedor.

Cuando los EnterContainer () devuelve el método, el lector se coloca inmediatamente antes de la primera miembro del recipiente. En varias ocasiones llamando siguiente () avanzará al lector a través de los miembros de la colección hasta que se alcanza el final, momento en el que el lector volverá WEAVE_END_OF_TLV.

Una vez que la aplicación ha terminado de leer un recipiente que puede seguir leyendo los elementos después de que el contenedor llamando a la ExitContainer () método.

Detalles
Parámetros
[out] outerContainerType
Una referencia a un valor TLVType que recibirá el contexto del lector.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_INCORRECT_STATE
Si el elemento actual no está posicionado en un elemento contenedor.

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

Completa la lectura de un TLV de contenedores y prepara unTLVReader objeto para leer elementos después el contenedor.

El ExitContainer () método restaura el estado de unTLVReader objeto después de una llamada a EnterContainer () . Para cada llamada a EnterContainer () aplicaciones deben hacer una llamada correspondiente a ExitContainer () , pasando el valor devuelto por el contexto EnterContainer () método.

Cuando ExitContainer () los rendimientos, el lector se coloca inmediatamente antes del primer elemento que sigue el recipiente. Desde este punto una aplicación puede utilizar la siguiente () método para avance a través de los elementos restantes.

Una vez EnterContainer () ha sido llamado, las aplicaciones pueden llamar ExitContainer () en un lector en cualquier punto en el tiempo, independientemente de si todos los elementos en el contenedor subyacente han sido leídos.

Detalles
Parámetros
[in] outerContainerType
El valor TLVType que fue devuelto por el EnterContainer () método.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_INCORRECT_STATE
Si OpenContainer () no ha sido llamado en el lector, o si el lector contenedor no coincide con el que se pasa al OpenContainer () método.
WEAVE_ERROR_TLV_UNDERRUN
Si el subyacente TLV codifican terminó prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el lector encuentra un válido o no admitido TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Si el lector se encontró con un TLV de etiqueta en un contexto no válido.
other
Otros armadura o error plataforma de códigos devueltos por el configurada GetNextBuffer () la función. Solo es posible cuando GetNextBuffer no es NULL.

Obtener

WEAVE_ERROR Get(
  bool & v
)

Obtiene el valor del elemento actual como un tipo bool.

Detalles
Parámetros
[out] v
Recibe el valor asociado con la corriente TLV elemento.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV tipo booleano, o el lector no está posicionado sobre un elemento.

Obtener

WEAVE_ERROR Get(
  int8_t & v
)

Obtenga el valor del elemento actual como un entero de 8 bits con signo.

Si el valor entero codificado es mayor que el tipo de datos de salida, el valor resultante se truncará.

Detalles
Parámetros
[out] v
Recibe el valor asociado con la corriente TLV elemento.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV tipo entero (con o sin signo), o el lector no está posicionado sobre un elemento.

Obtener

WEAVE_ERROR Get(
  int16_t & v
)

Obtenga el valor del elemento actual como un entero de 16 bits con signo.

Si el valor entero codificado es mayor que el tipo de datos de salida, el valor resultante se truncará.

Detalles
Parámetros
[out] v
Recibe el valor asociado con la corriente TLV elemento.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV tipo entero (con o sin signo), o el lector no está posicionado sobre un elemento.

Obtener

WEAVE_ERROR Get(
  int32_t & v
)

Obtenga el valor del elemento actual como un entero de 32 bits con signo.

Si el valor entero codificado es mayor que el tipo de datos de salida, el valor resultante se truncará.

Detalles
Parámetros
[out] v
Recibe el valor asociado con la corriente TLV elemento.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV tipo entero (con o sin signo), o el lector no está posicionado sobre un elemento.

Obtener

WEAVE_ERROR Get(
  int64_t & v
)

Obtenga el valor del elemento actual como un entero de 64 bits con signo.

Si el valor entero codificado es mayor que el tipo de datos de salida, el valor resultante se truncará.

Detalles
Parámetros
[out] v
Recibe el valor asociado con la corriente TLV elemento.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV tipo entero (con o sin signo), o el lector no está posicionado sobre un elemento.

Obtener

WEAVE_ERROR Get(
  uint8_t & v
)

Obtenga el valor del elemento actual como un entero sin signo de 8 bits.

Si el valor entero codificado es mayor que el tipo de datos de salida, el valor resultante se truncará. De manera similar, si el valor entero codificado es negativo, el valor se convertirá a sin signo.

Detalles
Parámetros
[out] v
Recibe el valor asociado con la corriente TLV elemento.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV tipo entero (con o sin signo), o el lector no está posicionado sobre un elemento.

Obtener

WEAVE_ERROR Get(
  uint16_t & v
)

Obtenga el valor del elemento actual como un entero sin signo de 16 bits.

Si el valor entero codificado es mayor que el tipo de datos de salida, el valor resultante se truncará. De manera similar, si el valor entero codificado es negativo, el valor se convertirá a sin signo.

Detalles
Parámetros
[out] v
Recibe el valor asociado con la corriente TLV elemento.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV tipo entero (con o sin signo), o el lector no está posicionado sobre un elemento.

Obtener

WEAVE_ERROR Get(
  uint32_t & v
)

Obtenga el valor del elemento actual como un entero sin signo de 32 bits.

Si el valor entero codificado es mayor que el tipo de datos de salida, el valor resultante se truncará. De manera similar, si el valor entero codificado es negativo, el valor se convertirá a sin signo.

Detalles
Parámetros
[out] v
Recibe el valor asociado con la corriente TLV elemento.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV tipo entero (con o sin signo), o el lector no está posicionado sobre un elemento.

Obtener

WEAVE_ERROR Get(
  uint64_t & v
)

Obtenga el valor del elemento actual como un entero sin signo de 64 bits.

Si el valor entero codificado es negativo, el valor se convertirá a sin signo.

Detalles
Parámetros
[out] v
Recibe el valor asociado con la corriente TLV elemento.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV tipo entero (con o sin signo), o el lector no está posicionado sobre un elemento.

Obtener

WEAVE_ERROR Get(
  float & v
)

Obtener

WEAVE_ERROR Get(
  double & v
)

Obtenga el valor del elemento actual como un número de punto flotante de doble precisión.

Detalles
Parámetros
[out] v
Recibe el valor asociado con la corriente TLV elemento.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV tipo de punto flotante, o el lector no está posicionado sobre un elemento.

GetBufHandle

uintptr_t GetBufHandle(
  void
) const 

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

Obtiene el valor del byte actual o del elemento de cadena UTF8.

Para determinar el tamaño del búfer de entrada necesaria, llame a la GetLength () método antes de llamar GetBytes () .

Detalles
Parámetros
[in] buf
Un puntero a un búfer para recibir los datos de la cadena.
[in] bufSize
El tamaño en bytes de la memoria intermedia a la que apunta buf .
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV de bytes o UTF8 cadena, o el lector no está colocado sobre un elemento.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si el búfer proporcionado es demasiado pequeño para contener los datos asociados con el elemento actual.
WEAVE_ERROR_TLV_UNDERRUN
Si el subyacente TLV codifican terminó prematuramente.
other
Otros armadura o error plataforma de códigos devueltos por el configurada GetNextBuffer () la función. Solo es posible cuando GetNextBuffer no es NULL.

GetContainerType

TLVType GetContainerType(
  void
) const 

Devuelve el tipo del contenedor dentro del cual elTLVReader está leyendo actualmente.

El GetContainerType () método devuelve el tipo de la TLV recipiente dentro del cual elTLVReader está leyendo. Si elTLVReader está posicionado en el nivel-exterior más de un TLV de codificación (es decir, antes, en o después de la más exterior- TLV elemento), el método volverá kTLVType_NotSpecified.

Detalles
Devoluciones
El TLVType del contenedor actual, o kTLVType_NotSpecified si elTLVReader no están colocados dentro de un contenedor.

GetControlByte

uint16_t GetControlByte(
  void
) const 

Devuelve el byte de control asociado con la corriente TLV elemento.

Lo ideal es que nadie necesita saber sobre el byte de control y sólo la aplicación interna de TLV debe tener acceso a ella. Pero, sin embargo, tener acceso al byte de control es útil para propósitos de depuración por el TLV de depuración Utilidades (que tratan de descodificar el byte de control de etiqueta cuando bastante imprimiendo el TLV buffer de contenidos).

Detalles
Devoluciones
Un entero sin signo que contiene el byte de control asociado con la corriente TLV elemento. kTLVControlByte_NotSpecified se devuelve si el lector no está posicionado sobre un elemento.

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

Obtener un puntero al byte codificada inicial de un TLV de bytes o elemento de cadena UTF8.

Este método devuelve un puntero directo al valor de la cadena codificada dentro del búfer de entrada subyacente. Para tener éxito, el método requiere que la totalidad del valor de la cadena esté presente en un solo búfer. De lo contrario el procedimiento vuelve WEAVE_ERROR_TLV_UNDERRUN . Esto hace que el método sea de uso limitado al leer datos de múltiples búferes no contiguos.

Detalles
Parámetros
[out] data
Una referencia a un puntero constante que recibirá un puntero a los datos de la cadena subyacente.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV de bytes o UTF8 cadena, o el lector no está colocado sobre un elemento.
WEAVE_ERROR_TLV_UNDERRUN
Si el subyacente TLV codifican finalizó antes de tiempo o el valor del elemento de cadena actual no está contenida dentro de una única memoria intermedia contigua.
other
Otros armadura o error plataforma de códigos devueltos por el configurada GetNextBuffer () la función. Solo es posible cuando GetNextBuffer no es NULL.

GetLength

uint32_t GetLength(
  void
) const 

Devuelve la longitud de los datos asociados a la actual TLV elemento.

La longitud de los datos solo se aplica a elementos de tipo cadena UTF8 o cadena de bytes. Para cadenas UTF8, el valor devuelto es el número de bytes en la cadena, no el número de caracteres.

Detalles
Devoluciones
La longitud (en bytes) de datos asociados con la corriente TLV elemento, o 0 si el elemento actual no es una cadena de cadena UTF8 o byte, o si el lector no está posicionado sobre un elemento.

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

Devuelve el número total de bytes leídos desde que se inicializó el lector.

Detalles
Devoluciones
Número total de bytes leídos desde que se inicializó el lector.

GetReadPoint

const uint8_t * GetReadPoint(
  void
) const 

Obtiene el punto en el búfer de entrada subyacente que corresponde a la posición actual del lector.

Detalles
Devoluciones
Un puntero al búfer de entrada subyacente que corresponde a la posición actual del lector.

GetRemainingLength

uint32_t GetRemainingLength(
  void
) const 

Devuelve el número total de bytes que se pueden leer hasta que se alcanza la longitud máxima de lectura.

Detalles
Devoluciones
Número total de bytes que se pueden leer hasta que se alcanza la longitud máxima de lectura.

GetString

WEAVE_ERROR GetString(
  char *buf,
  uint32_t bufSize
)

Obtenga el valor del byte actual o del elemento de cadena UTF8 como una cadena terminada en nulo.

Para determinar el tamaño del búfer de entrada necesaria, llame a la GetLength () método antes de llamar GetBytes () . El búfer de entrada debe ser al menos un byte más grande que la longitud de la cadena para acomodar el carácter nulo.

Detalles
Parámetros
[in] buf
Un puntero a un búfer para recibir los datos de la cadena de bytes.
[in] bufSize
El tamaño en bytes de la memoria intermedia a la que apunta buf .
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el elemento actual no es un TLV de bytes o UTF8 cadena, o el lector no está colocado sobre un elemento.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si el búfer proporcionado es demasiado pequeño para contener los datos asociados con el elemento actual.
WEAVE_ERROR_TLV_UNDERRUN
Si el subyacente TLV codifican terminó prematuramente.
other
Otros armadura o error plataforma de códigos devueltos por el configurada GetNextBuffer () la función. Solo es posible cuando GetNextBuffer no es NULL.

GetTag

uint64_t GetTag(
  void
) const 

Devuelve la etiqueta asociada con la corriente TLV elemento.

El valor devuelto por GetTag () se puede utilizar con las funciones de utilidad etiqueta ( IsProfileTag () , IsContextTag () , ProfileIdFromTag () , etc.) para determinar el tipo de etiqueta y para extraer varios valores de campo de etiqueta.

Detalles
Devoluciones
Un entero sin signo que contiene información sobre la etiqueta asociada con la corriente TLV elemento.

GetType

TLVType GetType(
  void
) const 

Devuelve el tipo de la corriente TLV elemento.

Detalles
Devoluciones
Un valor TLVType que describe el tipo de datos de la corriente de TLV elemento. Si el lector no está colocado en un TLV elemento, el valor de retorno será kTLVType_NotSpecified.

En eso

void Init(
  const TLVReader & aReader
)

Inicializa unaTLVReader objeto de otroTLVReader objeto.

Detalles
Parámetros
[in] aReader
Una referencia de sólo lectura a laTLVReader para inicializar esto desde.

En eso

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

Inicializa unaTLVReader objeto para leer desde una única memoria intermedia de entrada.

Detalles
Parámetros
[in] data
Un puntero a un tampón que contiene los TLV de datos a analizar.
[in] dataLen
La longitud de los TLV de datos a analizar.

En eso

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Inicializa unaTLVReader objeto para leer desde una única PacketBuffer.

El análisis comienza en la posición inicial del búfer (buf-> DataStart ()) y continúa hasta el final de los datos en el búfer (como lo indica buf-> Datalen ()), o se han analizado los bytes maxLen.

Detalles
Parámetros
[in] buf
Un puntero a una PacketBuffer que contiene los TLV de datos a analizar.
[in] maxLen
El máximo de bytes para analizar. Por defecto, la cantidad de datos en el búfer de entrada.

En eso

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

Inicializa unaTLVReader objeto de leer a uno o más PacketBuffers.

El análisis comienza en la posición de inicio del búfer inicial (buf-> DataStart ()). Si allowDiscontiguousBuffers es cierto, el lector avanzar a través de la cadena de buffers unidos por sus next () punteros. El análisis continúa hasta que se han consumido todos los datos de la cadena de búfer (como se indica mediante buf-> Datalen ()) o se han analizado los bytes maxLen.

Detalles
Parámetros
[in] buf
Un puntero a una PacketBuffer que contiene los TLV de datos a analizar.
[in] maxLen
El máximo de bytes para analizar. Por defecto, la cantidad total de datos en la cadena de búfer de entrada.
[in] allowDiscontiguousBuffers
Si es verdadero, avance al siguiente búfer de la cadena una vez que se hayan consumido todos los datos del búfer actual. Si es falso, deje de analizar al final del búfer inicial.

próximo

WEAVE_ERROR Next(
  void
)

Los avances de laTLVReader objeto al siguiente TLV elemento a ser leídos.

Los siguiente () posiciones método del objeto lector en el siguiente elemento en un TLV de codificación que reside en el mismo contexto de contención. En particular, si el lector está posicionado en el nivel-exterior más de un TLV de codificación, llamando Siguiente () avanzará al lector a la siguiente, de arriba más elemento. Si el lector está posicionado dentro de un TLV elemento contenedor (una estructura, matriz o ruta), llamando Siguiente () avanzará al lector a la siguiente elemento miembro del recipiente.

Desde siguiente () constriñe lector de movimiento para el contexto de contención actual, llamar Siguiente () cuando el lector se coloca en un elemento contenedor avanzará sobre el recipiente, omitiendo sus elementos miembros (y los miembros de los contenedores anidados) hasta que alcanza la primera elemento después del contenedor.

Cuando no hay elementos adicionales dentro de un contexto de contención particular, el siguiente () método devolverá un WEAVE_END_OF_TLV error y la posición del lector permanecerá sin cambios.

Detalles
Valores devueltos
WEAVE_NO_ERROR
Si el lector se colocó con éxito en un nuevo elemento.
WEAVE_END_OF_TLV
Si no hay más elementos disponibles.
WEAVE_ERROR_TLV_UNDERRUN
Si el subyacente TLV codifican terminó prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el lector encuentra un válido o no admitido TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Si el lector se encontró con un TLV de etiqueta en un contexto no válido.
WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
Si el lector encontró un codificado implícitamente- TLV etiqueta para que el perfil correspondiente id es desconocido.
other
Otros armadura o error plataforma de códigos devueltos por el configurada GetNextBuffer () la función. Solo es posible cuando GetNextBuffer no es NULL.

próximo

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

Los avances de laTLVReader objeto al siguiente TLV elemento a ser leídos, afirmando el tipo y la etiqueta del nuevo elemento.

El siguiente (TLVType expectedType, uint64_t expectedTag) método es un método de conveniencia que tiene el mismo comportamiento que el siguiente () , pero también verifica que el tipo y la etiqueta de la nueva TLV elemento coinciden con los argumentos suministrados.

Detalles
Parámetros
[in] expectedType
El tipo de datos esperado para el siguiente elemento.
[in] expectedTag
La etiqueta esperada para el siguiente elemento.
Valores devueltos
WEAVE_NO_ERROR
Si el lector se colocó con éxito en un nuevo elemento.
WEAVE_END_OF_TLV
Si no hay más elementos disponibles.
WEAVE_ERROR_WRONG_TLV_TYPE
Si el tipo del nuevo elemento no coincide con el valor de la expectedType argumento.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
Si la etiqueta asociada con el nuevo elemento no coincide con el valor de la expectedTag argumento.
WEAVE_ERROR_TLV_UNDERRUN
Si el subyacente TLV codifican terminó prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el lector encuentra un válido o no admitido TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Si el lector se encontró con un TLV de etiqueta en un contexto no válido.
other
Otros armadura o error plataforma de códigos devueltos por el configurada GetNextBuffer () la función. Solo es posible cuando GetNextBuffer no es NULL.

OpenContainer

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

Inicializa una nuevaTLVReader objeto para la lectura de los miembros de un TLV elemento contenedor.

El OpenContainer () método inicializa un nuevoTLVReader objeto para la lectura de los elementos de miembro de un TLV recipiente (una estructura, matriz o PATH). Cuando OpenContainer () se llama, la corrienteTLVReader objeto debe ser posicionado sobre el elemento de contenedor para ser leído. El método toma como único argumento una referencia a un nuevo lector que se inicializará para leer el contenedor. Este lector es conocido como el lector de recipiente mientras el lector en el que OpenContainer () se llama se conoce como el lector de matriz.

Cuando los OpenContainer () devuelve el método, el lector recipiente se coloca inmediatamente antes de la primera miembro del recipiente. Llamando Siguiente () en el lector recipiente avanzará a través de los miembros de la colección hasta el final se alcanza, en cuyo punto el lector volverá WEAVE_END_OF_TLV.

Mientras el lector de contenedor está abierto, las aplicaciones no deben realizar llamadas ni alterar de otro modo el estado del lector principal. Una vez que una aplicación ha terminado de utilizar el lector de contenedor debe cerrarla llamando CloseContainer () en el lector de los padres, pasando el lector envase como argumento. Las aplicaciones pueden cerrar el lector de contenedores en cualquier momento, con o sin leer todos los elementos contenidos en el contenedor subyacente. Una vez que se cierra el lector de contenedores, las aplicaciones pueden continuar usando el lector principal.

El lector de contenedores hereda varias propiedades de configuración del lector principal. Estos son:

  • El ID de perfil implícito (ImplicitProfileId)
  • El puntero de datos de la aplicación (AppData)
  • El puntero de la función GetNextBuffer

Detalles
Parámetros
[out] containerReader
Una referencia a unTLVReader objeto que se inicializa para la lectura de los miembros del elemento contenedor actual. Todos los datos asociados con el objeto proporcionado se sobrescriben.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_INCORRECT_STATE
Si el elemento actual no está posicionado en un elemento contenedor.

Saltar

WEAVE_ERROR Skip(
  void
)

Avanza elTLVReader objeto que inmediatamente después de la corriente TLV elemento.

Los Skip () posiciones método del objeto lector inmediatamente después de la corriente TLV elemento, de tal manera que una llamada posterior a Siguiente () avanzarán al lector a la siguiente elemento. Como siguiente () , si el lector se coloca en un elemento contenedor en el momento de la llamada, los miembros del recipiente se evitará. Si el lector no se coloca en ningún elemento, su posición permanece sin cambios.

Detalles
Valores devueltos
WEAVE_NO_ERROR
Si el lector se colocó con éxito en un nuevo elemento.
WEAVE_END_OF_TLV
Si no hay más elementos disponibles.
WEAVE_ERROR_TLV_UNDERRUN
Si el subyacente TLV codifican terminó prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el lector encuentra un válido o no admitido TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Si el lector se encontró con un TLV de etiqueta en un contexto no válido.
other
Otros armadura o error plataforma de códigos devueltos por el configurada GetNextBuffer () la función. Solo es posible cuando GetNextBuffer no es NULL.

VerifyEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)

Verifica que el objeto TVLReader está en el extremo de un TLV recipiente.

Los VerifyEndOfContainer () verifica método que no hay más TLV elementos para ser leídos dentro de la corriente TLV recipiente. Se trata de un método de conveniencia que es equivalente a llamar Siguiente () y la comprobación de un valor de retorno de WEAVE_END_OF_TLV.

Detalles
Valores devueltos
WEAVE_NO_ERROR
If there are no further TLV elements to be read.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
If another TLV element was found in the collection.
WEAVE_ERROR_TLV_UNDERRUN
If the underlying TLV encoding ended prematurely.
WEAVE_ERROR_INVALID_TLV_ELEMENT
If the reader encountered an invalid or unsupported TLV element type.
WEAVE_ERROR_INVALID_TLV_TAG
If the reader encountered a TLV tag in an invalid context.
other
Other Weave or platform error codes returned by the configured GetNextBuffer() function. Only possible when GetNextBuffer is non-NULL.

Funciones protegidas

ClearElementState

void ClearElementState(
  void
)

Clear the state of theTLVReader .

This method is used to position the reader before the first TLV , between TLVs or after the last TLV .

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.

Detalles
Valores devueltos
WEAVE_NO_ERROR
If the reader was successfully positioned at the end of the data.
other
Other Weave or platform error codes returned by the configured GetNextBuffer() function. Only possible when GetNextBuffer is non-NULL.

SkipToEndOfContainer

WEAVE_ERROR SkipToEndOfContainer(
  void
)

VerifyElement

WEAVE_ERROR VerifyElement(
  void
)

Funciones estáticas protegidas

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
)