nl::Weave::TLV::TLVReader

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

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

Zusammenfassung

TLVReader implementiert einen Weiterleitungs-Parser nur für Pull-Stil-Weave-Daten vom Typ TLV. Das TLVReader-Objekt dient als Cursor, mit dem sich eine Abfolge von TLV-Elementen durchlaufen und sein Inhalt interpretieren lässt. Wenn die Apps auf einem Element positioniert werden, können sie Aufrufe an die Get()-Methoden des Readers senden, um den Typ und das Tag des aktuellen Elements abzufragen und alle zugehörigen Werte 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 platziert. Bei der ersten Initialisierung wird ein TLVReader direkt vor dem ersten Element der Codierung platziert. Damit Sie den Lesevorgang starten können, muss eine Anwendung einen ersten Aufruf der Methode Next() starten, um den Leser auf dem ersten Element zu positionieren. Wenn ein Containerelement gefunden wird, kann entweder eine Struktur, ein Array oder ein Pfad verwendet werden, um mit der Methode OpenContainer() oder EnterContainer() den Inhalt des Containers zu durchlaufen.

Wenn der Leser das Ende einer TLV-Codierung oder das letzte Element in einem Container erreicht, signalisiert er der Anwendung, dass ein WEAVE_END_OF_TLV-Fehler von der Next()-Methode zurückgegeben wird. Der Reader gibt weiterhin WEAVE_END_OF_TLV weiter, bis er neu initialisiert oder der aktuelle Container über CloseContainer() bzw. ExitContainer() beendet wird.

Ein TLVReader-Objekt kann Daten direkt aus einem festen Eingabezwischenspeicher oder aus einer Kette von einem oder mehreren Paketzwischenspeichern parsen. Außerdem können Anwendungen eine GetNextBuffer-Funktion bereitstellen, um Daten von einer beliebigen Quelle, z.B. einem Socket oder einem seriellen Port, an den Leser zu leiten.

Ü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)
Vervollständigt das Lesen eines TLV-Containers nach einem Aufruf von OpenContainer().
DupBytes(uint8_t *& buf, uint32_t & dataLen)
Weist einen Zwischenspeicher zu und gibt diesen zurück, der den Wert des aktuellen Bytes oder des UTF8-Strings enthält.
DupString(char *& buf)
Weist einen Zwischenspeicher zu und gibt diesen zurück, der den Nullwert des aktuellen Bytes oder des UTF8-Strings enthält.
EnterContainer(TLVType & outerContainerType)
Bereitet ein TLVReader-Objekt zum Lesen der Mitglieder des TLV-Containerelements vor.
ExitContainer(TLVType outerContainerType)
Vervollständigt 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 8-Bit-Ganzzahl mit Vorzeichen ab.
Get(int16_t & v)
Ruft den Wert des aktuellen Elements als 16-Bit-Ganzzahl mit Vorzeichen 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 64-Bit-Ganzzahl mit Vorzeichen ab.
Get(uint8_t & v)
Ruft den Wert des aktuellen Elements als 8-Bit-Ganzzahl ohne Vorzeichen 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 32-Bit-Ganzzahl ohne Vorzeichen ab.
Get(uint64_t & v)
Ruft den Wert des aktuellen Elements als 64-Bit-Ganzzahl ohne Vorzeichen 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-String-Elements ab.
GetContainerType(void) const
Gibt den Typ des Containers zurück, in dem der TLVReader derzeit liest.
GetControlByte(void) const
uint16_t
Gibt das Kontrollbyte zurück, das dem aktuellen TLV-Element zugeordnet ist.
GetDataPtr(const uint8_t *& data)
Rufen Sie einen Zeiger auf das anfängliche codierte Byte eines TLV-Byte- oder UTF8-Stringelements ab.
GetLength(void) const
uint32_t
Gibt die Datenlänge zurück, die dem aktuellen TLV-Element zugeordnet ist.
GetLengthRead(void) const
uint32_t
Gibt die Gesamtzahl der Byte zurück, die seit der Initialisierung des Lesers gelesen wurden.
GetReadPoint(void) const
const uint8_t *
Ruft den Punkt im zugrunde liegenden Eingabepuffer ab, der der aktuellen Position des Lesegeräts 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-String-Elements als null beendeten String ab.
GetTag(void) const
uint64_t
Gibt das Tag zurück, das dem aktuellen TLV-Element zugeordnet 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 liest.
Init(PacketBuffer *buf, uint32_t maxLen)
void
Initialisiert ein TLVReader-Objekt, das aus einem einzelnen PacketBuffer lesen soll.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Initialisiert ein TLVReader-Objekt, um aus einem oder mehreren PacketBuffers zu lesen.
Next(void)
Das TLVReader-Objekt wird zum nächsten TLV-Element weitergelesen.
Next(TLVType expectedType, uint64_t expectedTag)
Das TLVReader-Objekt wird zum nächsten TLV-Element weitergeleitet, das gelesen werden soll. Dabei werden der Typ und das Tag des neuen Elements bestätigt.
OpenContainer(TLVReader & containerReader)
Initialisiert ein neues TLVReader-Objekt zum Lesen der Mitglieder eines TLV-Containerelements.
Skip(void)
Das TLVReader-Objekt wird direkt nach dem aktuellen TLV-Element angezeigt.
VerifyEndOfContainer(void)
Überprüft, ob sich das TVLReader-Objekt am Ende eines TLV-Containers befindet.

