nl::Weave::TLV::TLVReader

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

Udostępnia działający w pamięci parser danych zakodowanych w formacie TLV Weave.

Podsumowanie

TLVReader wdraża tylko do przodu parser „pull-style” dla danych Weave TLV. Obiekt TLVReader działa jako kursor, którego można używać do iteracji sekwencji elementów TLV i interpretowania ich zawartości. Po umieszczeniu na elemencie aplikacje mogą wywoływać metody czytnika Get(), aby przesłać zapytanie o typ i tag bieżącego elementu oraz wyodrębnić powiązaną z nim wartość. Metoda Next() czytnika służy do przechodzenia od elementu do elementu.

Obiekt TLVReader jest zawsze umieszczony przed elementem TLV, po nim lub po nim. Po zainicjowaniu pierwszy moduł TLVReader jest umieszczany bezpośrednio przed pierwszym elementem kodowania. Aby rozpocząć odczytywanie, aplikacja musi wywołać metodę Next() w celu umieszczenia czytnika na pierwszym elemencie. Gdy element kontenera występuje w postaci struktury, tablicy lub ścieżki, do iteracji zawartości kontenera można użyć metod OpenContainer() lub EnterContainer().

Gdy czytnik dotrze do końca kodowania TLV lub do ostatniego elementu w kontenerze, zasygnalizuje aplikację, zwracając błąd WEAVE_END_OF_TLV za pomocą metody Next(). Czytnik będzie nadal zwracać wartość WEAVE_END_OF_TLV do czasu jego ponownego zainicjowania lub zamknięcia bieżącego kontenera (przez CloseContainer() / ExitContainer()).

Obiekt TLVReader może analizować dane bezpośrednio ze stałego bufora wejściowego lub z łańcucha co najmniej jednego obiektu PacketBuffer. Dodatkowo aplikacje mogą dostarczać funkcję GetNextBuffer do przekazywania danych do czytnika z dowolnego źródła, np. gniazda elektrycznego lub portu szeregowego.

Dziedziczenie

Bezpośrednie znane podklasy:
  nl::Weave::Profiles::DataManagement_Current::CircularEventReader
  nl::Weave::TLV::CircularTLVReader

Typy publiczne

GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR(*
Funkcja umożliwiająca pobieranie dodatkowych danych TLV do przeanalizowania.

Atrybuty publiczne

AppData
void *
Pole wskaźnika, którego można używać w przypadku danych specyficznych dla aplikacji.
GetNextBuffer
Wskaźnik do funkcji, która będzie generować dane wejściowe dla obiektu TLVReader.
ImplicitProfileId
uint32_t
Identyfikator profilu używany w tagach profili zakodowanych w formie niejawnej.

Atrybuty chronione

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 *

Funkcje publiczne

CloseContainer(TLVReader & containerReader)
Kończy odczyt kontenera TLV po wywołaniu funkcji OpenContainer().
DupBytes(uint8_t *& buf, uint32_t & dataLen)
Przydziela i zwraca bufor zawierający wartość bieżącego bajtu lub ciągu UTF8.
DupString(char *& buf)
Przydziela i zwraca bufor zawierający wartość bieżącego bajtu lub ciągu UTF8 z zakończeniem null.
EnterContainer(TLVType & outerContainerType)
Przygotowuje obiekt TLVReader do odczytu elementów kontenera TLV.
ExitContainer(TLVType outerContainerType)
Wykonuje odczyt kontenera TLV i przygotowuje obiekt TLVReader, aby odczytywać elementy za kontenerem.
Get(bool & v)
Pobierz wartość bieżącego elementu jako typ logiczny.
Get(int8_t & v)
Pobierz wartość bieżącego elementu jako 8-bitową liczbę całkowitą ze znakiem.
Get(int16_t & v)
Pobierz wartość bieżącego elementu jako 16-bitową liczbę całkowitą ze znakiem.
Get(int32_t & v)
Pobierz wartość bieżącego elementu jako 32-bitową liczbę całkowitą ze znakiem.
Get(int64_t & v)
Pobierz wartość bieżącego elementu jako 64-bitową liczbę całkowitą ze znakiem.
Get(uint8_t & v)
Pobierz wartość bieżącego elementu jako 8-bitową nieoznaczoną liczbę całkowitą.
Get(uint16_t & v)
Pobierz wartość bieżącego elementu jako 16-bitową nieoznaczoną liczbę całkowitą.
Get(uint32_t & v)
Pobierz wartość bieżącego elementu jako 32-bitową nieoznaczoną liczbę całkowitą.
Get(uint64_t & v)
Pobierz wartość bieżącego elementu jako 64-bitową nieoznaczoną liczbę całkowitą.
Get(float & v)
Get(double & v)
Pobierz wartość bieżącego elementu jako liczbę zmiennoprzecinkową o podwójnej precyzji.
GetBufHandle(void) const
uintptr_t
GetBytes(uint8_t *buf, uint32_t bufSize)
Pobierz wartość bieżącego bajta lub elementu ciągu UTF8.
GetContainerType(void) const
Zwraca typ kontenera, w którym obecnie odczytuje TLVReader.
GetControlByte(void) const
uint16_t
Zwraca bajt kontrolny powiązany z bieżącym elementem TLV.
GetDataPtr(const uint8_t *& data)
Znajdź wskaźnik do początkowo zakodowanego bajtu bajtu TLV lub elementu ciągu UTF8.
GetLength(void) const
uint32_t
Zwraca długość danych powiązanych z bieżącym elementem TLV.
GetLengthRead(void) const
uint32_t
Zwraca łączną liczbę bajtów odczytanych od czasu zainicjowania czytnika.
GetReadPoint(void) const
const uint8_t *
Pobiera punkt w bazowym buforze danych wejściowych, który odpowiada bieżącej pozycji czytelnika.
GetRemainingLength(void) const
uint32_t
Zwraca łączną liczbę bajtów, które mogą być odczytywane do momentu osiągnięcia maksymalnej długości odczytu.
GetString(char *buf, uint32_t bufSize)
Pobierz wartość bieżącego bajta lub elementu ciągu UTF8 jako ciąg znaków zakończony wartością null.
GetTag(void) const
uint64_t
Zwraca tag powiązany z bieżącym elementem TLV.
GetType(void) const
Zwraca typ bieżącego elementu TLV.
Init(const TLVReader & aReader)
void
Inicjuje obiekt TLVReader z innego obiektu TLVReader.
Init(const uint8_t *data, uint32_t dataLen)
void
Inicjuje obiekt TLVReader do odczytu z jednego bufora wejściowego.
Init(PacketBuffer *buf, uint32_t maxLen)
void
Inicjuje obiekt TLVReader do odczytu z pojedynczego obiektu PacketBuffer.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Inicjuje obiekt TLVReader w celu odczytu z co najmniej jednego obiektu PacketBuffer.
Next(void)
Przewija obiekt TLVReader do następnego elementu TLV do odczytu.
Next(TLVType expectedType, uint64_t expectedTag)
Przewija obiekt TLVReader do następnego elementu TLV, który ma zostać odczytany, potwierdzając typ i tag nowego elementu.
OpenContainer(TLVReader & containerReader)
Inicjuje nowy obiekt TLVReader do odczytu elementów kontenera TLV.
Skip(void)
Przesuwa obiekt TLVReader na bieżący element TLV.
VerifyEndOfContainer(void)
Sprawdza, czy obiekt TVLReader znajduje się na końcu kontenera TLV.

Funkcje chronione

ClearElementState(void)
void
Wyczyść stan TLVReader.
ElementType(void) const
TLVElementType
To jest metoda prywatna, która zwraca wartość TLVElementType z mControlByte.
EnsureData(WEAVE_ERROR noDataErr)
GetElementHeadLength(uint8_t & elemHeadBytes) const
Jest to prywatna metoda obliczania długości nagłówka elementu TLV.
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)
Pomiń wszystkie dane w bieżącym TLV, odczytując je bez bufora docelowego.
SkipToEndOfContainer(void)
VerifyElement(void)

