nl::Weave::TLV::TLVReader

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

Bietet einen speichereffizienten Parser für Daten, die im Weave-TLV-Format codiert sind.

Zusammenfassung

TLVReader implementiert einen Forward-Parser für Weave-TLV-Daten im Pull-Stil. Das TLVReader-Objekt fungiert als Cursor, mit dem eine Folge von TLV-Elementen iteriert und deren Inhalt interpretiert werden kann. Wenn Anwendungen in einem Element positioniert sind, können sie die Get()-Methoden des Lesers aufrufen, um den Typ und das Tag des aktuellen Elements abzufragen und den zugehörigen Wert zu extrahieren. Die Methode Next() des Lesers wird verwendet, um von Element zu Element zu gelangen.

Ein TLVReader-Objekt wird immer entweder vor, auf oder nach einem TLV-Element positioniert. Bei der ersten Initialisierung wird ein TLVReader direkt vor dem ersten Element der Codierung positioniert. Um mit dem Lesen zu beginnen, muss eine Anwendung einen ersten Aufruf an die Methode Next() senden, um den Reader auf dem ersten Element zu positionieren. Wenn in einem Containerelement entweder eine Struktur, ein Array oder ein Pfad erkannt wird, können die Methoden OpenContainer() oder EnterContainer() verwendet werden, um den Inhalt des Containers zu durchlaufen.

Wenn das Lesegerät das Ende einer TLV-Codierung oder das letzte Element in einem Container erreicht, signalisiert es der Anwendung, indem es den Fehler WEAVE_END_OF_TLV von der Methode Next() zurückgibt. Das Reader gibt weiterhin WEAVE_END_OF_TLV zurück, bis es neu initialisiert oder der aktuelle Container beendet wird (über CloseContainer() / ExitContainer()).

Ein TLVReader-Objekt kann Daten direkt aus einem festen Eingabepuffer oder aus einer Kette von einem oder mehreren PacketBuffers parsen. Außerdem können Anwendungen eine GetNextBuffer-Funktion bereitstellen, um Daten aus einer beliebigen Quelle an das Lesegerät zu übergeben, z.B. ein Socket oder einen seriellen Port.

Übernahme

Direkte bekannte abgeleitete Klassen:
  nl::Weave::Profiles::DataManagement_Current::CircularEventReader
  nl::Weave::TLV::CircularTLVReader

Öffentliche Typen

GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR(*
Eine Funktion, mit der zusätzliche TLV-Daten abgerufen werden können, die geparst werden sollen.

Öffentliche Attribute

AppData
void *
Ein Zeigerfeld, das für anwendungsspezifische Daten verwendet werden kann.
GetNextBuffer
Ein Zeiger auf eine Funktion, die Eingabedaten für das TLVReader-Objekt erzeugt.
ImplicitProfileId
uint32_t
Die Profil-ID, die für Profil-Tags verwendet werden soll, die in impliziter Form codiert sind.

Geschützte Attribute

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 *

Öffentliche Funktionen

CloseContainer(TLVReader & containerReader)
Schließt das Lesen eines TLV-Containers nach einem Aufruf von OpenContainer() ab.
DupBytes(uint8_t *& buf, uint32_t & dataLen)
Ordnet einen Zwischenspeicher zu und gibt diesen zurück, der den Wert des aktuellen Byte- oder UTF8-Strings enthält.
DupString(char *& buf)
Ordnet einen Zwischenspeicher zu und gibt diesen zurück, der den mit Null endenden Wert des aktuellen Byte- oder UTF8-Strings enthält.
EnterContainer(TLVType & outerContainerType)
Bereitet ein TLVReader-Objekt für das Lesen der Mitglieder des TLV-Containerelements vor.
ExitContainer(TLVType outerContainerType)
Schließt das Lesen eines TLV-Containers ab und bereitet ein TLVReader-Objekt vor, um Elemente nach dem Container zu lesen.
Get(bool & v)
Ruft den Wert des aktuellen Elements als boolescher Typ ab.
Get(int8_t & v)
Ruft den Wert des aktuellen Elements als 8-Bit-Ganzzahl mit Vorzeichen ab.
Get(int16_t & v)
Ruft den Wert des aktuellen Elements als vorzeichenbehaftete 16-Bit-Ganzzahl ab.
Get(int32_t & v)
Ruft den Wert des aktuellen Elements als 32-Bit-Ganzzahl mit Vorzeichen ab.
Get(int64_t & v)
Ruft den Wert des aktuellen Elements als vorzeichenbehaftete 64-Bit-Ganzzahl ab.
Get(uint8_t & v)
Ruft den Wert des aktuellen Elements als vorzeichenlose 8-Bit-Ganzzahl ab.
Get(uint16_t & v)
Ruft den Wert des aktuellen Elements als vorzeichenlose 16-Bit-Ganzzahl ab.
Get(uint32_t & v)
Ruft den Wert des aktuellen Elements als vorzeichenlose 32-Bit-Ganzzahl ab.
Get(uint64_t & v)
Ruft den Wert des aktuellen Elements als vorzeichenlose 64-Bit-Ganzzahl ab.
Get(float & v)
Get(double & v)
Ruft den Wert des aktuellen Elements als Gleitkommazahl mit doppelter Genauigkeit ab.
GetBufHandle(void) const
uintptr_t
GetBytes(uint8_t *buf, uint32_t bufSize)
Ruft den Wert des aktuellen Byte- oder UTF8-Stringelements ab.
GetContainerType(void) const
Gibt den Typ des Containers zurück, in dem der TLVReader gerade liest.
GetControlByte(void) const
uint16_t
Gibt das Steuerbyte zurück, das dem aktuellen TLV-Element zugeordnet ist.
GetDataPtr(const uint8_t *& data)
Rufen Sie einen Zeiger auf das erste codierte Byte eines TLV-Byte- oder UTF8-Stringelements ab.
GetLength(void) const
uint32_t
Gibt die Länge der Daten zurück, die mit dem aktuellen TLV-Element verknüpft sind.
GetLengthRead(void) const
uint32_t
Gibt die Gesamtzahl der gelesenen Byte zurück, seit der Reader initialisiert wurde.
GetReadPoint(void) const
const uint8_t *
Ruft den Punkt im zugrunde liegenden Eingabepuffer ab, der der aktuellen Position des Lesers entspricht.
GetRemainingLength(void) const
uint32_t
Gibt die Gesamtzahl der Byte zurück, die gelesen werden können, bis die maximale Leselänge erreicht ist.
GetString(char *buf, uint32_t bufSize)
Ruft den Wert des aktuellen Byte- oder UTF8-Stringelements als String mit Null-Beendigung ab.
GetTag(void) const
uint64_t
Gibt das Tag zurück, das mit dem aktuellen TLV-Element verknüpft ist.
GetType(void) const
Gibt den Typ des aktuellen TLV-Elements zurück.
Init(const TLVReader & aReader)
void
Initialisiert ein TLVReader-Objekt aus einem anderen TLVReader-Objekt.
Init(const uint8_t *data, uint32_t dataLen)
void
Initialisiert ein TLVReader-Objekt, um aus einem einzelnen Eingabepuffer zu lesen.
Init(PacketBuffer *buf, uint32_t maxLen)
void
Initialisiert ein TLVReader-Objekt, um aus einem einzelnen PacketBuffer zu lesen.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Initialisiert ein TLVReader-Objekt, um aus einem oder mehreren PacketBuffers zu lesen.
Next(void)
Überträgt das TLVReader-Objekt mit dem nächsten zu lesenden TLV-Element.
Next(TLVType expectedType, uint64_t expectedTag)
Überträgt das TLVReader-Objekt zum nächsten zu lesenden TLV-Element, wobei Typ und Tag des neuen Elements bestätigt werden.
OpenContainer(TLVReader & containerReader)
Initialisiert ein neues TLVReader-Objekt zum Lesen der Mitglieder eines TLV-Containerelements.
Skip(void)
Versetzt das TLVReader-Objekt direkt nach dem aktuellen TLV-Element.
VerifyEndOfContainer(void)
Überprüft, ob sich das TVLReader-Objekt am Ende eines TLV-Containers befindet.

Geschützte Funktionen

ClearElementState(void)
void
Löscht den Status des TLVReader.
ElementType(void) const
TLVElementType
Dies ist eine private Methode, die den TLVElementType aus mControlByte zurückgibt.
EnsureData(WEAVE_ERROR noDataErr)
GetElementHeadLength(uint8_t & elemHeadBytes) const
Dies ist eine private Methode zur Berechnung der Länge eines TLV-Elementkopfs.
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)
Überspringen Sie alle Daten, die in der aktuellen TLV enthalten sind, indem Sie sie ohne Zielzwischenspeicher überschreiben.
SkipToEndOfContainer(void)
VerifyElement(void)

