nl::Weave::TLV::TLVReader

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

Bietet einen speichereffizienten Parser für im Weave-TLV-Format codierte Daten.

Zusammenfassung

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

Ein TLVReader-Objekt wird immer entweder vor, auf oder nach einem TLV-Element positioniert. Bei der erstmaligen Initialisierung wird ein TLVReader unmittelbar vor dem ersten Element der Codierung positioniert. Um mit dem Lesen zu beginnen, muss eine Anwendung zuerst die Methode Next() aufrufen, um den Leser auf dem ersten Element zu positionieren. Wenn ein Containerelement auf eine Struktur, ein Array oder einen Pfad stößt, können die Methoden OpenContainer() oder EnterContainer() verwendet werden, um den Inhalt des Containers zu durchlaufen.

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

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

Übernahme

Direkte bekannte Unterklassen:
  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 implizit 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)
Vollzieht das Lesen eines TLV-Containers nach einem Aufruf von OpenContainer().
DupBytes(uint8_t *& buf, uint32_t & dataLen)
Ordnet einen Puffer zu und gibt ihn zurück, der den Wert des aktuellen Bytes oder des UTF8-Strings enthält.
DupString(char *& buf)
Ordnet einen Puffer zu und gibt ihn zurück, der den als Null beendeten Wert des aktuellen Bytes oder UTF8-Strings enthält.
EnterContainer(TLVType & outerContainerType)
Bereitet ein TLVReader-Objekt zum Lesen der Mitglieder des TLV-Containerelements vor.
ExitContainer(TLVType outerContainerType)
Vollzieht das Lesen eines TLV-Containers und bereitet ein TLVReader-Objekt vor, um Elemente nach dem Container zu lesen.
Get(bool & v)
Ruft den Wert des aktuellen Elements als booleschen Typ ab.
Get(int8_t & v)
Ruft den Wert des aktuellen Elements als vorzeichenbehaftete 8-Bit-Ganzzahl 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 vorzeichenbehaftete 32-Bit-Ganzzahl 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 16-Bit-Ganzzahl ohne Vorzeichen 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)
Ruft einen Verweis auf das erste codierte Byte eines TLV-Bytes 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 Lesegerät 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, das aus einem einzelnen Eingabepuffer gelesen wird.
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)
Verschiebt das TLVReader-Objekt zum nächsten TLV-Element, das gelesen werden soll.
Next(TLVType expectedType, uint64_t expectedTag)
Wechselt das TLVReader-Objekt zum nächsten TLV-Element, das gelesen werden soll, und bestätigt den Typ und das Tag des neuen Elements.
OpenContainer(TLVReader & containerReader)
Initialisiert ein neues TLVReader-Objekt zum Lesen der Mitglieder eines TLV-Containerelements.
Skip(void)
Verschiebt das TLVReader-Objekt unmittelbar 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 von TLVReader.
ElementType(void) const
TLVElementType
Dies ist eine private Methode, die den TLVElementType von mControlByte zurückgibt.
EnsureData(WEAVE_ERROR noDataErr)
GetElementHeadLength(uint8_t & elemHeadBytes) const
Dies ist eine private Methode, mit der die Länge eines TLV-Elementkopfes berechnet wird.
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 im aktuellen TLV enthalten sind, indem Sie sie ohne Zielzwischenspeicher lesen.
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 in einen TLVReader zu übergeben. Wenn die Funktion aufgerufen wird, wird erwartet, dass sie zusätzliche Daten für den Leser erzeugt, um ihn zu parsen oder dem Leser zu signalisieren, dass keine weiteren Daten 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 auf 0 initialisiert.
[in,out] bufStart
Ein Verweis auf einen Datenzeiger. Beim Einstieg in die Funktion verweist bufStart auf ein Byte nach dem letzten vom Lesegerät genutzten TLV-Datenbyte. Beim Beenden wird erwartet, dass bufStart auf das erste Byte neuer TLV-Daten verweist, die geparst werden sollen. Der neue Zeigerwert kann sich im selben Puffer wie die zuvor verwendeten Daten befinden oder auf einen völlig neuen Puffer 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 erfolgreich mehr TLV-Daten erzeugt hat oder das Ende der Eingabedaten erreicht wurde (bufLen sollte in diesem Fall auf 0 gesetzt sein).
other
Andere Weave- oder plattformspezifische Fehlercodes, die darauf hinweisen, dass ein Fehler aufgetreten ist, der verhindert, dass die Funktion die angeforderten Daten erzeugt.