Chronione funkcje statyczne

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)

Typy publiczne

GetNextBufferFunct

WEAVE_ERROR(* GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)

Funkcja umożliwiająca pobieranie dodatkowych danych TLV do przeanalizowania.

Funkcje tego typu służą do przekazywania danych wejściowych do TLVReader. Po wywołaniu funkcja powinna wygenerować dodatkowe dane, które czytelnik może przeanalizować lub zasygnalizować, że nie ma więcej danych.

Szczegóły
Parametry
[in] reader
Odwołanie do obiektu TLVReader, który żąda danych wejściowych.
[in,out] bufHandle
Odwołanie do wartości uintptr_t, której funkcja może używać do przechowywania danych kontekstowych między wywołaniami. Ta wartość jest inicjowana na 0 przed pierwszym wywołaniem.
[in,out] bufStart
Odwołanie do wskaźnika danych. Przy wejściu do funkcji bufStart wskazuje na 1 bajt więcej niż ostatni bajt danych TLV wykorzystany przez czytnik. Przy wyjściu element bufStart powinien wskazywać pierwszy bajt nowych danych TLV do analizy. Nowa wartość wskaźnika może się znajdować w tym samym buforze co wcześniej zużyte dane lub wskazywać zupełnie nowy bufor.
[out] bufLen
Odwołanie do niepodpisanej liczby całkowitej, którą funkcja musi ustawić na liczbę zwracanych bajtów danych TLV. Po osiągnięciu końca danych wejściowych TLV funkcja powinna ustawić tę wartość na 0.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli funkcja dostarczyła więcej danych TLV lub osiągnięto koniec danych wejściowych (w tym przypadku parametr bufLen powinien mieć wartość 0).
other
Inne kody błędów Weave lub typowe dla platformy, które wskazują, że wystąpił błąd, który uniemożliwia funkcji wygenerowanie żądanych danych.

Atrybuty publiczne

AppData

void * AppData

Pole wskaźnika, którego można używać w przypadku danych specyficznych dla aplikacji.

GetNextBuffer

GetNextBufferFunct GetNextBuffer

Wskaźnik do funkcji, która będzie generować dane wejściowe dla obiektu TLVReader.

Jeśli ustawiona jest wartość NULL (wartość domyślna), czytelnik zakłada, że nie są dostępne żadne dalsze dane wejściowe.

Aplikacja GetNextBuffer może ustawić w dowolnym momencie, ale zwykle jest ustawiana podczas inicjowania czytnika.

Dodatkowe informacje o implementowaniu funkcji GetNextBuffer znajdziesz w definicji typu GetNextBufferFunct.

ImplicitProfileId

uint32_t ImplicitProfileId

Identyfikator profilu używany w tagach profili zakodowanych w formie niejawnej.

