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 (*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) | |
ExitContainer ( TLVType outerContainerType) | |
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 |
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) | |
Next ( TLVType expectedType, uint64_t expectedTag) | |
OpenContainer (TLVReader & containerReader) | |
Skip (void) | |
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 |
| ||||||||
Valores devueltos |
|
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 |
| ||||||||||||
Valores devueltos |
|
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 |
| ||||||||||||
Valores devueltos |
|
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 |
| ||||||||||||
Valores devueltos |
|
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 |
| ||||
Valores devueltos |
|
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 |
| ||||||||||||
Valores devueltos |
|
Obtener
WEAVE_ERROR Get( bool & v )
Obtiene el valor del elemento actual como un tipo bool.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
| ||||
Valores devueltos |
|
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 |
| ||||
Valores devueltos |
|
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 |
| ||||
Valores devueltos |
|
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 |
| ||||
Valores devueltos |
|
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 |
| ||||
Valores devueltos |
|
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 |
| ||||
Valores devueltos |
|
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 |
| ||||
Valores devueltos |
|
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 |
| ||||
Valores devueltos |
|
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 |
| ||||
Valores devueltos |
|
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 |
| ||||
Valores devueltos |
|
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 |
| ||||||||||
Valores devueltos |
|
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 |
| ||||||||
Valores devueltos |
|
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 |
| ||||||||||
Valores devueltos |
|
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
En eso
void Init( const TLVReader & aReader )
En eso
void Init( const uint8_t *data, uint32_t dataLen )
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 |
|
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 |
|
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 |
|
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 |
| ||||||||||||||||
Valores devueltos |
|
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 |
| ||||
Valores devueltos |
|
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 |
|
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 |
|
Funciones 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.
Detalles | |||||
---|---|---|---|---|---|
Valores devueltos |
|
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 )