Ö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.

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

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

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

ImplicitProfileId

uint32_t ImplicitProfileId

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

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

Die Eigenschaft ImplicitProfileId ist standardmäßig auf „kProfileIdNot Specific“ festgelegt. Beim Decodieren von TLV, das implizit codierte Tags enthält, müssen Anwendungen ImplicitProfileId festlegen, bevor TLV-Elemente mit solchen Tags gelesen werden. Die geeignete Profil-ID hängt normalerweise vom Kontext der gesprochenen Anwendung oder des gesprochenen Protokolls ab.

Wenn ein implizit codiertes Tag erkannt wird, während ImplicitProfileId auf kProfileIdNot Specificiert ist, gibt das Lesegerät den Fehler WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG 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
)

Vollzieht das Lesen eines TLV-Containers nach einem Aufruf von OpenContainer().

Die CloseContainer()-Methode stellt den Status eines übergeordneten TLVReader-Objekts nach einem Aufruf von OpenContainer() wieder her. Für jeden Aufruf von OpenContainer()-Anwendungen muss ein entsprechender Aufruf an CloseContainer() erfolgen. Dabei wird ein Verweis auf denselben Container-Reader an beide Methoden übergeben.

Wenn CloseContainer() zurückgegeben wird, wird der übergeordnete Leser direkt vor dem ersten Element nach dem Container positioniert. Ab diesem Punkt kann eine Anwendung die Methode Next() verwenden, um durch alle verbleibenden Elemente zu blättern.

Anwendungen können jederzeit 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 "deinitialisiert" betrachten und ihn nicht weiter verwenden, ohne ihn neu zu initialisieren.

Details
Parameter
[in] containerReader
Ein Verweis auf das TLVReader-Objekt, das für die Methode OpenContainer() bereitgestellt wurde.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Wenn OpenContainer() nicht auf dem Reader aufgerufen wurde oder wenn der Container-Reader nicht mit dem an die OpenContainer()-Methode übergebenen Lesegerät übereinstimmt.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wird.
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 auf ein TLV-Tag in einem ungültigen Kontext gestoßen ist.
other
Andere Weave- oder Plattform-Fehlercodes, die von der konfigurierten Funktion GetNextBuffer() zurückgegeben werden Nur möglich, wenn GetNextBuffer nicht NULL ist.

DupBytes

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

Ordnet einen Puffer zu und gibt ihn zurück, der den Wert des aktuellen Bytes oder des UTF8-Strings enthält.

Diese Methode erstellt einen Puffer für und gibt eine Kopie der Daten zurück, die mit dem Byte- oder UTF-8-Stringelement an der aktuellen Position verknüpft sind. Der Arbeitsspeicher für den Puffer wird mit Malloc() 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 bei Erfolg ein Heap-Puffer von dataLen Byte zugewiesen wird.
[out] dataLen
Ein Verweis auf den Speicher für die Größe von buf in Byte bei Erfolg.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob 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 Speicher nicht für den Ausgabepuffer zugewiesen werden konnte.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wird.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Wenn die Zielplattform Malloc() und free() nicht unterstützt.
other
Andere Weave- oder Plattform-Fehlercodes, die von der konfigurierten Funktion GetNextBuffer() zurückgegeben werden Nur möglich, wenn GetNextBuffer nicht NULL ist.

DupString

WEAVE_ERROR DupString(
  char *& buf
)

Ordnet einen Puffer zu und gibt ihn zurück, der den als Null beendeten Wert des aktuellen Bytes oder UTF8-Strings enthält.

Diese Methode erstellt einen Puffer für und gibt eine mit Null beendete Kopie der Daten zurück, die mit dem Byte- oder UTF-8-Stringelement an der aktuellen Position verknüpft sind. Der Arbeitsspeicher für den Puffer wird mit Malloc() 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 bei Erfolg ein Heap-Puffer zugewiesen wird.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob 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 Speicher nicht für den Ausgabepuffer zugewiesen werden konnte.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wird.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Wenn die Zielplattform Malloc() und free() nicht unterstützt.
other
Andere Weave- oder Plattform-Fehlercodes, die von der konfigurierten Funktion GetNextBuffer() zurückgegeben werden Nur möglich, wenn GetNextBuffer nicht NULL ist.

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