Gdy czytelnik napotyka tag profilu, który został zakodowany w formie niejawnej, jako domniemanego identyfikatora profilu dla tagu wykorzystuje wartość właściwości ImplicitProfileId.

Domyślnie właściwość ImplicitProfileId ma wartość kProfileIdNotSpecified. Podczas dekodowania TLV zawierającego domyślnie zakodowane tagi aplikacje muszą ustawić ImplicitProfileId przed odczytaniem elementów TLV zawierających takie tagi. Odpowiedni identyfikator profilu zależy zwykle od kontekstu aplikacji lub używanego protokołu.

Jeśli zostanie napotkany niejawnie zakodowany tag, gdy zasada ImplicitProfileId ma wartość kProfileIdNotSpecified, czytnik zwróci błąd WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG.

Atrybuty chronione

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

Funkcje publiczne

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVReader & containerReader
)

Kończy odczyt kontenera TLV po wywołaniu funkcji OpenContainer().

Metoda CloseContainer() przywraca stan nadrzędnego obiektu TLVReader po wywołaniu funkcji OpenContainer(). Każde wywołanie aplikacji OpenContainer() musi wywołać funkcję CloseContainer(), przekazując odniesienie do tego samego czytnika kontenera do obu metod.

Gdy funkcja CloseContainer() jest zwracana, czytnik nadrzędny jest umieszczany bezpośrednio przed pierwszym elementem, który następuje po kontenerze. Od tego momentu aplikacja może używać metody Next() do przechodzenia między pozostałymi elementami.

Aplikacje mogą wywoływać metodę zamykania CloseContainer() na czytniku nadrzędnym w dowolnym momencie, niezależnie od tego, czy wszystkie elementy w kontenerze zostały przeczytane. Po wywołaniu funkcji CloseContainer() aplikacja powinna uznać czytnik kontenerów za „de-initialized” i nie można jej dalej używać bez ponownego zainicjowania.

Szczegóły
Parametry
[in] containerReader
Odwołanie do obiektu TLVReader, który został udostępniony w metodzie OpenContainer().
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_INCORRECT_STATE
Jeśli funkcja OpenContainer() nie została wywołana na czytniku lub jeśli czytnik kontenera nie pasuje do metody przekazanej do metody OpenContainer().
WEAVE_ERROR_TLV_UNDERRUN
Jeśli kodowanie TLV zostało zakończone przedwcześnie.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jeśli czytnik napotkał nieprawidłowy lub nieobsługiwany typ elementu TLV.
WEAVE_ERROR_INVALID_TLV_TAG
czytelnik napotkał tag TLV w nieprawidłowym kontekście.
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Jest to możliwe tylko wtedy, gdy GetNextBuffer ma wartość inną niż NULL.

DupBytes

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

Przydziela i zwraca bufor zawierający wartość bieżącego bajtu lub ciągu UTF8.

Ta metoda tworzy bufor i zwraca kopię danych powiązanych z bajtem lub ciągiem znaków UTF-8 w bieżącej pozycji. Pamięć bufora jest uzyskiwana za pomocą metody Malloc() i powinna być zwolniona za pomocą funkcji free() przez wywołanie metody, gdy nie jest już potrzebna.

Szczegóły
Parametry
[out] buf
Odwołanie do wskaźnika, który po udanym przypisaniu zostanie przypisany do bufora przydzielonego do sterty o wielkości dataLen bajtów.
[out] dataLen
Odwołanie do miejsca na dane o rozmiarze (w bajtach) wynoszącym buf.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest ciągiem bajtowym TLV ani ciągiem UTF8 albo czytnik nie jest umieszczony na elemencie.
WEAVE_ERROR_NO_MEMORY
Jeśli nie można przydzielić pamięci na bufor wyjściowy.
WEAVE_ERROR_TLV_UNDERRUN
Jeśli kodowanie TLV zostało zakończone przedwcześnie.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Jeśli platforma docelowa nie obsługuje Malloc() ani free().
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Jest to możliwe tylko wtedy, gdy GetNextBuffer ma wartość inną niż NULL.

DupString

WEAVE_ERROR DupString(
  char *& buf
)

Przydziela i zwraca bufor zawierający wartość bieżącego bajtu lub ciągu UTF8 z zakończeniem null.

Ta metoda tworzy bufor i zwraca kopię danych powiązaną z bajtem lub ciągiem znaków UTF-8 w bieżącej pozycji i zwraca ją w bieżącej pozycji. Pamięć bufora jest uzyskiwana za pomocą metody Malloc() i powinna być zwolniona za pomocą funkcji free() przez wywołanie metody, gdy nie jest już potrzebna.

Szczegóły
Parametry
[out] buf
Odwołanie do wskaźnika, do którego w momencie powodzenia zostanie przypisany bufor przydzielony do sterty.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest ciągiem bajtowym TLV ani ciągiem UTF8 albo czytnik nie jest umieszczony na elemencie.
WEAVE_ERROR_NO_MEMORY
Jeśli nie można przydzielić pamięci na bufor wyjściowy.
WEAVE_ERROR_TLV_UNDERRUN
Jeśli kodowanie TLV zostało zakończone przedwcześnie.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Jeśli platforma docelowa nie obsługuje Malloc() ani free().
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Jest to możliwe tylko wtedy, gdy GetNextBuffer ma wartość inną niż NULL.

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

Przygotowuje obiekt TLVReader do odczytu elementów kontenera TLV.