Geschützte Funktionen

ClearElementState(void)
void
Löschen Sie den Status des 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
Mit dieser privaten Methode wird die Länge eines TLV-Elementkopfs berechnet.
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 im aktuellen TLV, 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 importieren. Wenn die Funktion aufgerufen wird, wird erwartet, dass die Funktion zusätzliche Daten erzeugt, damit der Leser sie parsen kann oder dem Nutzer signalisieren kann, dass keine weiteren Daten verfügbar sind.

Details
Parameter
[in] reader
Ein Verweis auf das Objekt TLVReader, 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 Aufrufen der Funktion verweist bufStart auf ein Byte über das letzte TLV-Datenbyte hinaus, das vom Leser verwendet wird. Beim Beenden sollte „bufStart“ auf das erste Byte der neuen TLV-Daten verweisen, die geparst werden sollen. Der neue Zeigerwert kann sich im selben Zwischenspeicher wie die zuvor verwendeten Daten befinden oder auf einen ganz neuen Zwischenspeicher verweisen.
[out] bufLen
Ein Verweis auf eine vorzeichenlose Ganzzahl, die die Funktion auf die Anzahl der zurückgegebenen TLV-Datenbyte festlegen muss. Wenn das Ende der TLV-Eingabedaten erreicht wurde, sollte der Wert dieser Funktion auf 0 gesetzt werden.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Funktion mehr TLV-Daten generiert hat oder das Ende der Eingabedaten erreicht wurde (sollte in diesem Fall bufLen festgelegt werden).
other
Andere Weave- oder plattformspezifische Fehlercodes, die darauf hinweisen, dass ein Fehler aufgetreten ist, der die Funktion daran gehindert, die angeforderten Daten zu generieren.

Öffentliche Attribute

App-Daten

void * AppData

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

Nächster Zwischenspeicher

GetNextBufferFunct GetNextBuffer

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

Bei der Einstellung NULL (Standardwert) geht der Leser davon aus, dass keine weiteren Eingabedaten verfügbar sind.

GetNextBuffer kann von einer Anwendung jederzeit festgelegt werden, wird aber normalerweise festgelegt, wenn der Leser initialisiert wird.

Weitere Informationen zum Implementieren einer GetNextBuffer-Funktion finden Sie in der Definition des GetNextBufferFunct-Typs.

Implizites Profil-ID

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 Property ImplicitProfileId als angenommene Profil-ID für das Tag verwendet.