Bereitet ein TLVReader-Objekt zum 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. Für jeden Aufruf von EnterContainer()-Anwendungen muss ein entsprechender Aufruf an ExitContainer() erfolgen.

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

Wenn die Methode EnterContainer() zurückgegeben wird, wird der Leser 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. Zu diesem Zeitpunkt gibt der Leser WEAVE_END_OF_TLV zurück.

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

Details
Parameter
[out] outerContainerType
Ein Verweis auf einen TLVType-Wert, der den Kontext des Lesers empfängt.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Wenn das aktuelle Element nicht auf einem Containerelement positioniert ist

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

Vollzieht das Lesen eines TLV-Containers 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()-Anwendungen muss ein entsprechender Aufruf an ExitContainer() erfolgen und der von der Methode EnterContainer() zurückgegebene Kontextwert übergeben werden.

Wenn ExitContainer() zurückgibt, wird der Leser direkt vor dem ersten Element nach dem Container positioniert. Ab diesem Punkt kann eine Anwendung die Methode Next() verwenden, um durch alle verbleibenden Elemente zu blättern.

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

Details
Parameter
[in] outerContainerType
Der TLVType-Wert, der von der EnterContainer()-Methode zurückgegeben wurde.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Wenn OpenContainer() nicht auf dem Reader aufgerufen wurde oder wenn der Container-Reader nicht mit dem an die OpenContainer()-Methode übergebenen Lesegerät übereinstimmt.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wird.
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 auf ein TLV-Tag in einem ungültigen Kontext gestoßen ist.
other
Andere Weave- oder Plattform-Fehlercodes, die von der konfigurierten Funktion GetNextBuffer() zurückgegeben werden Nur möglich, wenn GetNextBuffer nicht NULL ist.

Get

WEAVE_ERROR Get(
  bool & v
)

Ruft den Wert des aktuellen Elements als booleschen Typ ab.

Details
Parameter
[out] v
Empfängt den Wert, der mit dem aktuellen TLV-Element verknüpft ist.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein boolescher TLV-Typ ist oder der Reader nicht auf einem Element positioniert ist.

Get

WEAVE_ERROR Get(
  int8_t & v
)

Ruft den Wert des aktuellen Elements als vorzeichenbehaftete 8-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 mit dem aktuellen TLV-Element verknüpft ist.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichenlos oder ohne Vorzeichen) ist oder der Leser nicht auf 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 mit dem aktuellen TLV-Element verknüpft ist.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichenlos oder ohne Vorzeichen) ist oder der Leser nicht auf 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 mit dem aktuellen TLV-Element verknüpft ist.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichenlos oder ohne Vorzeichen) ist oder der Leser nicht auf 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 mit dem aktuellen TLV-Element verknüpft ist.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichenlos oder ohne Vorzeichen) ist oder der Leser nicht auf 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. Ist der codierte Ganzzahlwert negativ, wird der Wert in vorzeichenlose Zeichen konvertiert.

Details
Parameter
[out] v
Empfängt den Wert, der mit dem aktuellen TLV-Element verknüpft ist.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichenlos oder ohne Vorzeichen) ist oder der Leser nicht auf einem Element positioniert ist

Get

WEAVE_ERROR Get(
  uint16_t & v
)

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

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

Details
Parameter
[out] v
Empfängt den Wert, der mit dem aktuellen TLV-Element verknüpft ist.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichenlos oder ohne Vorzeichen) ist oder der Leser nicht auf 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. Ist der codierte Ganzzahlwert negativ, wird der Wert in vorzeichenlose Zeichen konvertiert.

Details
Parameter
[out] v
Empfängt den Wert, der mit dem aktuellen TLV-Element verknüpft ist.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichenlos oder ohne Vorzeichen) ist oder der Leser nicht auf 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 vorzeichenlos konvertiert.

Details
Parameter
[out] v
Empfängt den Wert, der mit dem aktuellen TLV-Element verknüpft ist.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Ganzzahltyp (vorzeichenlos oder ohne Vorzeichen) ist oder der Leser nicht auf 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 mit dem aktuellen TLV-Element verknüpft ist.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Wenn das aktuelle Element kein TLV-Gleitkommatyp ist oder der Reader 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() auf, bevor Sie GetBytes() aufrufen, um die erforderliche Größe des Eingabepuffers zu ermitteln.

