nl::Weave::TLV::TLVReader

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

Szybki parser zapewniający dużą ilość pamięci dla danych kodowanych w formacie TLV Weave.

Podsumowanie

W przypadku danych TLV Weave element TLVReader implementuje dostępny tylko do przodu parser w stylu „pull”. Obiekt TLVReader działa jak kursor, którego można używać do iteracji nad sekwencją elementów TLV i interpretowania ich zawartości. Gdy jest umieszczona w elemencie, może wykonywać wywołania metod Get() czytnika w celu wysłania zapytania o typ i tag bieżącego elementu oraz pobranie dowolnej powiązanej wartości. Metoda Next() użytkownika jest wykorzystywana do przechodzenia między elementami.

Obiekt TLVReader jest zawsze umieszczony przed elementem TLV, na nim lub po nim. Po pierwszym zainicjowaniu tag TLVReader jest umieszczany bezpośrednio przed pierwszym elementem kodowania. Aby rozpocząć odczytywanie, aplikacja musi wywołać wstępne wywołanie metody Next(), aby umieścić czytnik na pierwszym elemencie. Jeśli element kontenera zostanie napotkany w postaci struktury, metoda OpenContainer() lub EnterContainer() może posłużyć do iteracji zawartości kontenera za pomocą tablicy lub ścieżki.

Gdy czytnik osiągnie koniec kodowania TLV lub ostatni element w kontenerze, sygnalizuje aplikację, zwracając błąd WEAVE_END_OF_TLV z metody Next(). Czytnik będzie zwracać kod WEAVE_END_OF_TLV, dopóki nie zostanie ponownie zainicjowany lub dopóki bieżący kontener nie zostanie zamknięty (za pomocą funkcji CloseContainer() / ExitContainer()).

Obiekt TLVReader może analizować dane bezpośrednio ze stałego bufora wejściowego lub z łańcucha co najmniej jednego bufora pakietów. Dodatkowo aplikacje mogą dostarczać funkcję GetNextBuffer do przekazywania danych do czytnika z dowolnego źródła, np. z gniazda 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, która umożliwia pobieranie dodatkowych danych TLV do analizy.

Atrybuty publiczne