Standardmäßig ist die Eigenschaft ImplicitProfileId auf „kProfileIdNotspecified“ gesetzt. Beim Decodieren von TLVs, die implizit codierte Tags enthalten, müssen Anwendungen ImplicitProfileId festlegen, bevor TLV-Elemente mit solchen Tags gelesen werden. Die entsprechende Profil-ID hängt in der Regel vom Kontext der gesprochenen Anwendung oder dem Protokoll ab.

Wenn ein implizit codiertes Tag gefunden wird, während ImplicitProfileId auf kProfileIdNotspecified festgelegt ist, gibt der Leser einen WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG-Fehler zurück.

Geschützte Attribute

MobufEnd

const uint8_t * mBufEnd

mBufHandle (mBufHandle)

uintptr_t mBufHandle

mContainer-Typ

TLVType mContainerType

mControlByte

uint16_t mControlByte

Logo: mElemLenOrVal

uint64_t mElemLenOrVal

mElemTag-Tag

uint64_t mElemTag

mLenRead

uint32_t mLenRead

mMaxLen

uint32_t mMaxLen

mReadPoint

const uint8_t * mReadPoint

Öffentliche Funktionen

Container schließen

WEAVE_ERROR CloseContainer(
  TLVReader & containerReader
)

Vervollständigt das Lesen eines TLV-Containers nach einem Aufruf von OpenContainer().

Mit der Methode CloseContainer() wird der Zustand eines übergeordneten Objekts TLVReader nach einem Aufruf von OpenContainer() wiederhergestellt. Für jeden Aufruf von OpenContainer() muss ein entsprechender Aufruf an CloseContainer() erfolgen und ein Verweis auf denselben Container-Reader an beide Methoden übergeben werden.

Wenn CloseContainer() zurückgegeben wird, wird der übergeordnete Reader direkt vor dem ersten Element platziert, das auf den Container folgt. Von hier an kann eine Anwendung die Methode Next() verwenden, um durch alle verbleibenden Elemente zu gelangen.

Anwendungen können jederzeit CloseContainer() für einen übergeordneten Reader aufrufen, unabhängig davon, ob alle Elemente im zugrunde liegenden Container gelesen wurden. Nachdem CloseContainer() aufgerufen wurde, sollte die Anwendung den Container-Leser 'de-Initialized' verwenden und darf den Container ohne weitere Initialisierung nicht mehr verwenden.

Details
Parameter
[in] containerReader
Ein Verweis auf das Objekt TLVReader, das an die Methode OpenContainer() übergeben wurde.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Wenn OpenContainer() für den Reader nicht aufgerufen wurde oder der Containerreader 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 einen ungültigen oder nicht unterstützten Elementtyp TLV gefunden hat.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der Leser auf ein TLV-Tag in einem ungültigen Kontext 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
)

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

Diese Methode erstellt einen Zwischenspeicher für die Daten, die mit dem Byte- oder UTF-8-String-Element an der aktuellen Position verknüpft sind. Der Arbeitsspeicher für den Puffer wird mit Malloc() abgerufen und sollte mit dem Free() vom Anrufer freigegeben werden, wenn er nicht mehr benötigt wird.

Details
Parameter
[out] buf
Ein Verweis auf einen Zeiger, dem bei Erfolg ein Heap-verknüpfter Zwischenspeicher von dataLen Byte zugewiesen wird.
[out] dataLen
Ein Verweis auf die Speicherung von buf bei erfolgreicher Speicherung der Größe 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 auf einem Element positioniert wird
WEAVE_ERROR_NO_MEMORY
Wenn für den Ausgabepuffer 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 Malloc() 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.

Dup-String

WEAVE_ERROR DupString(
  char *& buf
)

Weist einen Zwischenspeicher zu und gibt diesen zurück, der den Nullwert des aktuellen Bytes oder des UTF8-Strings enthält.

Bei dieser Methode wird ein Puffer für die mit dem Byte- oder UTF-8-String-Element verknüpften Daten an der aktuellen Position erstellt und eine Null beendet. Der Arbeitsspeicher für den Puffer wird mit Malloc() abgerufen und sollte mit dem Free() vom Anrufer freigegeben werden, wenn er nicht mehr benötigt wird.