Geschützte statische Funktionen

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)

Öffentliche Typen

GetNextBufferFunct

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

Eine Funktion, mit der zusätzliche TLV-Daten abgerufen werden können, die geparst werden sollen.

Funktionen dieses Typs werden verwendet, um Eingabedaten an einen TLVReader zu übergeben. Beim Aufruf wird erwartet, dass die Funktion zusätzliche Daten für den Leser erzeugt, damit er parsen kann, oder dem Leser signalisiert, dass keine Daten mehr verfügbar sind.

Details
Parameter
[in] reader
Ein Verweis auf das TLVReader-Objekt, das Eingabedaten anfordert.
[in,out] bufHandle
Ein Verweis auf einen uintptr_t-Wert, mit dem die Funktion Kontextdaten zwischen Aufrufen speichern kann. Dieser Wert wird vor dem ersten Aufruf mit 0 initialisiert.
[in,out] bufStart
Ein Verweis auf einen Datenzeiger. Beim Aufrufen der Funktion verweist bufStart auf ein Byte nach dem letzten vom Lesegerät genutzten TLV-Datenbyte. Beim Verlassen wird erwartet, dass bufStart auf das erste Byte neuer TLV-Daten verweist, die geparst werden sollen. Der neue Zeigerwert kann sich im selben Zwischenspeicher wie die zuvor verwendeten Daten befinden oder auf einen völlig neuen Zwischenspeicher verweisen.
[out] bufLen
Ein Verweis auf eine vorzeichenlose Ganzzahl, für die die Funktion die Anzahl der zurückgegebenen TLV-Datenbyte festlegen muss. Wenn das Ende der TLV-Eingabedaten erreicht wurde, sollte die Funktion diesen Wert auf 0 setzen.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Funktion mehr TLV-Daten erzeugt hat oder das Ende der Eingabedaten erreicht wurde (bufLen sollte in diesem Fall auf 0 gesetzt werden).
other
Andere Weave- oder plattformspezifische Fehlercodes, die darauf hinweisen, dass die Funktion die angeforderten Daten aufgrund eines Fehlers nicht erzeugen konnte.

Öffentliche Attribute

AppData

void * AppData

Ein Zeigerfeld, das für anwendungsspezifische Daten verwendet werden kann.

GetNextBuffer

GetNextBufferFunct GetNextBuffer

Ein Zeiger auf eine Funktion, die Eingabedaten für das TLVReader-Objekt erzeugt.

Wird der Wert auf NULL (Standardwert) gesetzt, geht der Leser davon aus, dass keine weiteren Eingabedaten verfügbar sind.