AppData
void *
Pole wskaźnika, którego można używać w przypadku danych specyficznych dla aplikacji.
GetNextBuffer
Wskaźnik funkcji, która wygeneruje dane wejściowe dla obiektu TLVReader.
ImplicitProfileId
uint32_t
Identyfikator profilu, który ma być używany dla tagów profilu zakodowanego w postaci 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 ciągu bajtowego lub ciągu UTF8.
DupString(char *& buf)
Przydziela i zwraca bufor zawierający zakończenie wartości null bieżącego bajta lub ciągu UTF8.
EnterContainer(TLVType & outerContainerType)
Przygotowuje obiekt TLVReader do odczytu elementów kontenera TLV.
ExitContainer(TLVType outerContainerType)
Kończy odczyt kontenera TLV i przygotowuje obiekt TLVReader do odczytu elementów po kontenerze.
Get(bool & v)
Pobierz wartość bieżącego elementu jako typ wartości logicznej.
Get(int8_t & v)
Pobierz wartość bieżącego elementu w postaci 8-bitowej liczby całkowitej ze znakiem.
Get(int16_t & v)
Pobierz wartość bieżącego elementu w postaci 16-bitowej liczby całkowitej ze znakiem.
Get(int32_t & v)
Pobierz wartość bieżącego elementu w postaci 32-bitowej liczby całkowitej ze znakiem.
Get(int64_t & v)
Pobierz wartość bieżącego elementu w postaci 64-bitowej liczby całkowitej ze znakiem.
Get(uint8_t & v)
Pobierz wartość bieżącego elementu w postaci 8-bitowej bez znaku liczby całkowitej.
Get(uint16_t & v)
Pobierz wartość bieżącego elementu w postaci 16-bitowej nieoznaczonej liczby całkowitej.
Get(uint32_t & v)
Pobierz wartość bieżącego elementu w postaci 32-bitowej bez znaku liczby całkowitej.
Get(uint64_t & v)
Pobierz wartość bieżącego elementu w postaci 64-bitowej nieoznaczonej liczby całkowitej.
Get(float & v)
Get(double & v)
Pobierz wartość bieżącego elementu w postaci liczby zmiennoprzecinkowej o podwójnej precyzji.
GetBufHandle(void) const
uintptr_t
GetBytes(uint8_t *buf, uint32_t bufSize)
Pobierz wartość bieżącego elementu ciągu znaków UTF-8 lub bajtów.
GetContainerType(void) const
Zwraca typ kontenera, w którym aktualnie odczytuje kod TLVReader.
GetControlByte(void) const
uint16_t
Zwraca bajt kontrolny powiązany z bieżącym elementem TLV.
GetDataPtr(const uint8_t *& data)
Uzyskiwanie wskaźnika do początkowego zakodowanego bajtu elementu ciągu TLV lub ciągu znaków 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 chwili 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 można odczytać do osiągnięcia maksymalnej długości odczytu.
GetString(char *buf, uint32_t bufSize)
Pobierz wartość bieżącego elementu ciągu znaków UTF-8 lub bajtów 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 pojedynczego bufora wejściowego.
Init(PacketBuffer *buf, uint32_t maxLen)
void
Inicjuje obiekt TLVReader do odczytu z pojedynczego bufora pakietów.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Inicjuje obiekt TLVReader do odczytu z co najmniej jednego PacketBuffer.
Next(void)
Przenosi obiekt TLVReader do następnego elementu TLV do odczytania.
Next(TLVType expectedType, uint64_t expectedTag)
Przenosi obiekt TLVReader do następnego elementu TLV do odczytania, podając typ i tag nowego elementu.
OpenContainer(TLVReader & containerReader)
Inicjuje nowy obiekt TLVReader do odczytu elementów kontenera TLV.
Skip(void)
Przesuwa obiekt TLVReader tak, aby był bezpośrednio po bieżącym elemencie TLV.
VerifyEndOfContainer(void)
Sprawdza, czy obiekt TVLReader znajduje się na końcu kontenera TLV.

Funkcje chronione

ClearElementState(void)
void
Wyczyść stan klasy TLVReader.
ElementType(void) const
TLVElementType
Jest to prywatna metoda, 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 zawarte 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, która umożliwia pobieranie dodatkowych danych TLV do analizy.

Funkcje tego typu służą do przesyłania danych wejściowych do czytnika 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 wysyła żądanie 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 z wartością 0 przed pierwszym wywołaniem.
[in,out] bufStart
Odwołanie do wskaźnika danych. Przy wejściu do funkcji bufStart wskazuje 1 bajt ponad ostatni bajt danych TLV wykorzystany przez czytnik. Przy wyjściu parametr bufStart powinien wskazywać pierwszy bajt nowych danych TLV do przeanalizowania. Nowa wartość wskaźnika może się znajdować w tym samym buforze co wykorzystane wcześniej dane lub wskazywać zupełnie nowy bufor.
[out] bufLen
Odwołanie do nieoznaczonej liczby całkowitej, którą funkcja musi ustawić na liczbę zwróconych bajtów danych TLV. Jeśli osiągnięto koniec danych wejściowych TLV, funkcja powinna ustawić tę wartość na 0.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli funkcja wygenerował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 platformy wskazujące, ż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 funkcji, która wygeneruje dane wejściowe dla obiektu TLVReader.

Jeśli ustawisz wartość NULL (wartość domyślną), czytelnik przyjmie, że nie są dostępne żadne dalsze dane wejściowe.

Funkcję GetNextBuffer można ustawić przez aplikację w dowolnym momencie, ale zwykle jest ona ustawiana po zainicjowaniu czytnika.