Details
Parameter
[out] buf
Ein Verweis auf einen Zeiger, dem bei Erfolg ein Heap-zugweiser 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 auf einem Element positioniert wird
WEAVE_ERROR_NO_MEMORY
Wenn für den Ausgabepuffer 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 Malloc() 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.

Eingabetaste

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

Bereitet ein TLVReader-Objekt zum Lesen der Mitglieder des TLV-Containerelements vor.

Mit der Methode EnterContainer() wird das aktuelle TLVReader-Objekt so vorbereitet, dass es die Mitgliederelemente eines TLV-Containers (Struktur, Array oder Pfad) liest. 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 werden. Die Methode akzeptiert 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 unmittelbar 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. Danach wird der Leser WEAVE_END_OF_TLV zurückgeben.

Sobald die Anwendung einen Container gelesen hat, kann er die Elemente nach dem Container lesen. Dazu ruft er die Methode ExitContainer() auf.

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 das aktuelle Element nicht in einem Containerelement positioniert ist.

Exit-Container

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

Vervollständigt 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. Dabei muss der von der Methode EnterContainer() zurückgegebene Kontextwert übergeben werden.

Wenn ExitContainer() zurückgegeben wird, wird der Leser direkt vor dem ersten Element platziert, das auf den Container folgt. Von hier an kann eine Anwendung die Methode Next() verwenden, um durch alle verbleibenden Elemente zu gelangen.

Sobald EnterContainer() aufgerufen wird, können Anwendungen jederzeit ExitContainer() 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() für den Reader nicht aufgerufen wurde oder der Containerreader 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 einen ungültigen oder nicht unterstützten Elementtyp TLV gefunden hat.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der Leser auf ein TLV-Tag in einem ungültigen Kontext 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 booleschen 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 auf 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 (vorzeichenbehaftet oder nicht signiert) ist oder der Leser nicht auf einem Element positioniert ist

Get

WEAVE_ERROR Get(
  int16_t & v
)

Ruft den Wert des aktuellen Elements als 16-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 (vorzeichenbehaftet oder nicht signiert) ist oder der Leser nicht auf einem Element positioniert ist

Get

WEAVE_ERROR Get(
  int32_t & v
)

Ruft den Wert des aktuellen Elements als 32-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 (vorzeichenbehaftet oder nicht signiert) ist oder der Leser nicht auf einem Element positioniert ist

Get

WEAVE_ERROR Get(
  int64_t & v
)

Ruft den Wert des aktuellen Elements als 64-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 (vorzeichenbehaftet oder nicht signiert) ist oder der Leser nicht auf einem Element positioniert ist

Get

WEAVE_ERROR Get(
  uint8_t & v
)

Ruft den Wert des aktuellen Elements als 8-Bit-Ganzzahl ohne Vorzeichen 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 in das Format „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 (vorzeichenbehaftet oder nicht signiert) 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. Wenn der codierte Ganzzahlwert negativ ist, wird der Wert in das Format „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 (vorzeichenbehaftet oder nicht signiert) ist oder der Leser nicht auf einem Element positioniert ist

Get

WEAVE_ERROR Get(
  uint32_t & v
)

Ruft den Wert des aktuellen Elements als 32-Bit-Ganzzahl ohne Vorzeichen 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 in das Format „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 (vorzeichenbehaftet oder nicht signiert) ist oder der Leser nicht auf einem Element positioniert ist

Get

WEAVE_ERROR Get(
  uint64_t & v
)

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

Wenn der codierte Ganzzahlwert negativ ist, wird der Wert in den vorzeichenlosen Wert 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 (vorzeichenbehaftet oder nicht signiert) 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 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-Gleitkommatyp ist oder der Leser nicht auf einem Element positioniert ist

GetBufHandles

uintptr_t GetBufHandle(
  void
) const 

GetByte

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

Ruft den Wert des aktuellen Byte- oder UTF8-String-Elements ab.