GetNextBuffer kann jederzeit von einer Anwendung festgelegt werden, wird aber normalerweise bei der Initialisierung des Readers festgelegt.

Weitere Informationen zur Implementierung einer GetNextBuffer-Funktion finden Sie in der Typdefinition GetNextBufferFunct.

ImplicitProfileId

uint32_t ImplicitProfileId

Die Profil-ID, die für Profil-Tags verwendet werden soll, die in impliziter Form codiert sind.

Wenn der Leser auf ein profilspezifisches Tag stößt, das implizit codiert wurde, verwendet er den Wert der ImplicitProfileId-Eigenschaft als angenommene Profil-ID für das Tag.

Standardmäßig ist das Attribut ImplicitProfileId auf „kProfileIdNotRequested“ festgelegt. Beim Decodieren von TLV mit implizit codierten Tags muss in Anwendungen ImplicitProfileId festgelegt werden, bevor TLV-Elemente mit solchen Tags gelesen werden. Die entsprechende Profil-ID hängt normalerweise vom Kontext der Anwendung oder des gesprochenen Protokolls ab.

Wenn ein implizit codiertes Tag auftritt, während ImplicitProfileId auf kProfileIdNotRequested gesetzt ist, gibt der Reader einen WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG-Fehler zurück.

Geschützte Attribute

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

Öffentliche Funktionen

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVReader & containerReader
)

Schließt das Lesen eines TLV-Containers nach einem Aufruf von OpenContainer() ab.

Die Methode CloseContainer() stellt den Status eines übergeordneten TLVReader-Objekts nach einem Aufruf von OpenContainer() wieder her. Für jeden Aufruf von OpenContainer() müssen Anwendungen einen entsprechenden Aufruf an CloseContainer() senden, wobei an beide Methoden ein Verweis an denselben Container-Reader übergeben wird.

Wenn CloseContainer() zurückgibt, wird der übergeordnete Reader direkt vor dem ersten Element platziert, das auf den Container folgt. Ab diesem Zeitpunkt kann eine Anwendung die Methode Next() verwenden, um alle verbleibenden Elemente zu durchlaufen.

Anwendungen können jederzeit schließen CloseContainer() auf einem übergeordneten Reader aufrufen, unabhängig davon, ob alle Elemente im zugrunde liegenden Container gelesen wurden. Nach dem Aufruf von CloseContainer() sollte die Anwendung den Container-Reader als "de-initialisiert" betrachten und darf nicht weiter verwendet werden, ohne es neu zu initialisieren.

Details
Parameter
[in] containerReader
Ein Verweis auf das TLVReader-Objekt, das der OpenContainer()-Methode bereitgestellt wurde.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Wenn OpenContainer() auf dem Reader nicht aufgerufen wurde oder wenn der Container-Reader nicht mit dem übereinstimmt, der an die OpenContainer()-Methode übergeben wurde.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wurde.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Wenn der Leser auf einen ungültigen oder nicht unterstützten TLV-Elementtyp gestoßen ist.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der Leser in einem ungültigen Kontext auf ein TLV-Tag gestoßen ist.
other
Andere Weave- oder Plattformfehlercodes, die von der konfigurierten GetNextBuffer()-Funktion zurückgegeben werden. Nur möglich, wenn GetNextBuffer nicht NULL ist.

DupBytes

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

Ordnet einen Zwischenspeicher zu und gibt diesen zurück, der den Wert des aktuellen Byte- oder UTF8-Strings enthält.

Diese Methode erstellt einen Puffer für und gibt eine Kopie der Daten zurück, die dem Byte- oder UTF-8-Stringelement an der aktuellen Position zugeordnet sind. Speicher für den Zwischenspeicher wird mit "maloc()" abgerufen und sollte vom Aufrufer mit "free()" freigegeben werden, wenn er nicht mehr benötigt wird.

Details
Parameter
[out] buf
Ein Verweis auf einen Zeiger, dem im Erfolgsfall ein Heap-Zugewiesener Zwischenspeicher von dataLen Byte zugewiesen wird.
[out] dataLen
Ein Verweis auf den Speicher für die Größe von buf bei Erfolg in Byte.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Byte oder UTF8-String ist oder der Reader nicht in einem Element positioniert ist.
WEAVE_ERROR_NO_MEMORY
Wenn für den Ausgabezwischenspeicher kein Arbeitsspeicher zugewiesen werden konnte.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wurde.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Wenn die Zielplattform "maloc()" und "free()" nicht unterstützt.
other
Andere Weave- oder Plattformfehlercodes, die von der konfigurierten GetNextBuffer()-Funktion zurückgegeben werden. Nur möglich, wenn GetNextBuffer nicht NULL ist.

DupString

WEAVE_ERROR DupString(
  char *& buf
)

Ordnet einen Zwischenspeicher zu und gibt diesen zurück, der den mit Null endenden Wert des aktuellen Byte- oder UTF8-Strings enthält.

Diese Methode erstellt einen Puffer für und gibt eine mit Nullen beendete Kopie der Daten zurück, die dem Byte- oder UTF-8-Stringelement an der aktuellen Position zugeordnet sind. Speicher für den Zwischenspeicher wird mit "maloc()" abgerufen und sollte vom Aufrufer mit "free()" freigegeben werden, wenn er nicht mehr benötigt wird.

Details
Parameter
[out] buf
Ein Verweis auf einen Zeiger, dem im Erfolgsfall ein Heap-Zugewiesener Zwischenspeicher zugewiesen wird.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Byte oder UTF8-String ist oder der Reader nicht in einem Element positioniert ist.
WEAVE_ERROR_NO_MEMORY
Wenn für den Ausgabezwischenspeicher kein Arbeitsspeicher zugewiesen werden konnte.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wurde.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Wenn die Zielplattform "maloc()" und "free()" nicht unterstützt.
other
Andere Weave- oder Plattformfehlercodes, die von der konfigurierten GetNextBuffer()-Funktion zurückgegeben werden. Nur möglich, wenn GetNextBuffer nicht NULL ist.

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