Details
Parameter
[in] buf
Ein Zeiger auf einen Puffer, um die Zeichenfolgendaten zu erhalten.
[in] bufSize
Die Größe des Zwischenspeichers in Byte, auf den buf verweist.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob 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
Der bereitgestellte Puffer ist zu klein, um die mit dem aktuellen Element verknüpften Daten aufzunehmen.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wird.
other
Andere Weave- oder Plattform-Fehlercodes, die von der konfigurierten Funktion GetNextBuffer() 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 GetContainerType()-Methode gibt den Typ des TLV-Containers zurück, in dem TLVReader liest. Wenn TLVReader auf der äußersten Ebene einer TLV-Codierung positioniert ist (d.h. vor, auf oder nach dem äußersten TLV-Element), gibt die Methode „kTLVType_Not Specific“ zurück.

Details
Rückgabe
Der TLVType des aktuellen Containers oder kTLVType_NotSpecific, wenn sich 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 braucht niemand das Kontrollbyte zu kennen und nur die interne Implementierung von TLV sollte Zugriff darauf haben. Trotzdem ist der Zugriff auf das Kontrollbyte für Debugging-Zwecke durch die TLVDebugUtilities hilfreich, die versuchen, das Tag-Steuerbyte zu decodieren, wenn der TLV-Zwischenspeicherinhalt ausgegeben wird.

Details
Rückgabe
Eine vorzeichenlose Ganzzahl, die das Kontrollbyte enthält, das dem aktuellen TLV-Element zugeordnet ist. kTLVControlByte_Notspezifiziert wird zurückgegeben, wenn sich das Lesegerät nicht auf einem Element befindet.

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

Ruft einen Verweis auf das erste codierte Byte eines TLV-Bytes oder UTF8-Stringelements ab.

Diese Methode gibt einen direkten Verweis auf den codierten Stringwert innerhalb des zugrunde liegenden Eingabepuffers zurück. Damit die Methode erfolgreich ist, muss der gesamte Stringwert in einem einzelnen Puffer vorhanden sein. Andernfalls gibt die Methode WEAVE_ERROR_TLV_UNDERRUN zurück. Dies macht die Methode von begrenzter Verwendung, wenn Daten aus mehreren nicht zusammenhängenden Puffern gelesen werden.

Details
Parameter
[out] data
Ein Verweis auf einen Const-Pointer, der einen Zeiger auf die zugrunde liegenden Zeichenfolgendaten erhält.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob 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
Die zugrunde liegende TLV-Codierung wurde vorzeitig beendet oder der Wert des aktuellen Stringelements ist nicht in einem zusammenhängenden Puffer enthalten.
other
Andere Weave- oder Plattform-Fehlercodes, die von der konfigurierten Funktion GetNextBuffer() 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 des Typs „UTF8-String“ oder „Byte-String“. Bei UTF8-Strings wird als Wert die Anzahl der Byte im String zurückgegeben, 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 Leser nicht auf einem Element positioniert ist.

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

Gibt die Gesamtzahl der gelesenen Byte zurück, seit der Lesegerät 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 auf 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.

Um die erforderliche Größe des Eingabepuffers zu ermitteln, rufen Sie die Methode GetLength() auf, bevor Sie GetBytes() aufrufen. Der Eingabepuffer sollte mindestens ein Byte größer als die Stringlänge sein, damit das Nullzeichen aufgenommen werden kann.

Details
Parameter
[in] buf
Ein Zeiger auf einen Zwischenspeicher zum Empfangen der Bytestring-Daten.
[in] bufSize
Die Größe des Zwischenspeichers in Byte, auf den buf verweist.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob 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
Der bereitgestellte Puffer ist zu klein, um die mit dem aktuellen Element verknüpften Daten aufzunehmen.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wird.
other
Andere Weave- oder Plattform-Fehlercodes, die von der konfigurierten Funktion GetNextBuffer() 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 in einem TLV-Element positioniert ist, lautet der Rückgabewert „kTLVType_Not Specific“.

Init

void Init(
  const TLVReader & aReader
)

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