Metoda EnterContainer() przygotowuje bieżący obiekt TLVReader tak, aby rozpoczął odczyt elementów składowych kontenera TLV (struktury, tablicy lub ścieżki). Każde wywołanie funkcji EnterContainer() musi wywołać odpowiednie wywołanie ExitContainer().

Jeśli wywoływana jest metoda EnterContainer(), obiekt TLVReader musi być umieszczony na elemencie kontenera, który ma być odczytywany. Ta metoda przyjmuje jako argument odwołanie do wartości TLVType, która będzie używana do zapisywania kontekstu czytnika podczas odczytu kontenera.

Po powrocie metody EnterContainer() czytnik jest umieszczany bezpośrednio przed pierwszym elementem kontenera. Powtarzające się wywoływanie funkcji Next() przenosi czytelnika do kolejnych elementów kolekcji aż do osiągnięcia końca, po którym czytelnik zwróci wartość WEAVE_END_OF_TLV.

Gdy aplikacja zakończy odczyt kontenera, może kontynuować odczytywanie elementów znajdujących się za nim, wywołując metodę ExitContainer().

Szczegóły
Parametry
[out] outerContainerType
Odwołanie do wartości TLVType, która otrzyma kontekst dla czytnika.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_INCORRECT_STATE
Jeśli bieżący element nie jest umieszczony na elemencie kontenera.

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

Wykonuje odczyt kontenera TLV i przygotowuje obiekt TLVReader, aby odczytywać elementy za kontenerem.

Metoda ExitContainer() przywraca stan obiektu TLVReader po wywołaniu funkcji EnterContainer(). Każde wywołanie aplikacji EnterContainer() musi wywołać odpowiednie wywołanie ExitContainer(), przekazując wartość kontekstu zwrócona przez metodę EnterContainer().

Gdy zwracana jest metoda ExitContainer(), czytnik jest umieszczany bezpośrednio przed pierwszym elementem, który następuje po kontenerze. Od tego momentu aplikacja może używać metody Next() do przechodzenia między pozostałymi elementami.

Po wywołaniu funkcji EnterContainer() aplikacje mogą wywołać na czytniku funkcję ExitContainer() w dowolnym momencie, niezależnie od tego, czy wszystkie elementy w kontenerze bazowym zostały odczytane.

Szczegóły
Parametry
[in] outerContainerType
Wartość TLVType, która została zwrócona przez metodę EnterContainer().
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_INCORRECT_STATE
Jeśli funkcja OpenContainer() nie została wywołana na czytniku lub jeśli czytnik kontenera nie pasuje do metody przekazanej do metody OpenContainer().
WEAVE_ERROR_TLV_UNDERRUN
Jeśli kodowanie TLV zostało zakończone przedwcześnie.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jeśli czytnik napotkał nieprawidłowy lub nieobsługiwany typ elementu TLV.
WEAVE_ERROR_INVALID_TLV_TAG
czytelnik napotkał tag TLV w nieprawidłowym kontekście.
other
Inne kody błędów Weave lub platformy zwracane przez skonfigurowaną funkcję GetNextBuffer(). Jest to możliwe tylko wtedy, gdy GetNextBuffer ma wartość inną niż NULL.

Pobierz

WEAVE_ERROR Get(
  bool & v
)

Pobierz wartość bieżącego elementu jako typ logiczny.

Szczegóły
Parametry
[out] v
Otrzymuje wartość powiązaną z bieżącym elementem TLV.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest typem wartości logicznej TLV lub czytnik nie znajduje się na elemencie.

Pobierz

WEAVE_ERROR Get(
  int8_t & v
)

Pobierz wartość bieżącego elementu jako 8-bitową liczbę całkowitą ze znakiem.

Jeśli zakodowana wartość całkowita jest większa niż typ danych wyjściowych, wynikowa wartość zostanie obcięta.

Szczegóły
Parametry
[out] v
Otrzymuje wartość powiązaną z bieżącym elementem TLV.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub bez znaku) albo gdy czytnik nie jest umieszczony na elemencie.

Pobierz

WEAVE_ERROR Get(
  int16_t & v
)

Pobierz wartość bieżącego elementu jako 16-bitową liczbę całkowitą ze znakiem.

Jeśli zakodowana wartość całkowita jest większa niż typ danych wyjściowych, wynikowa wartość zostanie obcięta.

Szczegóły
Parametry
[out] v
Otrzymuje wartość powiązaną z bieżącym elementem TLV.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub bez znaku) albo gdy czytnik nie jest umieszczony na elemencie.

Pobierz

WEAVE_ERROR Get(
  int32_t & v
)

Pobierz wartość bieżącego elementu jako 32-bitową liczbę całkowitą ze znakiem.

Jeśli zakodowana wartość całkowita jest większa niż typ danych wyjściowych, wynikowa wartość zostanie obcięta.

Szczegóły
Parametry
[out] v
Otrzymuje wartość powiązaną z bieżącym elementem TLV.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub bez znaku) albo gdy czytnik nie jest umieszczony na elemencie.

Pobierz

WEAVE_ERROR Get(
  int64_t & v
)

Pobierz wartość bieżącego elementu jako 64-bitową liczbę całkowitą ze znakiem.

Jeśli zakodowana wartość całkowita jest większa niż typ danych wyjściowych, wynikowa wartość zostanie obcięta.

Szczegóły
Parametry
[out] v
Otrzymuje wartość powiązaną z bieżącym elementem TLV.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub bez znaku) albo gdy czytnik nie jest umieszczony na elemencie.