Bereitet ein TLVReader-Objekt für das Lesen der Mitglieder des TLV-Containerelements vor.

Die EnterContainer()-Methode bereitet das aktuelle TLVReader-Objekt vor, um mit dem Lesen der Mitgliederelemente eines TLV-Containers (einer Struktur, eines Arrays oder eines Pfads) zu beginnen. Bei jedem Aufruf von EnterContainer() müssen Anwendungen einen entsprechenden Aufruf an ExitContainer() senden.

Wenn EnterContainer() aufgerufen wird, muss das TLVReader-Objekt auf dem zu lesenden Containerelement positioniert werden. Die Methode verwendet als Argument einen Verweis auf einen TLVType-Wert, mit dem der Kontext des Readers gespeichert wird, während er den Container liest.

Wenn die Methode EnterContainer() zurückgegeben wird, wird der Reader direkt vor dem ersten Mitglied des Containers positioniert. Durch wiederholtes Aufrufen von Next() wird der Leser durch die Mitglieder der Sammlung geleitet, bis das Ende erreicht ist. An diesem Punkt gibt das Lesegerät WEAVE_END_OF_TLV zurück.

Sobald die Anwendung das Lesen eines Containers beendet hat, kann sie die Elemente nach dem Container durch Aufrufen der Methode ExitContainer() weiterlesen.

Details
Parameter
[out] outerContainerType
Ein Verweis auf einen TLVType-Wert, der den Kontext des Lesers erhält.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Wenn sich das aktuelle Element nicht in einem Containerelement befindet.

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

Schließt das Lesen eines TLV-Containers ab und bereitet ein TLVReader-Objekt vor, um Elemente nach dem Container zu lesen.

Die Methode ExitContainer() stellt den Status eines TLVReader-Objekts nach einem Aufruf von EnterContainer() wieder her. Für jeden Aufruf von EnterContainer() müssen Anwendungen einen entsprechenden Aufruf an ExitContainer() senden und den von der Methode EnterContainer() zurückgegebenen Kontextwert übergeben.

Wenn ExitContainer() zurückgegeben wird, wird der Reader direkt vor dem ersten Element platziert, das auf den Container folgt. Ab diesem Zeitpunkt kann eine Anwendung die Methode Next() verwenden, um alle verbleibenden Elemente zu durchlaufen.

Sobald EnterContainer() aufgerufen wurde, können Anwendungen ExitContainer() jederzeit auf einem Reader aufrufen, unabhängig davon, ob alle Elemente im zugrunde liegenden Container gelesen wurden.

Details
Parameter
[in] outerContainerType
Der TLVType-Wert, der von der Methode EnterContainer() zurückgegeben wurde.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Wenn OpenContainer() auf dem Reader nicht aufgerufen wurde oder wenn der Container-Reader nicht mit dem übereinstimmt, der an die OpenContainer()-Methode übergeben wurde.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wurde.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Wenn der Leser auf einen ungültigen oder nicht unterstützten TLV-Elementtyp gestoßen ist.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der Leser in einem ungültigen Kontext auf ein TLV-Tag gestoßen ist.
other
Andere Weave- oder Plattformfehlercodes, die von der konfigurierten GetNextBuffer()-Funktion zurückgegeben werden. Nur möglich, wenn GetNextBuffer nicht NULL ist.

Get

WEAVE_ERROR Get(
  bool & v
)

Ruft den Wert des aktuellen Elements als boolescher Typ ab.

Details
Parameter
[out] v
Empfängt den Wert, der dem aktuellen TLV-Element zugeordnet ist.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein boolescher TLV-Typ ist oder der Leser nicht in einem Element positioniert ist.

Get

WEAVE_ERROR Get(
  int8_t & v
)

Ruft den Wert des aktuellen Elements als 8-Bit-Ganzzahl mit Vorzeichen ab.

Wenn der codierte Ganzzahlwert größer als der Ausgabedatentyp ist, wird der resultierende Wert abgeschnitten.

Details
Parameter
[out] v
Empfängt den Wert, der dem aktuellen TLV-Element zugeordnet ist.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichent oder unsigniert) ist oder der Leser nicht in einem Element positioniert ist.

Get

WEAVE_ERROR Get(
  int16_t & v
)

Ruft den Wert des aktuellen Elements als vorzeichenbehaftete 16-Bit-Ganzzahl ab.

Wenn der codierte Ganzzahlwert größer als der Ausgabedatentyp ist, wird der resultierende Wert abgeschnitten.

Details
Parameter
[out] v
Empfängt den Wert, der dem aktuellen TLV-Element zugeordnet ist.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (signiert oder nicht signiert) ist oder der Leser nicht in einem Element positioniert ist.

Get

WEAVE_ERROR Get(
  int32_t & v
)

Ruft den Wert des aktuellen Elements als vorzeichenbehaftete 32-Bit-Ganzzahl ab.

Wenn der codierte Ganzzahlwert größer als der Ausgabedatentyp ist, wird der resultierende Wert abgeschnitten.

Details
Parameter
[out] v
Empfängt den Wert, der dem aktuellen TLV-Element zugeordnet ist.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichent oder unsigniert) ist oder der Leser nicht in einem Element positioniert ist.

Get

WEAVE_ERROR Get(
  int64_t & v
)

Ruft den Wert des aktuellen Elements als vorzeichenbehaftete 64-Bit-Ganzzahl ab.