Rufen Sie die Methode GetLength() auf, bevor Sie GetBytes() aufrufen, um die erforderliche Größe des Eingabezwischenspeichers zu ermitteln.

Details
Parameter
[in] buf
Ein Zeiger auf einen Zwischenspeicher, um die Stringdaten zu empfangen.
[in] bufSize
Die Größe des Zwischenspeichers in Byte, auf die buf verweist.
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 auf einem Element positioniert wird
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn der bereitgestellte Zwischenspeicher zu klein ist, um die mit dem aktuellen Element verknüpften Daten zu speichern
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 derzeit liest.

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

Details
Rückgabe
Der TLVType des aktuellen Containers oder „kTLVType_Notspecified“, wenn der TLVReader nicht in einem Container positioniert ist.

GetControlByte

uint16_t GetControlByte(
  void
) const 

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

Idealerweise benötigt niemand mehr Informationen zum Kontrollbyte. Nur die interne Implementierung von TLV sollte darauf zugreifen können. Trotzdem ist der Zugriff auf das Kontrollbyte für die Fehlerbehebung durch die TLV-Debug-Dienstprogramme hilfreich, die versuchen, das Tag-Kontroll-Byte zu decodieren, wenn der TLV-Zwischenspeicherinhalt korrekt gedruckt wird.

Details
Rückgabe
Eine vorzeichenlose Ganzzahl, die das mit dem aktuellen TLV-Element verknüpfte Kontrollbyte enthält. „kTLVControlByte_Notspecified“ wird zurückgegeben, wenn der Leser nicht bei einem Element positioniert ist.

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

Rufen Sie einen Zeiger auf das anfängliche 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. Um erfolgreich zu sein, muss für die Methode der gesamte Stringwert in einem einzelnen Zwischenspeicher vorhanden sein. Andernfalls wird die Methode WEAVE_ERROR_TLV_UNDERRUN zurückgegeben. Dies ist die eingeschränkte Methode beim Lesen von Daten aus mehreren nicht zusammenhängenden Zwischenspeichern.

Details
Parameter
[out] data
Ein Verweis auf einen Cons-Pointer, der einen Verweis auf die zugrunde liegenden Stringdaten 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 auf einem Element positioniert wird
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wurde oder der Wert des aktuellen Stringelements nicht in einem einzelnen 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 Datenlänge zurück, die dem aktuellen TLV-Element zugeordnet ist.

Die Datenlänge gilt nur für Elemente vom Typ UTF8- 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 mit dem aktuellen TLV-Element verknüpften Daten oder 0, wenn das aktuelle Element kein UTF8- oder Bytestring ist oder der Leser nicht auf einem Element positioniert ist

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

Gibt die Gesamtzahl der Byte zurück, die seit der Initialisierung des Lesers gelesen wurden.

Details
Rückgabe
Gesamtzahl der Byte, die seit der Initialisierung des Lesegeräts gelesen wurden.

GetReadPoint

const uint8_t * GetReadPoint(
  void
) const 

Ruft den Punkt im zugrunde liegenden Eingabepuffer ab, der der aktuellen Position des Lesegeräts entspricht.

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

Restlänge

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-String-Elements als null beendeten String ab.

Um die erforderliche Größe des Eingabezwischenspeichers zu ermitteln, rufen Sie die Methode GetLength() auf, bevor Sie GetBytes() aufrufen. Der Eingabezwischenspeicher sollte mindestens ein Byte größer als die Stringlänge sein, um das Nullzeichen unterzubringen.

Details
Parameter
[in] buf
Ein Zeiger auf einen Zwischenspeicher, um die Byte-String-Daten zu empfangen.
[in] bufSize
Die Größe des Zwischenspeichers in Byte, auf die buf verweist.
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 auf einem Element positioniert wird
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn der bereitgestellte Zwischenspeicher zu klein ist, um die mit dem aktuellen Element verknüpften Daten zu speichern
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 dem aktuellen TLV-Element zugeordnet ist.