Pobierz

WEAVE_ERROR Get(
  uint8_t & v
)

Pobierz wartość bieżącego elementu jako 8-bitową nieoznaczoną liczbę całkowitą.

Jeśli zakodowana wartość całkowita jest większa niż typ danych wyjściowych, wynikowa wartość zostanie obcięta. Podobnie, jeśli zakodowana liczba całkowita jest ujemna, zostanie przekonwertowana na wartość bez znaku.

Szczegóły
Parametry
[out] v
Otrzymuje wartość powiązaną z bieżącym elementem TLV.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub bez znaku) albo gdy czytnik nie jest umieszczony na elemencie.

Pobierz

WEAVE_ERROR Get(
  uint16_t & v
)

Pobierz wartość bieżącego elementu jako 16-bitową nieoznaczoną liczbę całkowitą.

Jeśli zakodowana wartość całkowita jest większa niż typ danych wyjściowych, wynikowa wartość zostanie obcięta. Podobnie, jeśli zakodowana liczba całkowita jest ujemna, zostanie przekonwertowana na wartość bez znaku.

Szczegóły
Parametry
[out] v
Otrzymuje wartość powiązaną z bieżącym elementem TLV.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub bez znaku) albo gdy czytnik nie jest umieszczony na elemencie.

Pobierz

WEAVE_ERROR Get(
  uint32_t & v
)

Pobierz wartość bieżącego elementu jako 32-bitową nieoznaczoną liczbę całkowitą.

Jeśli zakodowana wartość całkowita jest większa niż typ danych wyjściowych, wynikowa wartość zostanie obcięta. Podobnie, jeśli zakodowana liczba całkowita jest ujemna, zostanie przekonwertowana na wartość bez znaku.

Szczegóły
Parametry
[out] v
Otrzymuje wartość powiązaną z bieżącym elementem TLV.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub bez znaku) albo gdy czytnik nie jest umieszczony na elemencie.

Pobierz

WEAVE_ERROR Get(
  uint64_t & v
)

Pobierz wartość bieżącego elementu jako 64-bitową nieoznaczoną liczbę całkowitą.

Jeśli zakodowana liczba całkowita jest ujemna, zostanie przekonwertowana na wartość bez znaku.

Szczegóły
Parametry
[out] v
Otrzymuje wartość powiązaną z bieżącym elementem TLV.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub bez znaku) albo gdy czytnik nie jest umieszczony na elemencie.

Pobierz

WEAVE_ERROR Get(
  float & v
)

Pobierz

WEAVE_ERROR Get(
  double & v
)

Pobierz wartość bieżącego elementu jako liczbę zmiennoprzecinkową o podwójnej precyzji.

Szczegóły
Parametry
[out] v
Otrzymuje wartość powiązaną z bieżącym elementem TLV.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest typu zmiennoprzecinkowego TLV lub czytnik nie jest umieszczony na elemencie.

GetBufHandle

uintptr_t GetBufHandle(
  void
) const 

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

Pobierz wartość bieżącego bajta lub elementu ciągu UTF8.

Aby określić wymagany rozmiar bufora wejściowego, przed wywołaniem funkcji GetBytes() wywołaj metodę GetLength().

Szczegóły
Parametry
[in] buf
Wskaźnik do bufora, do którego mają być odbierane dane ciągu znaków.
[in] bufSize
Wyrażony w bajtach rozmiar bufora, na który wskazuje buf.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest ciągiem bajtowym TLV ani ciągiem UTF8 albo czytnik nie jest umieszczony na elemencie.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jeśli podany bufor jest zbyt mały, by przechowywać dane powiązane z bieżącym elementem.
WEAVE_ERROR_TLV_UNDERRUN
Jeśli kodowanie TLV zostało zakończone przedwcześnie.
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Jest to możliwe tylko wtedy, gdy GetNextBuffer ma wartość inną niż NULL.

GetContainerType

TLVType GetContainerType(
  void
) const 

Zwraca typ kontenera, w którym obecnie odczytuje TLVReader.

Metoda GetContainerType() zwraca typ kontenera TLV, w którym odczytuje obiekt TLVReader. Jeśli TLVReader znajduje się na najbardziej zewnętrznym poziomie kodowania TLV (tzn. przed, w dniu lub za zewnętrznym elementem TLV), metoda zwróci wartość kTLVType_NotOkreślified.

Szczegóły
Zwroty
Wartość TLVType bieżącego kontenera lub kTLVType_NotSpecified, jeśli obiekt TLVReader nie znajduje się w kontenerze.

GetControlByte

uint16_t GetControlByte(
  void
) const 

Zwraca bajt kontrolny powiązany z bieżącym elementem TLV.

W idealnej sytuacji nikt nigdy nie musi wiedzieć o bajcie kontrolnym i powinno mieć do niego dostęp tylko wewnętrzna implementacja TLV. Dostęp do bajtu kontrolnego może jednak pomagać w debugowaniu w narzędziach TLVDebugTools (które próbują zdekodować bajt kontrolny tagu podczas drukowania zawartości bufora TLV).

Szczegóły
Zwroty
Nieoznaczona liczba całkowita zawierająca bajt kontrolny powiązany z bieżącym elementem TLV. Wartość kTLVControlByte_NotSpecified jest zwracana, jeśli czytnik nie jest umieszczony na elemencie.

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

Znajdź wskaźnik do początkowo zakodowanego bajtu bajtu TLV lub elementu ciągu UTF8.