Wenn der codierte Ganzzahlwert größer als der Ausgabedatentyp ist, wird der resultierende Wert abgeschnitten.

Details
Parameter
[out] v
Empfängt den Wert, der dem aktuellen TLV-Element zugeordnet ist.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichent oder unsigniert) ist oder der Leser nicht in einem Element positioniert ist.

Get

WEAVE_ERROR Get(
  uint8_t & v
)

Ruft den Wert des aktuellen Elements als vorzeichenlose 8-Bit-Ganzzahl ab.

Wenn der codierte Ganzzahlwert größer als der Ausgabedatentyp ist, wird der resultierende Wert abgeschnitten. Wenn der codierte Ganzzahlwert negativ ist, wird der Wert entsprechend in vorzeichenlos konvertiert.

Details
Parameter
[out] v
Empfängt den Wert, der dem aktuellen TLV-Element zugeordnet ist.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichent oder unsigniert) ist oder der Leser nicht in einem Element positioniert ist.

Get

WEAVE_ERROR Get(
  uint16_t & v
)

Ruft den Wert des aktuellen Elements als vorzeichenlose 16-Bit-Ganzzahl ab.

Wenn der codierte Ganzzahlwert größer als der Ausgabedatentyp ist, wird der resultierende Wert abgeschnitten. Wenn der codierte Ganzzahlwert negativ ist, wird der Wert entsprechend in vorzeichenlos konvertiert.

Details
Parameter
[out] v
Empfängt den Wert, der dem aktuellen TLV-Element zugeordnet ist.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichent oder unsigniert) ist oder der Leser nicht in einem Element positioniert ist.

Get

WEAVE_ERROR Get(
  uint32_t & v
)

Ruft den Wert des aktuellen Elements als vorzeichenlose 32-Bit-Ganzzahl ab.

Wenn der codierte Ganzzahlwert größer als der Ausgabedatentyp ist, wird der resultierende Wert abgeschnitten. Wenn der codierte Ganzzahlwert negativ ist, wird der Wert entsprechend in vorzeichenlos konvertiert.

Details
Parameter
[out] v
Empfängt den Wert, der dem aktuellen TLV-Element zugeordnet ist.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichent oder unsigniert) ist oder der Leser nicht in einem Element positioniert ist.

Get

WEAVE_ERROR Get(
  uint64_t & v
)

Ruft den Wert des aktuellen Elements als vorzeichenlose 64-Bit-Ganzzahl ab.

Wenn der codierte Ganzzahlwert negativ ist, wird der Wert in vorzeichenlose Werte umgewandelt.

Details
Parameter
[out] v
Empfängt den Wert, der dem aktuellen TLV-Element zugeordnet ist.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichent oder unsigniert) ist oder der Leser nicht in einem Element positioniert ist.

Get

WEAVE_ERROR Get(
  float & v
)

Get

WEAVE_ERROR Get(
  double & v
)

Ruft den Wert des aktuellen Elements als Gleitkommazahl mit doppelter Genauigkeit ab.

Details
Parameter
[out] v
Empfängt den Wert, der dem aktuellen TLV-Element zugeordnet ist.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein Gleitkommatyp vom Typ TLV ist oder das Lesegerät nicht auf einem Element positioniert ist.

GetBufHandle

uintptr_t GetBufHandle(
  void
) const 

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

Ruft den Wert des aktuellen Byte- oder UTF8-Stringelements ab.

Rufen Sie die Methode GetLength() vor GetBytes() auf, um die erforderliche Größe des Eingabepuffers zu bestimmen.

Details
Parameter
[in] buf
Ein Zeiger auf einen Puffer zum Empfangen der Zeichenfolgendaten.
[in] bufSize
Die Größe des Zwischenspeichers, auf den buf verweist, in Byte.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Byte oder UTF8-String ist oder der Reader nicht in einem Element positioniert ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn der bereitgestellte Puffer zu klein ist, um die mit dem aktuellen Element verknüpften Daten aufzunehmen.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wurde.
other
Andere Weave- oder Plattformfehlercodes, die von der konfigurierten GetNextBuffer()-Funktion zurückgegeben werden. Nur möglich, wenn GetNextBuffer nicht NULL ist.

GetContainerType

TLVType GetContainerType(
  void
) const 

Gibt den Typ des Containers zurück, in dem der TLVReader gerade liest.

Die Methode GetContainerType() gibt den Typ des TLV-Containers zurück, in dem TLVReader liest. Wenn sich der TLVReader auf der äußersten Ebene einer TLV-Codierung befindet, also vor, auf oder nach dem äußersten TLV-Element, gibt die Methode kTLVType_NotRequested zurück.

Details
Rückgabe
Der TLVType des aktuellen Containers oder kTLVType_NotRequested, wenn sich der TLVReader nicht in einem Container befindet.

GetControlByte

uint16_t GetControlByte(
  void
) const 

Gibt das Steuerbyte zurück, das dem aktuellen TLV-Element zugeordnet ist.

Im Idealfall muss niemand etwas über das Kontrollbyte wissen und nur die interne Implementierung von TLV sollte Zugriff darauf haben. Trotzdem ist der Zugriff auf das Kontrollbyte für Debugging-Zwecke durch TLVDebugUtilities hilfreich, die versuchen, das Tag-Steuerbyte zu decodieren, wenn der TLV-Zwischenspeicherinhalt ausgegeben wird.

Details
Rückgabe
Eine vorzeichenlose Ganzzahl, die das Steuerbyte enthält, das dem aktuellen TLV-Element zugeordnet ist. kTLVControlByte_NotRequested wird zurückgegeben, wenn der Leser nicht auf einem Element positioniert ist.

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