Details
Parameter
[in] aReader
Ein schreibgeschützter Verweis auf den TLVReader, auf dem die Datei initialisiert werden kann.

Init

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

Initialisiert ein TLVReader-Objekt, das aus einem einzelnen Eingabepuffer gelesen wird.

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

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 Puffers (buf->DataStart()) und wird bis zum Ende der Daten im Zwischenspeicher (wie durch buf->Datalen() angegeben) fortgesetzt oder bis zum Ende der Daten im Zwischenspeicher, oder maxLen Byte geparst wurden.

Details
Parameter
[in] buf
Ein Zeiger auf einen PacketBuffer mit den TLV-Daten, die geparst werden sollen.
[in] maxLen
Die maximale Anzahl zu parsender 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 Anfangsposition des Puffers (buf->DataStart()). Wenn "allowDiscontiguousBuffers" auf "true" gesetzt ist, durchläuft der Leser die Kette von Puffern, die mit ihren Next()-Zeigern verknüpft sind. Das Parsen wird fortgesetzt, bis alle Daten in der Pufferkette verarbeitet wurden (wie durch buf->Datalen() angegeben) oder maxLen Byte geparst wurden.

Details
Parameter
[in] buf
Ein Zeiger auf einen PacketBuffer mit den TLV-Daten, die geparst werden sollen.
[in] maxLen
Die maximale Anzahl zu parsender Byte. Die Standardeinstellung ist die Gesamtmenge der Daten in der Eingabezwischenspeicherkette.
[in] allowDiscontiguousBuffers
Bei „true“ wird zum nächsten Zwischenspeicher in der Kette gewechselt, sobald alle Daten im aktuellen Zwischenspeicher verbraucht wurden. Wenn "false", wird das Parsen am Ende des anfänglichen Puffers beendet.

Weiter

WEAVE_ERROR Next(
  void
)

Verschiebt das TLVReader-Objekt zum nächsten TLV-Element, das gelesen werden soll.

Die Next()-Methode positioniert das Reader-Objekt auf dem nächsten Element in einer TLV-Codierung, die sich im selben Begrenzungskontext befindet. Wenn sich der Reader auf der äußersten Ebene einer TLV-Codierung befindet, wird durch das Aufrufen von Next() der Leser zum nächsten, obersten Element weitergeleitet. Wenn sich der Reader innerhalb eines TLV-Containerelements (einer Struktur, eines Arrays oder eines Pfads) befindet, wird er durch Aufrufen von Next() zum nächsten Mitgliedselement des Containers weitergeleitet.

Da Next() die Lesebewegung auf den aktuellen Begrenzungskontext einschränkt, wird beim Aufrufen von Next(), wenn sich der Leser auf einem Containerelement befindet, über den Container bewegt. Dabei werden seine Mitgliederelemente (und die Mitglieder aller verschachtelten Container) übersprungen, bis das erste Element nach dem Container erreicht ist.

Wenn in einem bestimmten Begrenzungskontext keine weiteren Elemente vorhanden sind, gibt die Next()-Methode einen WEAVE_END_OF_TLV-Fehler zurück und die Position des Lesers 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 wird.
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 auf ein TLV-Tag in einem ungültigen Kontext gestoßen ist.
WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
Wenn der Leser auf ein implizit codiertes TLV-Tag gestoßen ist, dessen entsprechende Profil-ID unbekannt ist.
other
Andere Weave- oder Plattform-Fehlercodes, die von der konfigurierten Funktion GetNextBuffer() zurückgegeben werden Nur möglich, wenn GetNextBuffer nicht NULL ist.

Weiter

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

Wechselt das TLVReader-Objekt zum nächsten TLV-Element, das gelesen werden soll, und bestätigt den Typ und das Tag des neuen Elements.

Die Methode Next(TLVTypeexpectedType, uint64_texpectedTag) ist eine praktische Methode, die dasselbe Verhalten wie Next() aufweist, aber auch überprüft, 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 wird.
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 auf ein TLV-Tag in einem ungültigen Kontext gestoßen ist.
other
Andere Weave- oder Plattform-Fehlercodes, die von der konfigurierten Funktion GetNextBuffer() 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 OpenContainer()-Methode initialisiert ein neues TLVReader-Objekt zum Lesen der Mitgliedselemente eines TLV-Containers (eine Struktur, ein Array oder einen Pfad). Wenn OpenContainer() aufgerufen wird, muss das aktuelle TLVReader-Objekt auf dem zu lesenden Containerelement positioniert sein. Die Methode verwendet als einziges Argument einen Verweis auf einen neuen Reader, der zum Lesen des Containers initialisiert wird. Dieser Reader wird als Container-Leser bezeichnet, während der Leser, auf dem OpenContainer() aufgerufen wird, als übergeordneter Leser bezeichnet wird.