Ta metoda zwraca bezpośredni wskaźnik zakodowaną wartość ciągu w bazowym buforze danych wejściowych. Aby ta metoda się udała, cała wartość ciągu musi znajdować się w jednym buforze. W przeciwnym razie zwraca wartość WEAVE_ERROR_TLV_UNDERRUN. Dzięki temu ta metoda może mieć ograniczone zastosowanie przy odczytywaniu danych z wielu nieprzylegających buforów.

Szczegóły
Parametry
[out] data
Odwołanie do wskaźnika Const, który otrzyma wskaźnik do bazowych danych ciągu znaków.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest ciągiem bajtowym TLV ani ciągiem UTF8 albo czytnik nie jest umieszczony na elemencie.
WEAVE_ERROR_TLV_UNDERRUN
Jeśli podstawowe kodowanie TLV zakończyło się przedwcześnie lub wartość bieżącego elementu ciągu znaków nie jest zawarta w jednym ciągłym buforze.
other
Inne kody błędów Weave lub platformy zwracane przez skonfigurowaną funkcję GetNextBuffer(). Jest to możliwe tylko wtedy, gdy GetNextBuffer ma wartość inną niż NULL.

GetLength

uint32_t GetLength(
  void
) const 

Zwraca długość danych powiązanych z bieżącym elementem TLV.

Długość danych dotyczy tylko elementów typu UTF8 lub ciągu bajtów. W przypadku ciągów UTF8 zwracaną wartością jest liczba bajtów w ciągu znaków, a nie liczby znaków.

Szczegóły
Zwroty
Długość (w bajtach) danych powiązanych z bieżącym elementem TLV lub wartość 0, jeśli bieżący element nie jest ciągiem UTF8 ani ciągiem bajtów w formacie UTF-8 albo jeśli czytnik nie jest umieszczony na elemencie.

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

Zwraca łączną liczbę bajtów odczytanych od czasu zainicjowania czytnika.

Szczegóły
Zwroty
Łączna liczba bajtów odczytanych od czasu zainicjowania czytnika.

GetReadPoint

const uint8_t * GetReadPoint(
  void
) const 

Pobiera punkt w bazowym buforze danych wejściowych, który odpowiada bieżącej pozycji czytelnika.

Szczegóły
Zwroty
wskaźnik do bazowego bufora wejściowego, który odpowiada bieżącemu położeniu czytelnika;

GetRemainingLength

uint32_t GetRemainingLength(
  void
) const 

Zwraca łączną liczbę bajtów, które mogą być odczytywane do momentu osiągnięcia maksymalnej długości odczytu.

Szczegóły
Zwroty
Łączna liczba bajtów, które można odczytać do momentu osiągnięcia maksymalnej długości odczytu.

GetString

WEAVE_ERROR GetString(
  char *buf,
  uint32_t bufSize
)

Pobierz wartość bieżącego bajta lub elementu ciągu UTF8 jako ciąg znaków zakończony wartością null.

Aby określić wymagany rozmiar bufora wejściowego, przed wywołaniem funkcji GetBytes() wywołaj metodę GetLength(). Aby można było zmieścić znak null, bufor wejściowy powinien być o co najmniej 1 bajt większy od długości ciągu znaków.

Szczegóły
Parametry
[in] buf
Wskaźnik do bufora, do którego mają być odbierane dane ciągu bajtów.
[in] bufSize
Wyrażony w bajtach rozmiar bufora, na który wskazuje buf.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest ciągiem bajtowym TLV ani ciągiem UTF8 albo czytnik nie jest umieszczony na elemencie.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jeśli podany bufor jest zbyt mały, by przechowywać dane powiązane z bieżącym elementem.
WEAVE_ERROR_TLV_UNDERRUN
Jeśli kodowanie TLV zostało zakończone przedwcześnie.
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Jest to możliwe tylko wtedy, gdy GetNextBuffer ma wartość inną niż NULL.

GetTag

uint64_t GetTag(
  void
) const 

Zwraca tag powiązany z bieżącym elementem TLV.

Wartości zwracanej przez funkcję GetTag() można używać z funkcjami narzędzia do tagów (IsProfileTag(), IsContextTag(), ProfileIdFromTag() itp.) do określenia typu tagu i wyodrębniania różnych wartości pól tagu.

Szczegóły
Zwroty
Nieoznaczona liczba całkowita zawierająca informacje o tagu powiązanym z bieżącym elementem TLV.

GetType

TLVType GetType(
  void
) const 

Zwraca typ bieżącego elementu TLV.

Szczegóły
Zwroty
Wartość TLVType opisujący typ danych bieżącego elementu TLV. Jeśli czytnik nie jest umieszczony w elemencie TLV, zwracana wartość to kTLVType_NotSpecified.

Init

void Init(
  const TLVReader & aReader
)

Inicjuje obiekt TLVReader z innego obiektu TLVReader.

Szczegóły
Parametry
[in] aReader
Odwołanie tylko do odczytu do modułu TLVReader, z którego można zainicjować ten plik.

Init

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

Inicjuje obiekt TLVReader do odczytu z jednego bufora wejściowego.

Szczegóły
Parametry
[in] data
Wskaźnik do bufora zawierającego dane TLV do analizy.
[in] dataLen
Długość danych TLV do analizy.

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Inicjuje obiekt TLVReader do odczytu z pojedynczego obiektu PacketBuffer.