Rufen Sie einen Zeiger auf das erste codierte Byte eines TLV-Byte- oder UTF8-Stringelements ab.

Diese Methode gibt einen direkten Zeiger auf den codierten Stringwert innerhalb des zugrunde liegenden Eingabepuffers zurück. Für eine erfolgreiche Methode muss der gesamte Stringwert in einem einzigen Zwischenspeicher vorhanden sein. Andernfalls gibt die Methode WEAVE_ERROR_TLV_UNDERRUN zurück. Dadurch ist diese Methode beim Lesen von Daten aus mehreren nicht zusammenhängenden Zwischenspeichern nur begrenzt geeignet.

Details
Parameter
[out] data
Ein Verweis auf einen const-Zeiger, der einen Zeiger auf die zugrunde liegenden Zeichenfolgendaten erhält.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Byte oder UTF8-String ist oder der Reader nicht in einem Element positioniert ist.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wurde oder der Wert des aktuellen Stringelements nicht in einem einzelnen zusammenhängenden Zwischenspeicher enthalten ist.
other
Andere Weave- oder Plattformfehlercodes, die von der konfigurierten GetNextBuffer()-Funktion zurückgegeben werden. Nur möglich, wenn GetNextBuffer nicht NULL ist.

GetLength

uint32_t GetLength(
  void
) const 

Gibt die Länge der Daten zurück, die mit dem aktuellen TLV-Element verknüpft sind.

Die Datenlänge gilt nur für Elemente vom Typ UTF8-String oder -Bytestring. Bei UTF8-Strings ist der zurückgegebene Wert die Anzahl der Byte im String, nicht die Anzahl der Zeichen.

Details
Rückgabe
Die Länge (in Byte) der Daten, die mit dem aktuellen TLV-Element verknüpft sind, oder 0, wenn das aktuelle Element kein UTF8-String oder -Bytestring ist oder wenn der Reader nicht bei einem Element positioniert ist.

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

Gibt die Gesamtzahl der gelesenen Byte zurück, seit der Reader initialisiert wurde.

Details
Rückgabe
Gesamtzahl der gelesenen Byte seit der Initialisierung des Readers.

GetReadPoint

const uint8_t * GetReadPoint(
  void
) const 

Ruft den Punkt im zugrunde liegenden Eingabepuffer ab, der der aktuellen Position des Lesers entspricht.

Details
Rückgabe
Ein Zeiger in den zugrunde liegenden Eingabepuffer, der der aktuellen Position des Lesers entspricht.

GetRemainingLength

uint32_t GetRemainingLength(
  void
) const 

Gibt die Gesamtzahl der Byte zurück, die gelesen werden können, bis die maximale Leselänge erreicht ist.

Details
Rückgabe
Gesamtzahl der Byte, die gelesen werden können, bis die maximale Leselänge erreicht ist.

GetString

WEAVE_ERROR GetString(
  char *buf,
  uint32_t bufSize
)

Ruft den Wert des aktuellen Byte- oder UTF8-Stringelements als String mit Null-Beendigung ab.

Rufen Sie die Methode GetLength() vor GetBytes() auf, um die erforderliche Größe des Eingabepuffers zu bestimmen. Der Eingabepuffer sollte mindestens ein Byte größer als die Stringlänge sein, um das Nullzeichen aufzunehmen.

Details
Parameter
[in] buf
Ein Zeiger auf einen Puffer zum Empfangen der Byte-Zeichenfolgendaten.
[in] bufSize
Die Größe des Zwischenspeichers, auf den buf verweist, in Byte.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Byte oder UTF8-String ist oder der Reader nicht in einem Element positioniert ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn der bereitgestellte Puffer zu klein ist, um die mit dem aktuellen Element verknüpften Daten aufzunehmen.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wurde.
other
Andere Weave- oder Plattformfehlercodes, die von der konfigurierten GetNextBuffer()-Funktion zurückgegeben werden. Nur möglich, wenn GetNextBuffer nicht NULL ist.

GetTag

uint64_t GetTag(
  void
) const 

Gibt das Tag zurück, das mit dem aktuellen TLV-Element verknüpft ist.

Der von GetTag() zurückgegebene Wert kann mit den Tag-Dienstprogrammfunktionen (IsProfileTag(), IsContextTag(), ProfileIdFromTag() usw.) verwendet werden, um den Tag-Typ zu bestimmen und verschiedene Tag-Feldwerte zu extrahieren.

Details
Rückgabe
Eine vorzeichenlose Ganzzahl mit Informationen zu dem Tag, das dem aktuellen TLV-Element zugeordnet ist.

GetType

TLVType GetType(
  void
) const 

Gibt den Typ des aktuellen TLV-Elements zurück.

Details
Rückgabe
Ein TLVType-Wert, der den Datentyp des aktuellen TLV-Elements beschreibt. Wenn das Lesegerät nicht auf einem TLV-Element positioniert ist, wird als Rückgabewert „kTLVType_NotSpecific“ zurückgegeben.

Init

void Init(
  const TLVReader & aReader
)

Initialisiert ein TLVReader-Objekt aus einem anderen TLVReader-Objekt.

Details
Parameter
[in] aReader
Eine schreibgeschützte Referenz auf den TLVReader, ab dem dieses Element initialisiert wird.

Init

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

Initialisiert ein TLVReader-Objekt, um aus einem einzelnen Eingabepuffer zu lesen.

Details
Parameter
[in] data
Ein Zeiger auf einen Puffer mit den TLV-Daten, die geparst werden sollen.
[in] dataLen
Die Länge der zu analysierenden TLV-Daten.

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Initialisiert ein TLVReader-Objekt, um aus einem einzelnen PacketBuffer zu lesen.