Wenn die Methode OpenContainer() zurückgegeben wird, wird der Containerleser unmittelbar vor dem ersten Mitglied des Containers positioniert. Wenn Sie Next() auf dem Container-Reader aufrufen, wird er durch die Mitglieder der Sammlung blättern, bis das Ende erreicht ist. Zu diesem Zeitpunkt gibt der Reader WEAVE_END_OF_TLV zurück.

Solange der Container-Reader geöffnet ist, dürfen Anwendungen weder Aufrufe an das übergeordnete Lesegerät senden noch seinen Status anderweitig ändern. Sobald eine Anwendung den Container-Reader nicht mehr verwendet hat, muss sie durch Aufrufen von CloseContainer() auf dem übergeordneten Reader und Übergeben des Container-Readers als Argument geschlossen werden. Anwendungen können den Container-Reader jederzeit schließen, mit oder ohne alle im zugrunde liegenden Container enthaltenen Elemente zu lesen. Nachdem der Container-Leser geschlossen wurde, können Anwendungen den übergeordneten Leser weiterhin verwenden.

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

  • Die implizite Profil-ID (ImplicitProfileId)
  • Anwendungsdatenzeiger (AppData)
  • 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 angegebenen Objekt verknüpften Daten werden überschrieben.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Wenn das aktuelle Element nicht auf einem Containerelement positioniert ist

Überspringen

WEAVE_ERROR Skip(
  void
)

Verschiebt das TLVReader-Objekt unmittelbar nach dem aktuellen TLV-Element.

Die Methode Skip() positioniert das Leseobjekt unmittelbar nach dem aktuellen TLV-Element, sodass der Leser durch einen nachfolgenden Aufruf von Next() zum folgenden Element weiter gelangt. Wie bei Next() werden die Mitglieder des Containers übersprungen, wenn sich der Leser zum Zeitpunkt des Aufrufs auf einem Containerelement befindet. Wenn sich der Leser nicht auf einem Element befindet, 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 wird.
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 auf ein TLV-Tag in einem ungültigen Kontext gestoßen ist.
other
Andere Weave- oder Plattform-Fehlercodes, die von der konfigurierten Funktion GetNextBuffer() 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.

Die Methode VerifyEndOfContainer() verifiziert, dass es im aktuellen TLV-Container keine weiteren TLV-Elemente gibt, die gelesen werden können. Dies ist eine praktische Methode, die dem Aufrufen von Next() und der Suche nach einem Rückgabewert von WEAVE_END_OF_TLV entspricht.

Details
Rückgabewerte
WEAVE_NO_ERROR
Wenn es keine weiteren TLV-Elemente gibt, die gelesen werden können.
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 wird.
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 auf ein TLV-Tag in einem ungültigen Kontext gestoßen ist.
other
Andere Weave- oder Plattform-Fehlercodes, die von der konfigurierten Funktion GetNextBuffer() zurückgegeben werden Nur möglich, wenn GetNextBuffer nicht NULL ist.

Geschützte Funktionen

ClearElementState

void ClearElementState(
  void
)

Löscht den Status von TLVReader.

Diese Methode wird verwendet, um das Lesegerät vor der ersten TLV, zwischen TLVs oder nach der letzten TLV zu positionieren.

ElementType

TLVElementType ElementType(
  void
) const 

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

EnsureData

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

GetElementHeadLength

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

Dies ist eine private Methode, mit der die Länge eines TLV-Elementkopfes berechnet wird.

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 im aktuellen TLV enthalten sind, indem Sie sie ohne Zielzwischenspeicher lesen.

Details
Rückgabewerte
WEAVE_NO_ERROR
Ob der Leser erfolgreich am Ende der Daten positioniert wurde.
other
Andere Weave- oder Plattform-Fehlercodes, die von der konfigurierten Funktion GetNextBuffer() 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
)