Analiza rozpoczyna się od pozycji początkowej bufora (buf->DataStart()) i trwa aż do końca danych w buforze (co oznacza buf->Datalen()) lub do przeanalizowania bajtów maxLen.

Szczegóły
Parametry
[in] buf
Wskaźnik do obiektu PacketBuffer zawierającego dane TLV do analizy.
[in] maxLen
Maksymalna liczba bajtów do przeanalizowania. Domyślnie jest to ilość danych w buforze wejściowym.

Init

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

Inicjuje obiekt TLVReader w celu odczytu z co najmniej jednego obiektu PacketBuffer.

Analiza rozpoczyna się od pozycji początkowej bufora (buf->DataStart()). Jeśli parametr allowDiscontiguousBuffers ma wartość prawda, czytelnik przechodzi przez łańcuch buforów połączonych wskaźnikami Next(). Analiza jest kontynuowana, dopóki nie zostaną wykorzystane wszystkie dane w łańcuchu bufora (oznaczone jako buf->Datalen()) lub dopóki nie zostaną przeanalizowane bajty maxLen.

Szczegóły
Parametry
[in] buf
Wskaźnik do obiektu PacketBuffer zawierającego dane TLV do analizy.
[in] maxLen
Maksymalna liczba bajtów do przeanalizowania. Domyślnie jest to łączna ilość danych w łańcuchu bufora wejściowego.
[in] allowDiscontiguousBuffers
Jeśli ma wartość true (prawda), po wykorzystaniu wszystkich danych w bieżącym buforze przejdź do następnego bufora. Jeśli ma wartość Fałsz, zatrzymaj analizę na końcu początkowego bufora.

Dalej

WEAVE_ERROR Next(
  void
)

Przewija obiekt TLVReader do następnego elementu TLV do odczytu.

Metoda Next() umieszcza obiekt czytnika w następnym elemencie w kodowaniu TLV, który znajduje się w tym samym kontekście ograniczenia. W szczególności jeśli czytnik znajduje się na najbardziej zewnętrznym poziomie kodowania TLV, wywołanie funkcji Next() spowoduje przeniesienie go do następnego elementu znajdującego się u góry góry. Jeśli czytnik znajduje się w elemencie kontenera TLV (strukturze, tablicy lub ścieżce), wywołanie funkcji Next() przeniesie go do następnego elementu kontenera.

Funkcja Next() ogranicza ruch czytnika do bieżącego kontekstu zawartości, dlatego wywołanie funkcji Next(), gdy czytelnik znajduje się w elemencie kontenera, przechodzi nad kontenerem, pomijając jego elementy składowe (oraz elementy wszystkich zagnieżdżonych kontenerów), aż dotrze do pierwszego elementu po kontenerze.

Gdy w konkretnym kontekście zawartości nie ma innych elementów, metoda Next() zwraca błąd WEAVE_END_OF_TLV, a położenie czytnika pozostanie niezmienione.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
Informacja, czy czytnik został poprawnie ustawiony na nowym elemencie.
WEAVE_END_OF_TLV
Jeśli żadne inne elementy nie są dostępne.
WEAVE_ERROR_TLV_UNDERRUN
Jeśli kodowanie TLV zostało zakończone przedwcześnie.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jeśli czytnik napotkał nieprawidłowy lub nieobsługiwany typ elementu TLV.
WEAVE_ERROR_INVALID_TLV_TAG
czytelnik napotkał tag TLV w nieprawidłowym kontekście.
WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
czytelnik napotkał zakodowany niejawnie tag TLV, dla którego identyfikator profilu jest nieznany.
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Jest to możliwe tylko wtedy, gdy GetNextBuffer ma wartość inną niż NULL.

Dalej

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

Przewija obiekt TLVReader do następnego elementu TLV, który ma zostać odczytany, potwierdzając typ i tag nowego elementu.

Metoda Next(TLVTypeexpectedType, uint64_texpectedTag) jest metodą udogodnienia, która działa tak samo jak funkcja Next(), ale sprawdza też, czy typ i tag nowego elementu TLV są zgodne z podanymi argumentami.

Szczegóły
Parametry
[in] expectedType
Oczekiwany typ danych dla następnego elementu.
[in] expectedTag
Oczekiwany tag następnego elementu.
Zwracane wartości
WEAVE_NO_ERROR
Informacja, czy czytnik został poprawnie ustawiony na nowym elemencie.
WEAVE_END_OF_TLV
Jeśli żadne inne elementy nie są dostępne.
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli typ nowego elementu nie pasuje do wartości argumentu expectedType.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
Jeśli tag powiązany z nowym elementem nie odpowiada wartości argumentu expectedTag.
WEAVE_ERROR_TLV_UNDERRUN
Jeśli kodowanie TLV zostało zakończone przedwcześnie.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jeśli czytnik napotkał nieprawidłowy lub nieobsługiwany typ elementu TLV.
WEAVE_ERROR_INVALID_TLV_TAG
czytelnik napotkał tag TLV w nieprawidłowym kontekście.
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Jest to możliwe tylko wtedy, gdy GetNextBuffer ma wartość inną niż NULL.

OpenContainer

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

Inicjuje nowy obiekt TLVReader do odczytu elementów kontenera TLV.