Das Parsing beginnt an der Startposition des Zwischenspeichers (buf->DataStart()) und wird bis zum Ende der Daten im Zwischenspeicher fortgesetzt (wie durch buf->Datalen() angegeben), oder wenn maxLen-Bytes geparst wurden.

Details
Parameter
[in] buf
Ein Zeiger auf einen PacketBuffer mit den TLV-Daten, die geparst werden sollen.
[in] maxLen
Das Maximum der zu parsenden Byte. Die Standardeinstellung ist die Datenmenge im Eingabepuffer.

Init

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

Initialisiert ein TLVReader-Objekt, um aus einem oder mehreren PacketBuffers zu lesen.

Das Parsing beginnt an der Startposition des anfänglichen Zwischenspeichers (buf->DataStart()). Wenn „allowDiscontiguousBuffers“ auf „true“ gesetzt ist, springt der Leser durch die Zwischenspeicherkette, die mit seinen Next()-Zeigern verknüpft ist. Das Parsing wird fortgesetzt, bis alle Daten in der Pufferkette aufgebraucht sind (wie durch buf -> Datalen() angegeben) oder maxLen-Bytes geparst wurden.

Details
Parameter
[in] buf
Ein Zeiger auf einen PacketBuffer mit den TLV-Daten, die geparst werden sollen.
[in] maxLen
Das Maximum der zu parsenden Byte. Die Standardeinstellung ist die Gesamtmenge der Daten in der Eingabepufferkette.
[in] allowDiscontiguousBuffers
Bei "true" wird zum nächsten Zwischenspeicher in der Kette gewechselt, sobald alle Daten im aktuellen Zwischenspeicher verbraucht sind. Bei "false" wird das Parsen am Ende des ersten Zwischenspeichers beendet.

Weiter

WEAVE_ERROR Next(
  void
)

Überträgt das TLVReader-Objekt mit dem nächsten zu lesenden TLV-Element.

Die Methode Next() positioniert das Leseobjekt auf dem nächsten Element in einer TLV-Codierung, die sich im selben Begrenzungskontext befindet. Wenn sich der Leser auf der äußersten Ebene einer TLV-Codierung befindet, gelangt er durch das Aufrufen von Next() zum nächsten, obersten Element. Wenn sich das Lesegerät in einem TLV-Containerelement (einer Struktur, einem Array oder einem Pfad) befindet, wird der Leser durch Aufrufen von Next() zum nächsten Mitgliedselement des Containers weitergeleitet.

Da Next() die Leserbewegung auf den aktuellen Begrenzungskontext beschränkt, wird Next() aufgerufen, wenn sich der Leser auf einem Containerelement befindet, über den Container. Dabei werden seine Mitgliedselemente (und die Mitglieder aller verschachtelten Container) übersprungen, bis das erste Element nach dem Container erreicht wird.

Wenn in einem bestimmten Begrenzungskontext keine weiteren Elemente vorhanden sind, gibt die Methode Next() den Fehler WEAVE_END_OF_TLV zurück und die Position des Lesegeräts bleibt unverändert.

Details
Rückgabewerte
WEAVE_NO_ERROR
Ob der Leser erfolgreich auf einem neuen Element positioniert wurde.
WEAVE_END_OF_TLV
Wenn keine weiteren Elemente verfügbar sind.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wurde.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Wenn der Leser auf einen ungültigen oder nicht unterstützten TLV-Elementtyp gestoßen ist.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der Leser in einem ungültigen Kontext auf ein TLV-Tag gestoßen ist.
WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
Wenn der Leser auf ein implizit codiertes TLV-Tag gestoßen ist, dessen Profil-ID unbekannt ist.
other
Andere Weave- oder Plattformfehlercodes, die von der konfigurierten GetNextBuffer()-Funktion zurückgegeben werden. Nur möglich, wenn GetNextBuffer nicht NULL ist.

Weiter

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

Überträgt das TLVReader-Objekt zum nächsten zu lesenden TLV-Element, wobei Typ und Tag des neuen Elements bestätigt werden.

Die Methode Next(TLVType expectedType, uint64_texpectedTag) ist eine praktische Methode mit demselben Verhalten wie Next(). Sie prüft aber auch, ob der Typ und das Tag des neuen TLV-Elements mit den bereitgestellten Argumenten übereinstimmen.

Details
Parameter
[in] expectedType
Der erwartete Datentyp für das nächste Element.
[in] expectedTag
Das erwartete Tag für das nächste Element.
Rückgabewerte
WEAVE_NO_ERROR
Ob der Leser erfolgreich auf einem neuen Element positioniert wurde.
WEAVE_END_OF_TLV
Wenn keine weiteren Elemente verfügbar sind.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn der Typ des neuen Elements nicht mit dem Wert des Arguments expectedType übereinstimmt.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
Wenn das mit dem neuen Element verknüpfte Tag nicht mit dem Wert des Arguments expectedTag übereinstimmt.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wurde.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Wenn der Leser auf einen ungültigen oder nicht unterstützten TLV-Elementtyp gestoßen ist.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der Leser in einem ungültigen Kontext auf ein TLV-Tag gestoßen ist.
other
Andere Weave- oder Plattformfehlercodes, die von der konfigurierten GetNextBuffer()-Funktion zurückgegeben werden. Nur möglich, wenn GetNextBuffer nicht NULL ist.

OpenContainer

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

Initialisiert ein neues TLVReader-Objekt zum Lesen der Mitglieder eines TLV-Containerelements.