Der von GetTag() zurückgegebene Wert kann mit den Dienstprogrammfunktionen für das Tag (IsProfileTag(), IsContextTag(), ProfileIdFromTag()) verwendet werden, um den Tag-Typ zu bestimmen und verschiedene Werte des Tag-Felds zu extrahieren.

Details
Rückgabe
Eine vorzeichenlose Ganzzahl, die Informationen über das Tag enthält, das dem aktuellen TLV-Element zugeordnet ist.

GetType (Typ)

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 der Reader nicht auf einem TLV-Element positioniert ist, lautet der Rückgabewert kTLVType_Notspecified.

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, aus dem die Initialisierung erfolgen soll.

Init

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

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

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

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Initialisiert ein TLVReader-Objekt, das aus einem einzelnen PacketBuffer lesen soll.

Das Parsen beginnt an der Startposition des Zwischenspeichers (buf->DataStart()) und wird bis zum Ende der Daten im Zwischenspeicher fortgesetzt (wie durch buf->Datalen() angegeben), oder es werden die maxLen-Byte geparst.

Details
Parameter
[in] buf
Ein Zeiger auf einen PacketBuffer mit den zu analysierenden TLV-Daten.
[in] maxLen
Das Maximum von 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 Parsen beginnt an der Startposition des Zwischenspeichers (buf->DataStart()). Wenn „allowDiscontiguousBuffers“ auf „true“ gesetzt ist, springt der Leser durch die Zwischenspeicherkette, die durch seine Next()-Zeiger verknüpft ist. Das Parsing wird fortgesetzt, bis alle Daten in der Pufferkette verarbeitet sind (wie durch buf-gt;Datalen() angegeben) oder maxLen Byte geparst wurden.

Details
Parameter
[in] buf
Ein Zeiger auf einen PacketBuffer mit den zu analysierenden TLV-Daten.
[in] maxLen
Das Maximum von zu parsenden Byte. Die Standardeinstellung ist die Gesamtmenge der Daten in der Eingabepufferkette.
[in] allowDiscontiguousBuffers
Wenn „true“, wird zum nächsten Zwischenspeicher in der Kette gewechselt, sobald alle Daten im aktuellen Zwischenspeicher verarbeitet sind. Wenn der Wert „false“ ist, beenden Sie das Parsen am Ende des ersten Zwischenspeichers.

Weiter

WEAVE_ERROR Next(
  void
)

Das TLVReader-Objekt wird zum nächsten TLV-Element weitergelesen.

Mit der Methode Next() wird das Leseobjekt auf dem nächsten Element in einer TLV-Codierung positioniert, die sich im selben Begrenzungskontext befindet. Wenn der Leser auf der äußersten Ebene einer TLV-Codierung positioniert ist, wird der Leser durch Aufrufen von Next() zum nächsten, obersten Element weitergeleitet. Wenn sich der Leser 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 Lesebewegung auf den aktuellen Einschlusskontext einschränkt, wird durch Aufrufen von Next(), wenn der Leser auf einem Containerelement positioniert wird, über den Container verschoben. Dabei werden die zugehörigen Elementelemente (und die Mitglieder aller verschachtelten Container) übersprungen, bis das erste Element nach dem Container erreicht ist.

Wenn es in einem bestimmten Einschlusskontext keine weiteren Elemente gibt, gibt die Methode Next() den Fehlerwert WEAVE_END_OF_TLV zurück und die Position des Readers bleibt unverändert.

Details
Rückgabewerte
WEAVE_NO_ERROR
Wenn 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 einen ungültigen oder nicht unterstützten Elementtyp TLV gefunden hat.
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, für das die entsprechende 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
)

Das TLVReader-Objekt wird zum nächsten TLV-Element weitergeleitet, das gelesen werden soll. Dabei werden der Typ und das Tag des neuen Elements bestätigt.