Metoda OpenContainer() inicjuje nowy obiekt TLVReader do odczytu elementów składowych kontenera TLV (struktury, tablicy lub ścieżki). Po wywołaniu funkcji OpenContainer() bieżący obiekt TLVReader musi zostać umieszczony w elemencie kontenera, który ma być odczytywany. Jako jedynym argumentem tej metody jest odwołanie do nowego czytnika, który zostanie zainicjowany w celu odczytu kontenera. Ten czytnik jest nazywany czytnikiem kontenerów, a czytnik, w przypadku którego wywoływana jest funkcja OpenContainer(), nazywany czytnikiem nadrzędnym.

Po powrocie metody OpenContainer() czytnik kontenerów jest umieszczany bezpośrednio przed pierwszym elementem kontenera. Wywołanie Next() na czytniku kontenera będzie przechodzić przez elementy zbioru aż do osiągnięcia wartości końcowej, po której czytelnik zwróci wartość WEAVE_END_OF_TLV.

Gdy czytnik kontenerów jest otwarty, aplikacje nie mogą wywoływać ani w inny sposób zmieniać stanu czytnika nadrzędnego. Gdy aplikacja skończy korzystać z czytnika kontenerów, musi ją zamknąć, wywołując na czytniku nadrzędnym wywołanie CloseContainer(), przekazując czytnik kontenerów jako argument. Aplikacje mogą zamknąć czytnik kontenerów w dowolnym momencie, nawet bez odczytu wszystkich elementów w bazowym kontenerze. Po zamknięciu czytnika kontenerów aplikacje mogą dalej z niego korzystać.

Czytnik kontenerów dziedziczy różne właściwości konfiguracji z czytnika nadrzędnego. Dostępne symbole:

  • Niejawny identyfikator profilu (ImplicitProfileId)
  • wskaźnik danych aplikacji (AppData)
  • Wskaźnik funkcji GetNextBuffer

Szczegóły
Parametry
[out] containerReader
Odwołanie do obiektu TLVReader, który zostanie zainicjowany w celu odczytu elementów bieżącego elementu kontenera. Wszystkie dane powiązane z podanym obiektem zostaną zastąpione.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli przy użyciu metody się udało:
WEAVE_ERROR_INCORRECT_STATE
Jeśli bieżący element nie jest umieszczony na elemencie kontenera.

Pomiń

WEAVE_ERROR Skip(
  void
)

Przesuwa obiekt TLVReader na bieżący element TLV.

Metoda Skip() umieszcza obiekt czytnika bezpośrednio po bieżącym elemencie TLV, tak aby kolejne wywołanie funkcji Next() skierowało czytelnika do kolejnego elementu. Podobnie jak w przypadku funkcji Next(), jeśli w momencie wywołania czytelnik zostanie umieszczony na elemencie kontenera, elementy kontenera zostaną pominięte. Jeśli czytnik nie jest umieszczony na żadnym elemencie, jego położenie pozostaje niezmienione.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
Informacja, czy czytnik został poprawnie ustawiony na nowym elemencie.
WEAVE_END_OF_TLV
Jeśli żadne inne elementy nie są dostępne.
WEAVE_ERROR_TLV_UNDERRUN
Jeśli kodowanie TLV zostało zakończone przedwcześnie.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jeśli czytnik napotkał nieprawidłowy lub nieobsługiwany typ elementu TLV.
WEAVE_ERROR_INVALID_TLV_TAG
czytelnik napotkał tag TLV w nieprawidłowym kontekście.
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Jest to możliwe tylko wtedy, gdy GetNextBuffer ma wartość inną niż NULL.

VerifyEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)

Sprawdza, czy obiekt TVLReader znajduje się na końcu kontenera TLV.

Metoda VerifyEndOfContainer() sprawdza, czy w bieżącym kontenerze TLV nie ma dalszych elementów TLV do odczytu. Jest to wygodna metoda, która odpowiada wywołaniu funkcji Next() i sprawdzaniu zwracanej wartości WEAVE_END_OF_TLV.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
Jeśli nie ma więcej elementów TLV do odczytania.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
jeśli w kolekcji został znaleziony inny element TLV.
WEAVE_ERROR_TLV_UNDERRUN
Jeśli kodowanie TLV zostało zakończone przedwcześnie.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jeśli czytnik napotkał nieprawidłowy lub nieobsługiwany typ elementu TLV.
WEAVE_ERROR_INVALID_TLV_TAG
czytelnik napotkał tag TLV w nieprawidłowym kontekście.
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Jest to możliwe tylko wtedy, gdy GetNextBuffer ma wartość inną niż NULL.

Funkcje chronione

ClearElementState

void ClearElementState(
  void
)

Wyczyść stan TLVReader.

Ta metoda służy do umieszczania czytnika przed pierwszym TLV, między TLV lub po ostatnim TLV.

ElementType

TLVElementType ElementType(
  void
) const 

To jest metoda prywatna, która zwraca TLVElementType z mControlByte.

EnsureData

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

GetElementHeadLength

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

Jest to prywatna metoda obliczania długości nagłówka elementu TLV.

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
)

Pomiń wszystkie dane w bieżącym TLV, odczytując je bez bufora docelowego.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
Czy czytnik został prawidłowo umieszczony na końcu danych.
other
Inne kody błędów Weave lub platformy zwracane przez skonfigurowaną funkcję GetNextBuffer(). Jest to możliwe tylko wtedy, gdy GetNextBuffer ma wartość inną niż NULL.

SkipToEndOfContainer

WEAVE_ERROR SkipToEndOfContainer(
  void
)

VerifyElement

WEAVE_ERROR VerifyElement(
  void
)

Chronione funkcje statyczne

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
)