Dodatkowe informacje na temat wdrażania funkcji GetNextBuffer można znaleźć w definicji typu GetNextBufferFunct.

ImplicitProfileId

uint32_t ImplicitProfileId

Identyfikator profilu, który ma być używany dla tagów profilu zakodowanego w postaci niejawnej.

Gdy czytelnik napotka tag powiązany z profilem, który został zakodowany w formie niejawnej, użyje wartości właściwości ImplicitProfileId jako zakładanego identyfikatora profilu tego tagu.

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

Jeśli napotka tag zakodowany niejawnie, a 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ływać odpowiadające jej wywołanie funkcji CloseContainer(), przekazując do obu metod ten sam czytnik kontenerów.

Po zwróceniu metody CloseContainer() czytnik nadrzędny znajduje się bezpośrednio przed pierwszym elementem, który występuje za kontenerem. Od tego momentu aplikacja może używać metody Next() do przechodzenia między pozostałymi elementami.

Aplikacje mogą w każdej chwili wywołać metodę Zamknij CloseContainer() na czytniku nadrzędnym niezależnie od tego, czy wszystkie elementy w kontenerze zostały odczytane. Po wywołaniu metody CloseContainer() aplikacja powinna uznać, że czytnik kontenerów jest „deinicjowany” i nie może dalej go używać bez ponownego zainicjowania.

Szczegóły
Parametry
[in] containerReader
Odwołanie do obiektu TLVReader przesłanego do metody OpenContainer().
Zwracane wartości
WEAVE_NO_ERROR
Jeśli to się uda,
WEAVE_ERROR_INCORRECT_STATE
jeśli metoda OpenContainer() nie została wywołana z czytnika lub czytnik kontenerów nie pasuje do metody przekazanej do metody OpenContainer().
WEAVE_ERROR_TLV_UNDERRUN
Czy kodowanie TLV zakończyło się przedwcześnie.
WEAVE_ERROR_INVALID_TLV_ELEMENT
czytelnik 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(). Możliwe tylko wtedy, gdy GetNextBuffer nie ma wartości NULL.

DupBytes

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

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

Ta metoda tworzy bufor i zwraca kopię danych powiązanych z elementem ciągu znaków UTF-8 w bieżącej pozycji. Pamięć bufora jest odczytywana za pomocą metody Malloc() i powinna zostać zwolniona za pomocą funkcji free() przez element wywołujący, gdy nie jest już potrzebna.

Szczegóły
Parametry
[out] buf
Odwołanie do wskaźnika, do którego po powodzeniu zostanie przypisany przydzielony bufor sterty o rozmiarze dataLen bajtów.
[out] dataLen
Odwołanie do miejsca na dane o rozmiarze buf w bajtach w przypadku powodzenia.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest ciągiem bajtów TLV lub ciągiem UTF8 albo czytnik nie znajduje się w elemencie.
WEAVE_ERROR_NO_MEMORY
Jeśli nie udało się przydzielić pamięci dla bufora wyjściowego.
WEAVE_ERROR_TLV_UNDERRUN
Czy kodowanie TLV zakończyło się przedwcześnie.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Jeśli platforma docelowa nie obsługuje Malloc() i free().
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Możliwe tylko wtedy, gdy GetNextBuffer nie ma wartości NULL.

DupString

WEAVE_ERROR DupString(
  char *& buf
)

Przydziela i zwraca bufor zawierający zakończenie wartości null bieżącego bajta lub ciągu UTF8.

Ta metoda tworzy bufor dla i zwraca kopię danych o wartości null o wartości null powiązanej z elementem ciągu znaków UTF-8 w bieżącej pozycji. Pamięć bufora jest odczytywana za pomocą metody Malloc() i powinna zostać zwolniona za pomocą funkcji free() przez element wywołujący, gdy nie jest już potrzebna.