Die Methode Next(TLVTypeexpectedType, uint64_t erwartetenTag) ist eine praktische Methode, die sich wie Next() verhält, aber auch prüft, ob Typ und Tag des neuen TLV-Elements mit den angegebenen 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
Wenn 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 einen ungültigen oder nicht unterstützten Elementtyp TLV gefunden hat.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der Leser auf ein TLV-Tag in einem ungültigen Kontext 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 im zu lesenden Containerelement positioniert werden. Die Methode übernimmt als einziges Argument einen Verweis auf einen neuen Reader, der zum Lesen des Containers initialisiert wird. Dieser Leser wird als Container-Leser und der Leser, auf dem OpenContainer() aufgerufen wird, als übergeordneter Leser bezeichnet.

Wenn die Methode OpenContainer() zurückgegeben wird, wird der Container-Reader direkt vor dem ersten Mitglied des Containers positioniert. Wenn Next() für den Container-Reader aufgerufen wird, geht es durch die Mitglieder der Sammlung, bis das Ende erreicht ist. Zu diesem Zeitpunkt gibt der Reader WEAVE_END_OF_TLV zurück.

Wenn der Container-Reader geöffnet ist, dürfen Anwendungen keine Aufrufe tätigen oder den Status des übergeordneten Readers anderweitig ändern. Sobald eine Anwendung den Container-Reader nicht mehr verwendet, muss er geschlossen werden. Dazu ruft sie auf dem übergeordneten Reader CloseContainer() auf und übergibt den Container-Reader als Argument. Anwendungen können den Container-Reader jederzeit schließen, mit oder ohne Lesen aller Elemente im zugrunde liegenden Container. Nachdem der Container-Reader geschlossen wurde, können Anwendungen den übergeordneten Reader weiterverwenden.

Der Container-Leser übernimmt verschiedene Konfigurationsattribute vom übergeordneten Reader. Dabei handelt es sich um folgende Platzhalter:

  • Die implizite Profil-ID (ImplicitProfileId)
  • Der 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 das aktuelle Element nicht in einem Containerelement positioniert ist.

Überspringen

WEAVE_ERROR Skip(
  void
)

Das TLVReader-Objekt wird direkt nach dem aktuellen TLV-Element angezeigt.

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

Details
Rückgabewerte
WEAVE_NO_ERROR
Wenn 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 einen ungültigen oder nicht unterstützten Elementtyp TLV gefunden hat.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der Leser auf ein TLV-Tag in einem ungültigen Kontext 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.

Ende des Containers bestätigen

WEAVE_ERROR VerifyEndOfContainer(
  void
)

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

Mit der Methode VerifyEndOfContainer() wird bestätigt, dass im aktuellen TLV-Container keine weiteren TLV-Elemente gelesen werden dürfen. Diese Methode ist eine praktische Methode, um Next() aufzurufen und nach einem Rückgabewert von WEAVE_END_OF_TLV zu suchen.

Details
Rückgabewerte
WEAVE_NO_ERROR
Wenn keine weiteren TLV-Elemente gelesen werden müssen.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
Wenn in der Sammlung ein anderes TLV-Element gefunden wurde.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung vorzeitig beendet wurde.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Wenn der Leser einen ungültigen oder nicht unterstützten Elementtyp TLV gefunden hat.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der Leser auf ein TLV-Tag in einem ungültigen Kontext 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öschen Sie den Status des TLVReader.

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

ElementType

TLVElementType ElementType(
  void
) const 

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

Daten sichern

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

GetElementHeadLength

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

Mit dieser privaten Methode wird die Länge eines TLV-Elementkopfs berechnet.

IsContainerOpen (IsContainerOpen)

bool IsContainerOpen(
  void
) const 

Daten lesen

WEAVE_ERROR ReadData(
  uint8_t *buf,
  uint32_t len
)

Leseelement

WEAVE_ERROR ReadElement(
  void
)

Lese-Tag

uint64_t ReadTag(
  TLVTagControl tagControl,
  const uint8_t *& p
)

SetContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

Daten überspringen

WEAVE_ERROR SkipData(
  void
)

Überspringen Sie alle Daten im aktuellen TLV, indem Sie sie ohne Zielzwischenspeicher lesen.

Details
Rückgabewerte
WEAVE_NO_ERROR
Wenn der Leser 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
)

Element bestätigen

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
)