Die Methode OpenContainer() initialisiert ein neues TLVReader-Objekt zum Lesen der Mitgliederelemente eines TLV-Containers (einer Struktur, eines Arrays oder eines Pfads). Wenn OpenContainer() aufgerufen wird, muss das aktuelle TLVReader-Objekt auf dem zu lesenden Containerelement positioniert werden. Die Methode nimmt als einziges Argument einen Verweis auf einen neuen Reader an, der initialisiert wird, um den Container zu lesen. Dieser Reader wird als Container-Reader bezeichnet, während der Reader, auf dem OpenContainer() aufgerufen wird, als Parent-Reader bezeichnet wird.

Wenn die Methode OpenContainer() zurückgegeben wird, wird der Container-Reader direkt vor dem ersten Mitglied des Containers positioniert. Durch Aufrufen von Next() auf dem Container-Reader springen Sie durch die Mitglieder der Sammlung, bis das Ende erreicht ist. An diesem Punkt gibt das Lesegerät WEAVE_END_OF_TLV zurück.

Während der Container-Leser geöffnet ist, dürfen Anwendungen keine Aufrufe an den übergeordneten Reader senden oder seinen Status anderweitig ändern. Sobald eine Anwendung die Verwendung des Container-Readers beendet hat, muss sie durch Aufrufen von CloseContainer() im übergeordneten Reader geschlossen und der Container-Reader als Argument übergeben werden. Anwendungen können den Container-Reader jederzeit schließen, mit oder ohne Lesen aller im zugrunde liegenden Container enthaltenen Elemente. Nachdem der Container-Reader geschlossen wurde, können Anwendungen den übergeordneten Reader weiterhin verwenden.

Der Container-Reader übernimmt verschiedene Konfigurationseigenschaften vom übergeordneten Reader. Diese sind:

  • Die implizite Profil-ID (ImplicitProfileId)
  • Anwendungsdatenzeiger (AppData)
  • Der Funktionszeiger GetNextBuffer

Details
Parameter
[out] containerReader
Ein Verweis auf ein TLVReader-Objekt, das zum Lesen der Mitglieder des aktuellen Containerelements initialisiert wird. Alle mit dem bereitgestellten Objekt verknüpften Daten werden überschrieben.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Wenn sich das aktuelle Element nicht in einem Containerelement befindet.

Überspringen

WEAVE_ERROR Skip(
  void
)

Versetzt das TLVReader-Objekt direkt nach dem aktuellen TLV-Element.

Die Methode Skip() positioniert das Leseobjekt direkt nach dem aktuellen TLV-Element, sodass der Leser bei einem nachfolgenden Aufruf von Next() zum folgenden Element weitergeleitet wird. Wie bei Next() werden die Mitglieder des Containers übersprungen, wenn sich der Leser zum Zeitpunkt des Aufrufs in einem Containerelement befindet. Wenn der Leser nicht in einem Element positioniert ist, bleibt seine Position unverändert.

Details
Rückgabewerte
WEAVE_NO_ERROR
Ob der Leser erfolgreich auf einem neuen Element positioniert wurde.
WEAVE_END_OF_TLV
Wenn keine weiteren Elemente verfügbar sind.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wurde.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Wenn der Leser auf einen ungültigen oder nicht unterstützten TLV-Elementtyp gestoßen ist.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der Leser in einem ungültigen Kontext auf ein TLV-Tag gestoßen ist.
other
Andere Weave- oder Plattformfehlercodes, die von der konfigurierten GetNextBuffer()-Funktion zurückgegeben werden. Nur möglich, wenn GetNextBuffer nicht NULL ist.

VerifyEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)

Überprüft, ob sich das TVLReader-Objekt am Ende eines TLV-Containers befindet.

Mit der Methode VerifyEndOfContainer() wird überprüft, ob im aktuellen TLV-Container keine weiteren TLV-Elemente vorhanden sind, die gelesen werden sollen. Dies ist eine unkomplizierte Methode, die dem Aufrufen von Next() und der Überprüfung auf den Rückgabewert WEAVE_END_OF_TLV entspricht.

Details
Rückgabewerte
WEAVE_NO_ERROR
Wenn keine weiteren TLV-Elemente zu lesen sind.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
Wenn ein anderes TLV-Element in der Sammlung gefunden wurde.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wurde.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Wenn der Leser auf einen ungültigen oder nicht unterstützten TLV-Elementtyp gestoßen ist.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der Leser in einem ungültigen Kontext auf ein TLV-Tag gestoßen ist.
other
Andere Weave- oder Plattformfehlercodes, die von der konfigurierten GetNextBuffer()-Funktion zurückgegeben werden. Nur möglich, wenn GetNextBuffer nicht NULL ist.

Geschützte Funktionen

ClearElementState

void ClearElementState(
  void
)

Löscht den Status des TLVReader.

Mit dieser Methode wird das Lesegerät vor der ersten TLV, zwischen den TLVs oder nach der letzten TLV positioniert.

ElementType

TLVElementType ElementType(
  void
) const 

Dies ist eine private Methode, die den TLVElementType aus mControlByte zurückgibt.

EnsureData

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

GetElementHeadLength

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

Dies ist eine private Methode zur Berechnung der Länge eines TLV-Elementkopfs.

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
)

Überspringen Sie alle Daten, die in der aktuellen TLV enthalten sind, indem Sie sie ohne Zielzwischenspeicher überschreiben.

Details
Rückgabewerte
WEAVE_NO_ERROR
Ob das Lesegerät erfolgreich am Ende der Daten positioniert wurde.
other
Andere Weave- oder Plattformfehlercodes, die von der konfigurierten GetNextBuffer()-Funktion zurückgegeben werden. Nur möglich, wenn GetNextBuffer nicht NULL ist.

SkipToEndOfContainer

WEAVE_ERROR SkipToEndOfContainer(
  void
)

VerifyElement

WEAVE_ERROR VerifyElement(
  void
)

Geschützte statische Funktionen

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
)