Szczegóły
Parametry
[out] buf
Odwołanie do wskaźnika, do którego zostanie przypisany bufor alokowany na stercie w przypadku powodzenia.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest ciągiem bajtów TLV lub ciągiem UTF8 albo czytnik nie znajduje się w elemencie.
WEAVE_ERROR_NO_MEMORY
Jeśli nie udało się przydzielić pamięci dla bufora wyjściowego.
WEAVE_ERROR_TLV_UNDERRUN
Czy kodowanie TLV zakończyło się przedwcześnie.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Jeśli platforma docelowa nie obsługuje Malloc() i free().
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Możliwe tylko wtedy, gdy GetNextBuffer nie ma wartości NULL.

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

Przygotowuje obiekt TLVReader do odczytu elementów kontenera TLV.

Metoda EnterContainer() przygotowuje bieżący obiekt TLVReader do rozpoczynania odczytu elementów składowych kontenera TLV (struktury, tablicy lub ścieżki). Każde wywołanie aplikacji EnterContainer() musi odpowiadać wywołaniu ExitContainer().

Po wywołaniu metody EnterContainer() obiekt TLVReader musi być umieszczony w elemencie kontenera, aby można go było odczytać. Ta metoda przyjmuje jako argument odwołanie do wartości TLVType, która zostanie użyta do zapisania kontekstu czytnika podczas odczytu kontenera.

Po zwróceniu metody EnterContainer() czytnik znajduje się bezpośrednio przed pierwszym elementem kontenera. Powtarzające się wywoływanie funkcji Next() powoduje, że czytnik przechodzi przez elementy kolekcji aż do osiągnięcia końca zbioru. Gdy to nastąpi, czytnik zwróci wartość WEAVE_END_OF_TLV.

Gdy aplikacja skończy odczytywać kontener, może kontynuować odczytywanie elementów, które znajdują się za kontenerem, wywołując metodę ExitContainer().

Szczegóły
Parametry
[out] outerContainerType
Odwołanie do wartości TLVType, która otrzyma kontekst czytelnika.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli to się uda,
WEAVE_ERROR_INCORRECT_STATE
Bieżący element nie znajduje się na elemencie kontenera.

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

Kończy odczyt kontenera TLV i przygotowuje obiekt TLVReader do odczytu elementów po kontenerze.

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

Gdy ExitContainer() zwróci, czytelnik zostanie umieszczony bezpośrednio przed pierwszym elementem, który jest za kontenerem. Od tego momentu aplikacja może używać metody Next() do przechodzenia między pozostałymi elementami.

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

Szczegóły
Parametry
[in] outerContainerType
Wartość TLVType zwrócona przez metodę EnterContainer().
Zwracane wartości
WEAVE_NO_ERROR
Jeśli to się uda,
WEAVE_ERROR_INCORRECT_STATE
jeśli metoda OpenContainer() nie została wywołana z czytnika lub czytnik kontenerów nie pasuje do metody przekazanej do metody OpenContainer().
WEAVE_ERROR_TLV_UNDERRUN
Czy kodowanie TLV zakończyło się przedwcześnie.
WEAVE_ERROR_INVALID_TLV_ELEMENT
czytelnik 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(). Możliwe tylko wtedy, gdy GetNextBuffer nie ma wartości NULL.

Pobierz

WEAVE_ERROR Get(
  bool & v
)

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

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

Pobierz

WEAVE_ERROR Get(
  int8_t & v
)

Pobierz wartość bieżącego elementu w postaci 8-bitowej liczby całkowitej ze znakiem.

Jeśli zakodowana liczba 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 to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub nie) albo czytnik nie znajduje się w elemencie.

Pobierz

WEAVE_ERROR Get(
  int16_t & v
)

Pobierz wartość bieżącego elementu w postaci 16-bitowej liczby całkowitej ze znakiem.

Jeśli zakodowana liczba 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 to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub nie) albo czytnik nie znajduje się w elemencie.

Pobierz

WEAVE_ERROR Get(
  int32_t & v
)

Pobierz wartość bieżącego elementu w postaci 32-bitowej liczby całkowitej ze znakiem.

Jeśli zakodowana liczba 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 to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub nie) albo czytnik nie znajduje się w elemencie.

Pobierz

WEAVE_ERROR Get(
  int64_t & v
)

Pobierz wartość bieżącego elementu w postaci 64-bitowej liczby całkowitej ze znakiem.

Jeśli zakodowana liczba 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 to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub nie) albo czytnik nie znajduje się w elemencie.

Pobierz

WEAVE_ERROR Get(
  uint8_t & v
)

Pobierz wartość bieżącego elementu w postaci 8-bitowej bez znaku liczby całkowitej.

Jeśli zakodowana liczba całkowita jest większa niż typ danych wyjściowych, wynikowa wartość zostanie obcięta. Podobnie, jeśli zakodowana liczba całkowita jest ujemna, wartość 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 to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub nie) albo czytnik nie znajduje się w elemencie.

Pobierz

WEAVE_ERROR Get(
  uint16_t & v
)

Pobierz wartość bieżącego elementu w postaci 16-bitowej nieoznaczonej liczby całkowitej.

Jeśli zakodowana liczba całkowita jest większa niż typ danych wyjściowych, wynikowa wartość zostanie obcięta. Podobnie, jeśli zakodowana liczba całkowita jest ujemna, wartość 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 to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub nie) albo czytnik nie znajduje się w elemencie.

Pobierz

WEAVE_ERROR Get(
  uint32_t & v
)

Pobierz wartość bieżącego elementu w postaci 32-bitowej bez znaku liczby całkowitej.

Jeśli zakodowana liczba całkowita jest większa niż typ danych wyjściowych, wynikowa wartość zostanie obcięta. Podobnie, jeśli zakodowana liczba całkowita jest ujemna, wartość 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 to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub nie) albo czytnik nie znajduje się w elemencie.

Pobierz

WEAVE_ERROR Get(
  uint64_t & v
)

Pobierz wartość bieżącego elementu w postaci 64-bitowej nieoznaczonej liczby całkowitej.

Jeśli zakodowana liczba całkowita jest ujemna, wartość 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 to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest liczbą całkowitą TLV (ze znakiem lub nie) albo czytnik nie znajduje się w elemencie.

Pobierz

WEAVE_ERROR Get(
  float & v
)

Pobierz

WEAVE_ERROR Get(
  double & v
)

Pobierz wartość bieżącego elementu w postaci liczby zmiennoprzecinkowej 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 to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest typu zmiennoprzecinkowego TLV lub czytnik nie jest umieszczony w elemencie.

GetBufHandle

uintptr_t GetBufHandle(
  void
) const 

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

Pobierz wartość bieżącego elementu ciągu znaków UTF-8 lub bajtów.

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

Szczegóły
Parametry
[in] buf
Wskaźnik do bufora odbierającego dane ciągu.
[in] bufSize
Rozmiar bufora w bajtach wskazywany przez: buf.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest ciągiem bajtów TLV lub ciągiem UTF8 albo czytnik nie znajduje się w elemencie.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jeśli dostarczony bufor jest zbyt mały, aby przechowywać dane powiązane z bieżącym elementem.
WEAVE_ERROR_TLV_UNDERRUN
Czy kodowanie TLV zakończyło się przedwcześnie.
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Możliwe tylko wtedy, gdy GetNextBuffer nie ma wartości NULL.

GetContainerType

TLVType GetContainerType(
  void
) const 

Zwraca typ kontenera, w którym aktualnie odczytuje kod TLVReader.

Metoda GetContainerType() zwraca typ kontenera TLV, w którym odczytuje obiekt TLVReader. Jeśli tag TLVReader znajduje się na najbardziej zewnętrznym poziomie kodowania TLV (czyli przed, w najbardziej zewnętrznym elemencie TLV lub po nim), metoda zwraca wartość kTLVType_NotSpecified.

Szczegóły
Zwroty
Wartość TLVType bieżącego kontenera lub wartość 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 nie musi wiedzieć o bajcie kontrolnym i tylko wewnętrzna implementacja TLV powinna mieć do niego dostęp. Dostęp do bajtu kontrolnego jest jednak przydatny przy debugowaniu za pomocą narzędzi TLVDebugnarzędzia (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 znajduje się na elemencie.

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

Uzyskiwanie wskaźnika do początkowego zakodowanego bajtu elementu ciągu TLV lub ciągu znaków UTF8.

Ta metoda zwraca bezpośredni wskaźnik zakodowanej wartości ciągu znaków w podstawowym buforze wejściowym. Aby metoda się powiodła, metoda wymaga, aby cała wartość ciągu znajdowała się w jednym buforze. W przeciwnym razie zwraca błąd WEAVE_ERROR_TLV_UNDERRUN. To sprawia, że jest to metoda ograniczonego użycia podczas odczytywania danych z wielu nieprzylegających do siebie buforów.

Szczegóły
Parametry
[out] data
Odwołanie do wskaźnika stałego, który będzie otrzymywać wskaźnik do danych bazowych dotyczących ciągu.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest ciągiem bajtów TLV lub ciągiem UTF8 albo czytnik nie znajduje się w elemencie.
WEAVE_ERROR_TLV_UNDERRUN
Kodowanie TLV zakończyło się przedwcześnie lub wartość bieżącego elementu ciągu nie znalazła się w jednym sąsiadującym buforze.
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Możliwe tylko wtedy, gdy GetNextBuffer nie ma wartości 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 ciąg znaków UTF8 lub ciąg bajtów. W przypadku ciągów znaków UTF8 zwracaną wartością jest liczba bajtów w ciągu, a nie liczba znaków.

Szczegóły
Zwroty
Długość (w bajtach) danych powiązanych z bieżącym elementem TLV lub 0 , jeśli bieżący element nie jest ciągiem znaków UTF8 ani ciągiem bajtów albo jeśli czytnik nie znajduje się w elemencie.

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

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

Szczegóły
Zwroty
Łączna liczba bajtów odczytanych od momentu 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 danych wejściowych odpowiadający bieżącej pozycji czytelnika.

GetRemainingLength

uint32_t GetRemainingLength(
  void
) const 

Zwraca łączną liczbę bajtów, które można odczytać do osiągnięcia maksymalnej długości odczytu.

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

GetString

WEAVE_ERROR GetString(
  char *buf,
  uint32_t bufSize
)

Pobierz wartość bieżącego elementu ciągu znaków UTF-8 lub bajtów jako ciąg znaków zakończony wartością null.

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

Szczegóły
Parametry
[in] buf
Wskaźnik do bufora odbierającego dane ciągu bajtów.
[in] bufSize
Rozmiar bufora w bajtach wskazywany przez: buf.
Zwracane wartości
WEAVE_NO_ERROR
Jeśli to się uda,
WEAVE_ERROR_WRONG_TLV_TYPE
Jeśli bieżący element nie jest ciągiem bajtów TLV lub ciągiem UTF8 albo czytnik nie znajduje się w elemencie.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jeśli dostarczony bufor jest zbyt mały, aby przechowywać dane powiązane z bieżącym elementem.
WEAVE_ERROR_TLV_UNDERRUN
Czy kodowanie TLV zakończyło się przedwcześnie.
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Możliwe tylko wtedy, gdy GetNextBuffer nie ma wartości NULL.

GetTag

uint64_t GetTag(
  void
) const 

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

Wartości zwróconej przez funkcję GetTag() można użyć za pomocą funkcji narzędziowych tagu (IsProfileTag(), IsContextTag(), ProfileIdFromTag() itp.), aby określić typ tagu i wyodrębnić różne 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ąca typ danych bieżącego elementu TLV. Jeśli czytnik nie znajduje się w elemencie TLV, zwracana wartość będzie miała postać kTLVType_NotSpecified.

Zainicjuj

void Init(
  const TLVReader & aReader
)

Inicjuje obiekt TLVReader z innego obiektu TLVReader.

Szczegóły
Parametry
[in] aReader
Odwołanie tylko do odczytu do obiektu TLVReader, na podstawie którego można to zainicjować.

Zainicjuj

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

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

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

Zainicjuj

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Inicjuje obiekt TLVReader do odczytu z pojedynczego bufora pakietów.

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

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

Zainicjuj

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

Inicjuje obiekt TLVReader do odczytu z co najmniej jednego PacketBuffer.

Analiza rozpoczyna się od początkowej pozycji bufora (buf->DataStart()). Jeśli parametr allowDiscontiguousBuffers ma wartość prawda, czytelnik przechodzi przez łańcuch buforów połączonych wskaźnikami Next(). Analizowanie jest kontynuowane do momentu wykorzystania wszystkich danych w łańcuchu bufora (zgodnie z oznaczeniem buf->Datalen()) lub przeanalizowania maksymalnej liczby bajtów.

Szczegóły
Parametry
[in] buf
Wskaźnik do klasy PacketBuffer zawierającej dane TLV do przeanalizowania.
[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ść prawda, przejście do następnego bufora w łańcuchu po wykorzystaniu wszystkich danych w bieżącym buforze. Jeśli ma wartość false (fałsz), zatrzymaj analizowanie na końcu początkowego bufora.

Dalej

WEAVE_ERROR Next(
  void
)

Przenosi obiekt TLVReader do następnego elementu TLV do odczytania.

Metoda Next() umieszcza obiekt czytnika w następnym elemencie w kodowaniu TLV, które znajduje się w tym samym kontekście izolacji. Jeśli czytnik znajduje się na najwyższym zewnętrznym poziomie kodowania TLV, wywołanie metody Next() spowoduje przeniesienie go do następnego elementu najwyższego poziomu. Jeśli czytnik znajduje się w elemencie kontenera TLV (strukturze, tablicy lub ścieżce), wywołanie metody Next() przeniesie go do następnego elementu kontenera.

Funkcja Next() ogranicza ruch czytnika do bieżącego kontekstu izolacji, dlatego wywołanie metody Next(), gdy czytnik znajduje się w elemencie kontenera, powoduje przejście nad kontenera, pomijanie jego elementów składowych (i elementów zagnieżdżonych kontenerów), aż dotrze do pierwszego elementu za kontenerem.

Gdy w konkretnym kontekście izolacji nie ma więcej elementów, metoda Next() zwraca błąd WEAVE_END_OF_TLV, a położenie czytnika się nie zmienia.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
Czy czytnik został umieszczony w nowym elemencie.
WEAVE_END_OF_TLV
Jeśli nie są dostępne żadne inne elementy,
WEAVE_ERROR_TLV_UNDERRUN
Czy kodowanie TLV zakończyło się przedwcześnie.
WEAVE_ERROR_INVALID_TLV_ELEMENT
czytelnik 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ł domyślnie zakodowany tag TLV, którego odpowiedni identyfikator profilu jest nieznany.
other
Inne kody błędów Weave lub platformy zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Możliwe tylko wtedy, gdy GetNextBuffer nie ma wartości NULL.

Dalej

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

Przenosi obiekt TLVReader do następnego elementu TLV do odczytania, podając typ i tag nowego elementu.

Metoda Next(TLVTypeExpectType, uint64_texpectedTag) to wygodna metoda, która działa tak samo jak Next(), ale sprawdza, 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 dla następnego elementu.
Zwracane wartości
WEAVE_NO_ERROR
Czy czytnik został umieszczony w nowym elemencie.
WEAVE_END_OF_TLV
Jeśli nie są dostępne żadne inne elementy,
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 pasuje do wartości argumentu expectedTag.
WEAVE_ERROR_TLV_UNDERRUN
Czy kodowanie TLV zakończyło się przedwcześnie.
WEAVE_ERROR_INVALID_TLV_ELEMENT
czytelnik 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(). Możliwe tylko wtedy, gdy GetNextBuffer nie ma wartości 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 metody OpenContainer() bieżący obiekt TLVReader musi być umieszczony w elemencie kontenera, aby można go było odczytać. Metoda wykorzystuje jako jedyny argument odwołanie do nowego czytnika, który zostanie zainicjowany w celu odczytania kontenera. Ten czytnik jest nazywany czytnikiem kontenerów, a czytnik, który wywołuje funkcję OpenContainer(), jest nazywany czytnikiem nadrzędnym.

Po zwróceniu metody OpenContainer() czytnik kontenerów znajduje się bezpośrednio przed pierwszym elementem kontenera. Wywołanie Next() w czytniku kontenera powoduje przejście między elementami zbioru aż do osiągnięcia końca kolekcji. Gdy to nastąpi, czytnik zwróci wartość WEAVE_END_OF_TLV.

Gdy czytnik kontenera jest otwarty, aplikacje nie mogą wykonywać wywołań 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 w czytniku nadrzędnym metodę CloseContainer(), która przekazuje czytnik kontenerów jako argument. Aplikacje mogą zamknąć czytnik kontenerów w dowolnym momencie, zarówno wraz z odczytu, jak i bez odczytywania wszystkich elementów znajdujących się w kontenerze. Po zamknięciu czytnika kontenera aplikacje mogą nadal korzystać z czytnika nadrzędnego.

Czytnik kontenerów dziedziczy różne właściwości konfiguracji po czytniku nadrzędnym. Dostępne symbole:

  • Identyfikator profilu domyślnego (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 to się uda,
WEAVE_ERROR_INCORRECT_STATE
Bieżący element nie znajduje się na elemencie kontenera.

Pomiń

WEAVE_ERROR Skip(
  void
)

Przesuwa obiekt TLVReader tak, aby był bezpośrednio po bieżącym elemencie TLV.

Metoda Pomiń() umieszcza obiekt czytnika tuż po bieżącym elemencie TLV, tak aby kolejne wywołanie funkcji Next() przekierowało użytkownika do kolejnego elementu. Podobnie jak w przypadku funkcji Next(), jeśli w momencie wywołania czytnik znajduje się na elemencie kontenera, jego elementy są pomijane. Jeśli czytnik nie znajduje się na żadnym elemencie, jego położenie pozostaje bez zmian.

Szczegóły
Zwracane wartości
WEAVE_NO_ERROR
Czy czytnik został umieszczony w nowym elemencie.
WEAVE_END_OF_TLV
Jeśli nie są dostępne żadne inne elementy,
WEAVE_ERROR_TLV_UNDERRUN
Czy kodowanie TLV zakończyło się przedwcześnie.
WEAVE_ERROR_INVALID_TLV_ELEMENT
czytelnik 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(). Możliwe tylko wtedy, gdy GetNextBuffer nie ma wartości 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 więcej elementów TLV do odczytu. Jest to wygodna metoda, która jest odpowiednikiem wywoływania funkcji Next() i sprawdzania 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
czy w kolekcji znaleziono inny element TLV.
WEAVE_ERROR_TLV_UNDERRUN
Czy kodowanie TLV zakończyło się przedwcześnie.
WEAVE_ERROR_INVALID_TLV_ELEMENT
czytelnik 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(). Możliwe tylko wtedy, gdy GetNextBuffer nie ma wartości NULL.

Funkcje chronione

ClearElementState

void ClearElementState(
  void
)

Wyczyść stan klasy TLVReader.

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

ElementType

TLVElementType ElementType(
  void
) const 

Jest to prywatna metoda, która zwraca wartość 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 zawarte 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 zwrócone przez skonfigurowaną funkcję GetNextBuffer(). Możliwe tylko wtedy, gdy GetNextBuffer nie ma wartości 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
)